{"version":3,"sources":["webpack:///./node_modules/@aws-amplify/auth/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/constants.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/build/jsSha256.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/I18n/I18n.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/I18n/index.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/build/index.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/build/RawSha256.js","webpack:///../../../src/components/VGrid/VSpacer.ts","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/axios.js","webpack:///./node_modules/zen-observable-ts/node_modules/zen-observable/index.js","webpack:///./node_modules/paho-mqtt/paho-mqtt.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/@aws-amplify/core/node_modules/tslib/tslib.es6.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/spread.js","webpack:///../../../src/components/VSlider/VSlider.ts","webpack:///../../../src/components/VSlider/index.ts","webpack:///../../../src/components/VRangeSlider/VRangeSlider.ts","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/dist/es/pureJs.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/dist/es/whatwgEncodingApi.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-sdk/util-utf8-browser/dist/es/index.js","webpack:///./node_modules/zen-observable-ts/lib/bundle.esm.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/Utils/CacheUtils.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/BrowserStorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/utils.js","webpack:///../../../src/components/VCard/index.ts","webpack:///./node_modules/@aws-amplify/api-rest/lib-esm/RestClient.js","webpack:///./node_modules/@aws-amplify/api-rest/lib-esm/RestAPI.js","webpack:///./node_modules/graphql/jsutils/isObjectLike.mjs","webpack:///./node_modules/graphql/polyfills/symbols.mjs","webpack:///./node_modules/graphql/language/location.mjs","webpack:///./node_modules/graphql/language/printLocation.mjs","webpack:///./node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/graphql/jsutils/nodejsCustomInspectSymbol.mjs","webpack:///./node_modules/graphql/jsutils/defineInspect.mjs","webpack:///./node_modules/graphql/language/ast.mjs","webpack:///./node_modules/graphql/language/tokenKind.mjs","webpack:///./node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/graphql/jsutils/devAssert.mjs","webpack:///./node_modules/graphql/jsutils/instanceOf.mjs","webpack:///./node_modules/graphql/language/source.mjs","webpack:///./node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/graphql/language/blockString.mjs","webpack:///./node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/graphql/language/parser.mjs","webpack:///./node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/types/index.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/Reachability.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/constants.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/utils/ReachabilityMonitor/index.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/utils/ConnectionStateMonitor.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncRealTimeProvider/index.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/PubSub.js","webpack:///./node_modules/@aws-amplify/api-graphql/lib-esm/types/index.js","webpack:///./node_modules/@aws-amplify/api-graphql/lib-esm/GraphQLAPI.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/API.js","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VTextarea/VTextarea.ts","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/index.js","webpack:///./node_modules/zen-observable-ts/node_modules/zen-observable/lib/Observable.js","webpack:///../../../src/components/VBtn/index.ts","webpack:///../../../src/components/VCard/VCard.ts","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/env/data.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Signer.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/defaults.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/@aws-amplify/core/node_modules/@aws-crypto/sha256-js/build/constants.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/DateUtils.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/combineURLs.js"],"names":["hasSymbol","Symbol","for","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","USER_AGENT_HEADER","Object","defineProperty","exports","value","tslib_1","constants_1","RawSha256_1","util_utf8_browser_1","Sha256","secret","this","hash","RawSha256","outer","inner","bufferFromSecret","Uint8Array","BLOCK_SIZE","set","i","update","byteLength","prototype","toHash","isEmptyData","error","convertToBuffer","e","digestSync","finished","digest","__awaiter","__generator","_a","input","bufferHash","buffer","data","length","fromUtf8","ArrayBuffer","isView","byteOffset","BYTES_PER_ELEMENT","utils","module","isStandardBrowserEnv","originURL","msie","test","navigator","userAgent","urlParsingNode","document","createElement","resolveURL","url","href","setAttribute","protocol","replace","host","search","hostname","port","pathname","charAt","window","location","requestURL","parsed","isString","ignoreDuplicateOf","headers","key","val","forEach","split","line","indexOf","trim","substr","toLowerCase","concat","logger","I18n","options","_options","_lang","_dict","assign","language","debug","setLanguage","lang","get","defVal","undefined","getByLanguage","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","_this","keys","map","_config","_i18n","configure","config","createInstance","getModuleName","checkConfig","Amplify","register","Constants","Platform","Cancel","CancelToken","executor","TypeError","resolvePromise","promise","Promise","resolve","token","then","cancel","_listeners","l","onfulfilled","_resolve","subscribe","unsubscribe","message","reason","throwIfRequested","listener","push","index","splice","source","c","toString","__CANCEL__","__exportStar","InterceptorManager","handlers","use","fulfilled","rejected","synchronous","runWhen","eject","id","fn","h","state","Int32Array","from","INIT","temp","bufferLength","bytesHashed","Error","position","MAX_HASHABLE_LENGTH","hashBuffer","bitsHashed","bufferView","DataView","undecoratedLength","setUint8","setUint32","Math","floor","out","DIGEST_LENGTH","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","KEY","t2","createSimpleFunctional","bind","Axios","mergeConfig","defaults","defaultConfig","context","instance","request","extend","create","instanceConfig","axios","isCancel","VERSION","version","all","promises","spread","isAxiosError","default","Observable","root","factory","PahoMQTT","global","localStorage","setItem","item","getItem","removeItem","MESSAGE_TYPE","CONNECT","CONNACK","PUBLISH","PUBACK","PUBREC","PUBREL","PUBCOMP","SUBSCRIBE","SUBACK","UNSUBSCRIBE","UNSUBACK","PINGREQ","PINGRESP","DISCONNECT","validate","obj","hasOwnProperty","errorStr","validKey","format","ERROR","INVALID_TYPE","scope","f","apply","arguments","OK","code","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","name","decodeMessage","pos","digit","startingPos","first","messageInfo","remLength","multiplier","endPos","wireMessage","connectAcknowledgeFlags","sessionPresent","returnCode","qos","len","readUint16","topicName","parseUTF8","messageIdentifier","Message","subarray","retained","duplicate","destinationName","payloadMessage","writeUint16","offset","writeString","utf8Length","stringToUTF8","encodeMBI","number","output","Array","numBytes","UTF8Length","charCode","charCodeAt","lowCharCode","isNaN","utf16","byte1","byte2","byte3","byte4","String","fromCharCode","encode","willMessagePayloadBytes","topicStrLength","destinationNameLength","mqttVersion","clientId","willMessage","payloadBytes","userName","password","topics","requestedQos","mbi","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","client","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","send","timeout","setTimeout","_disconnected","reset","clearTimeout","Timeout","timeoutSeconds","action","args","ClientImpl","uri","path","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","filter","subscribeOptions","constructor","onSuccess","grantedQos","invocationContext","onFailure","errorCode","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribeOptions","callback","messageCount","sequence","unshift","disconnect","getTraceLog","Date","startTrace","stopTrace","wsurl","useSSL","uriParts","join","binaryType","onopen","_on_socket_open","onmessage","_on_socket_message","onerror","_on_socket_error","onclose","_on_socket_close","_process_queue","store","prefix","storedMessage","pubRecReceived","hex","messageBytes","payloadHex","JSON","stringify","parse","x","parseInt","pop","_socket_send","event","messages","_deframeMessages","_handleMessage","byteArray","newData","result","errorStack","stack","sentMessage","receivedMessage","sequencedMessages","msgId","msg","sort","a","b","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","readyState","close","mqttVersionExplicit","slice","call","record","severity","max","shift","traceObject","masked","traceObjectMasked","attr","Client","match","ipv6AddSBracket","clientIdLength","defineProperties","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","trace","hosts","ports","stringPayload","usingURIs","ipv6","topic","payload","publish","isConnected","newPayload","enumerable","newDestinationName","newQos","newRetained","newTopic","newDuplicate","self","write","expires","domain","secure","cookie","encodeURIComponent","isNumber","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildURL","dispatchRequest","validator","validators","interceptors","response","configOrUrl","method","transitional","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","clarifyTimeoutError","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","onFulfilled","onRejected","reject","getUri","params","paramsSerializer","transformData","throwIfCancellationRequested","cancelToken","signal","aborted","transformRequest","merge","common","adapter","transformResponse","extendStatics","d","setPrototypeOf","__proto__","p","__extends","__","__assign","t","s","n","__rest","getOwnPropertySymbols","propertyIsEnumerable","__decorate","decorators","target","desc","r","getOwnPropertyDescriptor","Reflect","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","adopt","step","next","done","body","y","g","_","label","sent","trys","ops","verb","iterator","v","op","__createBinding","o","m","k","k2","__values","__read","ar","__spread","__spreadArrays","il","j","jl","__await","__asyncGenerator","asyncIterator","q","resume","settle","fulfill","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","raw","__importStar","mod","__esModule","__importDefault","__classPrivateFieldGet","receiver","privateMap","has","__classPrivateFieldSet","arr","mixins","VInput","Loadable","directives","ClickOutside","props","disabled","Boolean","inverseLabel","Number","min","thumbColor","thumbLabel","thumbSize","tickLabels","ticks","tickSize","trackColor","trackFillColor","vertical","app","oldValue","thumbPressed","mouseTimeout","isFocused","isActive","noClick","startOffset","computed","classes","internalValue","lazyValue","minValue","roundValue","maxValue","$emit","trackTransition","showTicks","stepNumeric","parseFloat","inputWidth","trackFillStyles","startDir","endDir","valueDir","$vuetify","rtl","end","isDisabled","transition","trackStyles","numTicks","ceil","showThumbLabel","$scopedSlots","computedTrackColor","isDark","validationState","computedTrackFillColor","computedColor","computedThumbColor","watch","handler","beforeMount","mounted","querySelector","consoleWarn","methods","genDefaultSlot","children","genLabel","slider","genSlider","genProgress","$createElement","class","isReadonly","themeClasses","onBlur","on","click","onSliderClick","mousedown","onSliderMouseDown","touchstart","genChildren","genInput","genTrackContainer","genSteps","genThumbContainer","onFocus","attrs","computedId","readonly","tabindex","$attrs","setBackgroundColor","staticClass","style","ref","range","createRange","direction","offsetDirection","reverse","width","filled","height","valueWidth","genThumb","thumbLabelContent","genThumbLabelContent","genThumbLabel","setTextColor","getThumbContainerStyles","role","focus","blur","keydown","onKeyDown","content","size","convertToUnit","transform","VScaleTransition","origin","preventDefault","_e$target","matches","domRect","getBoundingClientRect","touch","touches","clientY","top","clientX","left","mouseUpOptions","passiveSupported","passive","capture","mouseMoveOptions","isTouchEvent","onMouseMove","addEventListener","addOnceEventListener","onSliderMouseUp","stopPropagation","removeEventListener","deepEqual","parseMouseMove","isInteractive","parseKeyDown","thumb","$refs","trackStart","trackLength","track","clickOffset","clickPos","pageup","pagedown","home","right","down","up","keyCodes","includes","keyCode","steps","increase","shiftKey","ctrlKey","trimmedStep","decimals","newValue","round","toFixed","VSlider","activeThumb","toFocus","el","getTrackStyle","startLength","endLength","startPadding","endPadding","getIndexOfClosestValue","abs","_uid","padding","sections","color","styles","section","reevaluateSelected","refName","thumbRef","setInternalValue","normalizedName","toUpperCase","enhanceError","bytes","surrogatePair","toUtf8","decoded","byte","nextByte","encoded","byteValue","TextEncoder","TextDecoder","decode","serializedParams","isURLSearchParams","parts","isArray","isDate","toISOString","isObject","hashmarkIndex","toJSON","description","fileName","lineNumber","columnNumber","status","keyPrefix","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","storage","StorageHelper","getStorage","getByteLength","str","ret","getCurrTime","currTime","getTime","isInteger","_isInteger","isFinite","CacheObject","clear","StorageCache","cacheCurSizeKey","cacheLimit","fillCacheItem","timestamp","visitedTime","priority","byteSize","warn","Cache","_super","BrowserStorageCacheClass","cacheConfig","_decreaseCurSizeInBytes","amount","curSize","getCacheCurSize","_increaseCurSizeInBytes","_refreshItem","prefixedKey","_isExpired","_removeItem","itemSize","_setItem","setItemErr","_sizeToPop","spaceItemNeed","cacheThresholdSpace","_isCacheFull","_findValidKeys","keyInCache","_popOutItems","sizeToPop","items","remainedSize","log","cacheItemOptions","validKeys","keysToRemove","getAllKeys","BrowserStorageCache","thing","deprecatedWarnings","schema","allowUnknown","opt","formatMessage","opts","console","isUndefined","isBuffer","isArrayBuffer","isFormData","isArrayBufferView","isPlainObject","getPrototypeOf","isFile","isBlob","isFunction","isStream","pipe","product","assignValue","stripBOM","VCardActions","VCardSubtitle","VCardText","VCardTitle","VCard","RestClient","_region","_service","_custom_header","_cancelTokenMap","Credentials","WeakMap","ajax","urlOrApiInfo","init","parsed_url","region","service","custom_header","libraryHeaders","initParams","isAllResponse","custom_header_obj","_b","parsedUrl","_c","_parseUrl","endpoint","responseType","isReactNative","FormData","withCredentials","cancellableToken","signerServiceInfo","query","queryStringParameters","reduce","acc","_request","credentials","_signed","catch","DateUtils","isClockSkewError","dateHeader","date","responseDate","requestDate","getDateFromHeaderString","isClockSkewed","setClockOffset","err","put","patch","post","del","head","hasCancelToken","getCancellableToken","updateRequestToBeCancellable","cancelTokenSource","apiName","cloud_logic_array","endpoints","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","endpointInfo","signed_params","Signer","sign","RestAPIClass","_api","API","otherOptions","custom","header","apiInfo","getEndpointInfo","responsePromise","apiConfig","find","api","RestAPI","_typeof","isObjectLike","SYMBOL_TO_STRING_TAG","toStringTag","getLocation","lineRegexp","column","exec","printLocation","printSourceLocation","sourceLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","locationStr","lines","locationLine","subLineIndex","subLineColumnNum","subLines","printPrefixedLines","subLine","existingLines","_ref","padLen","_ref2","_ref3","leftPad","ownKeys","object","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","configurable","writable","_classCallCheck","Constructor","_defineProperties","descriptor","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Super","_getPrototypeOf","NewTarget","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","_wrapNativeSuper","Class","_cache","Map","_isNativeFunction","Wrapper","_construct","Parent","Function","sham","Proxy","_Error","GraphQLError","nodes","positions","originalError","extensions","_nodeLocations","_nodeLocations2","_nodeLocations3","undefinedIfEmpty","nodeLocations","_i2","_this$nodes","_ref4","loc","locations","originalExtensions","captureStackTrace","printError","array","_i4","_error$nodes2","node","_i6","_error$locations2","syntaxError","Kind","freeze","NAME","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","INT","FLOAT","STRING","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","invariant","condition","booleanCondition","nodejsCustomInspectSymbol","defineInspect","classObject","inspect","Location","startToken","endToken","_proto","Token","kind","prev","_proto2","isNode","maybeNode","TokenKind","SOF","EOF","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","BLOCK_STRING","COMMENT","MAX_ARRAY_LENGTH","MAX_RECURSIVE_DEPTH","formatValue","seenValues","formatObjectValue","previouslySeenValues","customInspectFn","getCustomFn","customValue","formatArray","formatObject","getObjectTag","properties","remaining","tag","devAssert","Source","isSource","instanceOf","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","dedentBlockStringValue","rawString","commonIndent","getBlockStringIndentation","startLine","isBlank","endLine","_commonIndent","isFirstLine","isEmptyLine","indent","printBlockString","indentation","preferMultipleLines","isSingleLine","hasLeadingSpace","hasTrailingQuote","hasTrailingSlash","printAsMultipleLines","Lexer","startOfFileToken","lastToken","lineStart","advance","lookahead","_token$next","readToken","isPunctuatorTokenKind","printCharCode","lexer","bodyLength","_line","_col","readComment","readBlockString","readString","readNumber","readName","unexpectedCharacterMessage","col","firstCode","isFloat","readDigits","isNameStart","chunkStart","uniCharCode","invalidSequence","rawValue","char2hex","parser","parseDocument","Parser","sourceObj","_lexer","parseName","expectToken","definitions","many","parseDefinition","peek","parseOperationDefinition","parseFragmentDefinition","parseTypeSystemDefinition","parseTypeSystemExtension","peekDescription","unexpected","operation","variableDefinitions","selectionSet","parseSelectionSet","parseOperationType","parseVariableDefinitions","parseDirectives","operationToken","optionalMany","parseVariableDefinition","variable","parseVariable","parseTypeReference","defaultValue","expectOptionalToken","parseValueLiteral","selections","parseSelection","parseFragment","parseField","alias","nameOrAlias","parseArguments","isConst","parseConstArgument","parseArgument","hasTypeCondition","expectOptionalKeyword","parseFragmentName","typeCondition","parseNamedType","_this$_options","expectKeyword","experimentalFragmentVariables","parseList","parseObject","parseStringLiteral","block","values","any","_this2","parseObjectField","fields","parseDirective","keywordToken","parseSchemaDefinition","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseDirectiveDefinition","parseDescription","operationTypes","parseOperationTypeDefinition","interfaces","parseImplementsInterfaces","parseFieldsDefinition","_this$_options2","allowLegacySDLImplementsInterfaces","types","delimitedMany","_this$_options3","allowLegacySDLEmptyFields","parseFieldDefinition","parseArgumentDefs","parseInputValueDef","parseUnionMemberTypes","parseEnumValuesDefinition","parseEnumValueDefinition","parseInputFieldsDefinition","parseSchemaExtension","parseScalarTypeExtension","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionTypeExtension","parseEnumTypeExtension","parseInputObjectTypeExtension","repeatable","parseDirectiveLocations","parseDirectiveLocation","_this$_options4","noLocation","getTokenKindDesc","getTokenDesc","atToken","openKind","parseFn","closeKind","delimiterKind","QueryDocumentKeys","Name","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","visit","visitor","visitorKeys","inArray","edits","parent","ancestors","newRoot","isLeaving","isEdited","clone","_Object$keys2","editOffset","ii","editKey","editValue","_visitorKeys$node$kin","visitFn","getVisitFn","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","printDocASTReducer","MAX_LINE_LENGTH","varDefs","wrap","argsLine","_ref5","_ref6","_ref7","_ref8","_ref9","_ref10","isBlockString","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","_ref18","_ref19","addDescription","_ref20","_ref21","_ref22","_ref23","_ref24","hasMultilineItems","_ref25","_ref26","_ref27","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","maybeArray","_maybeArray$filter$jo","separator","maybeString","isMultiline","some","AbstractPubSubProvider","getProviderName","getCategory","ConnectionState","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","ReachabilityNavigator","networkMonitor","netInfo","online","globalObj","observer","onLine","notifyOnline","notifyOffline","_observers","_observer","_observerOverride","e_1","_loop_1","closed","e_1_1","return","Reachability","ReachabilityMonitor","CONNECTION_CHANGE","KEEP_ALIVE_MISSED","keepAliveState","KEEP_ALIVE","CONNECTION_ESTABLISHED","connectionState","CONNECTION_FAILED","intendedConnectionState","CLOSING_CONNECTION","OPENING_CONNECTION","CLOSED","ONLINE","networkState","OFFLINE","ConnectionStateMonitor","_networkMonitoringSubscription","_linkedConnectionState","_linkedConnectionStateObservable","connectionStateObserver","_linkedConnectionStateObserver","enableNetworkMonitoring","disableNetworkMonitoring","previous","connectionStatesTranslator","current","toInclude","statusUpdates","newSocketStatus","ConnectedPendingNetwork","ConnectedPendingDisconnect","ConnectionDisruptedPendingNetwork","ConnectionDisrupted","ConnectedPendingKeepAlive","Connecting","Disconnected","Connected","MAX_DELAY_MS","NON_RETRYABLE_CODES","AMPLIFY_SYMBOL","AWS_APPSYNC_REALTIME_HEADERS","accept","CONNECTION_INIT_TIMEOUT","START_ACK_TIMEOUT","DEFAULT_KEEP_ALIVE_TIMEOUT","DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT","mqttTopicMatch","filterArray","topicArray","CONTROL_MSG","ClientsQueue","clientFactory","cachedPromise","newPromise","delete","dispatchPubSubEvent","Hub","dispatch","topicSymbol","MqttOverWSProvider","uuid","_clientsQueue","connectionStateMonitor","_topicObservers","_clientIdObservers","connectionStateObservable","connectionStateChange","CONNECTION_STATE_CHANGE","provider","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","topicsToDelete_1","clientIdObservers","observerForTopic","observerTopic","newClient","payloadString","_onMessage","isSSLEnabled","clientsQueue","targetTopics","matchedTopicObservers_1","parsedMessage_1","observersForTopic","Set","add","observersForClientId","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","topicsForClient","entries","_cleanUpForTopic","obs","mqttConnections","newSubscriptions","newAliases","elem","connectionInfoForTopic","err_1","_d","complete","origKey","dispatchApiEvent","standardDomainPattern","customDomainPath","AWSAppSyncRealTimeProvider","socketStatus","keepAliveTimeout","subscriptionObserverMap","promiseArray","getNewWebSocket","_topics","_msg","isCustomDomain","appSyncGraphqlEndpoint","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","errors","REALTIME_SUBSCRIPTION_INIT_ERROR","subscriptionState","_waitForSubscriptionToBeConnected","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","variables","apiKey","graphql_headers","_e","additionalHeaders","dataString","headerObj","_f","_g","subscriptionMessage","stringToAWSRealTime","err_2","subscriptionFailedCallback_1","_h","subscriptionFailedCallback","subscriptionReadyCallback","_j","_k","PENDING","startAckTimeoutId","_awsRealTimeHeaderBasedAuth","canonicalUri","authorization","GQL_START","_initializeWebSocketConnection","_timeoutStartSubscriptionAck","awsRealTimeSocket","subscriptionObserver","res","rej","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bufferedAmount","keepAliveTimeoutId","keepAliveAlertTimeoutId","tempSocket","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","SUBSCRIPTION_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","headerString","headerQs","payloadQs","discoverableEndpoint","awsRealTimeUrl","err_3","CONNECTING","_initializeRetryableHandshake","_initializeHandshake","err_4","errorType","newSocket","ackOk_1","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","checkAckOk_1","ackOk","headerHandler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","AWS_LAMBDA","_customAuthHeader","session","currentSession","Authorization","getAccessToken","getJwtToken","federatedInfo","currentUser","currentAuthenticatedUser","dt","dtStr","credentialsOK","_ensureCredentials","cred","shear","PubSubClass","_pluggables","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","PubSub","pluggable","addPluggable","removePluggable","providerName","getProviderByName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","ssr","providers","observables","observable","subscriptions","subscription","GraphQLAuthError","GraphQLAPIClass","Auth","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","aws_appsync_apiKey","NO_API_KEY","NO_CREDENTIALS","NO_FEDERATED_JWT","NO_CURRENT_USER","NO_AUTH_TOKEN","getGraphqlOperationType","doc","operationType","graphql","paramQuery","authMode","authToken","userAgentSuffix","def","operationDef","_graphql","_graphqlSubscribe","customGraphqlEndpoint","customEndpointRegion","_l","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","GraphQLAPI","APIClass","_restApi","_graphqlApi","restAPIConfig","graphQLAPIConfig","VGrid","Vue","functional","render","startsWith","domProps","Grid","fluid","mergeData","baseMixins","VTextField","autoGrow","noResize","rowHeight","rows","noResizeHandle","$nextTick","calculateInputHeight","_this$$refs$input","removeProperty","scrollHeight","minHeight","onInput","hasSymbols","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","enqueue","cleanupSubscription","cleanup","_cleanup","closeSubscription","_queue","_state","flushSubscription","queue","notifySubscription","onNotify","Subscription","subscriber","SubscriptionObserver","_subscription","_subscriber","C","_this3","_this4","hasSeed","hasValue","seed","_this5","_len","sources","_key","startNext","_this6","completeIfDone","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_item","_len2","_key2","symbol","VBtn","Routable","VSheet","flat","hover","img","link","loaderHeight","raised","isClickable","loading","background","generateRouteLink","$slots","cookies","buildFullPath","parseHeaders","isURLSameOrigin","createError","onCanceled","requestData","requestHeaders","XMLHttpRequest","auth","username","unescape","btoa","fullPath","baseURL","onloadend","responseHeaders","getAllResponseHeaders","responseData","responseText","statusText","open","onreadystatechange","responseURL","onabort","ontimeout","timeoutErrorMessage","xsrfValue","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","onUploadProgress","upload","abort","DEFAULT_ALGORITHM","IOT_SERVICE_NAME","encrypt","src","arg","escape_RFC3986","component","canonical_query","key_val","reencoded_val","key_a","key_b","canonical_headers","signed_headers","canonical_request","url_info","parse_service_info","matched","credential_scope","d_str","string_to_sign","algorithm","dt_str","get_signing_key","service_info","k_date","k_region","k_service","k_signing","get_signature","signing_key","str_to_sign","get_authorization_header","signature","access_info","getDateWithClockOffset","request_str","serviceInfo","authorization_header","signUrl","urlOrRequest","accessInfo","expiration","urlToSign","today","signedHeaders","credentialScope","sessionTokenRequired","queryParams","canonicalRequest","stringToSign","additionalQueryParams","slashes","isAbsoluteURL","combineURLs","requestedURL","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","getDefaultAdapter","process","stringifySafely","encoder","strictJSONParsing","maxContentLength","maxBodyLength","validateStatus","fns","Uint32Array","pow","config1","config2","getMergedValue","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","configValue","FIVE_MINUTES_IN_MS","clockOffset","getClockOffset","getHeaderStringFromDate","year","month","day","hour","minute","second","UTC","serverDate","relativeURL"],"mappings":"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","file":"js/chunk-811df758.8498de7d.js","sourcesContent":["/*\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 } from './Auth';\nimport { CognitoHostedUIIdentityProvider, GRAPHQL_AUTH_MODE, } from './types/Auth';\nimport { CognitoUser, CookieStorage, appendToCognitoUserAgent, } from 'amazon-cognito-identity-js';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n/**\n * @deprecated use named import\n */\nexport default Auth;\nexport { Auth, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, appendToCognitoUserAgent, AuthErrorStrings, GRAPHQL_AUTH_MODE, };\n//# sourceMappingURL=index.js.map","/*\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 * 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';\n/**\n * @deprecated Unused, all usecases have migrated to INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER\n */\nexport var INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol\n ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER')\n : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';\n//# sourceMappingURL=constants.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar constants_1 = require(\"./constants\");\nvar RawSha256_1 = require(\"./RawSha256\");\nvar util_utf8_browser_1 = require(\"@aws-sdk/util-utf8-browser\");\nvar Sha256 = /** @class */ (function () {\n function Sha256(secret) {\n this.hash = new RawSha256_1.RawSha256();\n if (secret) {\n this.outer = new RawSha256_1.RawSha256();\n var inner = bufferFromSecret(secret);\n var outer = new Uint8Array(constants_1.BLOCK_SIZE);\n outer.set(inner);\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n this.hash.update(inner);\n this.outer.update(outer);\n // overwrite the copied key in memory\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n Sha256.prototype.update = function (toHash) {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n try {\n this.hash.update(convertToBuffer(toHash));\n }\n catch (e) {\n this.error = e;\n }\n };\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n Sha256.prototype.digestSync = function () {\n if (this.error) {\n throw this.error;\n }\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n return this.outer.digest();\n }\n return this.hash.digest();\n };\n /* The underlying digest method here is synchronous.\n * To keep the same interface with the other hash functions\n * the default is to expose this as an async method.\n * However, it can sometimes be useful to have a sync method.\n */\n Sha256.prototype.digest = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n return tslib_1.__generator(this, function (_a) {\n return [2 /*return*/, this.digestSync()];\n });\n });\n };\n return Sha256;\n}());\nexports.Sha256 = Sha256;\nfunction bufferFromSecret(secret) {\n var input = convertToBuffer(secret);\n if (input.byteLength > constants_1.BLOCK_SIZE) {\n var bufferHash = new RawSha256_1.RawSha256();\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(constants_1.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\nfunction convertToBuffer(data) {\n if (typeof data === \"string\") {\n return util_utf8_browser_1.fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}\n//# sourceMappingURL=jsSha256.js.map","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // 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.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\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 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);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\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) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\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 return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\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 */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\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 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\n return parsed;\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 */\nimport { ConsoleLogger as Logger } from '../Logger';\nvar logger = new Logger('I18n');\n/**\n * Language transition class\n */\nvar I18n = /** @class */ (function () {\n /**\n * @constructor\n * Initialize with configurations\n * @param {Object} options\n */\n function I18n(options) {\n /**\n * @private\n */\n this._options = null;\n /**\n * @private\n */\n this._lang = null;\n /**\n * @private\n */\n this._dict = {};\n this._options = Object.assign({}, options);\n this._lang = this._options.language;\n if (!this._lang &&\n typeof window !== 'undefined' &&\n window &&\n window.navigator) {\n this._lang = window.navigator.language;\n }\n logger.debug(this._lang);\n }\n /**\n * @method\n * Explicitly setting language\n * @param {String} lang\n */\n I18n.prototype.setLanguage = function (lang) {\n this._lang = lang;\n };\n /**\n * @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n I18n.prototype.get = function (key, defVal) {\n if (defVal === void 0) { defVal = undefined; }\n if (!this._lang) {\n return typeof defVal !== 'undefined' ? defVal : key;\n }\n var lang = this._lang;\n var val = this.getByLanguage(key, lang);\n if (val) {\n return val;\n }\n if (lang.indexOf('-') > 0) {\n val = this.getByLanguage(key, lang.split('-')[0]);\n }\n if (val) {\n return val;\n }\n return typeof defVal !== 'undefined' ? defVal : key;\n };\n /**\n * @method\n * Get value according to specified language\n * @param {String} key\n * @param {String} language - Specified langurage to be used\n * @param {String} defVal - Default value\n */\n I18n.prototype.getByLanguage = function (key, language, defVal) {\n if (defVal === void 0) { defVal = null; }\n if (!language) {\n return defVal;\n }\n var lang_dict = this._dict[language];\n if (!lang_dict) {\n return defVal;\n }\n return lang_dict[key];\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {String} language - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n I18n.prototype.putVocabulariesForLanguage = function (language, vocabularies) {\n var lang_dict = this._dict[language];\n if (!lang_dict) {\n lang_dict = this._dict[language] = {};\n }\n Object.assign(lang_dict, vocabularies);\n };\n /**\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n I18n.prototype.putVocabularies = function (vocabularies) {\n var _this = this;\n Object.keys(vocabularies).map(function (key) {\n _this.putVocabulariesForLanguage(key, vocabularies[key]);\n });\n };\n return I18n;\n}());\nexport { I18n };\n//# sourceMappingURL=I18n.js.map","/*\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 { I18n as I18nClass } from './I18n';\nimport { ConsoleLogger as Logger } from '../Logger';\nimport { Amplify } from '../Amplify';\nvar logger = new Logger('I18n');\nvar _config = null;\nvar _i18n = null;\n/**\n * Export I18n APIs\n */\nvar I18n = /** @class */ (function () {\n function I18n() {\n }\n /**\n * @static\n * @method\n * Configure I18n part\n * @param {Object} config - Configuration of the I18n\n */\n I18n.configure = function (config) {\n logger.debug('configure I18n');\n if (!config) {\n return _config;\n }\n _config = Object.assign({}, _config, config.I18n || config);\n I18n.createInstance();\n return _config;\n };\n I18n.getModuleName = function () {\n return 'I18n';\n };\n /**\n * @static\n * @method\n * Create an instance of I18n for the library\n */\n I18n.createInstance = function () {\n logger.debug('create I18n instance');\n if (_i18n) {\n return;\n }\n _i18n = new I18nClass(_config);\n };\n /**\n * @static @method\n * Explicitly setting language\n * @param {String} lang\n */\n I18n.setLanguage = function (lang) {\n I18n.checkConfig();\n return _i18n.setLanguage(lang);\n };\n /**\n * @static @method\n * Get value\n * @param {String} key\n * @param {String} defVal - Default value\n */\n I18n.get = function (key, defVal) {\n if (!I18n.checkConfig()) {\n return typeof defVal === 'undefined' ? key : defVal;\n }\n return _i18n.get(key, defVal);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {String} langurage - Language of the dictionary\n * @param {Object} vocabularies - Object that has key-value as dictionary entry\n */\n I18n.putVocabulariesForLanguage = function (language, vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabulariesForLanguage(language, vocabularies);\n };\n /**\n * @static\n * @method\n * Add vocabularies for one language\n * @param {Object} vocabularies - Object that has language as key,\n * vocabularies of each language as value\n */\n I18n.putVocabularies = function (vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabularies(vocabularies);\n };\n I18n.checkConfig = function () {\n if (!_i18n) {\n _i18n = new I18nClass(_config);\n }\n return true;\n };\n return I18n;\n}());\nexport { I18n };\nAmplify.register(I18n);\n/**\n * @deprecated use named import\n */\nexport default I18n;\n//# sourceMappingURL=index.js.map","/*\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 { AmplifyClass } from './Amplify';\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 * from './Providers';\nexport { FacebookOAuth, GoogleOAuth } from './OAuthHelper';\nexport * from './RNComponents';\nexport { Credentials, CredentialsClass } from './Credentials';\nexport { ServiceWorker } from './ServiceWorker';\nexport { StorageHelper, MemoryStorage } from './StorageHelper';\nexport { UniversalStorage } from './UniversalStorage';\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 */\nexport default Amplify;\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar Cancel = require('./Cancel');\n\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 */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\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/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\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;\n","'use strict';\n\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 */\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;\n\nmodule.exports = Cancel;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./jsSha256\"), exports);\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\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 */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\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 */\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;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar constants_1 = require(\"./constants\");\n/**\n * @internal\n */\nvar RawSha256 = /** @class */ (function () {\n function RawSha256() {\n this.state = Int32Array.from(constants_1.INIT);\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @internal\n */\n this.finished = false;\n }\n RawSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > constants_1.MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === constants_1.BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n };\n RawSha256.prototype.digest = function () {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % constants_1.BLOCK_SIZE >= constants_1.BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(constants_1.BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(constants_1.BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Uint8Array(constants_1.DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return out;\n };\n RawSha256.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var state0 = state[0], state1 = state[1], state2 = state[2], state3 = state[3], state4 = state[4], state5 = state[5], state6 = state[6], state7 = state[7];\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] =\n ((buffer[i * 4] & 0xff) << 24) |\n ((buffer[i * 4 + 1] & 0xff) << 16) |\n ((buffer[i * 4 + 2] & 0xff) << 8) |\n (buffer[i * 4 + 3] & 0xff);\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = ((u >>> 17) | (u << 15)) ^ ((u >>> 19) | (u << 13)) ^ (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = ((u >>> 7) | (u << 25)) ^ ((u >>> 18) | (u << 14)) ^ (u >>> 3);\n this.temp[i] =\n ((t1_1 + this.temp[i - 7]) | 0) + ((t2_1 + this.temp[i - 16]) | 0);\n }\n var t1 = ((((((state4 >>> 6) | (state4 << 26)) ^\n ((state4 >>> 11) | (state4 << 21)) ^\n ((state4 >>> 25) | (state4 << 7))) +\n ((state4 & state5) ^ (~state4 & state6))) |\n 0) +\n ((state7 + ((constants_1.KEY[i] + this.temp[i]) | 0)) | 0)) |\n 0;\n var t2 = ((((state0 >>> 2) | (state0 << 30)) ^\n ((state0 >>> 13) | (state0 << 19)) ^\n ((state0 >>> 22) | (state0 << 10))) +\n ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) |\n 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n };\n return RawSha256;\n}());\nexports.RawSha256 = RawSha256;\n//# sourceMappingURL=RawSha256.js.map","import './_grid.sass'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nexport default createSimpleFunctional('spacer', 'div', 'v-spacer')\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\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 */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","module.exports = require('./lib/Observable.js').Observable;\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\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\tif(typeof exports === \"object\" && typeof module === \"object\"){\n\t\tmodule.exports = factory();\n\t} else if (typeof define === \"function\" && define.amd){\n\t\tdefine(factory);\n\t} else if (typeof exports === \"object\"){\n\t\texports = factory();\n\t} else {\n\t\t//if (typeof root.Paho === \"undefined\"){\n\t\t//\troot.Paho = {};\n\t\t//}\n\t\troot.Paho = factory();\n\t}\n})(this, function LibraryFactory(){\n\n\n\tvar PahoMQTT = (function (global) {\n\n\t// Private variables below, these are only visible inside the function closure\n\t// which is used to define the module.\n\tvar version = \"@VERSION@-@BUILDLEVEL@\";\n\n\t/**\n\t * @private\n\t */\n\tvar localStorage = global.localStorage || (function () {\n\t\tvar data = {};\n\n\t\treturn {\n\t\t\tsetItem: function (key, item) { data[key] = item; },\n\t\t\tgetItem: function (key) { return data[key]; },\n\t\t\tremoveItem: function (key) { delete data[key]; },\n\t\t};\n\t})();\n\n\t\t/**\n\t * Unique message type identifiers, with associated\n\t * associated integer values.\n\t * @private\n\t */\n\t\tvar MESSAGE_TYPE = {\n\t\t\tCONNECT: 1,\n\t\t\tCONNACK: 2,\n\t\t\tPUBLISH: 3,\n\t\t\tPUBACK: 4,\n\t\t\tPUBREC: 5,\n\t\t\tPUBREL: 6,\n\t\t\tPUBCOMP: 7,\n\t\t\tSUBSCRIBE: 8,\n\t\t\tSUBACK: 9,\n\t\t\tUNSUBSCRIBE: 10,\n\t\t\tUNSUBACK: 11,\n\t\t\tPINGREQ: 12,\n\t\t\tPINGRESP: 13,\n\t\t\tDISCONNECT: 14\n\t\t};\n\n\t\t// Collection of utility methods used to simplify module code\n\t\t// and promote the DRY pattern.\n\n\t\t/**\n\t * Validate an object's parameter names to ensure they\n\t * match a list of expected variables name for this option\n\t * type. Used to ensure option object passed into the API don't\n\t * contain erroneous parameters.\n\t * @param {Object} obj - User options object\n\t * @param {Object} keys - valid keys and types that may exist in obj.\n\t * @throws {Error} Invalid option parameter found.\n\t * @private\n\t */\n\t\tvar validate = function(obj, keys) {\n\t\t\tfor (var key in obj) {\n\t\t\t\tif (obj.hasOwnProperty(key)) {\n\t\t\t\t\tif (keys.hasOwnProperty(key)) {\n\t\t\t\t\t\tif (typeof obj[key] !== keys[key])\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_TYPE, [typeof obj[key], key]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar errorStr = \"Unknown property, \" + key + \". Valid properties are:\";\n\t\t\t\t\t\tfor (var validKey in keys)\n\t\t\t\t\t\t\tif (keys.hasOwnProperty(validKey))\n\t\t\t\t\t\t\t\terrorStr = errorStr+\" \"+validKey;\n\t\t\t\t\t\tthrow new Error(errorStr);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Return a new function which runs the user function bound\n\t * to a fixed scope.\n\t * @param {function} User function\n\t * @param {object} Function scope\n\t * @return {function} User function bound to another scope\n\t * @private\n\t */\n\t\tvar scope = function (f, scope) {\n\t\t\treturn function () {\n\t\t\t\treturn f.apply(scope, arguments);\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t * Unique message type identifiers, with associated\n\t * associated integer values.\n\t * @private\n\t */\n\t\tvar ERROR = {\n\t\t\tOK: {code:0, text:\"AMQJSC0000I OK.\"},\n\t\t\tCONNECT_TIMEOUT: {code:1, text:\"AMQJSC0001E Connect timed out.\"},\n\t\t\tSUBSCRIBE_TIMEOUT: {code:2, text:\"AMQJS0002E Subscribe timed out.\"},\n\t\t\tUNSUBSCRIBE_TIMEOUT: {code:3, text:\"AMQJS0003E Unsubscribe timed out.\"},\n\t\t\tPING_TIMEOUT: {code:4, text:\"AMQJS0004E Ping timed out.\"},\n\t\t\tINTERNAL_ERROR: {code:5, text:\"AMQJS0005E Internal error. Error Message: {0}, Stack trace: {1}\"},\n\t\t\tCONNACK_RETURNCODE: {code:6, text:\"AMQJS0006E Bad Connack return code:{0} {1}.\"},\n\t\t\tSOCKET_ERROR: {code:7, text:\"AMQJS0007E Socket error:{0}.\"},\n\t\t\tSOCKET_CLOSE: {code:8, text:\"AMQJS0008I Socket closed.\"},\n\t\t\tMALFORMED_UTF: {code:9, text:\"AMQJS0009E Malformed UTF data:{0} {1} {2}.\"},\n\t\t\tUNSUPPORTED: {code:10, text:\"AMQJS0010E {0} is not supported by this browser.\"},\n\t\t\tINVALID_STATE: {code:11, text:\"AMQJS0011E Invalid state {0}.\"},\n\t\t\tINVALID_TYPE: {code:12, text:\"AMQJS0012E Invalid type {0} for {1}.\"},\n\t\t\tINVALID_ARGUMENT: {code:13, text:\"AMQJS0013E Invalid argument {0} for {1}.\"},\n\t\t\tUNSUPPORTED_OPERATION: {code:14, text:\"AMQJS0014E Unsupported operation.\"},\n\t\t\tINVALID_STORED_DATA: {code:15, text:\"AMQJS0015E Invalid data in local storage key={0} value={1}.\"},\n\t\t\tINVALID_MQTT_MESSAGE_TYPE: {code:16, text:\"AMQJS0016E Invalid MQTT message type {0}.\"},\n\t\t\tMALFORMED_UNICODE: {code:17, text:\"AMQJS0017E Malformed Unicode string:{0} {1}.\"},\n\t\t\tBUFFER_FULL: {code:18, text:\"AMQJS0018E Message buffer is full, maximum buffer size: {0}.\"},\n\t\t};\n\n\t\t/** CONNACK RC Meaning. */\n\t\tvar CONNACK_RC = {\n\t\t\t0:\"Connection Accepted\",\n\t\t\t1:\"Connection Refused: unacceptable protocol version\",\n\t\t\t2:\"Connection Refused: identifier rejected\",\n\t\t\t3:\"Connection Refused: server unavailable\",\n\t\t\t4:\"Connection Refused: bad user name or password\",\n\t\t\t5:\"Connection Refused: not authorized\"\n\t\t};\n\n\t/**\n\t * Format an error message text.\n\t * @private\n\t * @param {error} ERROR value above.\n\t * @param {substitutions} [array] substituted into the text.\n\t * @return the text with the substitutions made.\n\t */\n\t\tvar format = function(error, substitutions) {\n\t\t\tvar text = error.text;\n\t\t\tif (substitutions) {\n\t\t\t\tvar field,start;\n\t\t\t\tfor (var i=0; i 0) {\n\t\t\t\t\t\tvar part1 = text.substring(0,start);\n\t\t\t\t\t\tvar part2 = text.substring(start+field.length);\n\t\t\t\t\t\ttext = part1+substitutions[i]+part2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn text;\n\t\t};\n\n\t\t//MQTT protocol and version 6 M Q I s d p 3\n\t\tvar MqttProtoIdentifierv3 = [0x00,0x06,0x4d,0x51,0x49,0x73,0x64,0x70,0x03];\n\t\t//MQTT proto/version for 311 4 M Q T T 4\n\t\tvar MqttProtoIdentifierv4 = [0x00,0x04,0x4d,0x51,0x54,0x54,0x04];\n\n\t\t/**\n\t * Construct an MQTT wire protocol message.\n\t * @param type MQTT packet type.\n\t * @param options optional wire message attributes.\n\t *\n\t * Optional properties\n\t *\n\t * messageIdentifier: message ID in the range [0..65535]\n\t * payloadMessage:\tApplication Message - PUBLISH only\n\t * connectStrings:\tarray of 0 or more Strings to be put into the CONNECT payload\n\t * topics:\t\t\tarray of strings (SUBSCRIBE, UNSUBSCRIBE)\n\t * requestQoS:\t\tarray of QoS values [0..2]\n\t *\n\t * \"Flag\" properties\n\t * cleanSession:\ttrue if present / false if absent (CONNECT)\n\t * willMessage: \ttrue if present / false if absent (CONNECT)\n\t * isRetained:\t\ttrue if present / false if absent (CONNECT)\n\t * userName:\t\ttrue if present / false if absent (CONNECT)\n\t * password:\t\ttrue if present / false if absent (CONNECT)\n\t * keepAliveInterval:\tinteger [0..65535] (CONNECT)\n\t *\n\t * @private\n\t * @ignore\n\t */\n\t\tvar WireMessage = function (type, options) {\n\t\t\tthis.type = type;\n\t\t\tfor (var name in options) {\n\t\t\t\tif (options.hasOwnProperty(name)) {\n\t\t\t\t\tthis[name] = options[name];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tWireMessage.prototype.encode = function() {\n\t\t// Compute the first byte of the fixed header\n\t\t\tvar first = ((this.type & 0x0f) << 4);\n\n\t\t\t/*\n\t\t * Now calculate the length of the variable header + payload by adding up the lengths\n\t\t * of all the component parts\n\t\t */\n\n\t\t\tvar remLength = 0;\n\t\t\tvar topicStrLength = [];\n\t\t\tvar destinationNameLength = 0;\n\t\t\tvar willMessagePayloadBytes;\n\n\t\t\t// if the message contains a messageIdentifier then we need two bytes for that\n\t\t\tif (this.messageIdentifier !== undefined)\n\t\t\t\tremLength += 2;\n\n\t\t\tswitch(this.type) {\n\t\t\t// If this a Connect then we need to include 12 bytes for its header\n\t\t\tcase MESSAGE_TYPE.CONNECT:\n\t\t\t\tswitch(this.mqttVersion) {\n\t\t\t\tcase 3:\n\t\t\t\t\tremLength += MqttProtoIdentifierv3.length + 3;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tremLength += MqttProtoIdentifierv4.length + 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tremLength += UTF8Length(this.clientId) + 2;\n\t\t\t\tif (this.willMessage !== undefined) {\n\t\t\t\t\tremLength += UTF8Length(this.willMessage.destinationName) + 2;\n\t\t\t\t\t// Will message is always a string, sent as UTF-8 characters with a preceding length.\n\t\t\t\t\twillMessagePayloadBytes = this.willMessage.payloadBytes;\n\t\t\t\t\tif (!(willMessagePayloadBytes instanceof Uint8Array))\n\t\t\t\t\t\twillMessagePayloadBytes = new Uint8Array(payloadBytes);\n\t\t\t\t\tremLength += willMessagePayloadBytes.byteLength +2;\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tremLength += UTF8Length(this.userName) + 2;\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tremLength += UTF8Length(this.password) + 2;\n\t\t\t\tbreak;\n\n\t\t\t// Subscribe, Unsubscribe can both contain topic strings\n\t\t\tcase MESSAGE_TYPE.SUBSCRIBE:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tfor ( var i = 0; i < this.topics.length; i++) {\n\t\t\t\t\ttopicStrLength[i] = UTF8Length(this.topics[i]);\n\t\t\t\t\tremLength += topicStrLength[i] + 2;\n\t\t\t\t}\n\t\t\t\tremLength += this.requestedQos.length; // 1 byte for each topic's Qos\n\t\t\t\t// QoS on Subscribe only\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.UNSUBSCRIBE:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tfor ( var i = 0; i < this.topics.length; i++) {\n\t\t\t\t\ttopicStrLength[i] = UTF8Length(this.topics[i]);\n\t\t\t\t\tremLength += topicStrLength[i] + 2;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBREL:\n\t\t\t\tfirst |= 0x02; // Qos = 1;\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tif (this.payloadMessage.duplicate) first |= 0x08;\n\t\t\t\tfirst = first |= (this.payloadMessage.qos << 1);\n\t\t\t\tif (this.payloadMessage.retained) first |= 0x01;\n\t\t\t\tdestinationNameLength = UTF8Length(this.payloadMessage.destinationName);\n\t\t\t\tremLength += destinationNameLength + 2;\n\t\t\t\tvar payloadBytes = this.payloadMessage.payloadBytes;\n\t\t\t\tremLength += payloadBytes.byteLength;\n\t\t\t\tif (payloadBytes instanceof ArrayBuffer)\n\t\t\t\t\tpayloadBytes = new Uint8Array(payloadBytes);\n\t\t\t\telse if (!(payloadBytes instanceof Uint8Array))\n\t\t\t\t\tpayloadBytes = new Uint8Array(payloadBytes.buffer);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.DISCONNECT:\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Now we can allocate a buffer for the message\n\n\t\t\tvar mbi = encodeMBI(remLength); // Convert the length to MQTT MBI format\n\t\t\tvar pos = mbi.length + 1; // Offset of start of variable header\n\t\t\tvar buffer = new ArrayBuffer(remLength + pos);\n\t\t\tvar byteStream = new Uint8Array(buffer); // view it as a sequence of bytes\n\n\t\t\t//Write the fixed header into the buffer\n\t\t\tbyteStream[0] = first;\n\t\t\tbyteStream.set(mbi,1);\n\n\t\t\t// If this is a PUBLISH then the variable header starts with a topic\n\t\t\tif (this.type == MESSAGE_TYPE.PUBLISH)\n\t\t\t\tpos = writeString(this.payloadMessage.destinationName, destinationNameLength, byteStream, pos);\n\t\t\t// If this is a CONNECT then the variable header contains the protocol name/version, flags and keepalive time\n\n\t\t\telse if (this.type == MESSAGE_TYPE.CONNECT) {\n\t\t\t\tswitch (this.mqttVersion) {\n\t\t\t\tcase 3:\n\t\t\t\t\tbyteStream.set(MqttProtoIdentifierv3, pos);\n\t\t\t\t\tpos += MqttProtoIdentifierv3.length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 4:\n\t\t\t\t\tbyteStream.set(MqttProtoIdentifierv4, pos);\n\t\t\t\t\tpos += MqttProtoIdentifierv4.length;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar connectFlags = 0;\n\t\t\t\tif (this.cleanSession)\n\t\t\t\t\tconnectFlags = 0x02;\n\t\t\t\tif (this.willMessage !== undefined ) {\n\t\t\t\t\tconnectFlags |= 0x04;\n\t\t\t\t\tconnectFlags |= (this.willMessage.qos<<3);\n\t\t\t\t\tif (this.willMessage.retained) {\n\t\t\t\t\t\tconnectFlags |= 0x20;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tconnectFlags |= 0x80;\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tconnectFlags |= 0x40;\n\t\t\t\tbyteStream[pos++] = connectFlags;\n\t\t\t\tpos = writeUint16 (this.keepAliveInterval, byteStream, pos);\n\t\t\t}\n\n\t\t\t// Output the messageIdentifier - if there is one\n\t\t\tif (this.messageIdentifier !== undefined)\n\t\t\t\tpos = writeUint16 (this.messageIdentifier, byteStream, pos);\n\n\t\t\tswitch(this.type) {\n\t\t\tcase MESSAGE_TYPE.CONNECT:\n\t\t\t\tpos = writeString(this.clientId, UTF8Length(this.clientId), byteStream, pos);\n\t\t\t\tif (this.willMessage !== undefined) {\n\t\t\t\t\tpos = writeString(this.willMessage.destinationName, UTF8Length(this.willMessage.destinationName), byteStream, pos);\n\t\t\t\t\tpos = writeUint16(willMessagePayloadBytes.byteLength, byteStream, pos);\n\t\t\t\t\tbyteStream.set(willMessagePayloadBytes, pos);\n\t\t\t\t\tpos += willMessagePayloadBytes.byteLength;\n\n\t\t\t\t}\n\t\t\t\tif (this.userName !== undefined)\n\t\t\t\t\tpos = writeString(this.userName, UTF8Length(this.userName), byteStream, pos);\n\t\t\t\tif (this.password !== undefined)\n\t\t\t\t\tpos = writeString(this.password, UTF8Length(this.password), byteStream, pos);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\t// PUBLISH has a text or binary payload, if text do not add a 2 byte length field, just the UTF characters.\n\t\t\t\tbyteStream.set(payloadBytes, pos);\n\n\t\t\t\tbreak;\n\n\t\t\t\t// \t case MESSAGE_TYPE.PUBREC:\n\t\t\t\t// \t case MESSAGE_TYPE.PUBREL:\n\t\t\t\t// \t case MESSAGE_TYPE.PUBCOMP:\n\t\t\t\t// \t \tbreak;\n\n\t\t\tcase MESSAGE_TYPE.SUBSCRIBE:\n\t\t\t\t// SUBSCRIBE has a list of topic strings and request QoS\n\t\t\t\tfor (var i=0; i> 4;\n\t\t\tvar messageInfo = first &= 0x0f;\n\t\t\tpos += 1;\n\n\n\t\t\t// Decode the remaining length (MBI format)\n\n\t\t\tvar digit;\n\t\t\tvar remLength = 0;\n\t\t\tvar multiplier = 1;\n\t\t\tdo {\n\t\t\t\tif (pos == input.length) {\n\t\t\t\t\treturn [null,startingPos];\n\t\t\t\t}\n\t\t\t\tdigit = input[pos++];\n\t\t\t\tremLength += ((digit & 0x7F) * multiplier);\n\t\t\t\tmultiplier *= 128;\n\t\t\t} while ((digit & 0x80) !== 0);\n\n\t\t\tvar endPos = pos+remLength;\n\t\t\tif (endPos > input.length) {\n\t\t\t\treturn [null,startingPos];\n\t\t\t}\n\n\t\t\tvar wireMessage = new WireMessage(type);\n\t\t\tswitch(type) {\n\t\t\tcase MESSAGE_TYPE.CONNACK:\n\t\t\t\tvar connectAcknowledgeFlags = input[pos++];\n\t\t\t\tif (connectAcknowledgeFlags & 0x01)\n\t\t\t\t\twireMessage.sessionPresent = true;\n\t\t\t\twireMessage.returnCode = input[pos++];\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tvar qos = (messageInfo >> 1) & 0x03;\n\n\t\t\t\tvar len = readUint16(input, pos);\n\t\t\t\tpos += 2;\n\t\t\t\tvar topicName = parseUTF8(input, pos, len);\n\t\t\t\tpos += len;\n\t\t\t\t// If QoS 1 or 2 there will be a messageIdentifier\n\t\t\t\tif (qos > 0) {\n\t\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\t\tpos += 2;\n\t\t\t\t}\n\n\t\t\t\tvar message = new Message(input.subarray(pos, endPos));\n\t\t\t\tif ((messageInfo & 0x01) == 0x01)\n\t\t\t\t\tmessage.retained = true;\n\t\t\t\tif ((messageInfo & 0x08) == 0x08)\n\t\t\t\t\tmessage.duplicate = true;\n\t\t\t\tmessage.qos = qos;\n\t\t\t\tmessage.destinationName = topicName;\n\t\t\t\twireMessage.payloadMessage = message;\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.PUBACK:\n\t\t\tcase MESSAGE_TYPE.PUBREC:\n\t\t\tcase MESSAGE_TYPE.PUBREL:\n\t\t\tcase MESSAGE_TYPE.PUBCOMP:\n\t\t\tcase MESSAGE_TYPE.UNSUBACK:\n\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\tbreak;\n\n\t\t\tcase MESSAGE_TYPE.SUBACK:\n\t\t\t\twireMessage.messageIdentifier = readUint16(input, pos);\n\t\t\t\tpos += 2;\n\t\t\t\twireMessage.returnCode = input.subarray(pos, endPos);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn [wireMessage,endPos];\n\t\t}\n\n\t\tfunction writeUint16(input, buffer, offset) {\n\t\t\tbuffer[offset++] = input >> 8; //MSB\n\t\t\tbuffer[offset++] = input % 256; //LSB\n\t\t\treturn offset;\n\t\t}\n\n\t\tfunction writeString(input, utf8Length, buffer, offset) {\n\t\t\toffset = writeUint16(utf8Length, buffer, offset);\n\t\t\tstringToUTF8(input, buffer, offset);\n\t\t\treturn offset + utf8Length;\n\t\t}\n\n\t\tfunction readUint16(buffer, offset) {\n\t\t\treturn 256*buffer[offset] + buffer[offset+1];\n\t\t}\n\n\t\t/**\n\t * Encodes an MQTT Multi-Byte Integer\n\t * @private\n\t */\n\t\tfunction encodeMBI(number) {\n\t\t\tvar output = new Array(1);\n\t\t\tvar numBytes = 0;\n\n\t\t\tdo {\n\t\t\t\tvar digit = number % 128;\n\t\t\t\tnumber = number >> 7;\n\t\t\t\tif (number > 0) {\n\t\t\t\t\tdigit |= 0x80;\n\t\t\t\t}\n\t\t\t\toutput[numBytes++] = digit;\n\t\t\t} while ( (number > 0) && (numBytes<4) );\n\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Takes a String and calculates its length in bytes when encoded in UTF8.\n\t * @private\n\t */\n\t\tfunction UTF8Length(input) {\n\t\t\tvar output = 0;\n\t\t\tfor (var i = 0; i 0x7FF)\n\t\t\t\t{\n\t\t\t\t\t// Surrogate pair means its a 4 byte character\n\t\t\t\t\tif (0xD800 <= charCode && charCode <= 0xDBFF)\n\t\t\t\t\t{\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\toutput++;\n\t\t\t\t\t}\n\t\t\t\t\toutput +=3;\n\t\t\t\t}\n\t\t\t\telse if (charCode > 0x7F)\n\t\t\t\t\toutput +=2;\n\t\t\t\telse\n\t\t\t\t\toutput++;\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Takes a String and writes it into an array as UTF8 encoded bytes.\n\t * @private\n\t */\n\t\tfunction stringToUTF8(input, output, start) {\n\t\t\tvar pos = start;\n\t\t\tfor (var i = 0; i>6 & 0x1F | 0xC0;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t} else if (charCode <= 0xFFFF) {\n\t\t\t\t\toutput[pos++] = charCode>>12 & 0x0F | 0xE0;\n\t\t\t\t\toutput[pos++] = charCode>>6 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t} else {\n\t\t\t\t\toutput[pos++] = charCode>>18 & 0x07 | 0xF0;\n\t\t\t\t\toutput[pos++] = charCode>>12 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode>>6 & 0x3F | 0x80;\n\t\t\t\t\toutput[pos++] = charCode & 0x3F | 0x80;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\tfunction parseUTF8(input, offset, length) {\n\t\t\tvar output = \"\";\n\t\t\tvar utf16;\n\t\t\tvar pos = offset;\n\n\t\t\twhile (pos < offset+length)\n\t\t\t{\n\t\t\t\tvar byte1 = input[pos++];\n\t\t\t\tif (byte1 < 128)\n\t\t\t\t\tutf16 = byte1;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tvar byte2 = input[pos++]-128;\n\t\t\t\t\tif (byte2 < 0)\n\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16),\"\"]));\n\t\t\t\t\tif (byte1 < 0xE0) // 2 byte character\n\t\t\t\t\t\tutf16 = 64*(byte1-0xC0) + byte2;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tvar byte3 = input[pos++]-128;\n\t\t\t\t\t\tif (byte3 < 0)\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16)]));\n\t\t\t\t\t\tif (byte1 < 0xF0) // 3 byte character\n\t\t\t\t\t\t\tutf16 = 4096*(byte1-0xE0) + 64*byte2 + byte3;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvar byte4 = input[pos++]-128;\n\t\t\t\t\t\t\tif (byte4 < 0)\n\t\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n\t\t\t\t\t\t\tif (byte1 < 0xF8) // 4 byte character\n\t\t\t\t\t\t\t\tutf16 = 262144*(byte1-0xF0) + 4096*byte2 + 64*byte3 + byte4;\n\t\t\t\t\t\t\telse // longer encodings are not supported\n\t\t\t\t\t\t\t\tthrow new Error(format(ERROR.MALFORMED_UTF, [byte1.toString(16), byte2.toString(16), byte3.toString(16), byte4.toString(16)]));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (utf16 > 0xFFFF) // 4 byte character - express as a surrogate pair\n\t\t\t\t{\n\t\t\t\t\tutf16 -= 0x10000;\n\t\t\t\t\toutput += String.fromCharCode(0xD800 + (utf16 >> 10)); // lead character\n\t\t\t\t\tutf16 = 0xDC00 + (utf16 & 0x3FF); // trail character\n\t\t\t\t}\n\t\t\t\toutput += String.fromCharCode(utf16);\n\t\t\t}\n\t\t\treturn output;\n\t\t}\n\n\t\t/**\n\t * Repeat keepalive requests, monitor responses.\n\t * @ignore\n\t */\n\t\tvar Pinger = function(client, keepAliveInterval) {\n\t\t\tthis._client = client;\n\t\t\tthis._keepAliveInterval = keepAliveInterval*1000;\n\t\t\tthis.isReset = false;\n\n\t\t\tvar pingReq = new WireMessage(MESSAGE_TYPE.PINGREQ).encode();\n\n\t\t\tvar doTimeout = function (pinger) {\n\t\t\t\treturn function () {\n\t\t\t\t\treturn doPing.apply(pinger);\n\t\t\t\t};\n\t\t\t};\n\n\t\t\t/** @ignore */\n\t\t\tvar doPing = function() {\n\t\t\t\tif (!this.isReset) {\n\t\t\t\t\tthis._client._trace(\"Pinger.doPing\", \"Timed out\");\n\t\t\t\t\tthis._client._disconnected( ERROR.PING_TIMEOUT.code , format(ERROR.PING_TIMEOUT));\n\t\t\t\t} else {\n\t\t\t\t\tthis.isReset = false;\n\t\t\t\t\tthis._client._trace(\"Pinger.doPing\", \"send PINGREQ\");\n\t\t\t\t\tthis._client.socket.send(pingReq);\n\t\t\t\t\tthis.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.reset = function() {\n\t\t\t\tthis.isReset = true;\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t\tif (this._keepAliveInterval > 0)\n\t\t\t\t\tthis.timeout = setTimeout(doTimeout(this), this._keepAliveInterval);\n\t\t\t};\n\n\t\t\tthis.cancel = function() {\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t};\n\t\t};\n\n\t\t/**\n\t * Monitor request completion.\n\t * @ignore\n\t */\n\t\tvar Timeout = function(client, timeoutSeconds, action, args) {\n\t\t\tif (!timeoutSeconds)\n\t\t\t\ttimeoutSeconds = 30;\n\n\t\t\tvar doTimeout = function (action, client, args) {\n\t\t\t\treturn function () {\n\t\t\t\t\treturn action.apply(client, args);\n\t\t\t\t};\n\t\t\t};\n\t\t\tthis.timeout = setTimeout(doTimeout(action, client, args), timeoutSeconds * 1000);\n\n\t\t\tthis.cancel = function() {\n\t\t\t\tclearTimeout(this.timeout);\n\t\t\t};\n\t\t};\n\n\t/**\n\t * Internal implementation of the Websockets MQTT V3.1 client.\n\t *\n\t * @name Paho.ClientImpl @constructor\n\t * @param {String} host the DNS nameof the webSocket host.\n\t * @param {Number} port the port number for that host.\n\t * @param {String} clientId the MQ client identifier.\n\t */\n\t\tvar ClientImpl = function (uri, host, port, path, clientId) {\n\t\t// Check dependencies are satisfied in this browser.\n\t\t\tif (!(\"WebSocket\" in global && global.WebSocket !== null)) {\n\t\t\t\tthrow new Error(format(ERROR.UNSUPPORTED, [\"WebSocket\"]));\n\t\t\t}\n\t\t\tif (!(\"ArrayBuffer\" in global && global.ArrayBuffer !== null)) {\n\t\t\t\tthrow new Error(format(ERROR.UNSUPPORTED, [\"ArrayBuffer\"]));\n\t\t\t}\n\t\t\tthis._trace(\"Paho.Client\", uri, host, port, path, clientId);\n\n\t\t\tthis.host = host;\n\t\t\tthis.port = port;\n\t\t\tthis.path = path;\n\t\t\tthis.uri = uri;\n\t\t\tthis.clientId = clientId;\n\t\t\tthis._wsuri = null;\n\n\t\t\t// Local storagekeys are qualified with the following string.\n\t\t\t// The conditional inclusion of path in the key is for backward\n\t\t\t// compatibility to when the path was not configurable and assumed to\n\t\t\t// be /mqtt\n\t\t\tthis._localKey=host+\":\"+port+(path!=\"/mqtt\"?\":\"+path:\"\")+\":\"+clientId+\":\";\n\n\t\t\t// Create private instance-only message queue\n\t\t\t// Internal queue of messages to be sent, in sending order.\n\t\t\tthis._msg_queue = [];\n\t\t\tthis._buffered_msg_queue = [];\n\n\t\t\t// Messages we have sent and are expecting a response for, indexed by their respective message ids.\n\t\t\tthis._sentMessages = {};\n\n\t\t\t// Messages we have received and acknowleged and are expecting a confirm message for\n\t\t\t// indexed by their respective message ids.\n\t\t\tthis._receivedMessages = {};\n\n\t\t\t// Internal list of callbacks to be executed when messages\n\t\t\t// have been successfully sent over web socket, e.g. disconnect\n\t\t\t// when it doesn't have to wait for ACK, just message is dispatched.\n\t\t\tthis._notify_msg_sent = {};\n\n\t\t\t// Unique identifier for SEND messages, incrementing\n\t\t\t// counter as messages are sent.\n\t\t\tthis._message_identifier = 1;\n\n\t\t\t// Used to determine the transmission sequence of stored sent messages.\n\t\t\tthis._sequence = 0;\n\n\n\t\t\t// Load the local state, if any, from the saved version, only restore state relevant to this client.\n\t\t\tfor (var key in localStorage)\n\t\t\t\tif ( key.indexOf(\"Sent:\"+this._localKey) === 0 || key.indexOf(\"Received:\"+this._localKey) === 0)\n\t\t\t\t\tthis.restore(key);\n\t\t};\n\n\t\t// Messaging Client public instance members.\n\t\tClientImpl.prototype.host = null;\n\t\tClientImpl.prototype.port = null;\n\t\tClientImpl.prototype.path = null;\n\t\tClientImpl.prototype.uri = null;\n\t\tClientImpl.prototype.clientId = null;\n\n\t\t// Messaging Client private instance members.\n\t\tClientImpl.prototype.socket = null;\n\t\t/* true once we have received an acknowledgement to a CONNECT packet. */\n\t\tClientImpl.prototype.connected = false;\n\t\t/* The largest message identifier allowed, may not be larger than 2**16 but\n\t\t * if set smaller reduces the maximum number of outbound messages allowed.\n\t\t */\n\t\tClientImpl.prototype.maxMessageIdentifier = 65536;\n\t\tClientImpl.prototype.connectOptions = null;\n\t\tClientImpl.prototype.hostIndex = null;\n\t\tClientImpl.prototype.onConnected = null;\n\t\tClientImpl.prototype.onConnectionLost = null;\n\t\tClientImpl.prototype.onMessageDelivered = null;\n\t\tClientImpl.prototype.onMessageArrived = null;\n\t\tClientImpl.prototype.traceFunction = null;\n\t\tClientImpl.prototype._msg_queue = null;\n\t\tClientImpl.prototype._buffered_msg_queue = null;\n\t\tClientImpl.prototype._connectTimeout = null;\n\t\t/* The sendPinger monitors how long we allow before we send data to prove to the server that we are alive. */\n\t\tClientImpl.prototype.sendPinger = null;\n\t\t/* The receivePinger monitors how long we allow before we require evidence that the server is alive. */\n\t\tClientImpl.prototype.receivePinger = null;\n\t\tClientImpl.prototype._reconnectInterval = 1; // Reconnect Delay, starts at 1 second\n\t\tClientImpl.prototype._reconnecting = false;\n\t\tClientImpl.prototype._reconnectTimeout = null;\n\t\tClientImpl.prototype.disconnectedPublishing = false;\n\t\tClientImpl.prototype.disconnectedBufferSize = 5000;\n\n\t\tClientImpl.prototype.receiveBuffer = null;\n\n\t\tClientImpl.prototype._traceBuffer = null;\n\t\tClientImpl.prototype._MAX_TRACE_ENTRIES = 100;\n\n\t\tClientImpl.prototype.connect = function (connectOptions) {\n\t\t\tvar connectOptionsMasked = this._traceMask(connectOptions, \"password\");\n\t\t\tthis._trace(\"Client.connect\", connectOptionsMasked, this.socket, this.connected);\n\n\t\t\tif (this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\t\t\tif (this.socket)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"already connected\"]));\n\n\t\t\tif (this._reconnecting) {\n\t\t\t// connect() function is called while reconnect is in progress.\n\t\t\t// Terminate the auto reconnect process to use new connect options.\n\t\t\t\tthis._reconnectTimeout.cancel();\n\t\t\t\tthis._reconnectTimeout = null;\n\t\t\t\tthis._reconnecting = false;\n\t\t\t}\n\n\t\t\tthis.connectOptions = connectOptions;\n\t\t\tthis._reconnectInterval = 1;\n\t\t\tthis._reconnecting = false;\n\t\t\tif (connectOptions.uris) {\n\t\t\t\tthis.hostIndex = 0;\n\t\t\t\tthis._doConnect(connectOptions.uris[0]);\n\t\t\t} else {\n\t\t\t\tthis._doConnect(this.uri);\n\t\t\t}\n\n\t\t};\n\n\t\tClientImpl.prototype.subscribe = function (filter, subscribeOptions) {\n\t\t\tthis._trace(\"Client.subscribe\", filter, subscribeOptions);\n\n\t\t\tif (!this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.SUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n if (subscribeOptions.qos === undefined)\n subscribeOptions.qos = 0;\n wireMessage.requestedQos = [];\n for (var i = 0; i < wireMessage.topics.length; i++)\n wireMessage.requestedQos[i] = subscribeOptions.qos;\n\n\t\t\tif (subscribeOptions.onSuccess) {\n\t\t\t\twireMessage.onSuccess = function(grantedQos) {subscribeOptions.onSuccess({invocationContext:subscribeOptions.invocationContext,grantedQos:grantedQos});};\n\t\t\t}\n\n\t\t\tif (subscribeOptions.onFailure) {\n\t\t\t\twireMessage.onFailure = function(errorCode) {subscribeOptions.onFailure({invocationContext:subscribeOptions.invocationContext,errorCode:errorCode, errorMessage:format(errorCode)});};\n\t\t\t}\n\n\t\t\tif (subscribeOptions.timeout) {\n\t\t\t\twireMessage.timeOut = new Timeout(this, subscribeOptions.timeout, subscribeOptions.onFailure,\n\t\t\t\t\t[{invocationContext:subscribeOptions.invocationContext,\n\t\t\t\t\t\terrorCode:ERROR.SUBSCRIBE_TIMEOUT.code,\n\t\t\t\t\t\terrorMessage:format(ERROR.SUBSCRIBE_TIMEOUT)}]);\n\t\t\t}\n\n\t\t\t// All subscriptions return a SUBACK.\n\t\t\tthis._requires_ack(wireMessage);\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\t/** @ignore */\n\t\tClientImpl.prototype.unsubscribe = function(filter, unsubscribeOptions) {\n\t\t\tthis._trace(\"Client.unsubscribe\", filter, unsubscribeOptions);\n\n\t\t\tif (!this.connected)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\n var wireMessage = new WireMessage(MESSAGE_TYPE.UNSUBSCRIBE);\n wireMessage.topics = filter.constructor === Array ? filter : [filter];\n\n\t\t\tif (unsubscribeOptions.onSuccess) {\n\t\t\t\twireMessage.callback = function() {unsubscribeOptions.onSuccess({invocationContext:unsubscribeOptions.invocationContext});};\n\t\t\t}\n\t\t\tif (unsubscribeOptions.timeout) {\n\t\t\t\twireMessage.timeOut = new Timeout(this, unsubscribeOptions.timeout, unsubscribeOptions.onFailure,\n\t\t\t\t\t[{invocationContext:unsubscribeOptions.invocationContext,\n\t\t\t\t\t\terrorCode:ERROR.UNSUBSCRIBE_TIMEOUT.code,\n\t\t\t\t\t\terrorMessage:format(ERROR.UNSUBSCRIBE_TIMEOUT)}]);\n\t\t\t}\n\n\t\t\t// All unsubscribes return a SUBACK.\n\t\t\tthis._requires_ack(wireMessage);\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\tClientImpl.prototype.send = function (message) {\n\t\t\tthis._trace(\"Client.send\", message);\n\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.PUBLISH);\n\t\t\twireMessage.payloadMessage = message;\n\n\t\t\tif (this.connected) {\n\t\t\t// Mark qos 1 & 2 message as \"ACK required\"\n\t\t\t// For qos 0 message, invoke onMessageDelivered callback if there is one.\n\t\t\t// Then schedule the message.\n\t\t\t\tif (message.qos > 0) {\n\t\t\t\t\tthis._requires_ack(wireMessage);\n\t\t\t\t} else if (this.onMessageDelivered) {\n\t\t\t\t\tthis._notify_msg_sent[wireMessage] = this.onMessageDelivered(wireMessage.payloadMessage);\n\t\t\t\t}\n\t\t\t\tthis._schedule_message(wireMessage);\n\t\t\t} else {\n\t\t\t// Currently disconnected, will not schedule this message\n\t\t\t// Check if reconnecting is in progress and disconnected publish is enabled.\n\t\t\t\tif (this._reconnecting && this.disconnectedPublishing) {\n\t\t\t\t// Check the limit which include the \"required ACK\" messages\n\t\t\t\t\tvar messageCount = Object.keys(this._sentMessages).length + this._buffered_msg_queue.length;\n\t\t\t\t\tif (messageCount > this.disconnectedBufferSize) {\n\t\t\t\t\t\tthrow new Error(format(ERROR.BUFFER_FULL, [this.disconnectedBufferSize]));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (message.qos > 0) {\n\t\t\t\t\t\t// Mark this message as \"ACK required\"\n\t\t\t\t\t\t\tthis._requires_ack(wireMessage);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twireMessage.sequence = ++this._sequence;\n\t\t\t\t\t\t\t// Add messages in fifo order to array, by adding to start\n\t\t\t\t\t\t\tthis._buffered_msg_queue.unshift(wireMessage);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connected\"]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.disconnect = function () {\n\t\t\tthis._trace(\"Client.disconnect\");\n\n\t\t\tif (this._reconnecting) {\n\t\t\t// disconnect() function is called while reconnect is in progress.\n\t\t\t// Terminate the auto reconnect process.\n\t\t\t\tthis._reconnectTimeout.cancel();\n\t\t\t\tthis._reconnectTimeout = null;\n\t\t\t\tthis._reconnecting = false;\n\t\t\t}\n\n\t\t\tif (!this.socket)\n\t\t\t\tthrow new Error(format(ERROR.INVALID_STATE, [\"not connecting or connected\"]));\n\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.DISCONNECT);\n\n\t\t\t// Run the disconnected call back as soon as the message has been sent,\n\t\t\t// in case of a failure later on in the disconnect processing.\n\t\t\t// as a consequence, the _disconected call back may be run several times.\n\t\t\tthis._notify_msg_sent[wireMessage] = scope(this._disconnected, this);\n\n\t\t\tthis._schedule_message(wireMessage);\n\t\t};\n\n\t\tClientImpl.prototype.getTraceLog = function () {\n\t\t\tif ( this._traceBuffer !== null ) {\n\t\t\t\tthis._trace(\"Client.getTraceLog\", new Date());\n\t\t\t\tthis._trace(\"Client.getTraceLog in flight messages\", this._sentMessages.length);\n\t\t\t\tfor (var key in this._sentMessages)\n\t\t\t\t\tthis._trace(\"_sentMessages \",key, this._sentMessages[key]);\n\t\t\t\tfor (var key in this._receivedMessages)\n\t\t\t\t\tthis._trace(\"_receivedMessages \",key, this._receivedMessages[key]);\n\n\t\t\t\treturn this._traceBuffer;\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.startTrace = function () {\n\t\t\tif ( this._traceBuffer === null ) {\n\t\t\t\tthis._traceBuffer = [];\n\t\t\t}\n\t\t\tthis._trace(\"Client.startTrace\", new Date(), version);\n\t\t};\n\n\t\tClientImpl.prototype.stopTrace = function () {\n\t\t\tdelete this._traceBuffer;\n\t\t};\n\n\t\tClientImpl.prototype._doConnect = function (wsurl) {\n\t\t// When the socket is open, this client will send the CONNECT WireMessage using the saved parameters.\n\t\t\tif (this.connectOptions.useSSL) {\n\t\t\t\tvar uriParts = wsurl.split(\":\");\n\t\t\t\turiParts[0] = \"wss\";\n\t\t\t\twsurl = uriParts.join(\":\");\n\t\t\t}\n\t\t\tthis._wsuri = wsurl;\n\t\t\tthis.connected = false;\n\n\n\n\t\t\tif (this.connectOptions.mqttVersion < 4) {\n\t\t\t\tthis.socket = new WebSocket(wsurl, [\"mqttv3.1\"]);\n\t\t\t} else {\n\t\t\t\tthis.socket = new WebSocket(wsurl, [\"mqtt\"]);\n\t\t\t}\n\t\t\tthis.socket.binaryType = \"arraybuffer\";\n\t\t\tthis.socket.onopen = scope(this._on_socket_open, this);\n\t\t\tthis.socket.onmessage = scope(this._on_socket_message, this);\n\t\t\tthis.socket.onerror = scope(this._on_socket_error, this);\n\t\t\tthis.socket.onclose = scope(this._on_socket_close, this);\n\n\t\t\tthis.sendPinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\t\t\tthis.receivePinger = new Pinger(this, this.connectOptions.keepAliveInterval);\n\t\t\tif (this._connectTimeout) {\n\t\t\t\tthis._connectTimeout.cancel();\n\t\t\t\tthis._connectTimeout = null;\n\t\t\t}\n\t\t\tthis._connectTimeout = new Timeout(this, this.connectOptions.timeout, this._disconnected, [ERROR.CONNECT_TIMEOUT.code, format(ERROR.CONNECT_TIMEOUT)]);\n\t\t};\n\n\n\t\t// Schedule a new message to be sent over the WebSockets\n\t\t// connection. CONNECT messages cause WebSocket connection\n\t\t// to be started. All other messages are queued internally\n\t\t// until this has happened. When WS connection starts, process\n\t\t// all outstanding messages.\n\t\tClientImpl.prototype._schedule_message = function (message) {\n\t\t\t// Add messages in fifo order to array, by adding to start\n\t\t\tthis._msg_queue.unshift(message);\n\t\t\t// Process outstanding messages in the queue if we have an open socket, and have received CONNACK.\n\t\t\tif (this.connected) {\n\t\t\t\tthis._process_queue();\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype.store = function(prefix, wireMessage) {\n\t\t\tvar storedMessage = {type:wireMessage.type, messageIdentifier:wireMessage.messageIdentifier, version:1};\n\n\t\t\tswitch(wireMessage.type) {\n\t\t\tcase MESSAGE_TYPE.PUBLISH:\n\t\t\t\tif(wireMessage.pubRecReceived)\n\t\t\t\t\tstoredMessage.pubRecReceived = true;\n\n\t\t\t\t// Convert the payload to a hex string.\n\t\t\t\tstoredMessage.payloadMessage = {};\n\t\t\t\tvar hex = \"\";\n\t\t\t\tvar messageBytes = wireMessage.payloadMessage.payloadBytes;\n\t\t\t\tfor (var i=0; i= 2) {\n\t\t\t\t\tvar x = parseInt(hex.substring(0, 2), 16);\n\t\t\t\t\thex = hex.substring(2, hex.length);\n\t\t\t\t\tbyteStream[i++] = x;\n\t\t\t\t}\n\t\t\t\tvar payloadMessage = new Message(byteStream);\n\n\t\t\t\tpayloadMessage.qos = storedMessage.payloadMessage.qos;\n\t\t\t\tpayloadMessage.destinationName = storedMessage.payloadMessage.destinationName;\n\t\t\t\tif (storedMessage.payloadMessage.duplicate)\n\t\t\t\t\tpayloadMessage.duplicate = true;\n\t\t\t\tif (storedMessage.payloadMessage.retained)\n\t\t\t\t\tpayloadMessage.retained = true;\n\t\t\t\twireMessage.payloadMessage = payloadMessage;\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(format(ERROR.INVALID_STORED_DATA, [key, value]));\n\t\t\t}\n\n\t\t\tif (key.indexOf(\"Sent:\"+this._localKey) === 0) {\n\t\t\t\twireMessage.payloadMessage.duplicate = true;\n\t\t\t\tthis._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\t} else if (key.indexOf(\"Received:\"+this._localKey) === 0) {\n\t\t\t\tthis._receivedMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype._process_queue = function () {\n\t\t\tvar message = null;\n\n\t\t\t// Send all queued messages down socket connection\n\t\t\twhile ((message = this._msg_queue.pop())) {\n\t\t\t\tthis._socket_send(message);\n\t\t\t\t// Notify listeners that message was successfully sent\n\t\t\t\tif (this._notify_msg_sent[message]) {\n\t\t\t\t\tthis._notify_msg_sent[message]();\n\t\t\t\t\tdelete this._notify_msg_sent[message];\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Expect an ACK response for this message. Add message to the set of in progress\n\t * messages and set an unused identifier in this message.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._requires_ack = function (wireMessage) {\n\t\t\tvar messageCount = Object.keys(this._sentMessages).length;\n\t\t\tif (messageCount > this.maxMessageIdentifier)\n\t\t\t\tthrow Error (\"Too many messages:\"+messageCount);\n\n\t\t\twhile(this._sentMessages[this._message_identifier] !== undefined) {\n\t\t\t\tthis._message_identifier++;\n\t\t\t}\n\t\t\twireMessage.messageIdentifier = this._message_identifier;\n\t\t\tthis._sentMessages[wireMessage.messageIdentifier] = wireMessage;\n\t\t\tif (wireMessage.type === MESSAGE_TYPE.PUBLISH) {\n\t\t\t\tthis.store(\"Sent:\", wireMessage);\n\t\t\t}\n\t\t\tif (this._message_identifier === this.maxMessageIdentifier) {\n\t\t\t\tthis._message_identifier = 1;\n\t\t\t}\n\t\t};\n\n\t\t/**\n\t * Called when the underlying websocket has been opened.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._on_socket_open = function () {\n\t\t// Create the CONNECT message object.\n\t\t\tvar wireMessage = new WireMessage(MESSAGE_TYPE.CONNECT, this.connectOptions);\n\t\t\twireMessage.clientId = this.clientId;\n\t\t\tthis._socket_send(wireMessage);\n\t\t};\n\n\t\t/**\n\t * Called when the underlying websocket has received a complete packet.\n\t * @ignore\n\t */\n\t\tClientImpl.prototype._on_socket_message = function (event) {\n\t\t\tthis._trace(\"Client._on_socket_message\", event.data);\n\t\t\tvar messages = this._deframeMessages(event.data);\n\t\t\tfor (var i = 0; i < messages.length; i+=1) {\n\t\t\t\tthis._handleMessage(messages[i]);\n\t\t\t}\n\t\t};\n\n\t\tClientImpl.prototype._deframeMessages = function(data) {\n\t\t\tvar byteArray = new Uint8Array(data);\n\t\t\tvar messages = [];\n\t\t\tif (this.receiveBuffer) {\n\t\t\t\tvar newData = new Uint8Array(this.receiveBuffer.length+byteArray.length);\n\t\t\t\tnewData.set(this.receiveBuffer);\n\t\t\t\tnewData.set(byteArray,this.receiveBuffer.length);\n\t\t\t\tbyteArray = newData;\n\t\t\t\tdelete this.receiveBuffer;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tvar offset = 0;\n\t\t\t\twhile(offset < byteArray.length) {\n\t\t\t\t\tvar result = decodeMessage(byteArray,offset);\n\t\t\t\t\tvar wireMessage = result[0];\n\t\t\t\t\toffset = result[1];\n\t\t\t\t\tif (wireMessage !== null) {\n\t\t\t\t\t\tmessages.push(wireMessage);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (offset < byteArray.length) {\n\t\t\t\t\tthis.receiveBuffer = byteArray.subarray(offset);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tvar errorStack = ((error.hasOwnProperty(\"stack\") == \"undefined\") ? error.stack.toString() : \"No Error Stack Available\");\n\t\t\t\tthis._disconnected(ERROR.INTERNAL_ERROR.code , format(ERROR.INTERNAL_ERROR, [error.message,errorStack]));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn messages;\n\t\t};\n\n\t\tClientImpl.prototype._handleMessage = function(wireMessage) {\n\n\t\t\tthis._trace(\"Client._handleMessage\", wireMessage);\n\n\t\t\ttry {\n\t\t\t\tswitch(wireMessage.type) {\n\t\t\t\tcase MESSAGE_TYPE.CONNACK:\n\t\t\t\t\tthis._connectTimeout.cancel();\n\t\t\t\t\tif (this._reconnectTimeout)\n\t\t\t\t\t\tthis._reconnectTimeout.cancel();\n\n\t\t\t\t\t// If we have started using clean session then clear up the local state.\n\t\t\t\t\tif (this.connectOptions.cleanSession) {\n\t\t\t\t\t\tfor (var key in this._sentMessages) {\n\t\t\t\t\t\t\tvar sentMessage = this._sentMessages[key];\n\t\t\t\t\t\t\tlocalStorage.removeItem(\"Sent:\"+this._localKey+sentMessage.messageIdentifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._sentMessages = {};\n\n\t\t\t\t\t\tfor (var key in this._receivedMessages) {\n\t\t\t\t\t\t\tvar receivedMessage = this._receivedMessages[key];\n\t\t\t\t\t\t\tlocalStorage.removeItem(\"Received:\"+this._localKey+receivedMessage.messageIdentifier);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._receivedMessages = {};\n\t\t\t\t\t}\n\t\t\t\t\t// Client connected and ready for business.\n\t\t\t\t\tif (wireMessage.returnCode === 0) {\n\n\t\t\t\t\t\tthis.connected = true;\n\t\t\t\t\t\t// Jump to the end of the list of uris and stop looking for a good host.\n\n\t\t\t\t\t\tif (this.connectOptions.uris)\n\t\t\t\t\t\t\tthis.hostIndex = this.connectOptions.uris.length;\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis._disconnected(ERROR.CONNACK_RETURNCODE.code , format(ERROR.CONNACK_RETURNCODE, [wireMessage.returnCode, CONNACK_RC[wireMessage.returnCode]]));\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Resend messages.\n\t\t\t\t\tvar sequencedMessages = [];\n\t\t\t\t\tfor (var msgId in this._sentMessages) {\n\t\t\t\t\t\tif (this._sentMessages.hasOwnProperty(msgId))\n\t\t\t\t\t\t\tsequencedMessages.push(this._sentMessages[msgId]);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Also schedule qos 0 buffered messages if any\n\t\t\t\t\tif (this._buffered_msg_queue.length > 0) {\n\t\t\t\t\t\tvar msg = null;\n\t\t\t\t\t\twhile ((msg = this._buffered_msg_queue.pop())) {\n\t\t\t\t\t\t\tsequencedMessages.push(msg);\n\t\t\t\t\t\t\tif (this.onMessageDelivered)\n\t\t\t\t\t\t\t\tthis._notify_msg_sent[msg] = this.onMessageDelivered(msg.payloadMessage);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Sort sentMessages into the original sent order.\n\t\t\t\t\tvar sequencedMessages = sequencedMessages.sort(function(a,b) {return a.sequence - b.sequence;} );\n\t\t\t\t\tfor (var i=0, len=sequencedMessages.length; i\n\t * Most applications will create just one Client object and then call its connect() method,\n\t * however applications can create more than one Client object if they wish.\n\t * In this case the combination of host, port and clientId attributes must be different for each Client object.\n\t *

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

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

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

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

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

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

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

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

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

\n\t * @property {Boolean} duplicate read only If true, this message might be a duplicate of one which has already been received.\n\t * This is only set on messages received from the server.\n\t *\n\t */\n\t\tvar Message = function (newPayload) {\n\t\t\tvar payload;\n\t\t\tif ( typeof newPayload === \"string\" ||\n\t\tnewPayload instanceof ArrayBuffer ||\n\t\t(ArrayBuffer.isView(newPayload) && !(newPayload instanceof DataView))\n\t\t\t) {\n\t\t\t\tpayload = newPayload;\n\t\t\t} else {\n\t\t\t\tthrow (format(ERROR.INVALID_ARGUMENT, [newPayload, \"newPayload\"]));\n\t\t\t}\n\n\t\t\tvar destinationName;\n\t\t\tvar qos = 0;\n\t\t\tvar retained = false;\n\t\t\tvar duplicate = false;\n\n\t\t\tObject.defineProperties(this,{\n\t\t\t\t\"payloadString\":{\n\t\t\t\t\tenumerable : true,\n\t\t\t\t\tget : function () {\n\t\t\t\t\t\tif (typeof payload === \"string\")\n\t\t\t\t\t\t\treturn payload;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\treturn parseUTF8(payload, 0, payload.length);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"payloadBytes\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() {\n\t\t\t\t\t\tif (typeof payload === \"string\") {\n\t\t\t\t\t\t\tvar buffer = new ArrayBuffer(UTF8Length(payload));\n\t\t\t\t\t\t\tvar byteStream = new Uint8Array(buffer);\n\t\t\t\t\t\t\tstringToUTF8(payload, byteStream, 0);\n\n\t\t\t\t\t\t\treturn byteStream;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn payload;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"destinationName\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return destinationName; },\n\t\t\t\t\tset: function(newDestinationName) {\n\t\t\t\t\t\tif (typeof newDestinationName === \"string\")\n\t\t\t\t\t\t\tdestinationName = newDestinationName;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [newDestinationName, \"newDestinationName\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"qos\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return qos; },\n\t\t\t\t\tset: function(newQos) {\n\t\t\t\t\t\tif (newQos === 0 || newQos === 1 || newQos === 2 )\n\t\t\t\t\t\t\tqos = newQos;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(\"Invalid argument:\"+newQos);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"retained\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return retained; },\n\t\t\t\t\tset: function(newRetained) {\n\t\t\t\t\t\tif (typeof newRetained === \"boolean\")\n\t\t\t\t\t\t\tretained = newRetained;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthrow new Error(format(ERROR.INVALID_ARGUMENT, [newRetained, \"newRetained\"]));\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t\"topic\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return destinationName; },\n\t\t\t\t\tset: function(newTopic) {destinationName=newTopic;}\n\t\t\t\t},\n\t\t\t\t\"duplicate\":{\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function() { return duplicate; },\n\t\t\t\t\tset: function(newDuplicate) {duplicate=newDuplicate;}\n\t\t\t\t}\n\t\t\t});\n\t\t};\n\n\t\t// Module contents.\n\t\treturn {\n\t\t\tClient: Client,\n\t\t\tMessage: Message\n\t\t};\n\t// eslint-disable-next-line no-nested-ternary\n\t})(typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n\treturn PahoMQTT;\n});\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function 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\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.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};\n\n// Provide aliases for supported request methods\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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\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(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\n }\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 */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","'use strict';\n\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 */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","import './VSlider.sass'\n\n// Components\nimport VInput from '../VInput'\nimport { VScaleTransition } from '../transitions'\n\n// Mixins\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport Loadable from '../../mixins/loadable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport { addOnceEventListener, deepEqual, keyCodes, createRange, convertToUnit, passiveSupported } from '../../util/helpers'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { VNode, VNodeChildrenArrayContents, PropType } from 'vue'\nimport { ScopedSlotChildren } from 'vue/types/vnode'\nimport { PropValidator } from 'vue/types/options'\n\ninterface options extends Vue {\n $refs: {\n track: HTMLElement\n }\n}\n\nexport default mixins\n/* eslint-enable indent */\n>(\n VInput,\n Loadable\n/* @vue/component */\n).extend({\n name: 'v-slider',\n\n directives: {\n ClickOutside,\n },\n\n mixins: [Loadable],\n\n props: {\n disabled: Boolean,\n inverseLabel: Boolean,\n max: {\n type: [Number, String],\n default: 100,\n },\n min: {\n type: [Number, String],\n default: 0,\n },\n step: {\n type: [Number, String],\n default: 1,\n },\n thumbColor: String,\n thumbLabel: {\n type: [Boolean, String] as PropType,\n default: undefined,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n thumbSize: {\n type: [Number, String],\n default: 32,\n },\n tickLabels: {\n type: Array,\n default: () => ([]),\n } as PropValidator,\n ticks: {\n type: [Boolean, String] as PropType,\n default: false,\n validator: v => typeof v === 'boolean' || v === 'always',\n },\n tickSize: {\n type: [Number, String],\n default: 2,\n },\n trackColor: String,\n trackFillColor: String,\n value: [Number, String],\n vertical: Boolean,\n },\n\n data: () => ({\n app: null as any,\n oldValue: null as any,\n thumbPressed: false,\n mouseTimeout: -1,\n isFocused: false,\n isActive: false,\n noClick: false, // Prevent click event if dragging took place, hack for #7915\n startOffset: 0,\n }),\n\n computed: {\n classes (): object {\n return {\n ...VInput.options.computed.classes.call(this),\n 'v-input__slider': true,\n 'v-input__slider--vertical': this.vertical,\n 'v-input__slider--inverse-label': this.inverseLabel,\n }\n },\n internalValue: {\n get (): number {\n return this.lazyValue\n },\n set (val: number) {\n val = isNaN(val) ? this.minValue : val\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n const value = this.roundValue(Math.min(Math.max(val, this.minValue), this.maxValue))\n\n if (value === this.lazyValue) return\n\n this.lazyValue = value\n\n this.$emit('input', value)\n },\n },\n trackTransition (): string {\n return this.thumbPressed\n ? this.showTicks || this.stepNumeric\n ? '0.1s cubic-bezier(0.25, 0.8, 0.5, 1)'\n : 'none'\n : ''\n },\n minValue (): number {\n return parseFloat(this.min)\n },\n maxValue (): number {\n return parseFloat(this.max)\n },\n stepNumeric (): number {\n return this.step > 0 ? parseFloat(this.step) : 0\n },\n inputWidth (): number {\n const inputWidth = (this.roundValue(this.internalValue) - this.minValue) / (this.maxValue - this.minValue) * 100\n\n return isNaN(inputWidth) ? 0 : inputWidth\n },\n trackFillStyles (): Partial {\n const startDir = this.vertical ? 'bottom' : 'left'\n const endDir = this.vertical ? 'top' : 'right'\n const valueDir = this.vertical ? 'height' : 'width'\n\n const start = this.$vuetify.rtl ? 'auto' : '0'\n const end = this.$vuetify.rtl ? '0' : 'auto'\n const value = this.isDisabled ? `calc(${this.inputWidth}% - 10px)` : `${this.inputWidth}%`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n [valueDir]: value,\n }\n },\n trackStyles (): Partial {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'bottom' : 'top' : this.$vuetify.rtl ? 'left' : 'right'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = '0px'\n const end = this.isDisabled ? `calc(${100 - this.inputWidth}% - 10px)` : `calc(${100 - this.inputWidth}%)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n showTicks (): boolean {\n return this.tickLabels.length > 0 ||\n !!(!this.isDisabled && this.stepNumeric && this.ticks)\n },\n numTicks (): number {\n return Math.ceil((this.maxValue - this.minValue) / this.stepNumeric)\n },\n showThumbLabel (): boolean {\n return !this.isDisabled && !!(\n this.thumbLabel ||\n this.$scopedSlots['thumb-label']\n )\n },\n computedTrackColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackColor) return this.trackColor\n if (this.isDark) return this.validationState\n return this.validationState || 'primary lighten-3'\n },\n computedTrackFillColor (): string | undefined {\n if (this.isDisabled) return undefined\n if (this.trackFillColor) return this.trackFillColor\n return this.validationState || this.computedColor\n },\n computedThumbColor (): string | undefined {\n if (this.thumbColor) return this.thumbColor\n return this.validationState || this.computedColor\n },\n },\n\n watch: {\n min (val) {\n const parsed = parseFloat(val)\n parsed > this.internalValue && this.$emit('input', parsed)\n },\n max (val) {\n const parsed = parseFloat(val)\n parsed < this.internalValue && this.$emit('input', parsed)\n },\n value: {\n handler (v: number) {\n this.internalValue = v\n },\n },\n },\n\n // If done in as immediate in\n // value watcher, causes issues\n // with vue-test-utils\n beforeMount () {\n this.internalValue = this.value\n },\n\n mounted () {\n // Without a v-app, iOS does not work with body selectors\n this.app = document.querySelector('[data-app]') ||\n consoleWarn('Missing v-app or a non-body wrapping element with the [data-app] attribute', this)\n },\n\n methods: {\n genDefaultSlot (): VNodeChildrenArrayContents {\n const children: VNodeChildrenArrayContents = [this.genLabel()]\n const slider = this.genSlider()\n this.inverseLabel\n ? children.unshift(slider)\n : children.push(slider)\n\n children.push(this.genProgress())\n\n return children\n },\n genSlider (): VNode {\n return this.$createElement('div', {\n class: {\n 'v-slider': true,\n 'v-slider--horizontal': !this.vertical,\n 'v-slider--vertical': this.vertical,\n 'v-slider--focused': this.isFocused,\n 'v-slider--active': this.isActive,\n 'v-slider--disabled': this.isDisabled,\n 'v-slider--readonly': this.isReadonly,\n ...this.themeClasses,\n },\n directives: [{\n name: 'click-outside',\n value: this.onBlur,\n }],\n on: {\n click: this.onSliderClick,\n mousedown: this.onSliderMouseDown,\n touchstart: this.onSliderMouseDown,\n },\n }, this.genChildren())\n },\n genChildren (): VNodeChildrenArrayContents {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n this.genThumbContainer(\n this.internalValue,\n this.inputWidth,\n this.isActive,\n this.isFocused,\n this.onFocus,\n this.onBlur,\n ),\n ]\n },\n genInput (): VNode {\n return this.$createElement('input', {\n attrs: {\n value: this.internalValue,\n id: this.computedId,\n disabled: true,\n readonly: true,\n tabindex: -1,\n ...this.$attrs,\n },\n // on: this.genListeners(), // TODO: do we need to attach the listeners to input?\n })\n },\n genTrackContainer (): VNode {\n const children = [\n this.$createElement('div', this.setBackgroundColor(this.computedTrackColor, {\n staticClass: 'v-slider__track-background',\n style: this.trackStyles,\n })),\n this.$createElement('div', this.setBackgroundColor(this.computedTrackFillColor, {\n staticClass: 'v-slider__track-fill',\n style: this.trackFillStyles,\n })),\n ]\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genSteps (): VNode | null {\n if (!this.step || !this.showTicks) return null\n\n const tickSize = parseFloat(this.tickSize)\n const range = createRange(this.numTicks + 1)\n const direction = this.vertical ? 'bottom' : (this.$vuetify.rtl ? 'right' : 'left')\n const offsetDirection = this.vertical ? (this.$vuetify.rtl ? 'left' : 'right') : 'top'\n\n if (this.vertical) range.reverse()\n\n const ticks = range.map(index => {\n const children = []\n\n if (this.tickLabels[index]) {\n children.push(this.$createElement('div', {\n staticClass: 'v-slider__tick-label',\n }, this.tickLabels[index]))\n }\n\n const width = index * (100 / this.numTicks)\n const filled = this.$vuetify.rtl ? (100 - this.inputWidth) < width : width < this.inputWidth\n\n return this.$createElement('span', {\n key: index,\n staticClass: 'v-slider__tick',\n class: {\n 'v-slider__tick--filled': filled,\n },\n style: {\n width: `${tickSize}px`,\n height: `${tickSize}px`,\n [direction]: `calc(${width}% - ${tickSize / 2}px)`,\n [offsetDirection]: `calc(50% - ${tickSize / 2}px)`,\n },\n }, children)\n })\n\n return this.$createElement('div', {\n staticClass: 'v-slider__ticks-container',\n class: {\n 'v-slider__ticks-container--always-show': this.ticks === 'always' || this.tickLabels.length > 0,\n },\n }, ticks)\n },\n genThumbContainer (\n value: number,\n valueWidth: number,\n isActive: boolean,\n isFocused: boolean,\n onFocus: Function,\n onBlur: Function,\n ref = 'thumb'\n ): VNode {\n const children = [this.genThumb()]\n\n const thumbLabelContent = this.genThumbLabelContent(value)\n this.showThumbLabel && children.push(this.genThumbLabel(thumbLabelContent))\n\n return this.$createElement('div', this.setTextColor(this.computedThumbColor, {\n ref,\n key: ref,\n staticClass: 'v-slider__thumb-container',\n class: {\n 'v-slider__thumb-container--active': isActive,\n 'v-slider__thumb-container--focused': isFocused,\n 'v-slider__thumb-container--show-label': this.showThumbLabel,\n },\n style: this.getThumbContainerStyles(valueWidth),\n attrs: {\n role: 'slider',\n tabindex: this.isDisabled ? -1 : this.$attrs.tabindex ? this.$attrs.tabindex : 0,\n 'aria-label': this.$attrs['aria-label'] || this.label,\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': this.internalValue,\n 'aria-readonly': String(this.isReadonly),\n 'aria-orientation': this.vertical ? 'vertical' : 'horizontal',\n },\n on: {\n focus: onFocus,\n blur: onBlur,\n keydown: this.onKeyDown,\n },\n }), children)\n },\n genThumbLabelContent (value: number | string): ScopedSlotChildren {\n return this.$scopedSlots['thumb-label']\n ? this.$scopedSlots['thumb-label']!({ value })\n : [this.$createElement('span', [String(value)])]\n },\n genThumbLabel (content: ScopedSlotChildren): VNode {\n const size = convertToUnit(this.thumbSize)\n\n const transform = this.vertical\n ? `translateY(20%) translateY(${(Number(this.thumbSize) / 3) - 1}px) translateX(55%) rotate(135deg)`\n : `translateY(-20%) translateY(-12px) translateX(-50%) rotate(45deg)`\n\n return this.$createElement(VScaleTransition, {\n props: { origin: 'bottom center' },\n }, [\n this.$createElement('div', {\n staticClass: 'v-slider__thumb-label-container',\n directives: [{\n name: 'show',\n value: this.isFocused || this.isActive || this.thumbLabel === 'always',\n }],\n }, [\n this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb-label',\n style: {\n height: size,\n width: size,\n transform,\n },\n }), [this.$createElement('div', content)]),\n ]),\n ])\n },\n genThumb (): VNode {\n return this.$createElement('div', this.setBackgroundColor(this.computedThumbColor, {\n staticClass: 'v-slider__thumb',\n }))\n },\n getThumbContainerStyles (width: number): object {\n const direction = this.vertical ? 'top' : 'left'\n let value = this.$vuetify.rtl ? 100 - width : width\n value = this.vertical ? 100 - value : value\n\n return {\n transition: this.trackTransition,\n [direction]: `${value}%`,\n }\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n e.preventDefault()\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderMouseUp (e: Event) {\n e.stopPropagation()\n window.clearTimeout(this.mouseTimeout)\n this.thumbPressed = false\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n this.app.removeEventListener('touchmove', this.onMouseMove, mouseMoveOptions)\n this.app.removeEventListener('mousemove', this.onMouseMove, mouseMoveOptions)\n\n this.$emit('mouseup', e)\n this.$emit('end', this.internalValue)\n if (!deepEqual(this.oldValue, this.internalValue)) {\n this.$emit('change', this.internalValue)\n this.noClick = true\n }\n\n this.isActive = false\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n this.internalValue = this.parseMouseMove(e)\n },\n onKeyDown (e: KeyboardEvent) {\n if (!this.isInteractive) return\n\n const value = this.parseKeyDown(e, this.internalValue)\n\n if (\n value == null ||\n value < this.minValue ||\n value > this.maxValue\n ) return\n\n this.internalValue = value\n this.$emit('change', value)\n },\n onSliderClick (e: MouseEvent) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n const thumb = this.$refs.thumb as HTMLElement\n thumb.focus()\n\n this.onMouseMove(e)\n this.$emit('change', this.internalValue)\n },\n onBlur (e: Event) {\n this.isFocused = false\n\n this.$emit('blur', e)\n },\n onFocus (e: Event) {\n this.isFocused = true\n\n this.$emit('focus', e)\n },\n parseMouseMove (e: MouseEvent | TouchEvent) {\n const start = this.vertical ? 'top' : 'left'\n const length = this.vertical ? 'height' : 'width'\n const click = this.vertical ? 'clientY' : 'clientX'\n\n const {\n [start]: trackStart,\n [length]: trackLength,\n } = this.$refs.track.getBoundingClientRect()\n const clickOffset = 'touches' in e ? e.touches[0][click] : e[click]\n\n // It is possible for left to be NaN, force to number\n let clickPos = Math.min(Math.max((clickOffset - trackStart - this.startOffset) / trackLength, 0), 1) || 0\n\n if (this.vertical) clickPos = 1 - clickPos\n if (this.$vuetify.rtl) clickPos = 1 - clickPos\n\n return parseFloat(this.min) + clickPos * (this.maxValue - this.minValue)\n },\n parseKeyDown (e: KeyboardEvent, value: number) {\n if (!this.isInteractive) return\n\n const { pageup, pagedown, end, home, left, right, down, up } = keyCodes\n\n if (![pageup, pagedown, end, home, left, right, down, up].includes(e.keyCode)) return\n\n e.preventDefault()\n const step = this.stepNumeric || 1\n const steps = (this.maxValue - this.minValue) / step\n if ([left, right, down, up].includes(e.keyCode)) {\n const increase = this.$vuetify.rtl ? [left, up] : [right, up]\n const direction = increase.includes(e.keyCode) ? 1 : -1\n const multiplier = e.shiftKey ? 3 : (e.ctrlKey ? 2 : 1)\n\n value = value + (direction * step * multiplier)\n } else if (e.keyCode === home) {\n value = this.minValue\n } else if (e.keyCode === end) {\n value = this.maxValue\n } else {\n const direction = e.keyCode === pagedown ? 1 : -1\n value = value - (direction * step * (steps > 100 ? steps / 10 : 10))\n }\n\n return value\n },\n roundValue (value: number): number {\n if (!this.stepNumeric) return value\n // Format input value using the same number\n // of decimals places as in the step prop\n const trimmedStep = this.step.toString().trim()\n const decimals = trimmedStep.indexOf('.') > -1\n ? (trimmedStep.length - trimmedStep.indexOf('.') - 1)\n : 0\n const offset = this.minValue % this.stepNumeric\n\n const newValue = Math.round((value - offset) / this.stepNumeric) * this.stepNumeric + offset\n\n return parseFloat(Math.min(newValue, this.maxValue).toFixed(decimals))\n },\n },\n})\n","import VSlider from './VSlider'\n\nexport { VSlider }\nexport default VSlider\n","// Styles\nimport './VRangeSlider.sass'\n\n// Components\nimport VSlider from '../VSlider'\n\n// Helpers\nimport {\n addOnceEventListener,\n createRange,\n deepEqual,\n passiveSupported,\n} from '../../util/helpers'\n\n// Types\nimport { PropValidator } from 'vue/types/options'\n\n/* @vue/component */\nexport default VSlider.extend({\n name: 'v-range-slider',\n\n props: {\n value: {\n type: Array,\n default: () => ([0, 0]),\n } as unknown as PropValidator<[number, number]>,\n },\n\n data () {\n return {\n activeThumb: null as null | number,\n lazyValue: this.value,\n }\n },\n\n computed: {\n classes (): object {\n return {\n ...VSlider.options.computed.classes.call(this),\n 'v-input--range-slider': true,\n }\n },\n internalValue: {\n get (): number[] {\n return this.lazyValue\n },\n set (val: number[]) {\n // Round value to ensure the\n // entire slider range can\n // be selected with step\n let value = val.map((v = 0) => this.roundValue(Math.min(Math.max(v, this.minValue), this.maxValue)))\n\n // Switch values if range and wrong order\n if (value[0] > value[1] || value[1] < value[0]) {\n if (this.activeThumb !== null) {\n const toFocus = this.activeThumb === 1 ? 0 : 1\n const el = this.$refs[`thumb_${toFocus}`] as HTMLElement\n el.focus()\n }\n value = [value[1], value[0]]\n }\n\n this.lazyValue = value\n if (!deepEqual(value, this.value)) this.$emit('input', value)\n\n this.validate()\n },\n },\n inputWidth (): number[] {\n return this.internalValue.map((v: number) => (\n this.roundValue(v) - this.minValue) / (this.maxValue - this.minValue) * 100\n )\n },\n },\n\n methods: {\n getTrackStyle (startLength: number, endLength: number, startPadding = 0, endPadding = 0) {\n const startDir = this.vertical ? this.$vuetify.rtl ? 'top' : 'bottom' : this.$vuetify.rtl ? 'right' : 'left'\n const endDir = this.vertical ? 'height' : 'width'\n\n const start = `calc(${startLength}% + ${startPadding}px)`\n const end = `calc(${endLength}% + ${endPadding}px)`\n\n return {\n transition: this.trackTransition,\n [startDir]: start,\n [endDir]: end,\n }\n },\n getIndexOfClosestValue (arr: number[], v: number) {\n if (Math.abs(arr[0] - v) < Math.abs(arr[1] - v)) return 0\n else return 1\n },\n genInput () {\n return createRange(2).map(i => {\n const input = VSlider.options.methods.genInput.call(this)\n\n input.data = input.data || {}\n input.data.attrs = input.data.attrs || {}\n input.data.attrs.value = this.internalValue[i]\n input.data.attrs.id = `input-${i ? 'max' : 'min'}-${this._uid}`\n\n return input\n })\n },\n genTrackContainer () {\n const children = []\n\n const padding = this.isDisabled ? 10 : 0\n const sections: { class: string, color: string | undefined, styles: [number, number, number, number] }[] = [\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [0, this.inputWidth[0], 0, -padding],\n },\n {\n class: this.isDisabled ? 'v-slider__track-background' : 'v-slider__track-fill',\n color: this.isDisabled ? this.computedTrackColor : this.computedTrackFillColor,\n styles: [this.inputWidth[0], Math.abs(this.inputWidth[1] - this.inputWidth[0]), padding, padding * -2],\n },\n {\n class: 'v-slider__track-background',\n color: this.computedTrackColor,\n styles: [this.inputWidth[1], Math.abs(100 - this.inputWidth[1]), padding, -padding],\n },\n ]\n\n if (this.$vuetify.rtl) sections.reverse()\n\n children.push(...sections.map(section => this.$createElement('div', this.setBackgroundColor(section.color, {\n staticClass: section.class,\n style: this.getTrackStyle(...section.styles),\n }))))\n\n return this.$createElement('div', {\n staticClass: 'v-slider__track-container',\n ref: 'track',\n }, children)\n },\n genChildren () {\n return [\n this.genInput(),\n this.genTrackContainer(),\n this.genSteps(),\n createRange(2).map(index => {\n const value = this.internalValue[index]\n const onFocus = (e: Event) => {\n this.isFocused = true\n this.activeThumb = index\n\n this.$emit('focus', e)\n }\n\n const onBlur = (e: Event) => {\n this.isFocused = false\n this.activeThumb = null\n\n this.$emit('blur', e)\n }\n\n const valueWidth = this.inputWidth[index]\n const isActive = this.isActive && this.activeThumb === index\n const isFocused = this.isFocused && this.activeThumb === index\n\n return this.genThumbContainer(value, valueWidth, isActive, isFocused, onFocus, onBlur, `thumb_${index}`)\n }),\n ]\n },\n reevaluateSelected (value: number) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n const refName = `thumb_${this.activeThumb}`\n const thumbRef = this.$refs[refName] as HTMLElement\n thumbRef.focus()\n },\n onSliderMouseDown (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.oldValue = this.internalValue\n this.isActive = true\n\n if ((e.target as Element)?.matches('.v-slider__thumb-container, .v-slider__thumb-container *')) {\n this.thumbPressed = true\n const domRect = (e.target as Element).getBoundingClientRect()\n const touch = 'touches' in e ? e.touches[0] : e\n this.startOffset = this.vertical\n ? touch.clientY - (domRect.top + domRect.height / 2)\n : touch.clientX - (domRect.left + domRect.width / 2)\n } else {\n this.startOffset = 0\n window.clearTimeout(this.mouseTimeout)\n this.mouseTimeout = window.setTimeout(() => {\n this.thumbPressed = true\n }, 300)\n }\n\n const mouseUpOptions = passiveSupported ? { passive: true, capture: true } : true\n const mouseMoveOptions = passiveSupported ? { passive: true } : false\n\n const isTouchEvent = 'touches' in e\n\n this.onMouseMove(e)\n this.app.addEventListener(isTouchEvent ? 'touchmove' : 'mousemove', this.onMouseMove, mouseMoveOptions)\n addOnceEventListener(this.app, isTouchEvent ? 'touchend' : 'mouseup', this.onSliderMouseUp, mouseUpOptions)\n\n this.$emit('start', this.internalValue)\n },\n onSliderClick (e: MouseEvent) {\n if (!this.isActive) {\n if (this.noClick) {\n this.noClick = false\n return\n }\n\n const value = this.parseMouseMove(e)\n\n this.reevaluateSelected(value)\n\n this.setInternalValue(value)\n\n this.$emit('change', this.internalValue)\n }\n },\n onMouseMove (e: MouseEvent | TouchEvent) {\n const value = this.parseMouseMove(e)\n\n if (e.type === 'mousemove') {\n this.thumbPressed = true\n }\n\n if (this.activeThumb === null) {\n this.activeThumb = this.getIndexOfClosestValue(this.internalValue, value)\n }\n\n this.setInternalValue(value)\n },\n onKeyDown (e: KeyboardEvent) {\n if (this.activeThumb === null) return\n\n const value = this.parseKeyDown(e, this.internalValue[this.activeThumb])\n\n if (value == null) return\n\n this.setInternalValue(value)\n this.$emit('change', this.internalValue)\n },\n setInternalValue (value: number) {\n this.internalValue = this.internalValue.map((v: number, i: number) => {\n if (i === this.activeThumb) return value\n else return Number(v)\n })\n },\n },\n})\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\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 */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","/**\n * Converts a JS string from its native UCS-2/UTF-16 representation into a\n * Uint8Array of the bytes used to represent the equivalent characters in UTF-8.\n *\n * Cribbed from the `goog.crypt.stringToUtf8ByteArray` function in the Google\n * Closure library, though updated to use typed arrays.\n */\nexport var fromUtf8 = function (input) {\n var bytes = [];\n for (var i = 0, len = input.length; i < len; i++) {\n var value = input.charCodeAt(i);\n if (value < 0x80) {\n bytes.push(value);\n }\n else if (value < 0x800) {\n bytes.push((value >> 6) | 192, (value & 63) | 128);\n }\n else if (i + 1 < input.length && (value & 0xfc00) === 0xd800 && (input.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\n var surrogatePair = 0x10000 + ((value & 1023) << 10) + (input.charCodeAt(++i) & 1023);\n bytes.push((surrogatePair >> 18) | 240, ((surrogatePair >> 12) & 63) | 128, ((surrogatePair >> 6) & 63) | 128, (surrogatePair & 63) | 128);\n }\n else {\n bytes.push((value >> 12) | 224, ((value >> 6) & 63) | 128, (value & 63) | 128);\n }\n }\n return Uint8Array.from(bytes);\n};\n/**\n * Converts a typed array of bytes containing UTF-8 data into a native JS\n * string.\n *\n * Partly cribbed from the `goog.crypt.utf8ByteArrayToString` function in the\n * Google Closure library, though updated to use typed arrays and to better\n * handle astral plane code points.\n */\nexport var toUtf8 = function (input) {\n var decoded = \"\";\n for (var i = 0, len = input.length; i < len; i++) {\n var byte = input[i];\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n }\n else if (192 <= byte && byte < 224) {\n var nextByte = input[++i];\n decoded += String.fromCharCode(((byte & 31) << 6) | (nextByte & 63));\n }\n else if (240 <= byte && byte < 365) {\n var surrogatePair = [byte, input[++i], input[++i], input[++i]];\n var encoded = \"%\" + surrogatePair.map(function (byteValue) { return byteValue.toString(16); }).join(\"%\");\n decoded += decodeURIComponent(encoded);\n }\n else {\n decoded += String.fromCharCode(((byte & 15) << 12) | ((input[++i] & 63) << 6) | (input[++i] & 63));\n }\n }\n return decoded;\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVyZUpzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3B1cmVKcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsSUFBTSxRQUFRLEdBQUcsVUFBQyxLQUFhO0lBQ3BDLElBQU0sS0FBSyxHQUFrQixFQUFFLENBQUM7SUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRCxJQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksS0FBSyxHQUFHLElBQUksRUFBRTtZQUNoQixLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ25CO2FBQU0sSUFBSSxLQUFLLEdBQUcsS0FBSyxFQUFFO1lBQ3hCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBVSxFQUFFLENBQUMsS0FBSyxHQUFHLEVBQVEsQ0FBQyxHQUFHLEdBQVUsQ0FBQyxDQUFDO1NBQ3hFO2FBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssTUFBTSxFQUFFO1lBQy9HLElBQU0sYUFBYSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxHQUFHLElBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQVksQ0FBQyxDQUFDO1lBQ3hHLEtBQUssQ0FBQyxJQUFJLENBQ1IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBVSxFQUNsQyxDQUFDLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQVEsQ0FBQyxHQUFHLEdBQVUsRUFDL0MsQ0FBQyxDQUFDLGFBQWEsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFRLENBQUMsR0FBRyxHQUFVLEVBQzlDLENBQUMsYUFBYSxHQUFHLEVBQVEsQ0FBQyxHQUFHLEdBQVUsQ0FDeEMsQ0FBQztTQUNIO2FBQU07WUFDTCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQVUsRUFBRSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQVEsQ0FBQyxHQUFHLEdBQVUsRUFBRSxDQUFDLEtBQUssR0FBRyxFQUFRLENBQUMsR0FBRyxHQUFVLENBQUMsQ0FBQztTQUNqSDtLQUNGO0lBRUQsT0FBTyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDLENBQUMsQ0FBQztBQUVGOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLENBQUMsSUFBTSxNQUFNLEdBQUcsVUFBQyxLQUFpQjtJQUN0QyxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNoRCxJQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxFQUFFO1lBQ2YsT0FBTyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7YUFBTSxJQUFJLEdBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQVUsRUFBRTtZQUNsRCxJQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM1QixPQUFPLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxHQUFHLEVBQVEsQ0FBQyxDQUFDLENBQUM7U0FDakY7YUFBTSxJQUFJLEdBQVUsSUFBSSxJQUFJLElBQUksSUFBSSxHQUFHLEdBQVcsRUFBRTtZQUNuRCxJQUFNLGFBQWEsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pFLElBQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQUMsU0FBUyxJQUFLLE9BQUEsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBdEIsQ0FBc0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6RixPQUFPLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDeEM7YUFBTTtZQUNMLE9BQU8sSUFBSSxNQUFNLENBQUMsWUFBWSxDQUM1QixDQUFDLENBQUMsSUFBSSxHQUFHLEVBQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQVEsQ0FBQyxDQUNuRixDQUFDO1NBQ0g7S0FDRjtJQUVELE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29udmVydHMgYSBKUyBzdHJpbmcgZnJvbSBpdHMgbmF0aXZlIFVDUy0yL1VURi0xNiByZXByZXNlbnRhdGlvbiBpbnRvIGFcbiAqIFVpbnQ4QXJyYXkgb2YgdGhlIGJ5dGVzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBlcXVpdmFsZW50IGNoYXJhY3RlcnMgaW4gVVRGLTguXG4gKlxuICogQ3JpYmJlZCBmcm9tIHRoZSBgZ29vZy5jcnlwdC5zdHJpbmdUb1V0ZjhCeXRlQXJyYXlgIGZ1bmN0aW9uIGluIHRoZSBHb29nbGVcbiAqIENsb3N1cmUgbGlicmFyeSwgdGhvdWdoIHVwZGF0ZWQgdG8gdXNlIHR5cGVkIGFycmF5cy5cbiAqL1xuZXhwb3J0IGNvbnN0IGZyb21VdGY4ID0gKGlucHV0OiBzdHJpbmcpOiBVaW50OEFycmF5ID0+IHtcbiAgY29uc3QgYnl0ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGlucHV0Lmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgY29uc3QgdmFsdWUgPSBpbnB1dC5jaGFyQ29kZUF0KGkpO1xuICAgIGlmICh2YWx1ZSA8IDB4ODApIHtcbiAgICAgIGJ5dGVzLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSBpZiAodmFsdWUgPCAweDgwMCkge1xuICAgICAgYnl0ZXMucHVzaCgodmFsdWUgPj4gNikgfCAwYjExMDAwMDAwLCAodmFsdWUgJiAwYjExMTExMSkgfCAwYjEwMDAwMDAwKTtcbiAgICB9IGVsc2UgaWYgKGkgKyAxIDwgaW5wdXQubGVuZ3RoICYmICh2YWx1ZSAmIDB4ZmMwMCkgPT09IDB4ZDgwMCAmJiAoaW5wdXQuY2hhckNvZGVBdChpICsgMSkgJiAweGZjMDApID09PSAweGRjMDApIHtcbiAgICAgIGNvbnN0IHN1cnJvZ2F0ZVBhaXIgPSAweDEwMDAwICsgKCh2YWx1ZSAmIDBiMTExMTExMTExMSkgPDwgMTApICsgKGlucHV0LmNoYXJDb2RlQXQoKytpKSAmIDBiMTExMTExMTExMSk7XG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICAoc3Vycm9nYXRlUGFpciA+PiAxOCkgfCAwYjExMTEwMDAwLFxuICAgICAgICAoKHN1cnJvZ2F0ZVBhaXIgPj4gMTIpICYgMGIxMTExMTEpIHwgMGIxMDAwMDAwMCxcbiAgICAgICAgKChzdXJyb2dhdGVQYWlyID4+IDYpICYgMGIxMTExMTEpIHwgMGIxMDAwMDAwMCxcbiAgICAgICAgKHN1cnJvZ2F0ZVBhaXIgJiAwYjExMTExMSkgfCAwYjEwMDAwMDAwXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBieXRlcy5wdXNoKCh2YWx1ZSA+PiAxMikgfCAwYjExMTAwMDAwLCAoKHZhbHVlID4+IDYpICYgMGIxMTExMTEpIHwgMGIxMDAwMDAwMCwgKHZhbHVlICYgMGIxMTExMTEpIHwgMGIxMDAwMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIFVpbnQ4QXJyYXkuZnJvbShieXRlcyk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgdHlwZWQgYXJyYXkgb2YgYnl0ZXMgY29udGFpbmluZyBVVEYtOCBkYXRhIGludG8gYSBuYXRpdmUgSlNcbiAqIHN0cmluZy5cbiAqXG4gKiBQYXJ0bHkgY3JpYmJlZCBmcm9tIHRoZSBgZ29vZy5jcnlwdC51dGY4Qnl0ZUFycmF5VG9TdHJpbmdgIGZ1bmN0aW9uIGluIHRoZVxuICogR29vZ2xlIENsb3N1cmUgbGlicmFyeSwgdGhvdWdoIHVwZGF0ZWQgdG8gdXNlIHR5cGVkIGFycmF5cyBhbmQgdG8gYmV0dGVyXG4gKiBoYW5kbGUgYXN0cmFsIHBsYW5lIGNvZGUgcG9pbnRzLlxuICovXG5leHBvcnQgY29uc3QgdG9VdGY4ID0gKGlucHV0OiBVaW50OEFycmF5KTogc3RyaW5nID0+IHtcbiAgbGV0IGRlY29kZWQgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gaW5wdXQubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBjb25zdCBieXRlID0gaW5wdXRbaV07XG4gICAgaWYgKGJ5dGUgPCAweDgwKSB7XG4gICAgICBkZWNvZGVkICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZSk7XG4gICAgfSBlbHNlIGlmICgwYjExMDAwMDAwIDw9IGJ5dGUgJiYgYnl0ZSA8IDBiMTExMDAwMDApIHtcbiAgICAgIGNvbnN0IG5leHRCeXRlID0gaW5wdXRbKytpXTtcbiAgICAgIGRlY29kZWQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGJ5dGUgJiAwYjExMTExKSA8PCA2KSB8IChuZXh0Qnl0ZSAmIDBiMTExMTExKSk7XG4gICAgfSBlbHNlIGlmICgwYjExMTEwMDAwIDw9IGJ5dGUgJiYgYnl0ZSA8IDBiMTAxMTAxMTAxKSB7XG4gICAgICBjb25zdCBzdXJyb2dhdGVQYWlyID0gW2J5dGUsIGlucHV0WysraV0sIGlucHV0WysraV0sIGlucHV0WysraV1dO1xuICAgICAgY29uc3QgZW5jb2RlZCA9IFwiJVwiICsgc3Vycm9nYXRlUGFpci5tYXAoKGJ5dGVWYWx1ZSkgPT4gYnl0ZVZhbHVlLnRvU3RyaW5nKDE2KSkuam9pbihcIiVcIik7XG4gICAgICBkZWNvZGVkICs9IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVjb2RlZCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKFxuICAgICAgICAoKGJ5dGUgJiAwYjExMTEpIDw8IDEyKSB8ICgoaW5wdXRbKytpXSAmIDBiMTExMTExKSA8PCA2KSB8IChpbnB1dFsrK2ldICYgMGIxMTExMTEpXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkZWNvZGVkO1xufTtcbiJdfQ==","export function fromUtf8(input) {\n return new TextEncoder().encode(input);\n}\nexport function toUtf8(input) {\n return new TextDecoder(\"utf-8\").decode(input);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2hhdHdnRW5jb2RpbmdBcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvd2hhdHdnRW5jb2RpbmdBcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUNBLE1BQU0sVUFBVSxRQUFRLENBQUMsS0FBYTtJQUNwQyxPQUFPLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLEtBQWlCO0lBQ3RDLE9BQU8sSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgZGVjbGFyYXRpb24gb2YgdGhlIGdsb2JhbCBUZXh0RW5jb2RlciBhbmQgVGV4dERlY29kZXIgY29uc3RydWN0b3JzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9lbmNvZGluZy5zcGVjLndoYXR3Zy5vcmcvXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG5uYW1lc3BhY2UgRW5jb2Rpbmcge1xuICBpbnRlcmZhY2UgVGV4dERlY29kZXJPcHRpb25zIHtcbiAgICBmYXRhbD86IGJvb2xlYW47XG4gICAgaWdub3JlQk9NPzogYm9vbGVhbjtcbiAgfVxuXG4gIGludGVyZmFjZSBUZXh0RGVjb2RlT3B0aW9ucyB7XG4gICAgc3RyZWFtPzogYm9vbGVhbjtcbiAgfVxuXG4gIGludGVyZmFjZSBUZXh0RGVjb2RlciB7XG4gICAgcmVhZG9ubHkgZW5jb2Rpbmc6IHN0cmluZztcbiAgICByZWFkb25seSBmYXRhbDogYm9vbGVhbjtcbiAgICByZWFkb25seSBpZ25vcmVCT006IGJvb2xlYW47XG4gICAgZGVjb2RlKGlucHV0PzogQXJyYXlCdWZmZXIgfCBBcnJheUJ1ZmZlclZpZXcsIG9wdGlvbnM/OiBUZXh0RGVjb2RlT3B0aW9ucyk6IHN0cmluZztcbiAgfVxuXG4gIGV4cG9ydCBpbnRlcmZhY2UgVGV4dERlY29kZXJDb25zdHJ1Y3RvciB7XG4gICAgbmV3IChsYWJlbD86IHN0cmluZywgb3B0aW9ucz86IFRleHREZWNvZGVyT3B0aW9ucyk6IFRleHREZWNvZGVyO1xuICB9XG5cbiAgaW50ZXJmYWNlIFRleHRFbmNvZGVyIHtcbiAgICByZWFkb25seSBlbmNvZGluZzogXCJ1dGYtOFwiO1xuICAgIGVuY29kZShpbnB1dD86IHN0cmluZyk6IFVpbnQ4QXJyYXk7XG4gIH1cblxuICBleHBvcnQgaW50ZXJmYWNlIFRleHRFbmNvZGVyQ29uc3RydWN0b3Ige1xuICAgIG5ldyAoKTogVGV4dEVuY29kZXI7XG4gIH1cbn1cblxuZGVjbGFyZSBjb25zdCBUZXh0RGVjb2RlcjogRW5jb2RpbmcuVGV4dERlY29kZXJDb25zdHJ1Y3RvcjtcblxuZGVjbGFyZSBjb25zdCBUZXh0RW5jb2RlcjogRW5jb2RpbmcuVGV4dEVuY29kZXJDb25zdHJ1Y3RvcjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZyb21VdGY4KGlucHV0OiBzdHJpbmcpOiBVaW50OEFycmF5IHtcbiAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShpbnB1dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1V0ZjgoaW5wdXQ6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICByZXR1cm4gbmV3IFRleHREZWNvZGVyKFwidXRmLThcIikuZGVjb2RlKGlucHV0KTtcbn1cbiJdfQ==","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\nexport var fromUtf8 = function (input) {\n return typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n};\nexport var toUtf8 = function (input) {\n return typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsSUFBSSxVQUFVLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxJQUFJLG1CQUFtQixFQUFFLE1BQU0sSUFBSSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBS25HLE1BQU0sQ0FBQyxJQUFNLFFBQVEsR0FBRyxVQUFDLEtBQWE7SUFDcEMsT0FBQSxPQUFPLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO0FBQWxGLENBQWtGLENBQUM7QUFFckYsTUFBTSxDQUFDLElBQU0sTUFBTSxHQUFHLFVBQUMsS0FBaUI7SUFDdEMsT0FBQSxPQUFPLFdBQVcsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0FBQTlFLENBQThFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcm9tVXRmOCBhcyBqc0Zyb21VdGY4LCB0b1V0ZjggYXMganNUb1V0ZjggfSBmcm9tIFwiLi9wdXJlSnNcIjtcbmltcG9ydCB7IGZyb21VdGY4IGFzIHRleHRFbmNvZGVyRnJvbVV0ZjgsIHRvVXRmOCBhcyB0ZXh0RW5jb2RlclRvVXRmOCB9IGZyb20gXCIuL3doYXR3Z0VuY29kaW5nQXBpXCI7XG5cbmRlY2xhcmUgY29uc3QgVGV4dERlY29kZXI6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkO1xuZGVjbGFyZSBjb25zdCBUZXh0RW5jb2RlcjogRnVuY3Rpb24gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCBjb25zdCBmcm9tVXRmOCA9IChpbnB1dDogc3RyaW5nKTogVWludDhBcnJheSA9PlxuICB0eXBlb2YgVGV4dEVuY29kZXIgPT09IFwiZnVuY3Rpb25cIiA/IHRleHRFbmNvZGVyRnJvbVV0ZjgoaW5wdXQpIDoganNGcm9tVXRmOChpbnB1dCk7XG5cbmV4cG9ydCBjb25zdCB0b1V0ZjggPSAoaW5wdXQ6IFVpbnQ4QXJyYXkpOiBzdHJpbmcgPT5cbiAgdHlwZW9mIFRleHREZWNvZGVyID09PSBcImZ1bmN0aW9uXCIgPyB0ZXh0RW5jb2RlclRvVXRmOChpbnB1dCkgOiBqc1RvVXRmOChpbnB1dCk7XG4iXX0=","import zenObservable from 'zen-observable';\n\nvar Observable = zenObservable;\n\nexport default Observable;\nexport { Observable };\n//# sourceMappingURL=bundle.esm.js.map\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\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 */\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 if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\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 parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\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 */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\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 toJSON() {\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 status: this.response && this.response.status ? this.response.status : null\n };\n };\n return error;\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 */\nimport { StorageHelper } from '@aws-amplify/core';\n/**\n * Default cache config\n */\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage(),\n};\n/**\n * return the byte size of the string\n * @param str\n */\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n }\n else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n }\n // trail surrogate\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n return ret;\n}\n/**\n * get current time\n */\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n return _isInteger(value);\n}\nfunction _isInteger(value) {\n return (typeof value === 'number' && isFinite(value) && Math.floor(value) === value);\n}\n/**\n * provide an object as the in-memory cache\n */\nvar store = {};\nvar CacheObject = /** @class */ (function () {\n function CacheObject() {\n }\n CacheObject.clear = function () {\n store = {};\n };\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n return CacheObject;\n}());\nexport { CacheObject };\n//# sourceMappingURL=CacheUtils.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\nvar StorageCache = /** @class */ (function () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n if (Number(this.config.warningThreshold) > 1 ||\n Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n }\n // set 5MB limit\n var cacheLimit = 5 * 1024 * 1024;\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0,\n };\n ret.byteSize = getByteLength(JSON.stringify(ret));\n // for accurate size\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n return StorageCache;\n}());\nexport { StorageCache };\n/**\n * @deprecated use named import\n */\nexport default StorageCache;\n//# sourceMappingURL=StorageCache.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { defaultConfig, getCurrTime } from './Utils';\nimport { StorageCache } from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\nvar BrowserStorageCacheClass = /** @class */ (function (_super) {\n __extends(BrowserStorageCacheClass, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n function BrowserStorageCacheClass(config) {\n var _this = this;\n var cacheConfig = config\n ? Object.assign({}, defaultConfig, config)\n : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n BrowserStorageCacheClass.prototype._decreaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize - amount).toString());\n };\n /**\n * increase current size of the cache\n *\n * @private\n * @param amount - the amount of the cache szie which need to be increased\n */\n BrowserStorageCacheClass.prototype._increaseCurSizeInBytes = function (amount) {\n var curSize = this.getCacheCurSize();\n this.config.storage.setItem(this.cacheCurSizeKey, (curSize + amount).toString());\n };\n /**\n * update the visited time if item has been visited\n *\n * @private\n * @param item - the item which need to be refreshed\n * @param prefixedKey - the key of the item\n *\n * @return the refreshed item\n */\n BrowserStorageCacheClass.prototype._refreshItem = function (item, prefixedKey) {\n item.visitedTime = getCurrTime();\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n return item;\n };\n /**\n * check wether item is expired\n *\n * @private\n * @param key - the key of the item\n *\n * @return true if the item is expired.\n */\n BrowserStorageCacheClass.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n if (getCurrTime() >= item.expires) {\n return true;\n }\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n BrowserStorageCacheClass.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size\n ? size\n : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n this._decreaseCurSizeInBytes(itemSize);\n // remove the cache item\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n BrowserStorageCacheClass.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n }\n catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n BrowserStorageCacheClass.prototype._sizeToPop = function (itemSize) {\n var spaceItemNeed = this.getCacheCurSize() + itemSize - this.config.capacityInBytes;\n var cacheThresholdSpace = (1 - this.config.warningThreshold) * this.config.capacityInBytes;\n return spaceItemNeed > cacheThresholdSpace\n ? spaceItemNeed\n : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n BrowserStorageCacheClass.prototype._isCacheFull = function (itemSize) {\n return itemSize + this.getCacheCurSize() > this.config.capacityInBytes;\n };\n /**\n * scan the storage and find out all the keys owned by this cache\n * also clean the expired keys while scanning\n *\n * @private\n *\n * @return array of keys\n */\n BrowserStorageCacheClass.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = [];\n // get all keys in Storage\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n }\n // find those items which belong to our cache and also clean those expired items\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n }\n else {\n keys.push(key);\n }\n }\n }\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n BrowserStorageCacheClass.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop;\n // get the items from Storage\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n }\n // first compare priority\n // then compare visited time\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n }\n else if (a.priority < b.priority) {\n return 1;\n }\n else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n }\n else\n return 1;\n }\n });\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n remainedSize -= items[i].byteSize;\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n BrowserStorageCacheClass.prototype.setItem = function (key, value, options) {\n logger.log(\"Set item: key is \" + key + \", value is \" + value + \" with options: \" + options);\n var prefixedKey = this.config.keyPrefix + key;\n // invalid keys\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n var cacheItemOptions = {\n priority: options && options.priority !== undefined\n ? options.priority\n : this.config.defaultPriority,\n expires: options && options.expires !== undefined\n ? options.expires\n : this.config.defaultTTL + getCurrTime(),\n };\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions);\n // check wether this item is too big;\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n // check whether the cache is full\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys();\n // check again and then pop out items\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n this._popOutItems(validKeys, sizeToPop);\n }\n }\n // put item in the cache\n // may failed due to storage full\n this._setItem(prefixedKey, item);\n }\n catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n BrowserStorageCacheClass.prototype.getItem = function (key, options) {\n logger.log(\"Get item: key is \" + key + \" with options \" + options);\n var ret = null;\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n try {\n ret = this.config.storage.getItem(prefixedKey);\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n ret = null;\n }\n else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n if (options && options.callback !== undefined) {\n var val = options.callback();\n if (val !== null) {\n this.setItem(key, val, options);\n }\n return val;\n }\n return null;\n }\n catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n BrowserStorageCacheClass.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n if (prefixedKey === this.config.keyPrefix ||\n prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n try {\n var val = this.config.storage.getItem(prefixedKey);\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n }\n catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n BrowserStorageCacheClass.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n }\n catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n BrowserStorageCacheClass.prototype.getAllKeys = function () {\n var keys = [];\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n if (key.indexOf(this.config.keyPrefix) === 0 &&\n key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n BrowserStorageCacheClass.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n BrowserStorageCacheClass.prototype.createInstance = function (config) {\n if (!config.keyPrefix || config.keyPrefix === defaultConfig.keyPrefix) {\n logger.error('invalid keyPrefix, setting keyPrefix with timeStamp');\n config.keyPrefix = getCurrTime.toString();\n }\n return new BrowserStorageCacheClass(config);\n };\n return BrowserStorageCacheClass;\n}(StorageCache));\nexport { BrowserStorageCacheClass };\nexport var BrowserStorageCache = new BrowserStorageCacheClass();\n/**\n * @deprecated use named import\n */\nexport default BrowserStorageCache;\n//# sourceMappingURL=BrowserStorageCache.js.map","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from '@aws-amplify/core';\nimport { BrowserStorageCache } from './BrowserStorageCache';\nimport { InMemoryCache } from './InMemoryCache';\nexport { BrowserStorageCache, InMemoryCache };\n/**\n * @deprecated use named import\n */\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);\n//# sourceMappingURL=index.js.map","'use strict';\n\nvar VERSION = require('../env/data').version;\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\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 */\nfunction isArray(val) {\n return Array.isArray(val);\n}\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 */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\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 */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\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 */\nfunction isFormData(val) {\n return toString.call(val) === '[object FormData]';\n}\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 */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\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 */\nfunction isString(val) {\n return typeof val === 'string';\n}\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 */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\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 */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\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 */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\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 */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\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 */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\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 */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\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 */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\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 */\nfunction isURLSearchParams(val) {\n return toString.call(val) === '[object URLSearchParams]';\n}\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 */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\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 */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\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 */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\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/**\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 */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\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 return result;\n}\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 */\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\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\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 isPlainObject: isPlainObject,\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 extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","import VCard from './VCard'\nimport { createSimpleFunctional } from '../../util/helpers'\n\nconst VCardActions = createSimpleFunctional('v-card__actions')\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle')\nconst VCardText = createSimpleFunctional('v-card__text')\nconst VCardTitle = createSimpleFunctional('v-card__title')\n\nexport {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n}\n\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle,\n },\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 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { ConsoleLogger as Logger, Credentials, DateUtils, Signer, Platform, } 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*/\nvar RestClient = /** @class */ (function () {\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 this._service = 'execute-api'; // this can be updated by endpoint function\n this._custom_header = undefined; // this can be updated by endpoint function\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 this._cancelTokenMap = null;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\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 * Basic HTTP request. Customizable\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.ajax = function (urlOrApiInfo, method, init) {\n return __awaiter(this, void 0, void 0, function () {\n var parsed_url, url, region, service, custom_header, params, libraryHeaders, userAgent, initParams, isAllResponse, custom_header_obj, _a, _b, search, parsedUrl;\n var _this = this;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n logger.debug(method, urlOrApiInfo);\n region = 'us-east-1';\n service = 'execute-api';\n custom_header = undefined;\n if (typeof urlOrApiInfo === 'string') {\n parsed_url = this._parseUrl(urlOrApiInfo);\n url = urlOrApiInfo;\n }\n else {\n (url = urlOrApiInfo.endpoint, custom_header = urlOrApiInfo.custom_header, region = urlOrApiInfo.region, service = urlOrApiInfo.service);\n parsed_url = this._parseUrl(urlOrApiInfo.endpoint);\n }\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 if (Platform.isReactNative) {\n userAgent = Platform.userAgent || 'aws-amplify/0.1.x';\n libraryHeaders = {\n 'User-Agent': userAgent,\n };\n }\n initParams = Object.assign({}, init);\n isAllResponse = initParams.response;\n if (initParams.body) {\n if (typeof FormData === 'function' &&\n initParams.body instanceof FormData) {\n libraryHeaders['Content-Type'] = 'multipart/form-data';\n params.data = initParams.body;\n }\n else {\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 if (initParams.withCredentials) {\n params['withCredentials'] = initParams.withCredentials;\n }\n if (initParams.timeout) {\n params.timeout = initParams.timeout;\n }\n if (initParams.cancellableToken) {\n params.cancelToken = initParams.cancellableToken.token;\n }\n params['signerServiceInfo'] = initParams.signerServiceInfo;\n if (!(typeof custom_header === 'function')) return [3 /*break*/, 2];\n return [4 /*yield*/, custom_header()];\n case 1:\n _a = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _a = undefined;\n _c.label = 3;\n case 3:\n custom_header_obj = _a;\n params.headers = __assign(__assign(__assign({}, libraryHeaders), custom_header_obj), initParams.headers);\n _b = parse(url, true, true), search = _b.search, parsedUrl = __rest(_b, [\"search\"]);\n params.url = format(__assign(__assign({}, parsedUrl), { 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 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 return acc;\n // tslint:disable-next-line:align\n }, {});\n return [2 /*return*/, this._request(params, isAllResponse)];\n }\n // Signing the request in case there credentials are available\n return [2 /*return*/, this.Credentials.get().then(function (credentials) {\n return _this._signed(__assign({}, params), credentials, isAllResponse, {\n region: region,\n service: service,\n }).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 // Compare local clock to the server clock\n if (DateUtils.isClockSkewed(responseDate)) {\n DateUtils.setClockOffset(responseDate.getTime() - requestDate.getTime());\n return _this.ajax(urlOrApiInfo, method, init);\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 | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.get = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'GET', init);\n };\n /**\n * PUT HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.put = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'PUT', init);\n };\n /**\n * PATCH HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.patch = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'PATCH', init);\n };\n /**\n * POST HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.post = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'POST', init);\n };\n /**\n * DELETE HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.del = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, 'DELETE', init);\n };\n /**\n * HEAD HTTP request\n * @param {string | ApiInfo } urlOrApiInfo - Full request URL or Api information\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 RestClient.prototype.head = function (urlOrApiInfo, init) {\n return this.ajax(urlOrApiInfo, '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 RestClient.prototype.cancel = function (request, message) {\n var source = this._cancelTokenMap.get(request);\n if (source) {\n source.cancel(message);\n return true;\n }\n return false;\n };\n /**\n * Check if the request has a corresponding cancel token in the WeakMap.\n * @params request - The request promise\n * @return if the request has a corresponding cancel token.\n */\n RestClient.prototype.hasCancelToken = function (request) {\n return this._cancelTokenMap.has(request);\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 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 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 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 RestClient.prototype.endpoint = function (apiName) {\n var _this = this;\n var cloud_logic_array = this._options.endpoints;\n var response = '';\n if (!Array.isArray(cloud_logic_array)) {\n return response;\n }\n cloud_logic_array.forEach(function (v) {\n if (v.name === apiName) {\n response = v.endpoint;\n if (typeof v.region === 'string') {\n _this._region = v.region;\n }\n else if (typeof _this._options.region === 'string') {\n _this._region = _this._options.region;\n }\n if (typeof v.service === 'string') {\n _this._service = v.service || 'execute-api';\n }\n else {\n _this._service = 'execute-api';\n }\n if (typeof v.custom_header === 'function') {\n _this._custom_header = v.custom_header;\n }\n else {\n _this._custom_header = undefined;\n }\n }\n });\n return response;\n };\n /** private methods **/\n RestClient.prototype._signed = function (params, credentials, isAllResponse, _a) {\n var service = _a.service, region = _a.region;\n var signerServiceInfoParams = params.signerServiceInfo, otherParams = __rest(params, [\"signerServiceInfo\"]);\n var endpoint_region = region || this._region || this._options.region;\n var endpoint_service = 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 if (signed_params.data) {\n signed_params.body = signed_params.data;\n }\n logger.debug('Signed Request: ', signed_params);\n delete signed_params.headers['host'];\n return axios(signed_params)\n .then(function (response) { return (isAllResponse ? response : response.data); })\n .catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n RestClient.prototype._request = function (params, isAllResponse) {\n if (isAllResponse === void 0) { isAllResponse = false; }\n return axios(params)\n .then(function (response) { return (isAllResponse ? response : response.data); })\n .catch(function (error) {\n logger.debug(error);\n throw error;\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 return RestClient;\n}());\nexport { RestClient };\n//# sourceMappingURL=RestClient.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n 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 */\nimport { RestClient } from './RestClient';\nimport { Amplify, ConsoleLogger as Logger, Credentials, } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\nvar RestAPIClass = /** @class */ (function () {\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.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\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 RestAPIClass.prototype.configure = function (options) {\n var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n var opt = __assign(__assign({}, otherOptions), API);\n logger.debug('configure Rest API', { opt: opt });\n if (opt['aws_project_region']) {\n if (opt['aws_cloud_logic_custom']) {\n var custom = opt['aws_cloud_logic_custom'];\n opt.endpoints =\n typeof custom === 'string' ? JSON.parse(custom) : custom;\n }\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {},\n });\n }\n if (Array.isArray(opt.endpoints)) {\n // Check if endpoints has custom_headers and validate if is a function\n opt.endpoints.forEach(function (endpoint) {\n if (typeof endpoint.custom_header !== 'undefined' &&\n 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 }\n else if (this._options && Array.isArray(this._options.endpoints)) {\n opt.endpoints = this._options.endpoints;\n }\n else {\n opt.endpoints = [];\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 RestAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest API instance');\n this._api = new RestClient(this._options);\n // Share Amplify instance with client for SSR\n this._api.Credentials = this.Credentials;\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 RestAPIClass.prototype.get = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.get(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.post = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.post(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.put = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.put(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.patch = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.patch(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.del = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.del(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\n }\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n RestAPIClass.prototype.head = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n var cancellableToken = this._api.getCancellableToken();\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n var responsePromise = this._api.head(apiInfo, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n }\n catch (err) {\n return Promise.reject(err.message);\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 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 RestAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n /**\n * Check if the request has a corresponding cancel token in the WeakMap.\n * @params request - The request promise\n * @return if the request has a corresponding cancel token.\n */\n RestAPIClass.prototype.hasCancelToken = function (request) {\n return this._api.hasCancelToken(request);\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 RestAPIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/, this._api.endpoint(apiName)];\n });\n });\n };\n /**\n * Getting endpoint info for API\n * @param {string} apiName - The name of the api\n * @param {string} path - The path of the api that is going to accessed\n * @return {ApiInfo} - The endpoint information for that api-name\n */\n RestAPIClass.prototype.getEndpointInfo = function (apiName, path) {\n var cloud_logic_array = this._options.endpoints;\n if (!Array.isArray(cloud_logic_array)) {\n throw new Error(\"API category not configured\");\n }\n var apiConfig = cloud_logic_array.find(function (api) { return api.name === apiName; });\n if (!apiConfig) {\n throw new Error(\"API \" + apiName + \" does not exist\");\n }\n var response = {\n endpoint: apiConfig.endpoint + path,\n };\n if (typeof apiConfig.region === 'string') {\n response.region = apiConfig.region;\n }\n else if (typeof this._options.region === 'string') {\n response.region = this._options.region;\n }\n if (typeof apiConfig.service === 'string') {\n response.service = apiConfig.service || 'execute-api';\n }\n else {\n response.service = 'execute-api';\n }\n if (typeof apiConfig.custom_header === 'function') {\n response.custom_header = apiConfig.custom_header;\n }\n else {\n response.custom_header = undefined;\n }\n return response;\n };\n return RestAPIClass;\n}());\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);\nAmplify.register(RestAPI);\n//# sourceMappingURL=RestAPI.js.map","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nexport default function isObjectLike(value) {\n return _typeof(value) == 'object' && value !== null;\n}\n","// In ES2015 (or a polyfilled) environment, this will be Symbol.iterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nexport var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator\n// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\nexport var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';\n","/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}\n","import { getLocation } from \"./location.mjs\";\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printLocation(location) {\n return printSourceLocation(location.source, getLocation(location.source, location.start));\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nexport function printSourceLocation(source, sourceLocation) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = sourceLocation.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = sourceLocation.line + lineOffset;\n var columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = sourceLocation.column + columnOffset;\n var locationStr = \"\".concat(source.name, \":\").concat(lineNum, \":\").concat(columnNum, \"\\n\");\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n var locationLine = lines[lineIndex]; // Special case for minified documents\n\n if (locationLine.length > 120) {\n var subLineIndex = Math.floor(columnNum / 80);\n var subLineColumnNum = columnNum % 80;\n var subLines = [];\n\n for (var i = 0; i < locationLine.length; i += 80) {\n subLines.push(locationLine.slice(i, i + 80));\n }\n\n return locationStr + printPrefixedLines([[\"\".concat(lineNum), subLines[0]]].concat(subLines.slice(1, subLineIndex + 1).map(function (subLine) {\n return ['', subLine];\n }), [[' ', whitespace(subLineColumnNum - 1) + '^'], ['', subLines[subLineIndex + 1]]]));\n }\n\n return locationStr + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1), lines[lineIndex - 1]], [\"\".concat(lineNum), locationLine], ['', 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 = Math.max.apply(Math, existingLines.map(function (_ref2) {\n var prefix = _ref2[0];\n return prefix.length;\n }));\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return leftPad(padLen, prefix) + (line ? ' | ' + line : ' |');\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction leftPad(len, str) {\n return whitespace(len - str.length) + str;\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport isObjectLike from \"../jsutils/isObjectLike.mjs\";\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport { getLocation } from \"../language/location.mjs\";\nimport { printLocation, printSourceLocation } from \"../language/printLocation.mjs\";\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nexport var GraphQLError = /*#__PURE__*/function (_Error) {\n _inherits(GraphQLError, _Error);\n\n var _super = _createSuper(GraphQLError);\n\n /**\n * An array of { line, column } locations within the source GraphQL document\n * which correspond to this error.\n *\n * Errors during validation often contain multiple locations, for example to\n * point out two things with the same name. Errors during execution include a\n * single location, the field which produced the error.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array describing the JSON-path into the execution response which\n * corresponds to this error. Only included for errors during execution.\n *\n * Enumerable, and appears in the result of JSON.stringify().\n */\n\n /**\n * An array of GraphQL AST Nodes corresponding to this error.\n */\n\n /**\n * The source GraphQL document for the first location of this error.\n *\n * Note that if this Error represents more than one node, the source may not\n * represent nodes after the first node.\n */\n\n /**\n * An array of character offsets within the source GraphQL document\n * which correspond to this error.\n */\n\n /**\n * The original error thrown from a field resolver during execution.\n */\n\n /**\n * Extension fields to add to the formatted error.\n */\n function GraphQLError(message, nodes, source, positions, path, originalError, extensions) {\n var _nodeLocations, _nodeLocations2, _nodeLocations3;\n\n var _this;\n\n _classCallCheck(this, GraphQLError);\n\n _this = _super.call(this, message);\n _this.name = 'GraphQLError';\n _this.originalError = originalError !== null && originalError !== void 0 ? originalError : undefined; // Compute list of blame nodes.\n\n _this.nodes = undefinedIfEmpty(Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined);\n var nodeLocations = [];\n\n for (var _i2 = 0, _ref3 = (_this$nodes = _this.nodes) !== null && _this$nodes !== void 0 ? _this$nodes : []; _i2 < _ref3.length; _i2++) {\n var _this$nodes;\n\n var _ref4 = _ref3[_i2];\n var loc = _ref4.loc;\n\n if (loc != null) {\n nodeLocations.push(loc);\n }\n }\n\n nodeLocations = undefinedIfEmpty(nodeLocations); // Compute locations in the source for the given nodes/positions.\n\n _this.source = source !== null && source !== void 0 ? source : (_nodeLocations = nodeLocations) === null || _nodeLocations === void 0 ? void 0 : _nodeLocations[0].source;\n _this.positions = positions !== null && positions !== void 0 ? positions : (_nodeLocations2 = nodeLocations) === null || _nodeLocations2 === void 0 ? void 0 : _nodeLocations2.map(function (loc) {\n return loc.start;\n });\n _this.locations = positions && source ? positions.map(function (pos) {\n return getLocation(source, pos);\n }) : (_nodeLocations3 = nodeLocations) === null || _nodeLocations3 === void 0 ? void 0 : _nodeLocations3.map(function (loc) {\n return getLocation(loc.source, loc.start);\n });\n _this.path = path !== null && path !== void 0 ? path : undefined;\n var originalExtensions = originalError === null || originalError === void 0 ? void 0 : originalError.extensions;\n\n if (extensions == null && isObjectLike(originalExtensions)) {\n _this.extensions = _objectSpread({}, originalExtensions);\n } else {\n _this.extensions = extensions !== null && extensions !== void 0 ? extensions : {};\n } // By being enumerable, JSON.stringify will include bellow properties in the resulting output.\n // This ensures that the simplest possible GraphQL service adheres to the spec.\n\n\n Object.defineProperties(_assertThisInitialized(_this), {\n message: {\n enumerable: true\n },\n locations: {\n enumerable: _this.locations != null\n },\n path: {\n enumerable: _this.path != null\n },\n extensions: {\n enumerable: _this.extensions != null && Object.keys(_this.extensions).length > 0\n },\n name: {\n enumerable: false\n },\n nodes: {\n enumerable: false\n },\n source: {\n enumerable: false\n },\n positions: {\n enumerable: false\n },\n originalError: {\n enumerable: false\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError !== null && originalError !== void 0 && originalError.stack) {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n return _possibleConstructorReturn(_this);\n } // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized(_this), GraphQLError);\n } else {\n Object.defineProperty(_assertThisInitialized(_this), 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n\n return _this;\n }\n\n _createClass(GraphQLError, [{\n key: \"toString\",\n value: function toString() {\n return printError(this);\n } // FIXME: workaround to not break chai comparisons, should be remove in v16\n // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n }, {\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Object';\n }\n }]);\n\n return GraphQLError;\n}( /*#__PURE__*/_wrapNativeSuper(Error));\n\nfunction undefinedIfEmpty(array) {\n return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\n\nexport function printError(error) {\n var output = error.message;\n\n if (error.nodes) {\n for (var _i4 = 0, _error$nodes2 = error.nodes; _i4 < _error$nodes2.length; _i4++) {\n var node = _error$nodes2[_i4];\n\n if (node.loc) {\n output += '\\n\\n' + printLocation(node.loc);\n }\n }\n } else if (error.source && error.locations) {\n for (var _i6 = 0, _error$locations2 = error.locations; _i6 < _error$locations2.length; _i6++) {\n var location = _error$locations2[_i6];\n output += '\\n\\n' + printSourceLocation(error.source, location);\n }\n }\n\n return output;\n}\n","import { GraphQLError } from \"./GraphQLError.mjs\";\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}\n","/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */\n","export default function invariant(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message != null ? message : 'Unexpected invariant triggered.');\n }\n}\n","// istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\nvar nodejsCustomInspectSymbol = typeof Symbol === 'function' && typeof Symbol.for === 'function' ? Symbol.for('nodejs.util.inspect.custom') : undefined;\nexport default nodejsCustomInspectSymbol;\n","import invariant from \"./invariant.mjs\";\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\n/**\n * The `defineInspect()` function defines `inspect()` prototype method as alias of `toJSON`\n */\n\nexport default function defineInspect(classObject) {\n var fn = classObject.prototype.toJSON;\n typeof fn === 'function' || invariant(0);\n classObject.prototype.inspect = fn; // istanbul ignore else (See: 'https://github.com/graphql/graphql-js/issues/2317')\n\n if (nodejsCustomInspectSymbol) {\n classObject.prototype[nodejsCustomInspectSymbol] = fn;\n }\n}\n","import defineInspect from \"../jsutils/defineInspect.mjs\";\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nexport var Location = /*#__PURE__*/function () {\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The Token at which this Node begins.\n */\n\n /**\n * The Token at which this Node ends.\n */\n\n /**\n * The Source document the AST represents.\n */\n function Location(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 }\n\n var _proto = Location.prototype;\n\n _proto.toJSON = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n };\n\n return Location;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Location);\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexport var Token = /*#__PURE__*/function () {\n /**\n * The kind of Token.\n */\n\n /**\n * The character offset at which this Node begins.\n */\n\n /**\n * The character offset at which this Node ends.\n */\n\n /**\n * The 1-indexed line number on which this Token appears.\n */\n\n /**\n * The 1-indexed column number at which this Token begins.\n */\n\n /**\n * For non-punctuation tokens, represents the interpreted value of the token.\n */\n\n /**\n * Tokens exist as nodes in a double-linked-list amongst all tokens\n * including ignored tokens. is always the first node and \n * the last.\n */\n function Token(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 }\n\n var _proto2 = Token.prototype;\n\n _proto2.toJSON = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n };\n\n return Token;\n}(); // Print a simplified form when appearing in `inspect` and `util.inspect`.\n\ndefineInspect(Token);\n/**\n * @internal\n */\n\nexport function isNode(maybeNode) {\n return maybeNode != null && typeof maybeNode.kind === 'string';\n}\n/**\n * The list of all possible AST node types.\n */\n","/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable flowtype/no-weak-types */\nimport nodejsCustomInspectSymbol from \"./nodejsCustomInspectSymbol.mjs\";\nvar MAX_ARRAY_LENGTH = 10;\nvar MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nexport default function inspect(value) {\n return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n switch (_typeof(value)) {\n case 'string':\n return JSON.stringify(value);\n\n case 'function':\n return value.name ? \"[function \".concat(value.name, \"]\") : '[function]';\n\n case 'object':\n if (value === null) {\n return 'null';\n }\n\n return formatObjectValue(value, seenValues);\n\n default:\n return String(value);\n }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n if (previouslySeenValues.indexOf(value) !== -1) {\n return '[Circular]';\n }\n\n var seenValues = [].concat(previouslySeenValues, [value]);\n var customInspectFn = getCustomFn(value);\n\n if (customInspectFn !== undefined) {\n var customValue = customInspectFn.call(value); // check for infinite recursion\n\n if (customValue !== value) {\n return typeof customValue === 'string' ? customValue : formatValue(customValue, seenValues);\n }\n } else if (Array.isArray(value)) {\n return formatArray(value, seenValues);\n }\n\n return formatObject(value, seenValues);\n}\n\nfunction formatObject(object, seenValues) {\n var keys = Object.keys(object);\n\n if (keys.length === 0) {\n return '{}';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[' + getObjectTag(object) + ']';\n }\n\n var properties = keys.map(function (key) {\n var value = formatValue(object[key], seenValues);\n return key + ': ' + value;\n });\n return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n if (array.length === 0) {\n return '[]';\n }\n\n if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n return '[Array]';\n }\n\n var len = Math.min(MAX_ARRAY_LENGTH, array.length);\n var remaining = array.length - len;\n var items = [];\n\n for (var i = 0; i < len; ++i) {\n items.push(formatValue(array[i], seenValues));\n }\n\n if (remaining === 1) {\n items.push('... 1 more item');\n } else if (remaining > 1) {\n items.push(\"... \".concat(remaining, \" more items\"));\n }\n\n return '[' + items.join(', ') + ']';\n}\n\nfunction getCustomFn(object) {\n var customInspectFn = object[String(nodejsCustomInspectSymbol)];\n\n if (typeof customInspectFn === 'function') {\n return customInspectFn;\n }\n\n if (typeof object.inspect === 'function') {\n return object.inspect;\n }\n}\n\nfunction getObjectTag(object) {\n var tag = Object.prototype.toString.call(object).replace(/^\\[object /, '').replace(/]$/, '');\n\n if (tag === 'Object' && typeof object.constructor === 'function') {\n var name = object.constructor.name;\n\n if (typeof name === 'string' && name !== '') {\n return name;\n }\n }\n\n return tag;\n}\n","export default function devAssert(condition, message) {\n var booleanCondition = Boolean(condition); // istanbul ignore else (See transformation done in './resources/inlineInvariant.js')\n\n if (!booleanCondition) {\n throw new Error(message);\n }\n}\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport inspect from \"./inspect.mjs\";\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n */\n\n// See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n// See: https://webpack.js.org/guides/production/\nexport default process.env.NODE_ENV === 'production' ? // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')\n// eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n return value instanceof constructor;\n} : // eslint-disable-next-line no-shadow\nfunction instanceOf(value, constructor) {\n if (value instanceof constructor) {\n return true;\n }\n\n if (_typeof(value) === 'object' && value !== null) {\n var _value$constructor;\n\n var className = constructor.prototype[Symbol.toStringTag];\n var valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n Symbol.toStringTag in value ? value[Symbol.toStringTag] : (_value$constructor = value.constructor) === null || _value$constructor === void 0 ? void 0 : _value$constructor.name;\n\n if (className === valueClassName) {\n var stringifiedValue = inspect(value);\n throw new Error(\"Cannot use \".concat(className, \" \\\"\").concat(stringifiedValue, \"\\\" from another module or realm.\\n\\nEnsure that there is only one instance of \\\"graphql\\\" in the node_modules\\ndirectory. If different versions of \\\"graphql\\\" are the dependencies of other\\nrelied on modules, use \\\"resolutions\\\" to ensure only one version is installed.\\n\\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\\n\\nDuplicate \\\"graphql\\\" modules cannot be used at the same time since different\\nversions may have different capabilities and behavior. The data from one\\nversion used in the function from another could produce confusing and\\nspurious results.\"));\n }\n }\n\n return false;\n};\n","function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nimport { SYMBOL_TO_STRING_TAG } from \"../polyfills/symbols.mjs\";\nimport inspect from \"../jsutils/inspect.mjs\";\nimport devAssert from \"../jsutils/devAssert.mjs\";\nimport instanceOf from \"../jsutils/instanceOf.mjs\";\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nexport var Source = /*#__PURE__*/function () {\n function Source(body) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'GraphQL request';\n var locationOffset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n line: 1,\n column: 1\n };\n typeof body === 'string' || devAssert(0, \"Body must be a string. Received: \".concat(inspect(body), \".\"));\n this.body = body;\n this.name = name;\n this.locationOffset = locationOffset;\n this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');\n this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');\n } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet\n\n\n _createClass(Source, [{\n key: SYMBOL_TO_STRING_TAG,\n get: function get() {\n return 'Source';\n }\n }]);\n\n return Source;\n}();\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\n// eslint-disable-next-line no-redeclare\nexport function isSource(source) {\n return instanceOf(source, Source);\n}\n","/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */\n","/**\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 *\n * @internal\n */\nexport function dedentBlockStringValue(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 = getBlockStringIndentation(rawString);\n\n if (commonIndent !== 0) {\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 var startLine = 0;\n\n while (startLine < lines.length && isBlank(lines[startLine])) {\n ++startLine;\n }\n\n var endLine = lines.length;\n\n while (endLine > startLine && isBlank(lines[endLine - 1])) {\n --endLine;\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.slice(startLine, endLine).join('\\n');\n}\n\nfunction isBlank(str) {\n for (var i = 0; i < str.length; ++i) {\n if (str[i] !== ' ' && str[i] !== '\\t') {\n return false;\n }\n }\n\n return true;\n}\n/**\n * @internal\n */\n\n\nexport function getBlockStringIndentation(value) {\n var _commonIndent;\n\n var isFirstLine = true;\n var isEmptyLine = true;\n var indent = 0;\n var commonIndent = null;\n\n for (var i = 0; i < value.length; ++i) {\n switch (value.charCodeAt(i)) {\n case 13:\n // \\r\n if (value.charCodeAt(i + 1) === 10) {\n ++i; // skip \\r\\n as one symbol\n }\n\n // falls through\n\n case 10:\n // \\n\n isFirstLine = false;\n isEmptyLine = true;\n indent = 0;\n break;\n\n case 9: // \\t\n\n case 32:\n // \n ++indent;\n break;\n\n default:\n if (isEmptyLine && !isFirstLine && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n }\n\n isEmptyLine = false;\n }\n }\n\n return (_commonIndent = commonIndent) !== null && _commonIndent !== void 0 ? _commonIndent : 0;\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 * @internal\n */\n\nexport function printBlockString(value) {\n var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var isSingleLine = value.indexOf('\\n') === -1;\n var hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n var hasTrailingQuote = value[value.length - 1] === '\"';\n var hasTrailingSlash = value[value.length - 1] === '\\\\';\n var printAsMultipleLines = !isSingleLine || hasTrailingQuote || hasTrailingSlash || preferMultipleLines;\n var result = ''; // Format a multi-line block quote to account for leading space.\n\n if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n result += '\\n' + indentation;\n }\n\n result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n\n if (printAsMultipleLines) {\n result += '\\n';\n }\n\n return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Token } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { dedentBlockStringValue } from \"./blockString.mjs\";\n/**\n * Given a Source object, creates 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 var Lexer = /*#__PURE__*/function () {\n /**\n * The previously focused non-ignored token.\n */\n\n /**\n * The currently focused non-ignored token.\n */\n\n /**\n * The (1-indexed) line containing the current token.\n */\n\n /**\n * The character offset at which the current line begins.\n */\n function Lexer(source) {\n var startOfFileToken = new Token(TokenKind.SOF, 0, 0, 0, 0, null);\n this.source = source;\n this.lastToken = startOfFileToken;\n this.token = startOfFileToken;\n this.line = 1;\n this.lineStart = 0;\n }\n /**\n * Advances the token stream to the next non-ignored token.\n */\n\n\n var _proto = Lexer.prototype;\n\n _proto.advance = function advance() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n }\n /**\n * Looks ahead and returns the next non-ignored token, but does not change\n * the state of Lexer.\n */\n ;\n\n _proto.lookahead = function lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n var _token$next;\n\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = (_token$next = token.next) !== null && _token$next !== void 0 ? _token$next : token.next = readToken(this, token);\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n };\n\n return Lexer;\n}();\n/**\n * @internal\n */\n\nexport function isPunctuatorTokenKind(kind) {\n return kind === TokenKind.BANG || kind === TokenKind.DOLLAR || kind === TokenKind.AMP || kind === TokenKind.PAREN_L || kind === TokenKind.PAREN_R || kind === TokenKind.SPREAD || kind === TokenKind.COLON || kind === TokenKind.EQUALS || kind === TokenKind.AT || kind === TokenKind.BRACKET_L || kind === TokenKind.BRACKET_R || kind === TokenKind.BRACE_L || kind === TokenKind.PIPE || kind === TokenKind.BRACE_R;\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 until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * 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 = prev.end;\n\n while (pos < bodyLength) {\n var code = body.charCodeAt(pos);\n var _line = lexer.line;\n\n var _col = 1 + pos - lexer.lineStart; // SourceCharacter\n\n\n switch (code) {\n case 0xfeff: // \n\n case 9: // \\t\n\n case 32: // \n\n case 44:\n // ,\n ++pos;\n continue;\n\n case 10:\n // \\n\n ++pos;\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 13:\n // \\r\n if (body.charCodeAt(pos + 1) === 10) {\n pos += 2;\n } else {\n ++pos;\n }\n\n ++lexer.line;\n lexer.lineStart = pos;\n continue;\n\n case 33:\n // !\n return new Token(TokenKind.BANG, pos, pos + 1, _line, _col, prev);\n\n case 35:\n // #\n return readComment(source, pos, _line, _col, prev);\n\n case 36:\n // $\n return new Token(TokenKind.DOLLAR, pos, pos + 1, _line, _col, prev);\n\n case 38:\n // &\n return new Token(TokenKind.AMP, pos, pos + 1, _line, _col, prev);\n\n case 40:\n // (\n return new Token(TokenKind.PAREN_L, pos, pos + 1, _line, _col, prev);\n\n case 41:\n // )\n return new Token(TokenKind.PAREN_R, pos, pos + 1, _line, _col, prev);\n\n case 46:\n // .\n if (body.charCodeAt(pos + 1) === 46 && body.charCodeAt(pos + 2) === 46) {\n return new Token(TokenKind.SPREAD, pos, pos + 3, _line, _col, prev);\n }\n\n break;\n\n case 58:\n // :\n return new Token(TokenKind.COLON, pos, pos + 1, _line, _col, prev);\n\n case 61:\n // =\n return new Token(TokenKind.EQUALS, pos, pos + 1, _line, _col, prev);\n\n case 64:\n // @\n return new Token(TokenKind.AT, pos, pos + 1, _line, _col, prev);\n\n case 91:\n // [\n return new Token(TokenKind.BRACKET_L, pos, pos + 1, _line, _col, prev);\n\n case 93:\n // ]\n return new Token(TokenKind.BRACKET_R, pos, pos + 1, _line, _col, prev);\n\n case 123:\n // {\n return new Token(TokenKind.BRACE_L, pos, pos + 1, _line, _col, prev);\n\n case 124:\n // |\n return new Token(TokenKind.PIPE, pos, pos + 1, _line, _col, prev);\n\n case 125:\n // }\n return new Token(TokenKind.BRACE_R, pos, pos + 1, _line, _col, prev);\n\n case 34:\n // \"\n if (body.charCodeAt(pos + 1) === 34 && body.charCodeAt(pos + 2) === 34) {\n return readBlockString(source, pos, _line, _col, prev, lexer);\n }\n\n return readString(source, pos, _line, _col, prev);\n\n case 45: // -\n\n case 48: // 0\n\n case 49: // 1\n\n case 50: // 2\n\n case 51: // 3\n\n case 52: // 4\n\n case 53: // 5\n\n case 54: // 6\n\n case 55: // 7\n\n case 56: // 8\n\n case 57:\n // 9\n return readNumber(source, pos, code, _line, _col, prev);\n\n case 65: // A\n\n case 66: // B\n\n case 67: // C\n\n case 68: // D\n\n case 69: // E\n\n case 70: // F\n\n case 71: // G\n\n case 72: // H\n\n case 73: // I\n\n case 74: // J\n\n case 75: // K\n\n case 76: // L\n\n case 77: // M\n\n case 78: // N\n\n case 79: // O\n\n case 80: // P\n\n case 81: // Q\n\n case 82: // R\n\n case 83: // S\n\n case 84: // T\n\n case 85: // U\n\n case 86: // V\n\n case 87: // W\n\n case 88: // X\n\n case 89: // Y\n\n case 90: // Z\n\n case 95: // _\n\n case 97: // a\n\n case 98: // b\n\n case 99: // c\n\n case 100: // d\n\n case 101: // e\n\n case 102: // f\n\n case 103: // g\n\n case 104: // h\n\n case 105: // i\n\n case 106: // j\n\n case 107: // k\n\n case 108: // l\n\n case 109: // m\n\n case 110: // n\n\n case 111: // o\n\n case 112: // p\n\n case 113: // q\n\n case 114: // r\n\n case 115: // s\n\n case 116: // t\n\n case 117: // u\n\n case 118: // v\n\n case 119: // w\n\n case 120: // x\n\n case 121: // y\n\n case 122:\n // z\n return readName(source, pos, _line, _col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n }\n\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n return new Token(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\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 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 = body.charCodeAt(++position);\n } while (!isNaN(code) && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Token(TokenKind.COMMENT, start, position, line, col, prev, body.slice(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 = body.charCodeAt(++position);\n }\n\n if (code === 48) {\n // 0\n code = body.charCodeAt(++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 = body.charCodeAt(position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = body.charCodeAt(++position);\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = body.charCodeAt(++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = body.charCodeAt(++position);\n }\n\n position = readDigits(source, position, code);\n code = body.charCodeAt(position);\n } // Numbers cannot be followed by . or NameStart\n\n\n if (code === 46 || isNameStart(code)) {\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n }\n\n return new Token(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, body.slice(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 = body.charCodeAt(++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 && !isNaN(code = body.charCodeAt(position)) && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += body.slice(chunkStart, position);\n return new Token(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 += body.slice(chunkStart, position - 1);\n code = body.charCodeAt(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 {\n // uXXXX\n var charCode = uniCharCode(body.charCodeAt(position + 1), body.charCodeAt(position + 2), body.charCodeAt(position + 3), body.charCodeAt(position + 4));\n\n if (charCode < 0) {\n var invalidSequence = body.slice(position + 1, position + 5);\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\u\".concat(invalidSequence, \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n }\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, lexer) {\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 && !isNaN(code = body.charCodeAt(position))) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34) {\n rawValue += body.slice(chunkStart, position);\n return new Token(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, dedentBlockStringValue(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 }\n\n 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 (body.charCodeAt(position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else if ( // Escape Triple-Quote (\\\"\"\")\n code === 92 && body.charCodeAt(position + 1) === 34 && body.charCodeAt(position + 2) === 34 && body.charCodeAt(position + 3) === 34) {\n rawValue += body.slice(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 hexadecimal 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 && !isNaN(code = body.charCodeAt(position)) && (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 Token(TokenKind.NAME, start, position, line, col, prev, body.slice(start, position));\n} // _ A-Z a-z\n\n\nfunction isNameStart(code) {\n return code === 95 || code >= 65 && code <= 90 || code >= 97 && code <= 122;\n}\n","import { syntaxError } from \"../error/syntaxError.mjs\";\nimport { Kind } from \"./kinds.mjs\";\nimport { Location } from \"./ast.mjs\";\nimport { TokenKind } from \"./tokenKind.mjs\";\nimport { Source, isSource } from \"./source.mjs\";\nimport { DirectiveLocation } from \"./directiveLocation.mjs\";\nimport { Lexer, isPunctuatorTokenKind } from \"./lexer.mjs\";\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nexport function parse(source, options) {\n var parser = new Parser(source, options);\n return parser.parseDocument();\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 parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var value = parser.parseValueLiteral(false);\n parser.expectToken(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 parser = new Parser(source, options);\n parser.expectToken(TokenKind.SOF);\n var type = parser.parseTypeReference();\n parser.expectToken(TokenKind.EOF);\n return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nexport var Parser = /*#__PURE__*/function () {\n function Parser(source, options) {\n var sourceObj = isSource(source) ? source : new Source(source);\n this._lexer = new Lexer(sourceObj);\n this._options = options;\n }\n /**\n * Converts a name lex token into a name parse node.\n */\n\n\n var _proto = Parser.prototype;\n\n _proto.parseName = function parseName() {\n var token = this.expectToken(TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: this.loc(token)\n };\n } // Implements the parsing rules in the Document section.\n\n /**\n * Document : Definition+\n */\n ;\n\n _proto.parseDocument = function parseDocument() {\n var start = this._lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: this.many(TokenKind.SOF, this.parseDefinition, TokenKind.EOF),\n loc: this.loc(start)\n };\n }\n /**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n *\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n ;\n\n _proto.parseDefinition = function parseDefinition() {\n if (this.peek(TokenKind.NAME)) {\n switch (this._lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return this.parseOperationDefinition();\n\n case 'fragment':\n return this.parseFragmentDefinition();\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 this.parseTypeSystemDefinition();\n\n case 'extend':\n return this.parseTypeSystemExtension();\n }\n } else if (this.peek(TokenKind.BRACE_L)) {\n return this.parseOperationDefinition();\n } else if (this.peekDescription()) {\n return this.parseTypeSystemDefinition();\n }\n\n throw this.unexpected();\n } // Implements the parsing rules in the Operations section.\n\n /**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n ;\n\n _proto.parseOperationDefinition = function parseOperationDefinition() {\n var start = this._lexer.token;\n\n if (this.peek(TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n var operation = this.parseOperationType();\n var name;\n\n if (this.peek(TokenKind.NAME)) {\n name = this.parseName();\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: this.parseVariableDefinitions(),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * OperationType : one of query mutation subscription\n */\n ;\n\n _proto.parseOperationType = function parseOperationType() {\n var operationToken = this.expectToken(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 this.unexpected(operationToken);\n }\n /**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n ;\n\n _proto.parseVariableDefinitions = function parseVariableDefinitions() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseVariableDefinition, TokenKind.PAREN_R);\n }\n /**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseVariableDefinition = function parseVariableDefinition() {\n var start = this._lexer.token;\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: this.parseVariable(),\n type: (this.expectToken(TokenKind.COLON), this.parseTypeReference()),\n defaultValue: this.expectOptionalToken(TokenKind.EQUALS) ? this.parseValueLiteral(true) : undefined,\n directives: this.parseDirectives(true),\n loc: this.loc(start)\n };\n }\n /**\n * Variable : $ Name\n */\n ;\n\n _proto.parseVariable = function parseVariable() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: this.parseName(),\n loc: this.loc(start)\n };\n }\n /**\n * SelectionSet : { Selection+ }\n */\n ;\n\n _proto.parseSelectionSet = function parseSelectionSet() {\n var start = this._lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: this.many(TokenKind.BRACE_L, this.parseSelection, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n ;\n\n _proto.parseSelection = function parseSelection() {\n return this.peek(TokenKind.SPREAD) ? this.parseFragment() : this.parseField();\n }\n /**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n ;\n\n _proto.parseField = function parseField() {\n var start = this._lexer.token;\n var nameOrAlias = this.parseName();\n var alias;\n var name;\n\n if (this.expectOptionalToken(TokenKind.COLON)) {\n alias = nameOrAlias;\n name = this.parseName();\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: this.parseArguments(false),\n directives: this.parseDirectives(false),\n selectionSet: this.peek(TokenKind.BRACE_L) ? this.parseSelectionSet() : undefined,\n loc: this.loc(start)\n };\n }\n /**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n ;\n\n _proto.parseArguments = function parseArguments(isConst) {\n var item = isConst ? this.parseConstArgument : this.parseArgument;\n return this.optionalMany(TokenKind.PAREN_L, item, TokenKind.PAREN_R);\n }\n /**\n * Argument[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseArgument = function parseArgument() {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.ARGUMENT,\n name: name,\n value: this.parseValueLiteral(false),\n loc: this.loc(start)\n };\n };\n\n _proto.parseConstArgument = function parseConstArgument() {\n var start = this._lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: this.parseName(),\n value: (this.expectToken(TokenKind.COLON), this.parseValueLiteral(true)),\n loc: this.loc(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\n _proto.parseFragment = function parseFragment() {\n var start = this._lexer.token;\n this.expectToken(TokenKind.SPREAD);\n var hasTypeCondition = this.expectOptionalKeyword('on');\n\n if (!hasTypeCondition && this.peek(TokenKind.NAME)) {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: this.parseFragmentName(),\n directives: this.parseDirectives(false),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n ;\n\n _proto.parseFragmentDefinition = function parseFragmentDefinition() {\n var _this$_options;\n\n var start = this._lexer.token;\n this.expectKeyword('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 (((_this$_options = this._options) === null || _this$_options === void 0 ? void 0 : _this$_options.experimentalFragmentVariables) === true) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n variableDefinitions: this.parseVariableDefinitions(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: this.parseFragmentName(),\n typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n directives: this.parseDirectives(false),\n selectionSet: this.parseSelectionSet(),\n loc: this.loc(start)\n };\n }\n /**\n * FragmentName : Name but not `on`\n */\n ;\n\n _proto.parseFragmentName = function parseFragmentName() {\n if (this._lexer.token.value === 'on') {\n throw this.unexpected();\n }\n\n return this.parseName();\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\n _proto.parseValueLiteral = function parseValueLiteral(isConst) {\n var token = this._lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return this.parseList(isConst);\n\n case TokenKind.BRACE_L:\n return this.parseObject(isConst);\n\n case TokenKind.INT:\n this._lexer.advance();\n\n return {\n kind: Kind.INT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.FLOAT:\n this._lexer.advance();\n\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: this.loc(token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return this.parseStringLiteral();\n\n case TokenKind.NAME:\n this._lexer.advance();\n\n switch (token.value) {\n case 'true':\n return {\n kind: Kind.BOOLEAN,\n value: true,\n loc: this.loc(token)\n };\n\n case 'false':\n return {\n kind: Kind.BOOLEAN,\n value: false,\n loc: this.loc(token)\n };\n\n case 'null':\n return {\n kind: Kind.NULL,\n loc: this.loc(token)\n };\n\n default:\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: this.loc(token)\n };\n }\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return this.parseVariable();\n }\n\n break;\n }\n\n throw this.unexpected();\n };\n\n _proto.parseStringLiteral = function parseStringLiteral() {\n var token = this._lexer.token;\n\n this._lexer.advance();\n\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: this.loc(token)\n };\n }\n /**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n ;\n\n _proto.parseList = function parseList(isConst) {\n var _this = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this.parseValueLiteral(isConst);\n };\n\n return {\n kind: Kind.LIST,\n values: this.any(TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n ;\n\n _proto.parseObject = function parseObject(isConst) {\n var _this2 = this;\n\n var start = this._lexer.token;\n\n var item = function item() {\n return _this2.parseObjectField(isConst);\n };\n\n return {\n kind: Kind.OBJECT,\n fields: this.any(TokenKind.BRACE_L, item, TokenKind.BRACE_R),\n loc: this.loc(start)\n };\n }\n /**\n * ObjectField[Const] : Name : Value[?Const]\n */\n ;\n\n _proto.parseObjectField = function parseObjectField(isConst) {\n var start = this._lexer.token;\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n return {\n kind: Kind.OBJECT_FIELD,\n name: name,\n value: this.parseValueLiteral(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Directives section.\n\n /**\n * Directives[Const] : Directive[?Const]+\n */\n ;\n\n _proto.parseDirectives = function parseDirectives(isConst) {\n var directives = [];\n\n while (this.peek(TokenKind.AT)) {\n directives.push(this.parseDirective(isConst));\n }\n\n return directives;\n }\n /**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n ;\n\n _proto.parseDirective = function parseDirective(isConst) {\n var start = this._lexer.token;\n this.expectToken(TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: this.parseName(),\n arguments: this.parseArguments(isConst),\n loc: this.loc(start)\n };\n } // Implements the parsing rules in the Types section.\n\n /**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n ;\n\n _proto.parseTypeReference = function parseTypeReference() {\n var start = this._lexer.token;\n var type;\n\n if (this.expectOptionalToken(TokenKind.BRACKET_L)) {\n type = this.parseTypeReference();\n this.expectToken(TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: this.loc(start)\n };\n } else {\n type = this.parseNamedType();\n }\n\n if (this.expectOptionalToken(TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: this.loc(start)\n };\n }\n\n return type;\n }\n /**\n * NamedType : Name\n */\n ;\n\n _proto.parseNamedType = function parseNamedType() {\n var start = this._lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: this.parseName(),\n loc: this.loc(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 ;\n\n _proto.parseTypeSystemDefinition = function parseTypeSystemDefinition() {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = this.peekDescription() ? this._lexer.lookahead() : this._lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaDefinition();\n\n case 'scalar':\n return this.parseScalarTypeDefinition();\n\n case 'type':\n return this.parseObjectTypeDefinition();\n\n case 'interface':\n return this.parseInterfaceTypeDefinition();\n\n case 'union':\n return this.parseUnionTypeDefinition();\n\n case 'enum':\n return this.parseEnumTypeDefinition();\n\n case 'input':\n return this.parseInputObjectTypeDefinition();\n\n case 'directive':\n return this.parseDirectiveDefinition();\n }\n }\n\n throw this.unexpected(keywordToken);\n };\n\n _proto.peekDescription = function peekDescription() {\n return this.peek(TokenKind.STRING) || this.peek(TokenKind.BLOCK_STRING);\n }\n /**\n * Description : StringValue\n */\n ;\n\n _proto.parseDescription = function parseDescription() {\n if (this.peekDescription()) {\n return this.parseStringLiteral();\n }\n }\n /**\n * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n */\n ;\n\n _proto.parseSchemaDefinition = function parseSchemaDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.many(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n description: description,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * OperationTypeDefinition : OperationType : NamedType\n */\n ;\n\n _proto.parseOperationTypeDefinition = function parseOperationTypeDefinition() {\n var start = this._lexer.token;\n var operation = this.parseOperationType();\n this.expectToken(TokenKind.COLON);\n var type = this.parseNamedType();\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n ;\n\n _proto.parseScalarTypeDefinition = function parseScalarTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseObjectTypeDefinition = function parseObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\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: this.loc(start)\n };\n }\n /**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n ;\n\n _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {\n var _this$_options2;\n\n if (!this.expectOptionalKeyword('implements')) {\n return [];\n }\n\n if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {\n var types = []; // Optional leading ampersand\n\n this.expectOptionalToken(TokenKind.AMP);\n\n do {\n types.push(this.parseNamedType());\n } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));\n\n return types;\n }\n\n return this.delimitedMany(TokenKind.AMP, this.parseNamedType);\n }\n /**\n * FieldsDefinition : { FieldDefinition+ }\n */\n ;\n\n _proto.parseFieldsDefinition = function parseFieldsDefinition() {\n var _this$_options3;\n\n // Legacy support for the SDL?\n if (((_this$_options3 = this._options) === null || _this$_options3 === void 0 ? void 0 : _this$_options3.allowLegacySDLEmptyFields) === true && this.peek(TokenKind.BRACE_L) && this._lexer.lookahead().kind === TokenKind.BRACE_R) {\n this._lexer.advance();\n\n this._lexer.advance();\n\n return [];\n }\n\n return this.optionalMany(TokenKind.BRACE_L, this.parseFieldDefinition, TokenKind.BRACE_R);\n }\n /**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n ;\n\n _proto.parseFieldDefinition = function parseFieldDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var directives = this.parseDirectives(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: this.loc(start)\n };\n }\n /**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n ;\n\n _proto.parseArgumentDefs = function parseArgumentDefs() {\n return this.optionalMany(TokenKind.PAREN_L, this.parseInputValueDef, TokenKind.PAREN_R);\n }\n /**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n ;\n\n _proto.parseInputValueDef = function parseInputValueDef() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n this.expectToken(TokenKind.COLON);\n var type = this.parseTypeReference();\n var defaultValue;\n\n if (this.expectOptionalToken(TokenKind.EQUALS)) {\n defaultValue = this.parseValueLiteral(true);\n }\n\n var directives = this.parseDirectives(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: this.loc(start)\n };\n }\n /**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n ;\n\n _proto.parseInterfaceTypeDefinition = function parseInterfaceTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n ;\n\n _proto.parseUnionTypeDefinition = function parseUnionTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n ;\n\n _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {\n return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];\n }\n /**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n ;\n\n _proto.parseEnumTypeDefinition = function parseEnumTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n ;\n\n _proto.parseEnumValuesDefinition = function parseEnumValuesDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.parseEnumValueDefinition, TokenKind.BRACE_R);\n }\n /**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n ;\n\n _proto.parseEnumValueDefinition = function parseEnumValueDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n ;\n\n _proto.parseInputObjectTypeDefinition = function parseInputObjectTypeDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n ;\n\n _proto.parseInputFieldsDefinition = function parseInputFieldsDefinition() {\n return this.optionalMany(TokenKind.BRACE_L, this.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\n _proto.parseTypeSystemExtension = function parseTypeSystemExtension() {\n var keywordToken = this._lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return this.parseSchemaExtension();\n\n case 'scalar':\n return this.parseScalarTypeExtension();\n\n case 'type':\n return this.parseObjectTypeExtension();\n\n case 'interface':\n return this.parseInterfaceTypeExtension();\n\n case 'union':\n return this.parseUnionTypeExtension();\n\n case 'enum':\n return this.parseEnumTypeExtension();\n\n case 'input':\n return this.parseInputObjectTypeExtension();\n }\n }\n\n throw this.unexpected(keywordToken);\n }\n /**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n ;\n\n _proto.parseSchemaExtension = function parseSchemaExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('schema');\n var directives = this.parseDirectives(true);\n var operationTypes = this.optionalMany(TokenKind.BRACE_L, this.parseOperationTypeDefinition, TokenKind.BRACE_R);\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: this.loc(start)\n };\n }\n /**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n ;\n\n _proto.parseScalarTypeExtension = function parseScalarTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('scalar');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n\n if (directives.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: this.loc(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\n _proto.parseObjectTypeExtension = function parseObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('type');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * InterfaceTypeExtension :\n * - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend interface Name ImplementsInterfaces? Directives[Const]\n * - extend interface Name ImplementsInterfaces\n */\n ;\n\n _proto.parseInterfaceTypeExtension = function parseInterfaceTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('interface');\n var name = this.parseName();\n var interfaces = this.parseImplementsInterfaces();\n var directives = this.parseDirectives(true);\n var fields = this.parseFieldsDefinition();\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n ;\n\n _proto.parseUnionTypeExtension = function parseUnionTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('union');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var types = this.parseUnionMemberTypes();\n\n if (directives.length === 0 && types.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: this.loc(start)\n };\n }\n /**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n ;\n\n _proto.parseEnumTypeExtension = function parseEnumTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('enum');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var values = this.parseEnumValuesDefinition();\n\n if (directives.length === 0 && values.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: this.loc(start)\n };\n }\n /**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n ;\n\n _proto.parseInputObjectTypeExtension = function parseInputObjectTypeExtension() {\n var start = this._lexer.token;\n this.expectKeyword('extend');\n this.expectKeyword('input');\n var name = this.parseName();\n var directives = this.parseDirectives(true);\n var fields = this.parseInputFieldsDefinition();\n\n if (directives.length === 0 && fields.length === 0) {\n throw this.unexpected();\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n */\n ;\n\n _proto.parseDirectiveDefinition = function parseDirectiveDefinition() {\n var start = this._lexer.token;\n var description = this.parseDescription();\n this.expectKeyword('directive');\n this.expectToken(TokenKind.AT);\n var name = this.parseName();\n var args = this.parseArgumentDefs();\n var repeatable = this.expectOptionalKeyword('repeatable');\n this.expectKeyword('on');\n var locations = this.parseDirectiveLocations();\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n repeatable: repeatable,\n locations: locations,\n loc: this.loc(start)\n };\n }\n /**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n ;\n\n _proto.parseDirectiveLocations = function parseDirectiveLocations() {\n return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);\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\n _proto.parseDirectiveLocation = function parseDirectiveLocation() {\n var start = this._lexer.token;\n var name = this.parseName();\n\n if (DirectiveLocation[name.value] !== undefined) {\n return name;\n }\n\n throw this.unexpected(start);\n } // Core parsing utility functions\n\n /**\n * Returns a location object, used to identify the place in the source that created a given parsed object.\n */\n ;\n\n _proto.loc = function loc(startToken) {\n var _this$_options4;\n\n if (((_this$_options4 = this._options) === null || _this$_options4 === void 0 ? void 0 : _this$_options4.noLocation) !== true) {\n return new Location(startToken, this._lexer.lastToken, this._lexer.source);\n }\n }\n /**\n * Determines if the next token is of a given kind\n */\n ;\n\n _proto.peek = function peek(kind) {\n return this._lexer.token.kind === kind;\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectToken = function expectToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n throw syntaxError(this._lexer.source, token.start, \"Expected \".concat(getTokenKindDesc(kind), \", found \").concat(getTokenDesc(token), \".\"));\n }\n /**\n * If the next token is of the given kind, return that token after advancing the lexer.\n * Otherwise, do not change the parser state and return undefined.\n */\n ;\n\n _proto.expectOptionalToken = function expectOptionalToken(kind) {\n var token = this._lexer.token;\n\n if (token.kind === kind) {\n this._lexer.advance();\n\n return token;\n }\n\n return undefined;\n }\n /**\n * If the next token is a given keyword, advance the lexer.\n * Otherwise, do not change the parser state and throw an error.\n */\n ;\n\n _proto.expectKeyword = function expectKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n } else {\n throw syntaxError(this._lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token), \".\"));\n }\n }\n /**\n * If the next token is a given keyword, return \"true\" after advancing the lexer.\n * Otherwise, do not change the parser state and return \"false\".\n */\n ;\n\n _proto.expectOptionalKeyword = function expectOptionalKeyword(value) {\n var token = this._lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n this._lexer.advance();\n\n return true;\n }\n\n return false;\n }\n /**\n * Helper function for creating an error when an unexpected lexed token is encountered.\n */\n ;\n\n _proto.unexpected = function unexpected(atToken) {\n var token = atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n return syntaxError(this._lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token), \".\"));\n }\n /**\n * Returns a possibly empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.any = function any(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n while (!this.expectOptionalToken(closeKind)) {\n nodes.push(parseFn.call(this));\n }\n\n return nodes;\n }\n /**\n * Returns a list of parse nodes, determined by the parseFn.\n * It can be empty only if open token is missing otherwise it will always return non-empty list\n * that begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.optionalMany = function optionalMany(openKind, parseFn, closeKind) {\n if (this.expectOptionalToken(openKind)) {\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n\n return [];\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n * Advances the parser to the next lex token after the closing token.\n */\n ;\n\n _proto.many = function many(openKind, parseFn, closeKind) {\n this.expectToken(openKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (!this.expectOptionalToken(closeKind));\n\n return nodes;\n }\n /**\n * Returns a non-empty list of parse nodes, determined by the parseFn.\n * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n * Advances the parser to the next lex token after last item in the list.\n */\n ;\n\n _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {\n this.expectOptionalToken(delimiterKind);\n var nodes = [];\n\n do {\n nodes.push(parseFn.call(this));\n } while (this.expectOptionalToken(delimiterKind));\n\n return nodes;\n };\n\n return Parser;\n}();\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nfunction getTokenDesc(token) {\n var value = token.value;\n return getTokenKindDesc(token.kind) + (value != null ? \" \\\"\".concat(value, \"\\\"\") : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\n\nfunction getTokenKindDesc(kind) {\n return isPunctuatorTokenKind(kind) ? \"\\\"\".concat(kind, \"\\\"\") : kind;\n}\n","import inspect from \"../jsutils/inspect.mjs\";\nimport { isNode } from \"./ast.mjs\";\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\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: ['description', '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', 'interfaces', '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', 'interfaces', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = Object.freeze({});\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 the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n\n /* eslint-disable no-undef-init */\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n clone[k] = node[k];\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: \".concat(inspect(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 var _visitorKeys$node$kin;\n\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$kin = visitorKeys[node.kind]) !== null && _visitorKeys$node$kin !== void 0 ? _visitorKeys$node$kin : [];\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/**\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\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] == null) {\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] == null) {\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 * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}\n","import { visit } from \"./visitor.mjs\";\nimport { printBlockString } from \"./blockString.mjs\";\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 MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future\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 var prefix = wrap('', alias, ': ') + name;\n var argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n if (argsLine.length > MAX_LINE_LENGTH) {\n argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n }\n\n return join([argsLine, 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: addDescription(function (_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 + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + ': ' + 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 interfaces = _ref26.interfaces,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, wrap('implements ', join(interfaces, ' & ')), 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 repeatable = _ref31.repeatable,\n locations = _ref31.locations;\n return 'directive @' + name + (hasMultilineItems(args) ? wrap('(\\n', indent(join(args, '\\n')), '\\n)') : wrap('(', join(args, ', '), ')')) + (repeatable ? ' repeatable' : '') + ' 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 interfaces = _ref35.interfaces,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), 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) {\n var _maybeArray$filter$jo;\n\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (_maybeArray$filter$jo = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.filter(function (x) {\n return x;\n }).join(separator)) !== null && _maybeArray$filter$jo !== void 0 ? _maybeArray$filter$jo : '';\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 wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\n\nfunction wrap(start, maybeString) {\n var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n return maybeString != null && maybeString !== '' ? start + maybeString + end : '';\n}\n\nfunction indent(str) {\n return wrap(' ', str.replace(/\\n/g, '\\n '));\n}\n\nfunction isMultiline(str) {\n return str.indexOf('\\n') !== -1;\n}\n\nfunction hasMultilineItems(maybeArray) {\n return maybeArray != null && maybeArray.some(isMultiline);\n}\n","/** @enum {string} */\nexport var ConnectionState;\n(function (ConnectionState) {\n /*\n * The connection is alive and healthy\n */\n ConnectionState[\"Connected\"] = \"Connected\";\n /*\n * The connection is alive, but the connection is offline\n */\n ConnectionState[\"ConnectedPendingNetwork\"] = \"ConnectedPendingNetwork\";\n /*\n * The connection has been disconnected while in use\n */\n ConnectionState[\"ConnectionDisrupted\"] = \"ConnectionDisrupted\";\n /*\n * The connection has been disconnected and the network is offline\n */\n ConnectionState[\"ConnectionDisruptedPendingNetwork\"] = \"ConnectionDisruptedPendingNetwork\";\n /*\n * The connection is in the process of connecting\n */\n ConnectionState[\"Connecting\"] = \"Connecting\";\n /*\n * The connection is not in use and is being disconnected\n */\n ConnectionState[\"ConnectedPendingDisconnect\"] = \"ConnectedPendingDisconnect\";\n /*\n * The connection is not in use and has been disconnected\n */\n ConnectionState[\"Disconnected\"] = \"Disconnected\";\n /*\n * The connection is alive, but a keep alive message has been missed\n */\n ConnectionState[\"ConnectedPendingKeepAlive\"] = \"ConnectedPendingKeepAlive\";\n})(ConnectionState || (ConnectionState = {}));\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\nvar AbstractPubSubProvider = /** @class */ (function () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) { options = {}; }\n this._config = options;\n }\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) { config = {}; }\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function () {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}());\nexport { AbstractPubSubProvider };\n//# sourceMappingURL=PubSubProvider.js.map","var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport { browserOrNode, isWebWorker } from '@aws-amplify/core';\nimport Observable from 'zen-observable-ts';\nvar ReachabilityNavigator = /** @class */ (function () {\n function ReachabilityNavigator() {\n }\n ReachabilityNavigator.prototype.networkMonitor = function (netInfo) {\n if (browserOrNode().isNode) {\n return Observable.from([{ online: true }]);\n }\n var globalObj = isWebWorker() ? self : window;\n return new Observable(function (observer) {\n observer.next({ online: globalObj.navigator.onLine });\n var notifyOnline = function () { return observer.next({ online: true }); };\n var notifyOffline = function () { return observer.next({ online: false }); };\n globalObj.addEventListener('online', notifyOnline);\n globalObj.addEventListener('offline', notifyOffline);\n ReachabilityNavigator._observers.push(observer);\n return function () {\n globalObj.removeEventListener('online', notifyOnline);\n globalObj.removeEventListener('offline', notifyOffline);\n ReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(function (_observer) { return _observer !== observer; });\n };\n });\n };\n // expose observers to simulate offline mode for integration testing\n ReachabilityNavigator._observerOverride = function (status) {\n var e_1, _a;\n var _loop_1 = function (observer) {\n if (observer.closed) {\n ReachabilityNavigator._observers = ReachabilityNavigator._observers.filter(function (_observer) { return _observer !== observer; });\n return \"continue\";\n }\n observer.next(status);\n };\n try {\n for (var _b = __values(ReachabilityNavigator._observers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n _loop_1(observer);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n ReachabilityNavigator._observers = [];\n return ReachabilityNavigator;\n}());\nexport default ReachabilityNavigator;\n//# sourceMappingURL=Reachability.js.map","export var MAX_DELAY_MS = 5000;\nexport var NON_RETRYABLE_CODES = [400, 401, 403];\nexport var MESSAGE_TYPES;\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 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 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 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 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 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 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 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 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 MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\nexport var SUBSCRIPTION_STATUS;\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 = {}));\nexport var SOCKET_STATUS;\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 = {}));\nexport var AMPLIFY_SYMBOL = (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function'\n ? Symbol.for('amplify_default')\n : '@@amplify_default');\nexport var 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 */\nexport var CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\nexport var START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\nexport var DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n/**\n * Default Time in milleseconds to alert for missed GQL_CONNECTION_KEEP_ALIVE message\n */\nexport var DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT = 65 * 1000;\n//# sourceMappingURL=constants.js.map","import { Reachability } from '@aws-amplify/core';\nexport var ReachabilityMonitor = function () { return new Reachability().networkMonitor(); };\n//# sourceMappingURL=index.js.map","/*\n * Copyright 2017-2021 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 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport Observable from 'zen-observable-ts';\nimport { ConnectionState } from '../index';\nimport { ReachabilityMonitor } from './ReachabilityMonitor';\nexport var CONNECTION_CHANGE = {\n KEEP_ALIVE_MISSED: { keepAliveState: 'unhealthy' },\n KEEP_ALIVE: { keepAliveState: 'healthy' },\n CONNECTION_ESTABLISHED: { connectionState: 'connected' },\n CONNECTION_FAILED: {\n intendedConnectionState: 'disconnected',\n connectionState: 'disconnected',\n },\n CLOSING_CONNECTION: { intendedConnectionState: 'disconnected' },\n OPENING_CONNECTION: {\n intendedConnectionState: 'connected',\n connectionState: 'connecting',\n },\n CLOSED: { connectionState: 'disconnected' },\n ONLINE: { networkState: 'connected' },\n OFFLINE: { networkState: 'disconnected' },\n};\nvar ConnectionStateMonitor = /** @class */ (function () {\n function ConnectionStateMonitor() {\n var _this = this;\n this._networkMonitoringSubscription = undefined;\n this._linkedConnectionState = {\n networkState: 'connected',\n connectionState: 'disconnected',\n intendedConnectionState: 'disconnected',\n keepAliveState: 'healthy',\n };\n this._linkedConnectionStateObservable =\n new Observable(function (connectionStateObserver) {\n connectionStateObserver.next(_this._linkedConnectionState);\n _this._linkedConnectionStateObserver = connectionStateObserver;\n });\n }\n /**\n * Turn network state monitoring on if it isn't on already\n */\n ConnectionStateMonitor.prototype.enableNetworkMonitoring = function () {\n var _this = this;\n // Maintain the network state based on the reachability monitor\n if (this._networkMonitoringSubscription === undefined) {\n this._networkMonitoringSubscription = ReachabilityMonitor().subscribe(function (_a) {\n var online = _a.online;\n _this.record(online ? CONNECTION_CHANGE.ONLINE : CONNECTION_CHANGE.OFFLINE);\n });\n }\n };\n /**\n * Turn network state monitoring off if it isn't off already\n */\n ConnectionStateMonitor.prototype.disableNetworkMonitoring = function () {\n var _a;\n (_a = this._networkMonitoringSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();\n this._networkMonitoringSubscription = undefined;\n };\n Object.defineProperty(ConnectionStateMonitor.prototype, \"connectionStateObservable\", {\n /**\n * Get the observable that allows us to monitor the connection state\n *\n * @returns {Observable} - The observable that emits ConnectionState updates\n */\n get: function () {\n var _this = this;\n var previous;\n // The linked state aggregates state changes to any of the network, connection,\n // intendedConnection and keepAliveHealth. Some states will change these independent\n // states without changing the overall connection state.\n // After translating from linked states to ConnectionState, then remove any duplicates\n return this._linkedConnectionStateObservable\n .map(function (value) {\n return _this.connectionStatesTranslator(value);\n })\n .filter(function (current) {\n var toInclude = current !== previous;\n previous = current;\n return toInclude;\n });\n },\n enumerable: true,\n configurable: true\n });\n /*\n * Updates local connection state and emits the full state to the observer.\n */\n ConnectionStateMonitor.prototype.record = function (statusUpdates) {\n // Maintain the network monitor\n if (statusUpdates.intendedConnectionState === 'connected') {\n this.enableNetworkMonitoring();\n }\n else if (statusUpdates.intendedConnectionState === 'disconnected') {\n this.disableNetworkMonitoring();\n }\n // Maintain the socket state\n var newSocketStatus = __assign(__assign({}, this._linkedConnectionState), statusUpdates);\n this._linkedConnectionState = __assign({}, newSocketStatus);\n this._linkedConnectionStateObserver.next(this._linkedConnectionState);\n };\n /*\n * Translate the ConnectionState structure into a specific ConnectionState string literal union\n */\n ConnectionStateMonitor.prototype.connectionStatesTranslator = function (_a) {\n var connectionState = _a.connectionState, networkState = _a.networkState, intendedConnectionState = _a.intendedConnectionState, keepAliveState = _a.keepAliveState;\n if (connectionState === 'connected' && networkState === 'disconnected')\n return ConnectionState.ConnectedPendingNetwork;\n if (connectionState === 'connected' &&\n intendedConnectionState === 'disconnected')\n return ConnectionState.ConnectedPendingDisconnect;\n if (connectionState === 'disconnected' &&\n intendedConnectionState === 'connected' &&\n networkState === 'disconnected')\n return ConnectionState.ConnectionDisruptedPendingNetwork;\n if (connectionState === 'disconnected' &&\n intendedConnectionState === 'connected')\n return ConnectionState.ConnectionDisrupted;\n if (connectionState === 'connected' && keepAliveState === 'unhealthy')\n return ConnectionState.ConnectedPendingKeepAlive;\n // All remaining states directly correspond to the connection state\n if (connectionState === 'connecting')\n return ConnectionState.Connecting;\n if (connectionState === 'disconnected')\n return ConnectionState.Disconnected;\n return ConnectionState.Connected;\n };\n return ConnectionStateMonitor;\n}());\nexport { ConnectionStateMonitor };\n//# sourceMappingURL=ConnectionStateMonitor.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n 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 */\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, Hub } from '@aws-amplify/core';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../utils/ConnectionStateMonitor';\nimport { AMPLIFY_SYMBOL } from './constants';\nimport { CONNECTION_STATE_CHANGE } from '..';\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 for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#')\n return topicArray.length >= length;\n if (left !== '+' && left !== right)\n return false;\n }\n return length === topicArray.length;\n}\nvar ClientsQueue = /** @class */ (function () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var cachedPromise, newPromise;\n return __generator(this, function (_a) {\n cachedPromise = this.promises.get(clientId);\n if (cachedPromise) {\n return [2 /*return*/, cachedPromise];\n }\n if (clientFactory) {\n newPromise = clientFactory(clientId);\n this.promises.set(clientId, newPromise);\n return [2 /*return*/, newPromise];\n }\n return [2 /*return*/, undefined];\n });\n });\n };\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function () {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n return ClientsQueue;\n}());\nvar dispatchPubSubEvent = function (event, data, message) {\n Hub.dispatch('pubsub', { event: event, data: data, message: message }, 'PubSub', AMPLIFY_SYMBOL);\n};\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\nvar MqttOverWSProvider = /** @class */ (function (_super) {\n __extends(MqttOverWSProvider, _super);\n function MqttOverWSProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, __assign(__assign({}, options), { clientId: options.clientId || uuid() })) || this;\n _this._clientsQueue = new ClientsQueue();\n _this.connectionStateMonitor = new ConnectionStateMonitor();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n // Monitor the connection health state and pass changes along to Hub\n _this.connectionStateMonitor.connectionStateObservable.subscribe(function (connectionStateChange) {\n dispatchPubSubEvent(CONNECTION_STATE_CHANGE, {\n provider: _this,\n connectionState: connectionStateChange,\n }, \"Connection state is \" + connectionStateChange);\n });\n return _this;\n }\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function () {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function () {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function () {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({ errorCode: errorCode }, args), null, 2));\n var topicsToDelete_1 = [];\n if (!clientId) {\n return;\n }\n var clientIdObservers = this._clientIdObservers.get(clientId);\n if (!clientIdObservers) {\n return;\n }\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode);\n // removing observers for disconnected clientId\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic.delete(observer);\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n });\n // forgiving any trace of clientId\n this._clientIdObservers.delete(clientId);\n // Removing topics that are not listen by an observer\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers.delete(topic);\n });\n }\n };\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url, clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n client = new Paho.Client(url, clientId);\n // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName, msg = _a.payloadString;\n _this._onMessage(topic, msg);\n };\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode, args = __rest(_a, [\"errorCode\"]);\n _this.onDisconnect(__assign({ clientId: clientId, errorCode: errorCode }, args));\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n };\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function () { return resolve(client); },\n onFailure: function () {\n reject();\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n },\n });\n })];\n case 1:\n _b.sent();\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return [2 /*return*/, client];\n }\n });\n });\n };\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) { options = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), { clientId: clientId }));\n })];\n case 1: return [2 /*return*/, _a.sent()];\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: return [4 /*yield*/, this.clientsQueue.get(clientId)];\n case 1:\n client = _a.sent();\n if (client && client.isConnected()) {\n client.disconnect();\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n this.clientsQueue.remove(clientId);\n return [2 /*return*/];\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 /*yield*/, this.endpoint];\n case 1:\n url = _a.sent();\n return [4 /*yield*/, this.connect(this.clientId, { url: url })];\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) { return client.send(topic, message); });\n return [2 /*return*/];\n }\n });\n });\n };\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n var parsedMessage_1 = JSON.parse(msg);\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) { return observer.next(parsedMessage_1); });\n });\n }\n catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\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 if (!observersForTopic) {\n observersForTopic = new Set();\n _this._topicObservers.set(topic, observersForTopic);\n }\n observersForTopic.add(observer);\n });\n // @ts-ignore\n var client;\n var _a = options.clientId, clientId = _a === void 0 ? _this.clientId : _a;\n // this._clientIdObservers is used to close observers when client gets disconnected\n var observersForClientId = _this._clientIdObservers.get(clientId);\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n observersForClientId.add(observer);\n _this._clientIdObservers.set(clientId, observersForClientId);\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3 /*break*/, 2];\n return [4 /*yield*/, this.endpoint];\n case 1:\n _b = _c.sent();\n return [3 /*break*/, 3];\n case 2:\n _b = _a;\n _c.label = 3;\n case 3:\n url = _b;\n _c.label = 4;\n case 4:\n _c.trys.push([4, 6, , 7]);\n return [4 /*yield*/, this.connect(clientId, { url: url })];\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3 /*break*/, 7];\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3 /*break*/, 7];\n case 7: return [2 /*return*/];\n }\n });\n }); })();\n return function () {\n var _a, _b;\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n if (client) {\n (_a = _this._clientIdObservers.get(clientId)) === null || _a === void 0 ? void 0 : _a.delete(observer);\n // No more observers per client => client not needed anymore\n if (((_b = _this._clientIdObservers.get(clientId)) === null || _b === void 0 ? void 0 : _b.size) === 0) {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n _this.disconnect(clientId);\n _this._clientIdObservers.delete(clientId);\n }\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) ||\n new Set();\n observersForTopic.delete(observer);\n // if no observers exists for the topic, topic should be removed\n if (observersForTopic.size === 0) {\n _this._topicObservers.delete(topic);\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n return null;\n };\n });\n };\n return MqttOverWSProvider;\n}(AbstractPubSubProvider));\nexport { MqttOverWSProvider };\n//# sourceMappingURL=MqttOverWSProvider.js.map","/*\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(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTION_CLOSED\"] = \"Connection closed\";\n CONTROL_MSG[\"CONNECTION_FAILED\"] = \"Connection failed\";\n CONTROL_MSG[\"REALTIME_SUBSCRIPTION_INIT_ERROR\"] = \"AppSync Realtime subscription init error\";\n CONTROL_MSG[\"SUBSCRIPTION_ACK\"] = \"Subscription ack\";\n CONTROL_MSG[\"TIMEOUT_DISCONNECT\"] = \"Timeout disconnect\";\n})(CONTROL_MSG || (CONTROL_MSG = {}));\nexport var CONNECTION_STATE_CHANGE = 'ConnectionStateChange';\nexport { ConnectionState } from './types';\nexport { PubSub, CONTROL_MSG };\n/**\n * @deprecated use named import\n */\nexport default PubSub;\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n t[p[i]] = s[p[i]];\n }\n return t;\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), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\nvar __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\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/**\n * @deprecated Unused, all usecases have migrated to AWSAppSyncRealtimeProvider\n */\nvar AWSAppSyncProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncProvider, _super);\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function () {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\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 AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\n return t;\n });\n topicsForClient.forEach(function (t) { return _this._cleanUpForTopic(t); });\n };\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n this._topicAlias.delete(topic);\n };\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n var clientId = _a.clientId, errorCode = _a.errorCode, args = __rest(_a, [\"clientId\", \"errorCode\"]);\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries())\n .filter(function (_a) {\n var _b = __read(_a, 2), c = _b[1];\n return c.clientId === clientId;\n })\n .map(function (_a) {\n var _b = __read(_a, 1), t = _b[0];\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 _this._topicObservers.delete(topic);\n }\n });\n this._cleanUp(clientId);\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: return [4 /*yield*/, this.clientsQueue.get(clientId, function () { return null; })];\n case 1:\n client = _a.sent();\n return [4 /*yield*/, _super.prototype.disconnect.call(this, clientId)];\n case 2:\n _a.sent();\n this._cleanUp(clientId);\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n if (options === void 0) { options = {}; }\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n (function () { return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n var _this = this;\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 _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), alias = _b[0], v = _b[1];\n return [v.topic, alias];\n });\n // Merge new aliases with old ones\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) { return c.topics.indexOf(elem) > -1; });\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client, url = connectionInfoForTopic.url;\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set(),\n };\n }\n acc[clientId].topics.add(elem);\n }\n return acc;\n }, {}));\n // reconnect everything we have in the map\n return [4 /*yield*/, Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2), clientId = _b[0], _c = _b[1], url = _c.url, topics = _c.topics;\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n var _this = this;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n case 1:\n _d.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this.connect(clientId, {\n clientId: clientId,\n url: url,\n })];\n case 2:\n client = _d.sent();\n return [3 /*break*/, 4];\n case 3:\n err_1 = _d.sent();\n observer.error({ message: 'Failed to connect', error: err_1 });\n observer.complete();\n return [2 /*return*/, undefined];\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 _this._topicClient.set(topic, client);\n }\n });\n return [2 /*return*/, client];\n }\n });\n });\n }))];\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n return [2 /*return*/];\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 if (client && client.isConnected()) {\n client.unsubscribe(t);\n _this._topicClient.delete(t);\n if (!Array.from(_this._topicClient.values()).some(function (c) { return c === client; })) {\n _this.disconnect(client.clientId);\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 var alias = _this._topicAlias.get(topic);\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2), origKey = _b[0], val = _b[1];\n return ((obj[(alias || origKey)] = val), obj);\n }, {});\n return value;\n });\n };\n return AWSAppSyncProvider;\n}(MqttOverWSProvider));\nexport { AWSAppSyncProvider };\n//# sourceMappingURL=AWSAppSyncProvider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\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), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n/*\n * Copyright 2017-2021 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 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 { CONNECTION_STATE_CHANGE, CONTROL_MSG } from '../../index';\nimport { AMPLIFY_SYMBOL, AWS_APPSYNC_REALTIME_HEADERS, CONNECTION_INIT_TIMEOUT, DEFAULT_KEEP_ALIVE_TIMEOUT, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT, MAX_DELAY_MS, MESSAGE_TYPES, NON_RETRYABLE_CODES, SOCKET_STATUS, START_ACK_TIMEOUT, SUBSCRIPTION_STATUS, } from '../constants';\nimport { ConnectionStateMonitor, CONNECTION_CHANGE, } from '../../utils/ConnectionStateMonitor';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar dispatchApiEvent = function (event, data, message) {\n Hub.dispatch('api', { event: event, data: data, message: message }, 'PubSub', AMPLIFY_SYMBOL);\n};\nvar standardDomainPattern = /^https:\\/\\/\\w{26}\\.appsync\\-api\\.\\w{2}(?:(?:\\-\\w{2,})+)\\-\\d\\.amazonaws.com\\/graphql$/i;\nvar customDomainPath = '/realtime';\nvar AWSAppSyncRealTimeProvider = /** @class */ (function (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n function AWSAppSyncRealTimeProvider(options) {\n if (options === void 0) { options = {}; }\n var _this = _super.call(this, options) || this;\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n _this.connectionStateMonitor = new ConnectionStateMonitor();\n // Monitor the connection state and pass changes along to Hub\n _this.connectionStateMonitor.connectionStateObservable.subscribe(function (ConnectionState) {\n dispatchApiEvent(CONNECTION_STATE_CHANGE, {\n provider: _this,\n connectionState: ConnectionState,\n }, \"Connection state is \" + ConnectionState);\n });\n return _this;\n }\n AWSAppSyncRealTimeProvider.prototype.getNewWebSocket = function (url, protocol) {\n return new WebSocket(url, protocol);\n };\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\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 // Check if url matches standard domain pattern\n AWSAppSyncRealTimeProvider.prototype.isCustomDomain = function (url) {\n return url.match(standardDomainPattern) === null;\n };\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n var appSyncGraphqlEndpoint = options === null || options === void 0 ? void 0 : options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!options || !appSyncGraphqlEndpoint) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\")),\n ],\n });\n observer.complete();\n }\n else {\n var subscriptionId_1 = uuid();\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1,\n }).catch(function (err) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR + \": \" + err)),\n ],\n });\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n observer.complete();\n });\n return function () { 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]);\n // Waiting that subscription has been connected before trying to unsubscribe\n return [4 /*yield*/, this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2 /*return*/];\n }\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n }\n else {\n throw new Error('Subscription never connected');\n }\n return [3 /*break*/, 4];\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3 /*break*/, 4];\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n return [7 /*endfinally*/];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n }\n });\n };\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function () {\n return !this.options\n .aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options, observer = _a.observer, subscriptionId = _a.subscriptionId;\n var _b, _c;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _d, graphql_headers, _e, additionalHeaders, subscriptionState, data, dataString, headerObj, _f, _g, subscriptionMessage, stringToAWSRealTime, err_2, message, subscriptionFailedCallback_1, _h, subscriptionFailedCallback, subscriptionReadyCallback;\n var _j;\n var _this = this;\n return __generator(this, function (_k) {\n switch (_k.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _d = options.graphql_headers, graphql_headers = _d === void 0 ? function () { return ({}); } : _d, _e = options.additionalHeaders, additionalHeaders = _e === void 0 ? {} : _e;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables,\n };\n // Having a subscription id map will make it simple to forward messages received\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query !== null && query !== void 0 ? query : '',\n variables: variables !== null && variables !== void 0 ? variables : {},\n subscriptionState: subscriptionState,\n startAckTimeoutId: undefined,\n });\n dataString = JSON.stringify(data);\n _f = [{}];\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region,\n additionalHeaders: additionalHeaders,\n })];\n case 1:\n _g = [__assign.apply(void 0, _f.concat([(_k.sent())]))];\n return [4 /*yield*/, graphql_headers()];\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _g.concat([(_k.sent())])), additionalHeaders]), (_j = {}, _j[USER_AGENT_HEADER] = Constants.userAgent, _j)]);\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 _k.label = 3;\n case 3:\n _k.trys.push([3, 5, , 6]);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.OPENING_CONNECTION);\n return [4 /*yield*/, this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region,\n additionalHeaders: additionalHeaders,\n })];\n case 4:\n _k.sent();\n return [3 /*break*/, 6];\n case 5:\n err_2 = _k.sent();\n logger.debug({ err: err_2 });\n message = (_b = err_2['message']) !== null && _b !== void 0 ? _b : '';\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n observer.error({\n errors: [\n __assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + message)),\n ],\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback;\n // Notify concurrent unsubscription\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n return [2 /*return*/];\n case 6:\n _h = (_c = this.subscriptionObserverMap.get(subscriptionId)) !== null && _c !== void 0 ? _c : {}, subscriptionFailedCallback = _h.subscriptionFailedCallback, subscriptionReadyCallback = _h.subscriptionReadyCallback;\n // This must be done before sending the message in order to be listening immediately\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n query: query !== null && query !== void 0 ? query : '',\n variables: variables !== null && variables !== void 0 ? variables : {},\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT),\n });\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n // Waiting that subscription has been connected before trying to unsubscribe\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionObserver, subscriptionState;\n var _this = this;\n return __generator(this, function (_a) {\n subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n subscriptionState = subscriptionObserver.subscriptionState;\n // This in case unsubscribe is invoked before sending start subscription message\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2 /*return*/, new Promise(function (res, rej) {\n var observer = subscriptionObserver.observer, subscriptionState = subscriptionObserver.subscriptionState, variables = subscriptionObserver.variables, query = subscriptionObserver.query;\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 /*return*/];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN &&\n 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 }\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({ err: err });\n }\n };\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId);\n // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSING_CONNECTION);\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n }\n else {\n logger.debug('closing WebSocket...');\n if (this.keepAliveTimeoutId) {\n clearTimeout(this.keepAliveTimeoutId);\n }\n if (this.keepAliveAlertTimeoutId) {\n clearTimeout(this.keepAliveAlertTimeoutId);\n }\n var tempSocket = this.awsRealTimeSocket;\n // Cleaning callbacks to avoid race condition, socket still exists\n tempSocket.onclose = null;\n tempSocket.onerror = null;\n tempSocket.close(1000);\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n }\n };\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n var _this = this;\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n var _a = JSON.parse(message.data), _b = _a.id, id = _b === void 0 ? '' : _b, payload = _a.payload, type = _a.type;\n var _c = this.subscriptionObserverMap.get(id) || {}, _d = _c.observer, observer = _d === void 0 ? null : _d, _e = _c.query, query = _e === void 0 ? '' : _e, _f = _c.variables, variables = _f === void 0 ? {} : _f, startAckTimeoutId = _c.startAckTimeoutId, subscriptionReadyCallback = _c.subscriptionReadyCallback, subscriptionFailedCallback = _c.subscriptionFailedCallback;\n logger.debug({ id: id, observer: observer, query: query, variables: variables });\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n }\n else {\n logger.debug(\"observer not found for id: \" + id);\n }\n return;\n }\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({ query: query, variables: variables }));\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent(CONTROL_MSG.SUBSCRIPTION_ACK, { query: query, variables: variables }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n if (observer) {\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: undefined,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n });\n }\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_ESTABLISHED);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n if (this.keepAliveTimeoutId)\n clearTimeout(this.keepAliveTimeoutId);\n if (this.keepAliveAlertTimeoutId)\n clearTimeout(this.keepAliveAlertTimeoutId);\n this.keepAliveTimeoutId = setTimeout(function () { return _this._errorDisconnect(CONTROL_MSG.TIMEOUT_DISCONNECT); }, this.keepAliveTimeout);\n this.keepAliveAlertTimeoutId = setTimeout(function () {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE_MISSED);\n }, DEFAULT_KEEP_ALIVE_ALERT_TIMEOUT);\n this.connectionStateMonitor.record(CONNECTION_CHANGE.KEEP_ALIVE);\n return;\n }\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n if (observer) {\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: [\n __assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + JSON.stringify(payload))),\n ],\n });\n if (startAckTimeoutId)\n clearTimeout(startAckTimeoutId);\n observer.complete();\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 if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))],\n });\n }\n });\n this.subscriptionObserverMap.clear();\n if (this.awsRealTimeSocket) {\n this.connectionStateMonitor.record(CONNECTION_CHANGE.CLOSED);\n this.awsRealTimeSocket.close();\n }\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var subscriptionObserver = this.subscriptionObserverMap.get(subscriptionId);\n if (subscriptionObserver) {\n var observer = subscriptionObserver.observer, query = subscriptionObserver.query, variables = subscriptionObserver.variables;\n if (!observer) {\n return;\n }\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED,\n });\n if (observer && !observer.closed) {\n observer.error({\n errors: [\n __assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({\n query: query,\n variables: variables,\n }))),\n ],\n });\n // Cleanup will be automatically executed\n observer.complete();\n }\n logger.debug('timeoutStartSubscription', JSON.stringify({ query: query, variables: variables }));\n }\n };\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, authenticationType = _a.authenticationType, apiKey = _a.apiKey, region = _a.region, additionalHeaders = _a.additionalHeaders;\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n return new Promise(function (res, rej) { return __awaiter(_this, void 0, void 0, function () {\n var payloadString, headerString, _a, _b, headerQs, payloadQs, discoverableEndpoint, protocol, awsRealTimeUrl, err_3;\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({ res: res, rej: rej });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3 /*break*/, 5];\n _c.label = 1;\n case 1:\n _c.trys.push([1, 4, , 5]);\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4 /*yield*/, this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region,\n additionalHeaders: additionalHeaders,\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 discoverableEndpoint = appSyncGraphqlEndpoint !== null && appSyncGraphqlEndpoint !== void 0 ? appSyncGraphqlEndpoint : '';\n if (this.isCustomDomain(discoverableEndpoint)) {\n discoverableEndpoint =\n discoverableEndpoint.concat(customDomainPath);\n }\n else {\n discoverableEndpoint = discoverableEndpoint\n .replace('appsync-api', 'appsync-realtime-api')\n .replace('gogi-beta', 'grt-beta');\n }\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = discoverableEndpoint\n .replace('https://', protocol)\n .replace('http://', protocol);\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4 /*yield*/, this._initializeRetryableHandshake(awsRealTimeUrl)];\n case 3:\n _c.sent();\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 /*break*/, 5];\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 if (this.awsRealTimeSocket &&\n this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n this.awsRealTimeSocket = undefined;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n }); });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (awsRealTimeUrl) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4 /*yield*/, jitteredExponentialRetry(this._initializeHandshake.bind(this), [awsRealTimeUrl], MAX_DELAY_MS)];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (awsRealTimeUrl) {\n return __awaiter(this, void 0, void 0, function () {\n var err_4, _a, errorType, errorCode;\n var _this = this;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n case 1:\n _b.trys.push([1, 4, , 5]);\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n var newSocket = _this.getNewWebSocket(awsRealTimeUrl, 'graphql-ws');\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n newSocket.onclose = function () {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error('Connection handshake error'));\n };\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n })()];\n case 2:\n _b.sent();\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n return [4 /*yield*/, (function () {\n return new Promise(function (res, rej) {\n if (_this.awsRealTimeSocket) {\n var ackOk_1 = false;\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\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, _a = data.payload, _b = (_a === void 0 ? {} : _a).connectionTimeoutMs, connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk_1 = true;\n if (_this.awsRealTimeSocket) {\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage =\n _this._handleIncomingSubscriptionMessage.bind(_this);\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n }\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload, _d = (_c === void 0 ? {} : _c).errors, _e = __read(_d === void 0 ? [] : _d, 1), _f = _e[0], _g = _f === void 0 ? {} : _f, _h = _g.errorType, errorType = _h === void 0 ? '' : _h, _j = _g.errorCode, errorCode = _j === void 0 ? 0 : _j;\n rej({ errorType: errorType, errorCode: errorCode });\n }\n };\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT,\n };\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n var checkAckOk_1 = function (ackOk) {\n if (!ackOk) {\n _this.connectionStateMonitor.record(CONNECTION_CHANGE.CONNECTION_FAILED);\n rej(new Error(\"Connection timeout: ack from AWSAppSyncRealTime was not received after \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n };\n setTimeout(function () { return checkAckOk_1(ackOk_1); }, 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 return [3 /*break*/, 5];\n case 4:\n err_4 = _b.sent();\n _a = err_4, errorType = _a.errorType, errorCode = _a.errorCode;\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n }\n else if (errorType) {\n throw new Error(errorType);\n }\n else {\n throw err_4;\n }\n return [3 /*break*/, 5];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType, payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, apiKey = _a.apiKey, region = _a.region, additionalHeaders = _a.additionalHeaders;\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 AWS_LAMBDA: this._customAuthHeader,\n };\n if (!(!authenticationType || !headerHandler[authenticationType])) return [3 /*break*/, 1];\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2 /*return*/, ''];\n case 1:\n handler = headerHandler[authenticationType];\n host = url.parse(appSyncGraphqlEndpoint !== null && appSyncGraphqlEndpoint !== void 0 ? appSyncGraphqlEndpoint : '').host;\n logger.debug(\"Authenticating with \" + authenticationType);\n return [4 /*yield*/, handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host,\n additionalHeaders: additionalHeaders,\n })];\n case 2:\n result = _b.sent();\n return [2 /*return*/, result];\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: return [4 /*yield*/, Auth.currentSession()];\n case 1:\n session = _b.sent();\n return [2 /*return*/, {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host,\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 token, federatedInfo, currentUser;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, Cache.getItem('federatedInfo')];\n case 1:\n federatedInfo = _b.sent();\n if (!federatedInfo) return [3 /*break*/, 2];\n token = federatedInfo.token;\n return [3 /*break*/, 4];\n case 2: return [4 /*yield*/, Auth.currentAuthenticatedUser()];\n case 3:\n currentUser = _b.sent();\n if (currentUser) {\n token = currentUser.token;\n }\n _b.label = 4;\n case 4:\n if (!token) {\n throw new Error('No federated jwt');\n }\n return [2 /*return*/, {\n Authorization: token,\n host: host,\n }];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey, 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 /*return*/, {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey,\n }];\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload, canonicalUri = _a.canonicalUri, appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint, 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 /*yield*/, this._ensureCredentials()];\n case 1:\n credentialsOK = _b.sent();\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n return [4 /*yield*/, Credentials.get().then(function (credentials) {\n var _a = credentials, secretAccessKey = _a.secretAccessKey, accessKeyId = _a.accessKeyId, sessionToken = _a.sessionToken;\n return {\n secret_key: secretAccessKey,\n access_key: accessKeyId,\n session_token: sessionToken,\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 /*return*/, signed_params.headers];\n }\n });\n });\n };\n AWSAppSyncRealTimeProvider.prototype._customAuthHeader = function (_a) {\n var host = _a.host, additionalHeaders = _a.additionalHeaders;\n if (!additionalHeaders || !additionalHeaders['Authorization']) {\n throw new Error('No auth token specified');\n }\n return {\n Authorization: additionalHeaders.Authorization,\n host: host,\n };\n };\n /**\n * @private\n */\n AWSAppSyncRealTimeProvider.prototype._ensureCredentials = function () {\n return Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider));\nexport { AWSAppSyncRealTimeProvider };\n//# sourceMappingURL=index.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\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';\nimport Observable from 'zen-observable-ts';\nimport { Amplify, browserOrNode, ConsoleLogger as Logger, INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER, INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER, } from '@aws-amplify/core';\nimport { AWSAppSyncProvider, AWSAppSyncRealTimeProvider } from './Providers';\nvar isNode = browserOrNode().isNode;\nvar logger = new Logger('PubSub');\nvar PubSubClass = /** @class */ (function () {\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 !== null && options !== void 0 ? options : {};\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n }\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function () {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\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 () {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\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 PubSubClass.prototype.configure = function (options) {\n var _this = this;\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', { opt: opt });\n this._options = Object.assign({}, this._options, opt);\n this._pluggables.map(function (pluggable) { return pluggable.configure(_this._options); });\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\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 config = pluggable.configure(this._options);\n return [2 /*return*/, config];\n }\n return [2 /*return*/];\n });\n });\n };\n /**\n * remove plugin from PubSub category\n * @param providerName - the name of the plugin\n */\n PubSubClass.prototype.removePluggable = function (providerName) {\n this._pluggables = this._pluggables.filter(function (pluggable) { return pluggable.getProviderName() !== providerName; });\n };\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n return this._pluggables.find(function (pluggable) { return pluggable.getProviderName() === providerName; });\n };\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) { options = {}; }\n var providerName = options.provider;\n if (!providerName) {\n return this._pluggables;\n }\n var provider = this.getProviderByName(providerName);\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n return [provider];\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 /*return*/, Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n PubSubClass.prototype.subscribe = function (topics, options) {\n if (isNode && this._options && this._options.ssr) {\n throw new Error('Subscriptions are not supported for Server-Side Rendering (SSR)');\n }\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) { return ({\n provider: provider,\n observable: provider.subscribe(topics, options),\n }); });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider, observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function (value) { return observer.next({ provider: provider, value: value }); },\n error: function (error) { return observer.error({ provider: provider, error: error }); },\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) { return subscription.unsubscribe(); });\n };\n });\n };\n return PubSubClass;\n}());\nexport { PubSubClass };\nexport var PubSub = new PubSubClass();\nAmplify.register(PubSub);\n//# sourceMappingURL=PubSub.js.map","import { GRAPHQL_AUTH_MODE } from '@aws-amplify/auth';\nexport { GRAPHQL_AUTH_MODE };\nexport var GraphQLAuthError;\n(function (GraphQLAuthError) {\n GraphQLAuthError[\"NO_API_KEY\"] = \"No api-key configured\";\n GraphQLAuthError[\"NO_CURRENT_USER\"] = \"No current user\";\n GraphQLAuthError[\"NO_CREDENTIALS\"] = \"No credentials\";\n GraphQLAuthError[\"NO_FEDERATED_JWT\"] = \"No federated jwt\";\n GraphQLAuthError[\"NO_AUTH_TOKEN\"] = \"No auth token specified\";\n})(GraphQLAuthError || (GraphQLAuthError = {}));\n//# sourceMappingURL=index.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n t[p[i]] = s[p[i]];\n }\n return t;\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), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\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 */\nimport { print, parse, GraphQLError, } from 'graphql';\nimport { Amplify, ConsoleLogger as Logger, Credentials, getAmplifyUserAgent, 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 { GraphQLAuthError, } from './types';\nimport { RestClient } from '@aws-amplify/api-rest';\nvar USER_AGENT_HEADER = 'x-amz-user-agent';\nvar logger = new Logger('GraphQLAPI');\nexport var graphqlOperation = function (query, variables, authToken, userAgentSuffix) {\n if (variables === void 0) { variables = {}; }\n return ({\n query: query,\n variables: variables,\n authToken: authToken,\n userAgentSuffix: userAgentSuffix,\n });\n};\n/**\n * Export Cloud Logic APIs\n */\nvar GraphQLAPIClass = /** @class */ (function () {\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.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\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 GraphQLAPIClass.prototype.configure = function (options) {\n var _a = options || {}, _b = _a.API, API = _b === void 0 ? {} : _b, otherOptions = __rest(_a, [\"API\"]);\n var opt = __assign(__assign({}, otherOptions), API);\n logger.debug('configure GraphQL API', { opt: opt });\n if (opt['aws_project_region']) {\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {},\n });\n }\n if (typeof opt.graphql_headers !== 'undefined' &&\n typeof opt.graphql_headers !== 'function') {\n logger.warn('graphql_headers should be a function');\n opt.graphql_headers = undefined;\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 GraphQLAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest instance');\n if (this._options) {\n this._api = new RestClient(this._options);\n // Share instance Credentials with client for SSR\n this._api.Credentials = this.Credentials;\n return true;\n }\n else {\n return Promise.reject('API not configured');\n }\n };\n GraphQLAPIClass.prototype._headerBasedAuth = function (defaultAuthenticationType, additionalHeaders) {\n if (additionalHeaders === void 0) { additionalHeaders = {}; }\n return __awaiter(this, void 0, void 0, function () {\n var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, token, federatedInfo, currentUser, e_1, session, e_2;\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 switch (_b) {\n case 'API_KEY': return [3 /*break*/, 1];\n case 'AWS_IAM': return [3 /*break*/, 2];\n case 'OPENID_CONNECT': return [3 /*break*/, 4];\n case 'AMAZON_COGNITO_USER_POOLS': return [3 /*break*/, 11];\n case 'AWS_LAMBDA': return [3 /*break*/, 15];\n }\n return [3 /*break*/, 16];\n case 1:\n if (!apiKey) {\n throw new Error(GraphQLAuthError.NO_API_KEY);\n }\n headers = {\n Authorization: null,\n 'X-Api-Key': apiKey,\n };\n return [3 /*break*/, 17];\n case 2: return [4 /*yield*/, this._ensureCredentials()];\n case 3:\n credentialsOK = _c.sent();\n if (!credentialsOK) {\n throw new Error(GraphQLAuthError.NO_CREDENTIALS);\n }\n return [3 /*break*/, 17];\n case 4:\n _c.trys.push([4, 9, , 10]);\n token = void 0;\n return [4 /*yield*/, Cache.getItem('federatedInfo')];\n case 5:\n federatedInfo = _c.sent();\n if (!federatedInfo) return [3 /*break*/, 6];\n token = federatedInfo.token;\n return [3 /*break*/, 8];\n case 6: return [4 /*yield*/, Auth.currentAuthenticatedUser()];\n case 7:\n currentUser = _c.sent();\n if (currentUser) {\n token = currentUser.token;\n }\n _c.label = 8;\n case 8:\n if (!token) {\n throw new Error(GraphQLAuthError.NO_FEDERATED_JWT);\n }\n headers = {\n Authorization: token,\n };\n return [3 /*break*/, 10];\n case 9:\n e_1 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n case 10: return [3 /*break*/, 17];\n case 11:\n _c.trys.push([11, 13, , 14]);\n return [4 /*yield*/, this.Auth.currentSession()];\n case 12:\n session = _c.sent();\n headers = {\n Authorization: session.getAccessToken().getJwtToken(),\n };\n return [3 /*break*/, 14];\n case 13:\n e_2 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n case 14: return [3 /*break*/, 17];\n case 15:\n if (!additionalHeaders.Authorization) {\n throw new Error(GraphQLAuthError.NO_AUTH_TOKEN);\n }\n headers = {\n Authorization: additionalHeaders.Authorization,\n };\n return [3 /*break*/, 17];\n case 16:\n headers = {\n Authorization: null,\n };\n return [3 /*break*/, 17];\n case 17: return [2 /*return*/, headers];\n }\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n GraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n var definitions = doc.definitions;\n var _a = __read(definitions, 1), operationType = _a[0].operation;\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param options - GraphQL Options\n * @param [additionalHeaders] - headers to merge in after any `graphql_headers` set in the config\n * @returns An Observable if the query is a subscription query, else a promise of the graphql result.\n */\n GraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders) {\n var paramQuery = _a.query, _b = _a.variables, variables = _b === void 0 ? {} : _b, authMode = _a.authMode, authToken = _a.authToken, userAgentSuffix = _a.userAgentSuffix;\n var query = typeof paramQuery === 'string'\n ? parse(paramQuery)\n : parse(print(paramQuery));\n var _c = __read(query.definitions.filter(function (def) { return def.kind === 'OperationDefinition'; }), 1), _d = _c[0], operationDef = _d === void 0 ? {} : _d;\n var operationType = operationDef.operation;\n var headers = additionalHeaders || {};\n // if an authorization header is set, have the explicit authToken take precedence\n if (authToken) {\n headers.Authorization = authToken;\n }\n switch (operationType) {\n case 'query':\n case 'mutation':\n var cancellableToken = this._api.getCancellableToken();\n var initParams = { cancellableToken: cancellableToken };\n var responsePromise = this._graphql({ query: query, variables: variables, authMode: authMode, userAgentSuffix: userAgentSuffix }, headers, initParams);\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n return responsePromise;\n case 'subscription':\n return this._graphqlSubscribe({ query: query, variables: variables, authMode: authMode }, headers);\n default:\n throw new Error(\"invalid operation type: \" + operationType);\n }\n };\n GraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders, initParams) {\n var query = _a.query, variables = _a.variables, authMode = _a.authMode, userAgentSuffix = _a.userAgentSuffix;\n if (additionalHeaders === void 0) { additionalHeaders = {}; }\n if (initParams === void 0) { initParams = {}; }\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 var _k;\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n if (!!this._api) return [3 /*break*/, 2];\n return [4 /*yield*/, this.createInstance()];\n case 1:\n _l.sent();\n _l.label = 2;\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 () { return ({}); } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n _d = [{}];\n _e = !customGraphqlEndpoint;\n if (!_e) return [3 /*break*/, 4];\n return [4 /*yield*/, this._headerBasedAuth(authMode, additionalHeaders)];\n case 3:\n _e = (_l.sent());\n _l.label = 4;\n case 4:\n _f = [__assign.apply(void 0, _d.concat([(_e)]))];\n _g = customGraphqlEndpoint;\n if (!_g) return [3 /*break*/, 8];\n if (!customEndpointRegion) return [3 /*break*/, 6];\n return [4 /*yield*/, this._headerBasedAuth(authMode, additionalHeaders)];\n case 5:\n _h = _l.sent();\n return [3 /*break*/, 7];\n case 6:\n _h = { Authorization: null };\n _l.label = 7;\n case 7:\n _g = (_h);\n _l.label = 8;\n case 8:\n _j = [__assign.apply(void 0, _f.concat([(_g)]))];\n return [4 /*yield*/, graphql_headers({ query: query, variables: variables })];\n case 9:\n headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([(_l.sent())])), additionalHeaders]), (!customGraphqlEndpoint && (_k = {},\n _k[USER_AGENT_HEADER] = getAmplifyUserAgent(userAgentSuffix),\n _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 if (!endpoint) {\n error = new GraphQLError('No graphql endpoint provided.');\n throw {\n data: {},\n errors: [error],\n };\n }\n _l.label = 10;\n case 10:\n _l.trys.push([10, 12, , 13]);\n return [4 /*yield*/, this._api.post(endpoint, init)];\n case 11:\n response = _l.sent();\n return [3 /*break*/, 13];\n case 12:\n err_1 = _l.sent();\n // 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 if (this._api.isCancel(err_1)) {\n throw err_1;\n }\n response = {\n data: {},\n errors: [new GraphQLError(err_1.message, null, null, null, null, err_1)],\n };\n return [3 /*break*/, 13];\n case 13:\n errors = response.errors;\n if (errors && errors.length) {\n throw response;\n }\n return [2 /*return*/, 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 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 GraphQLAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n /**\n * Check if the request has a corresponding cancel token in the WeakMap.\n * @params request - The request promise\n * @return if the request has a corresponding cancel token.\n */\n GraphQLAPIClass.prototype.hasCancelToken = function (request) {\n return this._api.hasCancelToken(request);\n };\n GraphQLAPIClass.prototype._graphqlSubscribe = function (_a, additionalHeaders) {\n var query = _a.query, variables = _a.variables, defaultAuthenticationType = _a.authMode, authToken = _a.authToken;\n if (additionalHeaders === void 0) { additionalHeaders = {}; }\n var _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, aws_appsync_authenticationType = _b.aws_appsync_authenticationType, apiKey = _b.aws_appsync_apiKey, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () { return ({}); } : _c;\n var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\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 authToken: authToken,\n });\n }\n else {\n logger.debug('No pubsub module applied for subscription');\n throw new Error('No pubsub module applied for subscription');\n }\n };\n /**\n * @private\n */\n GraphQLAPIClass.prototype._ensureCredentials = function () {\n var _this = this;\n return this.Credentials.get()\n .then(function (credentials) {\n if (!credentials)\n return false;\n var cred = _this.Credentials.shear(credentials);\n logger.debug('set credentials for api', cred);\n return true;\n })\n .catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n return GraphQLAPIClass;\n}());\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);\nAmplify.register(GraphQLAPI);\n//# sourceMappingURL=GraphQLAPI.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) 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 switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\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 */\nimport { Auth } from '@aws-amplify/auth';\nimport Cache from '@aws-amplify/cache';\nimport { RestAPIClass } from '@aws-amplify/api-rest';\nimport { GraphQLAPIClass, } from '@aws-amplify/api-graphql';\nimport { Amplify, ConsoleLogger as Logger, Credentials, } 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 */\nvar APIClass = /** @class */ (function () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n this._restApi = new RestAPIClass(options);\n this._graphqlApi = new GraphQLAPIClass(options);\n logger.debug('API Options', this._options);\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 APIClass.prototype.configure = function (options) {\n this._options = Object.assign({}, this._options, options);\n // Share Amplify instance with client for SSR\n this._restApi.Credentials = this.Credentials;\n this._graphqlApi.Auth = this.Auth;\n this._graphqlApi.Cache = this.Cache;\n this._graphqlApi.Credentials = this.Credentials;\n var restAPIConfig = this._restApi.configure(this._options);\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n };\n /**\n * Make a GET request\n * @param apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 apiName - The api name of the request\n * @param path - The path of the request\n * @param [init] - Request extra params\n * @return A promise that resolves to an object with response status and JSON data, if successful.\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 error - Any error\n * @return If the error was from an api request cancellation\n */\n APIClass.prototype.isCancel = function (error) {\n return this._restApi.isCancel(error);\n };\n /**\n * Cancels an inflight request for either a GraphQL request or a Rest API request.\n * @param request - request to cancel\n * @param [message] - custom error message\n * @return If the request was cancelled\n */\n APIClass.prototype.cancel = function (request, message) {\n if (this._restApi.hasCancelToken(request)) {\n return this._restApi.cancel(request, message);\n }\n else if (this._graphqlApi.hasCancelToken(request)) {\n return this._graphqlApi.cancel(request, message);\n }\n return false;\n };\n /**\n * Getting endpoint for API\n * @param apiName - The name of the api\n * @return The endpoint of the api\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 /*return*/, this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n APIClass.prototype.graphql = function (options, additionalHeaders) {\n return this._graphqlApi.graphql(options, additionalHeaders);\n };\n return APIClass;\n}());\nexport { APIClass };\nexport var API = new APIClass(null);\nAmplify.register(API);\n//# sourceMappingURL=API.js.map","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","// Styles\nimport './VTextarea.sass'\n\n// Extensions\nimport VTextField from '../VTextField/VTextField'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport Vue from 'vue'\n\ninterface options extends Vue {\n $refs: {\n input: HTMLTextAreaElement\n }\n}\n\nconst baseMixins = mixins\n>(\n VTextField\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-textarea',\n\n props: {\n autoGrow: Boolean,\n noResize: Boolean,\n rowHeight: {\n type: [Number, String],\n default: 24,\n validator: (v: any) => !isNaN(parseFloat(v)),\n },\n rows: {\n type: [Number, String],\n default: 5,\n validator: (v: any) => !isNaN(parseInt(v, 10)),\n },\n },\n\n computed: {\n classes (): object {\n return {\n 'v-textarea': true,\n 'v-textarea--auto-grow': this.autoGrow,\n 'v-textarea--no-resize': this.noResizeHandle,\n ...VTextField.options.computed.classes.call(this),\n }\n },\n noResizeHandle (): boolean {\n return this.noResize || this.autoGrow\n },\n },\n\n watch: {\n autoGrow (val: boolean) {\n this.$nextTick(() => {\n val\n ? this.calculateInputHeight()\n : this.$refs.input?.style.removeProperty('height')\n })\n },\n lazyValue () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n rowHeight () {\n this.autoGrow && this.$nextTick(this.calculateInputHeight)\n },\n },\n\n mounted () {\n setTimeout(() => {\n this.autoGrow && this.calculateInputHeight()\n }, 0)\n },\n\n methods: {\n calculateInputHeight () {\n const input = this.$refs.input\n if (!input) return\n\n input.style.height = '0'\n const height = input.scrollHeight\n const minHeight = parseInt(this.rows, 10) * parseFloat(this.rowHeight)\n // This has to be done ASAP, waiting for Vue\n // to update the DOM causes ugly layout jumping\n input.style.height = Math.max(minHeight, height) + 'px'\n },\n genInput () {\n const input = VTextField.options.methods.genInput.call(this)\n\n input.tag = 'textarea'\n delete input.data!.attrs!.type\n input.data!.attrs!.rows = this.rows\n\n return input\n },\n onInput (e: Event) {\n VTextField.options.methods.onInput.call(this, e)\n this.autoGrow && this.calculateInputHeight()\n },\n onKeyDown (e: KeyboardEvent) {\n // Prevents closing of a\n // dialog when pressing\n // enter\n if (this.isFocused && e.keyCode === 13) {\n e.stopPropagation()\n }\n\n this.$emit('keydown', e)\n },\n },\n})\n","module.exports = require('./lib/axios');","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n// === Symbol Support ===\nvar hasSymbols = function () {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function (name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function (name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription =\n/*#__PURE__*/\nfunction () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription);\n\n // ASSERT: observer is an object\n // ASSERT: subscriber is callable\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 () {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver =\n/*#__PURE__*/\nfunction () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function () {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable =\n/*#__PURE__*/\nfunction () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function (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 (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 (e) {\n observer.error(e);\n },\n complete: function () {\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 (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 (e) {\n observer.error(e);\n },\n complete: function () {\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 (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 (e) {\n observer.error(e);\n },\n complete: function () {\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 (v) {\n observer.next(v);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\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 (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 (value) {\n observer.next(value);\n },\n error: function (e) {\n observer.error(e);\n },\n complete: function () {\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 (e) {\n observer.error(e);\n },\n complete: function () {\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 () {\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 () {\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 VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","// Styles\nimport './VCard.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Mixins\nimport Loadable from '../../mixins/loadable'\nimport Routable from '../../mixins/routable'\n\n// Helpers\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Loadable,\n Routable,\n VSheet\n).extend({\n name: 'v-card',\n\n props: {\n flat: Boolean,\n hover: Boolean,\n img: String,\n link: Boolean,\n loaderHeight: {\n type: [Number, String],\n default: 4,\n },\n raised: Boolean,\n },\n\n computed: {\n classes (): object {\n return {\n 'v-card': true,\n ...Routable.options.computed.classes.call(this),\n 'v-card--flat': this.flat,\n 'v-card--hover': this.hover,\n 'v-card--link': this.isClickable,\n 'v-card--loading': this.loading,\n 'v-card--disabled': this.disabled,\n 'v-card--raised': this.raised,\n ...VSheet.options.computed.classes.call(this),\n }\n },\n styles (): object {\n const style: Dictionary = {\n ...VSheet.options.computed.styles.call(this),\n }\n\n if (this.img) {\n style.background = `url(\"${this.img}\") center center / cover no-repeat`\n }\n\n return style\n },\n },\n\n methods: {\n genProgress () {\n const render = Loadable.options.methods.genProgress.call(this)\n\n if (!render) return null\n\n return this.$createElement('div', {\n staticClass: 'v-card__progress',\n key: 'progress',\n }, [render])\n },\n },\n\n render (h): VNode {\n const { tag, data } = this.generateRouteLink()\n\n data.style = this.styles\n\n if (this.isClickable) {\n data.attrs = data.attrs || {}\n data.attrs.tabindex = 0\n }\n\n return h(tag, this.setBackgroundColor(this.color, data), [\n this.genProgress(),\n this.$slots.default,\n ])\n },\n})\n","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\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 var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n 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\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\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 if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\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));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\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 if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\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 }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","module.exports = {\n \"version\": \"0.26.0\"\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 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n 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]))\n t[p[i]] = s[p[i]];\n }\n return t;\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';\nvar encrypt = function (key, src) {\n var hash = new jsSha256(key);\n hash.update(src);\n return hash.digestSync();\n};\nvar hash = function (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 */\nvar escape_RFC3986 = function (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 */\nvar canonical_query = function (query) {\n if (!query || query.length === 0) {\n return '';\n }\n return query\n .split('&')\n .map(function (e) {\n var key_val = e.split('=');\n if (key_val.length === 1) {\n return e;\n }\n else {\n var reencoded_val = escape_RFC3986(key_val[1]);\n return key_val[0] + '=' + reencoded_val;\n }\n })\n .sort(function (a, b) {\n var key_a = a.split('=')[0];\n var key_b = b.split('=')[0];\n if (key_a === key_b) {\n return a < b ? -1 : 1;\n }\n else {\n return key_a < key_b ? -1 : 1;\n }\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*/\nvar canonical_headers = function (headers) {\n if (!headers || Object.keys(headers).length === 0) {\n return '';\n }\n return (Object.keys(headers)\n .map(function (key) {\n return {\n key: key.toLowerCase(),\n value: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : '',\n };\n })\n .sort(function (a, b) {\n return a.key < b.key ? -1 : 1;\n })\n .map(function (item) {\n return item.key + ':' + item.value;\n })\n .join('\\n') + '\\n');\n};\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\nvar signed_headers = function (headers) {\n return Object.keys(headers)\n .map(function (key) {\n return key.toLowerCase();\n })\n .sort()\n .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*/\nvar canonical_request = function (request) {\n var url_info = parse(request.url);\n return [\n request.method || '/',\n encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'),\n canonical_query(url_info.query),\n canonical_headers(request.headers),\n signed_headers(request.headers),\n hash(request.data),\n ].join('\\n');\n};\nvar parse_service_info = function (request) {\n var url_info = parse(request.url), host = url_info.host;\n var matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n var parsed = (matched || []).slice(1, 3);\n if (parsed[1] === 'es') {\n // Elastic Search\n parsed = parsed.reverse();\n }\n return {\n service: request.service || parsed[0],\n region: request.region || parsed[1],\n };\n};\nvar credential_scope = function (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*/\nvar string_to_sign = function (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*/\nvar get_signing_key = function (secret_key, d_str, service_info) {\n logger.debug(service_info);\n var k = 'AWS4' + secret_key, k_date = encrypt(k, d_str), k_region = encrypt(k_date, service_info.region), k_service = encrypt(k_region, service_info.service), k_signing = encrypt(k_service, 'aws4_request');\n return k_signing;\n};\nvar get_signature = function (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 */\nvar get_authorization_header = function (algorithm, access_key, scope, signed_headers, signature) {\n return [\n algorithm + ' ' + 'Credential=' + access_key + '/' + scope,\n 'SignedHeaders=' + signed_headers,\n 'Signature=' + signature,\n ].join(', ');\n};\nvar Signer = /** @class */ (function () {\n function Signer() {\n }\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 Signer.sign = function (request, access_info, service_info) {\n if (service_info === void 0) { service_info = null; }\n request.headers = request.headers || {};\n if (request.body && !request.data) {\n throw new Error('The attribute \"body\" was found on the request object. Please use the attribute \"data\" instead.');\n }\n // datetime string and date string\n var dt = DateUtils.getDateWithClockOffset(), dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''), 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 if (access_info.session_token) {\n request.headers['X-Amz-Security-Token'] = access_info.session_token;\n }\n // Task 1: Create a Canonical Request\n var request_str = canonical_request(request);\n logger.debug(request_str);\n // Task 2: Create a String to Sign\n var serviceInfo = service_info || parse_service_info(request), scope = credential_scope(d_str, serviceInfo.region, serviceInfo.service), str_to_sign = string_to_sign(DEFAULT_ALGORITHM, request_str, dt_str, scope);\n // Task 3: Calculate the Signature\n var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo), signature = get_signature(signing_key, str_to_sign);\n // Task 4: Adding the Signing information to the Request\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 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()\n .toISOString()\n .replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8);\n // Intentionally discarding search\n var _a = parse(urlToSign, true, true), search = _a.search, parsedUrl = __rest(_a, [\"search\"]);\n var host = parsedUrl.host;\n var signedHeaders = { host: host };\n var _b = serviceInfo || parse_service_info({ url: format(parsedUrl) }), region = _b.region, service = _b.service;\n var credentialScope = credential_scope(today, region, service);\n // 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 var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;\n var queryParams = __assign(__assign(__assign({ 'X-Amz-Algorithm': DEFAULT_ALGORITHM, 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'), 'X-Amz-Date': now.substr(0, 16) }, (sessionTokenRequired\n ? { 'X-Amz-Security-Token': \"\" + accessInfo.session_token }\n : {})), (expiration ? { 'X-Amz-Expires': \"\" + expiration } : {})), { 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',') });\n var canonicalRequest = canonical_request({\n method: method,\n url: format(__assign(__assign({}, parsedUrl), { query: __assign(__assign({}, parsedUrl.query), queryParams) })),\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 var additionalQueryParams = __assign({ 'X-Amz-Signature': signature }, (accessInfo.session_token && {\n 'X-Amz-Security-Token': accessInfo.session_token,\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 return Signer;\n}());\nexport { Signer };\n/**\n * @deprecated use per-function import\n */\nexport default Signer;\n//# sourceMappingURL=Signer.js.map","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\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;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\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\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nvar createError = require('./createError');\n\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 */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\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 */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\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 */\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};\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * @internal\n */\nexports.BLOCK_SIZE = 64;\n/**\n * @internal\n */\nexports.DIGEST_LENGTH = 32;\n/**\n * @internal\n */\nexports.KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n/**\n * @internal\n */\nexports.INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19\n];\n/**\n * @internal\n */\nexports.MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n//# sourceMappingURL=constants.js.map","'use strict';\n\nvar utils = require('../utils');\n\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 */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\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), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n};\n// Comment - TODO: remove\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 () {\n if (DateUtils.clockOffset) {\n return new Date(new Date().getTime() + DateUtils.clockOffset);\n }\n else {\n return new Date();\n }\n },\n /**\n * @returns {number} Clock offset in milliseconds\n */\n getClockOffset: function () {\n return DateUtils.clockOffset;\n },\n getHeaderStringFromDate: function (date) {\n if (date === void 0) { date = DateUtils.getDateWithClockOffset(); }\n return date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n },\n getDateFromHeaderString: function (header) {\n var _a = __read(header.match(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/), 7), year = _a[1], month = _a[2], day = _a[3], hour = _a[4], minute = _a[5], second = _a[6];\n return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));\n },\n isClockSkewed: function (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 (error) {\n if (!error.response || !error.response.headers) {\n return false;\n }\n var headers = error.response.headers;\n return Boolean(['BadRequestException', 'InvalidSignatureException'].includes(headers['x-amzn-errortype']) &&\n (headers.date || headers.Date));\n },\n /**\n * @param {number} offset Clock offset in milliseconds\n */\n setClockOffset: function (offset) {\n DateUtils.clockOffset = offset;\n },\n};\n//# sourceMappingURL=DateUtils.js.map","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\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 */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n"],"sourceRoot":""}