{"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/@aws-amplify/core/lib-esm/Util/DateUtils.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@aws-amplify/api-rest/lib-esm/RestClient.js","webpack:///./node_modules/zen-observable/index.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/constants.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/core/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/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/paho-mqtt/paho-mqtt.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/@aws-amplify/pubsub/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/location.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/printError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/source.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/defineToStringTag.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/blockStringValue.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/parser.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.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/@aws-amplify/api-rest/lib-esm/RestAPI.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/API.js","webpack:///./node_modules/zen-observable/lib/Observable.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack:///./node_modules/zen-observable-ts/lib/bundle.esm.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/language/location.mjs","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/printError.mjs","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncRealTimeProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/PubSub.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Signer.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:///./src/graphql/queries.ts","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","__read","o","n","m","Symbol","iterator","e","call","ar","next","done","push","value","error","DateUtils","clockOffset","getDateWithClockOffset","Date","getTime","getClockOffset","getHeaderStringFromDate","date","toISOString","getDateFromHeaderString","header","_a","match","year","month","day","hour","minute","second","UTC","Number","isClockSkewed","serverDate","abs","isClockSkewError","response","headers","Boolean","setClockOffset","offset","utils","InterceptorManager","this","handlers","prototype","use","fulfilled","rejected","length","eject","id","forEach","fn","h","__assign","Object","assign","t","s","arguments","p","hasOwnProperty","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","step","result","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","v","op","TypeError","pop","__rest","indexOf","getOwnPropertySymbols","propertyIsEnumerable","logger","RestClient","options","_region","_service","_custom_header","undefined","_cancelTokenMap","_options","debug","WeakMap","ajax","method","init","parsed_url","params","libraryHeaders","userAgent","initParams","isAllResponse","custom_header","_b","parsedUrl","_this","_c","_parseUrl","host","path","data","responseType","timeout","cancelToken","isReactNative","JSON","stringify","withCredentials","cancellableToken","token","signerServiceInfo","search","query","queryStringParameters","keys","reduce","acc","k","_request","get","credentials","_signed","dateHeader","responseDate","requestDate","err","put","patch","post","del","head","cancel","request","message","source","isCancel","a","getCancellableToken","CancelToken","updateRequestToBeCancellable","promise","cancelTokenSource","set","endpoint","apiName","cloud_logic_array","endpoints","isArray","name","region","service","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","endpointInfo","signed_params","sign","parts","split","slice","join","Observable","hasSymbol","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","USER_AGENT_HEADER","buildURL","dispatchRequest","mergeConfig","Axios","instanceConfig","defaults","interceptors","config","toLowerCase","chain","interceptor","unshift","shift","getUri","paramsSerializer","merge","callback","arr","v1","v4","uuid","Constants","args","byteToHex","toString","substr","buf","bth","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isUndefined","adapter","process","XMLHttpRequest","transformRequest","isFormData","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isObject","transformResponse","parse","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","enhanceError","code","Error","__CANCEL__","encode","val","encodeURIComponent","serializedParams","key","isDate","hashmarkIndex","isAxiosError","toJSON","description","number","fileName","lineNumber","columnNumber","stack","isStandardBrowserEnv","originURL","msie","navigator","urlParsingNode","document","createElement","resolveURL","href","setAttribute","protocol","hash","hostname","port","pathname","charAt","location","requestURL","parsed","isString","factory","global","localStorage","setItem","item","getItem","removeItem","MESSAGE_TYPE","validate","obj","errorStr","validKey","format","ERROR","INVALID_TYPE","scope","_scope","OK","text","CONNECT_TIMEOUT","SUBSCRIBE_TIMEOUT","UNSUBSCRIBE_TIMEOUT","PING_TIMEOUT","INTERNAL_ERROR","CONNACK_RETURNCODE","SOCKET_ERROR","SOCKET_CLOSE","MALFORMED_UTF","UNSUPPORTED","INVALID_STATE","INVALID_ARGUMENT","UNSUPPORTED_OPERATION","INVALID_STORED_DATA","INVALID_MQTT_MESSAGE_TYPE","MALFORMED_UNICODE","BUFFER_FULL","CONNACK_RC","0","1","2","3","4","5","substitutions","field","start","part1","substring","part2","MqttProtoIdentifierv3","MqttProtoIdentifierv4","WireMessage","type","decodeMessage","input","pos","digit","startingPos","first","messageInfo","remLength","multiplier","endPos","wireMessage","sessionPresent","returnCode","qos","len","readUint16","topicName","parseUTF8","messageIdentifier","Message","subarray","retained","duplicate","destinationName","payloadMessage","writeUint16","writeString","utf8Length","stringToUTF8","UTF8Length","output","charCode","charCodeAt","lowCharCode","isNaN","utf16","byte1","byte2","byte3","byte4","String","fromCharCode","willMessagePayloadBytes","topicStrLength","destinationNameLength","mqttVersion","clientId","willMessage","payloadBytes","byteLength","userName","password","topics","requestedQos","ArrayBuffer","mbi","numBytes","encodeMBI","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","client","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","send","setTimeout","_disconnected","reset","clearTimeout","Timeout","timeoutSeconds","action","ClientImpl","uri","WebSocket","_wsuri","_localKey","_msg_queue","_buffered_msg_queue","_sentMessages","_receivedMessages","_notify_msg_sent","_message_identifier","_sequence","restore","connected","maxMessageIdentifier","connectOptions","hostIndex","onConnected","onConnectionLost","onMessageDelivered","onMessageArrived","traceFunction","_connectTimeout","sendPinger","receivePinger","_reconnectInterval","_reconnecting","_reconnectTimeout","disconnectedPublishing","disconnectedBufferSize","receiveBuffer","_traceBuffer","_MAX_TRACE_ENTRIES","connect","connectOptionsMasked","_traceMask","uris","_doConnect","subscribe","filter","subscribeOptions","constructor","onSuccess","grantedQos","invocationContext","onFailure","errorCode","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribe","unsubscribeOptions","sequence","disconnect","getTraceLog","startTrace","stopTrace","wsurl","useSSL","uriParts","binaryType","onopen","_on_socket_open","onmessage","_on_socket_message","onerror","_on_socket_error","onclose","_on_socket_close","_process_queue","store","prefix","storedMessage","version","pubRecReceived","hex","messageBytes","payloadHex","x","parseInt","_socket_send","messageCount","event","messages","_deframeMessages","_handleMessage","byteArray","newData","errorStack","sentMessage","receivedMessage","sequencedMessages","msgId","msg","sort","b","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","readyState","close","mqttVersionExplicit","splice","record","severity","max","traceObject","masked","traceObjectMasked","attr","newPayload","payload","isView","DataView","defineProperties","enumerable","newDestinationName","newQos","newRetained","newTopic","newDuplicate","Client","ipv6AddSBracket","clientIdLength","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","trace","hosts","ports","stringPayload","usingURIs","ipv6","topic","publish","isConnected","self","createError","config1","config2","prop","deepMerge","transformData","isAbsoluteURL","combineURLs","throwIfCancellationRequested","throwIfRequested","reason","CONTROL_MSG","getLocation","position","lineRegexp","line","column","exec","index","highlightSourceAtLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","lines","concat","existingLines","_ref","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","map","_ref3","str","printPrefixedLines","GraphQLError","nodes","positions","originalError","extensions","_nodes","_source","node","loc","_locations","_positions","list","_extensions","writable","locations","defineProperty","configurable","captureStackTrace","create","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","edits","parent","ancestors","newRoot","isEdited","clone","editOffset","ii","editKey","editValue","prev","visitFn","visit","printDocASTReducer","definitions","operation","varDefs","wrap","variableDefinitions","directives","selectionSet","variable","defaultValue","_ref2","block","selections","alias","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isDescription","escaped","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","maybeArray","separator","array","maybeString","end","_typeof","inspect","invariant","condition","_defineProperty","classObject","syntaxError","toStringTag","blockStringValue","rawString","commonIndent","leadingWhitespace","_i","isBlank","createLexer","startOfFileToken","Tok","TokenKind","SOF","lastToken","lineStart","advance","advanceLexer","lookahead","EOF","readToken","COMMENT","freeze","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","getTokenDesc","printCharCode","toUpperCase","lexer","bodyLength","startPosition","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","readBlockString","c","d","char2hex","readString","unexpectedCharacterMessage","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","sourceObj","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","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","graphqlOperation","variables","GraphQLAPIClass","_api","register","getModuleName","configure","API","otherOptions","opt","graphql_headers","warn","createInstance","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","apiKey","federatedInfo","session","aws_appsync_apiKey","Authorization","_ensureCredentials","currentSession","getAccessToken","getJwtToken","getGraphqlOperationType","doc","graphql","additionalHeaders","paramQuery","authMode","_d","def","operationType","responsePromise","_graphql","_graphqlSubscribe","appSyncGraphqlEndpoint","customGraphqlEndpoint","customEndpointRegion","_e","_f","_g","_h","_j","err_1","errors","_k","_l","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","authenticationType","provider","Credentials","cred","shear","Cancel","write","expires","domain","secure","cookie","isNumber","toGMTString","read","RegExp","decodeURIComponent","remove","now","executor","resolvePromise","RestAPIClass","custom","APIClass","_restApi","_graphqlApi","GraphQLAPI","Amplify","restAPIConfig","graphQLAPIConfig","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","hasSymbols","getSymbol","observable","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","log","enqueue","cleanupSubscription","subscription","cleanup","_cleanup","closeSubscription","_observer","_queue","_state","notifySubscription","observer","onNotify","queue","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","complete","_this2","_this3","_this4","C","hasSeed","hasValue","seed","_this5","_len","sources","_key","startNext","from","_this6","subscriptions","outer","inner","completeIfDone","closed","_item","_len2","items","_key2","symbol","_extendStatics","AbstractPubSubProvider","_config","getProviderName","getCategory","__extends","setPrototypeOf","__proto__","__","ClientsQueue","promises","Map","clientFactory","topicSymbol","_super","MqttOverWSProvider","_clientsQueue","_topicObservers","_clientIdObservers","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","topicsToDelete_1","clientIdObservers","observerForTopic","observerTopic","size","newClient","payloadString","_onMessage","isSSLEnabled","clientsQueue","targetTopics","matchedTopicObservers_1","filterArray","topicArray","left","right","mqttTopicMatch","parsedMessage_1","observersForTopic","Set","add","observersForClientId","e_1","__spread","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","entries","_cleanUpForTopic","has","obs","mqttConnections","newSubscriptions","newAliases","elem","connectionInfoForTopic","find","all","some","origKey","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","AMPLIFY_SYMBOL","NON_RETRYABLE_CODES","AWS_APPSYNC_REALTIME_HEADERS","accept","AWSAppSyncRealTimeProvider","socketStatus","CLOSED","keepAliveTimeout","subscriptionObserverMap","promiseArray","_topics","_msg","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","subscriptionState","_waitForSubscriptionToBeConnected","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","dataString","headerObj","subscriptionMessage","stringToAWSRealTime","err_2","subscriptionFailedCallback_1","subscriptionFailedCallback","subscriptionReadyCallback","PENDING","startAckTimeoutId","_awsRealTimeHeaderBasedAuth","canonicalUri","authorization","GQL_START","_initializeWebSocketConnection","_timeoutStartSubscriptionAck","awsRealTimeSocket","res","rej","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bufferedAmount","keepAliveTimeoutId","tempSocket","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","Hub","dispatch","SUBSCRIPTION_ACK","clear","discoverableEndpoint","headerString","headerQs","payloadQs","awsRealTimeUrl","err_3","CONNECTING","_initializeRetryableHandshake","_initializeHandshake","err_4","errorType","newSocket","ackOk","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","includes","headerHandler","handler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","dt","dtStr","Signer","PubSub","PubSubClass","_pluggables","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","pluggable","addPluggable","getProviderByName","providerName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","providers","console","_error","settle","parseHeaders","isURLSameOrigin","requestData","requestHeaders","auth","username","btoa","open","onreadystatechange","responseURL","responseHeaders","getAllResponseHeaders","responseText","statusText","onabort","ontimeout","cookies","xsrfValue","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","encrypt","src","update","digestSync","signed_headers","canonical_request","url_info","key_val","reencoded_val","key_a","key_b","trim","parse_service_info","reverse","credential_scope","d_str","string_to_sign","algorithm","dt_str","get_signing_key","service_info","k_date","k_region","k_service","get_signature","signing_key","str_to_sign","access_info","request_str","serviceInfo","signature","authorization_header","get_authorization_header","signUrl","urlOrRequest","accessInfo","expiration","urlToSign","today","signedHeaders","credentialScope","sessionTokenRequired","queryParams","canonicalRequest","stringToSign","additionalQueryParams","slashes","ignoreDuplicateOf","fns","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tl","tmh","isFunction","l","FormData","pipe","URLSearchParams","product","assignValue","extend","getShow","listShows","getShowSetting","listShowSettings","getShowMain","listShowMains","getTeaser","listTeasers","getPage","listPages","getTopPage","listTopPages","getShowBooth","listShowBooths","getShowBoothItem","listShowBoothItems","searchShowBoothItems","getBoothUserInfo","listBoothUserInfos","getAlbum","listAlbums","getBoothBoatType","listBoothBoatTypes","getBoothBoatBrand","listBoothBoatBrands","getAlbumPhot","listAlbumPhots","getImage","listImages","getShowAudience","listShowAudiences","getUser","listUsers","getTicket","listTickets","normalizedName","defaultConfig","context","axios","spread"],"mappings":"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","file":"d2c4c0e2ef1f7ec3e42eb479e48d9f973ffeb576-766690b4463459c305b8.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};","require(\"core-js/modules/es6.typed.uint8-array\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\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\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","import \"core-js/modules/es6.number.constructor\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.date.to-iso-string\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\n\n/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar FIVE_MINUTES_IN_MS = 1000 * 60 * 5;\nexport var DateUtils = {\n /**\n * Milliseconds to offset the date to compensate for clock skew between device & services\n */\n clockOffset: 0,\n getDateWithClockOffset: function getDateWithClockOffset() {\n if (DateUtils.clockOffset) {\n return new Date(new Date().getTime() + DateUtils.clockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @returns {number} Clock offset in milliseconds\n */\n getClockOffset: function getClockOffset() {\n return DateUtils.clockOffset;\n },\n getHeaderStringFromDate: function getHeaderStringFromDate(date) {\n if (date === void 0) {\n date = DateUtils.getDateWithClockOffset();\n }\n\n return date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n },\n getDateFromHeaderString: function getDateFromHeaderString(header) {\n var _a = __read(header.match(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/), 7),\n year = _a[1],\n month = _a[2],\n day = _a[3],\n hour = _a[4],\n minute = _a[5],\n second = _a[6];\n\n return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));\n },\n isClockSkewed: function isClockSkewed(serverDate) {\n // API gateway permits client calls that are off by no more than ±5 minutes\n return Math.abs(serverDate.getTime() - DateUtils.getDateWithClockOffset().getTime()) >= FIVE_MINUTES_IN_MS;\n },\n isClockSkewError: function isClockSkewError(error) {\n if (!error.response || !error.response.headers) {\n return false;\n }\n\n var headers = error.response.headers;\n return Boolean(headers['x-amzn-errortype'] === 'BadRequestException' && (headers.date || headers.Date));\n },\n\n /**\n * @param {number} offset Clock offset in milliseconds\n */\n setClockOffset: function setClockOffset(offset) {\n DateUtils.clockOffset = offset;\n }\n};","'use strict';\n\nrequire(\"core-js/modules/es6.array.for-each\");\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;","import \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.regexp.search\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.weak-map\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\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, DateUtils, Signer, Platform, Credentials } from '@aws-amplify/core';\nimport axios from 'axios';\nimport { parse, format } from 'url';\nvar logger = new Logger('RestClient');\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\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 /**\n * This weak map provides functionality to let clients cancel\n * in-flight axios requests. https://github.com/axios/axios#cancellation\n *\n * 1. For every axios request, a unique cancel token is generated and added in the request.\n * 2. Promise for fulfilling the request is then mapped to that unique cancel token.\n * 3. The promise is returned to the client.\n * 4. Clients can either wait for the promise to fulfill or call `API.cancel(promise)` to cancel the request.\n * 5. If `API.cancel(promise)` is called, then the corresponding cancel token is retrieved from the map below.\n * 6. Promise returned to the client will be in rejected state with the error provided during cancel.\n * 7. Clients can check if the error is because of cancelling by calling `API.isCancel(error)`.\n *\n * For more details, see https://github.com/aws-amplify/amplify-js/pull/3769#issuecomment-552660025\n */\n\n this._cancelTokenMap = null;\n this._options = options;\n logger.debug('API Options', this._options);\n\n if (this._cancelTokenMap == null) {\n this._cancelTokenMap = new WeakMap();\n }\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 cancelToken: null\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 if (initParams.cancellableToken) {\n params.cancelToken = initParams.cancellableToken.token;\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 = parse(url, true, true), search = _b.search, parsedUrl = __rest(_b, [\"search\"]);\n params.url = 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)[\"catch\"](function (error) {\n if (DateUtils.isClockSkewError(error)) {\n var headers = error.response.headers;\n var dateHeader = headers && (headers.date || headers.Date);\n var responseDate = new Date(dateHeader);\n var requestDate = DateUtils.getDateFromHeaderString(params.headers['x-amz-date']);\n\n if (DateUtils.isClockSkewed(requestDate, responseDate)) {\n DateUtils.setClockOffset(responseDate.getTime() - requestDate.getTime());\n return _this.ajax(url, method, init);\n }\n }\n\n throw error;\n });\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 * Cancel an inflight API request\n * @param {Promise} request - The request promise to cancel\n * @param {string} [message] - A message to include in the cancelation exception\n */\n\n\n RestClient.prototype.cancel = function (request, message) {\n var source = this._cancelTokenMap.get(request);\n\n if (source) {\n source.cancel(message);\n }\n\n return true;\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n RestClient.prototype.isCancel = function (error) {\n return axios.isCancel(error);\n };\n /**\n * Retrieves a new and unique cancel token which can be\n * provided in an axios request to be cancelled later.\n */\n\n\n RestClient.prototype.getCancellableToken = function () {\n return axios.CancelToken.source();\n };\n /**\n * Updates the weakmap with a response promise and its\n * cancel token such that the cancel token can be easily\n * retrieved (and used for cancelling the request)\n */\n\n\n RestClient.prototype.updateRequestToBeCancellable = function (promise, cancelTokenSource) {\n this._cancelTokenMap.set(promise, cancelTokenSource);\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 };","module.exports = require('./lib/Observable.js').Observable;","/*\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 { Auth, CognitoHostedUIIdentityProvider } from './Auth';\nimport { CognitoUser, CookieStorage, appendToCognitoUserAgent } from 'amazon-cognito-identity-js';\n/**\n * @deprecated use named import\n */\n\nexport default Auth;\nexport { Auth, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, appendToCognitoUserAgent };","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\n\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\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 */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol[\"for\"] === 'function';\nexport var INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol ? Symbol[\"for\"]('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol ? Symbol[\"for\"]('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';","'use strict';\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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 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 './Amplify';\nimport { Platform } from './Platform';\nexport { ClientDevice } from './ClientDevice';\nexport { ConsoleLogger, ConsoleLogger as Logger } from './Logger';\nexport * from './Errors';\nexport { Hub } from './Hub';\nexport { I18n } from './I18n';\nexport * from './JS';\nexport { Signer } from './Signer';\nexport * from './Parser';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { Credentials } from './Credentials';\nexport { ServiceWorker } from './ServiceWorker';\nexport { StorageHelper, MemoryStorage } from './StorageHelper';\nexport { Platform, getAmplifyUserAgent } from './Platform';\nexport * from './constants';\nexport var Constants = {\n userAgent: Platform.userAgent\n};\nexport * from './constants';\nexport * from './Util';\nexport { Amplify };\n/**\n * @deprecated use named import\n */\n\nexport default Amplify;","'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};","require(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.date.to-iso-string\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\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 * 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\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.date.to-json\");\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\nrequire(\"core-js/modules/es6.regexp.search\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\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}();","require(\"core-js/modules/es6.typed.data-view\");\n\nrequire(\"core-js/modules/es6.object.define-properties\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.typed.uint8-array\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\n/*******************************************************************************\n * Copyright (c) 2013 IBM Corp.\n *\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * and Eclipse Distribution License v1.0 which accompany this distribution.\n *\n * The Eclipse Public License is available at\n * http://www.eclipse.org/legal/epl-v10.html\n * and the Eclipse Distribution License is available at\n * http://www.eclipse.org/org/documents/edl-v10.php.\n *\n * Contributors:\n * Andrew Banks - initial API and implementation and initial documentation\n *******************************************************************************/\n// Only expose a single object name in the global namespace.\n// Everything must go through this module. Global Paho module\n// only has a single public function, client, which returns\n// a Paho client object given connection details.\n\n/**\n * Send and receive messages using web browsers.\n *

