{"version":3,"sources":["webpack:///./node_modules/vue-global-events/dist/vue-global-events.es.js","webpack:///./src/components/_shared/Footer.vue?f518","webpack:///src/components/_shared/Footer.vue","webpack:///./src/components/_shared/Footer.vue?6588","webpack:///./src/components/_shared/Footer.vue","webpack:///./src/global-notification.vue?627e","webpack:///./node_modules/pusher-js/dist/web/pusher.js","webpack:///./src/global-notification.vue?281c","webpack:///./node_modules/laravel-echo/dist/echo.js","webpack:///src/global-notification.vue","webpack:///./src/global-notification.vue?8ef9","webpack:///./src/global-notification.vue?ffa2","webpack:///./src/components/_shared/NewQuoteSideBar.vue?368d","webpack:///./src/components/_shared/NewQuoteSideBar.vue?0679","webpack:///src/components/_shared/NewQuoteSideBar.vue","webpack:///./src/components/_shared/NewQuoteSideBar.vue?721e","webpack:///./src/components/_shared/NewQuoteSideBar.vue?90fa"],"names":["_isIE","isIE","test","window","navigator","userAgent","toLowerCase","modifiersRE","nonEventNameCharsRE","names","extractEventOptions","eventDescriptor","ref","match","modifiers","indexOf","split","reduce","options","modifier","index","name","props","target","type","String","default","filter","Function","e","data","isActive","activated","this","deactivated","render","h","mounted","this$1","_listeners","Object","create","keys","$listeners","forEach","event","listener","handler","addEventListener","replace","beforeDestroy","removeEventListener","_vm","_h","$createElement","_c","_self","staticClass","_m","attrs","_v","_s","year","staticRenderFns","computed","component","root","factory","module","exports","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__extends","extendStatics","b","setPrototypeOf","__proto__","Array","__","constructor","INVALID_BYTE","Coder","_paddingCharacter","encodedLength","length","encode","out","_encodeByte","left","maxDecodedLength","decodedLength","_getPaddingLength","decode","Uint8Array","paddingLength","op","haveBad","v0","v1","v2","v3","_decodeChar","charCodeAt","Error","result","fromCharCode","stdCoder","URLSafeCoder","_super","apply","arguments","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF16","INVALID_UTF8","arr","pos","chars","min","n1","n2","n3","push","join","__webpack_exports__","ScriptReceiverFactory","prefix","lastId","callback","number","id","called","callbackWrapper","receiver","ScriptReceivers","Defaults","VERSION","PROTOCOL","wsPort","wssPort","wsPath","httpHost","httpPort","httpsPort","httpPath","stats_host","authEndpoint","authTransport","activityTimeout","pongTimeout","unavailableTimeout","userAuthentication","endpoint","transport","channelAuthorization","cdn_http","cdn_https","dependency_suffix","defaults","dependency_loader_DependencyLoader","receivers","loading","self","request","runtime","createScriptRequest","getPath","error","remove","callbacks","successCallback","wasSuccessful","cleanup","send","cdn","protocol","getDocument","location","useTLS","version","getRoot","suffix","DependenciesReceivers","Dependencies","urlStore","baseUrl","urls","authenticationEndpoint","path","authorizationEndpoint","javascriptQuickStart","triggeringClientEvents","encryptedChannelSupport","fullUrl","buildLogSuffix","urlPrefix","urlObj","url","AuthRequestType","url_store","BadEventName","msg","super","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","ajax","context","query","authOptions","authRequestType","xhr","createXHR","headerName","open","setRequestHeader","headers","headersProvider","dynamicHeaders","onreadystatechange","readyState","parsed","JSON","parse","responseText","toString","UserAuthentication","ChannelAuthorization","xhr_auth","btoa","utob","b64chars","b64tab","base64_i","charAt","cb_utob","cc","u","cb_encode","ccc","padlen","ord","Timer","set","clear","delay","timer","abstract_timer","timers_clearTimeout","clearTimeout","timers_clearInterval","clearInterval","timers_OneOffTimer","setTimeout","timers_PeriodicTimer","setInterval","Util","Date","now","valueOf","args","boundArguments","slice","concat","util","extend","sources","extensions","stringify","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","objectApply","f","_","values","map","mapObject","filterObject","Boolean","flatten","any","collections_all","encodeParamsObject","encodeURIComponent","buildQueryString","params","undefined","method","decycleObject","objects","paths","derez","nu","$ref","source","logger_Logger","globalLog","message","console","log","globalLogWarn","globalLogError","warn","defaultLoggingFunction","core_pusher","logToConsole","logger","jsonp","callbackName","nextAuthCallbackID","document","script","createElement","auth_callbacks","callback_name","src","head","getElementsByTagName","documentElement","insertBefore","firstChild","jsonp_auth","ScriptRequest","errorString","charset","onerror","onload","async","attachEvent","errorScript","text","nextSibling","parentNode","removeChild","jsonp_request_JSONPRequest","getAgent","sender","scheme","host","createJSONPRequest","jsonp_timeline_jsonp","jsonp_timeline","getGenericURL","baseScheme","hostTLS","hostNonTLS","getGenericPath","queryString","ws","getInitial","http","sockjs","callback_registry_CallbackRegistry","_callbacks","prefixedEventName","fn","removeCallback","removeAllCallbacks","binding","dispatcher_Dispatcher","failThrough","global_callbacks","eventName","add","unbind","unbind_global","metadata","transport_connection_TransportConnection","hooks","priority","initialize","transportConnectionInitializer","state","timeline","generateUniqueID","handlesActivityChecks","supportsPing","socket","getSocket","defer","onError","changeState","bindListeners","debug","close","ping","beforeOpen","onopen","emit","buildTimelineMessage","closeEvent","code","reason","wasClean","unbindListeners","onOpen","onclose","onClose","onmessage","onMessage","onactivity","onActivity","info","cid","transport_Transport","environment","isSupported","WSTransport","isInitialized","getWebSocketAPI","createWebSocket","httpConfiguration","streamingConfiguration","HTTPFactory","createStreamingSocket","pollingConfiguration","createPollingSocket","xhrConfiguration","isXHRSupported","XHRStreamingTransport","XHRPollingTransport","Transports","xhr_streaming","xhr_polling","transports","SockJSTransport","file","SockJS","js_path","ignore_null_origin","ignoreNullOrigin","xdrConfiguration","yes","isXDRSupported","XDRStreamingTransport","XDRPollingTransport","xdr_streaming","xdr_polling","transports_transports","net_info_NetInfo","onLine","net_info_Network","assistant_to_the_transport_manager_AssistantToTheTransportManager","manager","minPingDelay","maxPingDelay","pingDelay","connection","createConnection","openTimestamp","onClosed","reportDeath","lifespan","Math","max","isAlive","Protocol","decodeMessage","messageEvent","messageData","pusherEventData","pusherEvent","channel","user_id","encodeMessage","processHandshake","activity_timeout","action","socket_id","getCloseAction","getCloseError","protocol_protocol","connection_Connection","send_event","listeners","activity","closed","handleCloseEvent","handshake_Handshake","finish","timeline_sender_TimelineSender","isEmpty","TimelineTransport","channel_Channel","pusher","subscribed","subscriptionPending","subscriptionCancelled","socketId","auth","handleSubscriptionSucceededEvent","handleSubscriptionCountEvent","unsubscribe","subscription_count","subscriptionCount","authorize","assign","channel_data","private_channel_PrivateChannel","config","channelAuthorizer","channelName","members_Members","reset","members","member","myID","subscriptionData","presence","hash","count","me","memberData","user_info","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","Promise","reject","fulfilled","step","next","rejected","done","then","presence_channel_PresenceChannel","authData","channelData","setMyID","user","signinDonePromise","user_data","handleInternalEvent","addedMember","addMember","removedMember","removeMember","onSubscription","disconnect","utf8","base64","encrypted_channel_EncryptedChannel","nacl","sharedSecret","handleEncryptedEvent","handleEvent","ciphertext","nonce","cipherText","secretbox","overheadLength","nonceLength","bytes","getDataToEmit","raw","_a","connection_manager_ConnectionManager","usingTLS","errorCallbacks","buildErrorCallbacks","connectionCallbacks","buildConnectionCallbacks","handshakeCallbacks","buildHandshakeCallbacks","Network","getNetwork","netinfo","retryIn","sendActivityCheck","updateStrategy","runner","strategy","updateState","startConnecting","setUnavailableTimer","disconnectInternally","handshake","connect","handshakeError","abortConnecting","abort","clearRetryTimer","clearUnavailableTimer","abandonConnection","getStrategy","round","retryTimer","ensureAborted","unavailableTimer","stopActivityCheck","activityTimer","pong_timed_out","resetActivityCheck","shouldRetry","connected","Infinity","setConnection","withErrorEmitted","tls_only","refused","backoff","retry","newState","previousState","newStateDescription","previous","current","channels_Channels","channels","createChannel","createEncryptedChannel","errMsg","createPrivateChannel","createPresenceChannel","Factory","transport_manager_TransportManager","livesLeft","lives","createAssistantToTheTransportManager","sequential_strategy_SequentialStrategy","strategies","loop","failFast","timeout","timeoutLimit","minPriority","tryNextStrategy","tryStrategy","forceMinPriority","isRunning","best_connected_ever_strategy_BestConnectedEverStrategy","runners","allRunnersFailed","callbackBuilder","rs","abortRunner","aborted","websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy","ttl","fetchTransportCache","cacheSkipCount","timestamp","includes","cached","latency","startTimestamp","pop","cb","flushTransportCache","storeTransportCache","getTransportCacheKey","storage","getLocalStorage","serializedCache","delayed_strategy_DelayedStrategy","IfStrategy","trueBranch","falseBranch","branch","FirstConnectedStrategy","testSupportsStrategy","getDefaultStrategy","baseOptions","defineTransport","definedTransports","defineTransportStrategy","wsStrategy","ws_options","wsHost","wss_options","sockjs_options","timeouts","ws_manager","streaming_manager","ws_transport","wss_transport","sockjs_transport","xhr_streaming_transport","xdr_streaming_transport","xhr_polling_transport","xdr_polling_transport","ws_loop","wss_loop","sockjs_loop","streaming_loop","polling_loop","http_loop","http_fallback_loop","default_strategy","transport_connection_initializer","load","http_xdomain_request_hooks","getRequest","xdr","XDomainRequest","ontimeout","onprogress","onChunk","abortRequest","http_xdomain_request","MAX_BUFFER_LENGTH","http_request_HTTPRequest","payload","position","unloader","addUnloadListener","removeUnloadListener","chunk","advanceBuffer","isBufferTooLong","buffer","unreadData","endOfLinePosition","State","autoIncrement","http_socket_HTTPSocket","session","randomNumber","randomString","getLocation","CONNECTING","openStream","sendRaw","sendHeartbeat","OPEN","createSocketRequest","getUniqueURL","getSendURL","start","closeStream","CLOSED","onEvent","onHeartbeat","hostname","base","replaceHost","stream","getReceiveURL","onFinished","reconnect","unbind_all","parts","exec","separator","urlParts","randomInt","http_socket","http_streaming_socket_hooks","http_streaming_socket","http_polling_socket_hooks","http_polling_socket","http_xhr_request_hooks","Constructor","getXHRAPI","http_xhr_request","HTTP","createSocket","createRequest","http_http","createXDR","TimelineLevel","web_http_http","Runtime","XMLHttpRequest","WebSocket","MozWebSocket","PusherClass","Pusher","initializeOnDocumentBody","onDocumentBody","ready","body","localStorage","createXMLHttpRequest","createMicrosoftXHR","ActiveXObject","withCredentials","documentProtocol","getProtocol","detachEvent","random","crypto","getRandomValues","Uint32Array","pow","floor","timeline_level","timeline_Timeline","events","sent","uniqueID","level","limit","shift","ERROR","INFO","DEBUG","sendfn","bundle","lib","cluster","features","transport_strategy_TransportStrategy","failAttempt","onInitialized","createHandshake","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabled","enabledTransports","disabledTransports","getAssistant","strategy_builder_UnsupportedStrategy","deferred","validateOptions","composeChannelQuery","paramsProvider","dynamicParams","UserAuthenticator","getAuthorizers","user_authenticator","channel_authorizer_composeChannelQuery","ChannelAuthorizer","channel_authorizer","ChannelAuthorizerProxy","channelAuthorizerGenerator","deprecatedAuthorizerOptions","getConfig","opts","statsHost","enableStats","getEnableStatsConfig","getHttpHost","shouldUseTLS","getWebsocketHost","userAuthenticator","buildUserAuthenticator","buildChannelAuthorizer","timelineParams","getWebsocketHostFromCluster","forceTLS","disableStats","buildChannelAuth","customHandler","authorizer","watchlist_WatchlistFacade","bindWatchlistInternalEvent","watchlistEvent","flatPromise","promise","res","rej","flat_promise","user_UserFacade","signin_requested","serverToUserChannel","_signinDoneResolve","_onAuthorize","err","_cleanup","_signin","_newSigninPromiseIfNeeded","watchlist","_onSigninSuccess","_subscribeChannels","ensure_subscribed","reinstateSubscription","subscribe","bind_global","setDone","catch","pusher_Pusher","isReady","instances","app_key","checkAppKey","createChannels","global_emitter","sessionID","getClientFeatures","timelineSender","createTimelineSender","createConnectionManager","subscribeAll","isUsingTLS","internal","find","all","timelineSenderTimer","event_name","channel_name","cancelSubscription","signin","setup","_typeof","obj","iterator","_classCallCheck","instance","TypeError","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","getPrototypeOf","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_createSuper","Derived","hasNativeReflectConstruct","Super","NewTarget","Channel","listen","stopListening","EventFormatter","namespace","substr","PusherChannel","_Channel","_this","eventFormatter","subscription","on","format","_this2","startsWith","formattedEvent","substring","PusherPrivateChannel","_PusherChannel","trigger","PusherEncryptedPrivateChannel","PusherPresenceChannel","k","SocketIoChannel","unbindEvent","_this3","removeListener","SocketIoPrivateChannel","_SocketIoChannel","SocketIoPresenceChannel","_SocketIoPrivateChann","NullChannel","NullPrivateChannel","_NullChannel","NullPresenceChannel","Connector","_defaultOptions","broadcaster","csrfToken","bearerToken","setOptions","token","selector","querySelector","getAttribute","PusherConnector","_Connector","client","leaveChannel","SocketIoConnector","io","getSocketIO","NullConnector","Echo","withoutInterceptors","registerInterceptors","_channel","connector","presenceChannel","leave","privateChannel","encryptedPrivateChannel","Vue","registerVueRequestInterceptor","axios","registerAxiosRequestInterceptor","jQuery","registerjQueryAjaxSetup","Turbo","registerTurboRequestInterceptor","interceptors","use","ajaxPrefilter","originalOptions","_this4","detail","fetchOptions","mapGetters","itinerary","itineraryServices","methods","onNotification","actionText","response","uuid","force","importedServicesCodes","newImportingData","queue","importing","services","isImportedSuccessfully","isOpen","alertContent","title","serviceCode","serviceFound","disableLoading","duration","cancelText","echo","$event","keyCode","altKey","keymap","model","$$v","expression","class","focusedGuideBoxClass","constants","BASIC_INFO","DATA_TEST_ID_VALUES","NEW_QUOTE_BUTTON_SCRATCH","staticStyle","nextStep","onLinkClick","ITINERARY_TYPES","MODULE","NEW_QUOTE_BUTTON_MODULE","TEMPLATE","NEW_QUOTE_BUTTON_EXAMPLE_ITINERARY","EXPERIENCE","NEW_QUOTE_BUTTON_EXPERIENCE","components","GlobalEvents","overlay","fullheight","fullwidth","right","watch","isShowSideBar","newValue","isUserGuideActive","userGuideStep","setShowSideBar","resetCurrentItinerary","classDefault"],"mappings":"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","file":"js/home~not-found~quote~quotes.135ddeb4.js","sourcesContent":["/**\n * vue-global-events v1.2.1\n * (c) 2020 Damian Dulisz , Eduardo San Martin Morote \n * @license MIT\n */\n\nvar _isIE;\nfunction isIE () {\n return _isIE == null\n ? (_isIE = /msie|trident/.test(window.navigator.userAgent.toLowerCase()))\n : _isIE\n}\n\nvar modifiersRE = /^[~!&]*/;\nvar nonEventNameCharsRE = /\\W+/;\nvar names = {\n '!': 'capture',\n '~': 'once',\n '&': 'passive'\n};\n\nfunction extractEventOptions (eventDescriptor) {\n var ref = eventDescriptor.match(modifiersRE);\n var modifiers = ref[0];\n\n // IE only supports capture option and it has to be a boolean\n // https://github.com/shentao/vue-global-events/issues/14\n if (isIE()) {\n return modifiers.indexOf('!') > -1\n }\n\n return modifiers.split('').reduce(function (options, modifier) {\n options[names[modifier]] = true;\n return options\n }, {})\n}\n\nvar index = {\n name: 'GlobalEvents',\n props: {\n target: {\n type: String,\n default: 'document'\n },\n filter: {\n type: Function,\n default: function (e) { return true; }\n }\n },\n\n // track keep-alive active state\n data: function () { return ({ isActive: true }); },\n activated: function activated () {\n this.isActive = true;\n },\n deactivated: function deactivated () {\n this.isActive = false;\n },\n\n render: function (h) { return h(); },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this._listeners = Object.create(null);\n Object.keys(this.$listeners).forEach(function (event) {\n var listener = this$1.$listeners[event];\n var handler = function (e) {\n this$1.isActive && this$1.filter(e, listener, event) && listener(e);\n };\n window[this$1.target].addEventListener(\n event.replace(nonEventNameCharsRE, ''),\n handler,\n extractEventOptions(event)\n );\n this$1._listeners[event] = handler;\n });\n },\n\n beforeDestroy: function beforeDestroy () {\n var this$1 = this;\n\n for (var event in this$1._listeners) {\n window[this$1.target].removeEventListener(\n event.replace(nonEventNameCharsRE, ''),\n this$1._listeners[event],\n extractEventOptions(event)\n );\n }\n }\n};\n\nexport default index;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"footer py-3 px-6\"},[_c('div',{staticClass:\"content\"},[_c('p',[_vm._m(0),_c('br'),_c('img',{staticClass:\"mt-1\",attrs:{\"src\":\"/img/logo-degradient.svg\",\"width\":\"80\"}}),_c('small',{staticClass:\"copyright\"},[_c('span',{staticClass:\"is-hidden-mobile\"},[_vm._v(\"All rights reserved:\")]),_vm._v(\" ©Global Encounters™ 1999-\"+_vm._s(_vm.year))])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('strong',[_c('small',[_vm._v(\"Powered by\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=4d8ebd32&\"\nimport script from \"./Footer.vue?vue&type=script&lang=js&\"\nexport * from \"./Footer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./global-notification.vue?vue&type=style&index=0&lang=css&\"","/*!\n * Pusher JavaScript Library v8.3.0\n * https://pusher.com/\n *\n * Copyright 2020, Pusher\n * Released under the MIT licence.\n */\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Pusher\"] = factory();\n\telse\n\t\troot[\"Pusher\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 2);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package base64 implements Base64 encoding and decoding.\n */\n// Invalid character used in decoding to indicate\n// that the character to decode is out of range of\n// alphabet and cannot be decoded.\nvar INVALID_BYTE = 256;\n/**\n * Implements standard Base64 encoding.\n *\n * Operates in constant time.\n */\nvar Coder = /** @class */ (function () {\n // TODO(dchest): methods to encode chunk-by-chunk.\n function Coder(_paddingCharacter) {\n if (_paddingCharacter === void 0) { _paddingCharacter = \"=\"; }\n this._paddingCharacter = _paddingCharacter;\n }\n Coder.prototype.encodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 8 + 5) / 6 | 0;\n }\n return (length + 2) / 3 * 4 | 0;\n };\n Coder.prototype.encode = function (data) {\n var out = \"\";\n var i = 0;\n for (; i < data.length - 2; i += 3) {\n var c = (data[i] << 16) | (data[i + 1] << 8) | (data[i + 2]);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n out += this._encodeByte((c >>> 1 * 6) & 63);\n out += this._encodeByte((c >>> 0 * 6) & 63);\n }\n var left = data.length - i;\n if (left > 0) {\n var c = (data[i] << 16) | (left === 2 ? data[i + 1] << 8 : 0);\n out += this._encodeByte((c >>> 3 * 6) & 63);\n out += this._encodeByte((c >>> 2 * 6) & 63);\n if (left === 2) {\n out += this._encodeByte((c >>> 1 * 6) & 63);\n }\n else {\n out += this._paddingCharacter || \"\";\n }\n out += this._paddingCharacter || \"\";\n }\n return out;\n };\n Coder.prototype.maxDecodedLength = function (length) {\n if (!this._paddingCharacter) {\n return (length * 6 + 7) / 8 | 0;\n }\n return length / 4 * 3 | 0;\n };\n Coder.prototype.decodedLength = function (s) {\n return this.maxDecodedLength(s.length - this._getPaddingLength(s));\n };\n Coder.prototype.decode = function (s) {\n if (s.length === 0) {\n return new Uint8Array(0);\n }\n var paddingLength = this._getPaddingLength(s);\n var length = s.length - paddingLength;\n var out = new Uint8Array(this.maxDecodedLength(length));\n var op = 0;\n var i = 0;\n var haveBad = 0;\n var v0 = 0, v1 = 0, v2 = 0, v3 = 0;\n for (; i < length - 4; i += 4) {\n v0 = this._decodeChar(s.charCodeAt(i + 0));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n out[op++] = (v1 << 4) | (v2 >>> 2);\n out[op++] = (v2 << 6) | v3;\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n haveBad |= v2 & INVALID_BYTE;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (i < length - 1) {\n v0 = this._decodeChar(s.charCodeAt(i));\n v1 = this._decodeChar(s.charCodeAt(i + 1));\n out[op++] = (v0 << 2) | (v1 >>> 4);\n haveBad |= v0 & INVALID_BYTE;\n haveBad |= v1 & INVALID_BYTE;\n }\n if (i < length - 2) {\n v2 = this._decodeChar(s.charCodeAt(i + 2));\n out[op++] = (v1 << 4) | (v2 >>> 2);\n haveBad |= v2 & INVALID_BYTE;\n }\n if (i < length - 3) {\n v3 = this._decodeChar(s.charCodeAt(i + 3));\n out[op++] = (v2 << 6) | v3;\n haveBad |= v3 & INVALID_BYTE;\n }\n if (haveBad !== 0) {\n throw new Error(\"Base64Coder: incorrect characters for decoding\");\n }\n return out;\n };\n // Standard encoding have the following encoded/decoded ranges,\n // which we need to convert between.\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 + /\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 43 47\n //\n // Encode 6 bits in b into a new character.\n Coder.prototype._encodeByte = function (b) {\n // Encoding uses constant time operations as follows:\n //\n // 1. Define comparison of A with B using (A - B) >>> 8:\n // if A > B, then result is positive integer\n // if A <= B, then result is 0\n //\n // 2. Define selection of C or 0 using bitwise AND: X & C:\n // if X == 0, then result is 0\n // if X != 0, then result is C\n //\n // 3. Start with the smallest comparison (b >= 0), which is always\n // true, so set the result to the starting ASCII value (65).\n //\n // 4. Continue comparing b to higher ASCII values, and selecting\n // zero if comparison isn't true, otherwise selecting a value\n // to add to result, which:\n //\n // a) undoes the previous addition\n // b) provides new value to add\n //\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 43);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 43) - 63 + 47);\n return String.fromCharCode(result);\n };\n // Decode a character code into a byte.\n // Must return 256 if character is out of alphabet range.\n Coder.prototype._decodeChar = function (c) {\n // Decoding works similar to encoding: using the same comparison\n // function, but now it works on ranges: result is always incremented\n // by value, but this value becomes zero if the range is not\n // satisfied.\n //\n // Decoding starts with invalid value, 256, which is then\n // subtracted when the range is satisfied. If none of the ranges\n // apply, the function returns 256, which is then checked by\n // the caller to throw error.\n var result = INVALID_BYTE; // start with invalid character\n // c == 43 (c > 42 and c < 44)\n result += (((42 - c) & (c - 44)) >>> 8) & (-INVALID_BYTE + c - 43 + 62);\n // c == 47 (c > 46 and c < 48)\n result += (((46 - c) & (c - 48)) >>> 8) & (-INVALID_BYTE + c - 47 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n Coder.prototype._getPaddingLength = function (s) {\n var paddingLength = 0;\n if (this._paddingCharacter) {\n for (var i = s.length - 1; i >= 0; i--) {\n if (s[i] !== this._paddingCharacter) {\n break;\n }\n paddingLength++;\n }\n if (s.length < 4 || paddingLength > 2) {\n throw new Error(\"Base64Coder: incorrect padding\");\n }\n }\n return paddingLength;\n };\n return Coder;\n}());\nexports.Coder = Coder;\nvar stdCoder = new Coder();\nfunction encode(data) {\n return stdCoder.encode(data);\n}\nexports.encode = encode;\nfunction decode(s) {\n return stdCoder.decode(s);\n}\nexports.decode = decode;\n/**\n * Implements URL-safe Base64 encoding.\n * (Same as Base64, but '+' is replaced with '-', and '/' with '_').\n *\n * Operates in constant time.\n */\nvar URLSafeCoder = /** @class */ (function (_super) {\n __extends(URLSafeCoder, _super);\n function URLSafeCoder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // URL-safe encoding have the following encoded/decoded ranges:\n //\n // ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 - _\n // Index: 0 - 25 26 - 51 52 - 61 62 63\n // ASCII: 65 - 90 97 - 122 48 - 57 45 95\n //\n URLSafeCoder.prototype._encodeByte = function (b) {\n var result = b;\n // b >= 0\n result += 65;\n // b > 25\n result += ((25 - b) >>> 8) & ((0 - 65) - 26 + 97);\n // b > 51\n result += ((51 - b) >>> 8) & ((26 - 97) - 52 + 48);\n // b > 61\n result += ((61 - b) >>> 8) & ((52 - 48) - 62 + 45);\n // b > 62\n result += ((62 - b) >>> 8) & ((62 - 45) - 63 + 95);\n return String.fromCharCode(result);\n };\n URLSafeCoder.prototype._decodeChar = function (c) {\n var result = INVALID_BYTE;\n // c == 45 (c > 44 and c < 46)\n result += (((44 - c) & (c - 46)) >>> 8) & (-INVALID_BYTE + c - 45 + 62);\n // c == 95 (c > 94 and c < 96)\n result += (((94 - c) & (c - 96)) >>> 8) & (-INVALID_BYTE + c - 95 + 63);\n // c > 47 and c < 58\n result += (((47 - c) & (c - 58)) >>> 8) & (-INVALID_BYTE + c - 48 + 52);\n // c > 64 and c < 91\n result += (((64 - c) & (c - 91)) >>> 8) & (-INVALID_BYTE + c - 65 + 0);\n // c > 96 and c < 123\n result += (((96 - c) & (c - 123)) >>> 8) & (-INVALID_BYTE + c - 97 + 26);\n return result;\n };\n return URLSafeCoder;\n}(Coder));\nexports.URLSafeCoder = URLSafeCoder;\nvar urlSafeCoder = new URLSafeCoder();\nfunction encodeURLSafe(data) {\n return urlSafeCoder.encode(data);\n}\nexports.encodeURLSafe = encodeURLSafe;\nfunction decodeURLSafe(s) {\n return urlSafeCoder.decode(s);\n}\nexports.decodeURLSafe = decodeURLSafe;\nexports.encodedLength = function (length) {\n return stdCoder.encodedLength(length);\n};\nexports.maxDecodedLength = function (length) {\n return stdCoder.maxDecodedLength(length);\n};\nexports.decodedLength = function (s) {\n return stdCoder.decodedLength(s);\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = \"utf8: invalid string\";\nvar INVALID_UTF8 = \"utf8: invalid source encoding\";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don't need repeat validation here.\n var arr = new Uint8Array(encodedLength(s));\n var pos = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n var result = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0xd800) {\n result += 3;\n }\n else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // \"eat\" next character\n result += 4;\n }\n else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n var chars = [];\n for (var i = 0; i < arr.length; i++) {\n var b = arr[i];\n if (b & 0x80) {\n var min = void 0;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n var n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join(\"\");\n}\nexports.decode = decode;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// required so we don't have to do require('pusher').default etc.\nmodule.exports = __webpack_require__(3).default;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_receiver_factory.ts\nclass ScriptReceiverFactory {\n constructor(prefix, name) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n create(callback) {\n this.lastId++;\n var number = this.lastId;\n var id = this.prefix + number;\n var name = this.name + '[' + number + ']';\n var called = false;\n var callbackWrapper = function () {\n if (!called) {\n callback.apply(null, arguments);\n called = true;\n }\n };\n this[number] = callbackWrapper;\n return { number: number, id: id, name: name, callback: callbackWrapper };\n }\n remove(receiver) {\n delete this[receiver.number];\n }\n}\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n VERSION: \"8.3.0\",\n PROTOCOL: 7,\n wsPort: 80,\n wssPort: 443,\n wsPath: '',\n httpHost: 'sockjs.pusher.com',\n httpPort: 80,\n httpsPort: 443,\n httpPath: '/pusher',\n stats_host: 'stats.pusher.com',\n authEndpoint: '/pusher/auth',\n authTransport: 'ajax',\n activityTimeout: 120000,\n pongTimeout: 30000,\n unavailableTimeout: 10000,\n userAuthentication: {\n endpoint: '/pusher/user-auth',\n transport: 'ajax'\n },\n channelAuthorization: {\n endpoint: '/pusher/auth',\n transport: 'ajax'\n },\n cdn_http: \"http://js.pusher.com\",\n cdn_https: \"https://js.pusher.com\",\n dependency_suffix: \"\"\n};\n/* harmony default export */ var defaults = (Defaults);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependency_loader.ts\n\n\nclass dependency_loader_DependencyLoader {\n constructor(options) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n load(name, options, callback) {\n var self = this;\n if (self.loading[name] && self.loading[name].length > 0) {\n self.loading[name].push(callback);\n }\n else {\n self.loading[name] = [callback];\n var request = runtime.createScriptRequest(self.getPath(name, options));\n var receiver = self.receivers.create(function (error) {\n self.receivers.remove(receiver);\n if (self.loading[name]) {\n var callbacks = self.loading[name];\n delete self.loading[name];\n var successCallback = function (wasSuccessful) {\n if (!wasSuccessful) {\n request.cleanup();\n }\n };\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i](error, successCallback);\n }\n }\n });\n request.send(receiver);\n }\n }\n getRoot(options) {\n var cdn;\n var protocol = runtime.getDocument().location.protocol;\n if ((options && options.useTLS) || protocol === 'https:') {\n cdn = this.options.cdn_https;\n }\n else {\n cdn = this.options.cdn_http;\n }\n return cdn.replace(/\\/*$/, '') + '/' + this.options.version;\n }\n getPath(name, options) {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/dependencies.ts\n\n\n\nvar DependenciesReceivers = new ScriptReceiverFactory('_pusher_dependencies', 'Pusher.DependenciesReceivers');\nvar Dependencies = new dependency_loader_DependencyLoader({\n cdn_http: defaults.cdn_http,\n cdn_https: defaults.cdn_https,\n version: defaults.VERSION,\n suffix: defaults.dependency_suffix,\n receivers: DependenciesReceivers\n});\n\n// CONCATENATED MODULE: ./src/core/utils/url_store.ts\nconst urlStore = {\n baseUrl: 'https://pusher.com',\n urls: {\n authenticationEndpoint: {\n path: '/docs/channels/server_api/authenticating_users'\n },\n authorizationEndpoint: {\n path: '/docs/channels/server_api/authorizing-users/'\n },\n javascriptQuickStart: {\n path: '/docs/javascript_quick_start'\n },\n triggeringClientEvents: {\n path: '/docs/client_api_guide/client_events#trigger-events'\n },\n encryptedChannelSupport: {\n fullUrl: 'https://github.com/pusher/pusher-js/tree/cc491015371a4bde5743d1c87a0fbac0feb53195#encrypted-channel-support'\n }\n }\n};\nconst buildLogSuffix = function (key) {\n const urlPrefix = 'See:';\n const urlObj = urlStore.urls[key];\n if (!urlObj)\n return '';\n let url;\n if (urlObj.fullUrl) {\n url = urlObj.fullUrl;\n }\n else if (urlObj.path) {\n url = urlStore.baseUrl + urlObj.path;\n }\n if (!url)\n return '';\n return `${urlPrefix} ${url}`;\n};\n/* harmony default export */ var url_store = ({ buildLogSuffix });\n\n// CONCATENATED MODULE: ./src/core/auth/options.ts\nvar AuthRequestType;\n(function (AuthRequestType) {\n AuthRequestType[\"UserAuthentication\"] = \"user-authentication\";\n AuthRequestType[\"ChannelAuthorization\"] = \"channel-authorization\";\n})(AuthRequestType || (AuthRequestType = {}));\n\n// CONCATENATED MODULE: ./src/core/errors.ts\nclass BadEventName extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass BadChannelName extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass RequestTimedOut extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass TransportPriorityTooLow extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass TransportClosed extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedFeature extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedTransport extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass UnsupportedStrategy extends Error {\n constructor(msg) {\n super(msg);\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\nclass HTTPAuthError extends Error {\n constructor(status, msg) {\n super(msg);\n this.status = status;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nconst ajax = function (context, query, authOptions, authRequestType, callback) {\n const xhr = runtime.createXHR();\n xhr.open('POST', authOptions.endpoint, true);\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n for (var headerName in authOptions.headers) {\n xhr.setRequestHeader(headerName, authOptions.headers[headerName]);\n }\n if (authOptions.headersProvider != null) {\n let dynamicHeaders = authOptions.headersProvider();\n for (var headerName in dynamicHeaders) {\n xhr.setRequestHeader(headerName, dynamicHeaders[headerName]);\n }\n }\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n let data;\n let parsed = false;\n try {\n data = JSON.parse(xhr.responseText);\n parsed = true;\n }\n catch (e) {\n callback(new HTTPAuthError(200, `JSON returned from ${authRequestType.toString()} endpoint was invalid, yet status code was 200. Data was: ${xhr.responseText}`), null);\n }\n if (parsed) {\n callback(null, data);\n }\n }\n else {\n let suffix = '';\n switch (authRequestType) {\n case AuthRequestType.UserAuthentication:\n suffix = url_store.buildLogSuffix('authenticationEndpoint');\n break;\n case AuthRequestType.ChannelAuthorization:\n suffix = `Clients must be authorized to join private or presence channels. ${url_store.buildLogSuffix('authorizationEndpoint')}`;\n break;\n }\n callback(new HTTPAuthError(xhr.status, `Unable to retrieve auth string from ${authRequestType.toString()} endpoint - ` +\n `received status: ${xhr.status} from ${authOptions.endpoint}. ${suffix}`), null);\n }\n }\n };\n xhr.send(query);\n return xhr;\n};\n/* harmony default export */ var xhr_auth = (ajax);\n\n// CONCATENATED MODULE: ./src/core/base64.ts\nfunction encode(s) {\n return btoa(utob(s));\n}\nvar fromCharCode = String.fromCharCode;\nvar b64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nvar b64tab = {};\nfor (var base64_i = 0, l = b64chars.length; base64_i < l; base64_i++) {\n b64tab[b64chars.charAt(base64_i)] = base64_i;\n}\nvar cb_utob = function (c) {\n var cc = c.charCodeAt(0);\n return cc < 0x80\n ? c\n : cc < 0x800\n ? fromCharCode(0xc0 | (cc >>> 6)) + fromCharCode(0x80 | (cc & 0x3f))\n : fromCharCode(0xe0 | ((cc >>> 12) & 0x0f)) +\n fromCharCode(0x80 | ((cc >>> 6) & 0x3f)) +\n fromCharCode(0x80 | (cc & 0x3f));\n};\nvar utob = function (u) {\n return u.replace(/[^\\x00-\\x7F]/g, cb_utob);\n};\nvar cb_encode = function (ccc) {\n var padlen = [0, 2, 1][ccc.length % 3];\n var ord = (ccc.charCodeAt(0) << 16) |\n ((ccc.length > 1 ? ccc.charCodeAt(1) : 0) << 8) |\n (ccc.length > 2 ? ccc.charCodeAt(2) : 0);\n var chars = [\n b64chars.charAt(ord >>> 18),\n b64chars.charAt((ord >>> 12) & 63),\n padlen >= 2 ? '=' : b64chars.charAt((ord >>> 6) & 63),\n padlen >= 1 ? '=' : b64chars.charAt(ord & 63)\n ];\n return chars.join('');\n};\nvar btoa = window.btoa ||\n function (b) {\n return b.replace(/[\\s\\S]{1,3}/g, cb_encode);\n };\n\n// CONCATENATED MODULE: ./src/core/utils/timers/abstract_timer.ts\nclass Timer {\n constructor(set, clear, delay, callback) {\n this.clear = clear;\n this.timer = set(() => {\n if (this.timer) {\n this.timer = callback(this.timer);\n }\n }, delay);\n }\n isRunning() {\n return this.timer !== null;\n }\n ensureAborted() {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n }\n}\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\n\nfunction timers_clearTimeout(timer) {\n window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n window.clearInterval(timer);\n}\nclass timers_OneOffTimer extends abstract_timer {\n constructor(delay, callback) {\n super(setTimeout, timers_clearTimeout, delay, function (timer) {\n callback();\n return null;\n });\n }\n}\nclass timers_PeriodicTimer extends abstract_timer {\n constructor(delay, callback) {\n super(setInterval, timers_clearInterval, delay, function (timer) {\n callback();\n return timer;\n });\n }\n}\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n now() {\n if (Date.now) {\n return Date.now();\n }\n else {\n return new Date().valueOf();\n }\n },\n defer(callback) {\n return new timers_OneOffTimer(0, callback);\n },\n method(name, ...args) {\n var boundArguments = Array.prototype.slice.call(arguments, 1);\n return function (object) {\n return object[name].apply(object, boundArguments.concat(arguments));\n };\n }\n};\n/* harmony default export */ var util = (Util);\n\n// CONCATENATED MODULE: ./src/core/utils/collections.ts\n\n\nfunction extend(target, ...sources) {\n for (var i = 0; i < sources.length; i++) {\n var extensions = sources[i];\n for (var property in extensions) {\n if (extensions[property] &&\n extensions[property].constructor &&\n extensions[property].constructor === Object) {\n target[property] = extend(target[property] || {}, extensions[property]);\n }\n else {\n target[property] = extensions[property];\n }\n }\n }\n return target;\n}\nfunction stringify() {\n var m = ['Pusher'];\n for (var i = 0; i < arguments.length; i++) {\n if (typeof arguments[i] === 'string') {\n m.push(arguments[i]);\n }\n else {\n m.push(safeJSONStringify(arguments[i]));\n }\n }\n return m.join(' : ');\n}\nfunction arrayIndexOf(array, item) {\n var nativeIndexOf = Array.prototype.indexOf;\n if (array === null) {\n return -1;\n }\n if (nativeIndexOf && array.indexOf === nativeIndexOf) {\n return array.indexOf(item);\n }\n for (var i = 0, l = array.length; i < l; i++) {\n if (array[i] === item) {\n return i;\n }\n }\n return -1;\n}\nfunction objectApply(object, f) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n f(object[key], key, object);\n }\n }\n}\nfunction keys(object) {\n var keys = [];\n objectApply(object, function (_, key) {\n keys.push(key);\n });\n return keys;\n}\nfunction values(object) {\n var values = [];\n objectApply(object, function (value) {\n values.push(value);\n });\n return values;\n}\nfunction apply(array, f, context) {\n for (var i = 0; i < array.length; i++) {\n f.call(context || window, array[i], i, array);\n }\n}\nfunction map(array, f) {\n var result = [];\n for (var i = 0; i < array.length; i++) {\n result.push(f(array[i], i, array, result));\n }\n return result;\n}\nfunction mapObject(object, f) {\n var result = {};\n objectApply(object, function (value, key) {\n result[key] = f(value);\n });\n return result;\n}\nfunction filter(array, test) {\n test =\n test ||\n function (value) {\n return !!value;\n };\n var result = [];\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array, result)) {\n result.push(array[i]);\n }\n }\n return result;\n}\nfunction filterObject(object, test) {\n var result = {};\n objectApply(object, function (value, key) {\n if ((test && test(value, key, object, result)) || Boolean(value)) {\n result[key] = value;\n }\n });\n return result;\n}\nfunction flatten(object) {\n var result = [];\n objectApply(object, function (value, key) {\n result.push([key, value]);\n });\n return result;\n}\nfunction any(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (test(array[i], i, array)) {\n return true;\n }\n }\n return false;\n}\nfunction collections_all(array, test) {\n for (var i = 0; i < array.length; i++) {\n if (!test(array[i], i, array)) {\n return false;\n }\n }\n return true;\n}\nfunction encodeParamsObject(data) {\n return mapObject(data, function (value) {\n if (typeof value === 'object') {\n value = safeJSONStringify(value);\n }\n return encodeURIComponent(encode(value.toString()));\n });\n}\nfunction buildQueryString(data) {\n var params = filterObject(data, function (value) {\n return value !== undefined;\n });\n var query = map(flatten(encodeParamsObject(params)), util.method('join', '=')).join('&');\n return query;\n}\nfunction decycleObject(object) {\n var objects = [], paths = [];\n return (function derez(value, path) {\n var i, name, nu;\n switch (typeof value) {\n case 'object':\n if (!value) {\n return null;\n }\n for (i = 0; i < objects.length; i += 1) {\n if (objects[i] === value) {\n return { $ref: paths[i] };\n }\n }\n objects.push(value);\n paths.push(path);\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n nu = [];\n for (i = 0; i < value.length; i += 1) {\n nu[i] = derez(value[i], path + '[' + i + ']');\n }\n }\n else {\n nu = {};\n for (name in value) {\n if (Object.prototype.hasOwnProperty.call(value, name)) {\n nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n }\n }\n }\n return nu;\n case 'number':\n case 'string':\n case 'boolean':\n return value;\n }\n })(object, '$');\n}\nfunction safeJSONStringify(source) {\n try {\n return JSON.stringify(source);\n }\n catch (e) {\n return JSON.stringify(decycleObject(source));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/logger.ts\n\n\nclass logger_Logger {\n constructor() {\n this.globalLog = (message) => {\n if (window.console && window.console.log) {\n window.console.log(message);\n }\n };\n }\n debug(...args) {\n this.log(this.globalLog, args);\n }\n warn(...args) {\n this.log(this.globalLogWarn, args);\n }\n error(...args) {\n this.log(this.globalLogError, args);\n }\n globalLogWarn(message) {\n if (window.console && window.console.warn) {\n window.console.warn(message);\n }\n else {\n this.globalLog(message);\n }\n }\n globalLogError(message) {\n if (window.console && window.console.error) {\n window.console.error(message);\n }\n else {\n this.globalLogWarn(message);\n }\n }\n log(defaultLoggingFunction, ...args) {\n var message = stringify.apply(this, arguments);\n if (core_pusher.log) {\n core_pusher.log(message);\n }\n else if (core_pusher.logToConsole) {\n const log = defaultLoggingFunction.bind(this);\n log(message);\n }\n }\n}\n/* harmony default export */ var logger = (new logger_Logger());\n\n// CONCATENATED MODULE: ./src/runtimes/web/auth/jsonp_auth.ts\n\nvar jsonp = function (context, query, authOptions, authRequestType, callback) {\n if (authOptions.headers !== undefined ||\n authOptions.headersProvider != null) {\n logger.warn(`To send headers with the ${authRequestType.toString()} request, you must use AJAX, rather than JSONP.`);\n }\n var callbackName = context.nextAuthCallbackID.toString();\n context.nextAuthCallbackID++;\n var document = context.getDocument();\n var script = document.createElement('script');\n context.auth_callbacks[callbackName] = function (data) {\n callback(null, data);\n };\n var callback_name = \"Pusher.auth_callbacks['\" + callbackName + \"']\";\n script.src =\n authOptions.endpoint +\n '?callback=' +\n encodeURIComponent(callback_name) +\n '&' +\n query;\n var head = document.getElementsByTagName('head')[0] || document.documentElement;\n head.insertBefore(script, head.firstChild);\n};\n/* harmony default export */ var jsonp_auth = (jsonp);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/script_request.ts\nclass ScriptRequest {\n constructor(src) {\n this.src = src;\n }\n send(receiver) {\n var self = this;\n var errorString = 'Error loading ' + self.src;\n self.script = document.createElement('script');\n self.script.id = receiver.id;\n self.script.src = self.src;\n self.script.type = 'text/javascript';\n self.script.charset = 'UTF-8';\n if (self.script.addEventListener) {\n self.script.onerror = function () {\n receiver.callback(errorString);\n };\n self.script.onload = function () {\n receiver.callback(null);\n };\n }\n else {\n self.script.onreadystatechange = function () {\n if (self.script.readyState === 'loaded' ||\n self.script.readyState === 'complete') {\n receiver.callback(null);\n }\n };\n }\n if (self.script.async === undefined &&\n document.attachEvent &&\n /opera/i.test(navigator.userAgent)) {\n self.errorScript = document.createElement('script');\n self.errorScript.id = receiver.id + '_error';\n self.errorScript.text = receiver.name + \"('\" + errorString + \"');\";\n self.script.async = self.errorScript.async = false;\n }\n else {\n self.script.async = true;\n }\n var head = document.getElementsByTagName('head')[0];\n head.insertBefore(self.script, head.firstChild);\n if (self.errorScript) {\n head.insertBefore(self.errorScript, self.script.nextSibling);\n }\n }\n cleanup() {\n if (this.script) {\n this.script.onload = this.script.onerror = null;\n this.script.onreadystatechange = null;\n }\n if (this.script && this.script.parentNode) {\n this.script.parentNode.removeChild(this.script);\n }\n if (this.errorScript && this.errorScript.parentNode) {\n this.errorScript.parentNode.removeChild(this.errorScript);\n }\n this.script = null;\n this.errorScript = null;\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nclass jsonp_request_JSONPRequest {\n constructor(url, data) {\n this.url = url;\n this.data = data;\n }\n send(receiver) {\n if (this.request) {\n return;\n }\n var query = buildQueryString(this.data);\n var url = this.url + '/' + receiver.number + '?' + query;\n this.request = runtime.createScriptRequest(url);\n this.request.send(receiver);\n }\n cleanup() {\n if (this.request) {\n this.request.cleanup();\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/timeline/jsonp_timeline.ts\n\n\nvar getAgent = function (sender, useTLS) {\n return function (data, callback) {\n var scheme = 'http' + (useTLS ? 's' : '') + '://';\n var url = scheme + (sender.host || sender.options.host) + sender.options.path;\n var request = runtime.createJSONPRequest(url, data);\n var receiver = runtime.ScriptReceivers.create(function (error, result) {\n ScriptReceivers.remove(receiver);\n request.cleanup();\n if (result && result.host) {\n sender.host = result.host;\n }\n if (callback) {\n callback(error, result);\n }\n });\n request.send(receiver);\n };\n};\nvar jsonp_timeline_jsonp = {\n name: 'jsonp',\n getAgent\n};\n/* harmony default export */ var jsonp_timeline = (jsonp_timeline_jsonp);\n\n// CONCATENATED MODULE: ./src/core/transports/url_schemes.ts\n\nfunction getGenericURL(baseScheme, params, path) {\n var scheme = baseScheme + (params.useTLS ? 's' : '');\n var host = params.useTLS ? params.hostTLS : params.hostNonTLS;\n return scheme + '://' + host + path;\n}\nfunction getGenericPath(key, queryString) {\n var path = '/app/' + key;\n var query = '?protocol=' +\n defaults.PROTOCOL +\n '&client=js' +\n '&version=' +\n defaults.VERSION +\n (queryString ? '&' + queryString : '');\n return path + query;\n}\nvar ws = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '') + getGenericPath(key, 'flash=false');\n return getGenericURL('ws', params, path);\n }\n};\nvar http = {\n getInitial: function (key, params) {\n var path = (params.httpPath || '/pusher') + getGenericPath(key);\n return getGenericURL('http', params, path);\n }\n};\nvar sockjs = {\n getInitial: function (key, params) {\n return getGenericURL('http', params, params.httpPath || '/pusher');\n },\n getPath: function (key, params) {\n return getGenericPath(key);\n }\n};\n\n// CONCATENATED MODULE: ./src/core/events/callback_registry.ts\n\nclass callback_registry_CallbackRegistry {\n constructor() {\n this._callbacks = {};\n }\n get(name) {\n return this._callbacks[prefix(name)];\n }\n add(name, callback, context) {\n var prefixedEventName = prefix(name);\n this._callbacks[prefixedEventName] =\n this._callbacks[prefixedEventName] || [];\n this._callbacks[prefixedEventName].push({\n fn: callback,\n context: context\n });\n }\n remove(name, callback, context) {\n if (!name && !callback && !context) {\n this._callbacks = {};\n return;\n }\n var names = name ? [prefix(name)] : keys(this._callbacks);\n if (callback || context) {\n this.removeCallback(names, callback, context);\n }\n else {\n this.removeAllCallbacks(names);\n }\n }\n removeCallback(names, callback, context) {\n apply(names, function (name) {\n this._callbacks[name] = filter(this._callbacks[name] || [], function (binding) {\n return ((callback && callback !== binding.fn) ||\n (context && context !== binding.context));\n });\n if (this._callbacks[name].length === 0) {\n delete this._callbacks[name];\n }\n }, this);\n }\n removeAllCallbacks(names) {\n apply(names, function (name) {\n delete this._callbacks[name];\n }, this);\n }\n}\nfunction prefix(name) {\n return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nclass dispatcher_Dispatcher {\n constructor(failThrough) {\n this.callbacks = new callback_registry_CallbackRegistry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n bind(eventName, callback, context) {\n this.callbacks.add(eventName, callback, context);\n return this;\n }\n bind_global(callback) {\n this.global_callbacks.push(callback);\n return this;\n }\n unbind(eventName, callback, context) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n }\n unbind_global(callback) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n this.global_callbacks = filter(this.global_callbacks || [], c => c !== callback);\n return this;\n }\n unbind_all() {\n this.unbind();\n this.unbind_global();\n return this;\n }\n emit(eventName, data, metadata) {\n for (var i = 0; i < this.global_callbacks.length; i++) {\n this.global_callbacks[i](eventName, data);\n }\n var callbacks = this.callbacks.get(eventName);\n var args = [];\n if (metadata) {\n args.push(data, metadata);\n }\n else if (data) {\n args.push(data);\n }\n if (callbacks && callbacks.length > 0) {\n for (var i = 0; i < callbacks.length; i++) {\n callbacks[i].fn.apply(callbacks[i].context || window, args);\n }\n }\n else if (this.failThrough) {\n this.failThrough(eventName, data);\n }\n return this;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\n\n\n\n\n\nclass transport_connection_TransportConnection extends dispatcher_Dispatcher {\n constructor(hooks, name, priority, key, options) {\n super();\n this.initialize = runtime.transportConnectionInitializer;\n this.hooks = hooks;\n this.name = name;\n this.priority = priority;\n this.key = key;\n this.options = options;\n this.state = 'new';\n this.timeline = options.timeline;\n this.activityTimeout = options.activityTimeout;\n this.id = this.timeline.generateUniqueID();\n }\n handlesActivityChecks() {\n return Boolean(this.hooks.handlesActivityChecks);\n }\n supportsPing() {\n return Boolean(this.hooks.supportsPing);\n }\n connect() {\n if (this.socket || this.state !== 'initialized') {\n return false;\n }\n var url = this.hooks.urls.getInitial(this.key, this.options);\n try {\n this.socket = this.hooks.getSocket(url, this.options);\n }\n catch (e) {\n util.defer(() => {\n this.onError(e);\n this.changeState('closed');\n });\n return false;\n }\n this.bindListeners();\n logger.debug('Connecting', { transport: this.name, url });\n this.changeState('connecting');\n return true;\n }\n close() {\n if (this.socket) {\n this.socket.close();\n return true;\n }\n else {\n return false;\n }\n }\n send(data) {\n if (this.state === 'open') {\n util.defer(() => {\n if (this.socket) {\n this.socket.send(data);\n }\n });\n return true;\n }\n else {\n return false;\n }\n }\n ping() {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n }\n onOpen() {\n if (this.hooks.beforeOpen) {\n this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options));\n }\n this.changeState('open');\n this.socket.onopen = undefined;\n }\n onError(error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n }\n onClose(closeEvent) {\n if (closeEvent) {\n this.changeState('closed', {\n code: closeEvent.code,\n reason: closeEvent.reason,\n wasClean: closeEvent.wasClean\n });\n }\n else {\n this.changeState('closed');\n }\n this.unbindListeners();\n this.socket = undefined;\n }\n onMessage(message) {\n this.emit('message', message);\n }\n onActivity() {\n this.emit('activity');\n }\n bindListeners() {\n this.socket.onopen = () => {\n this.onOpen();\n };\n this.socket.onerror = error => {\n this.onError(error);\n };\n this.socket.onclose = closeEvent => {\n this.onClose(closeEvent);\n };\n this.socket.onmessage = message => {\n this.onMessage(message);\n };\n if (this.supportsPing()) {\n this.socket.onactivity = () => {\n this.onActivity();\n };\n }\n }\n unbindListeners() {\n if (this.socket) {\n this.socket.onopen = undefined;\n this.socket.onerror = undefined;\n this.socket.onclose = undefined;\n this.socket.onmessage = undefined;\n if (this.supportsPing()) {\n this.socket.onactivity = undefined;\n }\n }\n }\n changeState(state, params) {\n this.state = state;\n this.timeline.info(this.buildTimelineMessage({\n state: state,\n params: params\n }));\n this.emit(state, params);\n }\n buildTimelineMessage(message) {\n return extend({ cid: this.id }, message);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nclass transport_Transport {\n constructor(hooks) {\n this.hooks = hooks;\n }\n isSupported(environment) {\n return this.hooks.isSupported(environment);\n }\n createConnection(name, priority, key, options) {\n return new transport_connection_TransportConnection(this.hooks, name, priority, key, options);\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transport_Transport({\n urls: ws,\n handlesActivityChecks: false,\n supportsPing: false,\n isInitialized: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n isSupported: function () {\n return Boolean(runtime.getWebSocketAPI());\n },\n getSocket: function (url) {\n return runtime.createWebSocket(url);\n }\n});\nvar httpConfiguration = {\n urls: http,\n handlesActivityChecks: false,\n supportsPing: true,\n isInitialized: function () {\n return true;\n }\n};\nvar streamingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createStreamingSocket(url);\n }\n}, httpConfiguration);\nvar pollingConfiguration = extend({\n getSocket: function (url) {\n return runtime.HTTPFactory.createPollingSocket(url);\n }\n}, httpConfiguration);\nvar xhrConfiguration = {\n isSupported: function () {\n return runtime.isXHRSupported();\n }\n};\nvar XHRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xhrConfiguration));\nvar Transports = {\n ws: WSTransport,\n xhr_streaming: XHRStreamingTransport,\n xhr_polling: XHRPollingTransport\n};\n/* harmony default export */ var transports = (Transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transports.ts\n\n\n\n\n\n\nvar SockJSTransport = new transport_Transport({\n file: 'sockjs',\n urls: sockjs,\n handlesActivityChecks: true,\n supportsPing: false,\n isSupported: function () {\n return true;\n },\n isInitialized: function () {\n return window.SockJS !== undefined;\n },\n getSocket: function (url, options) {\n return new window.SockJS(url, null, {\n js_path: Dependencies.getPath('sockjs', {\n useTLS: options.useTLS\n }),\n ignore_null_origin: options.ignoreNullOrigin\n });\n },\n beforeOpen: function (socket, path) {\n socket.send(JSON.stringify({\n path: path\n }));\n }\n});\nvar xdrConfiguration = {\n isSupported: function (environment) {\n var yes = runtime.isXDRSupported(environment.useTLS);\n return yes;\n }\n};\nvar XDRStreamingTransport = new transport_Transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transport_Transport(extend({}, pollingConfiguration, xdrConfiguration));\ntransports.xdr_streaming = XDRStreamingTransport;\ntransports.xdr_polling = XDRPollingTransport;\ntransports.sockjs = SockJSTransport;\n/* harmony default export */ var transports_transports = (transports);\n\n// CONCATENATED MODULE: ./src/runtimes/web/net_info.ts\n\nclass net_info_NetInfo extends dispatcher_Dispatcher {\n constructor() {\n super();\n var self = this;\n if (window.addEventListener !== undefined) {\n window.addEventListener('online', function () {\n self.emit('online');\n }, false);\n window.addEventListener('offline', function () {\n self.emit('offline');\n }, false);\n }\n }\n isOnline() {\n if (window.navigator.onLine === undefined) {\n return true;\n }\n else {\n return window.navigator.onLine;\n }\n }\n}\nvar net_info_Network = new net_info_NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nclass assistant_to_the_transport_manager_AssistantToTheTransportManager {\n constructor(manager, transport, options) {\n this.manager = manager;\n this.transport = transport;\n this.minPingDelay = options.minPingDelay;\n this.maxPingDelay = options.maxPingDelay;\n this.pingDelay = undefined;\n }\n createConnection(name, priority, key, options) {\n options = extend({}, options, {\n activityTimeout: this.pingDelay\n });\n var connection = this.transport.createConnection(name, priority, key, options);\n var openTimestamp = null;\n var onOpen = function () {\n connection.unbind('open', onOpen);\n connection.bind('closed', onClosed);\n openTimestamp = util.now();\n };\n var onClosed = closeEvent => {\n connection.unbind('closed', onClosed);\n if (closeEvent.code === 1002 || closeEvent.code === 1003) {\n this.manager.reportDeath();\n }\n else if (!closeEvent.wasClean && openTimestamp) {\n var lifespan = util.now() - openTimestamp;\n if (lifespan < 2 * this.maxPingDelay) {\n this.manager.reportDeath();\n this.pingDelay = Math.max(lifespan / 2, this.minPingDelay);\n }\n }\n };\n connection.bind('open', onOpen);\n return connection;\n }\n isSupported(environment) {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nconst Protocol = {\n decodeMessage: function (messageEvent) {\n try {\n var messageData = JSON.parse(messageEvent.data);\n var pusherEventData = messageData.data;\n if (typeof pusherEventData === 'string') {\n try {\n pusherEventData = JSON.parse(messageData.data);\n }\n catch (e) { }\n }\n var pusherEvent = {\n event: messageData.event,\n channel: messageData.channel,\n data: pusherEventData\n };\n if (messageData.user_id) {\n pusherEvent.user_id = messageData.user_id;\n }\n return pusherEvent;\n }\n catch (e) {\n throw { type: 'MessageParseError', error: e, data: messageEvent.data };\n }\n },\n encodeMessage: function (event) {\n return JSON.stringify(event);\n },\n processHandshake: function (messageEvent) {\n var message = Protocol.decodeMessage(messageEvent);\n if (message.event === 'pusher:connection_established') {\n if (!message.data.activity_timeout) {\n throw 'No activity timeout specified in handshake';\n }\n return {\n action: 'connected',\n id: message.data.socket_id,\n activityTimeout: message.data.activity_timeout * 1000\n };\n }\n else if (message.event === 'pusher:error') {\n return {\n action: this.getCloseAction(message.data),\n error: this.getCloseError(message.data)\n };\n }\n else {\n throw 'Invalid handshake';\n }\n },\n getCloseAction: function (closeEvent) {\n if (closeEvent.code < 4000) {\n if (closeEvent.code >= 1002 && closeEvent.code <= 1004) {\n return 'backoff';\n }\n else {\n return null;\n }\n }\n else if (closeEvent.code === 4000) {\n return 'tls_only';\n }\n else if (closeEvent.code < 4100) {\n return 'refused';\n }\n else if (closeEvent.code < 4200) {\n return 'backoff';\n }\n else if (closeEvent.code < 4300) {\n return 'retry';\n }\n else {\n return 'refused';\n }\n },\n getCloseError: function (closeEvent) {\n if (closeEvent.code !== 1000 && closeEvent.code !== 1001) {\n return {\n type: 'PusherError',\n data: {\n code: closeEvent.code,\n message: closeEvent.reason || closeEvent.message\n }\n };\n }\n else {\n return null;\n }\n }\n};\n/* harmony default export */ var protocol_protocol = (Protocol);\n\n// CONCATENATED MODULE: ./src/core/connection/connection.ts\n\n\n\n\nclass connection_Connection extends dispatcher_Dispatcher {\n constructor(id, transport) {\n super();\n this.id = id;\n this.transport = transport;\n this.activityTimeout = transport.activityTimeout;\n this.bindListeners();\n }\n handlesActivityChecks() {\n return this.transport.handlesActivityChecks();\n }\n send(data) {\n return this.transport.send(data);\n }\n send_event(name, data, channel) {\n var event = { event: name, data: data };\n if (channel) {\n event.channel = channel;\n }\n logger.debug('Event sent', event);\n return this.send(protocol_protocol.encodeMessage(event));\n }\n ping() {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n }\n else {\n this.send_event('pusher:ping', {});\n }\n }\n close() {\n this.transport.close();\n }\n bindListeners() {\n var listeners = {\n message: (messageEvent) => {\n var pusherEvent;\n try {\n pusherEvent = protocol_protocol.decodeMessage(messageEvent);\n }\n catch (e) {\n this.emit('error', {\n type: 'MessageParseError',\n error: e,\n data: messageEvent.data\n });\n }\n if (pusherEvent !== undefined) {\n logger.debug('Event recd', pusherEvent);\n switch (pusherEvent.event) {\n case 'pusher:error':\n this.emit('error', {\n type: 'PusherError',\n data: pusherEvent.data\n });\n break;\n case 'pusher:ping':\n this.emit('ping');\n break;\n case 'pusher:pong':\n this.emit('pong');\n break;\n }\n this.emit('message', pusherEvent);\n }\n },\n activity: () => {\n this.emit('activity');\n },\n error: error => {\n this.emit('error', error);\n },\n closed: closeEvent => {\n unbindListeners();\n if (closeEvent && closeEvent.code) {\n this.handleCloseEvent(closeEvent);\n }\n this.transport = null;\n this.emit('closed');\n }\n };\n var unbindListeners = () => {\n objectApply(listeners, (listener, event) => {\n this.transport.unbind(event, listener);\n });\n };\n objectApply(listeners, (listener, event) => {\n this.transport.bind(event, listener);\n });\n }\n handleCloseEvent(closeEvent) {\n var action = protocol_protocol.getCloseAction(closeEvent);\n var error = protocol_protocol.getCloseError(closeEvent);\n if (error) {\n this.emit('error', error);\n }\n if (action) {\n this.emit(action, { action: action, error: error });\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nclass handshake_Handshake {\n constructor(transport, callback) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n close() {\n this.unbindListeners();\n this.transport.close();\n }\n bindListeners() {\n this.onMessage = m => {\n this.unbindListeners();\n var result;\n try {\n result = protocol_protocol.processHandshake(m);\n }\n catch (e) {\n this.finish('error', { error: e });\n this.transport.close();\n return;\n }\n if (result.action === 'connected') {\n this.finish('connected', {\n connection: new connection_Connection(result.id, this.transport),\n activityTimeout: result.activityTimeout\n });\n }\n else {\n this.finish(result.action, { error: result.error });\n this.transport.close();\n }\n };\n this.onClosed = closeEvent => {\n this.unbindListeners();\n var action = protocol_protocol.getCloseAction(closeEvent) || 'backoff';\n var error = protocol_protocol.getCloseError(closeEvent);\n this.finish(action, { error: error });\n };\n this.transport.bind('message', this.onMessage);\n this.transport.bind('closed', this.onClosed);\n }\n unbindListeners() {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n }\n finish(action, params) {\n this.callback(extend({ transport: this.transport, action: action }, params));\n }\n}\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nclass timeline_sender_TimelineSender {\n constructor(timeline, options) {\n this.timeline = timeline;\n this.options = options || {};\n }\n send(useTLS, callback) {\n if (this.timeline.isEmpty()) {\n return;\n }\n this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\n\n\n\n\n\nclass channel_Channel extends dispatcher_Dispatcher {\n constructor(name, pusher) {\n super(function (event, data) {\n logger.debug('No callbacks on ' + name + ' for ' + event);\n });\n this.name = name;\n this.pusher = pusher;\n this.subscribed = false;\n this.subscriptionPending = false;\n this.subscriptionCancelled = false;\n }\n authorize(socketId, callback) {\n return callback(null, { auth: '' });\n }\n trigger(event, data) {\n if (event.indexOf('client-') !== 0) {\n throw new BadEventName(\"Event '\" + event + \"' does not start with 'client-'\");\n }\n if (!this.subscribed) {\n var suffix = url_store.buildLogSuffix('triggeringClientEvents');\n logger.warn(`Client event triggered before channel 'subscription_succeeded' event . ${suffix}`);\n }\n return this.pusher.send_event(event, data, this.name);\n }\n disconnect() {\n this.subscribed = false;\n this.subscriptionPending = false;\n }\n handleEvent(event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName === 'pusher_internal:subscription_succeeded') {\n this.handleSubscriptionSucceededEvent(event);\n }\n else if (eventName === 'pusher_internal:subscription_count') {\n this.handleSubscriptionCountEvent(event);\n }\n else if (eventName.indexOf('pusher_internal:') !== 0) {\n var metadata = {};\n this.emit(eventName, data, metadata);\n }\n }\n handleSubscriptionSucceededEvent(event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.emit('pusher:subscription_succeeded', event.data);\n }\n }\n handleSubscriptionCountEvent(event) {\n if (event.data.subscription_count) {\n this.subscriptionCount = event.data.subscription_count;\n }\n this.emit('pusher:subscription_count', event.data);\n }\n subscribe() {\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(this.pusher.connection.socket_id, (error, data) => {\n if (error) {\n this.subscriptionPending = false;\n logger.error(error.toString());\n this.emit('pusher:subscription_error', Object.assign({}, {\n type: 'AuthError',\n error: error.message\n }, error instanceof HTTPAuthError ? { status: error.status } : {}));\n }\n else {\n this.pusher.send_event('pusher:subscribe', {\n auth: data.auth,\n channel_data: data.channel_data,\n channel: this.name\n });\n }\n });\n }\n unsubscribe() {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n }\n cancelSubscription() {\n this.subscriptionCancelled = true;\n }\n reinstateSubscription() {\n this.subscriptionCancelled = false;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\n\nclass private_channel_PrivateChannel extends channel_Channel {\n authorize(socketId, callback) {\n return this.pusher.config.channelAuthorizer({\n channelName: this.name,\n socketId: socketId\n }, callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nclass members_Members {\n constructor() {\n this.reset();\n }\n get(id) {\n if (Object.prototype.hasOwnProperty.call(this.members, id)) {\n return {\n id: id,\n info: this.members[id]\n };\n }\n else {\n return null;\n }\n }\n each(callback) {\n objectApply(this.members, (member, id) => {\n callback(this.get(id));\n });\n }\n setMyID(id) {\n this.myID = id;\n }\n onSubscription(subscriptionData) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n }\n addMember(memberData) {\n if (this.get(memberData.user_id) === null) {\n this.count++;\n }\n this.members[memberData.user_id] = memberData.user_info;\n return this.get(memberData.user_id);\n }\n removeMember(memberData) {\n var member = this.get(memberData.user_id);\n if (member) {\n delete this.members[memberData.user_id];\n this.count--;\n }\n return member;\n }\n reset() {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\n\n\n\nclass presence_channel_PresenceChannel extends private_channel_PrivateChannel {\n constructor(name, pusher) {\n super(name, pusher);\n this.members = new members_Members();\n }\n authorize(socketId, callback) {\n super.authorize(socketId, (error, authData) => __awaiter(this, void 0, void 0, function* () {\n if (!error) {\n authData = authData;\n if (authData.channel_data != null) {\n var channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n }\n else {\n yield this.pusher.user.signinDonePromise;\n if (this.pusher.user.user_data != null) {\n this.members.setMyID(this.pusher.user.user_data.id);\n }\n else {\n let suffix = url_store.buildLogSuffix('authorizationEndpoint');\n logger.error(`Invalid auth response for channel '${this.name}', ` +\n `expected 'channel_data' field. ${suffix}, ` +\n `or the user should be signed in.`);\n callback('Invalid auth response');\n return;\n }\n }\n }\n callback(error, authData);\n }));\n }\n handleEvent(event) {\n var eventName = event.event;\n if (eventName.indexOf('pusher_internal:') === 0) {\n this.handleInternalEvent(event);\n }\n else {\n var data = event.data;\n var metadata = {};\n if (event.user_id) {\n metadata.user_id = event.user_id;\n }\n this.emit(eventName, data, metadata);\n }\n }\n handleInternalEvent(event) {\n var eventName = event.event;\n var data = event.data;\n switch (eventName) {\n case 'pusher_internal:subscription_succeeded':\n this.handleSubscriptionSucceededEvent(event);\n break;\n case 'pusher_internal:subscription_count':\n this.handleSubscriptionCountEvent(event);\n break;\n case 'pusher_internal:member_added':\n var addedMember = this.members.addMember(data);\n this.emit('pusher:member_added', addedMember);\n break;\n case 'pusher_internal:member_removed':\n var removedMember = this.members.removeMember(data);\n if (removedMember) {\n this.emit('pusher:member_removed', removedMember);\n }\n break;\n }\n }\n handleSubscriptionSucceededEvent(event) {\n this.subscriptionPending = false;\n this.subscribed = true;\n if (this.subscriptionCancelled) {\n this.pusher.unsubscribe(this.name);\n }\n else {\n this.members.onSubscription(event.data);\n this.emit('pusher:subscription_succeeded', this.members);\n }\n }\n disconnect() {\n this.members.reset();\n super.disconnect();\n }\n}\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/utf8/lib/utf8.js\nvar utf8 = __webpack_require__(1);\n\n// EXTERNAL MODULE: ./node_modules/@stablelib/base64/lib/base64.js\nvar base64 = __webpack_require__(0);\n\n// CONCATENATED MODULE: ./src/core/channels/encrypted_channel.ts\n\n\n\n\n\nclass encrypted_channel_EncryptedChannel extends private_channel_PrivateChannel {\n constructor(name, pusher, nacl) {\n super(name, pusher);\n this.key = null;\n this.nacl = nacl;\n }\n authorize(socketId, callback) {\n super.authorize(socketId, (error, authData) => {\n if (error) {\n callback(error, authData);\n return;\n }\n let sharedSecret = authData['shared_secret'];\n if (!sharedSecret) {\n callback(new Error(`No shared_secret key in auth payload for encrypted channel: ${this.name}`), null);\n return;\n }\n this.key = Object(base64[\"decode\"])(sharedSecret);\n delete authData['shared_secret'];\n callback(null, authData);\n });\n }\n trigger(event, data) {\n throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n }\n handleEvent(event) {\n var eventName = event.event;\n var data = event.data;\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n super.handleEvent(event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n }\n handleEncryptedEvent(event, data) {\n if (!this.key) {\n logger.debug('Received encrypted event before key has been retrieved from the authEndpoint');\n return;\n }\n if (!data.ciphertext || !data.nonce) {\n logger.error('Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: ' +\n data);\n return;\n }\n let cipherText = Object(base64[\"decode\"])(data.ciphertext);\n if (cipherText.length < this.nacl.secretbox.overheadLength) {\n logger.error(`Expected encrypted event ciphertext length to be ${this.nacl.secretbox.overheadLength}, got: ${cipherText.length}`);\n return;\n }\n let nonce = Object(base64[\"decode\"])(data.nonce);\n if (nonce.length < this.nacl.secretbox.nonceLength) {\n logger.error(`Expected encrypted event nonce length to be ${this.nacl.secretbox.nonceLength}, got: ${nonce.length}`);\n return;\n }\n let bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.debug('Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint...');\n this.authorize(this.pusher.connection.socket_id, (error, authData) => {\n if (error) {\n logger.error(`Failed to make a request to the authEndpoint: ${authData}. Unable to fetch new key, so dropping encrypted event`);\n return;\n }\n bytes = this.nacl.secretbox.open(cipherText, nonce, this.key);\n if (bytes === null) {\n logger.error(`Failed to decrypt event with new key. Dropping encrypted event`);\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n return;\n });\n return;\n }\n this.emit(event, this.getDataToEmit(bytes));\n }\n getDataToEmit(bytes) {\n let raw = Object(utf8[\"decode\"])(bytes);\n try {\n return JSON.parse(raw);\n }\n catch (_a) {\n return raw;\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\n\n\n\n\n\nclass connection_manager_ConnectionManager extends dispatcher_Dispatcher {\n constructor(key, options) {\n super();\n this.state = 'initialized';\n this.connection = null;\n this.key = key;\n this.options = options;\n this.timeline = this.options.timeline;\n this.usingTLS = this.options.useTLS;\n this.errorCallbacks = this.buildErrorCallbacks();\n this.connectionCallbacks = this.buildConnectionCallbacks(this.errorCallbacks);\n this.handshakeCallbacks = this.buildHandshakeCallbacks(this.errorCallbacks);\n var Network = runtime.getNetwork();\n Network.bind('online', () => {\n this.timeline.info({ netinfo: 'online' });\n if (this.state === 'connecting' || this.state === 'unavailable') {\n this.retryIn(0);\n }\n });\n Network.bind('offline', () => {\n this.timeline.info({ netinfo: 'offline' });\n if (this.connection) {\n this.sendActivityCheck();\n }\n });\n this.updateStrategy();\n }\n connect() {\n if (this.connection || this.runner) {\n return;\n }\n if (!this.strategy.isSupported()) {\n this.updateState('failed');\n return;\n }\n this.updateState('connecting');\n this.startConnecting();\n this.setUnavailableTimer();\n }\n send(data) {\n if (this.connection) {\n return this.connection.send(data);\n }\n else {\n return false;\n }\n }\n send_event(name, data, channel) {\n if (this.connection) {\n return this.connection.send_event(name, data, channel);\n }\n else {\n return false;\n }\n }\n disconnect() {\n this.disconnectInternally();\n this.updateState('disconnected');\n }\n isUsingTLS() {\n return this.usingTLS;\n }\n startConnecting() {\n var callback = (error, handshake) => {\n if (error) {\n this.runner = this.strategy.connect(0, callback);\n }\n else {\n if (handshake.action === 'error') {\n this.emit('error', {\n type: 'HandshakeError',\n error: handshake.error\n });\n this.timeline.error({ handshakeError: handshake.error });\n }\n else {\n this.abortConnecting();\n this.handshakeCallbacks[handshake.action](handshake);\n }\n }\n };\n this.runner = this.strategy.connect(0, callback);\n }\n abortConnecting() {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n }\n disconnectInternally() {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n }\n updateStrategy() {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n }\n retryIn(delay) {\n this.timeline.info({ action: 'retry', delay: delay });\n if (delay > 0) {\n this.emit('connecting_in', Math.round(delay / 1000));\n }\n this.retryTimer = new timers_OneOffTimer(delay || 0, () => {\n this.disconnectInternally();\n this.connect();\n });\n }\n clearRetryTimer() {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n }\n setUnavailableTimer() {\n this.unavailableTimer = new timers_OneOffTimer(this.options.unavailableTimeout, () => {\n this.updateState('unavailable');\n });\n }\n clearUnavailableTimer() {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n }\n sendActivityCheck() {\n this.stopActivityCheck();\n this.connection.ping();\n this.activityTimer = new timers_OneOffTimer(this.options.pongTimeout, () => {\n this.timeline.error({ pong_timed_out: this.options.pongTimeout });\n this.retryIn(0);\n });\n }\n resetActivityCheck() {\n this.stopActivityCheck();\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new timers_OneOffTimer(this.activityTimeout, () => {\n this.sendActivityCheck();\n });\n }\n }\n stopActivityCheck() {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n }\n buildConnectionCallbacks(errorCallbacks) {\n return extend({}, errorCallbacks, {\n message: message => {\n this.resetActivityCheck();\n this.emit('message', message);\n },\n ping: () => {\n this.send_event('pusher:pong', {});\n },\n activity: () => {\n this.resetActivityCheck();\n },\n error: error => {\n this.emit('error', error);\n },\n closed: () => {\n this.abandonConnection();\n if (this.shouldRetry()) {\n this.retryIn(1000);\n }\n }\n });\n }\n buildHandshakeCallbacks(errorCallbacks) {\n return extend({}, errorCallbacks, {\n connected: (handshake) => {\n this.activityTimeout = Math.min(this.options.activityTimeout, handshake.activityTimeout, handshake.connection.activityTimeout || Infinity);\n this.clearUnavailableTimer();\n this.setConnection(handshake.connection);\n this.socket_id = this.connection.id;\n this.updateState('connected', { socket_id: this.socket_id });\n }\n });\n }\n buildErrorCallbacks() {\n let withErrorEmitted = callback => {\n return (result) => {\n if (result.error) {\n this.emit('error', { type: 'WebSocketError', error: result.error });\n }\n callback(result);\n };\n };\n return {\n tls_only: withErrorEmitted(() => {\n this.usingTLS = true;\n this.updateStrategy();\n this.retryIn(0);\n }),\n refused: withErrorEmitted(() => {\n this.disconnect();\n }),\n backoff: withErrorEmitted(() => {\n this.retryIn(1000);\n }),\n retry: withErrorEmitted(() => {\n this.retryIn(0);\n })\n };\n }\n setConnection(connection) {\n this.connection = connection;\n for (var event in this.connectionCallbacks) {\n this.connection.bind(event, this.connectionCallbacks[event]);\n }\n this.resetActivityCheck();\n }\n abandonConnection() {\n if (!this.connection) {\n return;\n }\n this.stopActivityCheck();\n for (var event in this.connectionCallbacks) {\n this.connection.unbind(event, this.connectionCallbacks[event]);\n }\n var connection = this.connection;\n this.connection = null;\n return connection;\n }\n updateState(newState, data) {\n var previousState = this.state;\n this.state = newState;\n if (previousState !== newState) {\n var newStateDescription = newState;\n if (newStateDescription === 'connected') {\n newStateDescription += ' with new socket ID ' + data.socket_id;\n }\n logger.debug('State changed', previousState + ' -> ' + newStateDescription);\n this.timeline.info({ state: newState, params: data });\n this.emit('state_change', { previous: previousState, current: newState });\n this.emit(newState, data);\n }\n }\n shouldRetry() {\n return this.state === 'connecting' || this.state === 'connected';\n }\n}\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nclass channels_Channels {\n constructor() {\n this.channels = {};\n }\n add(name, pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n }\n all() {\n return values(this.channels);\n }\n find(name) {\n return this.channels[name];\n }\n remove(name) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n }\n disconnect() {\n objectApply(this.channels, function (channel) {\n channel.disconnect();\n });\n }\n}\nfunction createChannel(name, pusher) {\n if (name.indexOf('private-encrypted-') === 0) {\n if (pusher.config.nacl) {\n return factory.createEncryptedChannel(name, pusher, pusher.config.nacl);\n }\n let errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n let suffix = url_store.buildLogSuffix('encryptedChannelSupport');\n throw new UnsupportedFeature(`${errMsg}. ${suffix}`);\n }\n else if (name.indexOf('private-') === 0) {\n return factory.createPrivateChannel(name, pusher);\n }\n else if (name.indexOf('presence-') === 0) {\n return factory.createPresenceChannel(name, pusher);\n }\n else if (name.indexOf('#') === 0) {\n throw new BadChannelName('Cannot create a channel with name \"' + name + '\".');\n }\n else {\n return factory.createChannel(name, pusher);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/factory.ts\n\n\n\n\n\n\n\n\n\nvar Factory = {\n createChannels() {\n return new channels_Channels();\n },\n createConnectionManager(key, options) {\n return new connection_manager_ConnectionManager(key, options);\n },\n createChannel(name, pusher) {\n return new channel_Channel(name, pusher);\n },\n createPrivateChannel(name, pusher) {\n return new private_channel_PrivateChannel(name, pusher);\n },\n createPresenceChannel(name, pusher) {\n return new presence_channel_PresenceChannel(name, pusher);\n },\n createEncryptedChannel(name, pusher, nacl) {\n return new encrypted_channel_EncryptedChannel(name, pusher, nacl);\n },\n createTimelineSender(timeline, options) {\n return new timeline_sender_TimelineSender(timeline, options);\n },\n createHandshake(transport, callback) {\n return new handshake_Handshake(transport, callback);\n },\n createAssistantToTheTransportManager(manager, transport, options) {\n return new assistant_to_the_transport_manager_AssistantToTheTransportManager(manager, transport, options);\n }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nclass transport_manager_TransportManager {\n constructor(options) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n getAssistant(transport) {\n return factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n }\n isAlive() {\n return this.livesLeft > 0;\n }\n reportDeath() {\n this.livesLeft -= 1;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nclass sequential_strategy_SequentialStrategy {\n constructor(strategies, options) {\n this.strategies = strategies;\n this.loop = Boolean(options.loop);\n this.failFast = Boolean(options.failFast);\n this.timeout = options.timeout;\n this.timeoutLimit = options.timeoutLimit;\n }\n isSupported() {\n return any(this.strategies, util.method('isSupported'));\n }\n connect(minPriority, callback) {\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n var tryNextStrategy = (error, handshake) => {\n if (handshake) {\n callback(null, handshake);\n }\n else {\n current = current + 1;\n if (this.loop) {\n current = current % strategies.length;\n }\n if (current < strategies.length) {\n if (timeout) {\n timeout = timeout * 2;\n if (this.timeoutLimit) {\n timeout = Math.min(timeout, this.timeoutLimit);\n }\n }\n runner = this.tryStrategy(strategies[current], minPriority, { timeout, failFast: this.failFast }, tryNextStrategy);\n }\n else {\n callback(true);\n }\n }\n };\n runner = this.tryStrategy(strategies[current], minPriority, { timeout: timeout, failFast: this.failFast }, tryNextStrategy);\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n tryStrategy(strategy, minPriority, options, callback) {\n var timer = null;\n var runner = null;\n if (options.timeout > 0) {\n timer = new timers_OneOffTimer(options.timeout, function () {\n runner.abort();\n callback(true);\n });\n }\n runner = strategy.connect(minPriority, function (error, handshake) {\n if (error && timer && timer.isRunning() && !options.failFast) {\n return;\n }\n if (timer) {\n timer.ensureAborted();\n }\n callback(error, handshake);\n });\n return {\n abort: function () {\n if (timer) {\n timer.ensureAborted();\n }\n runner.abort();\n },\n forceMinPriority: function (p) {\n runner.forceMinPriority(p);\n }\n };\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nclass best_connected_ever_strategy_BestConnectedEverStrategy {\n constructor(strategies) {\n this.strategies = strategies;\n }\n isSupported() {\n return any(this.strategies, util.method('isSupported'));\n }\n connect(minPriority, callback) {\n return connect(this.strategies, minPriority, function (i, runners) {\n return function (error, handshake) {\n runners[i].error = error;\n if (error) {\n if (allRunnersFailed(runners)) {\n callback(true);\n }\n return;\n }\n apply(runners, function (runner) {\n runner.forceMinPriority(handshake.transport.priority);\n });\n callback(null, handshake);\n };\n });\n }\n}\nfunction connect(strategies, minPriority, callbackBuilder) {\n var runners = map(strategies, function (strategy, i, _, rs) {\n return strategy.connect(minPriority, callbackBuilder(i, rs));\n });\n return {\n abort: function () {\n apply(runners, abortRunner);\n },\n forceMinPriority: function (p) {\n apply(runners, function (runner) {\n runner.forceMinPriority(p);\n });\n }\n };\n}\nfunction allRunnersFailed(runners) {\n return collections_all(runners, function (runner) {\n return Boolean(runner.error);\n });\n}\nfunction abortRunner(runner) {\n if (!runner.error && !runner.aborted) {\n runner.abort();\n runner.aborted = true;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/websocket_prioritized_cached_strategy.ts\n\n\n\n\nclass websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy {\n constructor(strategy, transports, options) {\n this.strategy = strategy;\n this.transports = transports;\n this.ttl = options.ttl || 1800 * 1000;\n this.usingTLS = options.useTLS;\n this.timeline = options.timeline;\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\n var cacheSkipCount = info && info.cacheSkipCount ? info.cacheSkipCount : 0;\n var strategies = [this.strategy];\n if (info && info.timestamp + this.ttl >= util.now()) {\n var transport = this.transports[info.transport];\n if (transport) {\n if (['ws', 'wss'].includes(info.transport) || cacheSkipCount > 3) {\n this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(new sequential_strategy_SequentialStrategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\n }));\n }\n else {\n cacheSkipCount++;\n }\n }\n }\n var startTimestamp = util.now();\n var runner = strategies\n .pop()\n .connect(minPriority, function cb(error, handshake) {\n if (error) {\n flushTransportCache(usingTLS);\n if (strategies.length > 0) {\n startTimestamp = util.now();\n runner = strategies.pop().connect(minPriority, cb);\n }\n else {\n callback(error);\n }\n }\n else {\n storeTransportCache(usingTLS, handshake.transport.name, util.now() - startTimestamp, cacheSkipCount);\n callback(null, handshake);\n }\n });\n return {\n abort: function () {\n runner.abort();\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\nfunction getTransportCacheKey(usingTLS) {\n return 'pusherTransport' + (usingTLS ? 'TLS' : 'NonTLS');\n}\nfunction fetchTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n var serializedCache = storage[getTransportCacheKey(usingTLS)];\n if (serializedCache) {\n return JSON.parse(serializedCache);\n }\n }\n catch (e) {\n flushTransportCache(usingTLS);\n }\n }\n return null;\n}\nfunction storeTransportCache(usingTLS, transport, latency, cacheSkipCount) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n storage[getTransportCacheKey(usingTLS)] = safeJSONStringify({\n timestamp: util.now(),\n transport: transport,\n latency: latency,\n cacheSkipCount: cacheSkipCount\n });\n }\n catch (e) {\n }\n }\n}\nfunction flushTransportCache(usingTLS) {\n var storage = runtime.getLocalStorage();\n if (storage) {\n try {\n delete storage[getTransportCacheKey(usingTLS)];\n }\n catch (e) {\n }\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/delayed_strategy.ts\n\nclass delayed_strategy_DelayedStrategy {\n constructor(strategy, { delay: number }) {\n this.strategy = strategy;\n this.options = { delay: number };\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var strategy = this.strategy;\n var runner;\n var timer = new timers_OneOffTimer(this.options.delay, function () {\n runner = strategy.connect(minPriority, callback);\n });\n return {\n abort: function () {\n timer.ensureAborted();\n if (runner) {\n runner.abort();\n }\n },\n forceMinPriority: function (p) {\n minPriority = p;\n if (runner) {\n runner.forceMinPriority(p);\n }\n }\n };\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nclass IfStrategy {\n constructor(test, trueBranch, falseBranch) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n isSupported() {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n }\n connect(minPriority, callback) {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nclass FirstConnectedStrategy {\n constructor(strategy) {\n this.strategy = strategy;\n }\n isSupported() {\n return this.strategy.isSupported();\n }\n connect(minPriority, callback) {\n var runner = this.strategy.connect(minPriority, function (error, handshake) {\n if (handshake) {\n runner.abort();\n }\n callback(error, handshake);\n });\n return runner;\n }\n}\n\n// CONCATENATED MODULE: ./src/runtimes/web/default_strategy.ts\n\n\n\n\n\n\n\nfunction testSupportsStrategy(strategy) {\n return function () {\n return strategy.isSupported();\n };\n}\nvar getDefaultStrategy = function (config, baseOptions, defineTransport) {\n var definedTransports = {};\n function defineTransportStrategy(name, type, priority, options, manager) {\n var transport = defineTransport(config, name, type, priority, options, manager);\n definedTransports[name] = transport;\n return transport;\n }\n var ws_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.wsHost + ':' + config.wsPort,\n hostTLS: config.wsHost + ':' + config.wssPort,\n httpPath: config.wsPath\n });\n var wss_options = Object.assign({}, ws_options, {\n useTLS: true\n });\n var sockjs_options = Object.assign({}, baseOptions, {\n hostNonTLS: config.httpHost + ':' + config.httpPort,\n hostTLS: config.httpHost + ':' + config.httpsPort,\n httpPath: config.httpPath\n });\n var timeouts = {\n loop: true,\n timeout: 15000,\n timeoutLimit: 60000\n };\n var ws_manager = new transport_manager_TransportManager({\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new transport_manager_TransportManager({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var ws_transport = defineTransportStrategy('ws', 'ws', 3, ws_options, ws_manager);\n var wss_transport = defineTransportStrategy('wss', 'ws', 3, wss_options, ws_manager);\n var sockjs_transport = defineTransportStrategy('sockjs', 'sockjs', 1, sockjs_options);\n var xhr_streaming_transport = defineTransportStrategy('xhr_streaming', 'xhr_streaming', 1, sockjs_options, streaming_manager);\n var xdr_streaming_transport = defineTransportStrategy('xdr_streaming', 'xdr_streaming', 1, sockjs_options, streaming_manager);\n var xhr_polling_transport = defineTransportStrategy('xhr_polling', 'xhr_polling', 1, sockjs_options);\n var xdr_polling_transport = defineTransportStrategy('xdr_polling', 'xdr_polling', 1, sockjs_options);\n var ws_loop = new sequential_strategy_SequentialStrategy([ws_transport], timeouts);\n var wss_loop = new sequential_strategy_SequentialStrategy([wss_transport], timeouts);\n var sockjs_loop = new sequential_strategy_SequentialStrategy([sockjs_transport], timeouts);\n var streaming_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n ], timeouts);\n var polling_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n ], timeouts);\n var http_loop = new sequential_strategy_SequentialStrategy([\n new IfStrategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy_BestConnectedEverStrategy([\n streaming_loop,\n new delayed_strategy_DelayedStrategy(polling_loop, { delay: 4000 })\n ]), polling_loop)\n ], timeouts);\n var http_fallback_loop = new IfStrategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n ws_loop,\n new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 2000 })\n ]);\n }\n else {\n wsStrategy = new best_connected_ever_strategy_BestConnectedEverStrategy([\n ws_loop,\n new delayed_strategy_DelayedStrategy(wss_loop, { delay: 2000 }),\n new delayed_strategy_DelayedStrategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n return new websocket_prioritized_cached_strategy_WebSocketPrioritizedCachedStrategy(new FirstConnectedStrategy(new IfStrategy(testSupportsStrategy(ws_transport), wsStrategy, http_fallback_loop)), definedTransports, {\n ttl: 1800000,\n timeline: baseOptions.timeline,\n useTLS: baseOptions.useTLS\n });\n};\n/* harmony default export */ var default_strategy = (getDefaultStrategy);\n\n// CONCATENATED MODULE: ./src/runtimes/web/transports/transport_connection_initializer.ts\n\n/* harmony default export */ var transport_connection_initializer = (function () {\n var self = this;\n self.timeline.info(self.buildTimelineMessage({\n transport: self.name + (self.options.useTLS ? 's' : '')\n }));\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n }\n else if (self.hooks.file) {\n self.changeState('initializing');\n Dependencies.load(self.hooks.file, { useTLS: self.options.useTLS }, function (error, callback) {\n if (self.hooks.isInitialized()) {\n self.changeState('initialized');\n callback(true);\n }\n else {\n if (error) {\n self.onError(error);\n }\n self.onClose();\n callback(false);\n }\n });\n }\n else {\n self.onClose();\n }\n});\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http_xdomain_request.ts\n\nvar http_xdomain_request_hooks = {\n getRequest: function (socket) {\n var xdr = new window.XDomainRequest();\n xdr.ontimeout = function () {\n socket.emit('error', new RequestTimedOut());\n socket.close();\n };\n xdr.onerror = function (e) {\n socket.emit('error', e);\n socket.close();\n };\n xdr.onprogress = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n };\n xdr.onload = function () {\n if (xdr.responseText && xdr.responseText.length > 0) {\n socket.onChunk(200, xdr.responseText);\n }\n socket.emit('finished', 200);\n socket.close();\n };\n return xdr;\n },\n abortRequest: function (xdr) {\n xdr.ontimeout = xdr.onerror = xdr.onprogress = xdr.onload = null;\n xdr.abort();\n }\n};\n/* harmony default export */ var http_xdomain_request = (http_xdomain_request_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_request.ts\n\n\nconst MAX_BUFFER_LENGTH = 256 * 1024;\nclass http_request_HTTPRequest extends dispatcher_Dispatcher {\n constructor(hooks, method, url) {\n super();\n this.hooks = hooks;\n this.method = method;\n this.url = url;\n }\n start(payload) {\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n this.unloader = () => {\n this.close();\n };\n runtime.addUnloadListener(this.unloader);\n this.xhr.open(this.method, this.url, true);\n if (this.xhr.setRequestHeader) {\n this.xhr.setRequestHeader('Content-Type', 'application/json');\n }\n this.xhr.send(payload);\n }\n close() {\n if (this.unloader) {\n runtime.removeUnloadListener(this.unloader);\n this.unloader = null;\n }\n if (this.xhr) {\n this.hooks.abortRequest(this.xhr);\n this.xhr = null;\n }\n }\n onChunk(status, data) {\n while (true) {\n var chunk = this.advanceBuffer(data);\n if (chunk) {\n this.emit('chunk', { status: status, data: chunk });\n }\n else {\n break;\n }\n }\n if (this.isBufferTooLong(data)) {\n this.emit('buffer_too_long');\n }\n }\n advanceBuffer(buffer) {\n var unreadData = buffer.slice(this.position);\n var endOfLinePosition = unreadData.indexOf('\\n');\n if (endOfLinePosition !== -1) {\n this.position += endOfLinePosition + 1;\n return unreadData.slice(0, endOfLinePosition);\n }\n else {\n return null;\n }\n }\n isBufferTooLong(buffer) {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/http/state.ts\nvar State;\n(function (State) {\n State[State[\"CONNECTING\"] = 0] = \"CONNECTING\";\n State[State[\"OPEN\"] = 1] = \"OPEN\";\n State[State[\"CLOSED\"] = 3] = \"CLOSED\";\n})(State || (State = {}));\n/* harmony default export */ var state = (State);\n\n// CONCATENATED MODULE: ./src/core/http/http_socket.ts\n\n\n\nvar autoIncrement = 1;\nclass http_socket_HTTPSocket {\n constructor(hooks, url) {\n this.hooks = hooks;\n this.session = randomNumber(1000) + '/' + randomString(8);\n this.location = getLocation(url);\n this.readyState = state.CONNECTING;\n this.openStream();\n }\n send(payload) {\n return this.sendRaw(JSON.stringify([payload]));\n }\n ping() {\n this.hooks.sendHeartbeat(this);\n }\n close(code, reason) {\n this.onClose(code, reason, true);\n }\n sendRaw(payload) {\n if (this.readyState === state.OPEN) {\n try {\n runtime.createSocketRequest('POST', getUniqueURL(getSendURL(this.location, this.session))).start(payload);\n return true;\n }\n catch (e) {\n return false;\n }\n }\n else {\n return false;\n }\n }\n reconnect() {\n this.closeStream();\n this.openStream();\n }\n onClose(code, reason, wasClean) {\n this.closeStream();\n this.readyState = state.CLOSED;\n if (this.onclose) {\n this.onclose({\n code: code,\n reason: reason,\n wasClean: wasClean\n });\n }\n }\n onChunk(chunk) {\n if (chunk.status !== 200) {\n return;\n }\n if (this.readyState === state.OPEN) {\n this.onActivity();\n }\n var payload;\n var type = chunk.data.slice(0, 1);\n switch (type) {\n case 'o':\n payload = JSON.parse(chunk.data.slice(1) || '{}');\n this.onOpen(payload);\n break;\n case 'a':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n for (var i = 0; i < payload.length; i++) {\n this.onEvent(payload[i]);\n }\n break;\n case 'm':\n payload = JSON.parse(chunk.data.slice(1) || 'null');\n this.onEvent(payload);\n break;\n case 'h':\n this.hooks.onHeartbeat(this);\n break;\n case 'c':\n payload = JSON.parse(chunk.data.slice(1) || '[]');\n this.onClose(payload[0], payload[1], true);\n break;\n }\n }\n onOpen(options) {\n if (this.readyState === state.CONNECTING) {\n if (options && options.hostname) {\n this.location.base = replaceHost(this.location.base, options.hostname);\n }\n this.readyState = state.OPEN;\n if (this.onopen) {\n this.onopen();\n }\n }\n else {\n this.onClose(1006, 'Server lost session', true);\n }\n }\n onEvent(event) {\n if (this.readyState === state.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n }\n onActivity() {\n if (this.onactivity) {\n this.onactivity();\n }\n }\n onError(error) {\n if (this.onerror) {\n this.onerror(error);\n }\n }\n openStream() {\n this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n this.stream.bind('chunk', chunk => {\n this.onChunk(chunk);\n });\n this.stream.bind('finished', status => {\n this.hooks.onFinished(this, status);\n });\n this.stream.bind('buffer_too_long', () => {\n this.reconnect();\n });\n try {\n this.stream.start();\n }\n catch (error) {\n util.defer(() => {\n this.onError(error);\n this.onClose(1006, 'Could not start streaming', false);\n });\n }\n }\n closeStream() {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n }\n}\nfunction getLocation(url) {\n var parts = /([^\\?]*)\\/*(\\??.*)/.exec(url);\n return {\n base: parts[1],\n queryString: parts[2]\n };\n}\nfunction getSendURL(url, session) {\n return url.base + '/' + session + '/xhr_send';\n}\nfunction getUniqueURL(url) {\n var separator = url.indexOf('?') === -1 ? '?' : '&';\n return url + separator + 't=' + +new Date() + '&n=' + autoIncrement++;\n}\nfunction replaceHost(url, hostname) {\n var urlParts = /(https?:\\/\\/)([^\\/:]+)((\\/|:)?.*)/.exec(url);\n return urlParts[1] + hostname + urlParts[3];\n}\nfunction randomNumber(max) {\n return runtime.randomInt(max);\n}\nfunction randomString(length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(randomNumber(32).toString(32));\n }\n return result.join('');\n}\n/* harmony default export */ var http_socket = (http_socket_HTTPSocket);\n\n// CONCATENATED MODULE: ./src/core/http/http_streaming_socket.ts\nvar http_streaming_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr_streaming' + url.queryString;\n },\n onHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n};\n/* harmony default export */ var http_streaming_socket = (http_streaming_socket_hooks);\n\n// CONCATENATED MODULE: ./src/core/http/http_polling_socket.ts\nvar http_polling_socket_hooks = {\n getReceiveURL: function (url, session) {\n return url.base + '/' + session + '/xhr' + url.queryString;\n },\n onHeartbeat: function () {\n },\n sendHeartbeat: function (socket) {\n socket.sendRaw('[]');\n },\n onFinished: function (socket, status) {\n if (status === 200) {\n socket.reconnect();\n }\n else {\n socket.onClose(1006, 'Connection interrupted (' + status + ')', false);\n }\n }\n};\n/* harmony default export */ var http_polling_socket = (http_polling_socket_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http_xhr_request.ts\n\nvar http_xhr_request_hooks = {\n getRequest: function (socket) {\n var Constructor = runtime.getXHRAPI();\n var xhr = new Constructor();\n xhr.onreadystatechange = xhr.onprogress = function () {\n switch (xhr.readyState) {\n case 3:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n break;\n case 4:\n if (xhr.responseText && xhr.responseText.length > 0) {\n socket.onChunk(xhr.status, xhr.responseText);\n }\n socket.emit('finished', xhr.status);\n socket.close();\n break;\n }\n };\n return xhr;\n },\n abortRequest: function (xhr) {\n xhr.onreadystatechange = null;\n xhr.abort();\n }\n};\n/* harmony default export */ var http_xhr_request = (http_xhr_request_hooks);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/http/http.ts\n\n\n\n\n\nvar HTTP = {\n createStreamingSocket(url) {\n return this.createSocket(http_streaming_socket, url);\n },\n createPollingSocket(url) {\n return this.createSocket(http_polling_socket, url);\n },\n createSocket(hooks, url) {\n return new http_socket(hooks, url);\n },\n createXHR(method, url) {\n return this.createRequest(http_xhr_request, method, url);\n },\n createRequest(hooks, method, url) {\n return new http_request_HTTPRequest(hooks, method, url);\n }\n};\n/* harmony default export */ var http_http = (HTTP);\n\n// CONCATENATED MODULE: ./src/runtimes/web/http/http.ts\n\n\nhttp_http.createXDR = function (method, url) {\n return this.createRequest(http_xdomain_request, method, url);\n};\n/* harmony default export */ var web_http_http = (http_http);\n\n// CONCATENATED MODULE: ./src/runtimes/web/runtime.ts\n\n\n\n\n\n\n\n\n\n\n\n\nvar Runtime = {\n nextAuthCallbackID: 1,\n auth_callbacks: {},\n ScriptReceivers: ScriptReceivers,\n DependenciesReceivers: DependenciesReceivers,\n getDefaultStrategy: default_strategy,\n Transports: transports_transports,\n transportConnectionInitializer: transport_connection_initializer,\n HTTPFactory: web_http_http,\n TimelineTransport: jsonp_timeline,\n getXHRAPI() {\n return window.XMLHttpRequest;\n },\n getWebSocketAPI() {\n return window.WebSocket || window.MozWebSocket;\n },\n setup(PusherClass) {\n window.Pusher = PusherClass;\n var initializeOnDocumentBody = () => {\n this.onDocumentBody(PusherClass.ready);\n };\n if (!window.JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n }\n else {\n initializeOnDocumentBody();\n }\n },\n getDocument() {\n return document;\n },\n getProtocol() {\n return this.getDocument().location.protocol;\n },\n getAuthorizers() {\n return { ajax: xhr_auth, jsonp: jsonp_auth };\n },\n onDocumentBody(callback) {\n if (document.body) {\n callback();\n }\n else {\n setTimeout(() => {\n this.onDocumentBody(callback);\n }, 0);\n }\n },\n createJSONPRequest(url, data) {\n return new jsonp_request_JSONPRequest(url, data);\n },\n createScriptRequest(src) {\n return new ScriptRequest(src);\n },\n getLocalStorage() {\n try {\n return window.localStorage;\n }\n catch (e) {\n return undefined;\n }\n },\n createXHR() {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n }\n else {\n return this.createMicrosoftXHR();\n }\n },\n createXMLHttpRequest() {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n createMicrosoftXHR() {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n getNetwork() {\n return net_info_Network;\n },\n createWebSocket(url) {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n createSocketRequest(method, url) {\n if (this.isXHRSupported()) {\n return this.HTTPFactory.createXHR(method, url);\n }\n else if (this.isXDRSupported(url.indexOf('https:') === 0)) {\n return this.HTTPFactory.createXDR(method, url);\n }\n else {\n throw 'Cross-origin HTTP requests are not supported';\n }\n },\n isXHRSupported() {\n var Constructor = this.getXHRAPI();\n return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n },\n isXDRSupported(useTLS) {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n },\n addUnloadListener(listener) {\n if (window.addEventListener !== undefined) {\n window.addEventListener('unload', listener, false);\n }\n else if (window.attachEvent !== undefined) {\n window.attachEvent('onunload', listener);\n }\n },\n removeUnloadListener(listener) {\n if (window.addEventListener !== undefined) {\n window.removeEventListener('unload', listener, false);\n }\n else if (window.detachEvent !== undefined) {\n window.detachEvent('onunload', listener);\n }\n },\n randomInt(max) {\n const random = function () {\n const crypto = window.crypto || window['msCrypto'];\n const random = crypto.getRandomValues(new Uint32Array(1))[0];\n return random / Math.pow(2, 32);\n };\n return Math.floor(random() * max);\n }\n};\n/* harmony default export */ var runtime = (Runtime);\n\n// CONCATENATED MODULE: ./src/core/timeline/level.ts\nvar TimelineLevel;\n(function (TimelineLevel) {\n TimelineLevel[TimelineLevel[\"ERROR\"] = 3] = \"ERROR\";\n TimelineLevel[TimelineLevel[\"INFO\"] = 6] = \"INFO\";\n TimelineLevel[TimelineLevel[\"DEBUG\"] = 7] = \"DEBUG\";\n})(TimelineLevel || (TimelineLevel = {}));\n/* harmony default export */ var timeline_level = (TimelineLevel);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline.ts\n\n\n\nclass timeline_Timeline {\n constructor(key, session, options) {\n this.key = key;\n this.session = session;\n this.events = [];\n this.options = options || {};\n this.sent = 0;\n this.uniqueID = 0;\n }\n log(level, event) {\n if (level <= this.options.level) {\n this.events.push(extend({}, event, { timestamp: util.now() }));\n if (this.options.limit && this.events.length > this.options.limit) {\n this.events.shift();\n }\n }\n }\n error(event) {\n this.log(timeline_level.ERROR, event);\n }\n info(event) {\n this.log(timeline_level.INFO, event);\n }\n debug(event) {\n this.log(timeline_level.DEBUG, event);\n }\n isEmpty() {\n return this.events.length === 0;\n }\n send(sendfn, callback) {\n var data = extend({\n session: this.session,\n bundle: this.sent + 1,\n key: this.key,\n lib: 'js',\n version: this.options.version,\n cluster: this.options.cluster,\n features: this.options.features,\n timeline: this.events\n }, this.options.params);\n this.events = [];\n sendfn(data, (error, result) => {\n if (!error) {\n this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n return true;\n }\n generateUniqueID() {\n this.uniqueID++;\n return this.uniqueID;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nclass transport_strategy_TransportStrategy {\n constructor(name, priority, transport, options) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n isSupported() {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n }\n connect(minPriority, callback) {\n if (!this.isSupported()) {\n return failAttempt(new UnsupportedStrategy(), callback);\n }\n else if (this.priority < minPriority) {\n return failAttempt(new TransportPriorityTooLow(), callback);\n }\n var connected = false;\n var transport = this.transport.createConnection(this.name, this.priority, this.options.key, this.options);\n var handshake = null;\n var onInitialized = function () {\n transport.unbind('initialized', onInitialized);\n transport.connect();\n };\n var onOpen = function () {\n handshake = factory.createHandshake(transport, function (result) {\n connected = true;\n unbindListeners();\n callback(null, result);\n });\n };\n var onError = function (error) {\n unbindListeners();\n callback(error);\n };\n var onClosed = function () {\n unbindListeners();\n var serializedTransport;\n serializedTransport = safeJSONStringify(transport);\n callback(new TransportClosed(serializedTransport));\n };\n var unbindListeners = function () {\n transport.unbind('initialized', onInitialized);\n transport.unbind('open', onOpen);\n transport.unbind('error', onError);\n transport.unbind('closed', onClosed);\n };\n transport.bind('initialized', onInitialized);\n transport.bind('open', onOpen);\n transport.bind('error', onError);\n transport.bind('closed', onClosed);\n transport.initialize();\n return {\n abort: () => {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n },\n forceMinPriority: p => {\n if (connected) {\n return;\n }\n if (this.priority < p) {\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n }\n }\n };\n }\n}\nfunction failAttempt(error, callback) {\n util.defer(function () {\n callback(error);\n });\n return {\n abort: function () { },\n forceMinPriority: function () { }\n };\n}\n\n// CONCATENATED MODULE: ./src/core/strategies/strategy_builder.ts\n\n\n\n\n\nconst { Transports: strategy_builder_Transports } = runtime;\nvar strategy_builder_defineTransport = function (config, name, type, priority, options, manager) {\n var transportClass = strategy_builder_Transports[type];\n if (!transportClass) {\n throw new UnsupportedTransport(type);\n }\n var enabled = (!config.enabledTransports ||\n arrayIndexOf(config.enabledTransports, name) !== -1) &&\n (!config.disabledTransports ||\n arrayIndexOf(config.disabledTransports, name) === -1);\n var transport;\n if (enabled) {\n options = Object.assign({ ignoreNullOrigin: config.ignoreNullOrigin }, options);\n transport = new transport_strategy_TransportStrategy(name, priority, manager ? manager.getAssistant(transportClass) : transportClass, options);\n }\n else {\n transport = strategy_builder_UnsupportedStrategy;\n }\n return transport;\n};\nvar strategy_builder_UnsupportedStrategy = {\n isSupported: function () {\n return false;\n },\n connect: function (_, callback) {\n var deferred = util.defer(function () {\n callback(new UnsupportedStrategy());\n });\n return {\n abort: function () {\n deferred.ensureAborted();\n },\n forceMinPriority: function () { }\n };\n }\n};\n\n// CONCATENATED MODULE: ./src/core/options.ts\n\nfunction validateOptions(options) {\n if (options == null) {\n throw 'You must pass an options object';\n }\n if (options.cluster == null) {\n throw 'Options object must provide a cluster';\n }\n if ('disableStats' in options) {\n logger.warn('The disableStats option is deprecated in favor of enableStats');\n }\n}\n\n// CONCATENATED MODULE: ./src/core/auth/user_authenticator.ts\n\n\nconst composeChannelQuery = (params, authOptions) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nconst UserAuthenticator = (authOptions) => {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n return (params, callback) => {\n const query = composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.UserAuthentication, callback);\n };\n};\n/* harmony default export */ var user_authenticator = (UserAuthenticator);\n\n// CONCATENATED MODULE: ./src/core/auth/channel_authorizer.ts\n\n\nconst channel_authorizer_composeChannelQuery = (params, authOptions) => {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n for (var key in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(authOptions.params[key]);\n }\n if (authOptions.paramsProvider != null) {\n let dynamicParams = authOptions.paramsProvider();\n for (var key in dynamicParams) {\n query +=\n '&' +\n encodeURIComponent(key) +\n '=' +\n encodeURIComponent(dynamicParams[key]);\n }\n }\n return query;\n};\nconst ChannelAuthorizer = (authOptions) => {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw `'${authOptions.transport}' is not a recognized auth transport`;\n }\n return (params, callback) => {\n const query = channel_authorizer_composeChannelQuery(params, authOptions);\n runtime.getAuthorizers()[authOptions.transport](runtime, query, authOptions, AuthRequestType.ChannelAuthorization, callback);\n };\n};\n/* harmony default export */ var channel_authorizer = (ChannelAuthorizer);\n\n// CONCATENATED MODULE: ./src/core/auth/deprecated_channel_authorizer.ts\nconst ChannelAuthorizerProxy = (pusher, authOptions, channelAuthorizerGenerator) => {\n const deprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return (params, callback) => {\n const channel = pusher.channel(params.channelName);\n const channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n let config = {\n activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n cluster: opts.cluster,\n httpPath: opts.httpPath || defaults.httpPath,\n httpPort: opts.httpPort || defaults.httpPort,\n httpsPort: opts.httpsPort || defaults.httpsPort,\n pongTimeout: opts.pongTimeout || defaults.pongTimeout,\n statsHost: opts.statsHost || defaults.stats_host,\n unavailableTimeout: opts.unavailableTimeout || defaults.unavailableTimeout,\n wsPath: opts.wsPath || defaults.wsPath,\n wsPort: opts.wsPort || defaults.wsPort,\n wssPort: opts.wssPort || defaults.wssPort,\n enableStats: getEnableStatsConfig(opts),\n httpHost: getHttpHost(opts),\n useTLS: shouldUseTLS(opts),\n wsHost: getWebsocketHost(opts),\n userAuthenticator: buildUserAuthenticator(opts),\n channelAuthorizer: buildChannelAuthorizer(opts, pusher)\n };\n if ('disabledTransports' in opts)\n config.disabledTransports = opts.disabledTransports;\n if ('enabledTransports' in opts)\n config.enabledTransports = opts.enabledTransports;\n if ('ignoreNullOrigin' in opts)\n config.ignoreNullOrigin = opts.ignoreNullOrigin;\n if ('timelineParams' in opts)\n config.timelineParams = opts.timelineParams;\n if ('nacl' in opts) {\n config.nacl = opts.nacl;\n }\n return config;\n}\nfunction getHttpHost(opts) {\n if (opts.httpHost) {\n return opts.httpHost;\n }\n if (opts.cluster) {\n return `sockjs-${opts.cluster}.pusher.com`;\n }\n return defaults.httpHost;\n}\nfunction getWebsocketHost(opts) {\n if (opts.wsHost) {\n return opts.wsHost;\n }\n return getWebsocketHostFromCluster(opts.cluster);\n}\nfunction getWebsocketHostFromCluster(cluster) {\n return `ws-${cluster}.pusher.com`;\n}\nfunction shouldUseTLS(opts) {\n if (runtime.getProtocol() === 'https:') {\n return true;\n }\n else if (opts.forceTLS === false) {\n return false;\n }\n return true;\n}\nfunction getEnableStatsConfig(opts) {\n if ('enableStats' in opts) {\n return opts.enableStats;\n }\n if ('disableStats' in opts) {\n return !opts.disableStats;\n }\n return false;\n}\nfunction buildUserAuthenticator(opts) {\n const userAuthentication = Object.assign(Object.assign({}, defaults.userAuthentication), opts.userAuthentication);\n if ('customHandler' in userAuthentication &&\n userAuthentication['customHandler'] != null) {\n return userAuthentication['customHandler'];\n }\n return user_authenticator(userAuthentication);\n}\nfunction buildChannelAuth(opts, pusher) {\n let channelAuthorization;\n if ('channelAuthorization' in opts) {\n channelAuthorization = Object.assign(Object.assign({}, defaults.channelAuthorization), opts.channelAuthorization);\n }\n else {\n channelAuthorization = {\n transport: opts.authTransport || defaults.authTransport,\n endpoint: opts.authEndpoint || defaults.authEndpoint\n };\n if ('auth' in opts) {\n if ('params' in opts.auth)\n channelAuthorization.params = opts.auth.params;\n if ('headers' in opts.auth)\n channelAuthorization.headers = opts.auth.headers;\n }\n if ('authorizer' in opts)\n channelAuthorization.customHandler = ChannelAuthorizerProxy(pusher, channelAuthorization, opts.authorizer);\n }\n return channelAuthorization;\n}\nfunction buildChannelAuthorizer(opts, pusher) {\n const channelAuthorization = buildChannelAuth(opts, pusher);\n if ('customHandler' in channelAuthorization &&\n channelAuthorization['customHandler'] != null) {\n return channelAuthorization['customHandler'];\n }\n return channel_authorizer(channelAuthorization);\n}\n\n// CONCATENATED MODULE: ./src/core/watchlist.ts\n\n\nclass watchlist_WatchlistFacade extends dispatcher_Dispatcher {\n constructor(pusher) {\n super(function (eventName, data) {\n logger.debug(`No callbacks on watchlist events for ${eventName}`);\n });\n this.pusher = pusher;\n this.bindWatchlistInternalEvent();\n }\n handleEvent(pusherEvent) {\n pusherEvent.data.events.forEach(watchlistEvent => {\n this.emit(watchlistEvent.name, watchlistEvent);\n });\n }\n bindWatchlistInternalEvent() {\n this.pusher.connection.bind('message', pusherEvent => {\n var eventName = pusherEvent.event;\n if (eventName === 'pusher_internal:watchlist_events') {\n this.handleEvent(pusherEvent);\n }\n });\n }\n}\n\n// CONCATENATED MODULE: ./src/core/utils/flat_promise.ts\nfunction flatPromise() {\n let resolve, reject;\n const promise = new Promise((res, rej) => {\n resolve = res;\n reject = rej;\n });\n return { promise, resolve, reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\n\n\n\n\n\nclass user_UserFacade extends dispatcher_Dispatcher {\n constructor(pusher) {\n super(function (eventName, data) {\n logger.debug('No callbacks on user for ' + eventName);\n });\n this.signin_requested = false;\n this.user_data = null;\n this.serverToUserChannel = null;\n this.signinDonePromise = null;\n this._signinDoneResolve = null;\n this._onAuthorize = (err, authData) => {\n if (err) {\n logger.warn(`Error during signin: ${err}`);\n this._cleanup();\n return;\n }\n this.pusher.send_event('pusher:signin', {\n auth: authData.auth,\n user_data: authData.user_data\n });\n };\n this.pusher = pusher;\n this.pusher.connection.bind('state_change', ({ previous, current }) => {\n if (previous !== 'connected' && current === 'connected') {\n this._signin();\n }\n if (previous === 'connected' && current !== 'connected') {\n this._cleanup();\n this._newSigninPromiseIfNeeded();\n }\n });\n this.watchlist = new watchlist_WatchlistFacade(pusher);\n this.pusher.connection.bind('message', event => {\n var eventName = event.event;\n if (eventName === 'pusher:signin_success') {\n this._onSigninSuccess(event.data);\n }\n if (this.serverToUserChannel &&\n this.serverToUserChannel.name === event.channel) {\n this.serverToUserChannel.handleEvent(event);\n }\n });\n }\n signin() {\n if (this.signin_requested) {\n return;\n }\n this.signin_requested = true;\n this._signin();\n }\n _signin() {\n if (!this.signin_requested) {\n return;\n }\n this._newSigninPromiseIfNeeded();\n if (this.pusher.connection.state !== 'connected') {\n return;\n }\n this.pusher.config.userAuthenticator({\n socketId: this.pusher.connection.socket_id\n }, this._onAuthorize);\n }\n _onSigninSuccess(data) {\n try {\n this.user_data = JSON.parse(data.user_data);\n }\n catch (e) {\n logger.error(`Failed parsing user data after signin: ${data.user_data}`);\n this._cleanup();\n return;\n }\n if (typeof this.user_data.id !== 'string' || this.user_data.id === '') {\n logger.error(`user_data doesn't contain an id. user_data: ${this.user_data}`);\n this._cleanup();\n return;\n }\n this._signinDoneResolve();\n this._subscribeChannels();\n }\n _subscribeChannels() {\n const ensure_subscribed = channel => {\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.pusher.connection.state === 'connected') {\n channel.subscribe();\n }\n };\n this.serverToUserChannel = new channel_Channel(`#server-to-user-${this.user_data.id}`, this.pusher);\n this.serverToUserChannel.bind_global((eventName, data) => {\n if (eventName.indexOf('pusher_internal:') === 0 ||\n eventName.indexOf('pusher:') === 0) {\n return;\n }\n this.emit(eventName, data);\n });\n ensure_subscribed(this.serverToUserChannel);\n }\n _cleanup() {\n this.user_data = null;\n if (this.serverToUserChannel) {\n this.serverToUserChannel.unbind_all();\n this.serverToUserChannel.disconnect();\n this.serverToUserChannel = null;\n }\n if (this.signin_requested) {\n this._signinDoneResolve();\n }\n }\n _newSigninPromiseIfNeeded() {\n if (!this.signin_requested) {\n return;\n }\n if (this.signinDonePromise && !this.signinDonePromise.done) {\n return;\n }\n const { promise, resolve, reject: _ } = flat_promise();\n promise.done = false;\n const setDone = () => {\n promise.done = true;\n };\n promise.then(setDone).catch(setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n }\n}\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nclass pusher_Pusher {\n static ready() {\n pusher_Pusher.isReady = true;\n for (var i = 0, l = pusher_Pusher.instances.length; i < l; i++) {\n pusher_Pusher.instances[i].connect();\n }\n }\n static getClientFeatures() {\n return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n return t.isSupported({});\n }));\n }\n constructor(app_key, options) {\n checkAppKey(app_key);\n validateOptions(options);\n this.key = app_key;\n this.config = getConfig(options, this);\n this.channels = factory.createChannels();\n this.global_emitter = new dispatcher_Dispatcher();\n this.sessionID = runtime.randomInt(1000000000);\n this.timeline = new timeline_Timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: pusher_Pusher.getClientFeatures(),\n params: this.config.timelineParams || {},\n limit: 50,\n level: timeline_level.INFO,\n version: defaults.VERSION\n });\n if (this.config.enableStats) {\n this.timelineSender = factory.createTimelineSender(this.timeline, {\n host: this.config.statsHost,\n path: '/timeline/v2/' + runtime.TimelineTransport.name\n });\n }\n var getStrategy = (options) => {\n return runtime.getDefaultStrategy(this.config, options, strategy_builder_defineTransport);\n };\n this.connection = factory.createConnectionManager(this.key, {\n getStrategy: getStrategy,\n timeline: this.timeline,\n activityTimeout: this.config.activityTimeout,\n pongTimeout: this.config.pongTimeout,\n unavailableTimeout: this.config.unavailableTimeout,\n useTLS: Boolean(this.config.useTLS)\n });\n this.connection.bind('connected', () => {\n this.subscribeAll();\n if (this.timelineSender) {\n this.timelineSender.send(this.connection.isUsingTLS());\n }\n });\n this.connection.bind('message', event => {\n var eventName = event.event;\n var internal = eventName.indexOf('pusher_internal:') === 0;\n if (event.channel) {\n var channel = this.channel(event.channel);\n if (channel) {\n channel.handleEvent(event);\n }\n }\n if (!internal) {\n this.global_emitter.emit(event.event, event.data);\n }\n });\n this.connection.bind('connecting', () => {\n this.channels.disconnect();\n });\n this.connection.bind('disconnected', () => {\n this.channels.disconnect();\n });\n this.connection.bind('error', err => {\n logger.warn(err);\n });\n pusher_Pusher.instances.push(this);\n this.timeline.info({ instances: pusher_Pusher.instances.length });\n this.user = new user_UserFacade(this);\n if (pusher_Pusher.isReady) {\n this.connect();\n }\n }\n channel(name) {\n return this.channels.find(name);\n }\n allChannels() {\n return this.channels.all();\n }\n connect() {\n this.connection.connect();\n if (this.timelineSender) {\n if (!this.timelineSenderTimer) {\n var usingTLS = this.connection.isUsingTLS();\n var timelineSender = this.timelineSender;\n this.timelineSenderTimer = new timers_PeriodicTimer(60000, function () {\n timelineSender.send(usingTLS);\n });\n }\n }\n }\n disconnect() {\n this.connection.disconnect();\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n }\n bind(event_name, callback, context) {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n }\n unbind(event_name, callback, context) {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n }\n bind_global(callback) {\n this.global_emitter.bind_global(callback);\n return this;\n }\n unbind_global(callback) {\n this.global_emitter.unbind_global(callback);\n return this;\n }\n unbind_all(callback) {\n this.global_emitter.unbind_all();\n return this;\n }\n subscribeAll() {\n var channelName;\n for (channelName in this.channels.channels) {\n if (this.channels.channels.hasOwnProperty(channelName)) {\n this.subscribe(channelName);\n }\n }\n }\n subscribe(channel_name) {\n var channel = this.channels.add(channel_name, this);\n if (channel.subscriptionPending && channel.subscriptionCancelled) {\n channel.reinstateSubscription();\n }\n else if (!channel.subscriptionPending &&\n this.connection.state === 'connected') {\n channel.subscribe();\n }\n return channel;\n }\n unsubscribe(channel_name) {\n var channel = this.channels.find(channel_name);\n if (channel && channel.subscriptionPending) {\n channel.cancelSubscription();\n }\n else {\n channel = this.channels.remove(channel_name);\n if (channel && channel.subscribed) {\n channel.unsubscribe();\n }\n }\n }\n send_event(event_name, data, channel) {\n return this.connection.send_event(event_name, data, channel);\n }\n shouldUseTLS() {\n return this.config.useTLS;\n }\n signin() {\n this.user.signin();\n }\n}\npusher_Pusher.instances = [];\npusher_Pusher.isReady = false;\npusher_Pusher.logToConsole = false;\npusher_Pusher.Runtime = runtime;\npusher_Pusher.ScriptReceivers = runtime.ScriptReceivers;\npusher_Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\npusher_Pusher.auth_callbacks = runtime.auth_callbacks;\n/* harmony default export */ var core_pusher = __webpack_exports__[\"default\"] = (pusher_Pusher);\nfunction checkAppKey(key) {\n if (key === null || key === undefined) {\n throw 'You must pass your app key when you instantiate Pusher.';\n }\n}\nruntime.setup(pusher_Pusher);\n\n\n/***/ })\n/******/ ]);\n});\n//# sourceMappingURL=pusher.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\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 Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\n/**\r\n * This class represents a basic channel.\r\n */\nvar Channel = /*#__PURE__*/function () {\n function Channel() {\n _classCallCheck(this, Channel);\n }\n\n _createClass(Channel, [{\n key: \"listenForWhisper\",\n value:\n /**\r\n * Listen for a whisper event on the channel instance.\r\n */\n function listenForWhisper(event, callback) {\n return this.listen('.client-' + event, callback);\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"notification\",\n value: function notification(callback) {\n return this.listen('.Illuminate\\\\Notifications\\\\Events\\\\BroadcastNotificationCreated', callback);\n }\n /**\r\n * Stop listening for a whisper event on the channel instance.\r\n */\n\n }, {\n key: \"stopListeningForWhisper\",\n value: function stopListeningForWhisper(event, callback) {\n return this.stopListening('.client-' + event, callback);\n }\n }]);\n\n return Channel;\n}();\n\n/**\r\n * Event name formatter\r\n */\nvar EventFormatter = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function EventFormatter(namespace) {\n _classCallCheck(this, EventFormatter);\n\n this.namespace = namespace; //\n }\n /**\r\n * Format the given event name.\r\n */\n\n\n _createClass(EventFormatter, [{\n key: \"format\",\n value: function format(event) {\n if (event.charAt(0) === '.' || event.charAt(0) === '\\\\') {\n return event.substr(1);\n } else if (this.namespace) {\n event = this.namespace + '.' + event;\n }\n\n return event.replace(/\\./g, '\\\\');\n }\n /**\r\n * Set the event namespace.\r\n */\n\n }, {\n key: \"setNamespace\",\n value: function setNamespace(value) {\n this.namespace = value;\n }\n }]);\n\n return EventFormatter;\n}();\n\n/**\r\n * This class represents a Pusher channel.\r\n */\n\nvar PusherChannel = /*#__PURE__*/function (_Channel) {\n _inherits(PusherChannel, _Channel);\n\n var _super = _createSuper(PusherChannel);\n\n /**\r\n * Create a new class instance.\r\n */\n function PusherChannel(pusher, name, options) {\n var _this;\n\n _classCallCheck(this, PusherChannel);\n\n _this = _super.call(this);\n _this.name = name;\n _this.pusher = pusher;\n _this.options = options;\n _this.eventFormatter = new EventFormatter(_this.options.namespace);\n\n _this.subscribe();\n\n return _this;\n }\n /**\r\n * Subscribe to a Pusher channel.\r\n */\n\n\n _createClass(PusherChannel, [{\n key: \"subscribe\",\n value: function subscribe() {\n this.subscription = this.pusher.subscribe(this.name);\n }\n /**\r\n * Unsubscribe from a Pusher channel.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n this.pusher.unsubscribe(this.name);\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n this.on(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Listen for all events on the channel instance.\r\n */\n\n }, {\n key: \"listenToAll\",\n value: function listenToAll(callback) {\n var _this2 = this;\n\n this.subscription.bind_global(function (event, data) {\n if (event.startsWith('pusher:')) {\n return;\n }\n\n var namespace = _this2.options.namespace.replace(/\\./g, '\\\\');\n\n var formattedEvent = event.startsWith(namespace) ? event.substring(namespace.length + 1) : '.' + event;\n callback(formattedEvent, data);\n });\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n if (callback) {\n this.subscription.unbind(this.eventFormatter.format(event), callback);\n } else {\n this.subscription.unbind(this.eventFormatter.format(event));\n }\n\n return this;\n }\n /**\r\n * Stop listening for all events on the channel instance.\r\n */\n\n }, {\n key: \"stopListeningToAll\",\n value: function stopListeningToAll(callback) {\n if (callback) {\n this.subscription.unbind_global(callback);\n } else {\n this.subscription.unbind_global();\n }\n\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n this.on('pusher:subscription_succeeded', function () {\n callback();\n });\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n this.on('pusher:subscription_error', function (status) {\n callback(status);\n });\n return this;\n }\n /**\r\n * Bind a channel to an event.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n this.subscription.bind(event, callback);\n return this;\n }\n }]);\n\n return PusherChannel;\n}(Channel);\n\n/**\r\n * This class represents a Pusher private channel.\r\n */\n\nvar PusherPrivateChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherPrivateChannel, _PusherChannel);\n\n var _super = _createSuper(PusherPrivateChannel);\n\n function PusherPrivateChannel() {\n _classCallCheck(this, PusherPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n }]);\n\n return PusherPrivateChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Pusher private channel.\r\n */\n\nvar PusherEncryptedPrivateChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherEncryptedPrivateChannel, _PusherChannel);\n\n var _super = _createSuper(PusherEncryptedPrivateChannel);\n\n function PusherEncryptedPrivateChannel() {\n _classCallCheck(this, PusherEncryptedPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherEncryptedPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n }]);\n\n return PusherEncryptedPrivateChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Pusher presence channel.\r\n */\n\nvar PusherPresenceChannel = /*#__PURE__*/function (_PusherChannel) {\n _inherits(PusherPresenceChannel, _PusherChannel);\n\n var _super = _createSuper(PusherPresenceChannel);\n\n function PusherPresenceChannel() {\n _classCallCheck(this, PusherPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(PusherPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n this.on('pusher:subscription_succeeded', function (data) {\n callback(Object.keys(data.members).map(function (k) {\n return data.members[k];\n }));\n });\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n this.on('pusher:member_added', function (member) {\n callback(member.info);\n });\n return this;\n }\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\n this.pusher.channels.channels[this.name].trigger(\"client-\".concat(eventName), data);\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n this.on('pusher:member_removed', function (member) {\n callback(member.info);\n });\n return this;\n }\n }]);\n\n return PusherPresenceChannel;\n}(PusherChannel);\n\n/**\r\n * This class represents a Socket.io channel.\r\n */\n\nvar SocketIoChannel = /*#__PURE__*/function (_Channel) {\n _inherits(SocketIoChannel, _Channel);\n\n var _super = _createSuper(SocketIoChannel);\n\n /**\r\n * Create a new class instance.\r\n */\n function SocketIoChannel(socket, name, options) {\n var _this;\n\n _classCallCheck(this, SocketIoChannel);\n\n _this = _super.call(this);\n /**\r\n * The event callbacks applied to the socket.\r\n */\n\n _this.events = {};\n /**\r\n * User supplied callbacks for events on this channel.\r\n */\n\n _this.listeners = {};\n _this.name = name;\n _this.socket = socket;\n _this.options = options;\n _this.eventFormatter = new EventFormatter(_this.options.namespace);\n\n _this.subscribe();\n\n return _this;\n }\n /**\r\n * Subscribe to a Socket.io channel.\r\n */\n\n\n _createClass(SocketIoChannel, [{\n key: \"subscribe\",\n value: function subscribe() {\n this.socket.emit('subscribe', {\n channel: this.name,\n auth: this.options.auth || {}\n });\n }\n /**\r\n * Unsubscribe from channel and ubind event callbacks.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {\n this.unbind();\n this.socket.emit('unsubscribe', {\n channel: this.name,\n auth: this.options.auth || {}\n });\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n this.on(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n this.unbindEvent(this.eventFormatter.format(event), callback);\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n this.on('connect', function (socket) {\n callback(socket);\n });\n return this;\n }\n /**\r\n * Register a callback to be called anytime an error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n return this;\n }\n /**\r\n * Bind the channel's socket to an event and store the callback.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n var _this2 = this;\n\n this.listeners[event] = this.listeners[event] || [];\n\n if (!this.events[event]) {\n this.events[event] = function (channel, data) {\n if (_this2.name === channel && _this2.listeners[event]) {\n _this2.listeners[event].forEach(function (cb) {\n return cb(data);\n });\n }\n };\n\n this.socket.on(event, this.events[event]);\n }\n\n this.listeners[event].push(callback);\n return this;\n }\n /**\r\n * Unbind the channel's socket from all stored event callbacks.\r\n */\n\n }, {\n key: \"unbind\",\n value: function unbind() {\n var _this3 = this;\n\n Object.keys(this.events).forEach(function (event) {\n _this3.unbindEvent(event);\n });\n }\n /**\r\n * Unbind the listeners for the given event.\r\n */\n\n }, {\n key: \"unbindEvent\",\n value: function unbindEvent(event, callback) {\n this.listeners[event] = this.listeners[event] || [];\n\n if (callback) {\n this.listeners[event] = this.listeners[event].filter(function (cb) {\n return cb !== callback;\n });\n }\n\n if (!callback || this.listeners[event].length === 0) {\n if (this.events[event]) {\n this.socket.removeListener(event, this.events[event]);\n delete this.events[event];\n }\n\n delete this.listeners[event];\n }\n }\n }]);\n\n return SocketIoChannel;\n}(Channel);\n\n/**\r\n * This class represents a Socket.io private channel.\r\n */\n\nvar SocketIoPrivateChannel = /*#__PURE__*/function (_SocketIoChannel) {\n _inherits(SocketIoPrivateChannel, _SocketIoChannel);\n\n var _super = _createSuper(SocketIoPrivateChannel);\n\n function SocketIoPrivateChannel() {\n _classCallCheck(this, SocketIoPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SocketIoPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n function whisper(eventName, data) {\n this.socket.emit('client event', {\n channel: this.name,\n event: \"client-\".concat(eventName),\n data: data\n });\n return this;\n }\n }]);\n\n return SocketIoPrivateChannel;\n}(SocketIoChannel);\n\n/**\r\n * This class represents a Socket.io presence channel.\r\n */\n\nvar SocketIoPresenceChannel = /*#__PURE__*/function (_SocketIoPrivateChann) {\n _inherits(SocketIoPresenceChannel, _SocketIoPrivateChann);\n\n var _super = _createSuper(SocketIoPresenceChannel);\n\n function SocketIoPresenceChannel() {\n _classCallCheck(this, SocketIoPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(SocketIoPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n this.on('presence:subscribed', function (members) {\n callback(members.map(function (m) {\n return m.user_info;\n }));\n });\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n this.on('presence:joining', function (member) {\n return callback(member.user_info);\n });\n return this;\n }\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\n this.socket.emit('client event', {\n channel: this.name,\n event: \"client-\".concat(eventName),\n data: data\n });\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n this.on('presence:leaving', function (member) {\n return callback(member.user_info);\n });\n return this;\n }\n }]);\n\n return SocketIoPresenceChannel;\n}(SocketIoPrivateChannel);\n\n/**\r\n * This class represents a null channel.\r\n */\n\nvar NullChannel = /*#__PURE__*/function (_Channel) {\n _inherits(NullChannel, _Channel);\n\n var _super = _createSuper(NullChannel);\n\n function NullChannel() {\n _classCallCheck(this, NullChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullChannel, [{\n key: \"subscribe\",\n value:\n /**\r\n * Subscribe to a channel.\r\n */\n function subscribe() {//\n }\n /**\r\n * Unsubscribe from a channel.\r\n */\n\n }, {\n key: \"unsubscribe\",\n value: function unsubscribe() {//\n }\n /**\r\n * Listen for an event on the channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(event, callback) {\n return this;\n }\n /**\r\n * Listen for all events on the channel instance.\r\n */\n\n }, {\n key: \"listenToAll\",\n value: function listenToAll(callback) {\n return this;\n }\n /**\r\n * Stop listening for an event on the channel instance.\r\n */\n\n }, {\n key: \"stopListening\",\n value: function stopListening(event, callback) {\n return this;\n }\n /**\r\n * Register a callback to be called anytime a subscription succeeds.\r\n */\n\n }, {\n key: \"subscribed\",\n value: function subscribed(callback) {\n return this;\n }\n /**\r\n * Register a callback to be called anytime an error occurs.\r\n */\n\n }, {\n key: \"error\",\n value: function error(callback) {\n return this;\n }\n /**\r\n * Bind a channel to an event.\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, callback) {\n return this;\n }\n }]);\n\n return NullChannel;\n}(Channel);\n\n/**\r\n * This class represents a null private channel.\r\n */\n\nvar NullPrivateChannel = /*#__PURE__*/function (_NullChannel) {\n _inherits(NullPrivateChannel, _NullChannel);\n\n var _super = _createSuper(NullPrivateChannel);\n\n function NullPrivateChannel() {\n _classCallCheck(this, NullPrivateChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullPrivateChannel, [{\n key: \"whisper\",\n value:\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n function whisper(eventName, data) {\n return this;\n }\n }]);\n\n return NullPrivateChannel;\n}(NullChannel);\n\n/**\r\n * This class represents a null presence channel.\r\n */\n\nvar NullPresenceChannel = /*#__PURE__*/function (_NullChannel) {\n _inherits(NullPresenceChannel, _NullChannel);\n\n var _super = _createSuper(NullPresenceChannel);\n\n function NullPresenceChannel() {\n _classCallCheck(this, NullPresenceChannel);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(NullPresenceChannel, [{\n key: \"here\",\n value:\n /**\r\n * Register a callback to be called anytime the member list changes.\r\n */\n function here(callback) {\n return this;\n }\n /**\r\n * Listen for someone joining the channel.\r\n */\n\n }, {\n key: \"joining\",\n value: function joining(callback) {\n return this;\n }\n /**\r\n * Send a whisper event to other clients in the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\n return this;\n }\n /**\r\n * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n return this;\n }\n }]);\n\n return NullPresenceChannel;\n}(NullChannel);\n\nvar Connector = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function Connector(options) {\n _classCallCheck(this, Connector);\n\n /**\r\n * Default connector options.\r\n */\n this._defaultOptions = {\n auth: {\n headers: {}\n },\n authEndpoint: '/broadcasting/auth',\n userAuthentication: {\n endpoint: '/broadcasting/user-auth',\n headers: {}\n },\n broadcaster: 'pusher',\n csrfToken: null,\n bearerToken: null,\n host: null,\n key: null,\n namespace: 'App.Events'\n };\n this.setOptions(options);\n this.connect();\n }\n /**\r\n * Merge the custom options with the defaults.\r\n */\n\n\n _createClass(Connector, [{\n key: \"setOptions\",\n value: function setOptions(options) {\n this.options = _extends(this._defaultOptions, options);\n var token = this.csrfToken();\n\n if (token) {\n this.options.auth.headers['X-CSRF-TOKEN'] = token;\n this.options.userAuthentication.headers['X-CSRF-TOKEN'] = token;\n }\n\n token = this.options.bearerToken;\n\n if (token) {\n this.options.auth.headers['Authorization'] = 'Bearer ' + token;\n this.options.userAuthentication.headers['Authorization'] = 'Bearer ' + token;\n }\n\n return options;\n }\n /**\r\n * Extract the CSRF token from the page.\r\n */\n\n }, {\n key: \"csrfToken\",\n value: function csrfToken() {\n var selector;\n\n if (typeof window !== 'undefined' && window['Laravel'] && window['Laravel'].csrfToken) {\n return window['Laravel'].csrfToken;\n } else if (this.options.csrfToken) {\n return this.options.csrfToken;\n } else if (typeof document !== 'undefined' && typeof document.querySelector === 'function' && (selector = document.querySelector('meta[name=\"csrf-token\"]'))) {\n return selector.getAttribute('content');\n }\n\n return null;\n }\n }]);\n\n return Connector;\n}();\n\n/**\r\n * This class creates a connector to Pusher.\r\n */\n\nvar PusherConnector = /*#__PURE__*/function (_Connector) {\n _inherits(PusherConnector, _Connector);\n\n var _super = _createSuper(PusherConnector);\n\n function PusherConnector() {\n var _this;\n\n _classCallCheck(this, PusherConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh Pusher connection.\r\n */\n\n\n _createClass(PusherConnector, [{\n key: \"connect\",\n value: function connect() {\n if (typeof this.options.client !== 'undefined') {\n this.pusher = this.options.client;\n } else if (this.options.Pusher) {\n this.pusher = new this.options.Pusher(this.options.key, this.options);\n } else {\n this.pusher = new Pusher(this.options.key, this.options);\n }\n }\n /**\r\n * Sign in the user via Pusher user authentication (https://pusher.com/docs/channels/using_channels/user-authentication/).\r\n */\n\n }, {\n key: \"signin\",\n value: function signin() {\n this.pusher.signin();\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return this.channel(name).listen(event, callback);\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n if (!this.channels[name]) {\n this.channels[name] = new PusherChannel(this.pusher, name, this.options);\n }\n\n return this.channels[name];\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n if (!this.channels['private-' + name]) {\n this.channels['private-' + name] = new PusherPrivateChannel(this.pusher, 'private-' + name, this.options);\n }\n\n return this.channels['private-' + name];\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivateChannel\",\n value: function encryptedPrivateChannel(name) {\n if (!this.channels['private-encrypted-' + name]) {\n this.channels['private-encrypted-' + name] = new PusherEncryptedPrivateChannel(this.pusher, 'private-encrypted-' + name, this.options);\n }\n\n return this.channels['private-encrypted-' + name];\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n if (!this.channels['presence-' + name]) {\n this.channels['presence-' + name] = new PusherPresenceChannel(this.pusher, 'presence-' + name, this.options);\n }\n\n return this.channels['presence-' + name];\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {\n var _this2 = this;\n\n var channels = [name, 'private-' + name, 'private-encrypted-' + name, 'presence-' + name];\n channels.forEach(function (name, index) {\n _this2.leaveChannel(name);\n });\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {\n if (this.channels[name]) {\n this.channels[name].unsubscribe();\n delete this.channels[name];\n }\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.pusher.connection.socket_id;\n }\n /**\r\n * Disconnect Pusher connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.pusher.disconnect();\n }\n }]);\n\n return PusherConnector;\n}(Connector);\n\n/**\r\n * This class creates a connnector to a Socket.io server.\r\n */\n\nvar SocketIoConnector = /*#__PURE__*/function (_Connector) {\n _inherits(SocketIoConnector, _Connector);\n\n var _super = _createSuper(SocketIoConnector);\n\n function SocketIoConnector() {\n var _this;\n\n _classCallCheck(this, SocketIoConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh Socket.io connection.\r\n */\n\n\n _createClass(SocketIoConnector, [{\n key: \"connect\",\n value: function connect() {\n var _this2 = this;\n\n var io = this.getSocketIO();\n this.socket = io(this.options.host, this.options);\n this.socket.on('reconnect', function () {\n Object.values(_this2.channels).forEach(function (channel) {\n channel.subscribe();\n });\n });\n return this.socket;\n }\n /**\r\n * Get socket.io module from global scope or options.\r\n */\n\n }, {\n key: \"getSocketIO\",\n value: function getSocketIO() {\n if (typeof this.options.client !== 'undefined') {\n return this.options.client;\n }\n\n if (typeof io !== 'undefined') {\n return io;\n }\n\n throw new Error('Socket.io client not found. Should be globally available or passed via options.client');\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return this.channel(name).listen(event, callback);\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n if (!this.channels[name]) {\n this.channels[name] = new SocketIoChannel(this.socket, name, this.options);\n }\n\n return this.channels[name];\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n if (!this.channels['private-' + name]) {\n this.channels['private-' + name] = new SocketIoPrivateChannel(this.socket, 'private-' + name, this.options);\n }\n\n return this.channels['private-' + name];\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n if (!this.channels['presence-' + name]) {\n this.channels['presence-' + name] = new SocketIoPresenceChannel(this.socket, 'presence-' + name, this.options);\n }\n\n return this.channels['presence-' + name];\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {\n var _this3 = this;\n\n var channels = [name, 'private-' + name, 'presence-' + name];\n channels.forEach(function (name) {\n _this3.leaveChannel(name);\n });\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {\n if (this.channels[name]) {\n this.channels[name].unsubscribe();\n delete this.channels[name];\n }\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.socket.id;\n }\n /**\r\n * Disconnect Socketio connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.socket.disconnect();\n }\n }]);\n\n return SocketIoConnector;\n}(Connector);\n\n/**\r\n * This class creates a null connector.\r\n */\n\nvar NullConnector = /*#__PURE__*/function (_Connector) {\n _inherits(NullConnector, _Connector);\n\n var _super = _createSuper(NullConnector);\n\n function NullConnector() {\n var _this;\n\n _classCallCheck(this, NullConnector);\n\n _this = _super.apply(this, arguments);\n /**\r\n * All of the subscribed channel names.\r\n */\n\n _this.channels = {};\n return _this;\n }\n /**\r\n * Create a fresh connection.\r\n */\n\n\n _createClass(NullConnector, [{\n key: \"connect\",\n value: function connect() {//\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(name, event, callback) {\n return new NullChannel();\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n }, {\n key: \"channel\",\n value: function channel(name) {\n return new NullChannel();\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"privateChannel\",\n value: function privateChannel(name) {\n return new NullPrivateChannel();\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivateChannel\",\n value: function encryptedPrivateChannel(name) {\n return new NullPrivateChannel();\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"presenceChannel\",\n value: function presenceChannel(name) {\n return new NullPresenceChannel();\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(name) {//\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(name) {//\n }\n /**\r\n * Get the socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return 'fake-socket-id';\n }\n /**\r\n * Disconnect the connection.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {//\n }\n }]);\n\n return NullConnector;\n}(Connector);\n\n/**\r\n * This class is the primary API for interacting with broadcasting.\r\n */\n\nvar Echo = /*#__PURE__*/function () {\n /**\r\n * Create a new class instance.\r\n */\n function Echo(options) {\n _classCallCheck(this, Echo);\n\n this.options = options;\n this.connect();\n\n if (!this.options.withoutInterceptors) {\n this.registerInterceptors();\n }\n }\n /**\r\n * Get a channel instance by name.\r\n */\n\n\n _createClass(Echo, [{\n key: \"channel\",\n value: function channel(_channel) {\n return this.connector.channel(_channel);\n }\n /**\r\n * Create a new connection.\r\n */\n\n }, {\n key: \"connect\",\n value: function connect() {\n if (this.options.broadcaster == 'pusher') {\n this.connector = new PusherConnector(this.options);\n } else if (this.options.broadcaster == 'socket.io') {\n this.connector = new SocketIoConnector(this.options);\n } else if (this.options.broadcaster == 'null') {\n this.connector = new NullConnector(this.options);\n } else if (typeof this.options.broadcaster == 'function') {\n this.connector = new this.options.broadcaster(this.options);\n }\n }\n /**\r\n * Disconnect from the Echo server.\r\n */\n\n }, {\n key: \"disconnect\",\n value: function disconnect() {\n this.connector.disconnect();\n }\n /**\r\n * Get a presence channel instance by name.\r\n */\n\n }, {\n key: \"join\",\n value: function join(channel) {\n return this.connector.presenceChannel(channel);\n }\n /**\r\n * Leave the given channel, as well as its private and presence variants.\r\n */\n\n }, {\n key: \"leave\",\n value: function leave(channel) {\n this.connector.leave(channel);\n }\n /**\r\n * Leave the given channel.\r\n */\n\n }, {\n key: \"leaveChannel\",\n value: function leaveChannel(channel) {\n this.connector.leaveChannel(channel);\n }\n /**\r\n * Leave all channels.\r\n */\n\n }, {\n key: \"leaveAllChannels\",\n value: function leaveAllChannels() {\n for (var channel in this.connector.channels) {\n this.leaveChannel(channel);\n }\n }\n /**\r\n * Listen for an event on a channel instance.\r\n */\n\n }, {\n key: \"listen\",\n value: function listen(channel, event, callback) {\n return this.connector.listen(channel, event, callback);\n }\n /**\r\n * Get a private channel instance by name.\r\n */\n\n }, {\n key: \"private\",\n value: function _private(channel) {\n return this.connector.privateChannel(channel);\n }\n /**\r\n * Get a private encrypted channel instance by name.\r\n */\n\n }, {\n key: \"encryptedPrivate\",\n value: function encryptedPrivate(channel) {\n return this.connector.encryptedPrivateChannel(channel);\n }\n /**\r\n * Get the Socket ID for the connection.\r\n */\n\n }, {\n key: \"socketId\",\n value: function socketId() {\n return this.connector.socketId();\n }\n /**\r\n * Register 3rd party request interceptiors. These are used to automatically\r\n * send a connections socket id to a Laravel app with a X-Socket-Id header.\r\n */\n\n }, {\n key: \"registerInterceptors\",\n value: function registerInterceptors() {\n if (typeof Vue === 'function' && Vue.http) {\n this.registerVueRequestInterceptor();\n }\n\n if (typeof axios === 'function') {\n this.registerAxiosRequestInterceptor();\n }\n\n if (typeof jQuery === 'function') {\n this.registerjQueryAjaxSetup();\n }\n\n if ((typeof Turbo === \"undefined\" ? \"undefined\" : _typeof(Turbo)) === 'object') {\n this.registerTurboRequestInterceptor();\n }\n }\n /**\r\n * Register a Vue HTTP interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerVueRequestInterceptor\",\n value: function registerVueRequestInterceptor() {\n var _this = this;\n\n Vue.http.interceptors.push(function (request, next) {\n if (_this.socketId()) {\n request.headers.set('X-Socket-ID', _this.socketId());\n }\n\n next();\n });\n }\n /**\r\n * Register an Axios HTTP interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerAxiosRequestInterceptor\",\n value: function registerAxiosRequestInterceptor() {\n var _this2 = this;\n\n axios.interceptors.request.use(function (config) {\n if (_this2.socketId()) {\n config.headers['X-Socket-Id'] = _this2.socketId();\n }\n\n return config;\n });\n }\n /**\r\n * Register jQuery AjaxPrefilter to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerjQueryAjaxSetup\",\n value: function registerjQueryAjaxSetup() {\n var _this3 = this;\n\n if (typeof jQuery.ajax != 'undefined') {\n jQuery.ajaxPrefilter(function (options, originalOptions, xhr) {\n if (_this3.socketId()) {\n xhr.setRequestHeader('X-Socket-Id', _this3.socketId());\n }\n });\n }\n }\n /**\r\n * Register the Turbo Request interceptor to add the X-Socket-ID header.\r\n */\n\n }, {\n key: \"registerTurboRequestInterceptor\",\n value: function registerTurboRequestInterceptor() {\n var _this4 = this;\n\n document.addEventListener('turbo:before-fetch-request', function (event) {\n event.detail.fetchOptions.headers['X-Socket-Id'] = _this4.socketId();\n });\n }\n }]);\n\n return Echo;\n}();\n\nexport { Channel, Echo as default };\n","\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./global-notification.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./global-notification.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./global-notification.vue?vue&type=template&id=7fc4056e&\"\nimport script from \"./global-notification.vue?vue&type=script&lang=js&\"\nexport * from \"./global-notification.vue?vue&type=script&lang=js&\"\nimport style0 from \"./global-notification.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewQuoteSideBar.vue?vue&type=style&index=0&lang=css&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('GlobalEvents',{on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&$event.keyCode!==78){ return null; }if(!$event.altKey){ return null; }return _vm.keymap.apply(null, arguments)}}}),_c('b-sidebar',{staticClass:\"sidebarRight newQuoteSidebar\",attrs:{\"type\":\"is-light\",\"fullheight\":true,\"overlay\":true,\"right\":true},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c('div',{staticClass:\"topCloseSideBar is-flex pr-5 p-2\"},[_c('a',{staticClass:\"is-flex color-8\",on:{\"click\":function($event){_vm.open = false}}},[_c('IconChevronLeft',{staticClass:\"icon is-small mr-2\"}),_c('span',{staticClass:\"color-4 has-text-weight-medium\"},[_vm._v(\"New Quote\")])],1),_c('a',{staticClass:\"color-8 sideBarCloseButton\",on:{\"click\":function($event){_vm.open = false}}},[_c('IconClose',{staticClass:\"icon is-small\"})],1)]),_c('div',{staticClass:\"p-5 SideBarBox\"},[_c('p',[_vm._v(\"Congratulations! Select one of the options to start creating it.\")]),_c('div',{class:_vm.focusedGuideBoxClass('newQuoteSidebarDiv mt-5 p-3', 2)},[_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column\"},[_c('b-navbar-item',{staticClass:\"p-0\",attrs:{\"tag\":\"router-link\",\"to\":{\n path: _vm.constants.paths.BASIC_INFO.path,\n query: { type: 'quote' },\n },\"data-test-id\":_vm.constants.DATA_TEST_ID_VALUES.NEW_QUOTE_BUTTON_SCRATCH}},[_c('div',{staticClass:\"new_quote__link\",staticStyle:{\"width\":\"100%\"},on:{\"click\":function ($event) {\n _vm.nextStep();\n _vm.onLinkClick($event);\n }}},[_vm._v(\" SCRATCH \")])])],1),_c('div',{staticClass:\"column\"},[_c('b-navbar-item',{staticClass:\"p-0\",attrs:{\"tag\":\"router-link\",\"to\":{\n path: _vm.constants.paths.BASIC_INFO.path,\n query: { type: _vm.constants.ITINERARY_TYPES.MODULE.type },\n },\"data-test-id\":_vm.constants.DATA_TEST_ID_VALUES.NEW_QUOTE_BUTTON_MODULE}},[_c('div',{staticClass:\"new_module__link w-100\",on:{\"click\":_vm.onLinkClick}},[_vm._v(\" MODULE \")])])],1)]),_c('div',{staticClass:\"columns\"},[_c('div',{staticClass:\"column\"},[_c('b-navbar-item',{attrs:{\"tag\":\"router-link\",\"to\":{\n path: _vm.constants.paths.BASIC_INFO.path,\n query: { type: _vm.constants.ITINERARY_TYPES.TEMPLATE.type },\n },\"data-test-id\":_vm.constants.DATA_TEST_ID_VALUES\n .NEW_QUOTE_BUTTON_EXAMPLE_ITINERARY}},[_c('div',{staticClass:\"new_itinerary__link w-100\",on:{\"click\":_vm.onLinkClick}},[_vm._v(\" EX. ITINERARY \")])])],1),_c('div',{staticClass:\"column\"},[_c('b-navbar-item',{attrs:{\"tag\":\"router-link\",\"to\":{\n path: _vm.constants.paths.BASIC_INFO.path,\n query: { type: _vm.constants.ITINERARY_TYPES.EXPERIENCE.type },\n },\"data-test-id\":_vm.constants.DATA_TEST_ID_VALUES.NEW_QUOTE_BUTTON_EXPERIENCE}},[_c('div',{staticClass:\"new_experience__link w-100\",on:{\"click\":_vm.onLinkClick}},[_vm._v(\" EXPERIENCE \")])])],1)])])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewQuoteSideBar.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewQuoteSideBar.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./NewQuoteSideBar.vue?vue&type=template&id=3a117b7f&\"\nimport script from \"./NewQuoteSideBar.vue?vue&type=script&lang=js&\"\nexport * from \"./NewQuoteSideBar.vue?vue&type=script&lang=js&\"\nimport style0 from \"./NewQuoteSideBar.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}