{"version":3,"sources":["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","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/bytesToUuid.js","webpack:///./node_modules/wherecomposer/dist/SearchParam.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/wherecomposer/dist/NotEqualOperation.js","webpack:///./node_modules/wherecomposer/dist/GreaterThanComparer.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Util/DateUtils.js","webpack:///./node_modules/@aws-amplify/api-rest/lib-esm/RestClient.js","webpack:///./node_modules/zen-observable/index.js","webpack:///./node_modules/@aws-amplify/auth/lib-esm/index.js","webpack:///./node_modules/wherecomposer/dist/NotIn.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/constants.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/isURLSameOrigin.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/wherecomposer/dist/EqualOperation.js","webpack:///./node_modules/wherecomposer/dist/Where.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/wherecomposer/dist/LikeOperation.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/wherecomposer/dist/Operand.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/axios.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/api-rest/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/uuid/index.js","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/wherecomposer/dist/Or.js","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/location.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/printError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/visitor.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/printer.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/inspect.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/invariant.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/source.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/jsutils/defineToStringTag.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/error/syntaxError.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/blockStringValue.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/lexer.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/kinds.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/directiveLocation.mjs","webpack:///./node_modules/@aws-amplify/api-graphql/node_modules/graphql/language/parser.mjs","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/MqttOverWSProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/PubSubProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/language/location.mjs","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/printError.mjs","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/graphql/error/GraphQLError.mjs","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/Providers/AWSAppSyncRealTimeProvider.js","webpack:///./node_modules/@aws-amplify/pubsub/lib-esm/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/pubsub/node_modules/uuid/v1.js","webpack:///./node_modules/zen-observable-ts/lib/bundle.esm.js","webpack:///./node_modules/@aws-crypto/sha256-js/build/RawSha256.js","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/uuid/lib/rng-browser.js","webpack:///./node_modules/wherecomposer/dist/CloseParenthesis.js","webpack:///./src/constant/message-enum.js","webpack:///./node_modules/wherecomposer/dist/StartParenthesis.js","webpack:///./node_modules/wherecomposer/dist/BetweenReverse.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/wherecomposer/dist/Between.js","webpack:///./src/services/language-service.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/BrowserStorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/StorageCache.js","webpack:///./node_modules/@aws-amplify/cache/lib-esm/index.js","webpack:///./node_modules/@aws-amplify/pubsub/node_modules/uuid/v4.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/utils.js","webpack:///./node_modules/@aws-crypto/sha256-js/build/jsSha256.js","webpack:///./node_modules/wherecomposer/dist/And.js","webpack:///./node_modules/wherecomposer/dist/Operation.js","webpack:///./node_modules/@aws-amplify/api-rest/lib-esm/RestAPI.js","webpack:///./node_modules/@aws-amplify/api/lib-esm/API.js","webpack:///./node_modules/zen-observable/lib/Observable.js","webpack:///./node_modules/wherecomposer/dist/ConditionCreator.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/index.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@aws-amplify/core/lib-esm/Signer.js","webpack:///./node_modules/@aws-crypto/sha256-js/build/constants.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@aws-crypto/sha256-js/node_modules/@aws-sdk/util-utf8-browser/dist/es/index.js","webpack:///./node_modules/@aws-crypto/sha256-js/node_modules/@aws-sdk/util-utf8-browser/dist/es/whatwgEncodingApi.js","webpack:///./node_modules/@aws-crypto/sha256-js/node_modules/@aws-sdk/util-utf8-browser/dist/es/pureJs.js","webpack:///./node_modules/@aws-amplify/api-rest/node_modules/axios/lib/defaults.js","webpack:///./node_modules/@aws-crypto/sha256-js/build/index.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/wherecomposer/dist/In.js"],"names":["module","exports","value","__CANCEL__","baseURL","relativeURL","replace","byteToHex","i","toString","substr","buf","offset","bth","join","Object","defineProperty","SearchOpEquality","SearchOperationBuilder","SearchOperation","SearchParam","EqualOperation_1","GreaterThanComparer_1","LikeOperation_1","NotEqualOperation_1","this","name","secondName","dataType","operation","hasMultValue","hasMultValueList","hasMultiParam","multiparams","isAndOperator","EqualOperation","Equality","Equal","prototype","searchParamCreate","inName","inDataType","inValue1","objSearchOperation","fieldValueFrom","searchParamCreator","firstChar","charAt","lastChar","length","bLikeStart","bLikeEnd","searchedString","substring","create","searchParamFrom","searchParamGreaterThanComparer","GreaterThanComparer","searchParamFromTo","inValue2","Month","undefined","fieldValueTo","searchParamMultiValue","multiValueList","equalValue","isLike","startWith","endWith","LikeOperation","NotEqualOperation","NotEqual","utils","config1","config2","config","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","target","source","isPlainObject","merge","isArray","slice","mergeDeepProperties","prop","isUndefined","forEach","axiosKeys","concat","otherKeys","keys","filter","key","indexOf","_extendStatics","__extends","d","b","setPrototypeOf","__proto__","Array","p","hasOwnProperty","call","TypeError","String","__","constructor","_super","objEquality","notEqualOperand","type","abstractOperandType","Operand","greaterThanOperand","abstractOperandObjGreaterThan","__read","o","n","m","Symbol","iterator","r","e","ar","next","done","push","error","DateUtils","clockOffset","getDateWithClockOffset","Date","getTime","getClockOffset","getHeaderStringFromDate","date","toISOString","getDateFromHeaderString","header","_a","match","year","month","day","hour","minute","second","UTC","Number","isClockSkewed","serverDate","Math","abs","isClockSkewError","response","headers","Boolean","setClockOffset","__assign","assign","t","s","arguments","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","result","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","v","op","pop","__rest","getOwnPropertySymbols","propertyIsEnumerable","logger","RestClient","options","_region","_service","_custom_header","_cancelTokenMap","Credentials","_options","debug","WeakMap","ajax","urlOrApiInfo","method","init","parsed_url","url","region","service","custom_header","params","libraryHeaders","userAgent","initParams","isAllResponse","custom_header_obj","_b","parsedUrl","_this","_c","_parseUrl","endpoint","host","path","data","responseType","timeout","cancelToken","isReactNative","FormData","JSON","stringify","withCredentials","cancellableToken","token","signerServiceInfo","search","query","queryStringParameters","reduce","acc","k","_request","get","credentials","_signed","catch","dateHeader","responseDate","requestDate","err","put","patch","post","del","head","cancel","request","message","isCancel","a","getCancellableToken","CancelToken","updateRequestToBeCancellable","promise","cancelTokenSource","set","apiName","cloud_logic_array","endpoints","signerServiceInfoParams","otherParams","endpoint_region","endpoint_service","creds","secret_key","secretAccessKey","access_key","accessKeyId","session_token","sessionToken","endpointInfo","signed_params","sign","parts","split","Observable","NotIn","In","hasSymbol","for","INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER","INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER","USER_AGENT_HEADER","ignoreDuplicateOf","val","parsed","line","trim","toLowerCase","isStandardBrowserEnv","originURL","msie","test","navigator","urlParsingNode","document","createElement","resolveURL","href","setAttribute","protocol","hash","hostname","port","pathname","window","location","requestURL","isString","I18n","_lang","_dict","language","setLanguage","lang","defVal","getByLanguage","lang_dict","putVocabulariesForLanguage","vocabularies","putVocabularies","map","_config","_i18n","configure","createInstance","getModuleName","checkConfig","Amplify","register","Constants","Platform","Cancel","executor","resolvePromise","reason","throwIfRequested","c","equalOperand","Where","_OperationList","addConditionalParam","objOperator","toJsonString","oprList","parse","list","LikeMode","likeOperation","abstractOperandObjLike","InterceptorManager","handlers","use","eject","id","fn","h","ValueType","abstractOperandName","Name","Type","Value","SecondName","bind","Axios","mergeConfig","defaultConfig","context","instance","extend","axios","instanceConfig","defaults","all","promises","spread","isAxiosError","default","factory","global","localStorage","setItem","item","getItem","removeItem","MESSAGE_TYPE","validate","obj","errorStr","validKey","Error","format","ERROR","INVALID_TYPE","scope","_scope","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","part2","MqttProtoIdentifierv3","MqttProtoIdentifierv4","WireMessage","decodeMessage","input","pos","digit","startingPos","first","messageInfo","remLength","multiplier","endPos","wireMessage","sessionPresent","returnCode","qos","len","readUint16","topicName","parseUTF8","messageIdentifier","Message","subarray","retained","duplicate","destinationName","payloadMessage","writeUint16","buffer","writeString","utf8Length","stringToUTF8","UTF8Length","output","charCode","charCodeAt","lowCharCode","isNaN","utf16","byte1","byte2","byte3","byte4","fromCharCode","encode","willMessagePayloadBytes","topicStrLength","destinationNameLength","mqttVersion","clientId","willMessage","payloadBytes","Uint8Array","byteLength","userName","password","topics","requestedQos","ArrayBuffer","mbi","number","numBytes","encodeMBI","byteStream","connectFlags","cleanSession","keepAliveInterval","Pinger","client","_client","_keepAliveInterval","isReset","pingReq","doTimeout","pinger","doPing","_trace","socket","send","setTimeout","_disconnected","reset","clearTimeout","Timeout","timeoutSeconds","action","args","ClientImpl","uri","WebSocket","_wsuri","_localKey","_msg_queue","_buffered_msg_queue","_sentMessages","_receivedMessages","_notify_msg_sent","_message_identifier","_sequence","restore","connected","maxMessageIdentifier","connectOptions","hostIndex","onConnected","onConnectionLost","onMessageDelivered","onMessageArrived","traceFunction","_connectTimeout","sendPinger","receivePinger","_reconnectInterval","_reconnecting","_reconnectTimeout","disconnectedPublishing","disconnectedBufferSize","receiveBuffer","_traceBuffer","_MAX_TRACE_ENTRIES","connect","connectOptionsMasked","_traceMask","uris","_doConnect","subscribe","subscribeOptions","onSuccess","grantedQos","invocationContext","onFailure","errorCode","errorMessage","timeOut","_requires_ack","_schedule_message","unsubscribe","unsubscribeOptions","callback","sequence","unshift","disconnect","getTraceLog","startTrace","stopTrace","wsurl","useSSL","uriParts","binaryType","onopen","_on_socket_open","onmessage","_on_socket_message","onerror","_on_socket_error","onclose","_on_socket_close","_process_queue","store","prefix","storedMessage","version","pubRecReceived","hex","messageBytes","payloadHex","x","parseInt","_socket_send","messageCount","event","messages","_deframeMessages","_handleMessage","byteArray","newData","errorStack","stack","sentMessage","receivedMessage","sequencedMessages","msgId","msg","sort","pubRelMessage","reconnected","_connected","_receivePublish","_receiveMessage","pubCompMessage","wireMessageMasked","pubAckMessage","pubRecMessage","reconnect","_reconnect","errorText","readyState","close","mqttVersionExplicit","splice","record","severity","max","shift","traceObject","masked","traceObjectMasked","attr","newPayload","payload","isView","DataView","defineProperties","enumerable","newDestinationName","newQos","newRetained","newTopic","newDuplicate","Client","ipv6AddSBracket","clientIdLength","newOnConnected","newDisconnectedPublishing","newDisconnectedBufferSize","newOnConnectionLost","newOnMessageDelivered","newOnMessageArrived","trace","hosts","ports","stringPayload","usingURIs","ipv6","topic","publish","isConnected","self","write","expires","domain","secure","cookie","encodeURIComponent","isNumber","toGMTString","read","RegExp","decodeURIComponent","remove","now","buildURL","dispatchRequest","interceptors","chain","interceptor","getUri","paramsSerializer","transformData","throwIfCancellationRequested","transformRequest","common","adapter","transformResponse","arr","v1","v4","uuid","normalizedName","toUpperCase","enhanceError","Or","status","getLocation","position","lineRegexp","column","exec","index","highlightSourceAtLocation","firstLineColumnOffset","locationOffset","whitespace","lineIndex","lineOffset","lineNum","columnOffset","columnNum","lines","existingLines","_ref","padLen","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","return","_ref3","str","printPrefixedLines","GraphQLError","nodes","positions","originalError","extensions","_nodes","_source","node","loc","_locations","_positions","_extensions","writable","locations","configurable","captureStackTrace","printedLocations","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","printError","QueryDocumentKeys","Document","OperationDefinition","VariableDefinition","Variable","SelectionSet","Field","Argument","FragmentSpread","InlineFragment","FragmentDefinition","IntValue","FloatValue","StringValue","BooleanValue","NullValue","EnumValue","ListValue","ObjectValue","ObjectField","Directive","NamedType","ListType","NonNullType","SchemaDefinition","OperationTypeDefinition","ScalarTypeDefinition","ObjectTypeDefinition","FieldDefinition","InputValueDefinition","InterfaceTypeDefinition","UnionTypeDefinition","EnumTypeDefinition","EnumValueDefinition","InputObjectTypeDefinition","DirectiveDefinition","SchemaExtension","ScalarTypeExtension","ObjectTypeExtension","InterfaceTypeExtension","UnionTypeExtension","EnumTypeExtension","InputObjectTypeExtension","BREAK","isNode","maybeNode","kind","getVisitFn","visitor","isLeaving","kindVisitor","kindSpecificVisitor","leave","enter","specificVisitor","specificKindVisitor","print","ast","root","visitorKeys","inArray","edits","parent","ancestors","newRoot","isEdited","clone","editOffset","ii","editKey","editValue","prev","visitFn","visit","printDocASTReducer","definitions","varDefs","wrap","variableDefinitions","directives","selectionSet","variable","defaultValue","_ref2","block","selections","alias","_ref4","_ref5","_ref6","typeCondition","_ref7","_ref8","_ref9","_ref10","isDescription","escaped","indent","printBlockString","_ref11","_ref12","_ref13","values","_ref14","fields","_ref15","_ref16","_ref17","_ref18","_ref19","_ref20","operationTypes","_ref21","addDescription","_ref22","_ref23","interfaces","_ref24","every","arg","_ref25","_ref26","_ref27","types","_ref28","_ref29","_ref30","_ref31","_ref32","_ref33","_ref34","_ref35","_ref36","_ref37","_ref38","cb","description","maybeArray","separator","array","maybeString","end","_typeof","inspect","invariant","condition","_defineProperty","classObject","syntaxError","blockStringValue","rawString","commonIndent","leadingWhitespace","_i","isBlank","createLexer","startOfFileToken","Tok","TokenKind","SOF","lastToken","lineStart","advance","advanceLexer","lookahead","EOF","readToken","COMMENT","toStringTag","freeze","BANG","DOLLAR","AMP","PAREN_L","PAREN_R","SPREAD","COLON","EQUALS","AT","BRACKET_L","BRACKET_R","BRACE_L","PIPE","BRACE_R","NAME","INT","FLOAT","STRING","BLOCK_STRING","getTokenDesc","printCharCode","lexer","bodyLength","startPosition","positionAfterWhitespace","col","readComment","readName","firstCode","isFloat","readDigits","readNumber","chunkStart","rawValue","readBlockString","char2hex","readString","unexpectedCharacterMessage","toJSON","Kind","DOCUMENT","OPERATION_DEFINITION","VARIABLE_DEFINITION","SELECTION_SET","FIELD","ARGUMENT","FRAGMENT_SPREAD","INLINE_FRAGMENT","FRAGMENT_DEFINITION","VARIABLE","BOOLEAN","NULL","ENUM","LIST","OBJECT","OBJECT_FIELD","DIRECTIVE","NAMED_TYPE","LIST_TYPE","NON_NULL_TYPE","SCHEMA_DEFINITION","OPERATION_TYPE_DEFINITION","SCALAR_TYPE_DEFINITION","OBJECT_TYPE_DEFINITION","FIELD_DEFINITION","INPUT_VALUE_DEFINITION","INTERFACE_TYPE_DEFINITION","UNION_TYPE_DEFINITION","ENUM_TYPE_DEFINITION","ENUM_VALUE_DEFINITION","INPUT_OBJECT_TYPE_DEFINITION","DIRECTIVE_DEFINITION","SCHEMA_EXTENSION","SCALAR_TYPE_EXTENSION","OBJECT_TYPE_EXTENSION","INTERFACE_TYPE_EXTENSION","UNION_TYPE_EXTENSION","ENUM_TYPE_EXTENSION","INPUT_OBJECT_TYPE_EXTENSION","DirectiveLocation","QUERY","MUTATION","SUBSCRIPTION","SCHEMA","SCALAR","ARGUMENT_DEFINITION","INTERFACE","UNION","ENUM_VALUE","INPUT_OBJECT","INPUT_FIELD_DEFINITION","sourceObj","many","parseDefinition","parseDocument","parseName","expect","peek","parseExecutableDefinition","parseTypeSystemDefinition","keywordToken","expectKeyword","parseDirectives","parseOperationTypeDefinition","unexpected","parseSchemaExtension","parseScalarTypeExtension","parseImplementsInterfaces","parseFieldsDefinition","parseObjectTypeExtension","parseInterfaceTypeExtension","parseUnionMemberTypes","parseUnionTypeExtension","parseEnumValuesDefinition","parseEnumTypeExtension","parseInputFieldsDefinition","parseInputObjectTypeExtension","parseTypeSystemExtension","peekDescription","parseOperationDefinition","experimentalFragmentVariables","parseFragmentName","parseVariableDefinitions","parseNamedType","parseSelectionSet","parseFragmentDefinition","parseOperationType","operationToken","parseVariableDefinition","experimentalVariableDefinitionDirectives","parseVariable","parseTypeReference","skip","parseValueLiteral","parseSelection","parseFragment","nameOrAlias","parseArguments","parseField","isConst","parseConstArgument","parseArgument","parseConstValue","parseValueValue","any","parseList","parseObjectField","parseObject","parseStringLiteral","parseDirective","parseSchemaDefinition","parseDescription","parseScalarTypeDefinition","parseObjectTypeDefinition","parseInterfaceTypeDefinition","parseUnionTypeDefinition","parseEnumTypeDefinition","parseInputObjectTypeDefinition","parseArgumentDefs","parseDirectiveLocation","parseDirectiveLocations","parseDirectiveDefinition","allowLegacySDLImplementsInterfaces","allowLegacySDLEmptyFields","parseFieldDefinition","parseInputValueDef","parseEnumValueDefinition","startToken","noLocation","Loc","endToken","atToken","openKind","parseFn","closeKind","AbstractPubSubProvider","getProviderName","getCategory","ClientsQueue","Map","clientFactory","from","delete","topicSymbol","MqttOverWSProvider","_clientsQueue","_topicObservers","_clientIdObservers","aws_pubsub_endpoint","aws_appsync_dangerously_connect_to_http_endpoint_for_testing","getTopicForValue","onDisconnect","warn","topicsToDelete_1","clientIdObservers","observer","observerForTopic","observerTopic","size","newClient","payloadString","_onMessage","isSSLEnabled","clientsQueue","targetTopics","matchedTopicObservers_1","filterArray","topicArray","left","right","mqttTopicMatch","parsedMessage_1","observersForTopic","Set","add","observersForClientId","e_1","__spread","AWSAppSyncProvider","_topicClient","_topicAlias","_cleanUp","entries","_cleanUpForTopic","has","obs","closed","mqttConnections","newSubscriptions","newAliases","elem","connectionInfoForTopic","find","err_1","_d","complete","some","origKey","MESSAGE_TYPES","SUBSCRIPTION_STATUS","SOCKET_STATUS","AMPLIFY_SYMBOL","NON_RETRYABLE_CODES","CONTROL_MSG","AWS_APPSYNC_REALTIME_HEADERS","accept","AWSAppSyncRealTimeProvider","socketStatus","CLOSED","keepAliveTimeout","subscriptionObserverMap","promiseArray","_topics","_msg","appSyncGraphqlEndpoint","subscriptionId_1","_startSubscriptionWithAWSAppSyncRealTime","subscriptionId","errors","REALTIME_SUBSCRIPTION_INIT_ERROR","subscriptionState","_waitForSubscriptionToBeConnected","CONNECTED","_sendUnsubscriptionMessage","_removeSubscriptionObserver","authenticationType","variables","apiKey","graphql_headers","additionalHeaders","dataString","headerObj","_e","subscriptionMessage","stringToAWSRealTime","err_2","_f","subscriptionFailedCallback_1","_g","subscriptionFailedCallback","subscriptionReadyCallback","_h","_j","PENDING","startAckTimeoutId","_awsRealTimeHeaderBasedAuth","canonicalUri","authorization","GQL_START","_initializeWebSocketConnection","CONNECTION_FAILED","_timeoutStartSubscriptionAck","awsRealTimeSocket","res","rej","OPEN","READY","unsubscribeMessage","GQL_STOP","_closeSocketIfRequired","bufferedAmount","keepAliveTimeoutId","tempSocket","_handleIncomingSubscriptionMessage","GQL_DATA","GQL_START_ACK","GQL_CONNECTION_KEEP_ALIVE","_errorDisconnect","TIMEOUT_DISCONNECT","GQL_ERROR","FAILED","Hub","dispatch","SUBSCRIPTION_ACK","clear","discoverableEndpoint","headerString","headerQs","payloadQs","awsRealTimeUrl","err_3","CONNECTING","_initializeRetryableHandshake","_initializeHandshake","err_4","errorType","newSocket","ackOk","connectionTimeoutMs","GQL_CONNECTION_ACK","CONNECTION_CLOSED","GQL_CONNECTION_ERROR","gqlInit","GQL_CONNECTION_INIT","includes","headerHandler","handler","API_KEY","_awsRealTimeApiKeyHeader","AWS_IAM","_awsRealTimeIAMHeader","OPENID_CONNECT","_awsRealTimeOPENIDHeader","AMAZON_COGNITO_USER_POOLS","_awsRealTimeCUPHeader","currentSession","Authorization","getAccessToken","getJwtToken","federatedInfo","currentUser","currentAuthenticatedUser","dt","dtStr","_ensureCredentials","Signer","cred","shear","PubSub","PubSubClass","_pluggables","_awsAppSyncProvider","_awsAppSyncRealTimeProvider","opt","pluggable","addPluggable","getProviderByName","providerName","awsAppSyncProvider","awsAppSyncRealTimeProvider","getProviders","provider","ssr","providers","subscriptions","observable","console","_error","subscription","GRAPHQL_AUTH_MODE","GraphQLAuthError","graphqlOperation","GraphQLAPIClass","_api","Auth","Cache","API","otherOptions","_headerBasedAuth","defaultAuthenticationType","aws_appsync_authenticationType","session","aws_appsync_apiKey","NO_API_KEY","NO_CREDENTIALS","NO_FEDERATED_JWT","NO_CURRENT_USER","getGraphqlOperationType","doc","graphql","paramQuery","authMode","def","operationType","responsePromise","_graphql","_graphqlSubscribe","customGraphqlEndpoint","customEndpointRegion","_k","_l","aws_appsync_region","aws_appsync_graphqlEndpoint","graphql_endpoint","graphql_endpoint_iam_region","GraphQLAPI","_nodeId","_clockseq","rng","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","tl","tmh","constants_1","RawSha256","state","Int32Array","INIT","temp","bufferLength","bytesHashed","finished","update","MAX_HASHABLE_LENGTH","BLOCK_SIZE","hashBuffer","digest","bitsHashed","bufferView","byteOffset","undecoratedLength","setUint8","setUint32","floor","out","DIGEST_LENGTH","state0","state1","state2","state3","state4","state5","state6","state7","u","t1_1","t2_1","t1","KEY","t2","getRandomValues","crypto","msCrypto","rnds8","rnds","random","CloseParenthesis","MESSAGE","NO_MODIFICATION","SUCCESSFULL_REGISTERATION_LOGIN_MESSAGE","AGENCY_USER_LOGIN_ERR_MESSAGE","EMAIL_ALREADY_REGISTERED","USER_DOES_NOT_EXIST","PASSWORD_DO_NOT_MATCH","OTP_SENT_TO_MAIL","OTP_SENT_TO_MOBILE_NUMBER","PASSWORD_RESET_SUCCESS_MESSAGE","VALIDATION_EXCEPTION","PASSWORD_POLICY_MESSAGE","USER_IS_NOT_CONFIRMED","TEMPORARY_PASSWORD_RESEND_MESSAGE","CONTACT_US_SUCCESS_MESSAGE","RESTRICT_USERPORTAL_USER_LOGIN","INVALID_EMAIL_MESSAGE","INVALID_MOBILE_NUMBER_MESSAGE","INCORRECT_USERNAME_OR_PASSWORD","NEWS_LETTER_SUBSCRIBTION_MESSAGE","StartParenthesis","BetweenReverse","betweenReverseFrom","objFromValue","objToValue","to","serializedParams","isURLSearchParams","isDate","isObject","hashmarkIndex","Between","betweenFromAndTo","inOperand","ojFromValue","datatype","From","To","languageServiceUrl","process","getWebsiteLanguages","dataObject","getMessages","messageId","languageCode","queryParam","getValueMessages","getFieldConsoleMessages","fieldsConsole","fileName","lineNumber","columnNumber","keyPrefix","capacityInBytes","itemMaxSize","defaultTTL","defaultPriority","warningThreshold","storage","getStorage","getByteLength","ret","getCurrTime","isInteger","isFinite","_isInteger","CacheObject","StorageCache","cacheCurSizeKey","fillCacheItem","timestamp","visitedTime","priority","byteSize","BrowserStorageCache","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","getPrototypeOf","isFunction","l","isArrayBuffer","isBuffer","isFormData","isArrayBufferView","isFile","isBlob","isStream","pipe","URLSearchParams","product","assignValue","stripBOM","content","tslib_1","RawSha256_1","util_utf8_browser_1","Sha256","secret","outer","inner","convertToBuffer","bufferHash","bufferFromSecret","toHash","isEmptyData","digestSync","fromUtf8","BYTES_PER_ELEMENT","And","OperationFlag","Operation","And_1","Between_1","Or_1","CloseParenthesis_1","StartParenthesis_1","In_1","NotIn_1","BetweenReverse_1","p_status","IterationCount","_Status","getIterationCount","setIterationCount","getOr","_Or","setOr","getAnd","_And","setAnd","getEqualOperation","_EqualOperation","setEqualOperation","getNotEqualOperation","_NotEqualOperation","setNotEqualOperation","getLikeOperation","_LikeOperation","setLikeOperation","getBetween","_Between","setBetween","getBetweenReverse","_BetweenReverse","setBetweenReverse","getIn","_In","setIn","getNotIn","_NotIn","setNotIn","getStartParenthesis","_StartParenthesis","setStartParenthesis","getCloseParenthesis","_CloseParenthesis","setCloseParenthesis","getGreaterThan","_GreaterThanComparer","setGreaterThan","strJson","JsonObj","strJSON","RestAPIClass","custom","apiInfo","getEndpointInfo","apiConfig","api","RestAPI","APIClass","_restApi","_graphqlApi","restAPIConfig","graphQLAPIConfig","_classCallCheck","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","hasSymbols","getSymbol","SymbolIterator","SymbolObservable","SymbolSpecies","getMethod","getSpecies","ctor","isObservable","hostReportError","enqueue","cleanupSubscription","cleanup","_cleanup","closeSubscription","_observer","_queue","_state","notifySubscription","onNotify","queue","flushSubscription","Subscription","subscriber","subscriptionObserver","SubscriptionObserver","_subscription","_subscriber","_this2","_this3","_this4","C","hasSeed","hasValue","seed","_this5","_len","sources","_key","startNext","_this6","completeIfDone","_item","_len2","_key2","symbol","ConditionCreator","Where_1","Operation_1","count","getSearchCondition","objSearchParamLit","objWhere","objParam","getMultiParamCondition","operatorList","likeMode","operationObj","objSearchParam","operation_1","operation_2","hasMultiParams","operation_3","operation_4","operation_5","operation_6","operationObj_1","operationObj_2","operationObj_3","settle","cookies","buildFullPath","parseHeaders","isURLSameOrigin","createError","requestData","requestHeaders","XMLHttpRequest","auth","username","unescape","btoa","fullPath","open","onreadystatechange","responseURL","responseHeaders","getAllResponseHeaders","responseText","statusText","onabort","ontimeout","timeoutErrorMessage","xsrfValue","xsrfCookieName","xsrfHeaderName","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","abort","encrypt","src","signed_headers","canonical_request","url_info","key_val","reencoded_val","key_a","key_b","parse_service_info","reverse","credential_scope","d_str","string_to_sign","algorithm","dt_str","get_signing_key","service_info","k_date","k_region","k_service","get_signature","signing_key","str_to_sign","access_info","request_str","serviceInfo","signature","authorization_header","get_authorization_header","signUrl","urlOrRequest","accessInfo","expiration","urlToSign","today","signedHeaders","credentialScope","sessionTokenRequired","queryParams","canonicalRequest","stringToSign","additionalQueryParams","slashes","Uint32Array","pow","isAbsoluteURL","combineURLs","requestedURL","TextEncoder","bytes","surrogatePair","TextDecoder","decode","decoded","byte","nextByte","encoded","byteValue","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","maxContentLength","maxBodyLength","validateStatus","__exportStar","fns","__spreadArray","pack","Values","addValues","objValue"],"mappings":"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","file":"db9a085f6c5885a0167ac763c242396b7477729c-fc23b3d572adacbc5555.js","sourcesContent":["'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\n\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nmodule.exports = bytesToUuid;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SearchOpEquality = exports.SearchOperationBuilder = exports.SearchOperation = exports.SearchParam = void 0;\n\nvar EqualOperation_1 = require(\"./EqualOperation\");\n\nvar GreaterThanComparer_1 = require(\"./GreaterThanComparer\");\n\nvar LikeOperation_1 = require(\"./LikeOperation\");\n\nvar NotEqualOperation_1 = require(\"./NotEqualOperation\");\n\nvar SearchParam =\n/** @class */\nfunction () {\n function SearchParam() {\n this.name = null;\n this.secondName = null;\n this.dataType = null;\n this.operation = null;\n this.hasMultValue = false;\n this.hasMultValueList = [];\n this.hasMultiParam = false;\n this.multiparams = [];\n this.isAndOperator = true;\n this.operation = new EqualOperation_1.EqualOperation(EqualOperation_1.Equality.Equal);\n this.hasMultValueList = [];\n this.hasMultValue = false;\n this.multiparams = [];\n }\n\n SearchParam.prototype.searchParamCreate = function (inName, inDataType, inValue1, objSearchOperation, isAndOperator) {\n this.name = inName;\n this.dataType = inDataType;\n this.fieldValueFrom = inValue1;\n this.operation = objSearchOperation;\n this.isAndOperator = isAndOperator;\n };\n\n SearchParam.prototype.searchParamCreator = function (inName, inDataType, inValue1, isAndOperator) {\n var firstChar = inValue1.charAt(0);\n var lastChar = inValue1.substr(inValue1.length - 1);\n var bLikeStart = false;\n var bLikeEnd = false;\n var searchedString = inValue1;\n\n if (firstChar == \"*\") {\n searchedString = searchedString.substring(1);\n bLikeStart = true;\n }\n\n if (lastChar == \"*\") {\n searchedString = searchedString.substring(0, searchedString.length - 1);\n bLikeEnd = true;\n }\n\n this.name = inName;\n this.dataType = inDataType;\n this.fieldValueFrom = inValue1;\n this.searchParamCreate(inName, inDataType, searchedString, SearchOperationBuilder.create(true, bLikeStart, bLikeEnd), isAndOperator);\n };\n\n SearchParam.prototype.searchParamFrom = function (inName, inDataType, inValue1, isAndOperator) {\n this.name = inName;\n this.dataType = inDataType;\n this.fieldValueFrom = inValue1;\n this.isAndOperator = isAndOperator;\n };\n\n SearchParam.prototype.searchParamGreaterThanComparer = function (inName, secondName, inDataType, inValue1, isAndOperator) {\n this.name = inName;\n this.secondName = secondName;\n this.fieldValueFrom = inValue1;\n this.dataType = inDataType;\n this.operation = new GreaterThanComparer_1.GreaterThanComparer();\n ;\n if (isAndOperator) this.isAndOperator = isAndOperator;else this.isAndOperator = this.isAndOperator;\n };\n\n SearchParam.prototype.searchParamFromTo = function (inName, inDataType, inValue1, inValue2, isAndOperator) {\n inValue1.Month = inValue1.Month + 1;\n inValue2.Month = inValue2.Month + 1;\n this.name = inName;\n this.dataType = inDataType;\n this.isAndOperator = isAndOperator;\n if (inValue1 != undefined) this.fieldValueFrom = inValue1;\n if (inValue2 != undefined) this.fieldValueTo = inValue2;\n };\n\n SearchParam.prototype.searchParamMultiValue = function (inName, inDataType, multiValueList, isAndOperator) {\n this.name = inName;\n this.dataType = inDataType;\n this.hasMultValueList = multiValueList;\n this.hasMultValue = true;\n this.isAndOperator = isAndOperator;\n };\n\n return SearchParam;\n}();\n\nexports.SearchParam = SearchParam;\n\nvar SearchOperation =\n/** @class */\nfunction () {\n function SearchOperation() {}\n\n return SearchOperation;\n}();\n\nexports.SearchOperation = SearchOperation; // export class EqualOption extends SearchOperation {\n// private likeMode: SearchOpEquality;\n// constructor(isEqual: SearchOpEquality) {\n// super();\n// this.likeMode = isEqual;\n// }\n// EqualMode = this.likeMode;\n// public static ReverseDateEquality(searchOpEquality: SearchOpEquality): SearchOpEquality {\n// let objSearchOpEquality: SearchOpEquality;\n// objSearchOpEquality = searchOpEquality;\n// switch (searchOpEquality) {\n// case SearchOpEquality.GreaterThan:\n// objSearchOpEquality = SearchOpEquality.LessThan;\n// break;\n// case SearchOpEquality.LessThan:\n// objSearchOpEquality = SearchOpEquality.GreaterThan;\n// break;\n// case SearchOpEquality.GreaterThanOrEqual:\n// objSearchOpEquality = SearchOpEquality.LessThanOrEqual;\n// break;\n// case SearchOpEquality.LessThanOrEqual:\n// objSearchOpEquality = SearchOpEquality.GreaterThanOrEqual;\n// break;\n// }\n// return objSearchOpEquality;\n// }\n// }\n// export class LikeOption extends SearchOperation {\n// private startWith: boolean;\n// private endWith: boolean;\n// private likeMode: boolean;\n// // likeStartWith: boolean;\n// // likeEndWith: boolean;\n// // likeModes: boolean;\n// constructor(isLike: boolean, inStartWith: boolean, inEndWith: boolean) {\n// super();\n// this.startWith = inStartWith;\n// this.endWith = inEndWith;\n// this.likeMode = isLike;\n// }\n// StartWith = this.startWith;\n// EndWith = this.endWith;\n// }\n\nvar SearchOperationBuilder =\n/** @class */\nfunction () {\n function SearchOperationBuilder() {\n this.equalValue = SearchOpEquality.Equal;\n } // static create(isLike: boolean, startWith: boolean, endWith: boolean): SearchOperation {\n // this.objSearchOperation = new EqualOption(SearchOpEquality.Equal);\n // if (!startWith && !endWith) {\n // if (isLike) {\n // this.objSearchOperation = new EqualOption(SearchOpEquality.Equal);\n // }\n // else {\n // this.objSearchOperation = new EqualOption(SearchOpEquality.NotEqual);\n // }\n // }\n // else {\n // this.objSearchOperation = new LikeOption(isLike, startWith, endWith);\n // }\n // return this.objSearchOperation;\n // }\n\n\n SearchOperationBuilder.create = function (isLike, startWith, endWith) {\n this.objSearchOperation = new EqualOperation_1.EqualOperation(EqualOperation_1.Equality.Equal);\n\n if (!startWith && !endWith) {\n if (isLike) {\n this.objSearchOperation = new EqualOperation_1.EqualOperation(EqualOperation_1.Equality.Equal);\n } else {\n this.objSearchOperation = new NotEqualOperation_1.NotEqualOperation(EqualOperation_1.Equality.NotEqual);\n }\n } else {\n this.objSearchOperation = new LikeOperation_1.LikeOperation(isLike, startWith, endWith);\n }\n\n return this.objSearchOperation;\n };\n\n return SearchOperationBuilder;\n}();\n\nexports.SearchOperationBuilder = SearchOperationBuilder;\nvar SearchOpEquality;\n\n(function (SearchOpEquality) {\n SearchOpEquality[SearchOpEquality[\"None\"] = 0] = \"None\";\n SearchOpEquality[SearchOpEquality[\"Equal\"] = 1] = \"Equal\";\n SearchOpEquality[SearchOpEquality[\"LessThan\"] = 2] = \"LessThan\";\n SearchOpEquality[SearchOpEquality[\"GreaterThan\"] = 3] = \"GreaterThan\";\n SearchOpEquality[SearchOpEquality[\"NotEqual\"] = 4] = \"NotEqual\";\n SearchOpEquality[SearchOpEquality[\"GreaterThanOrEqual\"] = 5] = \"GreaterThanOrEqual\";\n SearchOpEquality[SearchOpEquality[\"LessThanOrEqual\"] = 6] = \"LessThanOrEqual\";\n})(SearchOpEquality = exports.SearchOpEquality || (exports.SearchOpEquality = {}));","'use strict';\n\nvar utils = require('../utils');\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\n\n\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = ['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'];\n var directMergeKeys = ['validateStatus'];\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\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys).concat(directMergeKeys);\n var otherKeys = Object.keys(config1).concat(Object.keys(config2)).filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n utils.forEach(otherKeys, mergeDeepProperties);\n return config;\n};","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Equality = exports.NotEqualOperation = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar NotEqualOperation =\n/** @class */\nfunction (_super) {\n __extends(NotEqualOperation, _super); //EqualOperator: Equality;\n\n\n function NotEqualOperation(objEquality) {\n return _super.call(this) || this; // if (objEquality) {\n // this.EqualOperator = objEquality;\n // }\n // else {\n // this.EqualOperator = Equality.Equal;\n // }\n }\n\n NotEqualOperation.prototype.notEqualOperand = function (name, value, type) {\n _super.prototype.abstractOperandType.call(this, name, value, type); //this.EqualOperator = objEquality;\n\n };\n\n return NotEqualOperation;\n}(Operand_1.Operand);\n\nexports.NotEqualOperation = NotEqualOperation;\nvar Equality;\n\n(function (Equality) {\n Equality[Equality[\"None\"] = 0] = \"None\";\n Equality[Equality[\"Equal\"] = 1] = \"Equal\";\n Equality[Equality[\"LessThan\"] = 2] = \"LessThan\";\n Equality[Equality[\"GreaterThan\"] = 3] = \"GreaterThan\";\n Equality[Equality[\"NotEqual\"] = 4] = \"NotEqual\";\n Equality[Equality[\"GreaterThanOrEqual\"] = 5] = \"GreaterThanOrEqual\";\n Equality[Equality[\"LessThanOrEqual\"] = 6] = \"LessThanOrEqual\";\n})(Equality = exports.Equality || (exports.Equality = {}));\n\n;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.GreaterThanComparer = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar GreaterThanComparer =\n/** @class */\nfunction (_super) {\n __extends(GreaterThanComparer, _super);\n\n function GreaterThanComparer() {\n return _super.call(this) || this;\n }\n\n GreaterThanComparer.prototype.greaterThanOperand = function (name, secondName, value, type) {\n _super.prototype.abstractOperandObjGreaterThan.call(this, name, secondName, value, type);\n };\n\n return GreaterThanComparer;\n}(Operand_1.Operand);\n\nexports.GreaterThanComparer = GreaterThanComparer;","/**\n * Date & time utility functions to abstract the `aws-sdk` away from users.\n * (v2 => v3 modularization is a breaking change)\n *\n * @see https://github.com/aws/aws-sdk-js/blob/6edf586dcc1de7fe8fbfbbd9a0d2b1847921e6e1/lib/util.js#L262\n */\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n}; // Comment - TODO: remove\n\n\nvar FIVE_MINUTES_IN_MS = 1000 * 60 * 5;\nexport var DateUtils = {\n /**\n * Milliseconds to offset the date to compensate for clock skew between device & services\n */\n clockOffset: 0,\n getDateWithClockOffset: function getDateWithClockOffset() {\n if (DateUtils.clockOffset) {\n return new Date(new Date().getTime() + DateUtils.clockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @returns {number} Clock offset in milliseconds\n */\n getClockOffset: function getClockOffset() {\n return DateUtils.clockOffset;\n },\n getHeaderStringFromDate: function getHeaderStringFromDate(date) {\n if (date === void 0) {\n date = DateUtils.getDateWithClockOffset();\n }\n\n return date.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n },\n getDateFromHeaderString: function getDateFromHeaderString(header) {\n var _a = __read(header.match(/^(\\d{4})(\\d{2})(\\d{2})T(\\d{2})(\\d{2})(\\d{2}).+/), 7),\n year = _a[1],\n month = _a[2],\n day = _a[3],\n hour = _a[4],\n minute = _a[5],\n second = _a[6];\n\n return new Date(Date.UTC(Number(year), Number(month) - 1, Number(day), Number(hour), Number(minute), Number(second)));\n },\n isClockSkewed: function isClockSkewed(serverDate) {\n // API gateway permits client calls that are off by no more than ±5 minutes\n return Math.abs(serverDate.getTime() - DateUtils.getDateWithClockOffset().getTime()) >= FIVE_MINUTES_IN_MS;\n },\n isClockSkewError: function isClockSkewError(error) {\n if (!error.response || !error.response.headers) {\n return false;\n }\n\n var headers = error.response.headers;\n return Boolean(headers['x-amzn-errortype'] === 'BadRequestException' && (headers.date || headers.Date));\n },\n\n /**\n * @param {number} offset Clock offset in milliseconds\n */\n setClockOffset: function setClockOffset(offset) {\n DateUtils.clockOffset = offset;\n }\n};","import \"core-js/modules/es.array.reduce.js\";\n\n/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport { ConsoleLogger as Logger, 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*/\n\nvar RestClient =\n/** @class */\nfunction () {\n /**\n * @param {RestClientOptions} [options] - Instance options\n */\n function RestClient(options) {\n this._region = 'us-east-1'; // this will be updated by endpoint function\n\n this._service = 'execute-api'; // this can be updated by endpoint function\n\n this._custom_header = undefined; // this can be updated by endpoint function\n\n /**\n * This weak map provides functionality to let clients cancel\n * in-flight axios requests. https://github.com/axios/axios#cancellation\n *\n * 1. For every axios request, a unique cancel token is generated and added in the request.\n * 2. Promise for fulfilling the request is then mapped to that unique cancel token.\n * 3. The promise is returned to the client.\n * 4. Clients can either wait for the promise to fulfill or call `API.cancel(promise)` to cancel the request.\n * 5. If `API.cancel(promise)` is called, then the corresponding cancel token is retrieved from the map below.\n * 6. Promise returned to the client will be in rejected state with the error provided during cancel.\n * 7. Clients can check if the error is because of cancelling by calling `API.isCancel(error)`.\n *\n * For more details, see https://github.com/aws-amplify/amplify-js/pull/3769#issuecomment-552660025\n */\n\n this._cancelTokenMap = null;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n\n if (this._cancelTokenMap == null) {\n this._cancelTokenMap = new WeakMap();\n }\n }\n /**\n * Update AWS credentials\n * @param {AWSCredentials} credentials - AWS credentials\n *\n updateCredentials(credentials: AWSCredentials) {\n this.options.credentials = credentials;\n }\n */\n\n /**\n * Basic HTTP request. Customizable\n * @param {string | 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\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\n var _this = this;\n\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\n if (typeof urlOrApiInfo === 'string') {\n parsed_url = this._parseUrl(urlOrApiInfo);\n url = urlOrApiInfo;\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\n params = {\n method: method,\n url: url,\n host: parsed_url.host,\n path: parsed_url.path,\n headers: {},\n data: null,\n responseType: 'json',\n timeout: 0,\n cancelToken: null\n };\n libraryHeaders = {};\n\n if (Platform.isReactNative) {\n userAgent = Platform.userAgent || 'aws-amplify/0.1.x';\n libraryHeaders = {\n 'User-Agent': userAgent\n };\n }\n\n initParams = Object.assign({}, init);\n isAllResponse = initParams.response;\n\n if (initParams.body) {\n if (typeof FormData === 'function' && initParams.body instanceof FormData) {\n libraryHeaders['Content-Type'] = 'multipart/form-data';\n params.data = initParams.body;\n } else {\n libraryHeaders['Content-Type'] = 'application/json; charset=UTF-8';\n params.data = JSON.stringify(initParams.body);\n }\n }\n\n if (initParams.responseType) {\n params.responseType = initParams.responseType;\n }\n\n if (initParams.withCredentials) {\n params['withCredentials'] = initParams.withCredentials;\n }\n\n if (initParams.timeout) {\n params.timeout = initParams.timeout;\n }\n\n if (initParams.cancellableToken) {\n params.cancelToken = initParams.cancellableToken.token;\n }\n\n params['signerServiceInfo'] = initParams.signerServiceInfo;\n if (!(typeof custom_header === 'function')) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , custom_header()];\n\n case 1:\n _a = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _a = undefined;\n _c.label = 3;\n\n case 3:\n custom_header_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), {\n query: __assign(__assign({}, parsedUrl.query), initParams.queryStringParameters || {})\n })); // Do not sign the request if client has added 'Authorization' header,\n // which means custom authorizer.\n\n if (typeof params.headers['Authorization'] !== 'undefined') {\n params.headers = Object.keys(params.headers).reduce(function (acc, k) {\n if (params.headers[k]) {\n acc[k] = params.headers[k];\n }\n\n return acc; // tslint:disable-next-line:align\n }, {});\n return [2\n /*return*/\n , this._request(params, isAllResponse)];\n } // Signing the request in case there credentials are available\n\n\n return [2\n /*return*/\n , 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\n if (DateUtils.isClockSkewed(requestDate, responseDate)) {\n DateUtils.setClockOffset(responseDate.getTime() - requestDate.getTime());\n return _this.ajax(urlOrApiInfo, method, init);\n }\n }\n\n throw error;\n });\n }, function (err) {\n logger.debug('No credentials available, the request will be unsigned');\n return _this._request(params, isAllResponse);\n })];\n }\n });\n });\n };\n /**\n * GET HTTP request\n * @param {string | 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\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\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\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\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\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\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\n\n RestClient.prototype.cancel = function (request, message) {\n var source = this._cancelTokenMap.get(request);\n\n if (source) {\n source.cancel(message);\n }\n\n return true;\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n RestClient.prototype.isCancel = function (error) {\n return axios.isCancel(error);\n };\n /**\n * Retrieves a new and unique cancel token which can be\n * provided in an axios request to be cancelled later.\n */\n\n\n RestClient.prototype.getCancellableToken = function () {\n return axios.CancelToken.source();\n };\n /**\n * Updates the weakmap with a response promise and its\n * cancel token such that the cancel token can be easily\n * retrieved (and used for cancelling the request)\n */\n\n\n RestClient.prototype.updateRequestToBeCancellable = function (promise, cancelTokenSource) {\n this._cancelTokenMap.set(promise, cancelTokenSource);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n RestClient.prototype.endpoint = function (apiName) {\n var _this = this;\n\n var cloud_logic_array = this._options.endpoints;\n var response = '';\n\n if (!Array.isArray(cloud_logic_array)) {\n return response;\n }\n\n cloud_logic_array.forEach(function (v) {\n if (v.name === apiName) {\n response = v.endpoint;\n\n if (typeof v.region === 'string') {\n _this._region = v.region;\n } else if (typeof _this._options.region === 'string') {\n _this._region = _this._options.region;\n }\n\n if (typeof v.service === 'string') {\n _this._service = v.service || 'execute-api';\n } else {\n _this._service = 'execute-api';\n }\n\n if (typeof v.custom_header === 'function') {\n _this._custom_header = v.custom_header;\n } else {\n _this._custom_header = undefined;\n }\n }\n });\n return response;\n };\n /** private methods **/\n\n\n RestClient.prototype._signed = function (params, credentials, isAllResponse, _a) {\n var service = _a.service,\n region = _a.region;\n\n var signerServiceInfoParams = params.signerServiceInfo,\n otherParams = __rest(params, [\"signerServiceInfo\"]);\n\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\n if (signed_params.data) {\n signed_params.body = signed_params.data;\n }\n\n logger.debug('Signed Request: ', signed_params);\n delete signed_params.headers['host'];\n return axios(signed_params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._request = function (params, isAllResponse) {\n if (isAllResponse === void 0) {\n isAllResponse = false;\n }\n\n return axios(params).then(function (response) {\n return isAllResponse ? response : response.data;\n }).catch(function (error) {\n logger.debug(error);\n throw error;\n });\n };\n\n RestClient.prototype._parseUrl = function (url) {\n var parts = url.split('/');\n return {\n host: parts[2],\n path: '/' + parts.slice(3).join('/')\n };\n };\n\n return RestClient;\n}();\n\nexport { RestClient };","module.exports = require('./lib/Observable.js').Observable;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Auth } from './Auth';\nimport { CognitoHostedUIIdentityProvider } from './types/Auth';\nimport { CognitoUser, CookieStorage, appendToCognitoUserAgent } from 'amazon-cognito-identity-js';\nimport { AuthErrorStrings } from './common/AuthErrorStrings';\n/**\n * @deprecated use named import\n */\n\nexport default Auth;\nexport { Auth, CognitoUser, CookieStorage, CognitoHostedUIIdentityProvider, appendToCognitoUserAgent, AuthErrorStrings };","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.NotIn = void 0;\n\nvar In_1 = require(\"./In\");\n\nvar NotIn =\n/** @class */\nfunction (_super) {\n __extends(NotIn, _super);\n\n function NotIn() {\n return _super.call(this) || this;\n }\n\n return NotIn;\n}(In_1.In);\n\nexports.NotIn = NotIn;","/*\n * Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n/**\n * This Symbol is used to reference an internal-only PubSub provider that\n * is used for AppSync/GraphQL subscriptions in the API category.\n */\nvar hasSymbol = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function';\nexport var INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER = hasSymbol ? Symbol.for('INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER';\nexport var INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER = hasSymbol ? Symbol.for('INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER') : '@@INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER';\nexport var USER_AGENT_HEADER = 'x-amz-user-agent';","'use strict';\n\nvar utils = require('./../utils'); // Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\n\n\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\n\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) {\n return parsed;\n }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href); // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() : // Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","/*\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 */\n\nvar I18n =\n/** @class */\nfunction () {\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\n this._lang = null;\n /**\n * @private\n */\n\n this._dict = {};\n this._options = Object.assign({}, options);\n this._lang = this._options.language;\n\n if (!this._lang && typeof window !== 'undefined' && window && window.navigator) {\n this._lang = window.navigator.language;\n }\n\n logger.debug(this._lang);\n }\n /**\n * @method\n * Explicitly setting language\n * @param {String} lang\n */\n\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\n\n I18n.prototype.get = function (key, defVal) {\n if (defVal === void 0) {\n defVal = undefined;\n }\n\n if (!this._lang) {\n return typeof defVal !== 'undefined' ? defVal : key;\n }\n\n var lang = this._lang;\n var val = this.getByLanguage(key, lang);\n\n if (val) {\n return val;\n }\n\n if (lang.indexOf('-') > 0) {\n val = this.getByLanguage(key, lang.split('-')[0]);\n }\n\n if (val) {\n return val;\n }\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\n\n I18n.prototype.getByLanguage = function (key, language, defVal) {\n if (defVal === void 0) {\n defVal = null;\n }\n\n if (!language) {\n return defVal;\n }\n\n var lang_dict = this._dict[language];\n\n if (!lang_dict) {\n return defVal;\n }\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\n\n I18n.prototype.putVocabulariesForLanguage = function (language, vocabularies) {\n var lang_dict = this._dict[language];\n\n if (!lang_dict) {\n lang_dict = this._dict[language] = {};\n }\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\n\n I18n.prototype.putVocabularies = function (vocabularies) {\n var _this = this;\n\n Object.keys(vocabularies).map(function (key) {\n _this.putVocabulariesForLanguage(key, vocabularies[key]);\n });\n };\n\n return I18n;\n}();\n\nexport { I18n };","/*\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 */\n\nvar I18n =\n/** @class */\nfunction () {\n function I18n() {}\n /**\n * @static\n * @method\n * Configure I18n part\n * @param {Object} config - Configuration of the I18n\n */\n\n\n I18n.configure = function (config) {\n logger.debug('configure I18n');\n\n if (!config) {\n return _config;\n }\n\n _config = Object.assign({}, _config, config.I18n || config);\n I18n.createInstance();\n return _config;\n };\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\n\n I18n.createInstance = function () {\n logger.debug('create I18n instance');\n\n if (_i18n) {\n return;\n }\n\n _i18n = new I18nClass(_config);\n };\n /**\n * @static @method\n * Explicitly setting language\n * @param {String} lang\n */\n\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\n\n I18n.get = function (key, defVal) {\n if (!I18n.checkConfig()) {\n return typeof defVal === 'undefined' ? key : defVal;\n }\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\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\n\n I18n.putVocabularies = function (vocabularies) {\n I18n.checkConfig();\n return _i18n.putVocabularies(vocabularies);\n };\n\n I18n.checkConfig = function () {\n if (!_i18n) {\n _i18n = new I18nClass(_config);\n }\n\n return true;\n };\n\n return I18n;\n}();\n\nexport { I18n };\nAmplify.register(I18n);\n/**\n * @deprecated use named import\n */\n\nexport default I18n;","/*\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 { 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 */\n\nexport default Amplify;","'use strict';\n\nvar Cancel = require('./Cancel');\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\n\n\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n\n\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Equality = exports.EqualOperation = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar EqualOperation =\n/** @class */\nfunction (_super) {\n __extends(EqualOperation, _super); //EqualOperator: Equality;\n\n\n function EqualOperation(objEquality) {\n return _super.call(this) || this; // if (objEquality) {\n // this.EqualOperator = objEquality;\n // }\n // else {\n // this.EqualOperator = Equality.Equal;\n // }\n }\n\n EqualOperation.prototype.equalOperand = function (name, value, type) {\n _super.prototype.abstractOperandType.call(this, name, value, type); //this.EqualOperator = objEquality;\n\n };\n\n return EqualOperation;\n}(Operand_1.Operand);\n\nexports.EqualOperation = EqualOperation;\nvar Equality;\n\n(function (Equality) {\n Equality[Equality[\"None\"] = 0] = \"None\";\n Equality[Equality[\"Equal\"] = 1] = \"Equal\";\n Equality[Equality[\"LessThan\"] = 2] = \"LessThan\";\n Equality[Equality[\"GreaterThan\"] = 3] = \"GreaterThan\";\n Equality[Equality[\"NotEqual\"] = 4] = \"NotEqual\";\n Equality[Equality[\"GreaterThanOrEqual\"] = 5] = \"GreaterThanOrEqual\";\n Equality[Equality[\"LessThanOrEqual\"] = 6] = \"LessThanOrEqual\";\n})(Equality = exports.Equality || (exports.Equality = {}));\n\n;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Where = void 0;\n\nvar Where =\n/** @class */\nfunction () {\n function Where() {\n this._OperationList = [];\n }\n\n Where.prototype.addConditionalParam = function (objOperator) {\n this._OperationList.push(objOperator);\n };\n\n Where.prototype.toJsonString = function () {\n var json = '[]';\n var oprList = JSON.parse(json);\n\n this._OperationList.forEach(function (list) {\n oprList.push(JSON.parse(list.toJsonString()));\n });\n\n return oprList;\n };\n\n return Where;\n}();\n\nexports.Where = Where;","'use strict';\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\n\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.LikeMode = exports.LikeOperation = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar LikeOperation =\n/** @class */\nfunction (_super) {\n __extends(LikeOperation, _super);\n\n function LikeOperation(isLike, startWith, endWith) {\n return _super.call(this) || this; // this.LikeMode = isLike;\n // this.startWith = true;\n // this.endWith = true;\n } // likeOperation(objLikeMode: LikeMode, startWith, endWith, name, value, ) {\n\n\n LikeOperation.prototype.likeOperation = function (name, value, type) {\n _super.prototype.abstractOperandObjLike.call(this, name, value, type); // this.likeMode = objLikeMode;\n // this.startWith = startWith;\n // this.endWith = endWith;\n\n };\n\n return LikeOperation;\n}(Operand_1.Operand);\n\nexports.LikeOperation = LikeOperation;\nvar LikeMode;\n\n(function (LikeMode) {\n LikeMode[LikeMode[\"Like\"] = 0] = \"Like\";\n LikeMode[LikeMode[\"NotLike\"] = 1] = \"NotLike\";\n})(LikeMode = exports.LikeMode || (exports.LikeMode = {}));\n\n;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n\n\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\n\n\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\n\n\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ValueType = exports.Operand = void 0;\n\nvar Operand =\n/** @class */\nfunction () {\n function Operand() {}\n\n Operand.prototype.abstractOperandName = function (inName, type) {\n this.Name = inName;\n this.Type = type;\n };\n\n Operand.prototype.abstractOperandType = function (inName, value, type) {\n this.Name = inName;\n this.Type = type;\n this.Value = value;\n };\n\n Operand.prototype.abstractOperandObjLike = function (inName, value, type) {\n this.Name = inName;\n this.Value = value;\n this.Type = type;\n };\n\n Operand.prototype.abstractOperandObjGreaterThan = function (inName, secondName, value, type) {\n this.Name = inName;\n this.SecondName = secondName;\n this.Value = value;\n this.Type = type;\n };\n\n return Operand;\n}();\n\nexports.Operand = Operand;\nvar ValueType;\n\n(function (ValueType) {\n ValueType[ValueType[\"NULL\"] = 0] = \"NULL\";\n})(ValueType = exports.ValueType || (exports.ValueType = {}));","'use strict';\n\nvar utils = require('./utils');\n\nvar bind = require('./helpers/bind');\n\nvar Axios = require('./core/Axios');\n\nvar mergeConfig = require('./core/mergeConfig');\n\nvar defaults = require('./defaults');\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\n\n\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context); // Copy axios.prototype to instance\n\n utils.extend(instance, Axios.prototype, context); // Copy context to instance\n\n utils.extend(instance, context);\n return instance;\n} // Create the default instance to be exported\n\n\nvar axios = createInstance(defaults); // Expose Axios class to allow class inheritance\n\naxios.Axios = Axios; // Factory for creating new instances\n\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n}; // Expose Cancel & CancelToken\n\n\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel'); // Expose all/spread\n\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = require('./helpers/spread'); // Expose isAxiosError\n\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = axios;","/*******************************************************************************\n * Copyright (c) 2013 IBM Corp.\n *\n * All rights reserved. This program and the accompanying materials\n * are made available under the terms of the Eclipse Public License v1.0\n * and Eclipse Distribution License v1.0 which accompany this distribution.\n *\n * The Eclipse Public License is available at\n * http://www.eclipse.org/legal/epl-v10.html\n * and the Eclipse Distribution License is available at\n * http://www.eclipse.org/org/documents/edl-v10.php.\n *\n * Contributors:\n * Andrew Banks - initial API and implementation and initial documentation\n *******************************************************************************/\n// Only expose a single object name in the global namespace.\n// Everything must go through this module. Global Paho module\n// only has a single public function, client, which returns\n// a Paho client object given connection details.\n\n/**\n * Send and receive messages using web browsers.\n *

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

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

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

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

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

\n * Example:\n *\n *

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

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

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

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

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

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

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

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

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

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

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

\n * @property {Boolean} duplicate read only If true, this message might be a duplicate of one which has already been received.\n * This is only set on messages received from the server.\n *\n */\n\n\n var Message = function Message(newPayload) {\n var payload;\n\n if (typeof newPayload === \"string\" || newPayload instanceof ArrayBuffer || ArrayBuffer.isView(newPayload) && !(newPayload instanceof DataView)) {\n payload = newPayload;\n } else {\n throw format(ERROR.INVALID_ARGUMENT, [newPayload, \"newPayload\"]);\n }\n\n var destinationName;\n var qos = 0;\n var retained = false;\n var duplicate = false;\n Object.defineProperties(this, {\n \"payloadString\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") return payload;else return parseUTF8(payload, 0, payload.length);\n }\n },\n \"payloadBytes\": {\n enumerable: true,\n get: function get() {\n if (typeof payload === \"string\") {\n var buffer = new ArrayBuffer(UTF8Length(payload));\n var byteStream = new Uint8Array(buffer);\n stringToUTF8(payload, byteStream, 0);\n return byteStream;\n } else {\n return payload;\n }\n }\n },\n \"destinationName\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newDestinationName) {\n if (typeof newDestinationName === \"string\") destinationName = newDestinationName;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newDestinationName, \"newDestinationName\"]));\n }\n },\n \"qos\": {\n enumerable: true,\n get: function get() {\n return qos;\n },\n set: function set(newQos) {\n if (newQos === 0 || newQos === 1 || newQos === 2) qos = newQos;else throw new Error(\"Invalid argument:\" + newQos);\n }\n },\n \"retained\": {\n enumerable: true,\n get: function get() {\n return retained;\n },\n set: function set(newRetained) {\n if (typeof newRetained === \"boolean\") retained = newRetained;else throw new Error(format(ERROR.INVALID_ARGUMENT, [newRetained, \"newRetained\"]));\n }\n },\n \"topic\": {\n enumerable: true,\n get: function get() {\n return destinationName;\n },\n set: function set(newTopic) {\n destinationName = newTopic;\n }\n },\n \"duplicate\": {\n enumerable: true,\n get: function get() {\n return duplicate;\n },\n set: function set(newDuplicate) {\n duplicate = newDuplicate;\n }\n }\n });\n }; // Module contents.\n\n\n return {\n Client: Client,\n Message: Message\n }; // eslint-disable-next-line no-nested-ternary\n }(typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {});\n\n return PahoMQTT;\n});","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = utils.isStandardBrowserEnv() ? // Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() : // Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n\nvar utils = require('./../utils');\n\nvar buildURL = require('../helpers/buildURL');\n\nvar InterceptorManager = require('./InterceptorManager');\n\nvar dispatchRequest = require('./dispatchRequest');\n\nvar mergeConfig = require('./mergeConfig');\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\n\n\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\n\n\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config); // Set config.method\n\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 } // Hook up interceptors middleware\n\n\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n}; // Provide aliases for supported request methods\n\n\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\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});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\n\nvar transformData = require('./transformData');\n\nvar isCancel = require('../cancel/isCancel');\n\nvar defaults = require('../defaults');\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\n\n\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\n\n\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config); // Ensure headers exist\n\n config.headers = config.headers || {}; // Transform request data\n\n config.data = transformData(config.data, config.headers, config.transformRequest); // Flatten headers\n\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config); // Transform response data\n\n response.data = transformData(response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config); // Transform response data\n\n if (reason && reason.response) {\n reason.response.data = transformData(reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n\n return Promise.reject(reason);\n });\n};","'use strict';\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\n\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","var v1 = require('./v1');\n\nvar v4 = require('./v4');\n\nvar uuid = v4;\nuuid.v1 = v1;\nuuid.v4 = v4;\nmodule.exports = uuid;","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\n\n\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Or = void 0;\n\nvar Or =\n/** @class */\nfunction () {\n function Or() {\n this.status = true;\n }\n\n return Or;\n}();\n\nexports.Or = Or;","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { getLocation } from '../language/location';\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","import \"core-js/modules/es.array.reduce.js\";\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * A visitor is provided to visit, it contains the collection of\n * relevant functions to be called during the visitor's traversal.\n */\n\n/**\n * A visitor is comprised of visit functions, which are called on each node\n * during the visitor's traversal.\n */\n\n/**\n * A KeyMap describes each the traversable properties of each kind of node.\n */\nexport var QueryDocumentKeys = {\n Name: [],\n Document: ['definitions'],\n OperationDefinition: ['name', 'variableDefinitions', 'directives', 'selectionSet'],\n VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n Variable: ['name'],\n SelectionSet: ['selections'],\n Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n Argument: ['name', 'value'],\n FragmentSpread: ['name', 'directives'],\n InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n FragmentDefinition: ['name', // Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n 'variableDefinitions', 'typeCondition', 'directives', 'selectionSet'],\n IntValue: [],\n FloatValue: [],\n StringValue: [],\n BooleanValue: [],\n NullValue: [],\n EnumValue: [],\n ListValue: ['values'],\n ObjectValue: ['fields'],\n ObjectField: ['name', 'value'],\n Directive: ['name', 'arguments'],\n NamedType: ['name'],\n ListType: ['type'],\n NonNullType: ['type'],\n SchemaDefinition: ['directives', 'operationTypes'],\n OperationTypeDefinition: ['type'],\n ScalarTypeDefinition: ['description', 'name', 'directives'],\n ObjectTypeDefinition: ['description', 'name', 'interfaces', 'directives', 'fields'],\n FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n InputValueDefinition: ['description', 'name', 'type', 'defaultValue', 'directives'],\n InterfaceTypeDefinition: ['description', 'name', 'directives', 'fields'],\n UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n EnumValueDefinition: ['description', 'name', 'directives'],\n InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n SchemaExtension: ['directives', 'operationTypes'],\n ScalarTypeExtension: ['name', 'directives'],\n ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n InterfaceTypeExtension: ['name', 'directives', 'fields'],\n UnionTypeExtension: ['name', 'directives', 'types'],\n EnumTypeExtension: ['name', 'directives', 'values'],\n InputObjectTypeExtension: ['name', 'directives', 'fields']\n};\nexport var BREAK = {};\n/**\n * visit() will walk through an AST using a depth first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * const editedAST = visit(ast, {\n * enter(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: skip visiting this node\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * },\n * leave(node, key, parent, path, ancestors) {\n * // @return\n * // undefined: no action\n * // false: no action\n * // visitor.BREAK: stop visiting altogether\n * // null: delete this node\n * // any value: replace this node with the returned value\n * }\n * });\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to four permutations of\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node a specific kind.\n *\n * visit(ast, {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * })\n *\n * 2) Named visitors that trigger upon entering and leaving a node of\n * a specific kind.\n *\n * visit(ast, {\n * Kind: {\n * enter(node) {\n * // enter the \"Kind\" node\n * }\n * leave(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * visit(ast, {\n * enter(node) {\n * // enter any node\n * },\n * leave(node) {\n * // leave any node\n * }\n * })\n *\n * 4) Parallel visitors for entering and leaving nodes of a specific kind.\n *\n * visit(ast, {\n * enter: {\n * Kind(node) {\n * // enter the \"Kind\" node\n * }\n * },\n * leave: {\n * Kind(node) {\n * // leave the \"Kind\" node\n * }\n * }\n * })\n */\n\nexport function visit(root, visitor) {\n var visitorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : QueryDocumentKeys;\n /* eslint-disable no-undef-init */\n\n var stack = undefined;\n var inArray = Array.isArray(root);\n var keys = [root];\n var index = -1;\n var edits = [];\n var node = undefined;\n var key = undefined;\n var parent = undefined;\n var path = [];\n var ancestors = [];\n var newRoot = root;\n /* eslint-enable no-undef-init */\n\n do {\n index++;\n var isLeaving = index === keys.length;\n var isEdited = isLeaving && edits.length !== 0;\n\n if (isLeaving) {\n key = ancestors.length === 0 ? undefined : path[path.length - 1];\n node = parent;\n parent = ancestors.pop();\n\n if (isEdited) {\n if (inArray) {\n node = node.slice();\n } else {\n var clone = {};\n\n for (var k in node) {\n if (node.hasOwnProperty(k)) {\n clone[k] = node[k];\n }\n }\n\n node = clone;\n }\n\n var editOffset = 0;\n\n for (var ii = 0; ii < edits.length; ii++) {\n var editKey = edits[ii][0];\n var editValue = edits[ii][1];\n\n if (inArray) {\n editKey -= editOffset;\n }\n\n if (inArray && editValue === null) {\n node.splice(editKey, 1);\n editOffset++;\n } else {\n node[editKey] = editValue;\n }\n }\n }\n\n index = stack.index;\n keys = stack.keys;\n edits = stack.edits;\n inArray = stack.inArray;\n stack = stack.prev;\n } else {\n key = parent ? inArray ? index : keys[index] : undefined;\n node = parent ? parent[key] : newRoot;\n\n if (node === null || node === undefined) {\n continue;\n }\n\n if (parent) {\n path.push(key);\n }\n }\n\n var result = void 0;\n\n if (!Array.isArray(node)) {\n if (!isNode(node)) {\n throw new Error('Invalid AST Node: ' + JSON.stringify(node));\n }\n\n var visitFn = getVisitFn(visitor, node.kind, isLeaving);\n\n if (visitFn) {\n result = visitFn.call(visitor, node, key, parent, path, ancestors);\n\n if (result === BREAK) {\n break;\n }\n\n if (result === false) {\n if (!isLeaving) {\n path.pop();\n continue;\n }\n } else if (result !== undefined) {\n edits.push([key, result]);\n\n if (!isLeaving) {\n if (isNode(result)) {\n node = result;\n } else {\n path.pop();\n continue;\n }\n }\n }\n }\n }\n\n if (result === undefined && isEdited) {\n edits.push([key, node]);\n }\n\n if (isLeaving) {\n path.pop();\n } else {\n stack = {\n inArray: inArray,\n index: index,\n keys: keys,\n edits: edits,\n prev: stack\n };\n inArray = Array.isArray(node);\n keys = inArray ? node : visitorKeys[node.kind] || [];\n index = -1;\n edits = [];\n\n if (parent) {\n ancestors.push(parent);\n }\n\n parent = node;\n }\n } while (stack !== undefined);\n\n if (edits.length !== 0) {\n newRoot = edits[edits.length - 1][1];\n }\n\n return newRoot;\n}\n\nfunction isNode(maybeNode) {\n return Boolean(maybeNode && typeof maybeNode.kind === 'string');\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\n\nexport function visitInParallel(visitors) {\n var skipping = new Array(visitors.length);\n return {\n enter: function enter(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === false) {\n skipping[i] = node;\n } else if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined) {\n return result;\n }\n }\n }\n }\n },\n leave: function leave(node) {\n for (var i = 0; i < visitors.length; i++) {\n if (!skipping[i]) {\n var fn = getVisitFn(visitors[i], node.kind,\n /* isLeaving */\n true);\n\n if (fn) {\n var result = fn.apply(visitors[i], arguments);\n\n if (result === BREAK) {\n skipping[i] = BREAK;\n } else if (result !== undefined && result !== false) {\n return result;\n }\n }\n } else if (skipping[i] === node) {\n skipping[i] = null;\n }\n }\n }\n };\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nexport function visitWithTypeInfo(typeInfo, visitor) {\n return {\n enter: function enter(node) {\n typeInfo.enter(node);\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n false);\n\n if (fn) {\n var result = fn.apply(visitor, arguments);\n\n if (result !== undefined) {\n typeInfo.leave(node);\n\n if (isNode(result)) {\n typeInfo.enter(result);\n }\n }\n\n return result;\n }\n },\n leave: function leave(node) {\n var fn = getVisitFn(visitor, node.kind,\n /* isLeaving */\n true);\n var result;\n\n if (fn) {\n result = fn.apply(visitor, arguments);\n }\n\n typeInfo.leave(node);\n return result;\n }\n };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n */\n\nexport function getVisitFn(visitor, kind, isLeaving) {\n var kindVisitor = visitor[kind];\n\n if (kindVisitor) {\n if (!isLeaving && typeof kindVisitor === 'function') {\n // { Kind() {} }\n return kindVisitor;\n }\n\n var kindSpecificVisitor = isLeaving ? kindVisitor.leave : kindVisitor.enter;\n\n if (typeof kindSpecificVisitor === 'function') {\n // { Kind: { enter() {}, leave() {} } }\n return kindSpecificVisitor;\n }\n } else {\n var specificVisitor = isLeaving ? visitor.leave : visitor.enter;\n\n if (specificVisitor) {\n if (typeof specificVisitor === 'function') {\n // { enter() {}, leave() {} }\n return specificVisitor;\n }\n\n var specificKindVisitor = specificVisitor[kind];\n\n if (typeof specificKindVisitor === 'function') {\n // { enter: { Kind() {} }, leave: { Kind() {} } }\n return specificKindVisitor;\n }\n }\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nimport { visit } from './visitor';\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\n\nexport function print(ast) {\n return visit(ast, {\n leave: printDocASTReducer\n });\n}\nvar printDocASTReducer = {\n Name: function Name(node) {\n return node.value;\n },\n Variable: function Variable(node) {\n return '$' + node.name;\n },\n // Document\n Document: function Document(node) {\n return join(node.definitions, '\\n\\n') + '\\n';\n },\n OperationDefinition: function OperationDefinition(node) {\n var op = node.operation;\n var name = node.name;\n var varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n var directives = join(node.directives, ' ');\n var selectionSet = node.selectionSet; // Anonymous queries with no directives or variable definitions can use\n // the query short form.\n\n return !name && !directives && !varDefs && op === 'query' ? selectionSet : join([op, join([name, varDefs]), directives, selectionSet], ' ');\n },\n VariableDefinition: function VariableDefinition(_ref) {\n var variable = _ref.variable,\n type = _ref.type,\n defaultValue = _ref.defaultValue,\n directives = _ref.directives;\n return variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' '));\n },\n SelectionSet: function SelectionSet(_ref2) {\n var selections = _ref2.selections;\n return block(selections);\n },\n Field: function Field(_ref3) {\n var alias = _ref3.alias,\n name = _ref3.name,\n args = _ref3.arguments,\n directives = _ref3.directives,\n selectionSet = _ref3.selectionSet;\n return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');\n },\n Argument: function Argument(_ref4) {\n var name = _ref4.name,\n value = _ref4.value;\n return name + ': ' + value;\n },\n // Fragments\n FragmentSpread: function FragmentSpread(_ref5) {\n var name = _ref5.name,\n directives = _ref5.directives;\n return '...' + name + wrap(' ', join(directives, ' '));\n },\n InlineFragment: function InlineFragment(_ref6) {\n var typeCondition = _ref6.typeCondition,\n directives = _ref6.directives,\n selectionSet = _ref6.selectionSet;\n return join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' ');\n },\n FragmentDefinition: function FragmentDefinition(_ref7) {\n var name = _ref7.name,\n typeCondition = _ref7.typeCondition,\n variableDefinitions = _ref7.variableDefinitions,\n directives = _ref7.directives,\n selectionSet = _ref7.selectionSet;\n return (// Note: fragment variable definitions are experimental and may be changed\n // or removed in the future.\n \"fragment \".concat(name).concat(wrap('(', join(variableDefinitions, ', '), ')'), \" \") + \"on \".concat(typeCondition, \" \").concat(wrap('', join(directives, ' '), ' ')) + selectionSet\n );\n },\n // Value\n IntValue: function IntValue(_ref8) {\n var value = _ref8.value;\n return value;\n },\n FloatValue: function FloatValue(_ref9) {\n var value = _ref9.value;\n return value;\n },\n StringValue: function StringValue(_ref10, key) {\n var value = _ref10.value,\n isBlockString = _ref10.block;\n return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);\n },\n BooleanValue: function BooleanValue(_ref11) {\n var value = _ref11.value;\n return value ? 'true' : 'false';\n },\n NullValue: function NullValue() {\n return 'null';\n },\n EnumValue: function EnumValue(_ref12) {\n var value = _ref12.value;\n return value;\n },\n ListValue: function ListValue(_ref13) {\n var values = _ref13.values;\n return '[' + join(values, ', ') + ']';\n },\n ObjectValue: function ObjectValue(_ref14) {\n var fields = _ref14.fields;\n return '{' + join(fields, ', ') + '}';\n },\n ObjectField: function ObjectField(_ref15) {\n var name = _ref15.name,\n value = _ref15.value;\n return name + ': ' + value;\n },\n // Directive\n Directive: function Directive(_ref16) {\n var name = _ref16.name,\n args = _ref16.arguments;\n return '@' + name + wrap('(', join(args, ', '), ')');\n },\n // Type\n NamedType: function NamedType(_ref17) {\n var name = _ref17.name;\n return name;\n },\n ListType: function ListType(_ref18) {\n var type = _ref18.type;\n return '[' + type + ']';\n },\n NonNullType: function NonNullType(_ref19) {\n var type = _ref19.type;\n return type + '!';\n },\n // Type System Definitions\n SchemaDefinition: function SchemaDefinition(_ref20) {\n var directives = _ref20.directives,\n operationTypes = _ref20.operationTypes;\n return join(['schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n OperationTypeDefinition: function OperationTypeDefinition(_ref21) {\n var operation = _ref21.operation,\n type = _ref21.type;\n return operation + ': ' + type;\n },\n ScalarTypeDefinition: addDescription(function (_ref22) {\n var name = _ref22.name,\n directives = _ref22.directives;\n return join(['scalar', name, join(directives, ' ')], ' ');\n }),\n ObjectTypeDefinition: addDescription(function (_ref23) {\n var name = _ref23.name,\n interfaces = _ref23.interfaces,\n directives = _ref23.directives,\n fields = _ref23.fields;\n return join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n }),\n FieldDefinition: addDescription(function (_ref24) {\n var name = _ref24.name,\n args = _ref24.arguments,\n type = _ref24.type,\n directives = _ref24.directives;\n return name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ': ' + type + wrap(' ', join(directives, ' '));\n }),\n InputValueDefinition: addDescription(function (_ref25) {\n var name = _ref25.name,\n type = _ref25.type,\n defaultValue = _ref25.defaultValue,\n directives = _ref25.directives;\n return join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' ');\n }),\n InterfaceTypeDefinition: addDescription(function (_ref26) {\n var name = _ref26.name,\n directives = _ref26.directives,\n fields = _ref26.fields;\n return join(['interface', name, join(directives, ' '), block(fields)], ' ');\n }),\n UnionTypeDefinition: addDescription(function (_ref27) {\n var name = _ref27.name,\n directives = _ref27.directives,\n types = _ref27.types;\n return join(['union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n }),\n EnumTypeDefinition: addDescription(function (_ref28) {\n var name = _ref28.name,\n directives = _ref28.directives,\n values = _ref28.values;\n return join(['enum', name, join(directives, ' '), block(values)], ' ');\n }),\n EnumValueDefinition: addDescription(function (_ref29) {\n var name = _ref29.name,\n directives = _ref29.directives;\n return join([name, join(directives, ' ')], ' ');\n }),\n InputObjectTypeDefinition: addDescription(function (_ref30) {\n var name = _ref30.name,\n directives = _ref30.directives,\n fields = _ref30.fields;\n return join(['input', name, join(directives, ' '), block(fields)], ' ');\n }),\n DirectiveDefinition: addDescription(function (_ref31) {\n var name = _ref31.name,\n args = _ref31.arguments,\n locations = _ref31.locations;\n return 'directive @' + name + (args.every(function (arg) {\n return arg.indexOf('\\n') === -1;\n }) ? wrap('(', join(args, ', '), ')') : wrap('(\\n', indent(join(args, '\\n')), '\\n)')) + ' on ' + join(locations, ' | ');\n }),\n SchemaExtension: function SchemaExtension(_ref32) {\n var directives = _ref32.directives,\n operationTypes = _ref32.operationTypes;\n return join(['extend schema', join(directives, ' '), block(operationTypes)], ' ');\n },\n ScalarTypeExtension: function ScalarTypeExtension(_ref33) {\n var name = _ref33.name,\n directives = _ref33.directives;\n return join(['extend scalar', name, join(directives, ' ')], ' ');\n },\n ObjectTypeExtension: function ObjectTypeExtension(_ref34) {\n var name = _ref34.name,\n interfaces = _ref34.interfaces,\n directives = _ref34.directives,\n fields = _ref34.fields;\n return join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' ');\n },\n InterfaceTypeExtension: function InterfaceTypeExtension(_ref35) {\n var name = _ref35.name,\n directives = _ref35.directives,\n fields = _ref35.fields;\n return join(['extend interface', name, join(directives, ' '), block(fields)], ' ');\n },\n UnionTypeExtension: function UnionTypeExtension(_ref36) {\n var name = _ref36.name,\n directives = _ref36.directives,\n types = _ref36.types;\n return join(['extend union', name, join(directives, ' '), types && types.length !== 0 ? '= ' + join(types, ' | ') : ''], ' ');\n },\n EnumTypeExtension: function EnumTypeExtension(_ref37) {\n var name = _ref37.name,\n directives = _ref37.directives,\n values = _ref37.values;\n return join(['extend enum', name, join(directives, ' '), block(values)], ' ');\n },\n InputObjectTypeExtension: function InputObjectTypeExtension(_ref38) {\n var name = _ref38.name,\n directives = _ref38.directives,\n fields = _ref38.fields;\n return join(['extend input', name, join(directives, ' '), block(fields)], ' ');\n }\n};\n\nfunction addDescription(cb) {\n return function (node) {\n return join([node.description, cb(node)], '\\n');\n };\n}\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\n\nfunction join(maybeArray, separator) {\n return maybeArray ? maybeArray.filter(function (x) {\n return x;\n }).join(separator || '') : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\n\n\nfunction block(array) {\n return array && array.length !== 0 ? '{\\n' + indent(join(array, '\\n')) + '\\n}' : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\n\n\nfunction wrap(start, maybeString, end) {\n return maybeString ? start + maybeString + (end || '') : '';\n}\n\nfunction indent(maybeString) {\n return maybeString && ' ' + maybeString.replace(/\\n/g, '\\n ');\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\n\n\nfunction printBlockString(value, isDescription) {\n var escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1 ? \"\\\"\\\"\\\"\".concat(escaped.replace(/\"$/, '\"\\n'), \"\\\"\\\"\\\"\") : \"\\\"\\\"\\\"\\n\".concat(isDescription ? escaped : indent(escaped), \"\\n\\\"\\\"\\\"\");\n}","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Used to print values in error messages.\n */\n\n\nexport default function inspect(value) {\n return value && _typeof(value) === 'object' ? typeof value.inspect === 'function' ? value.inspect() : Array.isArray(value) ? '[' + value.map(inspect).join(', ') + ']' : '{' + Object.keys(value).map(function (k) {\n return \"\".concat(k, \": \").concat(inspect(value[k]));\n }).join(', ') + '}' : typeof value === 'string' ? '\"' + value + '\"' : typeof value === 'function' ? \"[function \".concat(value.name, \"]\") : String(value);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nexport default function invariant(condition, message) {\n /* istanbul ignore else */\n if (!condition) {\n throw new Error(message);\n }\n}","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n\nimport invariant from '../jsutils/invariant';\nimport defineToStringTag from '../jsutils/defineToStringTag';\n/**\n * A representation of source input to GraphQL.\n * `name` and `locationOffset` are optional. They are useful for clients who\n * store GraphQL documents in source files; for example, if the GraphQL input\n * starts at line 40 in a file named Foo.graphql, it might be useful for name to\n * be \"Foo.graphql\" and location to be `{ line: 40, column: 0 }`.\n * line and column in locationOffset are 1-indexed\n */\n\nexport var Source = function Source(body, name, locationOffset) {\n _defineProperty(this, \"body\", void 0);\n\n _defineProperty(this, \"name\", void 0);\n\n _defineProperty(this, \"locationOffset\", void 0);\n\n this.body = body;\n this.name = name || 'GraphQL request';\n this.locationOffset = locationOffset || {\n line: 1,\n column: 1\n };\n !(this.locationOffset.line > 0) ? invariant(0, 'line in locationOffset is 1-indexed and must be positive') : void 0;\n !(this.locationOffset.column > 0) ? invariant(0, 'column in locationOffset is 1-indexed and must be positive') : void 0;\n}; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported\n\ndefineToStringTag(Source);","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The `applyToStringTag()` function checks first to see if the runtime\n * supports the `Symbol` class and then if the `Symbol.toStringTag` constant\n * is defined as a `Symbol` instance. If both conditions are met, the\n * Symbol.toStringTag property is defined as a getter that returns the\n * supplied class constructor's name.\n *\n * @method applyToStringTag\n *\n * @param {Class} classObject a class such as Object, String, Number but\n * typically one of your own creation through the class keyword; `class A {}`,\n * for example.\n */\nexport default function applyToStringTag(classObject) {\n if (typeof Symbol === 'function' && Symbol.toStringTag) {\n Object.defineProperty(classObject.prototype, Symbol.toStringTag, {\n get: function get() {\n return this.constructor.name;\n }\n });\n }\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { GraphQLError } from './GraphQLError';\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\n\nexport function syntaxError(source, position, description) {\n return new GraphQLError(\"Syntax Error: \".concat(description), undefined, source, [position]);\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * Coffeescript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n */\nexport default function blockStringValue(rawString) {\n // Expand a block string's raw value into independent lines.\n var lines = rawString.split(/\\r\\n|[\\n\\r]/g); // Remove common indentation from all lines but first.\n\n var commonIndent = null;\n\n for (var i = 1; i < lines.length; i++) {\n var line = lines[i];\n var indent = leadingWhitespace(line);\n\n if (indent < line.length && (commonIndent === null || indent < commonIndent)) {\n commonIndent = indent;\n\n if (commonIndent === 0) {\n break;\n }\n }\n }\n\n if (commonIndent) {\n for (var _i = 1; _i < lines.length; _i++) {\n lines[_i] = lines[_i].slice(commonIndent);\n }\n } // Remove leading and trailing blank lines.\n\n\n while (lines.length > 0 && isBlank(lines[0])) {\n lines.shift();\n }\n\n while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n lines.pop();\n } // Return a string of the lines joined with U+000A.\n\n\n return lines.join('\\n');\n}\n\nfunction leadingWhitespace(str) {\n var i = 0;\n\n while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n i++;\n }\n\n return i;\n}\n\nfunction isBlank(str) {\n return leadingWhitespace(str) === str.length;\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { syntaxError } from '../error';\nimport blockStringValue from './blockStringValue';\n/**\n * Given a Source object, this returns a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\n\nexport function createLexer(source, options) {\n var startOfFileToken = new Tok(TokenKind.SOF, 0, 0, 0, 0, null);\n var lexer = {\n source: source,\n options: options,\n lastToken: startOfFileToken,\n token: startOfFileToken,\n line: 1,\n lineStart: 0,\n advance: advanceLexer,\n lookahead: lookahead\n };\n return lexer;\n}\n\nfunction advanceLexer() {\n this.lastToken = this.token;\n var token = this.token = this.lookahead();\n return token;\n}\n\nfunction lookahead() {\n var token = this.token;\n\n if (token.kind !== TokenKind.EOF) {\n do {\n // Note: next is only mutable during parsing, so we cast to allow this.\n token = token.next || (token.next = readToken(this, token));\n } while (token.kind === TokenKind.COMMENT);\n }\n\n return token;\n}\n/**\n * The return type of createLexer.\n */\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\n\n\nexport var TokenKind = Object.freeze({\n SOF: '',\n EOF: '',\n BANG: '!',\n DOLLAR: '$',\n AMP: '&',\n PAREN_L: '(',\n PAREN_R: ')',\n SPREAD: '...',\n COLON: ':',\n EQUALS: '=',\n AT: '@',\n BRACKET_L: '[',\n BRACKET_R: ']',\n BRACE_L: '{',\n PIPE: '|',\n BRACE_R: '}',\n NAME: 'Name',\n INT: 'Int',\n FLOAT: 'Float',\n STRING: 'String',\n BLOCK_STRING: 'BlockString',\n COMMENT: 'Comment'\n});\n/**\n * The enum type representing the token kinds values.\n */\n\n/**\n * A helper function to describe a token as a string for debugging\n */\n\nexport function getTokenDesc(token) {\n var value = token.value;\n return value ? \"\".concat(token.kind, \" \\\"\").concat(value, \"\\\"\") : token.kind;\n}\nvar charCodeAt = String.prototype.charCodeAt;\nvar slice = String.prototype.slice;\n/**\n * Helper function for constructing the Token object.\n */\n\nfunction Tok(kind, start, end, line, column, prev, value) {\n this.kind = kind;\n this.start = start;\n this.end = end;\n this.line = line;\n this.column = column;\n this.value = value;\n this.prev = prev;\n this.next = null;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nTok.prototype.toJSON = Tok.prototype.inspect = function toJSON() {\n return {\n kind: this.kind,\n value: this.value,\n line: this.line,\n column: this.column\n };\n};\n\nfunction printCharCode(code) {\n return (// NaN/undefined represents access beyond the end of the file.\n isNaN(code) ? TokenKind.EOF : // Trust JSON for ASCII.\n code < 0x007f ? JSON.stringify(String.fromCharCode(code)) : // Otherwise print the escaped form.\n \"\\\"\\\\u\".concat(('00' + code.toString(16).toUpperCase()).slice(-4), \"\\\"\")\n );\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace and comments until it finds the next lexable\n * token, then lexes punctuators immediately or calls the appropriate helper\n * function for more complicated tokens.\n */\n\n\nfunction readToken(lexer, prev) {\n var source = lexer.source;\n var body = source.body;\n var bodyLength = body.length;\n var pos = positionAfterWhitespace(body, prev.end, lexer);\n var line = lexer.line;\n var col = 1 + pos - lexer.lineStart;\n\n if (pos >= bodyLength) {\n return new Tok(TokenKind.EOF, bodyLength, bodyLength, line, col, prev);\n }\n\n var code = charCodeAt.call(body, pos); // SourceCharacter\n\n switch (code) {\n // !\n case 33:\n return new Tok(TokenKind.BANG, pos, pos + 1, line, col, prev);\n // #\n\n case 35:\n return readComment(source, pos, line, col, prev);\n // $\n\n case 36:\n return new Tok(TokenKind.DOLLAR, pos, pos + 1, line, col, prev);\n // &\n\n case 38:\n return new Tok(TokenKind.AMP, pos, pos + 1, line, col, prev);\n // (\n\n case 40:\n return new Tok(TokenKind.PAREN_L, pos, pos + 1, line, col, prev);\n // )\n\n case 41:\n return new Tok(TokenKind.PAREN_R, pos, pos + 1, line, col, prev);\n // .\n\n case 46:\n if (charCodeAt.call(body, pos + 1) === 46 && charCodeAt.call(body, pos + 2) === 46) {\n return new Tok(TokenKind.SPREAD, pos, pos + 3, line, col, prev);\n }\n\n break;\n // :\n\n case 58:\n return new Tok(TokenKind.COLON, pos, pos + 1, line, col, prev);\n // =\n\n case 61:\n return new Tok(TokenKind.EQUALS, pos, pos + 1, line, col, prev);\n // @\n\n case 64:\n return new Tok(TokenKind.AT, pos, pos + 1, line, col, prev);\n // [\n\n case 91:\n return new Tok(TokenKind.BRACKET_L, pos, pos + 1, line, col, prev);\n // ]\n\n case 93:\n return new Tok(TokenKind.BRACKET_R, pos, pos + 1, line, col, prev);\n // {\n\n case 123:\n return new Tok(TokenKind.BRACE_L, pos, pos + 1, line, col, prev);\n // |\n\n case 124:\n return new Tok(TokenKind.PIPE, pos, pos + 1, line, col, prev);\n // }\n\n case 125:\n return new Tok(TokenKind.BRACE_R, pos, pos + 1, line, col, prev);\n // A-Z _ a-z\n\n case 65:\n case 66:\n case 67:\n case 68:\n case 69:\n case 70:\n case 71:\n case 72:\n case 73:\n case 74:\n case 75:\n case 76:\n case 77:\n case 78:\n case 79:\n case 80:\n case 81:\n case 82:\n case 83:\n case 84:\n case 85:\n case 86:\n case 87:\n case 88:\n case 89:\n case 90:\n case 95:\n case 97:\n case 98:\n case 99:\n case 100:\n case 101:\n case 102:\n case 103:\n case 104:\n case 105:\n case 106:\n case 107:\n case 108:\n case 109:\n case 110:\n case 111:\n case 112:\n case 113:\n case 114:\n case 115:\n case 116:\n case 117:\n case 118:\n case 119:\n case 120:\n case 121:\n case 122:\n return readName(source, pos, line, col, prev);\n // - 0-9\n\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n return readNumber(source, pos, code, line, col, prev);\n // \"\n\n case 34:\n if (charCodeAt.call(body, pos + 1) === 34 && charCodeAt.call(body, pos + 2) === 34) {\n return readBlockString(source, pos, line, col, prev);\n }\n\n return readString(source, pos, line, col, prev);\n }\n\n throw syntaxError(source, pos, unexpectedCharacterMessage(code));\n}\n/**\n * Report a message that an unexpected character was encountered.\n */\n\n\nfunction unexpectedCharacterMessage(code) {\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n return \"Cannot contain the invalid character \".concat(printCharCode(code), \".\");\n }\n\n if (code === 39) {\n // '\n return \"Unexpected single quote character ('), did you mean to use \" + 'a double quote (\")?';\n }\n\n return \"Cannot parse the unexpected character \".concat(printCharCode(code), \".\");\n}\n/**\n * Reads from body starting at startPosition until it finds a non-whitespace\n * or commented character, then returns the position of that character for\n * lexing.\n */\n\n\nfunction positionAfterWhitespace(body, startPosition, lexer) {\n var bodyLength = body.length;\n var position = startPosition;\n\n while (position < bodyLength) {\n var code = charCodeAt.call(body, position); // tab | space | comma | BOM\n\n if (code === 9 || code === 32 || code === 44 || code === 0xfeff) {\n ++position;\n } else if (code === 10) {\n // new line\n ++position;\n ++lexer.line;\n lexer.lineStart = position;\n } else if (code === 13) {\n // carriage return\n if (charCodeAt.call(body, position + 1) === 10) {\n position += 2;\n } else {\n ++position;\n }\n\n ++lexer.line;\n lexer.lineStart = position;\n } else {\n break;\n }\n }\n\n return position;\n}\n/**\n * Reads a comment token from the source file.\n *\n * #[\\u0009\\u0020-\\uFFFF]*\n */\n\n\nfunction readComment(source, start, line, col, prev) {\n var body = source.body;\n var code;\n var position = start;\n\n do {\n code = charCodeAt.call(body, ++position);\n } while (code !== null && ( // SourceCharacter but not LineTerminator\n code > 0x001f || code === 0x0009));\n\n return new Tok(TokenKind.COMMENT, start, position, line, col, prev, slice.call(body, start + 1, position));\n}\n/**\n * Reads a number token from the source file, either a float\n * or an int depending on whether a decimal point appears.\n *\n * Int: -?(0|[1-9][0-9]*)\n * Float: -?(0|[1-9][0-9]*)(\\.[0-9]+)?((E|e)(+|-)?[0-9]+)?\n */\n\n\nfunction readNumber(source, start, firstCode, line, col, prev) {\n var body = source.body;\n var code = firstCode;\n var position = start;\n var isFloat = false;\n\n if (code === 45) {\n // -\n code = charCodeAt.call(body, ++position);\n }\n\n if (code === 48) {\n // 0\n code = charCodeAt.call(body, ++position);\n\n if (code >= 48 && code <= 57) {\n throw syntaxError(source, position, \"Invalid number, unexpected digit after 0: \".concat(printCharCode(code), \".\"));\n }\n } else {\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 46) {\n // .\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n position = readDigits(source, position, code);\n code = charCodeAt.call(body, position);\n }\n\n if (code === 69 || code === 101) {\n // E e\n isFloat = true;\n code = charCodeAt.call(body, ++position);\n\n if (code === 43 || code === 45) {\n // + -\n code = charCodeAt.call(body, ++position);\n }\n\n position = readDigits(source, position, code);\n }\n\n return new Tok(isFloat ? TokenKind.FLOAT : TokenKind.INT, start, position, line, col, prev, slice.call(body, start, position));\n}\n/**\n * Returns the new position in the source after reading digits.\n */\n\n\nfunction readDigits(source, start, firstCode) {\n var body = source.body;\n var position = start;\n var code = firstCode;\n\n if (code >= 48 && code <= 57) {\n // 0 - 9\n do {\n code = charCodeAt.call(body, ++position);\n } while (code >= 48 && code <= 57); // 0 - 9\n\n\n return position;\n }\n\n throw syntaxError(source, position, \"Invalid number, expected digit but got: \".concat(printCharCode(code), \".\"));\n}\n/**\n * Reads a string token from the source file.\n *\n * \"([^\"\\\\\\u000A\\u000D]|(\\\\(u[0-9a-fA-F]{4}|[\"\\\\/bfnrt])))*\"\n */\n\n\nfunction readString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 1;\n var chunkStart = position;\n var code = 0;\n var value = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null && // not LineTerminator\n code !== 0x000a && code !== 0x000d) {\n // Closing Quote (\")\n if (code === 34) {\n value += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.STRING, start, position + 1, line, col, prev, value);\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n }\n\n ++position;\n\n if (code === 92) {\n // \\\n value += slice.call(body, chunkStart, position - 1);\n code = charCodeAt.call(body, position);\n\n switch (code) {\n case 34:\n value += '\"';\n break;\n\n case 47:\n value += '/';\n break;\n\n case 92:\n value += '\\\\';\n break;\n\n case 98:\n value += '\\b';\n break;\n\n case 102:\n value += '\\f';\n break;\n\n case 110:\n value += '\\n';\n break;\n\n case 114:\n value += '\\r';\n break;\n\n case 116:\n value += '\\t';\n break;\n\n case 117:\n // u\n var charCode = uniCharCode(charCodeAt.call(body, position + 1), charCodeAt.call(body, position + 2), charCodeAt.call(body, position + 3), charCodeAt.call(body, position + 4));\n\n if (charCode < 0) {\n throw syntaxError(source, position, 'Invalid character escape sequence: ' + \"\\\\u\".concat(body.slice(position + 1, position + 5), \".\"));\n }\n\n value += String.fromCharCode(charCode);\n position += 4;\n break;\n\n default:\n throw syntaxError(source, position, \"Invalid character escape sequence: \\\\\".concat(String.fromCharCode(code), \".\"));\n }\n\n ++position;\n chunkStart = position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Reads a block string token from the source file.\n *\n * \"\"\"(\"?\"?(\\\\\"\"\"|\\\\(?!=\"\"\")|[^\"\\\\]))*\"\"\"\n */\n\n\nfunction readBlockString(source, start, line, col, prev) {\n var body = source.body;\n var position = start + 3;\n var chunkStart = position;\n var code = 0;\n var rawValue = '';\n\n while (position < body.length && (code = charCodeAt.call(body, position)) !== null) {\n // Closing Triple-Quote (\"\"\")\n if (code === 34 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34) {\n rawValue += slice.call(body, chunkStart, position);\n return new Tok(TokenKind.BLOCK_STRING, start, position + 3, line, col, prev, blockStringValue(rawValue));\n } // SourceCharacter\n\n\n if (code < 0x0020 && code !== 0x0009 && code !== 0x000a && code !== 0x000d) {\n throw syntaxError(source, position, \"Invalid character within String: \".concat(printCharCode(code), \".\"));\n } // Escape Triple-Quote (\\\"\"\")\n\n\n if (code === 92 && charCodeAt.call(body, position + 1) === 34 && charCodeAt.call(body, position + 2) === 34 && charCodeAt.call(body, position + 3) === 34) {\n rawValue += slice.call(body, chunkStart, position) + '\"\"\"';\n position += 4;\n chunkStart = position;\n } else {\n ++position;\n }\n }\n\n throw syntaxError(source, position, 'Unterminated string.');\n}\n/**\n * Converts four hexidecimal chars to the integer that the\n * string represents. For example, uniCharCode('0','0','0','f')\n * will return 15, and uniCharCode('0','0','f','f') returns 255.\n *\n * Returns a negative number on error, if a char was invalid.\n *\n * This is implemented by noting that char2hex() returns -1 on error,\n * which means the result of ORing the char2hex() will also be negative.\n */\n\n\nfunction uniCharCode(a, b, c, d) {\n return char2hex(a) << 12 | char2hex(b) << 8 | char2hex(c) << 4 | char2hex(d);\n}\n/**\n * Converts a hex character to its integer value.\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 on error.\n */\n\n\nfunction char2hex(a) {\n return a >= 48 && a <= 57 ? a - 48 // 0-9\n : a >= 65 && a <= 70 ? a - 55 // A-F\n : a >= 97 && a <= 102 ? a - 87 // a-f\n : -1;\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * [_A-Za-z][_0-9A-Za-z]*\n */\n\n\nfunction readName(source, start, line, col, prev) {\n var body = source.body;\n var bodyLength = body.length;\n var position = start + 1;\n var code = 0;\n\n while (position !== bodyLength && (code = charCodeAt.call(body, position)) !== null && (code === 95 || // _\n code >= 48 && code <= 57 || // 0-9\n code >= 65 && code <= 90 || // A-Z\n code >= 97 && code <= 122) // a-z\n ) {\n ++position;\n }\n\n return new Tok(TokenKind.NAME, start, position, line, col, prev, slice.call(body, start, position));\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nexport var Kind = Object.freeze({\n // Name\n NAME: 'Name',\n // Document\n DOCUMENT: 'Document',\n OPERATION_DEFINITION: 'OperationDefinition',\n VARIABLE_DEFINITION: 'VariableDefinition',\n SELECTION_SET: 'SelectionSet',\n FIELD: 'Field',\n ARGUMENT: 'Argument',\n // Fragments\n FRAGMENT_SPREAD: 'FragmentSpread',\n INLINE_FRAGMENT: 'InlineFragment',\n FRAGMENT_DEFINITION: 'FragmentDefinition',\n // Values\n VARIABLE: 'Variable',\n INT: 'IntValue',\n FLOAT: 'FloatValue',\n STRING: 'StringValue',\n BOOLEAN: 'BooleanValue',\n NULL: 'NullValue',\n ENUM: 'EnumValue',\n LIST: 'ListValue',\n OBJECT: 'ObjectValue',\n OBJECT_FIELD: 'ObjectField',\n // Directives\n DIRECTIVE: 'Directive',\n // Types\n NAMED_TYPE: 'NamedType',\n LIST_TYPE: 'ListType',\n NON_NULL_TYPE: 'NonNullType',\n // Type System Definitions\n SCHEMA_DEFINITION: 'SchemaDefinition',\n OPERATION_TYPE_DEFINITION: 'OperationTypeDefinition',\n // Type Definitions\n SCALAR_TYPE_DEFINITION: 'ScalarTypeDefinition',\n OBJECT_TYPE_DEFINITION: 'ObjectTypeDefinition',\n FIELD_DEFINITION: 'FieldDefinition',\n INPUT_VALUE_DEFINITION: 'InputValueDefinition',\n INTERFACE_TYPE_DEFINITION: 'InterfaceTypeDefinition',\n UNION_TYPE_DEFINITION: 'UnionTypeDefinition',\n ENUM_TYPE_DEFINITION: 'EnumTypeDefinition',\n ENUM_VALUE_DEFINITION: 'EnumValueDefinition',\n INPUT_OBJECT_TYPE_DEFINITION: 'InputObjectTypeDefinition',\n // Directive Definitions\n DIRECTIVE_DEFINITION: 'DirectiveDefinition',\n // Type System Extensions\n SCHEMA_EXTENSION: 'SchemaExtension',\n // Type Extensions\n SCALAR_TYPE_EXTENSION: 'ScalarTypeExtension',\n OBJECT_TYPE_EXTENSION: 'ObjectTypeExtension',\n INTERFACE_TYPE_EXTENSION: 'InterfaceTypeExtension',\n UNION_TYPE_EXTENSION: 'UnionTypeExtension',\n ENUM_TYPE_EXTENSION: 'EnumTypeExtension',\n INPUT_OBJECT_TYPE_EXTENSION: 'InputObjectTypeExtension'\n});\n/**\n * The enum type representing the possible kind values of AST nodes.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * The set of allowed directive location values.\n */\nexport var DirectiveLocation = Object.freeze({\n // Request Definitions\n QUERY: 'QUERY',\n MUTATION: 'MUTATION',\n SUBSCRIPTION: 'SUBSCRIPTION',\n FIELD: 'FIELD',\n FRAGMENT_DEFINITION: 'FRAGMENT_DEFINITION',\n FRAGMENT_SPREAD: 'FRAGMENT_SPREAD',\n INLINE_FRAGMENT: 'INLINE_FRAGMENT',\n VARIABLE_DEFINITION: 'VARIABLE_DEFINITION',\n // Type System Definitions\n SCHEMA: 'SCHEMA',\n SCALAR: 'SCALAR',\n OBJECT: 'OBJECT',\n FIELD_DEFINITION: 'FIELD_DEFINITION',\n ARGUMENT_DEFINITION: 'ARGUMENT_DEFINITION',\n INTERFACE: 'INTERFACE',\n UNION: 'UNION',\n ENUM: 'ENUM',\n ENUM_VALUE: 'ENUM_VALUE',\n INPUT_OBJECT: 'INPUT_OBJECT',\n INPUT_FIELD_DEFINITION: 'INPUT_FIELD_DEFINITION'\n});\n/**\n * The enum type representing the directive location values.\n */","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport inspect from '../jsutils/inspect';\nimport { Source } from './source';\nimport { syntaxError } from '../error';\nimport { createLexer, TokenKind, getTokenDesc } from './lexer';\nimport { Kind } from './kinds';\nimport { DirectiveLocation } from './directiveLocation';\n/**\n * Configuration options to control parser behavior\n */\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\n\nexport function parse(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n\n if (!(sourceObj instanceof Source)) {\n throw new TypeError(\"Must provide Source. Received: \".concat(inspect(sourceObj)));\n }\n\n var lexer = createLexer(sourceObj, options || {});\n return parseDocument(lexer);\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nexport function parseValue(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var value = parseValueLiteral(lexer, false);\n expect(lexer, TokenKind.EOF);\n return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nexport function parseType(source, options) {\n var sourceObj = typeof source === 'string' ? new Source(source) : source;\n var lexer = createLexer(sourceObj, options || {});\n expect(lexer, TokenKind.SOF);\n var type = parseTypeReference(lexer);\n expect(lexer, TokenKind.EOF);\n return type;\n}\n/**\n * Converts a name lex token into a name parse node.\n */\n\nfunction parseName(lexer) {\n var token = expect(lexer, TokenKind.NAME);\n return {\n kind: Kind.NAME,\n value: token.value,\n loc: loc(lexer, token)\n };\n} // Implements the parsing rules in the Document section.\n\n/**\n * Document : Definition+\n */\n\n\nfunction parseDocument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.DOCUMENT,\n definitions: many(lexer, TokenKind.SOF, parseDefinition, TokenKind.EOF),\n loc: loc(lexer, start)\n };\n}\n/**\n * Definition :\n * - ExecutableDefinition\n * - TypeSystemDefinition\n * - TypeSystemExtension\n */\n\n\nfunction parseDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n case 'fragment':\n return parseExecutableDefinition(lexer);\n\n case 'schema':\n case 'scalar':\n case 'type':\n case 'interface':\n case 'union':\n case 'enum':\n case 'input':\n case 'directive':\n return parseTypeSystemDefinition(lexer);\n\n case 'extend':\n return parseTypeSystemExtension(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseExecutableDefinition(lexer);\n } else if (peekDescription(lexer)) {\n return parseTypeSystemDefinition(lexer);\n }\n\n throw unexpected(lexer);\n}\n/**\n * ExecutableDefinition :\n * - OperationDefinition\n * - FragmentDefinition\n */\n\n\nfunction parseExecutableDefinition(lexer) {\n if (peek(lexer, TokenKind.NAME)) {\n switch (lexer.token.value) {\n case 'query':\n case 'mutation':\n case 'subscription':\n return parseOperationDefinition(lexer);\n\n case 'fragment':\n return parseFragmentDefinition(lexer);\n }\n } else if (peek(lexer, TokenKind.BRACE_L)) {\n return parseOperationDefinition(lexer);\n }\n\n throw unexpected(lexer);\n} // Implements the parsing rules in the Operations section.\n\n/**\n * OperationDefinition :\n * - SelectionSet\n * - OperationType Name? VariableDefinitions? Directives? SelectionSet\n */\n\n\nfunction parseOperationDefinition(lexer) {\n var start = lexer.token;\n\n if (peek(lexer, TokenKind.BRACE_L)) {\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: 'query',\n name: undefined,\n variableDefinitions: [],\n directives: [],\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n var operation = parseOperationType(lexer);\n var name;\n\n if (peek(lexer, TokenKind.NAME)) {\n name = parseName(lexer);\n }\n\n return {\n kind: Kind.OPERATION_DEFINITION,\n operation: operation,\n name: name,\n variableDefinitions: parseVariableDefinitions(lexer),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationType : one of query mutation subscription\n */\n\n\nfunction parseOperationType(lexer) {\n var operationToken = expect(lexer, TokenKind.NAME);\n\n switch (operationToken.value) {\n case 'query':\n return 'query';\n\n case 'mutation':\n return 'mutation';\n\n case 'subscription':\n return 'subscription';\n }\n\n throw unexpected(lexer, operationToken);\n}\n/**\n * VariableDefinitions : ( VariableDefinition+ )\n */\n\n\nfunction parseVariableDefinitions(lexer) {\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, parseVariableDefinition, TokenKind.PAREN_R) : [];\n}\n/**\n * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseVariableDefinition(lexer) {\n var start = lexer.token;\n\n if (lexer.options.experimentalVariableDefinitionDirectives) {\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n directives: parseDirectives(lexer, true),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.VARIABLE_DEFINITION,\n variable: parseVariable(lexer),\n type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),\n defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Variable : $ Name\n */\n\n\nfunction parseVariable(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.DOLLAR);\n return {\n kind: Kind.VARIABLE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * SelectionSet : { Selection+ }\n */\n\n\nfunction parseSelectionSet(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.SELECTION_SET,\n selections: many(lexer, TokenKind.BRACE_L, parseSelection, TokenKind.BRACE_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * Selection :\n * - Field\n * - FragmentSpread\n * - InlineFragment\n */\n\n\nfunction parseSelection(lexer) {\n return peek(lexer, TokenKind.SPREAD) ? parseFragment(lexer) : parseField(lexer);\n}\n/**\n * Field : Alias? Name Arguments? Directives? SelectionSet?\n *\n * Alias : Name :\n */\n\n\nfunction parseField(lexer) {\n var start = lexer.token;\n var nameOrAlias = parseName(lexer);\n var alias;\n var name;\n\n if (skip(lexer, TokenKind.COLON)) {\n alias = nameOrAlias;\n name = parseName(lexer);\n } else {\n name = nameOrAlias;\n }\n\n return {\n kind: Kind.FIELD,\n alias: alias,\n name: name,\n arguments: parseArguments(lexer, false),\n directives: parseDirectives(lexer, false),\n selectionSet: peek(lexer, TokenKind.BRACE_L) ? parseSelectionSet(lexer) : undefined,\n loc: loc(lexer, start)\n };\n}\n/**\n * Arguments[Const] : ( Argument[?Const]+ )\n */\n\n\nfunction parseArguments(lexer, isConst) {\n var item = isConst ? parseConstArgument : parseArgument;\n return peek(lexer, TokenKind.PAREN_L) ? many(lexer, TokenKind.PAREN_L, item, TokenKind.PAREN_R) : [];\n}\n/**\n * Argument[Const] : Name : Value[?Const]\n */\n\n\nfunction parseArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, false)),\n loc: loc(lexer, start)\n };\n}\n\nfunction parseConstArgument(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.ARGUMENT,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseConstValue(lexer)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Fragments section.\n\n/**\n * Corresponds to both FragmentSpread and InlineFragment in the spec.\n *\n * FragmentSpread : ... FragmentName Directives?\n *\n * InlineFragment : ... TypeCondition? Directives? SelectionSet\n */\n\n\nfunction parseFragment(lexer) {\n var start = lexer.token;\n expect(lexer, TokenKind.SPREAD);\n\n if (peek(lexer, TokenKind.NAME) && lexer.token.value !== 'on') {\n return {\n kind: Kind.FRAGMENT_SPREAD,\n name: parseFragmentName(lexer),\n directives: parseDirectives(lexer, false),\n loc: loc(lexer, start)\n };\n }\n\n var typeCondition;\n\n if (lexer.token.value === 'on') {\n lexer.advance();\n typeCondition = parseNamedType(lexer);\n }\n\n return {\n kind: Kind.INLINE_FRAGMENT,\n typeCondition: typeCondition,\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentDefinition :\n * - fragment FragmentName on TypeCondition Directives? SelectionSet\n *\n * TypeCondition : NamedType\n */\n\n\nfunction parseFragmentDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'fragment'); // Experimental support for defining variables within fragments changes\n // the grammar of FragmentDefinition:\n // - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n if (lexer.options.experimentalFragmentVariables) {\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n variableDefinitions: parseVariableDefinitions(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n }\n\n return {\n kind: Kind.FRAGMENT_DEFINITION,\n name: parseFragmentName(lexer),\n typeCondition: (expectKeyword(lexer, 'on'), parseNamedType(lexer)),\n directives: parseDirectives(lexer, false),\n selectionSet: parseSelectionSet(lexer),\n loc: loc(lexer, start)\n };\n}\n/**\n * FragmentName : Name but not `on`\n */\n\n\nfunction parseFragmentName(lexer) {\n if (lexer.token.value === 'on') {\n throw unexpected(lexer);\n }\n\n return parseName(lexer);\n} // Implements the parsing rules in the Values section.\n\n/**\n * Value[Const] :\n * - [~Const] Variable\n * - IntValue\n * - FloatValue\n * - StringValue\n * - BooleanValue\n * - NullValue\n * - EnumValue\n * - ListValue[?Const]\n * - ObjectValue[?Const]\n *\n * BooleanValue : one of `true` `false`\n *\n * NullValue : `null`\n *\n * EnumValue : Name but not `true`, `false` or `null`\n */\n\n\nfunction parseValueLiteral(lexer, isConst) {\n var token = lexer.token;\n\n switch (token.kind) {\n case TokenKind.BRACKET_L:\n return parseList(lexer, isConst);\n\n case TokenKind.BRACE_L:\n return parseObject(lexer, isConst);\n\n case TokenKind.INT:\n lexer.advance();\n return {\n kind: Kind.INT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.FLOAT:\n lexer.advance();\n return {\n kind: Kind.FLOAT,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.STRING:\n case TokenKind.BLOCK_STRING:\n return parseStringLiteral(lexer);\n\n case TokenKind.NAME:\n if (token.value === 'true' || token.value === 'false') {\n lexer.advance();\n return {\n kind: Kind.BOOLEAN,\n value: token.value === 'true',\n loc: loc(lexer, token)\n };\n } else if (token.value === 'null') {\n lexer.advance();\n return {\n kind: Kind.NULL,\n loc: loc(lexer, token)\n };\n }\n\n lexer.advance();\n return {\n kind: Kind.ENUM,\n value: token.value,\n loc: loc(lexer, token)\n };\n\n case TokenKind.DOLLAR:\n if (!isConst) {\n return parseVariable(lexer);\n }\n\n break;\n }\n\n throw unexpected(lexer);\n}\n\nfunction parseStringLiteral(lexer) {\n var token = lexer.token;\n lexer.advance();\n return {\n kind: Kind.STRING,\n value: token.value,\n block: token.kind === TokenKind.BLOCK_STRING,\n loc: loc(lexer, token)\n };\n}\n\nexport function parseConstValue(lexer) {\n return parseValueLiteral(lexer, true);\n}\n\nfunction parseValueValue(lexer) {\n return parseValueLiteral(lexer, false);\n}\n/**\n * ListValue[Const] :\n * - [ ]\n * - [ Value[?Const]+ ]\n */\n\n\nfunction parseList(lexer, isConst) {\n var start = lexer.token;\n var item = isConst ? parseConstValue : parseValueValue;\n return {\n kind: Kind.LIST,\n values: any(lexer, TokenKind.BRACKET_L, item, TokenKind.BRACKET_R),\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectValue[Const] :\n * - { }\n * - { ObjectField[?Const]+ }\n */\n\n\nfunction parseObject(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.BRACE_L);\n var fields = [];\n\n while (!skip(lexer, TokenKind.BRACE_R)) {\n fields.push(parseObjectField(lexer, isConst));\n }\n\n return {\n kind: Kind.OBJECT,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectField[Const] : Name : Value[?Const]\n */\n\n\nfunction parseObjectField(lexer, isConst) {\n var start = lexer.token;\n return {\n kind: Kind.OBJECT_FIELD,\n name: parseName(lexer),\n value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, isConst)),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Directives section.\n\n/**\n * Directives[Const] : Directive[?Const]+\n */\n\n\nfunction parseDirectives(lexer, isConst) {\n var directives = [];\n\n while (peek(lexer, TokenKind.AT)) {\n directives.push(parseDirective(lexer, isConst));\n }\n\n return directives;\n}\n/**\n * Directive[Const] : @ Name Arguments[?Const]?\n */\n\n\nfunction parseDirective(lexer, isConst) {\n var start = lexer.token;\n expect(lexer, TokenKind.AT);\n return {\n kind: Kind.DIRECTIVE,\n name: parseName(lexer),\n arguments: parseArguments(lexer, isConst),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Types section.\n\n/**\n * Type :\n * - NamedType\n * - ListType\n * - NonNullType\n */\n\n\nexport function parseTypeReference(lexer) {\n var start = lexer.token;\n var type;\n\n if (skip(lexer, TokenKind.BRACKET_L)) {\n type = parseTypeReference(lexer);\n expect(lexer, TokenKind.BRACKET_R);\n type = {\n kind: Kind.LIST_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n } else {\n type = parseNamedType(lexer);\n }\n\n if (skip(lexer, TokenKind.BANG)) {\n return {\n kind: Kind.NON_NULL_TYPE,\n type: type,\n loc: loc(lexer, start)\n };\n }\n\n return type;\n}\n/**\n * NamedType : Name\n */\n\nexport function parseNamedType(lexer) {\n var start = lexer.token;\n return {\n kind: Kind.NAMED_TYPE,\n name: parseName(lexer),\n loc: loc(lexer, start)\n };\n} // Implements the parsing rules in the Type Definition section.\n\n/**\n * TypeSystemDefinition :\n * - SchemaDefinition\n * - TypeDefinition\n * - DirectiveDefinition\n *\n * TypeDefinition :\n * - ScalarTypeDefinition\n * - ObjectTypeDefinition\n * - InterfaceTypeDefinition\n * - UnionTypeDefinition\n * - EnumTypeDefinition\n * - InputObjectTypeDefinition\n */\n\nfunction parseTypeSystemDefinition(lexer) {\n // Many definitions begin with a description and require a lookahead.\n var keywordToken = peekDescription(lexer) ? lexer.lookahead() : lexer.token;\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaDefinition(lexer);\n\n case 'scalar':\n return parseScalarTypeDefinition(lexer);\n\n case 'type':\n return parseObjectTypeDefinition(lexer);\n\n case 'interface':\n return parseInterfaceTypeDefinition(lexer);\n\n case 'union':\n return parseUnionTypeDefinition(lexer);\n\n case 'enum':\n return parseEnumTypeDefinition(lexer);\n\n case 'input':\n return parseInputObjectTypeDefinition(lexer);\n\n case 'directive':\n return parseDirectiveDefinition(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n\nfunction peekDescription(lexer) {\n return peek(lexer, TokenKind.STRING) || peek(lexer, TokenKind.BLOCK_STRING);\n}\n/**\n * Description : StringValue\n */\n\n\nfunction parseDescription(lexer) {\n if (peekDescription(lexer)) {\n return parseStringLiteral(lexer);\n }\n}\n/**\n * SchemaDefinition : schema Directives[Const]? { OperationTypeDefinition+ }\n */\n\n\nfunction parseSchemaDefinition(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R);\n return {\n kind: Kind.SCHEMA_DEFINITION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * OperationTypeDefinition : OperationType : NamedType\n */\n\n\nfunction parseOperationTypeDefinition(lexer) {\n var start = lexer.token;\n var operation = parseOperationType(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseNamedType(lexer);\n return {\n kind: Kind.OPERATION_TYPE_DEFINITION,\n operation: operation,\n type: type,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n */\n\n\nfunction parseScalarTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.SCALAR_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeDefinition :\n * Description?\n * type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * ImplementsInterfaces :\n * - implements `&`? NamedType\n * - ImplementsInterfaces & NamedType\n */\n\n\nfunction parseImplementsInterfaces(lexer) {\n var types = [];\n\n if (lexer.token.value === 'implements') {\n lexer.advance(); // Optional leading ampersand\n\n skip(lexer, TokenKind.AMP);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.AMP) || // Legacy support for the SDL?\n lexer.options.allowLegacySDLImplementsInterfaces && peek(lexer, TokenKind.NAME));\n }\n\n return types;\n}\n/**\n * FieldsDefinition : { FieldDefinition+ }\n */\n\n\nfunction parseFieldsDefinition(lexer) {\n // Legacy support for the SDL?\n if (lexer.options.allowLegacySDLEmptyFields && peek(lexer, TokenKind.BRACE_L) && lexer.lookahead().kind === TokenKind.BRACE_R) {\n lexer.advance();\n lexer.advance();\n return [];\n }\n\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseFieldDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * FieldDefinition :\n * - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n */\n\n\nfunction parseFieldDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.FIELD_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n type: type,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ArgumentsDefinition : ( InputValueDefinition+ )\n */\n\n\nfunction parseArgumentDefs(lexer) {\n if (!peek(lexer, TokenKind.PAREN_L)) {\n return [];\n }\n\n return many(lexer, TokenKind.PAREN_L, parseInputValueDef, TokenKind.PAREN_R);\n}\n/**\n * InputValueDefinition :\n * - Description? Name : Type DefaultValue? Directives[Const]?\n */\n\n\nfunction parseInputValueDef(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n expect(lexer, TokenKind.COLON);\n var type = parseTypeReference(lexer);\n var defaultValue;\n\n if (skip(lexer, TokenKind.EQUALS)) {\n defaultValue = parseConstValue(lexer);\n }\n\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.INPUT_VALUE_DEFINITION,\n description: description,\n name: name,\n type: type,\n defaultValue: defaultValue,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeDefinition :\n * - Description? interface Name Directives[Const]? FieldsDefinition?\n */\n\n\nfunction parseInterfaceTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n return {\n kind: Kind.INTERFACE_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeDefinition :\n * - Description? union Name Directives[Const]? UnionMemberTypes?\n */\n\n\nfunction parseUnionTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n return {\n kind: Kind.UNION_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionMemberTypes :\n * - = `|`? NamedType\n * - UnionMemberTypes | NamedType\n */\n\n\nfunction parseUnionMemberTypes(lexer) {\n var types = [];\n\n if (skip(lexer, TokenKind.EQUALS)) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n\n do {\n types.push(parseNamedType(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n }\n\n return types;\n}\n/**\n * EnumTypeDefinition :\n * - Description? enum Name Directives[Const]? EnumValuesDefinition?\n */\n\n\nfunction parseEnumTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n return {\n kind: Kind.ENUM_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumValuesDefinition : { EnumValueDefinition+ }\n */\n\n\nfunction parseEnumValuesDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseEnumValueDefinition, TokenKind.BRACE_R) : [];\n}\n/**\n * EnumValueDefinition : Description? EnumValue Directives[Const]?\n *\n * EnumValue : Name\n */\n\n\nfunction parseEnumValueDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n return {\n kind: Kind.ENUM_VALUE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeDefinition :\n * - Description? input Name Directives[Const]? InputFieldsDefinition?\n */\n\n\nfunction parseInputObjectTypeDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n return {\n kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n description: description,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputFieldsDefinition : { InputValueDefinition+ }\n */\n\n\nfunction parseInputFieldsDefinition(lexer) {\n return peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseInputValueDef, TokenKind.BRACE_R) : [];\n}\n/**\n * TypeSystemExtension :\n * - SchemaExtension\n * - TypeExtension\n *\n * TypeExtension :\n * - ScalarTypeExtension\n * - ObjectTypeExtension\n * - InterfaceTypeExtension\n * - UnionTypeExtension\n * - EnumTypeExtension\n * - InputObjectTypeDefinition\n */\n\n\nfunction parseTypeSystemExtension(lexer) {\n var keywordToken = lexer.lookahead();\n\n if (keywordToken.kind === TokenKind.NAME) {\n switch (keywordToken.value) {\n case 'schema':\n return parseSchemaExtension(lexer);\n\n case 'scalar':\n return parseScalarTypeExtension(lexer);\n\n case 'type':\n return parseObjectTypeExtension(lexer);\n\n case 'interface':\n return parseInterfaceTypeExtension(lexer);\n\n case 'union':\n return parseUnionTypeExtension(lexer);\n\n case 'enum':\n return parseEnumTypeExtension(lexer);\n\n case 'input':\n return parseInputObjectTypeExtension(lexer);\n }\n }\n\n throw unexpected(lexer, keywordToken);\n}\n/**\n * SchemaExtension :\n * - extend schema Directives[Const]? { OperationTypeDefinition+ }\n * - extend schema Directives[Const]\n */\n\n\nfunction parseSchemaExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'schema');\n var directives = parseDirectives(lexer, true);\n var operationTypes = peek(lexer, TokenKind.BRACE_L) ? many(lexer, TokenKind.BRACE_L, parseOperationTypeDefinition, TokenKind.BRACE_R) : [];\n\n if (directives.length === 0 && operationTypes.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCHEMA_EXTENSION,\n directives: directives,\n operationTypes: operationTypes,\n loc: loc(lexer, start)\n };\n}\n/**\n * ScalarTypeExtension :\n * - extend scalar Name Directives[Const]\n */\n\n\nfunction parseScalarTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'scalar');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n\n if (directives.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.SCALAR_TYPE_EXTENSION,\n name: name,\n directives: directives,\n loc: loc(lexer, start)\n };\n}\n/**\n * ObjectTypeExtension :\n * - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n * - extend type Name ImplementsInterfaces? Directives[Const]\n * - extend type Name ImplementsInterfaces\n */\n\n\nfunction parseObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'type');\n var name = parseName(lexer);\n var interfaces = parseImplementsInterfaces(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (interfaces.length === 0 && directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.OBJECT_TYPE_EXTENSION,\n name: name,\n interfaces: interfaces,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * InterfaceTypeExtension :\n * - extend interface Name Directives[Const]? FieldsDefinition\n * - extend interface Name Directives[Const]\n */\n\n\nfunction parseInterfaceTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'interface');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INTERFACE_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * UnionTypeExtension :\n * - extend union Name Directives[Const]? UnionMemberTypes\n * - extend union Name Directives[Const]\n */\n\n\nfunction parseUnionTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'union');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var types = parseUnionMemberTypes(lexer);\n\n if (directives.length === 0 && types.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.UNION_TYPE_EXTENSION,\n name: name,\n directives: directives,\n types: types,\n loc: loc(lexer, start)\n };\n}\n/**\n * EnumTypeExtension :\n * - extend enum Name Directives[Const]? EnumValuesDefinition\n * - extend enum Name Directives[Const]\n */\n\n\nfunction parseEnumTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'enum');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var values = parseEnumValuesDefinition(lexer);\n\n if (directives.length === 0 && values.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.ENUM_TYPE_EXTENSION,\n name: name,\n directives: directives,\n values: values,\n loc: loc(lexer, start)\n };\n}\n/**\n * InputObjectTypeExtension :\n * - extend input Name Directives[Const]? InputFieldsDefinition\n * - extend input Name Directives[Const]\n */\n\n\nfunction parseInputObjectTypeExtension(lexer) {\n var start = lexer.token;\n expectKeyword(lexer, 'extend');\n expectKeyword(lexer, 'input');\n var name = parseName(lexer);\n var directives = parseDirectives(lexer, true);\n var fields = parseInputFieldsDefinition(lexer);\n\n if (directives.length === 0 && fields.length === 0) {\n throw unexpected(lexer);\n }\n\n return {\n kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n name: name,\n directives: directives,\n fields: fields,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveDefinition :\n * - Description? directive @ Name ArgumentsDefinition? on DirectiveLocations\n */\n\n\nfunction parseDirectiveDefinition(lexer) {\n var start = lexer.token;\n var description = parseDescription(lexer);\n expectKeyword(lexer, 'directive');\n expect(lexer, TokenKind.AT);\n var name = parseName(lexer);\n var args = parseArgumentDefs(lexer);\n expectKeyword(lexer, 'on');\n var locations = parseDirectiveLocations(lexer);\n return {\n kind: Kind.DIRECTIVE_DEFINITION,\n description: description,\n name: name,\n arguments: args,\n locations: locations,\n loc: loc(lexer, start)\n };\n}\n/**\n * DirectiveLocations :\n * - `|`? DirectiveLocation\n * - DirectiveLocations | DirectiveLocation\n */\n\n\nfunction parseDirectiveLocations(lexer) {\n // Optional leading pipe\n skip(lexer, TokenKind.PIPE);\n var locations = [];\n\n do {\n locations.push(parseDirectiveLocation(lexer));\n } while (skip(lexer, TokenKind.PIPE));\n\n return locations;\n}\n/*\n * DirectiveLocation :\n * - ExecutableDirectiveLocation\n * - TypeSystemDirectiveLocation\n *\n * ExecutableDirectiveLocation : one of\n * `QUERY`\n * `MUTATION`\n * `SUBSCRIPTION`\n * `FIELD`\n * `FRAGMENT_DEFINITION`\n * `FRAGMENT_SPREAD`\n * `INLINE_FRAGMENT`\n *\n * TypeSystemDirectiveLocation : one of\n * `SCHEMA`\n * `SCALAR`\n * `OBJECT`\n * `FIELD_DEFINITION`\n * `ARGUMENT_DEFINITION`\n * `INTERFACE`\n * `UNION`\n * `ENUM`\n * `ENUM_VALUE`\n * `INPUT_OBJECT`\n * `INPUT_FIELD_DEFINITION`\n */\n\n\nfunction parseDirectiveLocation(lexer) {\n var start = lexer.token;\n var name = parseName(lexer);\n\n if (DirectiveLocation.hasOwnProperty(name.value)) {\n return name;\n }\n\n throw unexpected(lexer, start);\n} // Core parsing utility functions\n\n/**\n * Returns a location object, used to identify the place in\n * the source that created a given parsed object.\n */\n\n\nfunction loc(lexer, startToken) {\n if (!lexer.options.noLocation) {\n return new Loc(startToken, lexer.lastToken, lexer.source);\n }\n}\n\nfunction Loc(startToken, endToken, source) {\n this.start = startToken.start;\n this.end = endToken.end;\n this.startToken = startToken;\n this.endToken = endToken;\n this.source = source;\n} // Print a simplified form when appearing in JSON/util.inspect.\n\n\nLoc.prototype.toJSON = Loc.prototype.inspect = function toJSON() {\n return {\n start: this.start,\n end: this.end\n };\n};\n/**\n * Determines if the next token is of a given kind\n */\n\n\nfunction peek(lexer, kind) {\n return lexer.token.kind === kind;\n}\n/**\n * If the next token is of the given kind, return true after advancing\n * the lexer. Otherwise, do not change the parser state and return false.\n */\n\n\nfunction skip(lexer, kind) {\n var match = lexer.token.kind === kind;\n\n if (match) {\n lexer.advance();\n }\n\n return match;\n}\n/**\n * If the next token is of the given kind, return that token after advancing\n * the lexer. Otherwise, do not change the parser state and throw an error.\n */\n\n\nfunction expect(lexer, kind) {\n var token = lexer.token;\n\n if (token.kind === kind) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \".concat(kind, \", found \").concat(getTokenDesc(token)));\n}\n/**\n * If the next token is a keyword with the given value, return that token after\n * advancing the lexer. Otherwise, do not change the parser state and return\n * false.\n */\n\n\nfunction expectKeyword(lexer, value) {\n var token = lexer.token;\n\n if (token.kind === TokenKind.NAME && token.value === value) {\n lexer.advance();\n return token;\n }\n\n throw syntaxError(lexer.source, token.start, \"Expected \\\"\".concat(value, \"\\\", found \").concat(getTokenDesc(token)));\n}\n/**\n * Helper function for creating an error when an unexpected lexed token\n * is encountered.\n */\n\n\nfunction unexpected(lexer, atToken) {\n var token = atToken || lexer.token;\n return syntaxError(lexer.source, token.start, \"Unexpected \".concat(getTokenDesc(token)));\n}\n/**\n * Returns a possibly empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction any(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}\n/**\n * Returns a non-empty list of parse nodes, determined by\n * the parseFn. This list begins with a lex token of openKind\n * and ends with a lex token of closeKind. Advances the parser\n * to the next lex token after the closing token.\n */\n\n\nfunction many(lexer, openKind, parseFn, closeKind) {\n expect(lexer, openKind);\n var nodes = [parseFn(lexer)];\n\n while (!skip(lexer, closeKind)) {\n nodes.push(parseFn(lexer));\n }\n\n return nodes;\n}","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport * as Paho from 'paho-mqtt';\nimport { v4 as uuid } from 'uuid';\nimport Observable from 'zen-observable-ts';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('MqttOverWSProvider');\nexport function mqttTopicMatch(filter, topic) {\n var filterArray = filter.split('/');\n var length = filterArray.length;\n var topicArray = topic.split('/');\n\n for (var i = 0; i < length; ++i) {\n var left = filterArray[i];\n var right = topicArray[i];\n if (left === '#') return topicArray.length >= length;\n if (left !== '+' && left !== right) return false;\n }\n\n return length === topicArray.length;\n}\n\nvar ClientsQueue =\n/** @class */\nfunction () {\n function ClientsQueue() {\n this.promises = new Map();\n }\n\n ClientsQueue.prototype.get = function (clientId, clientFactory) {\n return __awaiter(this, void 0, void 0, function () {\n var promise;\n return __generator(this, function (_a) {\n promise = this.promises.get(clientId);\n\n if (promise) {\n return [2\n /*return*/\n , promise];\n }\n\n promise = clientFactory(clientId);\n this.promises.set(clientId, promise);\n return [2\n /*return*/\n , promise];\n });\n });\n };\n\n Object.defineProperty(ClientsQueue.prototype, \"allClients\", {\n get: function get() {\n return Array.from(this.promises.keys());\n },\n enumerable: true,\n configurable: true\n });\n\n ClientsQueue.prototype.remove = function (clientId) {\n this.promises.delete(clientId);\n };\n\n return ClientsQueue;\n}();\n\nvar topicSymbol = typeof Symbol !== 'undefined' ? Symbol('topic') : '@@topic';\n\nvar MqttOverWSProvider =\n/** @class */\nfunction (_super) {\n __extends(MqttOverWSProvider, _super);\n\n function MqttOverWSProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n var _this = _super.call(this, __assign(__assign({}, options), {\n clientId: options.clientId || uuid()\n })) || this;\n\n _this._clientsQueue = new ClientsQueue();\n _this._topicObservers = new Map();\n _this._clientIdObservers = new Map();\n return _this;\n }\n\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientId\", {\n get: function get() {\n return this.options.clientId;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"endpoint\", {\n get: function get() {\n return this.options.aws_pubsub_endpoint;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"clientsQueue\", {\n get: function get() {\n return this._clientsQueue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MqttOverWSProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n MqttOverWSProvider.prototype.getTopicForValue = function (value) {\n return typeof value === 'object' && value[topicSymbol];\n };\n\n MqttOverWSProvider.prototype.getProviderName = function () {\n return 'MqttOverWSProvider';\n };\n\n MqttOverWSProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n logger.warn(clientId, JSON.stringify(__assign({\n errorCode: errorCode\n }, args), null, 2));\n var topicsToDelete_1 = [];\n\n var clientIdObservers = this._clientIdObservers.get(clientId);\n\n if (!clientIdObservers) {\n return;\n }\n\n clientIdObservers.forEach(function (observer) {\n observer.error('Disconnected, error code: ' + errorCode); // removing observers for disconnected clientId\n\n _this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n observerForTopic.delete(observer);\n\n if (observerForTopic.size === 0) {\n topicsToDelete_1.push(observerTopic);\n }\n });\n }); // forgiving any trace of clientId\n\n this._clientIdObservers.delete(clientId); // Removing topics that are not listen by an observer\n\n\n topicsToDelete_1.forEach(function (topic) {\n _this._topicObservers.delete(topic);\n });\n }\n };\n\n MqttOverWSProvider.prototype.newClient = function (_a) {\n var url = _a.url,\n clientId = _a.clientId;\n return __awaiter(this, void 0, void 0, function () {\n var client;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug('Creating new MQTT client', clientId);\n client = new Paho.Client(url, clientId); // client.trace = (args) => logger.debug(clientId, JSON.stringify(args, null, 2));\n\n client.onMessageArrived = function (_a) {\n var topic = _a.destinationName,\n msg = _a.payloadString;\n\n _this._onMessage(topic, msg);\n };\n\n client.onConnectionLost = function (_a) {\n var errorCode = _a.errorCode,\n args = __rest(_a, [\"errorCode\"]);\n\n _this.onDisconnect(__assign({\n clientId: clientId,\n errorCode: errorCode\n }, args));\n };\n\n return [4\n /*yield*/\n , new Promise(function (resolve, reject) {\n client.connect({\n useSSL: _this.isSSLEnabled,\n mqttVersion: 3,\n onSuccess: function onSuccess() {\n return resolve(client);\n },\n onFailure: reject\n });\n })];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n , client];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.connect = function (clientId, options) {\n if (options === void 0) {\n options = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function (clientId) {\n return _this.newClient(__assign(__assign({}, options), {\n clientId: clientId\n }));\n })];\n\n case 1:\n return [2\n /*return*/\n , _a.sent()];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n\n if (client && client.isConnected()) {\n client.disconnect();\n }\n\n this.clientsQueue.remove(clientId);\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype.publish = function (topics, msg) {\n return __awaiter(this, void 0, void 0, function () {\n var targetTopics, message, url, client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n targetTopics = [].concat(topics);\n message = JSON.stringify(msg);\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n url = _a.sent();\n return [4\n /*yield*/\n , this.connect(this.clientId, {\n url: url\n })];\n\n case 2:\n client = _a.sent();\n logger.debug('Publishing to topic(s)', targetTopics.join(','), message);\n targetTopics.forEach(function (topic) {\n return client.send(topic, message);\n });\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n MqttOverWSProvider.prototype._onMessage = function (topic, msg) {\n try {\n var matchedTopicObservers_1 = [];\n\n this._topicObservers.forEach(function (observerForTopic, observerTopic) {\n if (mqttTopicMatch(observerTopic, topic)) {\n matchedTopicObservers_1.push(observerForTopic);\n }\n });\n\n var parsedMessage_1 = JSON.parse(msg);\n\n if (typeof parsedMessage_1 === 'object') {\n parsedMessage_1[topicSymbol] = topic;\n }\n\n matchedTopicObservers_1.forEach(function (observersForTopic) {\n observersForTopic.forEach(function (observer) {\n return observer.next(parsedMessage_1);\n });\n });\n } catch (error) {\n logger.warn('Error handling message', error, msg);\n }\n };\n\n MqttOverWSProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n return new Observable(function (observer) {\n targetTopics.forEach(function (topic) {\n // this._topicObservers is used to notify the observers according to the topic received on the message\n var observersForTopic = _this._topicObservers.get(topic);\n\n if (!observersForTopic) {\n observersForTopic = new Set();\n\n _this._topicObservers.set(topic, observersForTopic);\n }\n\n observersForTopic.add(observer);\n }); // @ts-ignore\n\n var client;\n var _a = options.clientId,\n clientId = _a === void 0 ? _this.clientId : _a; // this._clientIdObservers is used to close observers when client gets disconnected\n\n var observersForClientId = _this._clientIdObservers.get(clientId);\n\n if (!observersForClientId) {\n observersForClientId = new Set();\n }\n\n observersForClientId.add(observer);\n\n _this._clientIdObservers.set(clientId, observersForClientId);\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, url, _b, e_1;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = options.url;\n if (!(_a === void 0)) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.endpoint];\n\n case 1:\n _b = _c.sent();\n return [3\n /*break*/\n , 3];\n\n case 2:\n _b = _a;\n _c.label = 3;\n\n case 3:\n url = _b;\n _c.label = 4;\n\n case 4:\n _c.trys.push([4, 6,, 7]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n url: url\n })];\n\n case 5:\n client = _c.sent();\n targetTopics.forEach(function (topic) {\n client.subscribe(topic);\n });\n return [3\n /*break*/\n , 7];\n\n case 6:\n e_1 = _c.sent();\n observer.error(e_1);\n return [3\n /*break*/\n , 7];\n\n case 7:\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n\n if (client) {\n _this._clientIdObservers.get(clientId).delete(observer); // No more observers per client => client not needed anymore\n\n\n if (_this._clientIdObservers.get(clientId).size === 0) {\n _this.disconnect(clientId);\n\n _this._clientIdObservers.delete(clientId);\n }\n\n targetTopics.forEach(function (topic) {\n var observersForTopic = _this._topicObservers.get(topic) || new Set();\n observersForTopic.delete(observer); // if no observers exists for the topic, topic should be removed\n\n if (observersForTopic.size === 0) {\n _this._topicObservers.delete(topic);\n\n if (client.isConnected()) {\n client.unsubscribe(topic);\n }\n }\n });\n }\n\n return null;\n };\n });\n };\n\n return MqttOverWSProvider;\n}(AbstractPubSubProvider);\n\nexport { MqttOverWSProvider };","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('AbstractPubSubProvider');\n\nvar AbstractPubSubProvider =\n/** @class */\nfunction () {\n function AbstractPubSubProvider(options) {\n if (options === void 0) {\n options = {};\n }\n\n this._config = options;\n }\n\n AbstractPubSubProvider.prototype.configure = function (config) {\n if (config === void 0) {\n config = {};\n }\n\n this._config = __assign(__assign({}, config), this._config);\n logger.debug(\"configure \" + this.getProviderName(), this._config);\n return this.options;\n };\n\n AbstractPubSubProvider.prototype.getCategory = function () {\n return 'PubSub';\n };\n\n Object.defineProperty(AbstractPubSubProvider.prototype, \"options\", {\n get: function get() {\n return __assign({}, this._config);\n },\n enumerable: true,\n configurable: true\n });\n return AbstractPubSubProvider;\n}();\n\nexport { AbstractPubSubProvider };","import \"core-js/modules/es.array.reduce.js\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n\nvar __spread = this && this.__spread || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n};\n\nimport Observable from 'zen-observable-ts';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nimport { MqttOverWSProvider } from './MqttOverWSProvider';\nvar logger = new Logger('AWSAppSyncProvider');\n\nvar AWSAppSyncProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncProvider, _super);\n\n function AWSAppSyncProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this._topicClient = new Map();\n _this._topicAlias = new Map();\n return _this;\n }\n\n Object.defineProperty(AWSAppSyncProvider.prototype, \"endpoint\", {\n get: function get() {\n throw new Error('Not supported');\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncProvider';\n };\n\n AWSAppSyncProvider.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUp = function (clientId) {\n var _this = this;\n\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (t) {\n return _this._cleanUpForTopic(t);\n });\n };\n\n AWSAppSyncProvider.prototype._cleanUpForTopic = function (topic) {\n this._topicClient.delete(topic);\n\n this._topicAlias.delete(topic);\n };\n\n AWSAppSyncProvider.prototype.onDisconnect = function (_a) {\n var _this = this;\n\n var clientId = _a.clientId,\n errorCode = _a.errorCode,\n args = __rest(_a, [\"clientId\", \"errorCode\"]);\n\n if (errorCode !== 0) {\n var topicsForClient = Array.from(this._topicClient.entries()).filter(function (_a) {\n var _b = __read(_a, 2),\n c = _b[1];\n\n return c.clientId === clientId;\n }).map(function (_a) {\n var _b = __read(_a, 1),\n t = _b[0];\n\n return t;\n });\n topicsForClient.forEach(function (topic) {\n if (_this._topicObservers.has(topic)) {\n _this._topicObservers.get(topic).forEach(function (obs) {\n if (!obs.closed) {\n obs.error(args);\n }\n });\n\n _this._topicObservers.delete(topic);\n }\n });\n\n this._cleanUp(clientId);\n }\n };\n\n AWSAppSyncProvider.prototype.disconnect = function (clientId) {\n return __awaiter(this, void 0, void 0, function () {\n var client;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n return [4\n /*yield*/\n , this.clientsQueue.get(clientId, function () {\n return null;\n })];\n\n case 1:\n client = _a.sent();\n return [4\n /*yield*/\n , _super.prototype.disconnect.call(this, clientId)];\n\n case 2:\n _a.sent();\n\n this._cleanUp(clientId);\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncProvider.prototype.subscribe = function (topics, options) {\n var _this = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var result = new Observable(function (observer) {\n var targetTopics = [].concat(topics);\n logger.debug('Subscribing to topic(s)', targetTopics.join(','));\n\n (function () {\n return __awaiter(_this, void 0, void 0, function () {\n var _a, mqttConnections, newSubscriptions, newAliases, map;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n // Add these topics to map\n targetTopics.forEach(function (t) {\n if (!_this._topicObservers.has(t)) {\n _this._topicObservers.set(t, new Set());\n }\n\n _this._topicObservers.get(t).add(observer);\n });\n _a = options.mqttConnections, mqttConnections = _a === void 0 ? [] : _a, newSubscriptions = options.newSubscriptions;\n newAliases = Object.entries(newSubscriptions).map(function (_a) {\n var _b = __read(_a, 2),\n alias = _b[0],\n v = _b[1];\n\n return [v.topic, alias];\n }); // Merge new aliases with old ones\n\n this._topicAlias = new Map(__spread(Array.from(this._topicAlias.entries()), newAliases));\n map = Object.entries(targetTopics.reduce(function (acc, elem) {\n var connectionInfoForTopic = mqttConnections.find(function (c) {\n return c.topics.indexOf(elem) > -1;\n });\n\n if (connectionInfoForTopic) {\n var clientId = connectionInfoForTopic.client,\n url = connectionInfoForTopic.url;\n\n if (!acc[clientId]) {\n acc[clientId] = {\n url: url,\n topics: new Set()\n };\n }\n\n acc[clientId].topics.add(elem);\n }\n\n return acc;\n }, {})); // reconnect everything we have in the map\n\n return [4\n /*yield*/\n , Promise.all(map.map(function (_a) {\n var _b = __read(_a, 2),\n clientId = _b[0],\n _c = _b[1],\n url = _c.url,\n topics = _c.topics;\n\n return __awaiter(_this, void 0, void 0, function () {\n var client, err_1;\n\n var _this = this;\n\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n client = null;\n _d.label = 1;\n\n case 1:\n _d.trys.push([1, 3,, 4]);\n\n return [4\n /*yield*/\n , this.connect(clientId, {\n clientId: clientId,\n url: url\n })];\n\n case 2:\n client = _d.sent();\n return [3\n /*break*/\n , 4];\n\n case 3:\n err_1 = _d.sent();\n observer.error({\n message: 'Failed to connect',\n error: err_1\n });\n observer.complete();\n return [2\n /*return*/\n , undefined];\n\n case 4:\n // subscribe to all topics for this client\n // store topic-client mapping\n topics.forEach(function (topic) {\n if (client.isConnected()) {\n client.subscribe(topic);\n\n _this._topicClient.set(topic, client);\n }\n });\n return [2\n /*return*/\n , client];\n }\n });\n });\n }))];\n\n case 1:\n // reconnect everything we have in the map\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n })();\n\n return function () {\n logger.debug('Unsubscribing from topic(s)', targetTopics.join(','));\n targetTopics.forEach(function (t) {\n var client = _this._topicClient.get(t);\n\n if (client && client.isConnected()) {\n client.unsubscribe(t);\n\n _this._topicClient.delete(t);\n\n if (!Array.from(_this._topicClient.values()).some(function (c) {\n return c === client;\n })) {\n _this.disconnect(client.clientId);\n }\n }\n\n _this._topicObservers.delete(t);\n });\n };\n });\n return Observable.from(result).map(function (value) {\n var topic = _this.getTopicForValue(value);\n\n var alias = _this._topicAlias.get(topic);\n\n value.data = Object.entries(value.data).reduce(function (obj, _a) {\n var _b = __read(_a, 2),\n origKey = _b[0],\n val = _b[1];\n\n return obj[alias || origKey] = val, obj;\n }, {});\n return value;\n });\n };\n\n return AWSAppSyncProvider;\n}(MqttOverWSProvider);\n\nexport { AWSAppSyncProvider };","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\n\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nexport function getLocation(source, position) {\n var lineRegexp = /\\r\\n|[\\n\\r]/g;\n var line = 1;\n var column = position + 1;\n var match;\n\n while ((match = lineRegexp.exec(source.body)) && match.index < position) {\n line += 1;\n column = position + 1 - (match.index + match[0].length);\n }\n\n return {\n line: line,\n column: column\n };\n}","/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { getLocation } from '../language/location';\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n */\n\nexport function printError(error) {\n var printedLocations = [];\n\n if (error.nodes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = error.nodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var node = _step.value;\n\n if (node.loc) {\n printedLocations.push(highlightSourceAtLocation(node.loc.source, getLocation(node.loc.source, node.loc.start)));\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } else if (error.source && error.locations) {\n var source = error.source;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = error.locations[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var location = _step2.value;\n printedLocations.push(highlightSourceAtLocation(source, location));\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n }\n\n return printedLocations.length === 0 ? error.message : [error.message].concat(printedLocations).join('\\n\\n') + '\\n';\n}\n/**\n * Render a helpful description of the location of the error in the GraphQL\n * Source document.\n */\n\nfunction highlightSourceAtLocation(source, location) {\n var firstLineColumnOffset = source.locationOffset.column - 1;\n var body = whitespace(firstLineColumnOffset) + source.body;\n var lineIndex = location.line - 1;\n var lineOffset = source.locationOffset.line - 1;\n var lineNum = location.line + lineOffset;\n var columnOffset = location.line === 1 ? firstLineColumnOffset : 0;\n var columnNum = location.column + columnOffset;\n var lines = body.split(/\\r\\n|[\\n\\r]/g);\n return \"\".concat(source.name, \" (\").concat(lineNum, \":\").concat(columnNum, \")\\n\") + printPrefixedLines([// Lines specified like this: [\"prefix\", \"string\"],\n [\"\".concat(lineNum - 1, \": \"), lines[lineIndex - 1]], [\"\".concat(lineNum, \": \"), lines[lineIndex]], ['', whitespace(columnNum - 1) + '^'], [\"\".concat(lineNum + 1, \": \"), lines[lineIndex + 1]]]);\n}\n\nfunction printPrefixedLines(lines) {\n var existingLines = lines.filter(function (_ref) {\n var _ = _ref[0],\n line = _ref[1];\n return line !== undefined;\n });\n var padLen = 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = existingLines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _ref4 = _step3.value;\n var prefix = _ref4[0];\n padLen = Math.max(padLen, prefix.length);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n return existingLines.map(function (_ref3) {\n var prefix = _ref3[0],\n line = _ref3[1];\n return lpad(padLen, prefix) + line;\n }).join('\\n');\n}\n\nfunction whitespace(len) {\n return Array(len + 1).join(' ');\n}\n\nfunction lpad(len, str) {\n return whitespace(len - str.length) + str;\n}","import \"core-js/modules/es.array.reduce.js\";\n\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * strict\n */\nimport { printError } from './printError';\nimport { getLocation } from '../language/location';\nexport function GraphQLError( // eslint-disable-line no-redeclare\nmessage, nodes, source, positions, path, originalError, extensions) {\n // Compute list of blame nodes.\n var _nodes = Array.isArray(nodes) ? nodes.length !== 0 ? nodes : undefined : nodes ? [nodes] : undefined; // Compute locations in the source for the given nodes/positions.\n\n\n var _source = source;\n\n if (!_source && _nodes) {\n var node = _nodes[0];\n _source = node && node.loc && node.loc.source;\n }\n\n var _positions = positions;\n\n if (!_positions && _nodes) {\n _positions = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(node.loc.start);\n }\n\n return list;\n }, []);\n }\n\n if (_positions && _positions.length === 0) {\n _positions = undefined;\n }\n\n var _locations;\n\n if (positions && source) {\n _locations = positions.map(function (pos) {\n return getLocation(source, pos);\n });\n } else if (_nodes) {\n _locations = _nodes.reduce(function (list, node) {\n if (node.loc) {\n list.push(getLocation(node.loc.source, node.loc.start));\n }\n\n return list;\n }, []);\n }\n\n var _extensions = extensions || originalError && originalError.extensions;\n\n Object.defineProperties(this, {\n message: {\n value: message,\n // By being enumerable, JSON.stringify will include `message` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: true,\n writable: true\n },\n locations: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _locations || undefined,\n // By being enumerable, JSON.stringify will include `locations` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_locations)\n },\n path: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: path || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(path)\n },\n nodes: {\n value: _nodes || undefined\n },\n source: {\n value: _source || undefined\n },\n positions: {\n value: _positions || undefined\n },\n originalError: {\n value: originalError\n },\n extensions: {\n // Coercing falsey values to undefined ensures they will not be included\n // in JSON.stringify() when not provided.\n value: _extensions || undefined,\n // By being enumerable, JSON.stringify will include `path` in the\n // resulting output. This ensures that the simplest possible GraphQL\n // service adheres to the spec.\n enumerable: Boolean(_extensions)\n }\n }); // Include (non-enumerable) stack trace.\n\n if (originalError && originalError.stack) {\n Object.defineProperty(this, 'stack', {\n value: originalError.stack,\n writable: true,\n configurable: true\n });\n } else if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GraphQLError);\n } else {\n Object.defineProperty(this, 'stack', {\n value: Error().stack,\n writable: true,\n configurable: true\n });\n }\n}\nGraphQLError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: GraphQLError\n },\n name: {\n value: 'GraphQLError'\n },\n toString: {\n value: function toString() {\n return printError(this);\n }\n }\n});","var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport Observable from 'zen-observable-ts';\nimport { GraphQLError } from 'graphql';\nimport * as url from 'url';\nimport { v4 as uuid } from 'uuid';\nimport { Buffer } from 'buffer';\nimport { Logger, Credentials, Signer, Hub, Constants, USER_AGENT_HEADER, jitteredExponentialRetry, NonRetryableError } from '@aws-amplify/core';\nimport Cache from '@aws-amplify/cache';\nimport Auth from '@aws-amplify/auth';\nimport { AbstractPubSubProvider } from './PubSubProvider';\nimport { CONTROL_MSG } from '../index';\nvar logger = new Logger('AWSAppSyncRealTimeProvider');\nvar AMPLIFY_SYMBOL = typeof Symbol !== 'undefined' && typeof Symbol.for === 'function' ? Symbol.for('amplify_default') : '@@amplify_default';\n\nvar dispatchApiEvent = function dispatchApiEvent(event, data, message) {\n Hub.dispatch('api', {\n event: event,\n data: data,\n message: message\n }, 'PubSub', AMPLIFY_SYMBOL);\n};\n\nvar MAX_DELAY_MS = 5000;\nvar NON_RETRYABLE_CODES = [400, 401, 403];\nvar MESSAGE_TYPES;\n\n(function (MESSAGE_TYPES) {\n /**\n * Client -> Server message.\n * This message type is the first message after handshake and this will initialize AWS AppSync RealTime communication\n */\n MESSAGE_TYPES[\"GQL_CONNECTION_INIT\"] = \"connection_init\";\n /**\n * Server -> Client message\n * This message type is in case there is an issue with AWS AppSync RealTime when establishing connection\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ERROR\"] = \"connection_error\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_CONNECTION_INIT message\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_ACK\"] = \"connection_ack\";\n /**\n * Client -> Server message.\n * This message type is for register subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_START\"] = \"start\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_START message\n */\n\n MESSAGE_TYPES[\"GQL_START_ACK\"] = \"start_ack\";\n /**\n * Server -> Client message.\n * This message type is for subscription message from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_DATA\"] = \"data\";\n /**\n * Server -> Client message.\n * This message type helps the client to know is still receiving messages from AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_CONNECTION_KEEP_ALIVE\"] = \"ka\";\n /**\n * Client -> Server message.\n * This message type is for unregister subscriptions with AWS AppSync RealTime\n */\n\n MESSAGE_TYPES[\"GQL_STOP\"] = \"stop\";\n /**\n * Server -> Client message.\n * This message type is for the ack response from AWS AppSync RealTime for GQL_STOP message\n */\n\n MESSAGE_TYPES[\"GQL_COMPLETE\"] = \"complete\";\n /**\n * Server -> Client message.\n * This message type is for sending error messages from AWS AppSync RealTime to the client\n */\n\n MESSAGE_TYPES[\"GQL_ERROR\"] = \"error\";\n})(MESSAGE_TYPES || (MESSAGE_TYPES = {}));\n\nvar SUBSCRIPTION_STATUS;\n\n(function (SUBSCRIPTION_STATUS) {\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"PENDING\"] = 0] = \"PENDING\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"CONNECTED\"] = 1] = \"CONNECTED\";\n SUBSCRIPTION_STATUS[SUBSCRIPTION_STATUS[\"FAILED\"] = 2] = \"FAILED\";\n})(SUBSCRIPTION_STATUS || (SUBSCRIPTION_STATUS = {}));\n\nvar SOCKET_STATUS;\n\n(function (SOCKET_STATUS) {\n SOCKET_STATUS[SOCKET_STATUS[\"CLOSED\"] = 0] = \"CLOSED\";\n SOCKET_STATUS[SOCKET_STATUS[\"READY\"] = 1] = \"READY\";\n SOCKET_STATUS[SOCKET_STATUS[\"CONNECTING\"] = 2] = \"CONNECTING\";\n})(SOCKET_STATUS || (SOCKET_STATUS = {}));\n\nvar AWS_APPSYNC_REALTIME_HEADERS = {\n accept: 'application/json, text/javascript',\n 'content-encoding': 'amz-1.0',\n 'content-type': 'application/json; charset=UTF-8'\n};\n/**\n * Time in milleseconds to wait for GQL_CONNECTION_INIT message\n */\n\nvar CONNECTION_INIT_TIMEOUT = 15000;\n/**\n * Time in milleseconds to wait for GQL_START_ACK message\n */\n\nvar START_ACK_TIMEOUT = 15000;\n/**\n * Default Time in milleseconds to wait for GQL_CONNECTION_KEEP_ALIVE message\n */\n\nvar DEFAULT_KEEP_ALIVE_TIMEOUT = 5 * 60 * 1000;\n\nvar AWSAppSyncRealTimeProvider =\n/** @class */\nfunction (_super) {\n __extends(AWSAppSyncRealTimeProvider, _super);\n\n function AWSAppSyncRealTimeProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.socketStatus = SOCKET_STATUS.CLOSED;\n _this.keepAliveTimeout = DEFAULT_KEEP_ALIVE_TIMEOUT;\n _this.subscriptionObserverMap = new Map();\n _this.promiseArray = [];\n return _this;\n }\n\n AWSAppSyncRealTimeProvider.prototype.getProviderName = function () {\n return 'AWSAppSyncRealTimeProvider';\n };\n\n AWSAppSyncRealTimeProvider.prototype.newClient = function () {\n throw new Error('Not used here');\n };\n\n AWSAppSyncRealTimeProvider.prototype.publish = function (_topics, _msg, _options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n throw new Error('Operation not supported');\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype.subscribe = function (_topics, options) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint;\n return new Observable(function (observer) {\n if (!appSyncGraphqlEndpoint) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscribe only available for AWS AppSync endpoint\"))]\n });\n observer.complete();\n } else {\n var subscriptionId_1 = uuid();\n\n _this._startSubscriptionWithAWSAppSyncRealTime({\n options: options,\n observer: observer,\n subscriptionId: subscriptionId_1\n }).catch(function (err) {\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.REALTIME_SUBSCRIPTION_INIT_ERROR + \": \" + err))]\n });\n observer.complete();\n });\n\n return function () {\n return __awaiter(_this, void 0, void 0, function () {\n var subscriptionState, err_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n _a.trys.push([0, 2, 3, 4]); // Waiting that subscription has been connected before trying to unsubscribe\n\n\n return [4\n /*yield*/\n , this._waitForSubscriptionToBeConnected(subscriptionId_1)];\n\n case 1:\n // Waiting that subscription has been connected before trying to unsubscribe\n _a.sent();\n\n subscriptionState = (this.subscriptionObserverMap.get(subscriptionId_1) || {}).subscriptionState;\n\n if (!subscriptionState) {\n // subscription already unsubscribed\n return [2\n /*return*/\n ];\n }\n\n if (subscriptionState === SUBSCRIPTION_STATUS.CONNECTED) {\n this._sendUnsubscriptionMessage(subscriptionId_1);\n } else {\n throw new Error('Subscription never connected');\n }\n\n return [3\n /*break*/\n , 4];\n\n case 2:\n err_1 = _a.sent();\n logger.debug(\"Error while unsubscribing \" + err_1);\n return [3\n /*break*/\n , 4];\n\n case 3:\n this._removeSubscriptionObserver(subscriptionId_1);\n\n return [7\n /*endfinally*/\n ];\n\n case 4:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n }\n });\n };\n\n Object.defineProperty(AWSAppSyncRealTimeProvider.prototype, \"isSSLEnabled\", {\n get: function get() {\n return !this.options.aws_appsync_dangerously_connect_to_http_endpoint_for_testing;\n },\n enumerable: true,\n configurable: true\n });\n\n AWSAppSyncRealTimeProvider.prototype._startSubscriptionWithAWSAppSyncRealTime = function (_a) {\n var options = _a.options,\n observer = _a.observer,\n subscriptionId = _a.subscriptionId;\n return __awaiter(this, void 0, void 0, function () {\n var appSyncGraphqlEndpoint, authenticationType, query, variables, apiKey, region, _b, graphql_headers, _c, additionalHeaders, subscriptionState, data, dataString, headerObj, _d, _e, subscriptionMessage, stringToAWSRealTime, err_2, _f, message, subscriptionFailedCallback_1, _g, subscriptionFailedCallback, subscriptionReadyCallback;\n\n var _h;\n\n var _this = this;\n\n return __generator(this, function (_j) {\n switch (_j.label) {\n case 0:\n appSyncGraphqlEndpoint = options.appSyncGraphqlEndpoint, authenticationType = options.authenticationType, query = options.query, variables = options.variables, apiKey = options.apiKey, region = options.region, _b = options.graphql_headers, graphql_headers = _b === void 0 ? function () {\n return {};\n } : _b, _c = options.additionalHeaders, additionalHeaders = _c === void 0 ? {} : _c;\n subscriptionState = SUBSCRIPTION_STATUS.PENDING;\n data = {\n query: query,\n variables: variables\n }; // Having a subscription id map will make it simple to forward messages received\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: subscriptionState,\n startAckTimeoutId: null\n });\n dataString = JSON.stringify(data);\n _d = [{}];\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n payload: dataString,\n canonicalUri: '',\n region: region\n })];\n\n case 1:\n _e = [__assign.apply(void 0, _d.concat([_j.sent()]))];\n return [4\n /*yield*/\n , graphql_headers()];\n\n case 2:\n headerObj = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _e.concat([_j.sent()])), additionalHeaders]), (_h = {}, _h[USER_AGENT_HEADER] = Constants.userAgent, _h)]);\n subscriptionMessage = {\n id: subscriptionId,\n payload: {\n data: dataString,\n extensions: {\n authorization: __assign({}, headerObj)\n }\n },\n type: MESSAGE_TYPES.GQL_START\n };\n stringToAWSRealTime = JSON.stringify(subscriptionMessage);\n _j.label = 3;\n\n case 3:\n _j.trys.push([3, 5,, 6]);\n\n return [4\n /*yield*/\n , this._initializeWebSocketConnection({\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n region: region\n })];\n\n case 4:\n _j.sent();\n\n return [3\n /*break*/\n , 6];\n\n case 5:\n err_2 = _j.sent();\n logger.debug({\n err: err_2\n });\n _f = err_2.message, message = _f === void 0 ? '' : _f;\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + message))]\n });\n observer.complete();\n subscriptionFailedCallback_1 = (this.subscriptionObserverMap.get(subscriptionId) || {}).subscriptionFailedCallback; // Notify concurrent unsubscription\n\n if (typeof subscriptionFailedCallback_1 === 'function') {\n subscriptionFailedCallback_1();\n }\n\n return [2\n /*return*/\n ];\n\n case 6:\n _g = this.subscriptionObserverMap.get(subscriptionId), subscriptionFailedCallback = _g.subscriptionFailedCallback, subscriptionReadyCallback = _g.subscriptionReadyCallback; // This must be done before sending the message in order to be listening immediately\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n startAckTimeoutId: setTimeout(function () {\n _this._timeoutStartSubscriptionAck.call(_this, subscriptionId);\n }, START_ACK_TIMEOUT)\n });\n\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n\n return [2\n /*return*/\n ];\n }\n });\n });\n }; // Waiting that subscription has been connected before trying to unsubscribe\n\n\n AWSAppSyncRealTimeProvider.prototype._waitForSubscriptionToBeConnected = function (subscriptionId) {\n return __awaiter(this, void 0, void 0, function () {\n var subscriptionState;\n\n var _this = this;\n\n return __generator(this, function (_a) {\n subscriptionState = this.subscriptionObserverMap.get(subscriptionId).subscriptionState; // This in case unsubscribe is invoked before sending start subscription message\n\n if (subscriptionState === SUBSCRIPTION_STATUS.PENDING) {\n return [2\n /*return*/\n , new Promise(function (res, rej) {\n var _a = _this.subscriptionObserverMap.get(subscriptionId),\n observer = _a.observer,\n subscriptionState = _a.subscriptionState,\n variables = _a.variables,\n query = _a.query;\n\n _this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n subscriptionState: subscriptionState,\n variables: variables,\n query: query,\n subscriptionReadyCallback: res,\n subscriptionFailedCallback: rej\n });\n })];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._sendUnsubscriptionMessage = function (subscriptionId) {\n try {\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN && this.socketStatus === SOCKET_STATUS.READY) {\n // Preparing unsubscribe message to stop receiving messages for that subscription\n var unsubscribeMessage = {\n id: subscriptionId,\n type: MESSAGE_TYPES.GQL_STOP\n };\n var stringToAWSRealTime = JSON.stringify(unsubscribeMessage);\n this.awsRealTimeSocket.send(stringToAWSRealTime);\n }\n } catch (err) {\n // If GQL_STOP is not sent because of disconnection issue, then there is nothing the client can do\n logger.debug({\n err: err\n });\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._removeSubscriptionObserver = function (subscriptionId) {\n this.subscriptionObserverMap.delete(subscriptionId); // Verifying 1000ms after removing subscription in case there are new subscription unmount/mount\n\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n };\n\n AWSAppSyncRealTimeProvider.prototype._closeSocketIfRequired = function () {\n if (this.subscriptionObserverMap.size > 0) {\n // Active subscriptions on the WebSocket\n return;\n }\n\n if (!this.awsRealTimeSocket) {\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return;\n }\n\n if (this.awsRealTimeSocket.bufferedAmount > 0) {\n // Still data on the WebSocket\n setTimeout(this._closeSocketIfRequired.bind(this), 1000);\n } else {\n logger.debug('closing WebSocket...');\n clearTimeout(this.keepAliveTimeoutId);\n var tempSocket = this.awsRealTimeSocket; // Cleaning callbacks to avoid race condition, socket still exists\n\n tempSocket.onclose = undefined;\n tempSocket.onerror = undefined;\n tempSocket.close(1000);\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._handleIncomingSubscriptionMessage = function (message) {\n logger.debug(\"subscription message from AWS AppSync RealTime: \" + message.data);\n\n var _a = JSON.parse(message.data),\n _b = _a.id,\n id = _b === void 0 ? '' : _b,\n payload = _a.payload,\n type = _a.type;\n\n var _c = this.subscriptionObserverMap.get(id) || {},\n _d = _c.observer,\n observer = _d === void 0 ? null : _d,\n _e = _c.query,\n query = _e === void 0 ? '' : _e,\n _f = _c.variables,\n variables = _f === void 0 ? {} : _f,\n startAckTimeoutId = _c.startAckTimeoutId,\n subscriptionReadyCallback = _c.subscriptionReadyCallback,\n subscriptionFailedCallback = _c.subscriptionFailedCallback;\n\n logger.debug({\n id: id,\n observer: observer,\n query: query,\n variables: variables\n });\n\n if (type === MESSAGE_TYPES.GQL_DATA && payload && payload.data) {\n if (observer) {\n observer.next(payload);\n } else {\n logger.debug(\"observer not found for id: \" + id);\n }\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_START_ACK) {\n logger.debug(\"subscription ready for \" + JSON.stringify({\n query: query,\n variables: variables\n }));\n\n if (typeof subscriptionReadyCallback === 'function') {\n subscriptionReadyCallback();\n }\n\n clearTimeout(startAckTimeoutId);\n dispatchApiEvent(CONTROL_MSG.SUBSCRIPTION_ACK, {\n query: query,\n variables: variables\n }, 'Connection established for subscription');\n var subscriptionState = SUBSCRIPTION_STATUS.CONNECTED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: null,\n subscriptionState: subscriptionState,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback\n }); // TODO: emit event on hub but it requires to store the id first\n\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_KEEP_ALIVE) {\n clearTimeout(this.keepAliveTimeoutId);\n this.keepAliveTimeoutId = setTimeout(this._errorDisconnect.bind(this, CONTROL_MSG.TIMEOUT_DISCONNECT), this.keepAliveTimeout);\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_ERROR) {\n var subscriptionState = SUBSCRIPTION_STATUS.FAILED;\n this.subscriptionObserverMap.set(id, {\n observer: observer,\n query: query,\n variables: variables,\n startAckTimeoutId: startAckTimeoutId,\n subscriptionReadyCallback: subscriptionReadyCallback,\n subscriptionFailedCallback: subscriptionFailedCallback,\n subscriptionState: subscriptionState\n });\n observer.error({\n errors: [__assign({}, new GraphQLError(CONTROL_MSG.CONNECTION_FAILED + \": \" + JSON.stringify(payload)))]\n });\n clearTimeout(startAckTimeoutId);\n observer.complete();\n\n if (typeof subscriptionFailedCallback === 'function') {\n subscriptionFailedCallback();\n }\n }\n };\n\n AWSAppSyncRealTimeProvider.prototype._errorDisconnect = function (msg) {\n logger.debug(\"Disconnect error: \" + msg);\n this.subscriptionObserverMap.forEach(function (_a) {\n var observer = _a.observer;\n\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(msg))]\n });\n }\n });\n this.subscriptionObserverMap.clear();\n\n if (this.awsRealTimeSocket) {\n this.awsRealTimeSocket.close();\n }\n\n this.socketStatus = SOCKET_STATUS.CLOSED;\n };\n\n AWSAppSyncRealTimeProvider.prototype._timeoutStartSubscriptionAck = function (subscriptionId) {\n var _a = this.subscriptionObserverMap.get(subscriptionId) || {},\n observer = _a.observer,\n query = _a.query,\n variables = _a.variables;\n\n if (!observer) {\n return;\n }\n\n this.subscriptionObserverMap.set(subscriptionId, {\n observer: observer,\n query: query,\n variables: variables,\n subscriptionState: SUBSCRIPTION_STATUS.FAILED\n });\n\n if (observer && !observer.closed) {\n observer.error({\n errors: [__assign({}, new GraphQLError(\"Subscription timeout \" + JSON.stringify({\n query: query,\n variables: variables\n })))]\n }); // Cleanup will be automatically executed\n\n observer.complete();\n }\n\n logger.debug('timeoutStartSubscription', JSON.stringify({\n query: query,\n variables: variables\n }));\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeWebSocketConnection = function (_a) {\n var _this = this;\n\n var appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n authenticationType = _a.authenticationType,\n apiKey = _a.apiKey,\n region = _a.region;\n\n if (this.socketStatus === SOCKET_STATUS.READY) {\n return;\n }\n\n return new Promise(function (res, rej) {\n return __awaiter(_this, void 0, void 0, function () {\n var protocol, discoverableEndpoint, payloadString, headerString, _a, _b, headerQs, payloadQs, awsRealTimeUrl, err_3;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n this.promiseArray.push({\n res: res,\n rej: rej\n });\n if (!(this.socketStatus === SOCKET_STATUS.CLOSED)) return [3\n /*break*/\n , 5];\n _c.label = 1;\n\n case 1:\n _c.trys.push([1, 4,, 5]);\n\n this.socketStatus = SOCKET_STATUS.CONNECTING;\n protocol = this.isSSLEnabled ? 'wss://' : 'ws://';\n discoverableEndpoint = appSyncGraphqlEndpoint.replace('https://', protocol).replace('http://', protocol).replace('appsync-api', 'appsync-realtime-api').replace('gogi-beta', 'grt-beta');\n payloadString = '{}';\n _b = (_a = JSON).stringify;\n return [4\n /*yield*/\n , this._awsRealTimeHeaderBasedAuth({\n authenticationType: authenticationType,\n payload: payloadString,\n canonicalUri: '/connect',\n apiKey: apiKey,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n region: region\n })];\n\n case 2:\n headerString = _b.apply(_a, [_c.sent()]);\n headerQs = Buffer.from(headerString).toString('base64');\n payloadQs = Buffer.from(payloadString).toString('base64');\n awsRealTimeUrl = discoverableEndpoint + \"?header=\" + headerQs + \"&payload=\" + payloadQs;\n return [4\n /*yield*/\n , this._initializeRetryableHandshake({\n awsRealTimeUrl: awsRealTimeUrl\n })];\n\n case 3:\n _c.sent();\n\n this.promiseArray.forEach(function (_a) {\n var res = _a.res;\n logger.debug('Notifying connection successful');\n res();\n });\n this.socketStatus = SOCKET_STATUS.READY;\n this.promiseArray = [];\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_3 = _c.sent();\n this.promiseArray.forEach(function (_a) {\n var rej = _a.rej;\n return rej(err_3);\n });\n this.promiseArray = [];\n\n if (this.awsRealTimeSocket && this.awsRealTimeSocket.readyState === WebSocket.OPEN) {\n this.awsRealTimeSocket.close(3001);\n }\n\n this.awsRealTimeSocket = null;\n this.socketStatus = SOCKET_STATUS.CLOSED;\n return [3\n /*break*/\n , 5];\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeRetryableHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializaling retryable Handshake\");\n return [4\n /*yield*/\n , jitteredExponentialRetry(this._initializeHandshake.bind(this), [{\n awsRealTimeUrl: awsRealTimeUrl\n }], MAX_DELAY_MS)];\n\n case 1:\n _b.sent();\n\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._initializeHandshake = function (_a) {\n var awsRealTimeUrl = _a.awsRealTimeUrl;\n return __awaiter(this, void 0, void 0, function () {\n var err_4, errorType, errorCode;\n\n var _this = this;\n\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n logger.debug(\"Initializing handshake \" + awsRealTimeUrl);\n _b.label = 1;\n\n case 1:\n _b.trys.push([1, 4,, 5]);\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var newSocket = new WebSocket(awsRealTimeUrl, 'graphql-ws');\n\n newSocket.onerror = function () {\n logger.debug(\"WebSocket connection error\");\n };\n\n newSocket.onclose = function () {\n rej(new Error('Connection handshake error'));\n };\n\n newSocket.onopen = function () {\n _this.awsRealTimeSocket = newSocket;\n return res();\n };\n });\n }()];\n\n case 2:\n _b.sent(); // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n\n\n return [4\n /*yield*/\n , function () {\n return new Promise(function (res, rej) {\n var ackOk = false;\n\n _this.awsRealTimeSocket.onerror = function (error) {\n logger.debug(\"WebSocket error \" + JSON.stringify(error));\n };\n\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n rej(new Error(JSON.stringify(event)));\n };\n\n _this.awsRealTimeSocket.onmessage = function (message) {\n logger.debug(\"subscription message from AWS AppSyncRealTime: \" + message.data + \" \");\n var data = JSON.parse(message.data);\n var type = data.type,\n _a = data.payload,\n _b = (_a === void 0 ? {} : _a).connectionTimeoutMs,\n connectionTimeoutMs = _b === void 0 ? DEFAULT_KEEP_ALIVE_TIMEOUT : _b;\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ACK) {\n ackOk = true;\n _this.keepAliveTimeout = connectionTimeoutMs;\n _this.awsRealTimeSocket.onmessage = _this._handleIncomingSubscriptionMessage.bind(_this);\n\n _this.awsRealTimeSocket.onerror = function (err) {\n logger.debug(err);\n\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n\n _this.awsRealTimeSocket.onclose = function (event) {\n logger.debug(\"WebSocket closed \" + event.reason);\n\n _this._errorDisconnect(CONTROL_MSG.CONNECTION_CLOSED);\n };\n\n res('Cool, connected to AWS AppSyncRealTime');\n return;\n }\n\n if (type === MESSAGE_TYPES.GQL_CONNECTION_ERROR) {\n var _c = data.payload,\n _d = (_c === void 0 ? {} : _c).errors,\n _e = __read(_d === void 0 ? [] : _d, 1),\n _f = _e[0],\n _g = _f === void 0 ? {} : _f,\n _h = _g.errorType,\n errorType = _h === void 0 ? '' : _h,\n _j = _g.errorCode,\n errorCode = _j === void 0 ? 0 : _j;\n\n rej({\n errorType: errorType,\n errorCode: errorCode\n });\n }\n };\n\n var gqlInit = {\n type: MESSAGE_TYPES.GQL_CONNECTION_INIT\n };\n\n _this.awsRealTimeSocket.send(JSON.stringify(gqlInit));\n\n function checkAckOk() {\n if (!ackOk) {\n rej(new Error(\"Connection timeout: ack from AWSRealTime was not received on \" + CONNECTION_INIT_TIMEOUT + \" ms\"));\n }\n }\n\n setTimeout(checkAckOk.bind(_this), CONNECTION_INIT_TIMEOUT);\n });\n }()];\n\n case 3:\n // Step 2: wait for ack from AWS AppSyncReaTime after sending init\n _b.sent();\n\n return [3\n /*break*/\n , 5];\n\n case 4:\n err_4 = _b.sent();\n errorType = err_4.errorType, errorCode = err_4.errorCode;\n\n if (NON_RETRYABLE_CODES.includes(errorCode)) {\n throw new NonRetryableError(errorType);\n } else if (errorType) {\n throw new Error(errorType);\n } else {\n throw err_4;\n }\n\n return [3\n /*break*/\n , 5];\n\n case 5:\n return [2\n /*return*/\n ];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeHeaderBasedAuth = function (_a) {\n var authenticationType = _a.authenticationType,\n payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n apiKey = _a.apiKey,\n region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var headerHandler, handler, host, result;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n headerHandler = {\n API_KEY: this._awsRealTimeApiKeyHeader.bind(this),\n AWS_IAM: this._awsRealTimeIAMHeader.bind(this),\n OPENID_CONNECT: this._awsRealTimeOPENIDHeader.bind(this),\n AMAZON_COGNITO_USER_POOLS: this._awsRealTimeCUPHeader.bind(this)\n };\n handler = headerHandler[authenticationType];\n\n if (typeof handler !== 'function') {\n logger.debug(\"Authentication type \" + authenticationType + \" not supported\");\n return [2\n /*return*/\n , ''];\n }\n\n host = url.parse(appSyncGraphqlEndpoint).host;\n return [4\n /*yield*/\n , handler({\n payload: payload,\n canonicalUri: canonicalUri,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n apiKey: apiKey,\n region: region,\n host: host\n })];\n\n case 1:\n result = _b.sent();\n return [2\n /*return*/\n , result];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeCUPHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var session;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Auth.currentSession()];\n\n case 1:\n session = _b.sent();\n return [2\n /*return*/\n , {\n Authorization: session.getAccessToken().getJwtToken(),\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeOPENIDHeader = function (_a) {\n var host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var token, federatedInfo, currentUser;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 1:\n federatedInfo = _b.sent();\n if (!federatedInfo) return [3\n /*break*/\n , 2];\n token = federatedInfo.token;\n return [3\n /*break*/\n , 4];\n\n case 2:\n return [4\n /*yield*/\n , Auth.currentAuthenticatedUser()];\n\n case 3:\n currentUser = _b.sent();\n\n if (currentUser) {\n token = currentUser.token;\n }\n\n _b.label = 4;\n\n case 4:\n if (!token) {\n throw new Error('No federated jwt');\n }\n\n return [2\n /*return*/\n , {\n Authorization: token,\n host: host\n }];\n }\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeApiKeyHeader = function (_a) {\n var apiKey = _a.apiKey,\n host = _a.host;\n return __awaiter(this, void 0, void 0, function () {\n var dt, dtStr;\n return __generator(this, function (_b) {\n dt = new Date();\n dtStr = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n return [2\n /*return*/\n , {\n host: host,\n 'x-amz-date': dtStr,\n 'x-api-key': apiKey\n }];\n });\n });\n };\n\n AWSAppSyncRealTimeProvider.prototype._awsRealTimeIAMHeader = function (_a) {\n var payload = _a.payload,\n canonicalUri = _a.canonicalUri,\n appSyncGraphqlEndpoint = _a.appSyncGraphqlEndpoint,\n region = _a.region;\n return __awaiter(this, void 0, void 0, function () {\n var endpointInfo, credentialsOK, creds, request, signed_params;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n endpointInfo = {\n region: region,\n service: 'appsync'\n };\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 1:\n credentialsOK = _b.sent();\n\n if (!credentialsOK) {\n throw new Error('No credentials');\n }\n\n return [4\n /*yield*/\n , Credentials.get().then(function (credentials) {\n return {\n secret_key: credentials.secretAccessKey,\n access_key: credentials.accessKeyId,\n session_token: credentials.sessionToken\n };\n })];\n\n case 2:\n creds = _b.sent();\n request = {\n url: \"\" + appSyncGraphqlEndpoint + canonicalUri,\n data: payload,\n method: 'POST',\n headers: __assign({}, AWS_APPSYNC_REALTIME_HEADERS)\n };\n signed_params = Signer.sign(request, creds, endpointInfo);\n return [2\n /*return*/\n , signed_params.headers];\n }\n });\n });\n };\n /**\n * @private\n */\n\n\n AWSAppSyncRealTimeProvider.prototype._ensureCredentials = function () {\n return Credentials.get().then(function (credentials) {\n if (!credentials) return false;\n var cred = Credentials.shear(credentials);\n logger.debug('set credentials for AWSAppSyncRealTimeProvider', cred);\n return true;\n }).catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return AWSAppSyncRealTimeProvider;\n}(AbstractPubSubProvider);\n\nexport { AWSAppSyncRealTimeProvider };","/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { PubSub } from './PubSub';\nexport * from './Providers';\nvar CONTROL_MSG;\n\n(function (CONTROL_MSG) {\n CONTROL_MSG[\"CONNECTION_CLOSED\"] = \"Connection closed\";\n CONTROL_MSG[\"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 = {}));\n\nexport { PubSub, CONTROL_MSG };\n/**\n * @deprecated use named import\n */\n\nexport default PubSub;","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/*\n * Copyright 2017-2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n// import '../Common/Polyfills';\n\n\nimport Observable from 'zen-observable-ts';\nimport { Amplify, 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');\n\nvar PubSubClass =\n/** @class */\nfunction () {\n /**\n * Initialize PubSub with AWS configurations\n *\n * @param {PubSubOptions} options - Configuration object for PubSub\n */\n function PubSubClass(options) {\n this._options = options;\n logger.debug('PubSub Options', this._options);\n this._pluggables = [];\n this.subscribe = this.subscribe.bind(this);\n }\n\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncProvider\", {\n /**\n * Lazy instantiate AWSAppSyncProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncProvider) {\n this._awsAppSyncProvider = new AWSAppSyncProvider(this._options);\n }\n\n return this._awsAppSyncProvider;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PubSubClass.prototype, \"awsAppSyncRealTimeProvider\", {\n /**\n * Lazy instantiate AWSAppSyncRealTimeProvider when it is required by the API category\n */\n get: function get() {\n if (!this._awsAppSyncRealTimeProvider) {\n this._awsAppSyncRealTimeProvider = new AWSAppSyncRealTimeProvider(this._options);\n }\n\n return this._awsAppSyncRealTimeProvider;\n },\n enumerable: true,\n configurable: true\n });\n\n PubSubClass.prototype.getModuleName = function () {\n return 'PubSub';\n };\n /**\n * Configure PubSub part with configurations\n *\n * @param {PubSubOptions} config - Configuration for PubSub\n * @return {Object} - The current configuration\n */\n\n\n PubSubClass.prototype.configure = function (options) {\n var _this = this;\n\n var opt = options ? options.PubSub || options : {};\n logger.debug('configure PubSub', {\n opt: opt\n });\n this._options = Object.assign({}, this._options, opt);\n\n this._pluggables.map(function (pluggable) {\n return pluggable.configure(_this._options);\n });\n\n return this._options;\n };\n /**\n * add plugin into Analytics category\n * @param {Object} pluggable - an instance of the plugin\n */\n\n\n PubSubClass.prototype.addPluggable = function (pluggable) {\n return __awaiter(this, void 0, void 0, function () {\n var config;\n return __generator(this, function (_a) {\n if (pluggable && pluggable.getCategory() === 'PubSub') {\n this._pluggables.push(pluggable);\n\n config = pluggable.configure(this._options);\n return [2\n /*return*/\n , config];\n }\n\n return [2\n /*return*/\n ];\n });\n });\n };\n\n PubSubClass.prototype.getProviderByName = function (providerName) {\n if (providerName === INTERNAL_AWS_APPSYNC_PUBSUB_PROVIDER) {\n return this.awsAppSyncProvider;\n }\n\n if (providerName === INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER) {\n return this.awsAppSyncRealTimeProvider;\n }\n\n return this._pluggables.find(function (pluggable) {\n return pluggable.getProviderName() === providerName;\n });\n };\n\n PubSubClass.prototype.getProviders = function (options) {\n if (options === void 0) {\n options = {};\n }\n\n var providerName = options.provider;\n\n if (!providerName) {\n return this._pluggables;\n }\n\n var provider = this.getProviderByName(providerName);\n\n if (!provider) {\n throw new Error(\"Could not find provider named \" + providerName);\n }\n\n return [provider];\n };\n\n PubSubClass.prototype.publish = function (topics, msg, options) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , Promise.all(this.getProviders(options).map(function (provider) {\n return provider.publish(topics, msg, options);\n }))];\n });\n });\n };\n\n PubSubClass.prototype.subscribe = function (topics, options) {\n if (isNode && this._options && this._options.ssr) {\n throw new Error('Subscriptions are not supported for Server-Side Rendering (SSR)');\n }\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) {\n return {\n provider: provider,\n observable: provider.subscribe(topics, options)\n };\n });\n var subscriptions = observables.map(function (_a) {\n var provider = _a.provider,\n observable = _a.observable;\n return observable.subscribe({\n start: console.error,\n next: function next(value) {\n return observer.next({\n provider: provider,\n value: value\n });\n },\n error: function error(_error) {\n return observer.error({\n provider: provider,\n error: _error\n });\n }\n });\n });\n return function () {\n return subscriptions.forEach(function (subscription) {\n return subscription.unsubscribe();\n });\n };\n });\n };\n\n return PubSubClass;\n}();\n\nexport { PubSubClass };\nexport var PubSub = new PubSubClass(null);\nAmplify.register(PubSub);","export var GRAPHQL_AUTH_MODE;\n\n(function (GRAPHQL_AUTH_MODE) {\n GRAPHQL_AUTH_MODE[\"API_KEY\"] = \"API_KEY\";\n GRAPHQL_AUTH_MODE[\"AWS_IAM\"] = \"AWS_IAM\";\n GRAPHQL_AUTH_MODE[\"OPENID_CONNECT\"] = \"OPENID_CONNECT\";\n GRAPHQL_AUTH_MODE[\"AMAZON_COGNITO_USER_POOLS\"] = \"AMAZON_COGNITO_USER_POOLS\";\n})(GRAPHQL_AUTH_MODE || (GRAPHQL_AUTH_MODE = {}));\n\nexport var GraphQLAuthError;\n\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 || (GraphQLAuthError = {}));","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nvar __read = this && this.__read || function (o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { GraphQLError } from 'graphql/error/GraphQLError';\nimport { print } from 'graphql/language/printer';\nimport { parse } from 'graphql/language/parser';\nimport { Amplify, ConsoleLogger as Logger, Constants, Credentials, 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 graphqlOperation(query, variables) {\n if (variables === void 0) {\n variables = {};\n }\n\n return {\n query: query,\n variables: variables\n };\n};\n/**\n * Export Cloud Logic APIs\n */\n\nvar GraphQLAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize GraphQL API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function GraphQLAPIClass(options) {\n this._api = null;\n this.Auth = Auth;\n this.Cache = Cache;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n }\n\n GraphQLAPIClass.prototype.getModuleName = function () {\n return 'GraphQLAPI';\n };\n /**\n * Configure API\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n GraphQLAPIClass.prototype.configure = function (options) {\n var _a = options || {},\n _b = _a.API,\n API = _b === void 0 ? {} : _b,\n otherOptions = __rest(_a, [\"API\"]);\n\n var opt = __assign(__assign({}, otherOptions), API);\n\n logger.debug('configure GraphQL API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\n });\n }\n\n if (typeof opt.graphql_headers !== 'undefined' && typeof opt.graphql_headers !== 'function') {\n logger.warn('graphql_headers should be a function');\n opt.graphql_headers = undefined;\n }\n\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n\n\n GraphQLAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest instance');\n\n if (this._options) {\n this._api = new RestClient(this._options); // Share instance Credentials with client for SSR\n\n this._api.Credentials = this.Credentials;\n return true;\n } else {\n return Promise.reject('API not configured');\n }\n };\n\n GraphQLAPIClass.prototype._headerBasedAuth = function (defaultAuthenticationType) {\n return __awaiter(this, void 0, void 0, function () {\n var _a, aws_appsync_authenticationType, apiKey, authenticationType, headers, _b, credentialsOK, token, federatedInfo, currentUser, e_1, session, e_2;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n _a = this._options, aws_appsync_authenticationType = _a.aws_appsync_authenticationType, apiKey = _a.aws_appsync_apiKey;\n authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n headers = {};\n _b = authenticationType;\n\n switch (_b) {\n case 'API_KEY':\n return [3\n /*break*/\n , 1];\n\n case 'AWS_IAM':\n return [3\n /*break*/\n , 2];\n\n case 'OPENID_CONNECT':\n return [3\n /*break*/\n , 4];\n\n case 'AMAZON_COGNITO_USER_POOLS':\n return [3\n /*break*/\n , 11];\n }\n\n return [3\n /*break*/\n , 15];\n\n case 1:\n if (!apiKey) {\n throw new Error(GraphQLAuthError.NO_API_KEY);\n }\n\n headers = {\n Authorization: null,\n 'X-Api-Key': apiKey\n };\n return [3\n /*break*/\n , 16];\n\n case 2:\n return [4\n /*yield*/\n , this._ensureCredentials()];\n\n case 3:\n credentialsOK = _c.sent();\n\n if (!credentialsOK) {\n throw new Error(GraphQLAuthError.NO_CREDENTIALS);\n }\n\n return [3\n /*break*/\n , 16];\n\n case 4:\n _c.trys.push([4, 9,, 10]);\n\n token = void 0;\n return [4\n /*yield*/\n , Cache.getItem('federatedInfo')];\n\n case 5:\n federatedInfo = _c.sent();\n if (!federatedInfo) return [3\n /*break*/\n , 6];\n token = federatedInfo.token;\n return [3\n /*break*/\n , 8];\n\n case 6:\n return [4\n /*yield*/\n , Auth.currentAuthenticatedUser()];\n\n case 7:\n currentUser = _c.sent();\n\n if (currentUser) {\n token = currentUser.token;\n }\n\n _c.label = 8;\n\n case 8:\n if (!token) {\n throw new Error(GraphQLAuthError.NO_FEDERATED_JWT);\n }\n\n headers = {\n Authorization: token\n };\n return [3\n /*break*/\n , 10];\n\n case 9:\n e_1 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n\n case 10:\n return [3\n /*break*/\n , 16];\n\n case 11:\n _c.trys.push([11, 13,, 14]);\n\n return [4\n /*yield*/\n , this.Auth.currentSession()];\n\n case 12:\n session = _c.sent();\n headers = {\n Authorization: session.getAccessToken().getJwtToken()\n };\n return [3\n /*break*/\n , 14];\n\n case 13:\n e_2 = _c.sent();\n throw new Error(GraphQLAuthError.NO_CURRENT_USER);\n\n case 14:\n return [3\n /*break*/\n , 16];\n\n case 15:\n headers = {\n Authorization: null\n };\n return [3\n /*break*/\n , 16];\n\n case 16:\n return [2\n /*return*/\n , headers];\n }\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n GraphQLAPIClass.prototype.getGraphqlOperationType = function (operation) {\n var doc = parse(operation);\n\n var _a = __read(doc.definitions, 1),\n operationType = _a[0].operation;\n\n return operationType;\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n GraphQLAPIClass.prototype.graphql = function (_a, additionalHeaders) {\n var paramQuery = _a.query,\n _b = _a.variables,\n variables = _b === void 0 ? {} : _b,\n authMode = _a.authMode;\n var query = typeof paramQuery === 'string' ? parse(paramQuery) : parse(print(paramQuery));\n\n var _c = __read(query.definitions.filter(function (def) {\n return def.kind === 'OperationDefinition';\n }), 1),\n _d = _c[0],\n operationDef = _d === void 0 ? {} : _d;\n\n var operationType = operationDef.operation;\n\n switch (operationType) {\n case 'query':\n case 'mutation':\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = {\n cancellableToken: cancellableToken\n };\n\n var responsePromise = this._graphql({\n query: query,\n variables: variables,\n authMode: authMode\n }, additionalHeaders, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\n\n case 'subscription':\n return this._graphqlSubscribe({\n query: query,\n variables: variables,\n authMode: authMode\n }, additionalHeaders);\n }\n\n throw new Error(\"invalid operation type: \" + operationType);\n };\n\n GraphQLAPIClass.prototype._graphql = function (_a, additionalHeaders, initParams) {\n var query = _a.query,\n variables = _a.variables,\n authMode = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n if (initParams === void 0) {\n initParams = {};\n }\n\n return __awaiter(this, void 0, void 0, function () {\n var _b, region, appSyncGraphqlEndpoint, _c, graphql_headers, customGraphqlEndpoint, customEndpointRegion, headers, _d, _e, _f, _g, _h, _j, body, init, endpoint, error, response, err_1, errors;\n\n var _k;\n\n return __generator(this, function (_l) {\n switch (_l.label) {\n case 0:\n if (!!this._api) return [3\n /*break*/\n , 2];\n return [4\n /*yield*/\n , this.createInstance()];\n\n case 1:\n _l.sent();\n\n _l.label = 2;\n\n case 2:\n _b = this._options, region = _b.aws_appsync_region, appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint, _c = _b.graphql_headers, graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c, customGraphqlEndpoint = _b.graphql_endpoint, customEndpointRegion = _b.graphql_endpoint_iam_region;\n _d = [{}];\n _e = !customGraphqlEndpoint;\n if (!_e) return [3\n /*break*/\n , 4];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode)];\n\n case 3:\n _e = _l.sent();\n _l.label = 4;\n\n case 4:\n _f = [__assign.apply(void 0, _d.concat([_e]))];\n _g = customGraphqlEndpoint;\n if (!_g) return [3\n /*break*/\n , 8];\n if (!customEndpointRegion) return [3\n /*break*/\n , 6];\n return [4\n /*yield*/\n , this._headerBasedAuth(authMode)];\n\n case 5:\n _h = _l.sent();\n return [3\n /*break*/\n , 7];\n\n case 6:\n _h = {\n Authorization: null\n };\n _l.label = 7;\n\n case 7:\n _g = _h;\n _l.label = 8;\n\n case 8:\n _j = [__assign.apply(void 0, _f.concat([_g]))];\n return [4\n /*yield*/\n , graphql_headers({\n query: query,\n variables: variables\n })];\n\n case 9:\n headers = __assign.apply(void 0, [__assign.apply(void 0, [__assign.apply(void 0, _j.concat([_l.sent()])), additionalHeaders]), !customGraphqlEndpoint && (_k = {}, _k[USER_AGENT_HEADER] = Constants.userAgent, _k)]);\n body = {\n query: print(query),\n variables: variables\n };\n init = Object.assign({\n headers: headers,\n body: body,\n signerServiceInfo: {\n service: !customGraphqlEndpoint ? 'appsync' : 'execute-api',\n region: !customGraphqlEndpoint ? region : customEndpointRegion\n }\n }, initParams);\n endpoint = customGraphqlEndpoint || appSyncGraphqlEndpoint;\n\n if (!endpoint) {\n error = new GraphQLError('No graphql endpoint provided.');\n throw {\n data: {},\n errors: [error]\n };\n }\n\n _l.label = 10;\n\n case 10:\n _l.trys.push([10, 12,, 13]);\n\n return [4\n /*yield*/\n , this._api.post(endpoint, init)];\n\n case 11:\n response = _l.sent();\n return [3\n /*break*/\n , 13];\n\n case 12:\n err_1 = _l.sent(); // If the exception is because user intentionally\n // cancelled the request, do not modify the exception\n // so that clients can identify the exception correctly.\n\n if (this._api.isCancel(err_1)) {\n throw err_1;\n }\n\n response = {\n data: {},\n errors: [new GraphQLError(err_1.message, null, null, null, null, err_1)]\n };\n return [3\n /*break*/\n , 13];\n\n case 13:\n errors = response.errors;\n\n if (errors && errors.length) {\n throw response;\n }\n\n return [2\n /*return*/\n , response];\n }\n });\n });\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n GraphQLAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request. Only applicable for graphql queries and mutations\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n GraphQLAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n\n GraphQLAPIClass.prototype._graphqlSubscribe = function (_a, additionalHeaders) {\n var query = _a.query,\n variables = _a.variables,\n defaultAuthenticationType = _a.authMode;\n\n if (additionalHeaders === void 0) {\n additionalHeaders = {};\n }\n\n var _b = this._options,\n region = _b.aws_appsync_region,\n appSyncGraphqlEndpoint = _b.aws_appsync_graphqlEndpoint,\n aws_appsync_authenticationType = _b.aws_appsync_authenticationType,\n apiKey = _b.aws_appsync_apiKey,\n _c = _b.graphql_headers,\n graphql_headers = _c === void 0 ? function () {\n return {};\n } : _c;\n var authenticationType = defaultAuthenticationType || aws_appsync_authenticationType || 'AWS_IAM';\n\n if (PubSub && typeof PubSub.subscribe === 'function') {\n return PubSub.subscribe('', {\n provider: INTERNAL_AWS_APPSYNC_REALTIME_PUBSUB_PROVIDER,\n appSyncGraphqlEndpoint: appSyncGraphqlEndpoint,\n authenticationType: authenticationType,\n apiKey: apiKey,\n query: print(query),\n region: region,\n variables: variables,\n graphql_headers: graphql_headers,\n additionalHeaders: additionalHeaders\n });\n } else {\n logger.debug('No pubsub module applied for subscription');\n throw new Error('No pubsub module applied for subscription');\n }\n };\n /**\n * @private\n */\n\n\n GraphQLAPIClass.prototype._ensureCredentials = function () {\n var _this = this;\n\n return this.Credentials.get().then(function (credentials) {\n if (!credentials) return false;\n\n var cred = _this.Credentials.shear(credentials);\n\n logger.debug('set credentials for api', cred);\n return true;\n }).catch(function (err) {\n logger.warn('ensure credentials error', err);\n return false;\n });\n };\n\n return GraphQLAPIClass;\n}();\n\nexport { GraphQLAPIClass };\nexport var GraphQLAPI = new GraphQLAPIClass(null);\nAmplify.register(GraphQLAPI);","var rng = require('./lib/rng');\n\nvar bytesToUuid = require('./lib/bytesToUuid'); // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = rng();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error('uuid.v1(): Can\\'t create more than 10M uuids/sec');\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nmodule.exports = v1;","import zenObservable from 'zen-observable';\nvar Observable = zenObservable;\nexport default Observable;\nexport { Observable };","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar constants_1 = require(\"./constants\");\n/**\n * @internal\n */\n\n\nvar RawSha256 =\n/** @class */\nfunction () {\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\n this.finished = false;\n }\n\n RawSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error(\"Attempted to update an already finished hash.\");\n }\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n\n if (this.bytesHashed * 8 > constants_1.MAX_HASHABLE_LENGTH) {\n throw new Error(\"Cannot hash more than 2^53 - 1 bits\");\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n\n if (this.bufferLength === constants_1.BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\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); // Ensure the final block has enough room for the hashed length\n\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\n this.hashBuffer();\n this.bufferLength = 0;\n }\n\n for (var i = this.bufferLength; i < constants_1.BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\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 } // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n\n\n var out = new Uint8Array(constants_1.DIGEST_LENGTH);\n\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\n return out;\n };\n\n RawSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (buffer[i * 4] & 0xff) << 24 | (buffer[i * 4 + 1] & 0xff) << 16 | (buffer[i * 4 + 2] & 0xff) << 8 | buffer[i * 4 + 3] & 0xff;\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] = (t1_1 + this.temp[i - 7] | 0) + (t2_1 + this.temp[i - 16] | 0);\n }\n\n var t1 = (((state4 >>> 6 | state4 << 26) ^ (state4 >>> 11 | state4 << 21) ^ (state4 >>> 25 | state4 << 7)) + (state4 & state5 ^ ~state4 & state6) | 0) + (state7 + (constants_1.KEY[i] + this.temp[i] | 0) | 0) | 0;\n var t2 = ((state0 >>> 2 | state0 << 30) ^ (state0 >>> 13 | state0 << 19) ^ (state0 >>> 22 | state0 << 10)) + (state0 & state1 ^ state0 & state2 ^ state1 & state2) | 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\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\n return RawSha256;\n}();\n\nexports.RawSha256 = RawSha256;","// Unique ID creation requires a high quality random # generator. In the\n// browser this is a little complicated due to unknown quality of Math.random()\n// and inconsistent support for the `crypto` API. We do the best we can via\n// feature-detection\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto\n// implementation. Also, find the complete implementation of crypto on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof window.msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\nif (getRandomValues) {\n // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto\n var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\n module.exports = function whatwgRNG() {\n getRandomValues(rnds8);\n return rnds8;\n };\n} else {\n // Math.random()-based (RNG)\n //\n // If all else fails, use Math.random(). It's fast, but is of unspecified\n // quality.\n var rnds = new Array(16);\n\n module.exports = function mathRNG() {\n for (var i = 0, r; i < 16; i++) {\n if ((i & 0x03) === 0) r = Math.random() * 0x100000000;\n rnds[i] = r >>> ((i & 0x03) << 3) & 0xff;\n }\n\n return rnds;\n };\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CloseParenthesis = void 0;\n\nvar CloseParenthesis =\n/** @class */\nfunction () {\n function CloseParenthesis() {\n this.status = true;\n }\n\n return CloseParenthesis;\n}();\n\nexports.CloseParenthesis = CloseParenthesis;","const MESSAGE = {\n NO_MODIFICATION: \"03386C00-B54D-11EA-B900-E989F81A2C16\",\n SUCCESSFULL_REGISTERATION_LOGIN_MESSAGE: \"A464B5C0-F056-11EC-A99B-F5ABDEDBC723\",\n AGENCY_USER_LOGIN_ERR_MESSAGE: \"13CB8120-F749-11EC-A99B-F5ABDEDBC723\",\n EMAIL_ALREADY_REGISTERED: \"A7E3C140-1951-11ED-80A8-5F44FEF3BFB4\",\n USER_DOES_NOT_EXIST: \"FB4C2130-1BE3-11ED-9819-B5188091EA18\",\n PASSWORD_DO_NOT_MATCH: \"C3B31300-43E8-11ED-9721-A502960E061B\",\n OTP_SENT_TO_MAIL: \"ED4BFF70-43F6-11ED-B575-C99D12EF6BD8\",\n OTP_SENT_TO_MOBILE_NUMBER: \"C16F0E10-43F6-11ED-9721-A502960E061B\",\n PASSWORD_RESET_SUCCESS_MESSAGE: \"A339E850-447F-11ED-9721-A502960E061B\",\n VALIDATION_EXCEPTION: \"71F3CE70-A641-11EA-85A7-55CDAACD69F6\",\n PASSWORD_POLICY_MESSAGE: \"1FA8B270-5436-11ED-B575-C99D12EF6BD8\",\n USER_IS_NOT_CONFIRMED: \"F76FAFC0-55CA-11ED-AB2E-5926861ADE8F\",\n TEMPORARY_PASSWORD_RESEND_MESSAGE: \"7D329270-4E06-11ED-9721-A502960E061B\",\n CONTACT_US_SUCCESS_MESSAGE: \"3F78B510-720D-11ED-8ED7-11AAF2E46724\",\n RESTRICT_USERPORTAL_USER_LOGIN: \"4E8D1F20-AD25-11ED-B5F0-2B1B3058D408\",\n INVALID_EMAIL_MESSAGE: \"94C3C9C0-B01E-11ED-B5F0-2B1B3058D408\",\n INVALID_MOBILE_NUMBER_MESSAGE: \"F9945C20-B02D-11ED-B5F0-2B1B3058D408\",\n INCORRECT_USERNAME_OR_PASSWORD: \"63646060-B294-11ED-B5F0-2B1B3058D408\",\n NEWS_LETTER_SUBSCRIBTION_MESSAGE: \"2E384500-E264-11ED-A969-85637CEE08B5\"\n}\n\nmodule.exports = {\n MESSAGE\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.StartParenthesis = void 0;\n\nvar StartParenthesis =\n/** @class */\nfunction () {\n function StartParenthesis() {\n this.status = true;\n }\n\n return StartParenthesis;\n}();\n\nexports.StartParenthesis = StartParenthesis;","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BetweenReverse = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar BetweenReverse =\n/** @class */\nfunction (_super) {\n __extends(BetweenReverse, _super);\n\n function BetweenReverse() {\n return _super.call(this) || this;\n }\n\n BetweenReverse.prototype.betweenReverseFrom = function (objFromValue, objToValue) {\n this.from = objFromValue.toString();\n this.to = objToValue.toString();\n };\n\n return BetweenReverse;\n}(Operand_1.Operand);\n\nexports.BetweenReverse = BetweenReverse;","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\n\n\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Between = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar Between =\n/** @class */\nfunction (_super) {\n __extends(Between, _super);\n\n function Between() {\n return _super.call(this) || this;\n }\n\n Between.prototype.betweenFromAndTo = function (inOperand, ojFromValue, objToValue, datatype) {\n _super.prototype.abstractOperandName.call(this, inOperand, datatype);\n\n this.From = ojFromValue;\n this.To = objToValue;\n };\n\n return Between;\n}(Operand_1.Operand);\n\nexports.Between = Between;","import axios from 'axios';\n\nlet languageServiceUrl = process.env.GATSBY_LANGUAGE_SERVICE_URL;\n\nconst getLanguageGuid = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/language`;\n\n let response = await axios.get(apiURL);\n let languageArr = response.data.dataObject;\n\n let languageObj = languageArr.find((obj) => {\n return obj.Code.toUpperCase() === code.toUpperCase();\n });\n\n return languageObj.LanguageId.toUpperCase();\n}\n\nconst getAllLanguages = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/language`;\n\n let response = await axios.get(apiURL);\n let languageArr = response.data.dataObject;\n\n return languageArr;\n}\n\nconst getWebsiteLanguages = async (code) => {\n let apiURL = `${languageServiceUrl}/languageService/websiteLanguage`;\n let response = await axios.get(apiURL);\n return response.data.dataObject;\n}\n\nconst getMessages = async (messageId, languageCode) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\nconst getValueMessages = async (messageId, languageCode, values) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode,\n values: values\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\nconst getFieldConsoleMessages = async (messageId, languageCode, fieldsConsole) => {\n let apiURL = `${languageServiceUrl}/languageService/responseEngine`;\n let queryParam = {\n params: {\n messageId: messageId,\n languageCode: languageCode,\n fieldsConsole: JSON.stringify(fieldsConsole)\n }\n }\n\n let response = await axios.get(apiURL, queryParam);\n let message = response.data.message;\n return message;\n}\n\n\nexport {\n getLanguageGuid,\n getAllLanguages,\n getMessages,\n getValueMessages,\n getFieldConsoleMessages,\n getWebsiteLanguages\n}","'use strict';\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\n\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function 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 };\n };\n\n return error;\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 */\n\nexport var defaultConfig = {\n keyPrefix: 'aws-amplify-cache',\n capacityInBytes: 1048576,\n itemMaxSize: 210000,\n defaultTTL: 259200000,\n defaultPriority: 5,\n warningThreshold: 0.8,\n // the storage helper will check if localStorage exists,\n // if not, will use a in-memory object instead\n storage: new StorageHelper().getStorage()\n};\n/**\n * return the byte size of the string\n * @param str\n */\n\nexport function getByteLength(str) {\n var ret = 0;\n ret = str.length;\n\n for (var i = str.length; i >= 0; i -= 1) {\n var charCode = str.charCodeAt(i);\n\n if (charCode > 0x7f && charCode <= 0x7ff) {\n ret += 1;\n } else if (charCode > 0x7ff && charCode <= 0xffff) {\n ret += 2;\n } // trail surrogate\n\n\n if (charCode >= 0xdc00 && charCode <= 0xdfff) {\n i -= 1;\n }\n }\n\n return ret;\n}\n/**\n * get current time\n */\n\nexport function getCurrTime() {\n var currTime = new Date();\n return currTime.getTime();\n}\n/**\n * check if passed value is an integer\n */\n\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n }\n\n return _isInteger(value);\n}\n\nfunction _isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n/**\n * provide an object as the in-memory cache\n */\n\n\nvar store = {};\n\nvar CacheObject =\n/** @class */\nfunction () {\n function CacheObject() {}\n\n CacheObject.clear = function () {\n store = {};\n };\n\n CacheObject.getItem = function (key) {\n return store[key] || null;\n };\n\n CacheObject.setItem = function (key, value) {\n store[key] = value;\n };\n\n CacheObject.removeItem = function (key) {\n delete store[key];\n };\n\n return CacheObject;\n}();\n\nexport { CacheObject };","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nimport { defaultConfig, getCurrTime } from './Utils';\nimport { StorageCache } from './StorageCache';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('Cache');\n/**\n * Customized storage based on the SessionStorage or LocalStorage with LRU implemented\n */\n\nvar BrowserStorageCacheClass =\n/** @class */\nfunction (_super) {\n __extends(BrowserStorageCacheClass, _super);\n /**\n * initialize the cache\n * @param config - the configuration of the cache\n */\n\n\n function BrowserStorageCacheClass(config) {\n var _this = this;\n\n var cacheConfig = config ? Object.assign({}, defaultConfig, config) : defaultConfig;\n _this = _super.call(this, cacheConfig) || this;\n _this.config.storage = cacheConfig.storage;\n _this.getItem = _this.getItem.bind(_this);\n _this.setItem = _this.setItem.bind(_this);\n _this.removeItem = _this.removeItem.bind(_this);\n return _this;\n }\n /**\n * decrease current size of the cache\n *\n * @private\n * @param amount - the amount of the cache size which needs to be decreased\n */\n\n\n 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\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\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\n\n BrowserStorageCacheClass.prototype._isExpired = function (key) {\n var text = this.config.storage.getItem(key);\n var item = JSON.parse(text);\n\n if (getCurrTime() >= item.expires) {\n return true;\n }\n\n return false;\n };\n /**\n * delete item from cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param size - optional, the byte size of the item\n */\n\n\n BrowserStorageCacheClass.prototype._removeItem = function (prefixedKey, size) {\n var itemSize = size ? size : JSON.parse(this.config.storage.getItem(prefixedKey)).byteSize;\n\n this._decreaseCurSizeInBytes(itemSize); // remove the cache item\n\n\n this.config.storage.removeItem(prefixedKey);\n };\n /**\n * put item into cache\n *\n * @private\n * @param prefixedKey - the key of the item\n * @param itemData - the value of the item\n * @param itemSizeInBytes - the byte size of the item\n */\n\n\n BrowserStorageCacheClass.prototype._setItem = function (prefixedKey, item) {\n // update the cache size\n this._increaseCurSizeInBytes(item.byteSize);\n\n try {\n this.config.storage.setItem(prefixedKey, JSON.stringify(item));\n } catch (setItemErr) {\n // if failed, we need to rollback the cache size\n this._decreaseCurSizeInBytes(item.byteSize);\n\n logger.error(\"Failed to set item \" + setItemErr);\n }\n };\n /**\n * total space needed when poping out items\n *\n * @private\n * @param itemSize\n *\n * @return total space needed\n */\n\n\n 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 ? spaceItemNeed : cacheThresholdSpace;\n };\n /**\n * see whether cache is full\n *\n * @private\n * @param itemSize\n *\n * @return true if cache is full\n */\n\n\n 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\n\n BrowserStorageCacheClass.prototype._findValidKeys = function () {\n var keys = [];\n var keyInCache = []; // get all keys in Storage\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n keyInCache.push(this.config.storage.key(i));\n } // find those items which belong to our cache and also clean those expired items\n\n\n for (var i = 0; i < keyInCache.length; i += 1) {\n var key = keyInCache[i];\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n if (this._isExpired(key)) {\n this._removeItem(key);\n } else {\n keys.push(key);\n }\n }\n }\n\n return keys;\n };\n /**\n * get all the items we have, sort them by their priority,\n * if priority is same, sort them by their last visited time\n * pop out items from the low priority (5 is the lowest)\n *\n * @private\n * @param keys - all the keys in this cache\n * @param sizeToPop - the total size of the items which needed to be poped out\n */\n\n\n BrowserStorageCacheClass.prototype._popOutItems = function (keys, sizeToPop) {\n var items = [];\n var remainedSize = sizeToPop; // get the items from Storage\n\n for (var i = 0; i < keys.length; i += 1) {\n var val = this.config.storage.getItem(keys[i]);\n\n if (val != null) {\n var item = JSON.parse(val);\n items.push(item);\n }\n } // first compare priority\n // then compare visited time\n\n\n items.sort(function (a, b) {\n if (a.priority > b.priority) {\n return -1;\n } else if (a.priority < b.priority) {\n return 1;\n } else {\n if (a.visitedTime < b.visitedTime) {\n return -1;\n } else return 1;\n }\n });\n\n for (var i = 0; i < items.length; i += 1) {\n // pop out items until we have enough room for new item\n this._removeItem(items[i].key, items[i].byteSize);\n\n remainedSize -= items[i].byteSize;\n\n if (remainedSize <= 0) {\n return;\n }\n }\n };\n /**\n * Set item into cache. You can put number, string, boolean or object.\n * The cache will first check whether has the same key.\n * If it has, it will delete the old item and then put the new item in\n * The cache will pop out items if it is full\n * You can specify the cache item options. The cache will abort and output a warning:\n * If the key is invalid\n * If the size of the item exceeds itemMaxSize.\n * If the value is undefined\n * If incorrect cache item configuration\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param value - the value of the item\n * @param {Object} [options] - optional, the specified meta-data\n */\n\n\n 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; // invalid keys\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return;\n }\n\n if (typeof value === 'undefined') {\n logger.warn(\"The value of item should not be undefined!\");\n return;\n }\n\n var cacheItemOptions = {\n priority: options && options.priority !== undefined ? options.priority : this.config.defaultPriority,\n expires: options && options.expires !== undefined ? options.expires : this.config.defaultTTL + getCurrTime()\n };\n\n if (cacheItemOptions.priority < 1 || cacheItemOptions.priority > 5) {\n logger.warn(\"Invalid parameter: priority due to out or range. It should be within 1 and 5.\");\n return;\n }\n\n var item = this.fillCacheItem(prefixedKey, value, cacheItemOptions); // check wether this item is too big;\n\n if (item.byteSize > this.config.itemMaxSize) {\n logger.warn(\"Item with key: \" + key + \" you are trying to put into is too big!\");\n return;\n }\n\n try {\n // first look into the storage, if it exists, delete it.\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n } // check whether the cache is full\n\n\n if (this._isCacheFull(item.byteSize)) {\n var validKeys = this._findValidKeys(); // check again and then pop out items\n\n\n if (this._isCacheFull(item.byteSize)) {\n var sizeToPop = this._sizeToPop(item.byteSize);\n\n this._popOutItems(validKeys, sizeToPop);\n }\n } // put item in the cache\n // may failed due to storage full\n\n\n this._setItem(prefixedKey, item);\n } catch (e) {\n logger.warn(\"setItem failed! \" + e);\n }\n };\n /**\n * Get item from cache. It will return null if item doesn’t exist or it has been expired.\n * If you specified callback function in the options,\n * then the function will be executed if no such item in the cache\n * and finally put the return value into cache.\n * Please make sure the callback function will return the value you want to put into the cache.\n * The cache will abort output a warning:\n * If the key is invalid\n * If error happened with browser storage\n *\n * @param key - the key of the item\n * @param {Object} [options] - the options of callback function\n *\n * @return - return the value of the item\n */\n\n\n 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\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n logger.warn(\"Invalid key: should not be empty or 'CurSize'\");\n return null;\n }\n\n try {\n ret = this.config.storage.getItem(prefixedKey);\n\n if (ret != null) {\n if (this._isExpired(prefixedKey)) {\n // if expired, remove that item and return null\n this._removeItem(prefixedKey, JSON.parse(ret).byteSize);\n\n ret = null;\n } else {\n // if not expired, great, return the value and refresh it\n var item = JSON.parse(ret);\n item = this._refreshItem(item, prefixedKey);\n return item.data;\n }\n }\n\n if (options && options.callback !== undefined) {\n var val = options.callback();\n\n if (val !== null) {\n this.setItem(key, val, options);\n }\n\n return val;\n }\n\n return null;\n } catch (e) {\n logger.warn(\"getItem failed! \" + e);\n return null;\n }\n };\n /**\n * remove item from the cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n * @param key - the key of the item\n */\n\n\n BrowserStorageCacheClass.prototype.removeItem = function (key) {\n logger.log(\"Remove item: key is \" + key);\n var prefixedKey = this.config.keyPrefix + key;\n\n if (prefixedKey === this.config.keyPrefix || prefixedKey === this.cacheCurSizeKey) {\n return;\n }\n\n try {\n var val = this.config.storage.getItem(prefixedKey);\n\n if (val) {\n this._removeItem(prefixedKey, JSON.parse(val).byteSize);\n }\n } catch (e) {\n logger.warn(\"removeItem failed! \" + e);\n }\n };\n /**\n * clear the entire cache\n * The cache will abort output a warning:\n * If error happened with browser storage\n */\n\n\n BrowserStorageCacheClass.prototype.clear = function () {\n logger.log(\"Clear Cache\");\n var keysToRemove = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0) {\n keysToRemove.push(key);\n }\n }\n\n try {\n for (var i = 0; i < keysToRemove.length; i += 1) {\n this.config.storage.removeItem(keysToRemove[i]);\n }\n } catch (e) {\n logger.warn(\"clear failed! \" + e);\n }\n };\n /**\n * Return all the keys in the cache.\n *\n * @return - all keys in the cache\n */\n\n\n BrowserStorageCacheClass.prototype.getAllKeys = function () {\n var keys = [];\n\n for (var i = 0; i < this.config.storage.length; i += 1) {\n var key = this.config.storage.key(i);\n\n if (key.indexOf(this.config.keyPrefix) === 0 && key !== this.cacheCurSizeKey) {\n keys.push(key.substring(this.config.keyPrefix.length));\n }\n }\n\n return keys;\n };\n /**\n * return the current size of the cache\n *\n * @return - current size of the cache\n */\n\n\n BrowserStorageCacheClass.prototype.getCacheCurSize = function () {\n var ret = this.config.storage.getItem(this.cacheCurSizeKey);\n\n if (!ret) {\n this.config.storage.setItem(this.cacheCurSizeKey, '0');\n ret = '0';\n }\n\n return Number(ret);\n };\n /**\n * Return a new instance of cache with customized configuration.\n * @param config - the customized configuration\n *\n * @return - new instance of Cache\n */\n\n\n 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\n return new BrowserStorageCacheClass(config);\n };\n\n return BrowserStorageCacheClass;\n}(StorageCache);\n\nexport { BrowserStorageCacheClass };\nexport var BrowserStorageCache = new BrowserStorageCacheClass();\n/**\n * @deprecated use named import\n */\n\nexport default BrowserStorageCache;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { getCurrTime, getByteLength, defaultConfig, isInteger } from './Utils';\nimport { ConsoleLogger as Logger } from '@aws-amplify/core';\nvar logger = new Logger('StorageCache');\n/**\n * Initialization of the cache\n *\n */\n\nvar StorageCache =\n/** @class */\nfunction () {\n /**\n * Initialize the cache\n * @param config - the configuration of the cache\n */\n function StorageCache(config) {\n this.config = Object.assign({}, config);\n this.cacheCurSizeKey = this.config.keyPrefix + 'CurSize';\n this.checkConfig();\n }\n\n StorageCache.prototype.getModuleName = function () {\n return 'Cache';\n };\n\n StorageCache.prototype.checkConfig = function () {\n // check configuration\n if (!isInteger(this.config.capacityInBytes)) {\n logger.error('Invalid parameter: capacityInBytes. It should be an Integer. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n\n if (!isInteger(this.config.itemMaxSize)) {\n logger.error('Invalid parameter: itemMaxSize. It should be an Integer. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (!isInteger(this.config.defaultTTL)) {\n logger.error('Invalid parameter: defaultTTL. It should be an Integer. Setting back to default.');\n this.config.defaultTTL = defaultConfig.defaultTTL;\n }\n\n if (!isInteger(this.config.defaultPriority)) {\n logger.error('Invalid parameter: defaultPriority. It should be an Integer. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (this.config.itemMaxSize > this.config.capacityInBytes) {\n logger.error('Invalid parameter: itemMaxSize. It should be smaller than capacityInBytes. Setting back to default.');\n this.config.itemMaxSize = defaultConfig.itemMaxSize;\n }\n\n if (this.config.defaultPriority > 5 || this.config.defaultPriority < 1) {\n logger.error('Invalid parameter: defaultPriority. It should be between 1 and 5. Setting back to default.');\n this.config.defaultPriority = defaultConfig.defaultPriority;\n }\n\n if (Number(this.config.warningThreshold) > 1 || Number(this.config.warningThreshold) < 0) {\n logger.error('Invalid parameter: warningThreshold. It should be between 0 and 1. Setting back to default.');\n this.config.warningThreshold = defaultConfig.warningThreshold;\n } // set 5MB limit\n\n\n var cacheLimit = 5 * 1024 * 1024;\n\n if (this.config.capacityInBytes > cacheLimit) {\n logger.error('Cache Capacity should be less than 5MB. Setting back to default. Setting back to default.');\n this.config.capacityInBytes = defaultConfig.capacityInBytes;\n }\n };\n /**\n * produce a JSON object with meta-data and data value\n * @param value - the value of the item\n * @param options - optional, the specified meta-data\n *\n * @return - the item which has the meta-data and the value\n */\n\n\n StorageCache.prototype.fillCacheItem = function (key, value, options) {\n var ret = {\n key: key,\n data: value,\n timestamp: getCurrTime(),\n visitedTime: getCurrTime(),\n priority: options.priority,\n expires: options.expires,\n type: typeof value,\n byteSize: 0\n };\n ret.byteSize = getByteLength(JSON.stringify(ret)); // for accurate size\n\n ret.byteSize = getByteLength(JSON.stringify(ret));\n return ret;\n };\n /**\n * set cache with customized configuration\n * @param config - customized configuration\n *\n * @return - the current configuration\n */\n\n\n StorageCache.prototype.configure = function (config) {\n if (!config) {\n return this.config;\n }\n\n if (config.keyPrefix) {\n logger.warn(\"Don't try to configure keyPrefix!\");\n }\n\n this.config = Object.assign({}, this.config, config, config.Cache);\n this.checkConfig();\n return this.config;\n };\n\n return StorageCache;\n}();\n\nexport { StorageCache };\n/**\n * @deprecated use named import\n */\n\nexport default StorageCache;","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nimport { Amplify } from '@aws-amplify/core';\nimport { BrowserStorageCache } from './BrowserStorageCache';\nimport { InMemoryCache } from './InMemoryCache';\nexport { BrowserStorageCache, InMemoryCache };\n/**\n * @deprecated use named import\n */\n\nexport default BrowserStorageCache;\nAmplify.register(BrowserStorageCache);","var rng = require('./lib/rng');\n\nvar bytesToUuid = require('./lib/bytesToUuid');\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nmodule.exports = v4;","'use strict';\n\nvar bind = require('./helpers/bind');\n/*global toString:true*/\n// utils is a library of generic helper functions non-specific to axios\n\n\nvar toString = Object.prototype.toString;\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\n\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\n\n\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\n\n\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\n\n\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\n\n\nfunction isArrayBufferView(val) {\n var result;\n\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n\n return result;\n}\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\n\n\nfunction isString(val) {\n return typeof val === 'string';\n}\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\n\n\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\n\n\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\n\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 * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\n\n\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\n\n\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\n\n\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\n\n\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\n\n\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\n\n\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\n\n\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\n\n\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\n\n\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n } // Force an array if not already something iterable\n\n\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\n\n\nfunction merge()\n/* obj1, obj2, obj3, ... */\n{\n var result = {};\n\n function assignValue(val, key) {\n if (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\n return result;\n}\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\n\n\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n/**\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 */\n\n\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\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};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar tslib_1 = require(\"tslib\");\n\nvar constants_1 = require(\"./constants\");\n\nvar RawSha256_1 = require(\"./RawSha256\");\n\nvar util_utf8_browser_1 = require(\"@aws-sdk/util-utf8-browser\");\n\nvar Sha256 =\n/** @class */\nfunction () {\n function Sha256(secret) {\n this.hash = new RawSha256_1.RawSha256();\n\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\n for (var i = 0; i < constants_1.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer); // overwrite the copied key in memory\n\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n }\n }\n\n Sha256.prototype.update = function (toHash) {\n if (isEmptyData(toHash) || this.error) {\n return;\n }\n\n try {\n this.hash.update(convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n };\n /* This synchronous method keeps compatibility\n * with the v2 aws-sdk.\n */\n\n\n Sha256.prototype.digestSync = function () {\n if (this.error) {\n throw this.error;\n }\n\n if (this.outer) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest();\n }\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\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\n /*return*/\n , this.digestSync()];\n });\n });\n };\n\n return Sha256;\n}();\n\nexports.Sha256 = Sha256;\n\nfunction bufferFromSecret(secret) {\n var input = convertToBuffer(secret);\n\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\n var buffer = new Uint8Array(constants_1.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n\nfunction isEmptyData(data) {\n if (typeof data === \"string\") {\n return data.length === 0;\n }\n\n return data.byteLength === 0;\n}\n\nfunction convertToBuffer(data) {\n if (typeof data === \"string\") {\n return util_utf8_browser_1.fromUtf8(data);\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.And = void 0;\n\nvar And =\n/** @class */\nfunction () {\n function And() {\n this.status = true;\n }\n\n return And;\n}();\n\nexports.And = And;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.OperationFlag = exports.Operation = void 0;\n\nvar And_1 = require(\"./And\");\n\nvar Between_1 = require(\"./Between\");\n\nvar Or_1 = require(\"./Or\");\n\nvar CloseParenthesis_1 = require(\"./CloseParenthesis\");\n\nvar LikeOperation_1 = require(\"./LikeOperation\");\n\nvar StartParenthesis_1 = require(\"./StartParenthesis\");\n\nvar In_1 = require(\"./In\");\n\nvar NotIn_1 = require(\"./NotIn\");\n\nvar EqualOperation_1 = require(\"./EqualOperation\");\n\nvar BetweenReverse_1 = require(\"./BetweenReverse\");\n\nvar GreaterThanComparer_1 = require(\"./GreaterThanComparer\");\n\nvar NotEqualOperation_1 = require(\"./NotEqualOperation\");\n\nvar Operation =\n/** @class */\nfunction () {\n function Operation(p_status) {\n this.IterationCount;\n this._Status = p_status;\n }\n\n Operation.prototype.getIterationCount = function () {\n return this.IterationCount;\n };\n\n Operation.prototype.setIterationCount = function (value) {\n this.IterationCount = value;\n };\n\n Operation.prototype.getOr = function () {\n this._Or = new Or_1.Or();\n return this._Or;\n };\n\n Operation.prototype.setOr = function (value) {\n this._Or = value;\n };\n\n Operation.prototype.getAnd = function () {\n this._And = new And_1.And();\n return this._And;\n };\n\n Operation.prototype.setAnd = function (value) {\n this._And = value;\n };\n\n Operation.prototype.getEqualOperation = function () {\n this._EqualOperation = new EqualOperation_1.EqualOperation();\n return this._EqualOperation;\n };\n\n Operation.prototype.setEqualOperation = function (value) {\n this._EqualOperation = value;\n };\n\n Operation.prototype.getNotEqualOperation = function () {\n this._NotEqualOperation = new NotEqualOperation_1.NotEqualOperation();\n return this._NotEqualOperation;\n };\n\n Operation.prototype.setNotEqualOperation = function (value) {\n this._NotEqualOperation = value;\n };\n\n Operation.prototype.getLikeOperation = function () {\n this._LikeOperation = new LikeOperation_1.LikeOperation();\n return this._LikeOperation;\n };\n\n Operation.prototype.setLikeOperation = function (value) {\n this._LikeOperation = value;\n };\n\n Operation.prototype.getBetween = function () {\n this._Between = new Between_1.Between();\n return this._Between;\n };\n\n Operation.prototype.setBetween = function (value) {\n this._Between = value;\n };\n\n Operation.prototype.getBetweenReverse = function () {\n this._BetweenReverse = new BetweenReverse_1.BetweenReverse();\n return this._BetweenReverse;\n };\n\n Operation.prototype.setBetweenReverse = function (value) {\n this._BetweenReverse = value;\n };\n\n Operation.prototype.getIn = function () {\n this._In = new In_1.In();\n return this._In;\n };\n\n Operation.prototype.setIn = function (value) {\n this._In = value;\n };\n\n Operation.prototype.getNotIn = function () {\n this._NotIn = new NotIn_1.NotIn();\n return this._NotIn;\n };\n\n Operation.prototype.setNotIn = function (value) {\n this._NotIn = value;\n };\n\n Operation.prototype.getStartParenthesis = function () {\n this._StartParenthesis = new StartParenthesis_1.StartParenthesis();\n return this._StartParenthesis;\n };\n\n Operation.prototype.setStartParenthesis = function (value) {\n this._StartParenthesis = value;\n };\n\n Operation.prototype.getCloseParenthesis = function () {\n this._CloseParenthesis = new CloseParenthesis_1.CloseParenthesis();\n return this._CloseParenthesis;\n };\n\n Operation.prototype.setCloseParenthesis = function (value) {\n this._CloseParenthesis = value;\n };\n\n Operation.prototype.getGreaterThan = function () {\n this._GreaterThanComparer = new GreaterThanComparer_1.GreaterThanComparer();\n return this._GreaterThanComparer;\n };\n\n Operation.prototype.setGreaterThan = function (value) {\n this._GreaterThanComparer = value;\n };\n\n Operation.prototype.toJsonString = function () {\n var _this = this;\n\n var strJson = JSON.stringify(this);\n var JsonObj = JSON.parse(strJson);\n Object.keys(this).filter(function (key) {\n return key[0] === \"_\";\n }).forEach(function (key) {\n if (OperationFlag[_this._Status] != key.slice(1)) {\n delete JsonObj[key];\n }\n });\n var strJSON = JSON.stringify(JsonObj);\n Object.keys(JSON.parse(strJSON)).filter(function (key) {\n return key[0] === \"_\";\n }).forEach(function (key) {\n strJSON = strJSON.replace(key, key.substring(1));\n });\n return strJSON;\n };\n\n return Operation;\n}();\n\nexports.Operation = Operation;\nvar OperationFlag;\n\n(function (OperationFlag) {\n OperationFlag[OperationFlag[\"Between\"] = 0] = \"Between\";\n OperationFlag[OperationFlag[\"BetweenReverse\"] = 1] = \"BetweenReverse\";\n OperationFlag[OperationFlag[\"NotIn\"] = 2] = \"NotIn\";\n OperationFlag[OperationFlag[\"EqualOperation\"] = 3] = \"EqualOperation\";\n OperationFlag[OperationFlag[\"LikeOperation\"] = 4] = \"LikeOperation\";\n OperationFlag[OperationFlag[\"And\"] = 5] = \"And\";\n OperationFlag[OperationFlag[\"Or\"] = 6] = \"Or\";\n OperationFlag[OperationFlag[\"In\"] = 7] = \"In\";\n OperationFlag[OperationFlag[\"StartParenthesis\"] = 8] = \"StartParenthesis\";\n OperationFlag[OperationFlag[\"CloseParenthesis\"] = 9] = \"CloseParenthesis\";\n OperationFlag[OperationFlag[\"GreaterThanComparer\"] = 10] = \"GreaterThanComparer\";\n OperationFlag[OperationFlag[\"NotEqualOperation\"] = 11] = \"NotEqualOperation\";\n})(OperationFlag = exports.OperationFlag || (exports.OperationFlag = {}));","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { RestClient } from './RestClient';\nimport { Amplify, ConsoleLogger as Logger, Credentials } from '@aws-amplify/core';\nvar logger = new Logger('RestAPI');\n/**\n * Export Cloud Logic APIs\n */\n\nvar RestAPIClass =\n/** @class */\nfunction () {\n /**\n * Initialize Rest API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function RestAPIClass(options) {\n this._api = null;\n this.Credentials = Credentials;\n this._options = options;\n logger.debug('API Options', this._options);\n }\n\n RestAPIClass.prototype.getModuleName = function () {\n return 'RestAPI';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n RestAPIClass.prototype.configure = function (options) {\n var _a = options || {},\n _b = _a.API,\n API = _b === void 0 ? {} : _b,\n otherOptions = __rest(_a, [\"API\"]);\n\n var opt = __assign(__assign({}, otherOptions), API);\n\n logger.debug('configure Rest API', {\n opt: opt\n });\n\n if (opt['aws_project_region']) {\n if (opt['aws_cloud_logic_custom']) {\n var custom = opt['aws_cloud_logic_custom'];\n opt.endpoints = typeof custom === 'string' ? JSON.parse(custom) : custom;\n }\n\n opt = Object.assign({}, opt, {\n region: opt['aws_project_region'],\n header: {}\n });\n }\n\n if (Array.isArray(opt.endpoints)) {\n // 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' && 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 } else if (this._options && Array.isArray(this._options.endpoints)) {\n opt.endpoints = this._options.endpoints;\n } else {\n opt.endpoints = [];\n }\n\n this._options = Object.assign({}, this._options, opt);\n this.createInstance();\n return this._options;\n };\n /**\n * Create an instance of API for the library\n * @return - A promise of true if Success\n */\n\n\n RestAPIClass.prototype.createInstance = function () {\n logger.debug('create Rest API instance');\n this._api = new RestClient(this._options); // Share Amplify instance with client for SSR\n\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\n\n RestAPIClass.prototype.get = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.get(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.post = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.post(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.put = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.put(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.patch = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.patch(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.del = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.del(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.head = function (apiName, path, init) {\n try {\n var apiInfo = this.getEndpointInfo(apiName, path);\n\n var cancellableToken = this._api.getCancellableToken();\n\n var initParams = Object.assign({}, init);\n initParams.cancellableToken = cancellableToken;\n\n var responsePromise = this._api.head(apiInfo, initParams);\n\n this._api.updateRequestToBeCancellable(responsePromise, cancellableToken);\n\n return responsePromise;\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\n\n RestAPIClass.prototype.isCancel = function (error) {\n return this._api.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n RestAPIClass.prototype.cancel = function (request, message) {\n return this._api.cancel(request, message);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n RestAPIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._api.endpoint(apiName)];\n });\n });\n };\n /**\n * 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\n\n RestAPIClass.prototype.getEndpointInfo = function (apiName, path) {\n var cloud_logic_array = this._options.endpoints;\n\n if (!Array.isArray(cloud_logic_array)) {\n throw new Error(\"API category not configured\");\n }\n\n var apiConfig = cloud_logic_array.find(function (api) {\n return api.name === apiName;\n });\n\n if (!apiConfig) {\n throw new Error(\"API \" + apiName + \" does not exist\");\n }\n\n var response = {\n endpoint: apiConfig.endpoint + path\n };\n\n if (typeof apiConfig.region === 'string') {\n response.region = apiConfig.region;\n } else if (typeof this._options.region === 'string') {\n response.region = this._options.region;\n }\n\n if (typeof apiConfig.service === 'string') {\n response.service = apiConfig.service || 'execute-api';\n } else {\n response.service = 'execute-api';\n }\n\n if (typeof apiConfig.custom_header === 'function') {\n response.custom_header = apiConfig.custom_header;\n } else {\n response.custom_header = undefined;\n }\n\n return response;\n };\n\n return RestAPIClass;\n}();\n\nexport { RestAPIClass };\nexport var RestAPI = new RestAPIClass(null);\nAmplify.register(RestAPI);","var __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/*\n * Copyright 2017-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\n\n\nimport { 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 */\n\nvar APIClass =\n/** @class */\nfunction () {\n /**\n * Initialize API with AWS configuration\n * @param {Object} options - Configuration object for API\n */\n function APIClass(options) {\n this.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\n APIClass.prototype.getModuleName = function () {\n return 'API';\n };\n /**\n * Configure API part with aws configurations\n * @param {Object} config - Configuration of the API\n * @return {Object} - The current configuration\n */\n\n\n APIClass.prototype.configure = function (options) {\n this._options = Object.assign({}, this._options, options); // Share Amplify instance with client for SSR\n\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\n var restAPIConfig = this._restApi.configure(this._options);\n\n var graphQLAPIConfig = this._graphqlApi.configure(this._options);\n\n return __assign(__assign({}, restAPIConfig), graphQLAPIConfig);\n };\n /**\n * Make a GET request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.get = function (apiName, path, init) {\n return this._restApi.get(apiName, path, init);\n };\n /**\n * Make a POST request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.post = function (apiName, path, init) {\n return this._restApi.post(apiName, path, init);\n };\n /**\n * Make a PUT request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.put = function (apiName, path, init) {\n return this._restApi.put(apiName, path, init);\n };\n /**\n * Make a PATCH request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.patch = function (apiName, path, init) {\n return this._restApi.patch(apiName, path, init);\n };\n /**\n * Make a DEL request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.del = function (apiName, path, init) {\n return this._restApi.del(apiName, path, init);\n };\n /**\n * Make a HEAD request\n * @param {string} apiName - The api name of the request\n * @param {string} path - The path of the request\n * @param {json} [init] - Request extra params\n * @return {Promise} - A promise that resolves to an object with response status and JSON data, if successful.\n */\n\n\n APIClass.prototype.head = function (apiName, path, init) {\n return this._restApi.head(apiName, path, init);\n };\n /**\n * Checks to see if an error thrown is from an api request cancellation\n * @param {any} error - Any error\n * @return {boolean} - A boolean indicating if the error was from an api request cancellation\n */\n\n\n APIClass.prototype.isCancel = function (error) {\n return this._restApi.isCancel(error);\n };\n /**\n * Cancels an inflight request\n * @param {any} request - request to cancel\n * @return {boolean} - A boolean indicating if the request was cancelled\n */\n\n\n APIClass.prototype.cancel = function (request, message) {\n return this._restApi.cancel(request, message);\n };\n /**\n * Getting endpoint for API\n * @param {string} apiName - The name of the api\n * @return {string} - The endpoint of the api\n */\n\n\n APIClass.prototype.endpoint = function (apiName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2\n /*return*/\n , this._restApi.endpoint(apiName)];\n });\n });\n };\n /**\n * to get the operation type\n * @param operation\n */\n\n\n APIClass.prototype.getGraphqlOperationType = function (operation) {\n return this._graphqlApi.getGraphqlOperationType(operation);\n };\n /**\n * Executes a GraphQL operation\n *\n * @param {GraphQLOptions} GraphQL Options\n * @param {object} additionalHeaders headers to merge in after any `graphql_headers` set in the config\n * @returns {Promise | Observable}\n */\n\n\n APIClass.prototype.graphql = function (options, additionalHeaders) {\n return this._graphqlApi.graphql(options, additionalHeaders);\n };\n\n return APIClass;\n}();\n\nexport { APIClass };\nexport var API = new APIClass(null);\nAmplify.register(API);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.Observable = void 0;\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n} // === Symbol Support ===\n\n\nvar hasSymbols = function hasSymbols() {\n return typeof Symbol === 'function';\n};\n\nvar hasSymbol = function hasSymbol(name) {\n return hasSymbols() && Boolean(Symbol[name]);\n};\n\nvar getSymbol = function getSymbol(name) {\n return hasSymbol(name) ? Symbol[name] : '@@' + name;\n};\n\nif (hasSymbols() && !hasSymbol('observable')) {\n Symbol.observable = Symbol('observable');\n}\n\nvar SymbolIterator = getSymbol('iterator');\nvar SymbolObservable = getSymbol('observable');\nvar SymbolSpecies = getSymbol('species'); // === Abstract Operations ===\n\nfunction getMethod(obj, key) {\n var value = obj[key];\n if (value == null) return undefined;\n if (typeof value !== 'function') throw new TypeError(value + ' is not a function');\n return value;\n}\n\nfunction getSpecies(obj) {\n var ctor = obj.constructor;\n\n if (ctor !== undefined) {\n ctor = ctor[SymbolSpecies];\n\n if (ctor === null) {\n ctor = undefined;\n }\n }\n\n return ctor !== undefined ? ctor : Observable;\n}\n\nfunction isObservable(x) {\n return x instanceof Observable; // SPEC: Brand check\n}\n\nfunction hostReportError(e) {\n if (hostReportError.log) {\n hostReportError.log(e);\n } else {\n setTimeout(function () {\n throw e;\n });\n }\n}\n\nfunction enqueue(fn) {\n Promise.resolve().then(function () {\n try {\n fn();\n } catch (e) {\n hostReportError(e);\n }\n });\n}\n\nfunction cleanupSubscription(subscription) {\n var cleanup = subscription._cleanup;\n if (cleanup === undefined) return;\n subscription._cleanup = undefined;\n\n if (!cleanup) {\n return;\n }\n\n try {\n if (typeof cleanup === 'function') {\n cleanup();\n } else {\n var unsubscribe = getMethod(cleanup, 'unsubscribe');\n\n if (unsubscribe) {\n unsubscribe.call(cleanup);\n }\n }\n } catch (e) {\n hostReportError(e);\n }\n}\n\nfunction closeSubscription(subscription) {\n subscription._observer = undefined;\n subscription._queue = undefined;\n subscription._state = 'closed';\n}\n\nfunction flushSubscription(subscription) {\n var queue = subscription._queue;\n\n if (!queue) {\n return;\n }\n\n subscription._queue = undefined;\n subscription._state = 'ready';\n\n for (var i = 0; i < queue.length; ++i) {\n notifySubscription(subscription, queue[i].type, queue[i].value);\n if (subscription._state === 'closed') break;\n }\n}\n\nfunction notifySubscription(subscription, type, value) {\n subscription._state = 'running';\n var observer = subscription._observer;\n\n try {\n var m = getMethod(observer, type);\n\n switch (type) {\n case 'next':\n if (m) m.call(observer, value);\n break;\n\n case 'error':\n closeSubscription(subscription);\n if (m) m.call(observer, value);else throw value;\n break;\n\n case 'complete':\n closeSubscription(subscription);\n if (m) m.call(observer);\n break;\n }\n } catch (e) {\n hostReportError(e);\n }\n\n if (subscription._state === 'closed') cleanupSubscription(subscription);else if (subscription._state === 'running') subscription._state = 'ready';\n}\n\nfunction onNotify(subscription, type, value) {\n if (subscription._state === 'closed') return;\n\n if (subscription._state === 'buffering') {\n subscription._queue.push({\n type: type,\n value: value\n });\n\n return;\n }\n\n if (subscription._state !== 'ready') {\n subscription._state = 'buffering';\n subscription._queue = [{\n type: type,\n value: value\n }];\n enqueue(function () {\n return flushSubscription(subscription);\n });\n return;\n }\n\n notifySubscription(subscription, type, value);\n}\n\nvar Subscription = /*#__PURE__*/function () {\n function Subscription(observer, subscriber) {\n _classCallCheck(this, Subscription); // ASSERT: observer is an object\n // ASSERT: subscriber is callable\n\n\n this._cleanup = undefined;\n this._observer = observer;\n this._queue = undefined;\n this._state = 'initializing';\n var subscriptionObserver = new SubscriptionObserver(this);\n\n try {\n this._cleanup = subscriber.call(undefined, subscriptionObserver);\n } catch (e) {\n subscriptionObserver.error(e);\n }\n\n if (this._state === 'initializing') this._state = 'ready';\n }\n\n _createClass(Subscription, [{\n key: \"unsubscribe\",\n value: function unsubscribe() {\n if (this._state !== 'closed') {\n closeSubscription(this);\n cleanupSubscription(this);\n }\n }\n }, {\n key: \"closed\",\n get: function get() {\n return this._state === 'closed';\n }\n }]);\n\n return Subscription;\n}();\n\nvar SubscriptionObserver = /*#__PURE__*/function () {\n function SubscriptionObserver(subscription) {\n _classCallCheck(this, SubscriptionObserver);\n\n this._subscription = subscription;\n }\n\n _createClass(SubscriptionObserver, [{\n key: \"next\",\n value: function next(value) {\n onNotify(this._subscription, 'next', value);\n }\n }, {\n key: \"error\",\n value: function error(value) {\n onNotify(this._subscription, 'error', value);\n }\n }, {\n key: \"complete\",\n value: function complete() {\n onNotify(this._subscription, 'complete');\n }\n }, {\n key: \"closed\",\n get: function get() {\n return this._subscription._state === 'closed';\n }\n }]);\n\n return SubscriptionObserver;\n}();\n\nvar Observable = /*#__PURE__*/function () {\n function Observable(subscriber) {\n _classCallCheck(this, Observable);\n\n if (!(this instanceof Observable)) throw new TypeError('Observable cannot be called as a function');\n if (typeof subscriber !== 'function') throw new TypeError('Observable initializer must be a function');\n this._subscriber = subscriber;\n }\n\n _createClass(Observable, [{\n key: \"subscribe\",\n value: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n observer = {\n next: observer,\n error: arguments[1],\n complete: arguments[2]\n };\n }\n\n return new Subscription(observer, this._subscriber);\n }\n }, {\n key: \"forEach\",\n value: function forEach(fn) {\n var _this = this;\n\n return new Promise(function (resolve, reject) {\n if (typeof fn !== 'function') {\n reject(new TypeError(fn + ' is not a function'));\n return;\n }\n\n function done() {\n subscription.unsubscribe();\n resolve();\n }\n\n var subscription = _this.subscribe({\n next: function next(value) {\n try {\n fn(value, done);\n } catch (e) {\n reject(e);\n subscription.unsubscribe();\n }\n },\n error: reject,\n complete: resolve\n });\n });\n }\n }, {\n key: \"map\",\n value: function map(fn) {\n var _this2 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this2.subscribe({\n next: function next(value) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"filter\",\n value: function filter(fn) {\n var _this3 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n return _this3.subscribe({\n next: function next(value) {\n try {\n if (!fn(value)) return;\n } catch (e) {\n return observer.error(e);\n }\n\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"reduce\",\n value: function reduce(fn) {\n var _this4 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n var hasSeed = arguments.length > 1;\n var hasValue = false;\n var seed = arguments[1];\n var acc = seed;\n return new C(function (observer) {\n return _this4.subscribe({\n next: function next(value) {\n var first = !hasValue;\n hasValue = true;\n\n if (!first || hasSeed) {\n try {\n acc = fn(acc, value);\n } catch (e) {\n return observer.error(e);\n }\n } else {\n acc = value;\n }\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n if (!hasValue && !hasSeed) return observer.error(new TypeError('Cannot reduce an empty sequence'));\n observer.next(acc);\n observer.complete();\n }\n });\n });\n }\n }, {\n key: \"concat\",\n value: function concat() {\n var _this5 = this;\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscription;\n var index = 0;\n\n function startNext(next) {\n subscription = next.subscribe({\n next: function next(v) {\n observer.next(v);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n if (index === sources.length) {\n subscription = undefined;\n observer.complete();\n } else {\n startNext(C.from(sources[index++]));\n }\n }\n });\n }\n\n startNext(_this5);\n return function () {\n if (subscription) {\n subscription.unsubscribe();\n subscription = undefined;\n }\n };\n });\n }\n }, {\n key: \"flatMap\",\n value: function flatMap(fn) {\n var _this6 = this;\n\n if (typeof fn !== 'function') throw new TypeError(fn + ' is not a function');\n var C = getSpecies(this);\n return new C(function (observer) {\n var subscriptions = [];\n\n var outer = _this6.subscribe({\n next: function next(value) {\n if (fn) {\n try {\n value = fn(value);\n } catch (e) {\n return observer.error(e);\n }\n }\n\n var inner = C.from(value).subscribe({\n next: function next(value) {\n observer.next(value);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n var i = subscriptions.indexOf(inner);\n if (i >= 0) subscriptions.splice(i, 1);\n completeIfDone();\n }\n });\n subscriptions.push(inner);\n },\n error: function error(e) {\n observer.error(e);\n },\n complete: function complete() {\n completeIfDone();\n }\n });\n\n function completeIfDone() {\n if (outer.closed && subscriptions.length === 0) observer.complete();\n }\n\n return function () {\n subscriptions.forEach(function (s) {\n return s.unsubscribe();\n });\n outer.unsubscribe();\n };\n });\n }\n }, {\n key: SymbolObservable,\n value: function value() {\n return this;\n }\n }], [{\n key: \"from\",\n value: function from(x) {\n var C = typeof this === 'function' ? this : Observable;\n if (x == null) throw new TypeError(x + ' is not an object');\n var method = getMethod(x, SymbolObservable);\n\n if (method) {\n var observable = method.call(x);\n if (Object(observable) !== observable) throw new TypeError(observable + ' is not an object');\n if (isObservable(observable) && observable.constructor === C) return observable;\n return new C(function (observer) {\n return observable.subscribe(observer);\n });\n }\n\n if (hasSymbol('iterator')) {\n method = getMethod(x, SymbolIterator);\n\n if (method) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = method.call(x)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _item = _step.value;\n observer.next(_item);\n if (observer.closed) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n observer.complete();\n });\n });\n }\n }\n\n if (Array.isArray(x)) {\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < x.length; ++i) {\n observer.next(x[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n\n throw new TypeError(x + ' is not observable');\n }\n }, {\n key: \"of\",\n value: function of() {\n for (var _len2 = arguments.length, items = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n items[_key2] = arguments[_key2];\n }\n\n var C = typeof this === 'function' ? this : Observable;\n return new C(function (observer) {\n enqueue(function () {\n if (observer.closed) return;\n\n for (var i = 0; i < items.length; ++i) {\n observer.next(items[i]);\n if (observer.closed) return;\n }\n\n observer.complete();\n });\n });\n }\n }, {\n key: SymbolSpecies,\n get: function get() {\n return this;\n }\n }]);\n\n return Observable;\n}();\n\nexports.Observable = Observable;\n\nif (hasSymbols()) {\n Object.defineProperty(Observable, Symbol('extensions'), {\n value: {\n symbol: SymbolObservable,\n hostReportError: hostReportError\n },\n configurable: true\n });\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ConditionCreator = void 0;\n\nvar LikeOperation_1 = require(\"./LikeOperation\");\n\nvar EqualOperation_1 = require(\"./EqualOperation\");\n\nvar Where_1 = require(\"./Where\");\n\nvar Operation_1 = require(\"./Operation\");\n\nvar GreaterThanComparer_1 = require(\"./GreaterThanComparer\");\n\nvar NotEqualOperation_1 = require(\"./NotEqualOperation\");\n\nvar ConditionCreator =\n/** @class */\nfunction () {\n function ConditionCreator() {\n this.count = 1;\n }\n\n ConditionCreator.prototype.getSearchCondition = function (objSearchParamLit) {\n var _this = this;\n\n var objWhere = new Where_1.Where();\n var dataTimeString = \"datetime\";\n\n if (objSearchParamLit != null) {\n objSearchParamLit.forEach(function (objParam, index) {\n if (objParam.dataType == null) objParam.dataType = \"String\";\n\n if (objParam.dataType.toLowerCase() == dataTimeString.toLowerCase() && objParam.fieldValueTo != null) {\n objParam.dataType = \"DateTime\";\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.Between);\n operation.getBetween().betweenFromAndTo(objParam.name, objParam.fieldValueFrom, objParam.fieldValueTo, objParam.dataType);\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n } else if (objParam.hasMultValue) {\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.In);\n operation.getIn().inOperand(objParam.name, objParam.dataType, objParam.hasMultValueList); // objParam.hasMultValueList.forEach(itemList => {\n // operation.getIn().addValues(itemList)\n // });\n\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n } else if (objParam.hasMultiParam) {\n _this.getMultiParamCondition(objParam)._OperationList.forEach(function (operatorList) {\n return objWhere._OperationList.push(operatorList);\n });\n } else {\n if (objParam.operation instanceof EqualOperation_1.EqualOperation) {\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.EqualOperation);\n var objEqualOption = objParam.operation;\n operation.getEqualOperation().equalOperand(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n }\n\n if (objParam.operation instanceof NotEqualOperation_1.NotEqualOperation) {\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.NotEqualOperation);\n var objEqualOption = objParam.operation;\n operation.getNotEqualOperation().notEqualOperand(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n }\n\n if (objParam.operation instanceof GreaterThanComparer_1.GreaterThanComparer) {\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.GreaterThanComparer);\n var objEqualOption = objParam.operation;\n operation.getGreaterThan().greaterThanOperand(objParam.name, objParam.secondName, objParam.fieldValueFrom, objParam.dataType);\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n } else if (objParam.operation instanceof LikeOperation_1.LikeOperation) {\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.LikeOperation);\n var objLikeOption = objParam.operation;\n operation.getLikeOperation().likeOperation(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n var objLikeOperation = operation.getLikeOperation();\n\n if (!operation.getLikeOperation().likeMode) {\n operation.getLikeOperation().likeOperation(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n }\n\n operation.setIterationCount(_this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n }\n }\n\n if (objSearchParamLit != undefined && objSearchParamLit.length >= 2 && index != objSearchParamLit.length - 1) {\n if (objParam.isAndOperator) {\n var operationObj = new Operation_1.Operation(Operation_1.OperationFlag.And);\n operationObj.getAnd();\n operationObj.setIterationCount(_this.count++);\n operationObj.toJsonString();\n objWhere.addConditionalParam(operationObj);\n } else if (objParam.isAndOperator == false) {\n var operationObj = new Operation_1.Operation(Operation_1.OperationFlag.Or);\n operationObj.getOr();\n operationObj.setIterationCount(_this.count++);\n operationObj.toJsonString();\n objWhere.addConditionalParam(operationObj);\n } else {\n var operationObj = new Operation_1.Operation(Operation_1.OperationFlag.And);\n operationObj.getAnd();\n operationObj.setIterationCount(_this.count++);\n operationObj.toJsonString();\n objWhere.addConditionalParam(operationObj);\n }\n } // if (objSearchParamLit != undefined && objSearchParamLit[objSearchParamLit.length - 1] != objParam) {\n // let operationObj = new Operation(OperationFlag.And);\n // operationObj.getAnd();\n // operationObj.setIterationCount(this.count++);\n // operationObj.toJsonString();\n // objWhere.addConditionalParam(operationObj);\n // }\n\n });\n }\n\n return objWhere;\n };\n\n ConditionCreator.prototype.getMultiParamCondition = function (objSearchParam) {\n var _this = this;\n\n var objWhere = new Where_1.Where();\n var dataTimeString = \"datetime\";\n\n if (objSearchParam.hasMultiParam) {\n if (objSearchParam.multiparams != undefined && objSearchParam.multiparams.length > 0) {\n var operationObj = new Operation_1.Operation(Operation_1.OperationFlag.StartParenthesis);\n operationObj.getStartParenthesis();\n operationObj.setIterationCount(this.count++);\n operationObj.toJsonString();\n objWhere.addConditionalParam(operationObj);\n objSearchParam.multiparams.forEach(function (objParam, index) {\n if (objParam.dataType == null) {\n objParam.dataType = \"string\";\n }\n\n if (objParam.dataType.toLowerCase() == dataTimeString.toLowerCase() && objParam.fieldValueTo != null) {\n objParam.dataType = \"DateTime\";\n var operation_1 = new Operation_1.Operation(Operation_1.OperationFlag.Between);\n operation_1.getBetween().betweenFromAndTo(objParam.name, objParam.fieldValueFrom, objParam.fieldValueTo, objParam.dataType);\n operation_1.setIterationCount(_this.count++);\n operation_1.toJsonString();\n objWhere.addConditionalParam(operation_1);\n } else if (objParam.hasMultValue) {\n var operation_2 = new Operation_1.Operation(Operation_1.OperationFlag.In);\n operation_2.getIn().inOperand(objParam.name, objParam.dataType, objParam.hasMultValueList); // objParam.hasMultValueList.forEach(itemList => {\n // operation.getIn().addValues(itemList)\n // });\n\n operation_2.setIterationCount(_this.count++);\n operation_2.toJsonString();\n objWhere.addConditionalParam(operation_2);\n } else if (objParam.hasMultiParams) {\n var operation_3 = new Operation_1.Operation(Operation_1.OperationFlag.In);\n operation_3.getIn().inOperand(objParam.name, objParam.dataType, objParam.hasMultValueList); // objParam.hasMultValueList.forEach(itemList => {\n // operation.getIn().addValues(itemList)\n // });\n\n operation_3.setIterationCount(_this.count++);\n operation_3.toJsonString();\n objWhere.addConditionalParam(operation_3);\n } else {\n if (objSearchParam.operation instanceof EqualOperation_1.EqualOperation) {\n var operation_4 = new Operation_1.Operation(Operation_1.OperationFlag.EqualOperation);\n var objEqualOption = objParam.operation;\n operation_4.getEqualOperation().equalOperand(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n operation_4.setIterationCount(_this.count++);\n operation_4.toJsonString();\n objWhere.addConditionalParam(operation_4);\n }\n\n if (objSearchParam.operation instanceof GreaterThanComparer_1.GreaterThanComparer) {\n var operation_5 = new Operation_1.Operation(Operation_1.OperationFlag.GreaterThanComparer);\n var objEqualOption = objParam.operation;\n operation_5.getGreaterThan().greaterThanOperand(objParam.name, objParam.secondName, objParam.fieldValueFrom, objParam.dataType);\n operation_5.setIterationCount(_this.count++);\n operation_5.toJsonString();\n objWhere.addConditionalParam(operation_5);\n } else if (objSearchParam.operation instanceof LikeOperation_1.LikeOperation) {\n var operation_6 = new Operation_1.Operation(Operation_1.OperationFlag.LikeOperation);\n var objLikeOption = objParam.operation;\n operation_6.getLikeOperation().likeOperation(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n\n if (!operation_6.getLikeOperation().likeMode) {\n operation_6.getLikeOperation().likeOperation(objParam.name, objParam.fieldValueFrom, objParam.dataType);\n }\n\n operation_6.setIterationCount(_this.count++);\n operation_6.toJsonString();\n objWhere.addConditionalParam(operation_6);\n }\n } // if (objSearchParam.multiparams != undefined && objSearchParam.multiparams.length > 0 && objSearchParam.multiparams[objSearchParam.multiparams.length - 1] != objParam) {\n // let operation = new Operation(OperationFlag.Or);\n // operation.getOr();\n // operation.setIterationCount(this.count++);\n // operation.toJsonString();\n // objWhere.addConditionalParam(operation);\n // }\n\n\n if (objSearchParam.multiparams != undefined && objSearchParam.multiparams.length >= 2 && index != objSearchParam.multiparams.length - 1) {\n if (objParam.isAndOperator) {\n var operationObj_1 = new Operation_1.Operation(Operation_1.OperationFlag.And);\n operationObj_1.getAnd();\n operationObj_1.setIterationCount(_this.count++);\n operationObj_1.toJsonString();\n objWhere.addConditionalParam(operationObj_1);\n } else if (objParam.isAndOperator == false) {\n var operationObj_2 = new Operation_1.Operation(Operation_1.OperationFlag.And);\n operationObj_2.getAnd();\n operationObj_2.setIterationCount(_this.count++);\n operationObj_2.toJsonString();\n objWhere.addConditionalParam(operationObj_2);\n } else {\n var operationObj_3 = new Operation_1.Operation(Operation_1.OperationFlag.Or);\n operationObj_3.getOr();\n operationObj_3.setIterationCount(_this.count++);\n operationObj_3.toJsonString();\n objWhere.addConditionalParam(operationObj_3);\n }\n }\n });\n var operation = new Operation_1.Operation(Operation_1.OperationFlag.CloseParenthesis);\n operation.getCloseParenthesis();\n operation.setIterationCount(this.count++);\n operation.toJsonString();\n objWhere.addConditionalParam(operation);\n }\n }\n\n return objWhere;\n };\n\n return ConditionCreator;\n}();\n\nexports.ConditionCreator = ConditionCreator;","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\n\nvar settle = require('./../core/settle');\n\nvar cookies = require('./../helpers/cookies');\n\nvar buildURL = require('./../helpers/buildURL');\n\nvar buildFullPath = require('../core/buildFullPath');\n\nvar parseHeaders = require('./../helpers/parseHeaders');\n\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\n\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest(); // HTTP basic authentication\n\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? 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); // Set the request timeout in MS\n\n request.timeout = config.timeout; // Listen for ready state\n\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n } // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n\n\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n } // Prepare the response\n\n\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response); // Clean up request\n\n request = null;\n }; // Handle browser request cancellation (as opposed to a manual cancellation)\n\n\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Handle low level network errors\n\n\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request)); // Clean up request\n\n request = null;\n }; // Handle timeout\n\n\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', request)); // Clean up request\n\n request = null;\n }; // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n } // Add headers to the request\n\n\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n } // Add withCredentials to request if needed\n\n\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n } // Add responseType to request if needed\n\n\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n } // Handle progress if needed\n\n\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n } // Not all browsers support upload events\n\n\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel); // Clean up request\n\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n } // Send the request\n\n\n request.send(requestData);\n });\n};","/*\n * Copyright 2017-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You may not use this file except in compliance with\n * the License. A copy of the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR\n * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions\n * and limitations under the License.\n */\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nimport { ConsoleLogger as Logger } from './Logger';\nimport { Sha256 as jsSha256 } from '@aws-crypto/sha256-js';\nimport { toHex } from '@aws-sdk/util-hex-encoding';\nimport { parse, format } from 'url';\nimport { DateUtils } from './Util';\nvar logger = new Logger('Signer');\nvar DEFAULT_ALGORITHM = 'AWS4-HMAC-SHA256';\nvar IOT_SERVICE_NAME = 'iotdevicegateway';\n\nvar encrypt = function encrypt(key, src) {\n var hash = new jsSha256(key);\n hash.update(src);\n return hash.digestSync();\n};\n\nvar hash = function hash(src) {\n var arg = src || '';\n var hash = new jsSha256();\n hash.update(arg);\n return toHex(hash.digestSync());\n};\n/**\n * @private\n * RFC 3986 compliant version of encodeURIComponent\n */\n\n\nvar escape_RFC3986 = function escape_RFC3986(component) {\n return component.replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n};\n/**\n * @private\n * Create canonical query string\n *\n */\n\n\nvar canonical_query = function canonical_query(query) {\n if (!query || query.length === 0) {\n return '';\n }\n\n return query.split('&').map(function (e) {\n var key_val = e.split('=');\n\n if (key_val.length === 1) {\n return e;\n } else {\n var reencoded_val = escape_RFC3986(key_val[1]);\n return key_val[0] + '=' + reencoded_val;\n }\n }).sort(function (a, b) {\n var key_a = a.split('=')[0];\n var key_b = b.split('=')[0];\n\n if (key_a === key_b) {\n return a < b ? -1 : 1;\n } else {\n return key_a < key_b ? -1 : 1;\n }\n }).join('&');\n};\n/**\n* @private\n* Create canonical headers\n*\n
\nCanonicalHeaders =\n    CanonicalHeadersEntry0 + CanonicalHeadersEntry1 + ... + CanonicalHeadersEntryN\nCanonicalHeadersEntry =\n    Lowercase(HeaderName) + ':' + Trimall(HeaderValue) + '\\n'\n
\n*/\n\n\nvar canonical_headers = function canonical_headers(headers) {\n if (!headers || Object.keys(headers).length === 0) {\n return '';\n }\n\n return Object.keys(headers).map(function (key) {\n return {\n key: key.toLowerCase(),\n value: headers[key] ? headers[key].trim().replace(/\\s+/g, ' ') : ''\n };\n }).sort(function (a, b) {\n return a.key < b.key ? -1 : 1;\n }).map(function (item) {\n return item.key + ':' + item.value;\n }).join('\\n') + '\\n';\n};\n/**\n * List of header keys included in the canonical headers.\n * @access private\n */\n\n\nvar signed_headers = function signed_headers(headers) {\n return Object.keys(headers).map(function (key) {\n return key.toLowerCase();\n }).sort().join(';');\n};\n/**\n* @private\n* Create canonical request\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html|Create a Canonical Request}\n*\n
\nCanonicalRequest =\n    HTTPRequestMethod + '\\n' +\n    CanonicalURI + '\\n' +\n    CanonicalQueryString + '\\n' +\n    CanonicalHeaders + '\\n' +\n    SignedHeaders + '\\n' +\n    HexEncode(Hash(RequestPayload))\n
\n*/\n\n\nvar canonical_request = function canonical_request(request) {\n var url_info = parse(request.url);\n return [request.method || '/', encodeURIComponent(url_info.pathname).replace(/%2F/gi, '/'), canonical_query(url_info.query), canonical_headers(request.headers), signed_headers(request.headers), hash(request.data)].join('\\n');\n};\n\nvar parse_service_info = function parse_service_info(request) {\n var url_info = parse(request.url),\n host = url_info.host;\n var matched = host.match(/([^\\.]+)\\.(?:([^\\.]*)\\.)?amazonaws\\.com$/);\n var parsed = (matched || []).slice(1, 3);\n\n if (parsed[1] === 'es') {\n // Elastic Search\n parsed = parsed.reverse();\n }\n\n return {\n service: request.service || parsed[0],\n region: request.region || parsed[1]\n };\n};\n\nvar credential_scope = function credential_scope(d_str, region, service) {\n return [d_str, region, service, 'aws4_request'].join('/');\n};\n/**\n* @private\n* Create a string to sign\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html|Create String to Sign}\n*\n
\nStringToSign =\n    Algorithm + \\n +\n    RequestDateTime + \\n +\n    CredentialScope + \\n +\n    HashedCanonicalRequest\n
\n*/\n\n\nvar string_to_sign = function string_to_sign(algorithm, canonical_request, dt_str, scope) {\n return [algorithm, dt_str, scope, hash(canonical_request)].join('\\n');\n};\n/**\n* @private\n* Create signing key\n* Refer to\n* {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html|Calculate Signature}\n*\n
\nkSecret = your secret access key\nkDate = HMAC(\"AWS4\" + kSecret, Date)\nkRegion = HMAC(kDate, Region)\nkService = HMAC(kRegion, Service)\nkSigning = HMAC(kService, \"aws4_request\")\n
\n*/\n\n\nvar get_signing_key = function get_signing_key(secret_key, d_str, service_info) {\n logger.debug(service_info);\n var k = 'AWS4' + secret_key,\n k_date = encrypt(k, d_str),\n k_region = encrypt(k_date, service_info.region),\n k_service = encrypt(k_region, service_info.service),\n k_signing = encrypt(k_service, 'aws4_request');\n return k_signing;\n};\n\nvar get_signature = function get_signature(signing_key, str_to_sign) {\n return toHex(encrypt(signing_key, str_to_sign));\n};\n/**\n * @private\n * Create authorization header\n * Refer to\n * {@link http://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html|Add the Signing Information}\n */\n\n\nvar get_authorization_header = function get_authorization_header(algorithm, access_key, scope, signed_headers, signature) {\n return [algorithm + ' ' + 'Credential=' + access_key + '/' + scope, 'SignedHeaders=' + signed_headers, 'Signature=' + signature].join(', ');\n};\n\nvar Signer =\n/** @class */\nfunction () {\n function Signer() {}\n /**\n * Sign a HTTP request, add 'Authorization' header to request param\n * @method sign\n * @memberof Signer\n * @static\n *\n * @param {object} request - HTTP request object\n
\n  request: {\n      method: GET | POST | PUT ...\n      url: ...,\n      headers: {\n          header1: ...\n      },\n      data: data\n  }\n  
\n * @param {object} access_info - AWS access credential info\n
\n  access_info: {\n      access_key: ...,\n      secret_key: ...,\n      session_token: ...\n  }\n  
\n * @param {object} [service_info] - AWS service type and region, optional,\n * if not provided then parse out from url\n
\n  service_info: {\n      service: ...,\n      region: ...\n  }\n  
\n *\n * @returns {object} Signed HTTP request\n */\n\n\n Signer.sign = function (request, access_info, service_info) {\n if (service_info === void 0) {\n service_info = null;\n }\n\n request.headers = request.headers || {}; // datetime string and date string\n\n var dt = DateUtils.getDateWithClockOffset(),\n dt_str = dt.toISOString().replace(/[:\\-]|\\.\\d{3}/g, ''),\n d_str = dt_str.substr(0, 8);\n var url_info = parse(request.url);\n request.headers['host'] = url_info.host;\n request.headers['x-amz-date'] = dt_str;\n\n if (access_info.session_token) {\n request.headers['X-Amz-Security-Token'] = access_info.session_token;\n } // Task 1: Create a Canonical Request\n\n\n var request_str = canonical_request(request);\n logger.debug(request_str); // Task 2: Create a String to Sign\n\n var serviceInfo = service_info || parse_service_info(request),\n scope = credential_scope(d_str, serviceInfo.region, serviceInfo.service),\n str_to_sign = string_to_sign(DEFAULT_ALGORITHM, request_str, dt_str, scope); // Task 3: Calculate the Signature\n\n var signing_key = get_signing_key(access_info.secret_key, d_str, serviceInfo),\n signature = get_signature(signing_key, str_to_sign); // Task 4: Adding the Signing information to the Request\n\n var authorization_header = get_authorization_header(DEFAULT_ALGORITHM, access_info.access_key, scope, signed_headers(request.headers), signature);\n request.headers['Authorization'] = authorization_header;\n return request;\n };\n\n Signer.signUrl = function (urlOrRequest, accessInfo, serviceInfo, expiration) {\n var urlToSign = typeof urlOrRequest === 'object' ? urlOrRequest.url : urlOrRequest;\n var method = typeof urlOrRequest === 'object' ? urlOrRequest.method : 'GET';\n var body = typeof urlOrRequest === 'object' ? urlOrRequest.body : undefined;\n var now = DateUtils.getDateWithClockOffset().toISOString().replace(/[:\\-]|\\.\\d{3}/g, '');\n var today = now.substr(0, 8); // Intentionally discarding search\n\n var _a = parse(urlToSign, true, true),\n search = _a.search,\n parsedUrl = __rest(_a, [\"search\"]);\n\n var host = parsedUrl.host;\n var signedHeaders = {\n host: host\n };\n\n var _b = serviceInfo || parse_service_info({\n url: format(parsedUrl)\n }),\n region = _b.region,\n service = _b.service;\n\n var credentialScope = credential_scope(today, region, service); // IoT service does not allow the session token in the canonical request\n // https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html\n\n var sessionTokenRequired = accessInfo.session_token && service !== IOT_SERVICE_NAME;\n\n var queryParams = __assign(__assign(__assign({\n 'X-Amz-Algorithm': DEFAULT_ALGORITHM,\n 'X-Amz-Credential': [accessInfo.access_key, credentialScope].join('/'),\n 'X-Amz-Date': now.substr(0, 16)\n }, sessionTokenRequired ? {\n 'X-Amz-Security-Token': \"\" + accessInfo.session_token\n } : {}), expiration ? {\n 'X-Amz-Expires': \"\" + expiration\n } : {}), {\n 'X-Amz-SignedHeaders': Object.keys(signedHeaders).join(',')\n });\n\n var canonicalRequest = canonical_request({\n method: method,\n url: format(__assign(__assign({}, parsedUrl), {\n query: __assign(__assign({}, parsedUrl.query), queryParams)\n })),\n headers: signedHeaders,\n data: body\n });\n var stringToSign = string_to_sign(DEFAULT_ALGORITHM, canonicalRequest, now, credentialScope);\n var signing_key = get_signing_key(accessInfo.secret_key, today, {\n region: region,\n service: service\n });\n var signature = get_signature(signing_key, stringToSign);\n\n var additionalQueryParams = __assign({\n 'X-Amz-Signature': signature\n }, accessInfo.session_token && {\n 'X-Amz-Security-Token': accessInfo.session_token\n });\n\n var result = format({\n protocol: parsedUrl.protocol,\n slashes: true,\n hostname: parsedUrl.hostname,\n port: parsedUrl.port,\n pathname: parsedUrl.pathname,\n query: __assign(__assign(__assign({}, parsedUrl.query), queryParams), additionalQueryParams)\n });\n return result;\n };\n\n return Signer;\n}();\n\nexport { Signer };\n/**\n * @deprecated use per-function import\n */\n\nexport default Signer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * @internal\n */\n\nexports.BLOCK_SIZE = 64;\n/**\n * @internal\n */\n\nexports.DIGEST_LENGTH = 32;\n/**\n * @internal\n */\n\nexports.KEY = new Uint32Array([0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]);\n/**\n * @internal\n */\n\nexports.INIT = [0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19];\n/**\n * @internal\n */\n\nexports.MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\n\nvar combineURLs = require('../helpers/combineURLs');\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 */\n\n\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n\n return requestedURL;\n};","import { fromUtf8 as jsFromUtf8, toUtf8 as jsToUtf8 } from \"./pureJs\";\nimport { fromUtf8 as textEncoderFromUtf8, toUtf8 as textEncoderToUtf8 } from \"./whatwgEncodingApi\";\nexport var fromUtf8 = function fromUtf8(input) {\n return typeof TextEncoder === \"function\" ? textEncoderFromUtf8(input) : jsFromUtf8(input);\n};\nexport var toUtf8 = function toUtf8(input) {\n return typeof TextDecoder === \"function\" ? textEncoderToUtf8(input) : jsToUtf8(input);\n};","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 * 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 fromUtf8(input) {\n var bytes = [];\n\n for (var i = 0, len = input.length; i < len; i++) {\n var value = input.charCodeAt(i);\n\n if (value < 0x80) {\n bytes.push(value);\n } else if (value < 0x800) {\n bytes.push(value >> 6 | 192, value & 63 | 128);\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 } else {\n bytes.push(value >> 12 | 224, value >> 6 & 63 | 128, value & 63 | 128);\n }\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 */\n\nexport var toUtf8 = function toUtf8(input) {\n var decoded = \"\";\n\n for (var i = 0, len = input.length; i < len; i++) {\n var byte = input[i];\n\n if (byte < 0x80) {\n decoded += String.fromCharCode(byte);\n } else if (192 <= byte && byte < 224) {\n var nextByte = input[++i];\n decoded += String.fromCharCode((byte & 31) << 6 | nextByte & 63);\n } else if (240 <= byte && byte < 365) {\n var surrogatePair = [byte, input[++i], input[++i], input[++i]];\n var encoded = \"%\" + surrogatePair.map(function (byteValue) {\n return byteValue.toString(16);\n }).join(\"%\");\n decoded += decodeURIComponent(encoded);\n } else {\n decoded += String.fromCharCode((byte & 15) << 12 | (input[++i] & 63) << 6 | input[++i] & 63);\n }\n }\n\n return decoded;\n};","'use strict';\n\nvar utils = require('./utils');\n\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n\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\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) {\n /* Ignore */\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar tslib_1 = require(\"tslib\");\n\ntslib_1.__exportStar(require(\"./jsSha256\"), exports);","'use strict';\n\nvar createError = require('./createError');\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\n\n\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('./../utils');\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\n\n\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n return data;\n};","'use strict';\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 */\n\nmodule.exports = function isAxiosError(payload) {\n return typeof payload === 'object' && payload.isAxiosError === true;\n};","'use strict';\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\n\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n\n return fn.apply(thisArg, args);\n };\n};","\"use strict\";\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.In = void 0;\n\nvar Operand_1 = require(\"./Operand\");\n\nvar In =\n/** @class */\nfunction (_super) {\n __extends(In, _super);\n\n function In() {\n var _this = _super.call(this) || this;\n\n _this.Values = [];\n return _this;\n }\n\n In.prototype.inOperand = function (name, type, value) {\n _super.prototype.abstractOperandName.call(this, name, type);\n\n this.Values = __spreadArray([], value, true);\n };\n\n In.prototype.addValues = function (objValue) {\n this.Values.push(objValue);\n };\n\n return In;\n}(Operand_1.Operand);\n\nexports.In = In;"],"sourceRoot":""}