\n * This programming interface lets a JavaScript client application use the MQTT V3.1 or\n * V3.1.1 protocol to connect to an MQTT-supporting messaging server.\n *\n * The function supported includes:\n *

    \n *
  1. Connecting to and disconnecting from a server. The server is identified by its host name and port number.\n *
  2. Specifying options that relate to the communications link with the server,\n * for example the frequency of keep-alive heartbeats, and whether SSL/TLS is required.\n *
  3. Subscribing to and receiving messages from MQTT Topics.\n *
  4. Publishing messages to MQTT Topics.\n *
\n *

\n * The API consists of two main objects:\n *

\n *
{@link Paho.Client}
\n *
This contains methods that provide the functionality of the API,\n * including provision of callbacks that notify the application when a message\n * arrives from or is delivered to the messaging server,\n * or when the status of its connection to the messaging server changes.
\n *
{@link Paho.Message}
\n *
This encapsulates the payload of the message along with various attributes\n * associated with its delivery, in particular the destination to which it has\n * been (or is about to be) sent.
\n *
\n *

\n * The programming interface validates parameters passed to it, and will throw\n * an Error containing an error message intended for developer use, if it detects\n * an error with any parameter.\n *

\n * Example:\n *\n *

\nvar client = new Paho.MQTT.Client(location.hostname, Number(location.port), \"clientId\");\nclient.onConnectionLost = onConnectionLost;\nclient.onMessageArrived = onMessageArrived;\nclient.connect({onSuccess:onConnect});\n\nfunction onConnect() {\n  // Once a connection has been made, make a subscription and send a message.\n  console.log(\"onConnect\");\n  client.subscribe(\"/World\");\n  var message = new Paho.MQTT.Message(\"Hello\");\n  message.destinationName = \"/World\";\n  client.send(message);\n};\nfunction onConnectionLost(responseObject) {\n  if (responseObject.errorCode !== 0)\n\tconsole.log(\"onConnectionLost:\"+responseObject.errorMessage);\n};\nfunction onMessageArrived(message) {\n  console.log(\"onMessageArrived:\"+message.payloadString);\n  client.disconnect();\n};\n * 
\n * @namespace Paho\n */\n\n/* jshint shadow:true */\n(function ExportLibrary(root, factory) {\n if (typeof exports === \"object\" && typeof module === \"object\") {\n module.exports = factory();\n } else if (typeof define === \"function\" && define.amd) {\n define(factory);\n } else if (typeof exports === \"object\") {\n exports = factory();\n } else {\n //if (typeof root.Paho === \"undefined\"){\n //\troot.Paho = {};\n //}\n root.Paho = factory();\n }\n})(this, function LibraryFactory() {\n var PahoMQTT = function (global) {\n // Private variables below, these are only visible inside the function closure\n // which is used to define the module.\n var version = \"@VERSION@-@BUILDLEVEL@\";\n /**\n * @private\n */\n\n var localStorage = global.localStorage || function () {\n var data = {};\n return {\n setItem: function setItem(key, item) {\n data[key] = item;\n },\n getItem: function getItem(key) {\n return data[key];\n },\n removeItem: function removeItem(key) {\n delete data[key];\n }\n };\n }();\n /**\n * Unique message type identifiers, with associated\n * associated integer values.\n * @private\n */\n\n\n var MESSAGE_TYPE = {\n CONNECT: 1,\n CONNACK: 2,\n PUBLISH: 3,\n PUBACK: 4,\n PUBREC: 5,\n PUBREL: 6,\n PUBCOMP: 7,\n SUBSCRIBE: 8,\n SUBACK: 9,\n UNSUBSCRIBE: 10,\n UNSUBACK: 11,\n PINGREQ: 12,\n PINGRESP: 13,\n DISCONNECT: 14\n }; // Collection of utility methods used to simplify module code\n // and promote the DRY pattern.\n\n /**\n * Validate an object's parameter names to ensure they\n * match a list of expected variables name for this option\n * type. Used to ensure option object passed into the API don't\n * contain erroneous parameters.\n * @param {Object} obj - User options object\n * @param {Object} keys - valid keys and types that may exist in obj.\n * @throws {Error} Invalid option parameter found.\n * @private\n */\n\n var validate = function validate(obj, keys) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n if (keys.hasOwnProperty(key)) {\n if (typeof obj[key] !== keys[key]) throw new Error(format(ERROR.INVALID_TYPE, [typeof obj[key], key]));\n } else {\n var errorStr = \"Unknown property, \" + key + \". Valid properties are:\";\n\n for (var validKey in keys) {\n if (keys.hasOwnProperty(validKey)) errorStr = errorStr + \" \" + validKey;\n }\n\n throw new Error(errorStr);\n }\n }\n }\n };\n /**\n * Return a new function which runs the user function bound\n * to a fixed scope.\n * @param {function} User function\n * @param {object} Function scope\n * @return {function} User function bound to another scope\n * @private\n */\n\n\n var scope = function scope(f, _scope) {\n return function () {\n return f.apply(_scope, arguments);\n };\n };\n /**\n * Unique message type identifiers, with associated\n * associated integer values.\n * @private\n */\n\n\n var ERROR = {\n OK: {\n code: 0,\n text: \"AMQJSC0000I OK.\"\n },\n CONNECT_TIMEOUT: {\n code: 1,\n text: \"AMQJSC0001E Connect timed out.\"\n },\n SUBSCRIBE_TIMEOUT: {\n code: 2,\n text: \"AMQJS0002E Subscribe timed out.\"\n },\n UNSUBSCRIBE_TIMEOUT: {\n code: 3,\n text: \"AMQJS0003E Unsubscribe timed out.\"\n },\n PING_TIMEOUT: {\n code: 4,\n text: \"AMQJS0004E Ping timed out.\"\n },\n INTERNAL_ERROR: {\n code: 5,\n text: \"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}\"\n },\n CONNACK_RETURNCODE: {\n code: 6,\n text: \"AMQJS0006E Bad Connack return code:{0} {1}.\"\n },\n SOCKET_ERROR: {\n code: 7,\n text: \"AMQJS0007E Socket error:{0}.\"\n },\n SOCKET_CLOSE: {\n code: 8,\n text: \"AMQJS0008I Socket closed.\"\n },\n MALFORMED_UTF: {\n code: 9,\n text: \"AMQJS0009E Malformed UTF data:{0} {1} {2}.\"\n },\n UNSUPPORTED: {\n code: 10,\n text: \"AMQJS0010E {0} is not supported by this browser.\"\n },\n INVALID_STATE: {\n code: 11,\n text: \"AMQJS0011E Invalid state {0}.\"\n },\n INVALID_TYPE: {\n code: 12,\n text: \"AMQJS0012E Invalid type {0} for {1}.\"\n },\n INVALID_ARGUMENT: {\n code: 13,\n text: \"AMQJS0013E Invalid argument {0} for {1}.\"\n },\n UNSUPPORTED_OPERATION: {\n code: 14,\n text: \"AMQJS0014E Unsupported operation.\"\n },\n INVALID_STORED_DATA: {\n code: 15,\n text: \"AMQJS0015E Invalid data in local storage key={0} value={1}.\"\n },\n INVALID_MQTT_MESSAGE_TYPE: {\n code: 16,\n text: \"AMQJS0016E Invalid MQTT message type {0}.\"\n },\n MALFORMED_UNICODE: {\n code: 17,\n text: \"AMQJS0017E Malformed Unicode string:{0} {1}.\"\n },\n BUFFER_FULL: {\n code: 18,\n text: \"AMQJS0018E Message buffer is full, maximum buffer size: {0}.\"\n }\n };\n /** CONNACK RC Meaning. */\n\n var CONNACK_RC = {\n 0: \"Connection Accepted\",\n 1: \"Connection Refused: unacceptable protocol version\",\n 2: \"Connection Refused: identifier rejected\",\n 3: \"Connection Refused: server unavailable\",\n 4: \"Connection Refused: bad user name or password\",\n 5: \"Connection Refused: not authorized\"\n };\n /**\n * Format an error message text.\n * @private\n * @param {error} ERROR value above.\n * @param {substitutions} [array] substituted into the text.\n * @return the text with the substitutions made.\n */\n\n var format = function format(error, substitutions) {\n var text = error.text;\n\n if (substitutions) {\n var field, start;\n\n for (var i = 0; i < substitutions.length; i++) {\n field = \"{\" + i + \"}\";\n start = text.indexOf(field);\n\n if (start > 0) {\n var part1 = text.substring(0, start);\n var part2 = text.substring(start + field.length);\n text = part1 + substitutions[i] + part2;\n }\n }\n }\n\n return text;\n }; //MQTT protocol and version 6 M Q I s d p 3\n\n\n var MqttProtoIdentifierv3 = [0x00, 0x06, 0x4d, 0x51, 0x49, 0x73, 0x64, 0x70, 0x03]; //MQTT proto/version for 311 4 M Q T T 4\n\n var MqttProtoIdentifierv4 = [0x00, 0x04, 0x4d, 0x51, 0x54, 0x54, 0x04];\n /**\n * Construct an MQTT wire protocol message.\n * @param type MQTT packet type.\n * @param options optional wire message attributes.\n *\n * Optional properties\n *\n * messageIdentifier: message ID in the range [0..65535]\n * payloadMessage:\tApplication Message - PUBLISH only\n * connectStrings:\tarray of 0 or more Strings to be put into the CONNECT payload\n * topics:\t\t\tarray of strings (SUBSCRIBE, UNSUBSCRIBE)\n * requestQoS:\t\tarray of QoS values [0..2]\n *\n * \"Flag\" properties\n * cleanSession:\ttrue if present / false if absent (CONNECT)\n * willMessage: \ttrue if present / false if absent (CONNECT)\n * isRetained:\t\ttrue if present / false if absent (CONNECT)\n * userName:\t\ttrue if present / false if absent (CONNECT)\n * password:\t\ttrue if present / false if absent (CONNECT)\n * keepAliveInterval:\tinteger [0..65535] (CONNECT)\n *\n * @private\n * @ignore\n */\n\n var WireMessage = function WireMessage(type, options) {\n this.type = type;\n\n for (var name in options) {\n if (options.hasOwnProperty(name)) {\n this[name] = options[name];\n }\n }\n };\n\n WireMessage.prototype.encode = function () {\n // Compute the first byte of the fixed header\n var first = (this.type & 0x0f) << 4;\n /*\n * Now calculate the length of the variable header + payload by adding up the lengths\n * of all the component parts\n */\n\n var remLength = 0;\n var topicStrLength = [];\n var destinationNameLength = 0;\n var willMessagePayloadBytes; // if the message contains a messageIdentifier then we need two bytes for that\n\n if (this.messageIdentifier !== undefined) remLength += 2;\n\n switch (this.type) {\n // If this a Connect then we need to include 12 bytes for its header\n case MESSAGE_TYPE.CONNECT:\n switch (this.mqttVersion) {\n case 3:\n remLength += MqttProtoIdentifierv3.length + 3;\n break;\n\n case 4:\n remLength += MqttProtoIdentifierv4.length + 3;\n break;\n }\n\n remLength += UTF8Length(this.clientId) + 2;\n\n if (this.willMessage !== undefined) {\n remLength += UTF8Length(this.willMessage.destinationName) + 2; // Will message is always a string, sent as UTF-8 characters with a preceding length.\n\n willMessagePayloadBytes = this.willMessage.payloadBytes;\n if (!(willMessagePayloadBytes instanceof Uint8Array)) willMessagePayloadBytes = new Uint8Array(payloadBytes);\n remLength += willMessagePayloadBytes.byteLength + 2;\n }\n\n if (this.userName !== undefined) remLength += UTF8Length(this.userName) + 2;\n if (this.password !== undefined) remLength += UTF8Length(this.password) + 2;\n break;\n // Subscribe, Unsubscribe can both contain topic strings\n\n case MESSAGE_TYPE.SUBSCRIBE:\n first |= 0x02; // Qos = 1;\n\n for (var i = 0; i < this.topics.length; i++) {\n topicStrLength[i] = UTF8Length(this.topics[i]);\n remLength += topicStrLength[i] + 2;\n }\n\n remLength += this.requestedQos.length; // 1 byte for each topic's Qos\n // QoS on Subscribe only\n\n break;\n\n case MESSAGE_TYPE.UNSUBSCRIBE:\n first |= 0x02; // Qos = 1;\n\n for (var i = 0; i < this.topics.length; i++) {\n topicStrLength[i] = UTF8Length(this.topics[i]);\n remLength += topicStrLength[i] + 2;\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREL:\n first |= 0x02; // Qos = 1;\n\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n if (this.payloadMessage.duplicate) first |= 0x08;\n first = first |= this.payloadMessage.qos << 1;\n if (this.payloadMessage.retained) first |= 0x01;\n destinationNameLength = UTF8Length(this.payloadMessage.destinationName);\n remLength += destinationNameLength + 2;\n var payloadBytes = this.payloadMessage.payloadBytes;\n remLength += payloadBytes.byteLength;\n if (payloadBytes instanceof ArrayBuffer) payloadBytes = new Uint8Array(payloadBytes);else if (!(payloadBytes instanceof Uint8Array)) payloadBytes = new Uint8Array(payloadBytes.buffer);\n break;\n\n case MESSAGE_TYPE.DISCONNECT:\n break;\n\n default:\n break;\n } // Now we can allocate a buffer for the message\n\n\n var mbi = encodeMBI(remLength); // Convert the length to MQTT MBI format\n\n var pos = mbi.length + 1; // Offset of start of variable header\n\n var buffer = new ArrayBuffer(remLength + pos);\n var byteStream = new Uint8Array(buffer); // view it as a sequence of bytes\n //Write the fixed header into the buffer\n\n byteStream[0] = first;\n byteStream.set(mbi, 1); // If this is a PUBLISH then the variable header starts with a topic\n\n if (this.type == MESSAGE_TYPE.PUBLISH) pos = writeString(this.payloadMessage.destinationName, destinationNameLength, byteStream, pos); // If this is a CONNECT then the variable header contains the protocol name/version, flags and keepalive time\n else if (this.type == MESSAGE_TYPE.CONNECT) {\n switch (this.mqttVersion) {\n case 3:\n byteStream.set(MqttProtoIdentifierv3, pos);\n pos += MqttProtoIdentifierv3.length;\n break;\n\n case 4:\n byteStream.set(MqttProtoIdentifierv4, pos);\n pos += MqttProtoIdentifierv4.length;\n break;\n }\n\n var connectFlags = 0;\n if (this.cleanSession) connectFlags = 0x02;\n\n if (this.willMessage !== undefined) {\n connectFlags |= 0x04;\n connectFlags |= this.willMessage.qos << 3;\n\n if (this.willMessage.retained) {\n connectFlags |= 0x20;\n }\n }\n\n if (this.userName !== undefined) connectFlags |= 0x80;\n if (this.password !== undefined) connectFlags |= 0x40;\n byteStream[pos++] = connectFlags;\n pos = writeUint16(this.keepAliveInterval, byteStream, pos);\n } // Output the messageIdentifier - if there is one\n\n if (this.messageIdentifier !== undefined) pos = writeUint16(this.messageIdentifier, byteStream, pos);\n\n switch (this.type) {\n case MESSAGE_TYPE.CONNECT:\n pos = writeString(this.clientId, UTF8Length(this.clientId), byteStream, pos);\n\n if (this.willMessage !== undefined) {\n pos = writeString(this.willMessage.destinationName, UTF8Length(this.willMessage.destinationName), byteStream, pos);\n pos = writeUint16(willMessagePayloadBytes.byteLength, byteStream, pos);\n byteStream.set(willMessagePayloadBytes, pos);\n pos += willMessagePayloadBytes.byteLength;\n }\n\n if (this.userName !== undefined) pos = writeString(this.userName, UTF8Length(this.userName), byteStream, pos);\n if (this.password !== undefined) pos = writeString(this.password, UTF8Length(this.password), byteStream, pos);\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n // PUBLISH has a text or binary payload, if text do not add a 2 byte length field, just the UTF characters.\n byteStream.set(payloadBytes, pos);\n break;\n // \t case MESSAGE_TYPE.PUBREC:\n // \t case MESSAGE_TYPE.PUBREL:\n // \t case MESSAGE_TYPE.PUBCOMP:\n // \t \tbreak;\n\n case MESSAGE_TYPE.SUBSCRIBE:\n // SUBSCRIBE has a list of topic strings and request QoS\n for (var i = 0; i < this.topics.length; i++) {\n pos = writeString(this.topics[i], topicStrLength[i], byteStream, pos);\n byteStream[pos++] = this.requestedQos[i];\n }\n\n break;\n\n case MESSAGE_TYPE.UNSUBSCRIBE:\n // UNSUBSCRIBE has a list of topic strings\n for (var i = 0; i < this.topics.length; i++) {\n pos = writeString(this.topics[i], topicStrLength[i], byteStream, pos);\n }\n\n break;\n\n default: // Do nothing.\n\n }\n\n return buffer;\n };\n\n function decodeMessage(input, pos) {\n var startingPos = pos;\n var first = input[pos];\n var type = first >> 4;\n var messageInfo = first &= 0x0f;\n pos += 1; // Decode the remaining length (MBI format)\n\n var digit;\n var remLength = 0;\n var multiplier = 1;\n\n do {\n if (pos == input.length) {\n return [null, startingPos];\n }\n\n digit = input[pos++];\n remLength += (digit & 0x7F) * multiplier;\n multiplier *= 128;\n } while ((digit & 0x80) !== 0);\n\n var endPos = pos + remLength;\n\n if (endPos > input.length) {\n return [null, startingPos];\n }\n\n var wireMessage = new WireMessage(type);\n\n switch (type) {\n case MESSAGE_TYPE.CONNACK:\n var connectAcknowledgeFlags = input[pos++];\n if (connectAcknowledgeFlags & 0x01) wireMessage.sessionPresent = true;\n wireMessage.returnCode = input[pos++];\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n var qos = messageInfo >> 1 & 0x03;\n var len = readUint16(input, pos);\n pos += 2;\n var topicName = parseUTF8(input, pos, len);\n pos += len; // If QoS 1 or 2 there will be a messageIdentifier\n\n if (qos > 0) {\n wireMessage.messageIdentifier = readUint16(input, pos);\n pos += 2;\n }\n\n var message = new Message(input.subarray(pos, endPos));\n if ((messageInfo & 0x01) == 0x01) message.retained = true;\n if ((messageInfo & 0x08) == 0x08) message.duplicate = true;\n message.qos = qos;\n message.destinationName = topicName;\n wireMessage.payloadMessage = message;\n break;\n\n case MESSAGE_TYPE.PUBACK:\n case MESSAGE_TYPE.PUBREC:\n case MESSAGE_TYPE.PUBREL:\n case MESSAGE_TYPE.PUBCOMP:\n case MESSAGE_TYPE.UNSUBACK:\n wireMessage.messageIdentifier = readUint16(input, pos);\n break;\n\n case MESSAGE_TYPE.SUBACK:\n wireMessage.messageIdentifier = readUint16(input, pos);\n pos += 2;\n wireMessage.returnCode = input.subarray(pos, endPos);\n break;\n\n default:\n break;\n }\n\n return [wireMessage, endPos];\n }\n\n function writeUint16(input, buffer, offset) {\n buffer[offset++] = input >> 8; //MSB\n\n buffer[offset++] = input % 256; //LSB\n\n return offset;\n }\n\n function writeString(input, utf8Length, buffer, offset) {\n offset = writeUint16(utf8Length, buffer, offset);\n stringToUTF8(input, buffer, offset);\n return offset + utf8Length;\n }\n\n function readUint16(buffer, offset) {\n return 256 * buffer[offset] + buffer[offset + 1];\n }\n /**\n * Encodes an MQTT Multi-Byte Integer\n * @private\n */\n\n\n function encodeMBI(number) {\n var output = new Array(1);\n var numBytes = 0;\n\n do {\n var digit = number % 128;\n number = number >> 7;\n\n if (number > 0) {\n digit |= 0x80;\n }\n\n output[numBytes++] = digit;\n } while (number > 0 && numBytes < 4);\n\n return output;\n }\n /**\n * Takes a String and calculates its length in bytes when encoded in UTF8.\n * @private\n */\n\n\n function UTF8Length(input) {\n var output = 0;\n\n for (var i = 0; i < input.length; i++) {\n var charCode = input.charCodeAt(i);\n\n if (charCode > 0x7FF) {\n // Surrogate pair means its a 4 byte character\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n i++;\n output++;\n }\n\n output += 3;\n } else if (charCode > 0x7F) output += 2;else output++;\n }\n\n return output;\n }\n /**\n * Takes a String and writes it into an array as UTF8 encoded bytes.\n * @private\n */\n\n\n function stringToUTF8(input, output, start) {\n var pos = start;\n\n for (var i = 0; i < input.length; i++) {\n var charCode = input.charCodeAt(i); // Check for a surrogate pair.\n\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n var lowCharCode = input.charCodeAt(++i);\n\n if (isNaN(lowCharCode)) {\n throw new Error(format(ERROR.MALFORMED_UNICODE, [charCode, lowCharCode]));\n }\n\n charCode = (charCode - 0xD800 << 10) + (lowCharCode - 0xDC00) + 0x10000;\n }\n\n if (charCode <= 0x7F) {\n output[pos++] = charCode;\n } else if (charCode <= 0x7FF) {\n output[pos++] = charCode >> 6 & 0x1F | 0xC0;\n output[pos++] = charCode & 0x3F | 0x80;\n } else if (charCode <= 0xFFFF) {\n output[pos++] = charCode >> 12 & 0x0F | 0xE0;\n output[pos++] = charCode >> 6 & 0x3F | 0x80;\n output[pos++] = charCode & 0x3F | 0x80;\n } else {\n output[pos++] = charCode >> 18 & 0x07 | 0xF0;\n output[pos++] = charCode >> 12 & 0x3F | 0x80;\n output[pos++] = charCode >> 6 & 0x3F | 0x80;\n output[pos++] = charCode & 0x3F | 0x80;\n }\n }\n\n return output;\n }\n\n function parseUTF8(input, offset, length) {\n var output = \"\";\n var utf16;\n var pos = offset;\n\n while (pos < offset + length) {\n var byte1 = input[pos++];\n if (byte1 < 128) utf16 = byte1;else {\n var byte2 = input[pos++] - 128;\n if (byte2 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), \"\"]));\n if (byte1 < 0xE0) // 2 byte character\n utf16 = 64 * (byte1 - 0xC0) + byte2;else {\n var byte3 = input[pos++] - 128;\n if (byte3 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16)]));\n if (byte1 < 0xF0) // 3 byte character\n utf16 = 4096 * (byte1 - 0xE0) + 64 * byte2 + byte3;else {\n var byte4 = input[pos++] - 128;\n if (byte4 < 0) throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n if (byte1 < 0xF8) // 4 byte character\n utf16 = 262144 * (byte1 - 0xF0) + 4096 * byte2 + 64 * byte3 + byte4;else // longer encodings are not supported\n throw new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n }\n }\n }\n\n if (utf16 > 0xFFFF) // 4 byte character - express as a surrogate pair\n {\n utf16 -= 0x10000;\n output += String.fromCharCode(0xD800 + (utf16 >> 10)); // lead character\n\n utf16 = 0xDC00 + (utf16 & 0x3FF); // trail character\n }\n\n output += String.fromCharCode(utf16);\n }\n\n return output;\n }\n /**\n * Repeat keepalive requests, monitor responses.\n * @ignore\n */\n\n\n var Pinger = function Pinger(client, keepAliveInterval) {\n this._client = client;\n this._keepAliveInterval = keepAliveInterval * 1000;\n this.isReset = false;\n var pingReq = new WireMessage(MESSAGE_TYPE.PINGREQ).encode();\n\n var doTimeout = function doTimeout(pinger) {\n return function () {\n return doPing.apply(pinger);\n };\n };\n /** @ignore */\n\n\n var doPing = function doPing() {\n if (!this.isReset) {\n this._client._trace(\"Pinger.doPing\", \"Timed out\");\n\n this._client._disconnected(ERROR.PING_TIMEOUT.code, format(ERROR.PING_TIMEOUT));\n } else {\n this.isReset = false;\n\n this._client._trace(\"Pinger.doPing\", \"send PINGREQ\");\n\n this._client.socket.send(pingReq);\n\n this.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n }\n };\n\n this.reset = function () {\n this.isReset = true;\n clearTimeout(this.timeout);\n if (this._keepAliveInterval > 0) this.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n };\n\n this.cancel = function () {\n clearTimeout(this.timeout);\n };\n };\n /**\n * Monitor request completion.\n * @ignore\n */\n\n\n var Timeout = function Timeout(client, timeoutSeconds, action, args) {\n if (!timeoutSeconds) timeoutSeconds = 30;\n\n var doTimeout = function doTimeout(action, client, args) {\n return function () {\n return action.apply(client, args);\n };\n };\n\n this.timeout = setTimeout(doTimeout(action, client, args), timeoutSeconds * 1000);\n\n this.cancel = function () {\n clearTimeout(this.timeout);\n };\n };\n /**\n * Internal implementation of the Websockets MQTT V3.1 client.\n *\n * @name Paho.ClientImpl @constructor\n * @param {String} host the DNS nameof the webSocket host.\n * @param {Number} port the port number for that host.\n * @param {String} clientId the MQ client identifier.\n */\n\n\n var ClientImpl = function ClientImpl(uri, host, port, path, clientId) {\n // Check dependencies are satisfied in this browser.\n if (!(\"WebSocket\" in global && global.WebSocket !== null)) {\n throw new Error(format(ERROR.UNSUPPORTED, [\"WebSocket\"]));\n }\n\n if (!(\"ArrayBuffer\" in global && global.ArrayBuffer !== null)) {\n throw new Error(format(ERROR.UNSUPPORTED, [\"ArrayBuffer\"]));\n }\n\n this._trace(\"Paho.Client\", uri, host, port, path, clientId);\n\n this.host = host;\n this.port = port;\n this.path = path;\n this.uri = uri;\n this.clientId = clientId;\n this._wsuri = null; // Local storagekeys are qualified with the following string.\n // The conditional inclusion of path in the key is for backward\n // compatibility to when the path was not configurable and assumed to\n // be /mqtt\n\n this._localKey = host + \":\" + port + (path != \"/mqtt\" ? \":\" + path : \"\") + \":\" + clientId + \":\"; // Create private instance-only message queue\n // Internal queue of messages to be sent, in sending order.\n\n this._msg_queue = [];\n this._buffered_msg_queue = []; // Messages we have sent and are expecting a response for, indexed by their respective message ids.\n\n this._sentMessages = {}; // Messages we have received and acknowleged and are expecting a confirm message for\n // indexed by their respective message ids.\n\n this._receivedMessages = {}; // Internal list of callbacks to be executed when messages\n // have been successfully sent over web socket, e.g. disconnect\n // when it doesn't have to wait for ACK, just message is dispatched.\n\n this._notify_msg_sent = {}; // Unique identifier for SEND messages, incrementing\n // counter as messages are sent.\n\n this._message_identifier = 1; // Used to determine the transmission sequence of stored sent messages.\n\n this._sequence = 0; // Load the local state, if any, from the saved version, only restore state relevant to this client.\n\n for (var key in localStorage) {\n if (key.indexOf(\"Sent:\" + this._localKey) === 0 || key.indexOf(\"Received:\" + this._localKey) === 0) this.restore(key);\n }\n }; // Messaging Client public instance members.\n\n\n ClientImpl.prototype.host = null;\n ClientImpl.prototype.port = null;\n ClientImpl.prototype.path = null;\n ClientImpl.prototype.uri = null;\n ClientImpl.prototype.clientId = null; // Messaging Client private instance members.\n\n ClientImpl.prototype.socket = null;\n /* true once we have received an acknowledgement to a CONNECT packet. */\n\n ClientImpl.prototype.connected = false;\n /* The largest message identifier allowed, may not be larger than 2**16 but\n * if set smaller reduces the maximum number of outbound messages allowed.\n */\n\n ClientImpl.prototype.maxMessageIdentifier = 65536;\n ClientImpl.prototype.connectOptions = null;\n ClientImpl.prototype.hostIndex = null;\n ClientImpl.prototype.onConnected = null;\n ClientImpl.prototype.onConnectionLost = null;\n ClientImpl.prototype.onMessageDelivered = null;\n ClientImpl.prototype.onMessageArrived = null;\n ClientImpl.prototype.traceFunction = null;\n ClientImpl.prototype._msg_queue = null;\n ClientImpl.prototype._buffered_msg_queue = null;\n ClientImpl.prototype._connectTimeout = null;\n /* The sendPinger monitors how long we allow before we send data to prove to the server that we are alive. */\n\n ClientImpl.prototype.sendPinger = null;\n /* The receivePinger monitors how long we allow before we require evidence that the server is alive. */\n\n ClientImpl.prototype.receivePinger = null;\n ClientImpl.prototype._reconnectInterval = 1; // Reconnect Delay, starts at 1 second\n\n ClientImpl.prototype._reconnecting = false;\n ClientImpl.prototype._reconnectTimeout = null;\n ClientImpl.prototype.disconnectedPublishing = false;\n ClientImpl.prototype.disconnectedBufferSize = 5000;\n ClientImpl.prototype.receiveBuffer = null;\n ClientImpl.prototype._traceBuffer = null;\n ClientImpl.prototype._MAX_TRACE_ENTRIES = 100;\n\n ClientImpl.prototype.connect = function (connectOptions) {\n var connectOptionsMasked = this._traceMask(connectOptions, \"password\");\n\n this._trace(\"Client.connect\", connectOptionsMasked, this.socket, this.connected);\n\n if (this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n if (this.socket) throw new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\n if (this._reconnecting) {\n // connect() function is called while reconnect is in progress.\n // Terminate the auto reconnect process to use new connect options.\n this._reconnectTimeout.cancel();\n\n this._reconnectTimeout = null;\n this._reconnecting = false;\n }\n\n this.connectOptions = connectOptions;\n this._reconnectInterval = 1;\n this._reconnecting = false;\n\n if (connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n };\n\n ClientImpl.prototype.subscribe = function (filter, subscribeOptions) {\n this._trace(\"Client.subscribe\", filter, subscribeOptions);\n\n if (!this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.SUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n if (subscribeOptions.qos === undefined) subscribeOptions.qos = 0;\n wireMessage.requestedQos = [];\n\n for (var i = 0; i < wireMessage.topics.length; i++) {\n wireMessage.requestedQos[i] = subscribeOptions.qos;\n }\n\n if (subscribeOptions.onSuccess) {\n wireMessage.onSuccess = function (grantedQos) {\n subscribeOptions.onSuccess({\n invocationContext: subscribeOptions.invocationContext,\n grantedQos: grantedQos\n });\n };\n }\n\n if (subscribeOptions.onFailure) {\n wireMessage.onFailure = function (errorCode) {\n subscribeOptions.onFailure({\n invocationContext: subscribeOptions.invocationContext,\n errorCode: errorCode,\n errorMessage: format(errorCode)\n });\n };\n }\n\n if (subscribeOptions.timeout) {\n wireMessage.timeOut = new Timeout(this, subscribeOptions.timeout, subscribeOptions.onFailure, [{\n invocationContext: subscribeOptions.invocationContext,\n errorCode: ERROR.SUBSCRIBE_TIMEOUT.code,\n errorMessage: format(ERROR.SUBSCRIBE_TIMEOUT)\n }]);\n } // All subscriptions return a SUBACK.\n\n\n this._requires_ack(wireMessage);\n\n this._schedule_message(wireMessage);\n };\n /** @ignore */\n\n\n ClientImpl.prototype.unsubscribe = function (filter, unsubscribeOptions) {\n this._trace(\"Client.unsubscribe\", filter, unsubscribeOptions);\n\n if (!this.connected) throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.UNSUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n\n if (unsubscribeOptions.onSuccess) {\n wireMessage.callback = function () {\n unsubscribeOptions.onSuccess({\n invocationContext: unsubscribeOptions.invocationContext\n });\n };\n }\n\n if (unsubscribeOptions.timeout) {\n wireMessage.timeOut = new Timeout(this, unsubscribeOptions.timeout, unsubscribeOptions.onFailure, [{\n invocationContext: unsubscribeOptions.invocationContext,\n errorCode: ERROR.UNSUBSCRIBE_TIMEOUT.code,\n errorMessage: format(ERROR.UNSUBSCRIBE_TIMEOUT)\n }]);\n } // All unsubscribes return a SUBACK.\n\n\n this._requires_ack(wireMessage);\n\n this._schedule_message(wireMessage);\n };\n\n ClientImpl.prototype.send = function (message) {\n this._trace(\"Client.send\", message);\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.PUBLISH);\n wireMessage.payloadMessage = message;\n\n if (this.connected) {\n // Mark qos 1 & 2 message as \"ACK required\"\n // For qos 0 message, invoke onMessageDelivered callback if there is one.\n // Then schedule the message.\n if (message.qos > 0) {\n this._requires_ack(wireMessage);\n } else if (this.onMessageDelivered) {\n this._notify_msg_sent[wireMessage] = this.onMessageDelivered(wireMessage.payloadMessage);\n }\n\n this._schedule_message(wireMessage);\n } else {\n // Currently disconnected, will not schedule this message\n // Check if reconnecting is in progress and disconnected publish is enabled.\n if (this._reconnecting && this.disconnectedPublishing) {\n // Check the limit which include the \"required ACK\" messages\n var messageCount = Object.keys(this._sentMessages).length + this._buffered_msg_queue.length;\n\n if (messageCount > this.disconnectedBufferSize) {\n throw new Error(format(ERROR.BUFFER_FULL, [this.disconnectedBufferSize]));\n } else {\n if (message.qos > 0) {\n // Mark this message as \"ACK required\"\n this._requires_ack(wireMessage);\n } else {\n wireMessage.sequence = ++this._sequence; // Add messages in fifo order to array, by adding to start\n\n this._buffered_msg_queue.unshift(wireMessage);\n }\n }\n } else {\n throw new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n }\n }\n };\n\n ClientImpl.prototype.disconnect = function () {\n this._trace(\"Client.disconnect\");\n\n if (this._reconnecting) {\n // disconnect() function is called while reconnect is in progress.\n // Terminate the auto reconnect process.\n this._reconnectTimeout.cancel();\n\n this._reconnectTimeout = null;\n this._reconnecting = false;\n }\n\n if (!this.socket) throw new Error(format(ERROR.INVALID_STATE, [\"not connecting or connected\"]));\n var wireMessage = new WireMessage(MESSAGE_TYPE.DISCONNECT); // Run the disconnected call back as soon as the message has been sent,\n // in case of a failure later on in the disconnect processing.\n // as a consequence, the _disconected call back may be run several times.\n\n this._notify_msg_sent[wireMessage] = scope(this._disconnected, this);\n\n this._schedule_message(wireMessage);\n };\n\n ClientImpl.prototype.getTraceLog = function () {\n if (this._traceBuffer !== null) {\n this._trace(\"Client.getTraceLog\", new Date());\n\n this._trace(\"Client.getTraceLog in flight messages\", this._sentMessages.length);\n\n for (var key in this._sentMessages) {\n this._trace(\"_sentMessages \", key, this._sentMessages[key]);\n }\n\n for (var key in this._receivedMessages) {\n this._trace(\"_receivedMessages \", key, this._receivedMessages[key]);\n }\n\n return this._traceBuffer;\n }\n };\n\n ClientImpl.prototype.startTrace = function () {\n if (this._traceBuffer === null) {\n this._traceBuffer = [];\n }\n\n this._trace(\"Client.startTrace\", new Date(), version);\n };\n\n ClientImpl.prototype.stopTrace = function () {\n delete this._traceBuffer;\n };\n\n ClientImpl.prototype._doConnect = function (wsurl) {\n // When the socket is open, this client will send the CONNECT WireMessage using the saved parameters.\n if (this.connectOptions.useSSL) {\n var uriParts = wsurl.split(\":\");\n uriParts[0] = \"wss\";\n wsurl = uriParts.join(\":\");\n }\n\n this._wsuri = wsurl;\n this.connected = false;\n\n if (this.connectOptions.mqttVersion < 4) {\n this.socket = new WebSocket(wsurl, [\"mqttv3.1\"]);\n } else {\n this.socket = new WebSocket(wsurl, [\"mqtt\"]);\n }\n\n this.socket.binaryType = \"arraybuffer\";\n this.socket.onopen = scope(this._on_socket_open, this);\n this.socket.onmessage = scope(this._on_socket_message, this);\n this.socket.onerror = scope(this._on_socket_error, this);\n this.socket.onclose = scope(this._on_socket_close, this);\n this.sendPinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n this.receivePinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\n if (this._connectTimeout) {\n this._connectTimeout.cancel();\n\n this._connectTimeout = null;\n }\n\n this._connectTimeout = new Timeout(this, this.connectOptions.timeout, this._disconnected, [ERROR.CONNECT_TIMEOUT.code, format(ERROR.CONNECT_TIMEOUT)]);\n }; // Schedule a new message to be sent over the WebSockets\n // connection. CONNECT messages cause WebSocket connection\n // to be started. All other messages are queued internally\n // until this has happened. When WS connection starts, process\n // all outstanding messages.\n\n\n ClientImpl.prototype._schedule_message = function (message) {\n // Add messages in fifo order to array, by adding to start\n this._msg_queue.unshift(message); // Process outstanding messages in the queue if we have an open socket, and have received CONNACK.\n\n\n if (this.connected) {\n this._process_queue();\n }\n };\n\n ClientImpl.prototype.store = function (prefix, wireMessage) {\n var storedMessage = {\n type: wireMessage.type,\n messageIdentifier: wireMessage.messageIdentifier,\n version: 1\n };\n\n switch (wireMessage.type) {\n case MESSAGE_TYPE.PUBLISH:\n if (wireMessage.pubRecReceived) storedMessage.pubRecReceived = true; // Convert the payload to a hex string.\n\n storedMessage.payloadMessage = {};\n var hex = \"\";\n var messageBytes = wireMessage.payloadMessage.payloadBytes;\n\n for (var i = 0; i < messageBytes.length; i++) {\n if (messageBytes[i] <= 0xF) hex = hex + \"0\" + messageBytes[i].toString(16);else hex = hex + messageBytes[i].toString(16);\n }\n\n storedMessage.payloadMessage.payloadHex = hex;\n storedMessage.payloadMessage.qos = wireMessage.payloadMessage.qos;\n storedMessage.payloadMessage.destinationName = wireMessage.payloadMessage.destinationName;\n if (wireMessage.payloadMessage.duplicate) storedMessage.payloadMessage.duplicate = true;\n if (wireMessage.payloadMessage.retained) storedMessage.payloadMessage.retained = true; // Add a sequence number to sent messages.\n\n if (prefix.indexOf(\"Sent:\") === 0) {\n if (wireMessage.sequence === undefined) wireMessage.sequence = ++this._sequence;\n storedMessage.sequence = wireMessage.sequence;\n }\n\n break;\n\n default:\n throw Error(format(ERROR.INVALID_STORED_DATA, [prefix + this._localKey + wireMessage.messageIdentifier, storedMessage]));\n }\n\n localStorage.setItem(prefix + this._localKey + wireMessage.messageIdentifier, JSON.stringify(storedMessage));\n };\n\n ClientImpl.prototype.restore = function (key) {\n var value = localStorage.getItem(key);\n var storedMessage = JSON.parse(value);\n var wireMessage = new WireMessage(storedMessage.type, storedMessage);\n\n switch (storedMessage.type) {\n case MESSAGE_TYPE.PUBLISH:\n // Replace the payload message with a Message object.\n var hex = storedMessage.payloadMessage.payloadHex;\n var buffer = new ArrayBuffer(hex.length / 2);\n var byteStream = new Uint8Array(buffer);\n var i = 0;\n\n while (hex.length >= 2) {\n var x = parseInt(hex.substring(0, 2), 16);\n hex = hex.substring(2, hex.length);\n byteStream[i++] = x;\n }\n\n var payloadMessage = new Message(byteStream);\n payloadMessage.qos = storedMessage.payloadMessage.qos;\n payloadMessage.destinationName = storedMessage.payloadMessage.destinationName;\n if (storedMessage.payloadMessage.duplicate) payloadMessage.duplicate = true;\n if (storedMessage.payloadMessage.retained) payloadMessage.retained = true;\n wireMessage.payloadMessage = payloadMessage;\n break;\n\n default:\n throw Error(format(ERROR.INVALID_STORED_DATA, [key, value]));\n }\n\n if (key.indexOf(\"Sent:\" + this._localKey) === 0) {\n wireMessage.payloadMessage.duplicate = true;\n this._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n } else if (key.indexOf(\"Received:\" + this._localKey) === 0) {\n this._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n }\n };\n\n ClientImpl.prototype._process_queue = function () {\n var message = null; // Send all queued messages down socket connection\n\n while (message = this._msg_queue.pop()) {\n this._socket_send(message); // Notify listeners that message was successfully sent\n\n\n if (this._notify_msg_sent[message]) {\n this._notify_msg_sent[message]();\n\n delete this._notify_msg_sent[message];\n }\n }\n };\n /**\n * Expect an ACK response for this message. Add message to the set of in progress\n * messages and set an unused identifier in this message.\n * @ignore\n */\n\n\n ClientImpl.prototype._requires_ack = function (wireMessage) {\n var messageCount = Object.keys(this._sentMessages).length;\n if (messageCount > this.maxMessageIdentifier) throw Error(\"Too many messages:\" + messageCount);\n\n while (this._sentMessages[this._message_identifier] !== undefined) {\n this._message_identifier++;\n }\n\n wireMessage.messageIdentifier = this._message_identifier;\n this._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\n if (wireMessage.type === MESSAGE_TYPE.PUBLISH) {\n this.store(\"Sent:\", wireMessage);\n }\n\n if (this._message_identifier === this.maxMessageIdentifier) {\n this._message_identifier = 1;\n }\n };\n /**\n * Called when the underlying websocket has been opened.\n * @ignore\n */\n\n\n ClientImpl.prototype._on_socket_open = function () {\n // Create the CONNECT message object.\n var wireMessage = new WireMessage(MESSAGE_TYPE.CONNECT, this.connectOptions);\n wireMessage.clientId = this.clientId;\n\n this._socket_send(wireMessage);\n };\n /**\n * Called when the underlying websocket has received a complete packet.\n * @ignore\n */\n\n\n ClientImpl.prototype._on_socket_message = function (event) {\n this._trace(\"Client._on_socket_message\", event.data);\n\n var messages = this._deframeMessages(event.data);\n\n for (var i = 0; i < messages.length; i += 1) {\n this._handleMessage(messages[i]);\n }\n };\n\n ClientImpl.prototype._deframeMessages = function (data) {\n var byteArray = new Uint8Array(data);\n var messages = [];\n\n if (this.receiveBuffer) {\n var newData = new Uint8Array(this.receiveBuffer.length + byteArray.length);\n newData.set(this.receiveBuffer);\n newData.set(byteArray, this.receiveBuffer.length);\n byteArray = newData;\n delete this.receiveBuffer;\n }\n\n try {\n var offset = 0;\n\n while (offset < byteArray.length) {\n var result = decodeMessage(byteArray, offset);\n var wireMessage = result[0];\n offset = result[1];\n\n if (wireMessage !== null) {\n messages.push(wireMessage);\n } else {\n break;\n }\n }\n\n if (offset < byteArray.length) {\n this.receiveBuffer = byteArray.subarray(offset);\n }\n } catch (error) {\n var errorStack = error.hasOwnProperty(\"stack\") == \"undefined\" ? error.stack.toString() : \"No Error Stack Available\";\n\n this._disconnected(ERROR.INTERNAL_ERROR.code, format(ERROR.INTERNAL_ERROR, [error.message, errorStack]));\n\n return;\n }\n\n return messages;\n };\n\n ClientImpl.prototype._handleMessage = function (wireMessage) {\n this._trace(\"Client._handleMessage\", wireMessage);\n\n try {\n switch (wireMessage.type) {\n case MESSAGE_TYPE.CONNACK:\n this._connectTimeout.cancel();\n\n if (this._reconnectTimeout) this._reconnectTimeout.cancel(); // If we have started using clean session then clear up the local state.\n\n if (this.connectOptions.cleanSession) {\n for (var key in this._sentMessages) {\n var sentMessage = this._sentMessages[key];\n localStorage.removeItem(\"Sent:\" + this._localKey + sentMessage.messageIdentifier);\n }\n\n this._sentMessages = {};\n\n for (var key in this._receivedMessages) {\n var receivedMessage = this._receivedMessages[key];\n localStorage.removeItem(\"Received:\" + this._localKey + receivedMessage.messageIdentifier);\n }\n\n this._receivedMessages = {};\n } // Client connected and ready for business.\n\n\n if (wireMessage.returnCode === 0) {\n this.connected = true; // Jump to the end of the list of uris and stop looking for a good host.\n\n if (this.connectOptions.uris) this.hostIndex = this.connectOptions.uris.length;\n } else {\n this._disconnected(ERROR.CONNACK_RETURNCODE.code, format(ERROR.CONNACK_RETURNCODE, [wireMessage.returnCode, CONNACK_RC[wireMessage.returnCode]]));\n\n break;\n } // Resend messages.\n\n\n var sequencedMessages = [];\n\n for (var msgId in this._sentMessages) {\n if (this._sentMessages.hasOwnProperty(msgId)) sequencedMessages.push(this._sentMessages[msgId]);\n } // Also schedule qos 0 buffered messages if any\n\n\n if (this._buffered_msg_queue.length > 0) {\n var msg = null;\n\n while (msg = this._buffered_msg_queue.pop()) {\n sequencedMessages.push(msg);\n if (this.onMessageDelivered) this._notify_msg_sent[msg] = this.onMessageDelivered(msg.payloadMessage);\n }\n } // Sort sentMessages into the original sent order.\n\n\n var sequencedMessages = sequencedMessages.sort(function (a, b) {\n return a.sequence - b.sequence;\n });\n\n for (var i = 0, len = sequencedMessages.length; i < len; i++) {\n var sentMessage = sequencedMessages[i];\n\n if (sentMessage.type == MESSAGE_TYPE.PUBLISH && sentMessage.pubRecReceived) {\n var pubRelMessage = new WireMessage(MESSAGE_TYPE.PUBREL, {\n messageIdentifier: sentMessage.messageIdentifier\n });\n\n this._schedule_message(pubRelMessage);\n } else {\n this._schedule_message(sentMessage);\n }\n } // Execute the connectOptions.onSuccess callback if there is one.\n // Will also now return if this connection was the result of an automatic\n // reconnect and which URI was successfully connected to.\n\n\n if (this.connectOptions.onSuccess) {\n this.connectOptions.onSuccess({\n invocationContext: this.connectOptions.invocationContext\n });\n }\n\n var reconnected = false;\n\n if (this._reconnecting) {\n reconnected = true;\n this._reconnectInterval = 1;\n this._reconnecting = false;\n } // Execute the onConnected callback if there is one.\n\n\n this._connected(reconnected, this._wsuri); // Process all queued messages now that the connection is established.\n\n\n this._process_queue();\n\n break;\n\n case MESSAGE_TYPE.PUBLISH:\n this._receivePublish(wireMessage);\n\n break;\n\n case MESSAGE_TYPE.PUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier]; // If this is a re flow of a PUBACK after we have restarted receivedMessage will not exist.\n\n if (sentMessage) {\n delete this._sentMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Sent:\" + this._localKey + wireMessage.messageIdentifier);\n if (this.onMessageDelivered) this.onMessageDelivered(sentMessage.payloadMessage);\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREC:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier]; // If this is a re flow of a PUBREC after we have restarted receivedMessage will not exist.\n\n if (sentMessage) {\n sentMessage.pubRecReceived = true;\n var pubRelMessage = new WireMessage(MESSAGE_TYPE.PUBREL, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n this.store(\"Sent:\", sentMessage);\n\n this._schedule_message(pubRelMessage);\n }\n\n break;\n\n case MESSAGE_TYPE.PUBREL:\n var receivedMessage = this._receivedMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Received:\" + this._localKey + wireMessage.messageIdentifier); // If this is a re flow of a PUBREL after we have restarted receivedMessage will not exist.\n\n if (receivedMessage) {\n this._receiveMessage(receivedMessage);\n\n delete this._receivedMessages[wireMessage.messageIdentifier];\n } // Always flow PubComp, we may have previously flowed PubComp but the server lost it and restarted.\n\n\n var pubCompMessage = new WireMessage(MESSAGE_TYPE.PUBCOMP, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubCompMessage);\n\n break;\n\n case MESSAGE_TYPE.PUBCOMP:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n delete this._sentMessages[wireMessage.messageIdentifier];\n localStorage.removeItem(\"Sent:\" + this._localKey + wireMessage.messageIdentifier);\n if (this.onMessageDelivered) this.onMessageDelivered(sentMessage.payloadMessage);\n break;\n\n case MESSAGE_TYPE.SUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n\n if (sentMessage) {\n if (sentMessage.timeOut) sentMessage.timeOut.cancel(); // This will need to be fixed when we add multiple topic support\n\n if (wireMessage.returnCode[0] === 0x80) {\n if (sentMessage.onFailure) {\n sentMessage.onFailure(wireMessage.returnCode);\n }\n } else if (sentMessage.onSuccess) {\n sentMessage.onSuccess(wireMessage.returnCode);\n }\n\n delete this._sentMessages[wireMessage.messageIdentifier];\n }\n\n break;\n\n case MESSAGE_TYPE.UNSUBACK:\n var sentMessage = this._sentMessages[wireMessage.messageIdentifier];\n\n if (sentMessage) {\n if (sentMessage.timeOut) sentMessage.timeOut.cancel();\n\n if (sentMessage.callback) {\n sentMessage.callback();\n }\n\n delete this._sentMessages[wireMessage.messageIdentifier];\n }\n\n break;\n\n case MESSAGE_TYPE.PINGRESP:\n /* The sendPinger or receivePinger may have sent a ping, the receivePinger has already been reset. */\n this.sendPinger.reset();\n break;\n\n case MESSAGE_TYPE.DISCONNECT:\n // Clients do not expect to receive disconnect packets.\n this._disconnected(ERROR.INVALID_MQTT_MESSAGE_TYPE.code, format(ERROR.INVALID_MQTT_MESSAGE_TYPE, [wireMessage.type]));\n\n break;\n\n default:\n this._disconnected(ERROR.INVALID_MQTT_MESSAGE_TYPE.code, format(ERROR.INVALID_MQTT_MESSAGE_TYPE, [wireMessage.type]));\n\n }\n } catch (error) {\n var errorStack = error.hasOwnProperty(\"stack\") == \"undefined\" ? error.stack.toString() : \"No Error Stack Available\";\n\n this._disconnected(ERROR.INTERNAL_ERROR.code, format(ERROR.INTERNAL_ERROR, [error.message, errorStack]));\n\n return;\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._on_socket_error = function (error) {\n if (!this._reconnecting) {\n this._disconnected(ERROR.SOCKET_ERROR.code, format(ERROR.SOCKET_ERROR, [error.data]));\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._on_socket_close = function () {\n if (!this._reconnecting) {\n this._disconnected(ERROR.SOCKET_CLOSE.code, format(ERROR.SOCKET_CLOSE));\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._socket_send = function (wireMessage) {\n if (wireMessage.type == 1) {\n var wireMessageMasked = this._traceMask(wireMessage, \"password\");\n\n this._trace(\"Client._socket_send\", wireMessageMasked);\n } else this._trace(\"Client._socket_send\", wireMessage);\n\n this.socket.send(wireMessage.encode());\n /* We have proved to the server we are alive. */\n\n this.sendPinger.reset();\n };\n /** @ignore */\n\n\n ClientImpl.prototype._receivePublish = function (wireMessage) {\n switch (wireMessage.payloadMessage.qos) {\n case \"undefined\":\n case 0:\n this._receiveMessage(wireMessage);\n\n break;\n\n case 1:\n var pubAckMessage = new WireMessage(MESSAGE_TYPE.PUBACK, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubAckMessage);\n\n this._receiveMessage(wireMessage);\n\n break;\n\n case 2:\n this._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n this.store(\"Received:\", wireMessage);\n var pubRecMessage = new WireMessage(MESSAGE_TYPE.PUBREC, {\n messageIdentifier: wireMessage.messageIdentifier\n });\n\n this._schedule_message(pubRecMessage);\n\n break;\n\n default:\n throw Error(\"Invaild qos=\" + wireMessage.payloadMessage.qos);\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._receiveMessage = function (wireMessage) {\n if (this.onMessageArrived) {\n this.onMessageArrived(wireMessage.payloadMessage);\n }\n };\n /**\n * Client has connected.\n * @param {reconnect} [boolean] indicate if this was a result of reconnect operation.\n * @param {uri} [string] fully qualified WebSocket URI of the server.\n */\n\n\n ClientImpl.prototype._connected = function (reconnect, uri) {\n // Execute the onConnected callback if there is one.\n if (this.onConnected) this.onConnected(reconnect, uri);\n };\n /**\n * Attempts to reconnect the client to the server.\n * For each reconnect attempt, will double the reconnect interval\n * up to 128 seconds.\n */\n\n\n ClientImpl.prototype._reconnect = function () {\n this._trace(\"Client._reconnect\");\n\n if (!this.connected) {\n this._reconnecting = true;\n this.sendPinger.cancel();\n this.receivePinger.cancel();\n if (this._reconnectInterval < 128) this._reconnectInterval = this._reconnectInterval * 2;\n\n if (this.connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(this.connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n }\n };\n /**\n * Client has disconnected either at its own request or because the server\n * or network disconnected it. Remove all non-durable state.\n * @param {errorCode} [number] the error number.\n * @param {errorText} [string] the error text.\n * @ignore\n */\n\n\n ClientImpl.prototype._disconnected = function (errorCode, errorText) {\n this._trace(\"Client._disconnected\", errorCode, errorText);\n\n if (errorCode !== undefined && this._reconnecting) {\n //Continue automatic reconnect process\n this._reconnectTimeout = new Timeout(this, this._reconnectInterval, this._reconnect);\n return;\n }\n\n this.sendPinger.cancel();\n this.receivePinger.cancel();\n\n if (this._connectTimeout) {\n this._connectTimeout.cancel();\n\n this._connectTimeout = null;\n } // Clear message buffers.\n\n\n this._msg_queue = [];\n this._buffered_msg_queue = [];\n this._notify_msg_sent = {};\n\n if (this.socket) {\n // Cancel all socket callbacks so that they cannot be driven again by this socket.\n this.socket.onopen = null;\n this.socket.onmessage = null;\n this.socket.onerror = null;\n this.socket.onclose = null;\n if (this.socket.readyState === 1) this.socket.close();\n delete this.socket;\n }\n\n if (this.connectOptions.uris && this.hostIndex < this.connectOptions.uris.length - 1) {\n // Try the next host.\n this.hostIndex++;\n\n this._doConnect(this.connectOptions.uris[this.hostIndex]);\n } else {\n if (errorCode === undefined) {\n errorCode = ERROR.OK.code;\n errorText = format(ERROR.OK);\n } // Run any application callbacks last as they may attempt to reconnect and hence create a new socket.\n\n\n if (this.connected) {\n this.connected = false; // Execute the connectionLostCallback if there is one, and we were connected.\n\n if (this.onConnectionLost) {\n this.onConnectionLost({\n errorCode: errorCode,\n errorMessage: errorText,\n reconnect: this.connectOptions.reconnect,\n uri: this._wsuri\n });\n }\n\n if (errorCode !== ERROR.OK.code && this.connectOptions.reconnect) {\n // Start automatic reconnect process for the very first time since last successful connect.\n this._reconnectInterval = 1;\n\n this._reconnect();\n\n return;\n }\n } else {\n // Otherwise we never had a connection, so indicate that the connect has failed.\n if (this.connectOptions.mqttVersion === 4 && this.connectOptions.mqttVersionExplicit === false) {\n this._trace(\"Failed to connect V4, dropping back to V3\");\n\n this.connectOptions.mqttVersion = 3;\n\n if (this.connectOptions.uris) {\n this.hostIndex = 0;\n\n this._doConnect(this.connectOptions.uris[0]);\n } else {\n this._doConnect(this.uri);\n }\n } else if (this.connectOptions.onFailure) {\n this.connectOptions.onFailure({\n invocationContext: this.connectOptions.invocationContext,\n errorCode: errorCode,\n errorMessage: errorText\n });\n }\n }\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._trace = function () {\n // Pass trace message back to client's callback function\n if (this.traceFunction) {\n var args = Array.prototype.slice.call(arguments);\n\n for (var i in args) {\n if (typeof args[i] !== \"undefined\") args.splice(i, 1, JSON.stringify(args[i]));\n }\n\n var record = args.join(\"\");\n this.traceFunction({\n severity: \"Debug\",\n message: record\n });\n } //buffer style trace\n\n\n if (this._traceBuffer !== null) {\n for (var i = 0, max = arguments.length; i < max; i++) {\n if (this._traceBuffer.length == this._MAX_TRACE_ENTRIES) {\n this._traceBuffer.shift();\n }\n\n if (i === 0) this._traceBuffer.push(arguments[i]);else if (typeof arguments[i] === \"undefined\") this._traceBuffer.push(arguments[i]);else this._traceBuffer.push(\" \" + JSON.stringify(arguments[i]));\n }\n }\n };\n /** @ignore */\n\n\n ClientImpl.prototype._traceMask = function (traceObject, masked) {\n var traceObjectMasked = {};\n\n for (var attr in traceObject) {\n if (traceObject.hasOwnProperty(attr)) {\n if (attr == masked) traceObjectMasked[attr] = \"******\";else traceObjectMasked[attr] = traceObject[attr];\n }\n }\n\n return traceObjectMasked;\n }; // ------------------------------------------------------------------------\n // Public Programming interface.\n // ------------------------------------------------------------------------\n\n /**\n * The JavaScript application communicates to the server using a {@link Paho.Client} object.\n *

\n * Most applications will create just one Client object and then call its connect() method,\n * however applications can create more than one Client object if they wish.\n * In this case the combination of host, port and clientId attributes must be different for each Client object.\n *

\n * The send, subscribe and unsubscribe methods are implemented as asynchronous JavaScript methods\n * (even though the underlying protocol exchange might be synchronous in nature).\n * This means they signal their completion by calling back to the application,\n * via Success or Failure callback functions provided by the application on the method in question.\n * Such callbacks are called at most once per method invocation and do not persist beyond the lifetime\n * of the script that made the invocation.\n *

\n * In contrast there are some callback functions, most notably onMessageArrived,\n * that are defined on the {@link Paho.Client} object.\n * These may get called multiple times, and aren't directly related to specific method invocations made by the client.\n *\n * @name Paho.Client\n *\n * @constructor\n *\n * @param {string} host - the address of the messaging server, as a fully qualified WebSocket URI, as a DNS name or dotted decimal IP address.\n * @param {number} port - the port number to connect to - only required if host is not a URI\n * @param {string} path - the path on the host to connect to - only used if host is not a URI. Default: '/mqtt'.\n * @param {string} clientId - the Messaging client identifier, between 1 and 23 characters in length.\n *\n * @property {string} host - read only the server's DNS hostname or dotted decimal IP address.\n * @property {number} port - read only the server's port.\n * @property {string} path - read only the server's path.\n * @property {string} clientId - read only used when connecting to the server.\n * @property {function} onConnectionLost - called when a connection has been lost.\n * after a connect() method has succeeded.\n * Establish the call back used when a connection has been lost. The connection may be\n * lost because the client initiates a disconnect or because the server or network\n * cause the client to be disconnected. The disconnect call back may be called without\n * the connectionComplete call back being invoked if, for example the client fails to\n * connect.\n * A single response object parameter is passed to the onConnectionLost callback containing the following fields:\n *

    \n *
  1. errorCode\n *
  2. errorMessage\n *
\n * @property {function} onMessageDelivered - called when a message has been delivered.\n * All processing that this Client will ever do has been completed. So, for example,\n * in the case of a Qos=2 message sent by this client, the PubComp flow has been received from the server\n * and the message has been removed from persistent storage before this callback is invoked.\n * Parameters passed to the onMessageDelivered callback are:\n *
    \n *
  1. {@link Paho.Message} that was delivered.\n *
\n * @property {function} onMessageArrived - called when a message has arrived in this Paho.client.\n * Parameters passed to the onMessageArrived callback are:\n *
    \n *
  1. {@link Paho.Message} that has arrived.\n *
\n * @property {function} onConnected - called when a connection is successfully made to the server.\n * after a connect() method.\n * Parameters passed to the onConnected callback are:\n *
    \n *
  1. reconnect (boolean) - If true, the connection was the result of a reconnect.
  2. \n *
  3. URI (string) - The URI used to connect to the server.
  4. \n *
\n * @property {boolean} disconnectedPublishing - if set, will enable disconnected publishing in\n * in the event that the connection to the server is lost.\n * @property {number} disconnectedBufferSize - Used to set the maximum number of messages that the disconnected\n * buffer will hold before rejecting new messages. Default size: 5000 messages\n * @property {function} trace - called whenever trace is called. TODO\n */\n\n\n var Client = function Client(host, port, path, clientId) {\n var uri;\n if (typeof host !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof host, \"host\"]));\n\n if (arguments.length == 2) {\n // host: must be full ws:// uri\n // port: clientId\n clientId = port;\n uri = host;\n var match = uri.match(/^(wss?):\\/\\/((\\[(.+)\\])|([^\\/]+?))(:(\\d+))?(\\/.*)$/);\n\n if (match) {\n host = match[4] || match[2];\n port = parseInt(match[7]);\n path = match[8];\n } else {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [host, \"host\"]));\n }\n } else {\n if (arguments.length == 3) {\n clientId = path;\n path = \"/mqtt\";\n }\n\n if (typeof port !== \"number\" || port < 0) throw new Error(format(ERROR.INVALID_TYPE, [typeof port, \"port\"]));\n if (typeof path !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof path, \"path\"]));\n var ipv6AddSBracket = host.indexOf(\":\") !== -1 && host.slice(0, 1) !== \"[\" && host.slice(-1) !== \"]\";\n uri = \"ws://\" + (ipv6AddSBracket ? \"[\" + host + \"]\" : host) + \":\" + port + path;\n }\n\n var clientIdLength = 0;\n\n for (var i = 0; i < clientId.length; i++) {\n var charCode = clientId.charCodeAt(i);\n\n if (0xD800 <= charCode && charCode <= 0xDBFF) {\n i++; // Surrogate pair.\n }\n\n clientIdLength++;\n }\n\n if (typeof clientId !== \"string\" || clientIdLength > 65535) throw new Error(format(ERROR.INVALID_ARGUMENT, [clientId, \"clientId\"]));\n var client = new ClientImpl(uri, host, port, path, clientId); //Public Properties\n\n Object.defineProperties(this, {\n \"host\": {\n get: function get() {\n return host;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"port\": {\n get: function get() {\n return port;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"path\": {\n get: function get() {\n return path;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"uri\": {\n get: function get() {\n return uri;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"clientId\": {\n get: function get() {\n return client.clientId;\n },\n set: function set() {\n throw new Error(format(ERROR.UNSUPPORTED_OPERATION));\n }\n },\n \"onConnected\": {\n get: function get() {\n return client.onConnected;\n },\n set: function set(newOnConnected) {\n if (typeof newOnConnected === \"function\") client.onConnected = newOnConnected;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnected, \"onConnected\"]));\n }\n },\n \"disconnectedPublishing\": {\n get: function get() {\n return client.disconnectedPublishing;\n },\n set: function set(newDisconnectedPublishing) {\n client.disconnectedPublishing = newDisconnectedPublishing;\n }\n },\n \"disconnectedBufferSize\": {\n get: function get() {\n return client.disconnectedBufferSize;\n },\n set: function set(newDisconnectedBufferSize) {\n client.disconnectedBufferSize = newDisconnectedBufferSize;\n }\n },\n \"onConnectionLost\": {\n get: function get() {\n return client.onConnectionLost;\n },\n set: function set(newOnConnectionLost) {\n if (typeof newOnConnectionLost === \"function\") client.onConnectionLost = newOnConnectionLost;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnConnectionLost, \"onConnectionLost\"]));\n }\n },\n \"onMessageDelivered\": {\n get: function get() {\n return client.onMessageDelivered;\n },\n set: function set(newOnMessageDelivered) {\n if (typeof newOnMessageDelivered === \"function\") client.onMessageDelivered = newOnMessageDelivered;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageDelivered, \"onMessageDelivered\"]));\n }\n },\n \"onMessageArrived\": {\n get: function get() {\n return client.onMessageArrived;\n },\n set: function set(newOnMessageArrived) {\n if (typeof newOnMessageArrived === \"function\") client.onMessageArrived = newOnMessageArrived;else throw new Error(format(ERROR.INVALID_TYPE, [typeof newOnMessageArrived, \"onMessageArrived\"]));\n }\n },\n \"trace\": {\n get: function get() {\n return client.traceFunction;\n },\n set: function set(trace) {\n if (typeof trace === \"function\") {\n client.traceFunction = trace;\n } else {\n throw new Error(format(ERROR.INVALID_TYPE, [typeof trace, \"onTrace\"]));\n }\n }\n }\n });\n /**\n * Connect this Messaging client to its server.\n *\n * @name Paho.Client#connect\n * @function\n * @param {object} connectOptions - Attributes used with the connection.\n * @param {number} connectOptions.timeout - If the connect has not succeeded within this\n * number of seconds, it is deemed to have failed.\n * The default is 30 seconds.\n * @param {string} connectOptions.userName - Authentication username for this connection.\n * @param {string} connectOptions.password - Authentication password for this connection.\n * @param {Paho.Message} connectOptions.willMessage - sent by the server when the client\n * disconnects abnormally.\n * @param {number} connectOptions.keepAliveInterval - the server disconnects this client if\n * there is no activity for this number of seconds.\n * The default value of 60 seconds is assumed if not set.\n * @param {boolean} connectOptions.cleanSession - if true(default) the client and server\n * persistent state is deleted on successful connect.\n * @param {boolean} connectOptions.useSSL - if present and true, use an SSL Websocket connection.\n * @param {object} connectOptions.invocationContext - passed to the onSuccess callback or onFailure callback.\n * @param {function} connectOptions.onSuccess - called when the connect acknowledgement\n * has been received from the server.\n * A single response object parameter is passed to the onSuccess callback containing the following fields:\n *
    \n *
  1. invocationContext as passed in to the onSuccess method in the connectOptions.\n *
\n * @param {function} connectOptions.onFailure - called when the connect request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
    \n *
  1. invocationContext as passed in to the onFailure method in the connectOptions.\n *
  2. errorCode a number indicating the nature of the error.\n *
  3. errorMessage text describing the error.\n *
\n * @param {array} connectOptions.hosts - If present this contains either a set of hostnames or fully qualified\n * WebSocket URIs (ws://iot.eclipse.org:80/ws), that are tried in order in place\n * of the host and port paramater on the construtor. The hosts are tried one at at time in order until\n * one of then succeeds.\n * @param {array} connectOptions.ports - If present the set of ports matching the hosts. If hosts contains URIs, this property\n * is not used.\n * @param {boolean} connectOptions.reconnect - Sets whether the client will automatically attempt to reconnect\n * to the server if the connection is lost.\n *\n * @param {number} connectOptions.mqttVersion - The version of MQTT to use to connect to the MQTT Broker.\n *\n * @param {boolean} connectOptions.mqttVersionExplicit - If set to true, will force the connection to use the\n * selected MQTT Version or will fail to connect.\n * @param {array} connectOptions.uris - If present, should contain a list of fully qualified WebSocket uris\n * (e.g. ws://iot.eclipse.org:80/ws), that are tried in order in place of the host and port parameter of the construtor.\n * The uris are tried one at a time in order until one of them succeeds. Do not use this in conjunction with hosts as\n * the hosts array will be converted to uris and will overwrite this property.\n * @throws {InvalidState} If the client is not in disconnected state. The client must have received connectionLost\n * or disconnected before calling connect for a second or subsequent time.\n */\n\n this.connect = function (connectOptions) {\n connectOptions = connectOptions || {};\n validate(connectOptions, {\n timeout: \"number\",\n userName: \"string\",\n password: \"string\",\n willMessage: \"object\",\n keepAliveInterval: \"number\",\n cleanSession: \"boolean\",\n useSSL: \"boolean\",\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n hosts: \"object\",\n ports: \"object\",\n reconnect: \"boolean\",\n mqttVersion: \"number\",\n mqttVersionExplicit: \"boolean\",\n uris: \"object\"\n }); // If no keep alive interval is set, assume 60 seconds.\n\n if (connectOptions.keepAliveInterval === undefined) connectOptions.keepAliveInterval = 60;\n\n if (connectOptions.mqttVersion > 4 || connectOptions.mqttVersion < 3) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.mqttVersion, \"connectOptions.mqttVersion\"]));\n }\n\n if (connectOptions.mqttVersion === undefined) {\n connectOptions.mqttVersionExplicit = false;\n connectOptions.mqttVersion = 4;\n } else {\n connectOptions.mqttVersionExplicit = true;\n } //Check that if password is set, so is username\n\n\n if (connectOptions.password !== undefined && connectOptions.userName === undefined) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.password, \"connectOptions.password\"]));\n\n if (connectOptions.willMessage) {\n if (!(connectOptions.willMessage instanceof Message)) throw new Error(format(ERROR.INVALID_TYPE, [connectOptions.willMessage, \"connectOptions.willMessage\"])); // The will message must have a payload that can be represented as a string.\n // Cause the willMessage to throw an exception if this is not the case.\n\n connectOptions.willMessage.stringPayload = null;\n if (typeof connectOptions.willMessage.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.willMessage.destinationName, \"connectOptions.willMessage.destinationName\"]));\n }\n\n if (typeof connectOptions.cleanSession === \"undefined\") connectOptions.cleanSession = true;\n\n if (connectOptions.hosts) {\n if (!(connectOptions.hosts instanceof Array)) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n if (connectOptions.hosts.length < 1) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts, \"connectOptions.hosts\"]));\n var usingURIs = false;\n\n for (var i = 0; i < connectOptions.hosts.length; i++) {\n if (typeof connectOptions.hosts[i] !== \"string\") throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n\n if (/^(wss?):\\/\\/((\\[(.+)\\])|([^\\/]+?))(:(\\d+))?(\\/.*)$/.test(connectOptions.hosts[i])) {\n if (i === 0) {\n usingURIs = true;\n } else if (!usingURIs) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n }\n } else if (usingURIs) {\n throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.hosts[i], \"connectOptions.hosts[\" + i + \"]\"]));\n }\n }\n\n if (!usingURIs) {\n if (!connectOptions.ports) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n if (!(connectOptions.ports instanceof Array)) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n if (connectOptions.hosts.length !== connectOptions.ports.length) throw new Error(format(ERROR.INVALID_ARGUMENT, [connectOptions.ports, \"connectOptions.ports\"]));\n connectOptions.uris = [];\n\n for (var i = 0; i < connectOptions.hosts.length; i++) {\n if (typeof connectOptions.ports[i] !== \"number\" || connectOptions.ports[i] < 0) throw new Error(format(ERROR.INVALID_TYPE, [typeof connectOptions.ports[i], \"connectOptions.ports[\" + i + \"]\"]));\n var host = connectOptions.hosts[i];\n var port = connectOptions.ports[i];\n var ipv6 = host.indexOf(\":\") !== -1;\n uri = \"ws://\" + (ipv6 ? \"[\" + host + \"]\" : host) + \":\" + port + path;\n connectOptions.uris.push(uri);\n }\n } else {\n connectOptions.uris = connectOptions.hosts;\n }\n }\n\n client.connect(connectOptions);\n };\n /**\n * Subscribe for messages, request receipt of a copy of messages sent to the destinations described by the filter.\n *\n * @name Paho.Client#subscribe\n * @function\n * @param {string} filter describing the destinations to receive messages from.\n *
\n * @param {object} subscribeOptions - used to control the subscription\n *\n * @param {number} subscribeOptions.qos - the maximum qos of any publications sent\n * as a result of making this subscription.\n * @param {object} subscribeOptions.invocationContext - passed to the onSuccess callback\n * or onFailure callback.\n * @param {function} subscribeOptions.onSuccess - called when the subscribe acknowledgement\n * has been received from the server.\n * A single response object parameter is passed to the onSuccess callback containing the following fields:\n *
    \n *
  1. invocationContext if set in the subscribeOptions.\n *
\n * @param {function} subscribeOptions.onFailure - called when the subscribe request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
    \n *
  1. invocationContext - if set in the subscribeOptions.\n *
  2. errorCode - a number indicating the nature of the error.\n *
  3. errorMessage - text describing the error.\n *
\n * @param {number} subscribeOptions.timeout - which, if present, determines the number of\n * seconds after which the onFailure calback is called.\n * The presence of a timeout does not prevent the onSuccess\n * callback from being called when the subscribe completes.\n * @throws {InvalidState} if the client is not in connected state.\n */\n\n\n this.subscribe = function (filter, subscribeOptions) {\n if (typeof filter !== \"string\" && filter.constructor !== Array) throw new Error(\"Invalid argument:\" + filter);\n subscribeOptions = subscribeOptions || {};\n validate(subscribeOptions, {\n qos: \"number\",\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n timeout: \"number\"\n });\n if (subscribeOptions.timeout && !subscribeOptions.onFailure) throw new Error(\"subscribeOptions.timeout specified with no onFailure callback.\");\n if (typeof subscribeOptions.qos !== \"undefined\" && !(subscribeOptions.qos === 0 || subscribeOptions.qos === 1 || subscribeOptions.qos === 2)) throw new Error(format(ERROR.INVALID_ARGUMENT, [subscribeOptions.qos, \"subscribeOptions.qos\"]));\n client.subscribe(filter, subscribeOptions);\n };\n /**\n * Unsubscribe for messages, stop receiving messages sent to destinations described by the filter.\n *\n * @name Paho.Client#unsubscribe\n * @function\n * @param {string} filter - describing the destinations to receive messages from.\n * @param {object} unsubscribeOptions - used to control the subscription\n * @param {object} unsubscribeOptions.invocationContext - passed to the onSuccess callback\n \t\t\t\t\t\t\t\t\t or onFailure callback.\n * @param {function} unsubscribeOptions.onSuccess - called when the unsubscribe acknowledgement has been received from the server.\n * A single response object parameter is passed to the\n * onSuccess callback containing the following fields:\n *
    \n *
  1. invocationContext - if set in the unsubscribeOptions.\n *
\n * @param {function} unsubscribeOptions.onFailure called when the unsubscribe request has failed or timed out.\n * A single response object parameter is passed to the onFailure callback containing the following fields:\n *
    \n *
  1. invocationContext - if set in the unsubscribeOptions.\n *
  2. errorCode - a number indicating the nature of the error.\n *
  3. errorMessage - text describing the error.\n *
\n * @param {number} unsubscribeOptions.timeout - which, if present, determines the number of seconds\n * after which the onFailure callback is called. The presence of\n * a timeout does not prevent the onSuccess callback from being\n * called when the unsubscribe completes\n * @throws {InvalidState} if the client is not in connected state.\n */\n\n\n this.unsubscribe = function (filter, unsubscribeOptions) {\n if (typeof filter !== \"string\" && filter.constructor !== Array) throw new Error(\"Invalid argument:\" + filter);\n unsubscribeOptions = unsubscribeOptions || {};\n validate(unsubscribeOptions, {\n invocationContext: \"object\",\n onSuccess: \"function\",\n onFailure: \"function\",\n timeout: \"number\"\n });\n if (unsubscribeOptions.timeout && !unsubscribeOptions.onFailure) throw new Error(\"unsubscribeOptions.timeout specified with no onFailure callback.\");\n client.unsubscribe(filter, unsubscribeOptions);\n };\n /**\n * Send a message to the consumers of the destination in the Message.\n *\n * @name Paho.Client#send\n * @function\n * @param {string|Paho.Message} topic - mandatory The name of the destination to which the message is to be sent.\n * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n * @param {String|ArrayBuffer} payload - The message data to be sent.\n * @param {number} qos The Quality of Service used to deliver the message.\n * \t\t
\n * \t\t\t
0 Best effort (default).\n * \t\t\t
1 At least once.\n * \t\t\t
2 Exactly once.\n * \t\t
\n * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n * @throws {InvalidState} if the client is not connected.\n */\n\n\n this.send = function (topic, payload, qos, retained) {\n var message;\n\n if (arguments.length === 0) {\n throw new Error(\"Invalid argument.\" + \"length\");\n } else if (arguments.length == 1) {\n if (!(topic instanceof Message) && typeof topic !== \"string\") throw new Error(\"Invalid argument:\" + typeof topic);\n message = topic;\n if (typeof message.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_ARGUMENT, [message.destinationName, \"Message.destinationName\"]));\n client.send(message);\n } else {\n //parameter checking in Message object\n message = new Message(payload);\n message.destinationName = topic;\n if (arguments.length >= 3) message.qos = qos;\n if (arguments.length >= 4) message.retained = retained;\n client.send(message);\n }\n };\n /**\n * Publish a message to the consumers of the destination in the Message.\n * Synonym for Paho.Mqtt.Client#send\n *\n * @name Paho.Client#publish\n * @function\n * @param {string|Paho.Message} topic - mandatory The name of the topic to which the message is to be published.\n * \t\t\t\t\t - If it is the only parameter, used as Paho.Message object.\n * @param {String|ArrayBuffer} payload - The message data to be published.\n * @param {number} qos The Quality of Service used to deliver the message.\n * \t\t
\n * \t\t\t
0 Best effort (default).\n * \t\t\t
1 At least once.\n * \t\t\t
2 Exactly once.\n * \t\t
\n * @param {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n * @throws {InvalidState} if the client is not connected.\n */\n\n\n this.publish = function (topic, payload, qos, retained) {\n var message;\n\n if (arguments.length === 0) {\n throw new Error(\"Invalid argument.\" + \"length\");\n } else if (arguments.length == 1) {\n if (!(topic instanceof Message) && typeof topic !== \"string\") throw new Error(\"Invalid argument:\" + typeof topic);\n message = topic;\n if (typeof message.destinationName === \"undefined\") throw new Error(format(ERROR.INVALID_ARGUMENT, [message.destinationName, \"Message.destinationName\"]));\n client.send(message);\n } else {\n //parameter checking in Message object\n message = new Message(payload);\n message.destinationName = topic;\n if (arguments.length >= 3) message.qos = qos;\n if (arguments.length >= 4) message.retained = retained;\n client.send(message);\n }\n };\n /**\n * Normal disconnect of this Messaging client from its server.\n *\n * @name Paho.Client#disconnect\n * @function\n * @throws {InvalidState} if the client is already disconnected.\n */\n\n\n this.disconnect = function () {\n client.disconnect();\n };\n /**\n * Get the contents of the trace log.\n *\n * @name Paho.Client#getTraceLog\n * @function\n * @return {Object[]} tracebuffer containing the time ordered trace records.\n */\n\n\n this.getTraceLog = function () {\n return client.getTraceLog();\n };\n /**\n * Start tracing.\n *\n * @name Paho.Client#startTrace\n * @function\n */\n\n\n this.startTrace = function () {\n client.startTrace();\n };\n /**\n * Stop tracing.\n *\n * @name Paho.Client#stopTrace\n * @function\n */\n\n\n this.stopTrace = function () {\n client.stopTrace();\n };\n\n this.isConnected = function () {\n return client.connected;\n };\n };\n /**\n * An application message, sent or received.\n *

\n * All attributes may be null, which implies the default values.\n *\n * @name Paho.Message\n * @constructor\n * @param {String|ArrayBuffer} payload The message data to be sent.\n *

\n * @property {string} payloadString read only The payload as a string if the payload consists of valid UTF-8 characters.\n * @property {ArrayBuffer} payloadBytes read only The payload as an ArrayBuffer.\n *

\n * @property {string} destinationName mandatory The name of the destination to which the message is to be sent\n * (for messages about to be sent) or the name of the destination from which the message has been received.\n * (for messages received by the onMessage function).\n *

\n * @property {number} qos The Quality of Service used to deliver the message.\n *

\n *
0 Best effort (default).\n *
1 At least once.\n *
2 Exactly once.\n *
\n *

\n * @property {Boolean} retained If true, the message is to be retained by the server and delivered\n * to both current and future subscriptions.\n * If false the server only delivers the message to current subscribers, this is the default for new Messages.\n * A received message has the retained boolean set to true if the message was published\n * with the retained boolean set to true\n * and the subscrption was made after the message has been published.\n *

\n * @property {Boolean} duplicate read only If true, this message might be a duplicate of one which has already been received.\n * This is only set on messages received from the server.\n *\n */\n\n\n var Message = function Message(newPayload) {\n var payload;\n\n if (typeof newPayload === \"string\" || newPayload instanceof ArrayBuffer || ArrayBuffer.isView(newPayload) && !(newPayload instanceof DataView)) {\n payload = newPayload;\n } else {\n throw format(ERROR.INVALID_ARGUMENT, [newPayload, \"newPayload\"]);\n }\n\n var destinationName;\n var qos = 0;\n var retained = false;\n var duplicate = false;\n Object.defineProperties(this, {\n \"payloadString\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") return payload;else return parseUTF8(payload, 0, payload.length);\n }\n },\n \"payloadBytes\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") {\n var buffer = new ArrayBuffer(UTF8Length(payload));\n var byteStream = new Uint8Array(buffer);\n stringToUTF8(payload, byteStream, 0);\n return byteStream;\n } else {\n return payload;\n }\n }\n },\n \"destinationName\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newDestinationName) {\n if (typeof newDestinationName === \"string\") destinationName = newDestinationName;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newDestinationName, \"newDestinationName\"]));\n }\n },\n \"qos\": {\n enumerable: true,\n get: function get() {\n return qos;\n },\n set: function set(newQos) {\n if (newQos === 0 || newQos === 1 || newQos === 2) qos = newQos;else throw new Error(\"Invalid argument:\" + newQos);\n }\n },\n \"retained\": {\n enumerable: true,\n get: function get() {\n return retained;\n },\n set: function set(newRetained) {\n if (typeof newRetained === \"boolean\") retained = newRetained;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newRetained, \"newRetained\"]));\n }\n },\n \"topic\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newTopic) {\n destinationName = newTopic;\n }\n },\n \"duplicate\": {\n enumerable: true,\n get: function get() {\n return duplicate;\n },\n set: function set(newDuplicate) {\n duplicate = newDuplicate;\n }\n }\n });\n }; // Module contents.\n\n\n return {\n Client: Client,\n Message: Message\n }; // eslint-disable-next-line no-nested-ternary\n }(typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n\n return PahoMQTT;\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\nrequire(\"core-js/modules/es6.array.for-each\");\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\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\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};","/*\n * Copyright 2017-2018 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 { PubSub } from './PubSub';\nexport * from './Providers';\nvar CONTROL_MSG;\n\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTION_CLOSED\"] = \"Connection closed\";\n CONTROL_MSG[\"TIMEOUT_DISCONNECT\"] = \"Timeout disconnect\";\n CONTROL_MSG[\"SUBSCRIPTION_ACK\"] = \"Subscription ack\";\n})(CONTROL_MSG || (CONTROL_MSG = {}));\n\nexport { PubSub, CONTROL_MSG };\n/**\n * @deprecated use named import\n */\n\nexport default PubSub;","/**\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}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\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/es6.object.create\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.is-array\";\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});","import \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.array.is-array\";\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}","import \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.function.name\";\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}","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\n\nfunction _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}","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.object.define-property\";\n\nfunction _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);","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The `applyToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method applyToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function applyToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","/**\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}","import \"core-js/modules/es6.regexp.split\";\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 * 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}","import \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.date.to-json\";\nimport \"core-js/modules/es6.object.freeze\";\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 { 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}","import \"core-js/modules/es6.object.freeze\";\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The 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 */","import \"core-js/modules/es6.object.freeze\";\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The 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 */","import \"core-js/modules/es6.date.to-json\";\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 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/es6.array.filter\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\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\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-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\n\nimport { GraphQLError } from 'graphql/error/GraphQLError';\nimport { print } from 'graphql/language/printer';\nimport { parse } from 'graphql/language/parser';\nimport Amplify, { ConsoleLogger as Logger, Credentials, Constants, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER } from '@aws-amplify/core';\nimport PubSub from '@aws-amplify/pubsub';\nimport Auth from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { RestClient } from '@aws-amplify/api-rest';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('GraphQLAPI');\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 GraphQLAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize GraphQL API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function GraphQLAPIClass(options) {\n this._api = null;\n this._options = options;\n Amplify.register(this);\n logger.debug('API Options', this._options);\n }\n\n GraphQLAPIClass.prototype.getModuleName = function () {\n return 'GraphQLAPI';\n };\n /**\n * Configure API\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n GraphQLAPIClass.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 GraphQL API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\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 GraphQLAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest instance');\n\n if (this._options) {\n this._api = new RestClient(this._options);\n return true;\n } else {\n return Promise.reject('API not configured');\n }\n };\n\n GraphQLAPIClass.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 GraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n\n var _a = __read(doc.definitions, 1),\n operationType = _a[0].operation;\n\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n GraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders) {\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\n var _c = __read(query.definitions.filter(function (def) {\n return def.kind === 'OperationDefinition';\n }), 1),\n _d = _c[0],\n operationDef = _d === void 0 ? {} : _d;\n\n var operationType = operationDef.operation;\n\n switch (operationType) {\n case 'query':\n case 'mutation':\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = {\n cancellableToken: cancellableToken\n };\n\n var responsePromise = this._graphql({\n query: query,\n variables: variables,\n authMode: authMode\n }, additionalHeaders, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n\n case 'subscription':\n return this._graphqlSubscribe({\n query: query,\n variables: variables,\n authMode: authMode\n }, additionalHeaders);\n }\n\n throw new Error(\"invalid operation type: \" + operationType);\n };\n\n GraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders, initParams) {\n var query = _a.query,\n variables = _a.variables,\n authMode = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n if (initParams === void 0) {\n initParams = {};\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 = Object.assign({\n headers: headers,\n body: body,\n signerServiceInfo: {\n service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n region: !customGraphqlEndpoint ? region : customEndpointRegion\n }\n }, initParams);\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(); // If the exception is because user intentionally\n // cancelled the request, do not modify the exception\n // so that clients can identify the exception correctly.\n\n if (this._api.isCancel(err_1)) {\n throw err_1;\n }\n\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 * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n GraphQLAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request. Only applicable for graphql queries and mutations\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n GraphQLAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n\n GraphQLAPIClass.prototype._graphqlSubscribe = function (_a, additionalHeaders) {\n var query = _a.query,\n variables = _a.variables,\n defaultAuthenticationType = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n var _b = this._options,\n region = _b.aws_appsync_region,\n appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint,\n aws_appsync_authenticationType = _b.aws_appsync_authenticationType,\n apiKey = _b.aws_appsync_apiKey,\n _c = _b.graphql_headers,\n graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c;\n var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n\n if (PubSub && typeof PubSub.subscribe === 'function') {\n return PubSub.subscribe('', {\n provider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n apiKey: apiKey,\n query: print(query),\n region: region,\n variables: variables,\n graphql_headers: graphql_headers,\n additionalHeaders: additionalHeaders\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 GraphQLAPIClass.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 GraphQLAPIClass;\n}();\n\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);","'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\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\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\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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;","import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.is-array\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\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/*\n * Copyright 2017-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\n\nimport { RestClient } from './RestClient';\nimport Amplify, { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\n\nvar RestAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize Rest API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function RestAPIClass(options) {\n this._api = null;\n this._options = options;\n Amplify.register(this);\n logger.debug('API Options', this._options);\n }\n\n RestAPIClass.prototype.getModuleName = function () {\n return 'RestAPI';\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 RestAPIClass.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 Rest 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('Rest API ' + endpoint.name + ', custom_header should be a function');\n endpoint.custom_header = 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 RestAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest API instance');\n this._api = new RestClient(this._options);\n return true;\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 RestAPIClass.prototype.get = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.get(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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 RestAPIClass.prototype.post = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.post(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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 RestAPIClass.prototype.put = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.put(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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 RestAPIClass.prototype.patch = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.patch(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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 RestAPIClass.prototype.del = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.del(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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 RestAPIClass.prototype.head = function (apiName, path, init) {\n var endpoint = this._api.endpoint(apiName);\n\n if (endpoint.length === 0) {\n return Promise.reject('API ' + apiName + ' does not exist');\n }\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.head(endpoint + path, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n RestAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n RestAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\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 RestAPIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._api.endpoint(apiName)];\n });\n });\n };\n\n return RestAPIClass;\n}();\n\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);","import \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\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/*\n * Copyright 2017-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\n\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { GraphQLAPIClass } from '@aws-amplify/api-graphql';\nimport { Amplify, ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('API');\n/**\n * @deprecated\n * Use RestApi or GraphQLAPI to reduce your application bundle size\n * Export Cloud Logic APIs\n */\n\nvar APIClass =\n/** @class */\nfunction () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this._options = options;\n this._restApi = new RestAPIClass(options);\n this._graphqlApi = new GraphQLAPIClass(options);\n Amplify.register(this);\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 this._options = Object.assign({}, this._options, options);\n\n var restAPIConfig = this._restApi.configure(this._options);\n\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\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 this._restApi.get(apiName, path, init);\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 this._restApi.post(apiName, path, init);\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 this._restApi.put(apiName, path, init);\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 this._restApi.patch(apiName, path, init);\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 this._restApi.del(apiName, path, init);\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 this._restApi.head(apiName, path, init);\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n APIClass.prototype.isCancel = function (error) {\n return this._restApi.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n APIClass.prototype.cancel = function (request, message) {\n return this._restApi.cancel(request, message);\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 return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n APIClass.prototype.graphql = function (options, additionalHeaders) {\n return this._graphqlApi.graphql(options, additionalHeaders);\n };\n\n return APIClass;\n}();\n\nexport { APIClass };\nexport var API = new APIClass(null);","\"use strict\";\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\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 = /*#__PURE__*/function () {\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 = /*#__PURE__*/function () {\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 = /*#__PURE__*/function () {\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}","import \"core-js/modules/es6.set\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.from\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\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\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/*\n * Copyright 2017-2018 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 * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#') return topicArray.length >= length;\n if (left !== '+' && left !== right) return false;\n }\n\n return length === topicArray.length;\n}\n\nvar ClientsQueue =\n/** @class */\nfunction () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n return __generator(this, function (_a) {\n promise = this.promises.get(clientId);\n\n if (promise) {\n return [2\n /*return*/\n , promise];\n }\n\n promise = clientFactory(clientId);\n this.promises.set(clientId, promise);\n return [2\n /*return*/\n , promise];\n });\n });\n };\n\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function get() {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises[\"delete\"](clientId);\n };\n\n return ClientsQueue;\n}();\n\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\n\nvar MqttOverWSProvider =\n/** @class */\nfunction (_super) {\n __extends(MqttOverWSProvider, _super);\n\n function MqttOverWSProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _this = _super.call(this, __assign(__assign({}, options), {\n clientId: options.clientId || uuid()\n })) || this;\n\n _this._clientsQueue = new ClientsQueue();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n return _this;\n }\n\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function get() {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function get() {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function get() {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({\n errorCode: errorCode\n }, args), null, 2));\n var topicsToDelete_1 = [];\n\n var clientIdObservers = this._clientIdObservers.get(clientId);\n\n if (!clientIdObservers) {\n return;\n }\n\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode); // removing observers for disconnected clientId\n\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic[\"delete\"](observer);\n\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n }); // forgiving any trace of clientId\n\n this._clientIdObservers[\"delete\"](clientId); // Removing topics that are not listen by an observer\n\n\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers[\"delete\"](topic);\n });\n }\n };\n\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url,\n clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n client = new Paho.Client(url, clientId); // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName,\n msg = _a.payloadString;\n\n _this._onMessage(topic, msg);\n };\n\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode,\n args = __rest(_a, [\"errorCode\"]);\n\n _this.onDisconnect(__assign({\n clientId: clientId,\n errorCode: errorCode\n }, args));\n };\n\n return [4\n /*yield*/\n , new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function onSuccess() {\n return resolve(client);\n },\n onFailure: reject\n });\n })];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n , client];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) {\n options = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), {\n clientId: clientId\n }));\n })];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n\n if (client && client.isConnected()) {\n client.disconnect();\n }\n\n this.clientsQueue.remove(clientId);\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n url = _a.sent();\n return [4\n /*yield*/\n , this.connect(this.clientId, {\n url: url\n })];\n\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) {\n return client.send(topic, message);\n });\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n\n var parsedMessage_1 = JSON.parse(msg);\n\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) {\n return observer.next(parsedMessage_1);\n });\n });\n } catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n var observersForTopic = _this._topicObservers.get(topic);\n\n if (!observersForTopic) {\n observersForTopic = new Set();\n\n _this._topicObservers.set(topic, observersForTopic);\n }\n\n observersForTopic.add(observer);\n }); // @ts-ignore\n\n var client;\n var _a = options.clientId,\n clientId = _a === void 0 ? _this.clientId : _a; // this._clientIdObservers is used to close observers when client gets disconnected\n\n var observersForClientId = _this._clientIdObservers.get(clientId);\n\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n\n observersForClientId.add(observer);\n\n _this._clientIdObservers.set(clientId, observersForClientId);\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n _b = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _b = _a;\n _c.label = 3;\n\n case 3:\n url = _b;\n _c.label = 4;\n\n case 4:\n _c.trys.push([4, 6,, 7]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n url: url\n })];\n\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3\n /*break*/\n , 7];\n\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3\n /*break*/\n , 7];\n\n case 7:\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n\n if (client) {\n _this._clientIdObservers.get(clientId)[\"delete\"](observer); // No more observers per client => client not needed anymore\n\n\n if (_this._clientIdObservers.get(clientId).size === 0) {\n _this.disconnect(clientId);\n\n _this._clientIdObservers[\"delete\"](clientId);\n }\n\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) || new Set();\n observersForTopic[\"delete\"](observer); // if no observers exists for the topic, topic should be removed\n\n if (observersForTopic.size === 0) {\n _this._topicObservers[\"delete\"](topic);\n\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n\n return null;\n };\n });\n };\n\n return MqttOverWSProvider;\n}(AbstractPubSubProvider);\n\nexport { MqttOverWSProvider };","import zenObservable from 'zen-observable';\nvar Observable = zenObservable;\nexport default Observable;\nexport { Observable };","import \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.assign\";\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\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\n\nvar AbstractPubSubProvider =\n/** @class */\nfunction () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n this._config = options;\n }\n\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function get() {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}();\n\nexport { AbstractPubSubProvider };","import \"core-js/modules/es6.array.some\";\nimport \"core-js/modules/es6.array.find\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es7.object.entries\";\nimport \"core-js/modules/es6.set\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.array.from\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\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\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\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\n\nvar AWSAppSyncProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncProvider, _super);\n\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function get() {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (t) {\n return _this._cleanUpForTopic(t);\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient[\"delete\"](topic);\n\n this._topicAlias[\"delete\"](topic);\n };\n\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n\n _this._topicObservers[\"delete\"](topic);\n }\n });\n\n this._cleanUp(clientId);\n }\n };\n\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n return [4\n /*yield*/\n , _super.prototype.disconnect.call(this, clientId)];\n\n case 2:\n _a.sent();\n\n this._cleanUp(clientId);\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var _b = __read(_a, 2),\n alias = _b[0],\n v = _b[1];\n\n return [v.topic, alias];\n }); // Merge new aliases with old ones\n\n this._topicAlias = new Map(__spread(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) {\n return c.topics.indexOf(elem) > -1;\n });\n\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client,\n url = connectionInfoForTopic.url;\n\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set()\n };\n }\n\n acc[clientId].topics.add(elem);\n }\n\n return acc;\n }, {})); // reconnect everything we have in the map\n\n return [4\n /*yield*/\n , Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2),\n clientId = _b[0],\n _c = _b[1],\n url = _c.url,\n topics = _c.topics;\n\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n\n var _this = this;\n\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n\n case 1:\n _d.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n clientId: clientId,\n url: url\n })];\n\n case 2:\n client = _d.sent();\n return [3\n /*break*/\n , 4];\n\n case 3:\n err_1 = _d.sent();\n observer.error({\n message: 'Failed to connect',\n error: err_1\n });\n observer.complete();\n return [2\n /*return*/\n , undefined];\n\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n\n _this._topicClient.set(topic, client);\n }\n });\n return [2\n /*return*/\n , client];\n }\n });\n });\n }))];\n\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n\n _this._topicClient[\"delete\"](t);\n\n if (!Array.from(_this._topicClient.values()).some(function (c) {\n return c === client;\n })) {\n _this.disconnect(client.clientId);\n }\n }\n\n _this._topicObservers[\"delete\"](t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n\n var alias = _this._topicAlias.get(topic);\n\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2),\n origKey = _b[0],\n val = _b[1];\n\n return obj[alias || origKey] = val, obj;\n }, {});\n return value;\n });\n };\n\n return AWSAppSyncProvider;\n}(MqttOverWSProvider);\n\nexport { AWSAppSyncProvider };","/**\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}","import \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.filter\";\nimport \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/web.dom.iterable\";\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/es6.object.create\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.object.define-properties\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.reduce\";\nimport \"core-js/modules/es6.array.is-array\";\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});","import \"core-js/modules/es6.date.to-iso-string\";\nimport \"core-js/modules/es7.array.includes\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.map\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.create\";\nimport \"core-js/modules/es6.object.set-prototype-of\";\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\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 __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-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\n\nimport Observable from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { Logger, Credentials, Signer, Hub, Constants, USER_AGENT_HEADER, jitteredExponentialRetry, NonRetryableError } from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { CONTROL_MSG } from '../index';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar AMPLIFY_SYMBOL = typeof Symbol !== 'undefined' && typeof Symbol[\"for\"] === 'function' ? Symbol[\"for\"]('amplify_default') : '@@amplify_default';\n\nvar dispatchApiEvent = function dispatchApiEvent(event, data, message) {\n Hub.dispatch('api', {\n event: event,\n data: data,\n message: message\n }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\nvar MAX_DELAY_MS = 5000;\nvar NON_RETRYABLE_CODES = [400, 401, 403];\nvar MESSAGE_TYPES;\n\n(function (MESSAGE_TYPES) {\n /**\n * Client -> Server message.\n * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_INIT\"] = \"connection_init\";\n /**\n * Server -> Client message\n * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ERROR\"] = \"connection_error\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ACK\"] = \"connection_ack\";\n /**\n * Client -> Server message.\n * This message type is for register subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_START\"] = \"start\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n */\n\n MESSAGE_TYPES[\"GQL_START_ACK\"] = \"start_ack\";\n /**\n * Server -> Client message.\n * This message type is for subscription message from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_DATA\"] = \"data\";\n /**\n * Server -> Client message.\n * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_KEEP_ALIVE\"] = \"ka\";\n /**\n * Client -> Server message.\n * This message type is for unregister subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_STOP\"] = \"stop\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n */\n\n MESSAGE_TYPES[\"GQL_COMPLETE\"] = \"complete\";\n /**\n * Server -> Client message.\n * This message type is for sending error messages from AWS AppSync RealTime to the client\n */\n\n MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\n\nvar SUBSCRIPTION_STATUS;\n\n(function (SUBSCRIPTION_STATUS) {\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"PENDING\"] = 0] = \"PENDING\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"CONNECTED\"] = 1] = \"CONNECTED\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"FAILED\"] = 2] = \"FAILED\";\n})(SUBSCRIPTION_STATUS || (SUBSCRIPTION_STATUS = {}));\n\nvar SOCKET_STATUS;\n\n(function (SOCKET_STATUS) {\n SOCKET_STATUS[SOCKET_STATUS[\"CLOSED\"] = 0] = \"CLOSED\";\n SOCKET_STATUS[SOCKET_STATUS[\"READY\"] = 1] = \"READY\";\n SOCKET_STATUS[SOCKET_STATUS[\"CONNECTING\"] = 2] = \"CONNECTING\";\n})(SOCKET_STATUS || (SOCKET_STATUS = {}));\n\nvar AWS_APPSYNC_REALTIME_HEADERS = {\n accept: 'application/json, text/javascript',\n 'content-encoding': 'amz-1.0',\n 'content-type': 'application/json; charset=UTF-8'\n};\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\n\nvar CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\n\nvar START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\n\nvar DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n\nvar AWSAppSyncRealTimeProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n\n function AWSAppSyncRealTimeProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n return _this;\n }\n\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\n };\n\n AWSAppSyncRealTimeProvider.prototype.publish = function (_topics, _msg, _options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!appSyncGraphqlEndpoint) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\"))]\n });\n observer.complete();\n } else {\n var subscriptionId_1 = uuid();\n\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1\n });\n\n return function () {\n return __awaiter(_this, void 0, void 0, function () {\n var subscriptionState, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, 3, 4]); // Waiting that subscription has been connected before trying to unsubscribe\n\n\n return [4\n /*yield*/\n , this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2\n /*return*/\n ];\n }\n\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n } else {\n throw new Error('Subscription never connected');\n }\n\n return [3\n /*break*/\n , 4];\n\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3\n /*break*/\n , 4];\n\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n\n return [7\n /*endfinally*/\n ];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n });\n };\n\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options,\n observer = _a.observer,\n subscriptionId = _a.subscriptionId;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _b, graphql_headers, _c, additionalHeaders, subscriptionState, data, dataString, headerObj, _d, _e, subscriptionMessage, stringToAWSRealTime, err_2, _f, message, subscriptionFailedCallback_1, _g, subscriptionFailedCallback, subscriptionReadyCallback;\n\n var _h;\n\n var _this = this;\n\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _b = options.graphql_headers, graphql_headers = _b === void 0 ? function () {\n return {};\n } : _b, _c = options.additionalHeaders, additionalHeaders = _c === void 0 ? {} : _c;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables\n }; // Having a subscription id map will make it simple to forward messages received\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: subscriptionState,\n startAckTimeoutId: null\n });\n dataString = JSON.stringify(data);\n _d = [{}];\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region\n })];\n\n case 1:\n _e = [__assign.apply(void 0, _d.concat([_j.sent()]))];\n return [4\n /*yield*/\n , graphql_headers()];\n\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _e.concat([_j.sent()])), additionalHeaders]), (_h = {}, _h[USER_AGENT_HEADER] = Constants.userAgent, _h)]);\n subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: __assign({}, headerObj)\n }\n },\n type: MESSAGE_TYPES.GQL_START\n };\n stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n _j.label = 3;\n\n case 3:\n _j.trys.push([3, 5,, 6]);\n\n return [4\n /*yield*/\n , this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region\n })];\n\n case 4:\n _j.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_2 = _j.sent();\n logger.debug({\n err: err_2\n });\n _f = err_2.message, message = _f === void 0 ? '' : _f;\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Connection failed: \" + message))]\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback; // Notify concurrent unsubscription\n\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n\n return [2\n /*return*/\n ];\n\n case 6:\n _g = this.subscriptionObserverMap.get(subscriptionId), subscriptionFailedCallback = _g.subscriptionFailedCallback, subscriptionReadyCallback = _g.subscriptionReadyCallback; // This must be done before sending the message in order to be listening immediately\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT)\n });\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n return [2\n /*return*/\n ];\n }\n });\n });\n }; // Waiting that subscription has been connected before trying to unsubscribe\n\n\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionState;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n subscriptionState = this.subscriptionObserverMap.get(subscriptionId).subscriptionState; // This in case unsubscribe is invoked before sending start subscription message\n\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2\n /*return*/\n , new Promise(function (res, rej) {\n var _a = _this.subscriptionObserverMap.get(subscriptionId),\n observer = _a.observer,\n subscriptionState = _a.subscriptionState,\n variables = _a.variables,\n query = _a.query;\n\n _this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej\n });\n })];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN && this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n var unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP\n };\n var stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n } catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({\n err: err\n });\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap[\"delete\"](subscriptionId); // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n } else {\n logger.debug('closing WebSocket...');\n clearTimeout(this.keepAliveTimeoutId);\n var tempSocket = this.awsRealTimeSocket; // Cleaning callbacks to avoid race condition, socket still exists\n\n tempSocket.onclose = undefined;\n tempSocket.onerror = undefined;\n tempSocket.close(1000);\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n\n var _a = JSON.parse(message.data),\n _b = _a.id,\n id = _b === void 0 ? '' : _b,\n payload = _a.payload,\n type = _a.type;\n\n var _c = this.subscriptionObserverMap.get(id) || {},\n _d = _c.observer,\n observer = _d === void 0 ? null : _d,\n _e = _c.query,\n query = _e === void 0 ? '' : _e,\n _f = _c.variables,\n variables = _f === void 0 ? {} : _f,\n startAckTimeoutId = _c.startAckTimeoutId,\n subscriptionReadyCallback = _c.subscriptionReadyCallback,\n subscriptionFailedCallback = _c.subscriptionFailedCallback;\n\n logger.debug({\n id: id,\n observer: observer,\n query: query,\n variables: variables\n });\n\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n } else {\n logger.debug(\"observer not found for id: \" + id);\n }\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({\n query: query,\n variables: variables\n }));\n\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent(CONTROL_MSG.SUBSCRIPTION_ACK, {\n query: query,\n variables: variables\n }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: null,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback\n }); // TODO: emit event on hub but it requires to store the id first\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n clearTimeout(this.keepAliveTimeoutId);\n this.keepAliveTimeoutId = setTimeout(this._errorDisconnect.bind(this, CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: startAckTimeoutId,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n subscriptionState: subscriptionState\n });\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Connection failed: \" + JSON.stringify(payload)))]\n });\n clearTimeout(startAckTimeoutId);\n observer.complete();\n\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._errorDisconnect = function (msg) {\n logger.debug(\"Disconnect error: \" + msg);\n this.subscriptionObserverMap.forEach(function (_a) {\n var observer = _a.observer;\n\n if (!observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))]\n });\n }\n });\n this.subscriptionObserverMap.clear();\n\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.close();\n }\n\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var _a = this.subscriptionObserverMap.get(subscriptionId) || {},\n observer = _a.observer,\n query = _a.query,\n variables = _a.variables;\n\n if (!observer) {\n return;\n }\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED\n });\n\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({\n query: query,\n variables: variables\n })))]\n }); // Cleanup will be automatically executed\n\n observer.complete();\n }\n\n logger.debug('timeoutStartSubscription', JSON.stringify({\n query: query,\n variables: variables\n }));\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n authenticationType = _a.authenticationType,\n apiKey = _a.apiKey,\n region = _a.region;\n\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n\n return new Promise(function (res, rej) {\n return __awaiter(_this, void 0, void 0, function () {\n var protocol, discoverableEndpoint, payloadString, headerString, _a, _b, headerQs, payloadQs, awsRealTimeUrl, err_3;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({\n res: res,\n rej: rej\n });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3\n /*break*/\n , 5];\n _c.label = 1;\n\n case 1:\n _c.trys.push([1, 4,, 5]);\n\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = appSyncGraphqlEndpoint.replace('https://', protocol).replace('http://', protocol).replace('appsync-api', 'appsync-realtime-api').replace('gogi-beta', 'grt-beta');\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region\n })];\n\n case 2:\n headerString = _b.apply(_a, [_c.sent()]);\n headerQs = Buffer.from(headerString).toString('base64');\n payloadQs = Buffer.from(payloadString).toString('base64');\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4\n /*yield*/\n , this._initializeRetryableHandshake({\n awsRealTimeUrl: awsRealTimeUrl\n })];\n\n case 3:\n _c.sent();\n\n this.promiseArray.forEach(function (_a) {\n var res = _a.res;\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_3 = _c.sent();\n this.promiseArray.forEach(function (_a) {\n var rej = _a.rej;\n return rej(err_3);\n });\n this.promiseArray = [];\n\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n throw err_3;\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4\n /*yield*/\n , jitteredExponentialRetry(this._initializeHandshake.bind(this), [{\n awsRealTimeUrl: awsRealTimeUrl\n }], MAX_DELAY_MS)];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n var err_4, errorType, errorCode;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n\n case 1:\n _b.trys.push([1, 4,, 5]);\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var newSocket = new WebSocket(awsRealTimeUrl, 'graphql-ws');\n\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n\n newSocket.onclose = function () {\n rej(new Error('Connection handshake error'));\n };\n\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n }()];\n\n case 2:\n _b.sent(); // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var ackOk = false;\n\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\n };\n\n _this.awsRealTimeSocket.onmessage = function (message) {\n logger.debug(\"subscription message from AWS AppSyncRealTime: \" + message.data + \" \");\n var data = JSON.parse(message.data);\n var type = data.type,\n _a = data.payload,\n _b = (_a === void 0 ? {} : _a).connectionTimeoutMs,\n connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage = _this._handleIncomingSubscriptionMessage.bind(_this);\n\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload,\n _d = (_c === void 0 ? {} : _c).errors,\n _e = __read(_d === void 0 ? [] : _d, 1),\n _f = _e[0],\n _g = _f === void 0 ? {} : _f,\n _h = _g.errorType,\n errorType = _h === void 0 ? '' : _h,\n _j = _g.errorCode,\n errorCode = _j === void 0 ? 0 : _j;\n\n rej({\n errorType: errorType,\n errorCode: errorCode\n });\n }\n };\n\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT\n };\n\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n\n function checkAckOk() {\n if (!ackOk) {\n rej(new Error(\"Connection timeout: ack from AWSRealTime was not received on \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n }\n\n setTimeout(checkAckOk.bind(_this), CONNECTION_INIT_TIMEOUT);\n });\n }()];\n\n case 3:\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n _b.sent();\n\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_4 = _b.sent();\n errorType = err_4.errorType, errorCode = err_4.errorCode;\n\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n } else if (errorType) {\n throw new Error(errorType);\n } else {\n throw err_4;\n }\n\n return [3\n /*break*/\n , 5];\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType,\n payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n apiKey = _a.apiKey,\n region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var headerHandler, handler, host, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n headerHandler = {\n API_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n AWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n OPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n AMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this)\n };\n handler = headerHandler[authenticationType];\n\n if (typeof handler !== 'function') {\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2\n /*return*/\n , ''];\n }\n\n host = url.parse(appSyncGraphqlEndpoint).host;\n return [4\n /*yield*/\n , handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host\n })];\n\n case 1:\n result = _b.sent();\n return [2\n /*return*/\n , result];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeCUPHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var session;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Auth.currentSession()];\n\n case 1:\n session = _b.sent();\n return [2\n /*return*/\n , {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeOPENIDHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var federatedInfo;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 1:\n federatedInfo = _b.sent();\n\n if (!federatedInfo || !federatedInfo.token) {\n throw new Error('No federated jwt');\n }\n\n return [2\n /*return*/\n , {\n Authorization: federatedInfo.token,\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey,\n host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var dt, dtStr;\n return __generator(this, function (_b) {\n dt = new Date();\n dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return [2\n /*return*/\n , {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey\n }];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var endpointInfo, credentialsOK, creds, request, signed_params;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpointInfo = {\n region: region,\n service: 'appsync'\n };\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 1:\n credentialsOK = _b.sent();\n\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n\n return [4\n /*yield*/\n , Credentials.get().then(function (credentials) {\n return {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken\n };\n })];\n\n case 2:\n creds = _b.sent();\n request = {\n url: \"\" + appSyncGraphqlEndpoint + canonicalUri,\n data: payload,\n method: 'POST',\n headers: __assign({}, AWS_APPSYNC_REALTIME_HEADERS)\n };\n signed_params = Signer.sign(request, creds, endpointInfo);\n return [2\n /*return*/\n , signed_params.headers];\n }\n });\n });\n };\n /**\n * @private\n */\n\n\n AWSAppSyncRealTimeProvider.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 AWSAppSyncRealTimeProvider', cred);\n return true;\n })[\"catch\"](function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider);\n\nexport { AWSAppSyncRealTimeProvider };","import \"core-js/modules/es6.array.for-each\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.string.iterator\";\nimport \"core-js/modules/es6.array.find\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.object.assign\";\nimport \"core-js/modules/es6.object.define-property\";\nimport \"core-js/modules/es6.function.bind\";\nimport \"core-js/modules/es7.symbol.async-iterator\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.promise\";\nimport \"core-js/modules/es6.object.to-string\";\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/*\n * Copyright 2017-2018 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// import '../Common/Polyfills';\n\n\nimport Observable from 'zen-observable-ts';\nimport { Amplify, ConsoleLogger as Logger, INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER } from '@aws-amplify/core';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\nvar logger = new Logger('PubSub');\n\nvar PubSubClass =\n/** @class */\nfunction () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSubClass(options) {\n this._options = options;\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n Amplify.register(this);\n }\n\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncRealTimeProvider\", {\n /**\n * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\n });\n\n PubSubClass.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n\n\n PubSubClass.prototype.configure = function (options) {\n var _this = this;\n\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', {\n opt: opt\n });\n this._options = Object.assign({}, this._options, opt);\n\n this._pluggables.map(function (pluggable) {\n return pluggable.configure(_this._options);\n });\n\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n\n\n PubSubClass.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n\n config = pluggable.configure(this._options);\n return [2\n /*return*/\n , config];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n\n return this._pluggables.find(function (pluggable) {\n return pluggable.getProviderName() === providerName;\n });\n };\n\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n var providerName = options.provider;\n\n if (!providerName) {\n return this._pluggables;\n }\n\n var provider = this.getProviderByName(providerName);\n\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n\n return [provider];\n };\n\n PubSubClass.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n\n PubSubClass.prototype.subscribe = function (topics, options) {\n logger.debug('subscribe options', options);\n var providers = this.getProviders(options);\n return new Observable(function (observer) {\n var observables = providers.map(function (provider) {\n return {\n provider: provider,\n observable: provider.subscribe(topics, options)\n };\n });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider,\n observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function next(value) {\n return observer.next({\n provider: provider,\n value: value\n });\n },\n error: function error(_error) {\n return observer.error({\n provider: provider,\n error: _error\n });\n }\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) {\n return subscription.unsubscribe();\n });\n };\n });\n };\n\n return PubSubClass;\n}();\n\nexport { PubSubClass };\nexport var PubSub = new PubSubClass(null);","'use strict';\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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');","import \"core-js/modules/es6.regexp.search\";\nimport \"core-js/modules/es6.date.to-iso-string\";\nimport \"core-js/modules/es6.regexp.match\";\nimport \"core-js/modules/es6.string.trim\";\nimport \"core-js/modules/web.dom.iterable\";\nimport \"core-js/modules/es6.array.iterator\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.array.map\";\nimport \"core-js/modules/es6.array.sort\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.date.to-string\";\nimport \"core-js/modules/es6.object.to-string\";\nimport \"core-js/modules/es6.regexp.replace\";\nimport \"core-js/modules/es6.symbol\";\nimport \"core-js/modules/es6.array.index-of\";\nimport \"core-js/modules/es6.object.assign\";\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 __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 } from './Logger';\nimport { Sha256 as jsSha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { parse, format } from 'url';\nimport { DateUtils } from './Util';\nvar logger = new Logger('Signer');\nvar DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\n\nvar encrypt = function encrypt(key, src) {\n var hash = new jsSha256(key);\n hash.update(src);\n return hash.digestSync();\n};\n\nvar hash = function hash(src) {\n var arg = src || '';\n var hash = new jsSha256();\n hash.update(arg);\n return toHex(hash.digestSync());\n};\n/**\n * @private\n * RFC 3986 compliant version of encodeURIComponent\n */\n\n\nvar escape_RFC3986 = function escape_RFC3986(component) {\n return component.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n};\n/**\n * @private\n * Create canonical query string\n *\n */\n\n\nvar canonical_query = function canonical_query(query) {\n if (!query || query.length === 0) {\n return '';\n }\n\n return query.split('&').map(function (e) {\n var key_val = e.split('=');\n\n if (key_val.length === 1) {\n return e;\n } else {\n var reencoded_val = escape_RFC3986(key_val[1]);\n return key_val[0] + '=' + reencoded_val;\n }\n }).sort(function (a, b) {\n var key_a = a.split('=')[0];\n var key_b = b.split('=')[0];\n\n if (key_a === key_b) {\n return a < b ? -1 : 1;\n } else {\n return key_a < key_b ? -1 : 1;\n }\n }).join('&');\n};\n/**\n* @private\n* Create canonical headers\n*\n
\nCanonicalHeaders =\n    CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN\nCanonicalHeadersEntry =\n    Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\\n'\n
\n*/\n\n\nvar canonical_headers = function canonical_headers(headers) {\n if (!headers || Object.keys(headers).length === 0) {\n return '';\n }\n\n return Object.keys(headers).map(function (key) {\n return {\n key: key.toLowerCase(),\n value: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : ''\n };\n }).sort(function (a, b) {\n return a.key < b.key ? -1 : 1;\n }).map(function (item) {\n return item.key + ':' + item.value;\n }).join('\\n') + '\\n';\n};\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\n\n\nvar signed_headers = function signed_headers(headers) {\n return Object.keys(headers).map(function (key) {\n return key.toLowerCase();\n }).sort().join(';');\n};\n/**\n* @private\n* Create canonical request\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}\n*\n
\nCanonicalRequest =\n    HTTPRequestMethod + '\\n' +\n    CanonicalURI + '\\n' +\n    CanonicalQueryString + '\\n' +\n    CanonicalHeaders + '\\n' +\n    SignedHeaders + '\\n' +\n    HexEncode(Hash(RequestPayload))\n
\n*/\n\n\nvar canonical_request = function canonical_request(request) {\n var url_info = parse(request.url);\n return [request.method || '/', encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'), canonical_query(url_info.query), canonical_headers(request.headers), signed_headers(request.headers), hash(request.data)].join('\\n');\n};\n\nvar parse_service_info = function parse_service_info(request) {\n var url_info = parse(request.url),\n host = url_info.host;\n var matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n var parsed = (matched || []).slice(1, 3);\n\n if (parsed[1] === 'es') {\n // Elastic Search\n parsed = parsed.reverse();\n }\n\n return {\n service: request.service || parsed[0],\n region: request.region || parsed[1]\n };\n};\n\nvar credential_scope = function credential_scope(d_str, region, service) {\n return [d_str, region, service, 'aws4_request'].join('/');\n};\n/**\n* @private\n* Create a string to sign\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}\n*\n
\nStringToSign =\n    Algorithm + \\n +\n    RequestDateTime + \\n +\n    CredentialScope + \\n +\n    HashedCanonicalRequest\n
\n*/\n\n\nvar string_to_sign = function string_to_sign(algorithm, canonical_request, dt_str, scope) {\n return [algorithm, dt_str, scope, hash(canonical_request)].join('\\n');\n};\n/**\n* @private\n* Create signing key\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}\n*\n
\nkSecret = your secret access key\nkDate = HMAC(\"AWS4\" + kSecret, Date)\nkRegion = HMAC(kDate, Region)\nkService = HMAC(kRegion, Service)\nkSigning = HMAC(kService, \"aws4_request\")\n
\n*/\n\n\nvar get_signing_key = function get_signing_key(secret_key, d_str, service_info) {\n logger.debug(service_info);\n var k = 'AWS4' + secret_key,\n k_date = encrypt(k, d_str),\n k_region = encrypt(k_date, service_info.region),\n k_service = encrypt(k_region, service_info.service),\n k_signing = encrypt(k_service, 'aws4_request');\n return k_signing;\n};\n\nvar get_signature = function get_signature(signing_key, str_to_sign) {\n return toHex(encrypt(signing_key, str_to_sign));\n};\n/**\n * @private\n * Create authorization header\n * Refer to\n * {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}\n */\n\n\nvar get_authorization_header = function get_authorization_header(algorithm, access_key, scope, signed_headers, signature) {\n return [algorithm + ' ' + 'Credential=' + access_key + '/' + scope, 'SignedHeaders=' + signed_headers, 'Signature=' + signature].join(', ');\n};\n\nvar Signer =\n/** @class */\nfunction () {\n function Signer() {}\n /**\n * Sign a HTTP request, add 'Authorization' header to request param\n * @method sign\n * @memberof Signer\n * @static\n *\n * @param {object} request - HTTP request object\n
\n  request: {\n      method: GET | POST | PUT ...\n      url: ...,\n      headers: {\n          header1: ...\n      },\n      data: data\n  }\n  
\n * @param {object} access_info - AWS access credential info\n
\n  access_info: {\n      access_key: ...,\n      secret_key: ...,\n      session_token: ...\n  }\n  
\n * @param {object} [service_info] - AWS service type and region, optional,\n * if not provided then parse out from url\n
\n  service_info: {\n      service: ...,\n      region: ...\n  }\n  
\n *\n * @returns {object} Signed HTTP request\n */\n\n\n Signer.sign = function (request, access_info, service_info) {\n if (service_info === void 0) {\n service_info = null;\n }\n\n request.headers = request.headers || {}; // datetime string and date string\n\n var dt = DateUtils.getDateWithClockOffset(),\n dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''),\n d_str = dt_str.substr(0, 8);\n var url_info = parse(request.url);\n request.headers['host'] = url_info.host;\n request.headers['x-amz-date'] = dt_str;\n\n if (access_info.session_token) {\n request.headers['X-Amz-Security-Token'] = access_info.session_token;\n } // Task 1: Create a Canonical Request\n\n\n var request_str = canonical_request(request);\n logger.debug(request_str); // Task 2: Create a String to Sign\n\n var serviceInfo = service_info || parse_service_info(request),\n scope = credential_scope(d_str, serviceInfo.region, serviceInfo.service),\n str_to_sign = string_to_sign(DEFAULT_ALGORITHM, request_str, dt_str, scope); // Task 3: Calculate the Signature\n\n var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo),\n signature = get_signature(signing_key, str_to_sign); // Task 4: Adding the Signing information to the Request\n\n var authorization_header = get_authorization_header(DEFAULT_ALGORITHM, access_info.access_key, scope, signed_headers(request.headers), signature);\n request.headers['Authorization'] = authorization_header;\n return request;\n };\n\n Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {\n var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n var now = DateUtils.getDateWithClockOffset().toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8); // Intentionally discarding search\n\n var _a = parse(urlToSign, true, true),\n search = _a.search,\n parsedUrl = __rest(_a, [\"search\"]);\n\n var host = parsedUrl.host;\n var signedHeaders = {\n host: host\n };\n\n var _b = serviceInfo || parse_service_info({\n url: format(parsedUrl)\n }),\n region = _b.region,\n service = _b.service;\n\n var credentialScope = credential_scope(today, region, service); // IoT service does not allow the session token in the canonical request\n // https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n\n var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;\n\n var queryParams = __assign(__assign(__assign({\n 'X-Amz-Algorithm': DEFAULT_ALGORITHM,\n 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'),\n 'X-Amz-Date': now.substr(0, 16)\n }, sessionTokenRequired ? {\n 'X-Amz-Security-Token': \"\" + accessInfo.session_token\n } : {}), expiration ? {\n 'X-Amz-Expires': \"\" + expiration\n } : {}), {\n 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',')\n });\n\n var canonicalRequest = canonical_request({\n method: method,\n url: format(__assign(__assign({}, parsedUrl), {\n query: __assign(__assign({}, parsedUrl.query), queryParams)\n })),\n headers: signedHeaders,\n data: body\n });\n var stringToSign = string_to_sign(DEFAULT_ALGORITHM, canonicalRequest, now, credentialScope);\n var signing_key = get_signing_key(accessInfo.secret_key, today, {\n region: region,\n service: service\n });\n var signature = get_signature(signing_key, stringToSign);\n\n var additionalQueryParams = __assign({\n 'X-Amz-Signature': signature\n }, accessInfo.session_token && {\n 'X-Amz-Security-Token': accessInfo.session_token\n });\n\n var result = format({\n protocol: parsedUrl.protocol,\n slashes: true,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n pathname: parsedUrl.pathname,\n query: __assign(__assign(__assign({}, parsedUrl.query), queryParams), additionalQueryParams)\n });\n return result;\n };\n\n return Signer;\n}();\n\nexport { Signer };\n/**\n * @deprecated use per-function import\n */\n\nexport default Signer;","'use strict';\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\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\nrequire(\"core-js/modules/es6.array.for-each\");\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/uuidjs/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\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\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;","/* tslint:disable */\n/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nimport * as APITypes from \"../API\";\ntype GeneratedQuery = string & {\n __generatedQueryInput: InputType;\n __generatedQueryOutput: OutputType;\n};\n\nexport const getShow = /* GraphQL */ `query GetShow($id: ID!) {\n getShow(id: $id) {\n id\n name\n version\n owner\n createdAt\n updatedAt\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listShows = /* GraphQL */ `query ListShows(\n $filter: ModelShowFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShows(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n version\n owner\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery;\nexport const getShowSetting = /* GraphQL */ `query GetShowSetting($id: ID!) {\n getShowSetting(id: $id) {\n id\n name\n title\n description\n slug\n startDateTime\n endDateTime\n status\n owner\n showID\n version\n createdAt\n updatedAt\n ogpImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetShowSettingQueryVariables,\n APITypes.GetShowSettingQuery\n>;\nexport const listShowSettings = /* GraphQL */ `query ListShowSettings(\n $filter: ModelShowSettingFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShowSettings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n title\n description\n slug\n startDateTime\n endDateTime\n status\n owner\n showID\n version\n createdAt\n updatedAt\n ogpImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListShowSettingsQueryVariables,\n APITypes.ListShowSettingsQuery\n>;\nexport const getShowMain = /* GraphQL */ `query GetShowMain($id: ID!) {\n getShowMain(id: $id) {\n id\n title\n mapDiscription\n logoDiscription\n discription\n section\n status\n showID\n search\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetShowMainQueryVariables,\n APITypes.GetShowMainQuery\n>;\nexport const listShowMains = /* GraphQL */ `query ListShowMains(\n $filter: ModelShowMainFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShowMains(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n title\n mapDiscription\n logoDiscription\n discription\n section\n status\n showID\n search\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListShowMainsQueryVariables,\n APITypes.ListShowMainsQuery\n>;\nexport const getTeaser = /* GraphQL */ `query GetTeaser($id: ID!) {\n getTeaser(id: $id) {\n id\n title\n discription\n countDown\n section\n status\n showID\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listTeasers = /* GraphQL */ `query ListTeasers(\n $filter: ModelTeaserFilterInput\n $limit: Int\n $nextToken: String\n) {\n listTeasers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n title\n discription\n countDown\n section\n status\n showID\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListTeasersQueryVariables,\n APITypes.ListTeasersQuery\n>;\nexport const getPage = /* GraphQL */ `query GetPage($id: ID!) {\n getPage(id: $id) {\n id\n root\n slug\n title\n discription\n contents\n status\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listPages = /* GraphQL */ `query ListPages(\n $filter: ModelPageFilterInput\n $limit: Int\n $nextToken: String\n) {\n listPages(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n root\n slug\n title\n discription\n contents\n status\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery;\nexport const getTopPage = /* GraphQL */ `query GetTopPage($id: ID!) {\n getTopPage(id: $id) {\n id\n title\n discription\n contents\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetTopPageQueryVariables,\n APITypes.GetTopPageQuery\n>;\nexport const listTopPages = /* GraphQL */ `query ListTopPages(\n $filter: ModelTopPageFilterInput\n $limit: Int\n $nextToken: String\n) {\n listTopPages(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n title\n discription\n contents\n owner\n version\n createdAt\n updatedAt\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListTopPagesQueryVariables,\n APITypes.ListTopPagesQuery\n>;\nexport const getShowBooth = /* GraphQL */ `query GetShowBooth($id: ID!) {\n getShowBooth(id: $id) {\n id\n name\n title\n discription\n section\n priority\n status\n showID\n owner\n version\n createdAt\n updatedAt\n brandLogos {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n phot {\n id\n alternate\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetShowBoothQueryVariables,\n APITypes.GetShowBoothQuery\n>;\nexport const listShowBooths = /* GraphQL */ `query ListShowBooths(\n $filter: ModelShowBoothFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShowBooths(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n title\n discription\n section\n priority\n status\n showID\n owner\n version\n createdAt\n updatedAt\n brandLogos {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n backgroundImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListShowBoothsQueryVariables,\n APITypes.ListShowBoothsQuery\n>;\nexport const getShowBoothItem = /* GraphQL */ `query GetShowBoothItem($id: ID!) {\n getShowBoothItem(id: $id) {\n id\n name\n title\n readingName\n description\n keyword\n movie\n brand\n price\n boatType\n height\n capacity\n view360\n section\n productUrl\n mapPriority\n badge\n status\n boothID\n showID\n owner\n version\n priority\n mapIndex\n boothIndex\n boothOrder\n mapOrder\n isExhibition\n createdAt\n updatedAt\n photoGallery {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n phot {\n id\n alternate\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n mainImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n logo {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n mapIcon {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n thumbnail {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetShowBoothItemQueryVariables,\n APITypes.GetShowBoothItemQuery\n>;\nexport const listShowBoothItems = /* GraphQL */ `query ListShowBoothItems(\n $filter: ModelShowBoothItemFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShowBoothItems(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n title\n readingName\n description\n keyword\n movie\n brand\n price\n boatType\n height\n capacity\n view360\n section\n productUrl\n mapPriority\n badge\n status\n boothID\n showID\n owner\n version\n priority\n mapIndex\n boothIndex\n boothOrder\n mapOrder\n isExhibition\n createdAt\n updatedAt\n photoGallery {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n mainImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n logo {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n mapIcon {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n thumbnail {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListShowBoothItemsQueryVariables,\n APITypes.ListShowBoothItemsQuery\n>;\nexport const searchShowBoothItems = /* GraphQL */ `query SearchShowBoothItems(\n $filter: SearchableShowBoothItemFilterInput\n $sort: SearchableShowBoothItemSortInput\n $limit: Int\n $nextToken: String\n $from: Int\n) {\n searchShowBoothItems(\n filter: $filter\n sort: $sort\n limit: $limit\n nextToken: $nextToken\n from: $from\n ) {\n items {\n id\n name\n title\n readingName\n description\n keyword\n movie\n brand\n price\n boatType\n height\n capacity\n view360\n section\n productUrl\n mapPriority\n badge\n status\n boothID\n showID\n owner\n version\n priority\n mapIndex\n boothIndex\n boothOrder\n mapOrder\n isExhibition\n createdAt\n updatedAt\n photoGallery {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n mainImage {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n logo {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n mapIcon {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n thumbnail {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n total\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.SearchShowBoothItemsQueryVariables,\n APITypes.SearchShowBoothItemsQuery\n>;\nexport const getBoothUserInfo = /* GraphQL */ `query GetBoothUserInfo($id: ID!) {\n getBoothUserInfo(id: $id) {\n id\n chatUrl\n chatStatus\n contactTel\n contactTelInfo\n contactEmail\n contactAddress\n web\n facebook\n boothID\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetBoothUserInfoQueryVariables,\n APITypes.GetBoothUserInfoQuery\n>;\nexport const listBoothUserInfos = /* GraphQL */ `query ListBoothUserInfos(\n $filter: ModelBoothUserInfoFilterInput\n $limit: Int\n $nextToken: String\n) {\n listBoothUserInfos(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n chatUrl\n chatStatus\n contactTel\n contactTelInfo\n contactEmail\n contactAddress\n web\n facebook\n boothID\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListBoothUserInfosQueryVariables,\n APITypes.ListBoothUserInfosQuery\n>;\nexport const getAlbum = /* GraphQL */ `query GetAlbum($id: ID!) {\n getAlbum(id: $id) {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n nextToken\n __typename\n }\n __typename\n }\n phot {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listAlbums = /* GraphQL */ `query ListAlbums(\n $filter: ModelAlbumFilterInput\n $limit: Int\n $nextToken: String\n) {\n listAlbums(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n phot {\n id\n alternate\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListAlbumsQueryVariables,\n APITypes.ListAlbumsQuery\n>;\nexport const getBoothBoatType = /* GraphQL */ `query GetBoothBoatType($id: ID!) {\n getBoothBoatType(id: $id) {\n id\n name\n priority\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetBoothBoatTypeQueryVariables,\n APITypes.GetBoothBoatTypeQuery\n>;\nexport const listBoothBoatTypes = /* GraphQL */ `query ListBoothBoatTypes(\n $filter: ModelBoothBoatTypeFilterInput\n $limit: Int\n $nextToken: String\n) {\n listBoothBoatTypes(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n priority\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListBoothBoatTypesQueryVariables,\n APITypes.ListBoothBoatTypesQuery\n>;\nexport const getBoothBoatBrand = /* GraphQL */ `query GetBoothBoatBrand($id: ID!) {\n getBoothBoatBrand(id: $id) {\n id\n name\n priority\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetBoothBoatBrandQueryVariables,\n APITypes.GetBoothBoatBrandQuery\n>;\nexport const listBoothBoatBrands = /* GraphQL */ `query ListBoothBoatBrands(\n $filter: ModelBoothBoatBrandFilterInput\n $limit: Int\n $nextToken: String\n) {\n listBoothBoatBrands(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n priority\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListBoothBoatBrandsQueryVariables,\n APITypes.ListBoothBoatBrandsQuery\n>;\nexport const getAlbumPhot = /* GraphQL */ `query GetAlbumPhot($id: ID!) {\n getAlbumPhot(id: $id) {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n phot {\n id\n alternate\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n phot {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetAlbumPhotQueryVariables,\n APITypes.GetAlbumPhotQuery\n>;\nexport const listAlbumPhots = /* GraphQL */ `query ListAlbumPhots(\n $filter: ModelAlbumPhotFilterInput\n $limit: Int\n $nextToken: String\n) {\n listAlbumPhots(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n album {\n id\n name\n owner\n version\n createdAt\n updatedAt\n phots {\n items {\n id\n albumID\n photID\n albumOrder\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n phot {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListAlbumPhotsQueryVariables,\n APITypes.ListAlbumPhotsQuery\n>;\nexport const getImage = /* GraphQL */ `query GetImage($id: ID!) {\n getImage(id: $id) {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listImages = /* GraphQL */ `query ListImages(\n $filter: ModelImageFilterInput\n $limit: Int\n $nextToken: String\n) {\n listImages(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n alternate\n storage {\n bucket\n region\n key\n __typename\n }\n url\n owner\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListImagesQueryVariables,\n APITypes.ListImagesQuery\n>;\nexport const getShowAudience = /* GraphQL */ `query GetShowAudience($id: ID!) {\n getShowAudience(id: $id) {\n id\n showID\n userID\n owner\n version\n createdAt\n updatedAt\n show {\n id\n name\n version\n owner\n createdAt\n updatedAt\n __typename\n }\n users {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.GetShowAudienceQueryVariables,\n APITypes.GetShowAudienceQuery\n>;\nexport const listShowAudiences = /* GraphQL */ `query ListShowAudiences(\n $filter: ModelShowAudienceFilterInput\n $limit: Int\n $nextToken: String\n) {\n listShowAudiences(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n showID\n userID\n owner\n version\n createdAt\n updatedAt\n show {\n id\n name\n version\n owner\n createdAt\n updatedAt\n __typename\n }\n users {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListShowAudiencesQueryVariables,\n APITypes.ListShowAudiencesQuery\n>;\nexport const getUser = /* GraphQL */ `query GetUser($identity_id: ID!) {\n getUser(identity_id: $identity_id) {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n nextToken\n __typename\n }\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listUsers = /* GraphQL */ `query ListUsers(\n $identity_id: ID\n $filter: ModelUserFilterInput\n $limit: Int\n $nextToken: String\n $sortDirection: ModelSortDirection\n) {\n listUsers(\n identity_id: $identity_id\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n sortDirection: $sortDirection\n ) {\n items {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery;\nexport const getTicket = /* GraphQL */ `query GetTicket($id: ID!) {\n getTicket(id: $id) {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n __typename\n }\n}\n` as GeneratedQuery;\nexport const listTickets = /* GraphQL */ `query ListTickets(\n $filter: ModelTicketFilterInput\n $limit: Int\n $nextToken: String\n) {\n listTickets(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n activatedUser {\n id\n identity_id\n email\n group\n version\n createdAt\n updatedAt\n tickets {\n items {\n id\n status\n group\n version\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n __typename\n }\n __typename\n }\n nextToken\n __typename\n }\n}\n` as GeneratedQuery<\n APITypes.ListTicketsQueryVariables,\n APITypes.ListTicketsQuery\n>;\n","'use strict';\n\nrequire(\"core-js/modules/es6.array.for-each\");\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\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\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":""}