{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/pusher-js/dist/web/pusher.js","webpack:///./node_modules/laravel-echo/dist/echo.js","webpack:///./resources/js/echo.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","factory","window","extendStatics","__extends","this","b","setPrototypeOf","__proto__","Array","__","constructor","Coder","_paddingCharacter","encodedLength","length","encode","data","out","_encodeByte","left","maxDecodedLength","decodedLength","_getPaddingLength","decode","Uint8Array","paddingLength","op","haveBad","v0","v1","v2","v3","_decodeChar","charCodeAt","Error","result","String","fromCharCode","stdCoder","URLSafeCoder","_super","apply","arguments","urlSafeCoder","encodeURLSafe","decodeURLSafe","INVALID_UTF8","arr","pos","chars","min","n1","n2","n3","push","join","default","__webpack_exports__","AuthRequestType","ScriptReceiverFactory","prefix","lastId","callback","number","id","called","callbackWrapper","remove","receiver","ScriptReceivers","defaults","VERSION","PROTOCOL","wsPort","wssPort","wsPath","httpHost","httpPort","httpsPort","httpPath","stats_host","authEndpoint","authTransport","activityTimeout","pongTimeout","unavailableTimeout","cluster","userAuthentication","endpoint","transport","channelAuthorization","cdn_http","cdn_https","dependency_suffix","dependency_loader","DependencyLoader","options","receivers","loading","load","self","request","runtime","createScriptRequest","getPath","error","callbacks","successCallback","wasSuccessful","cleanup","send","getRoot","protocol","getDocument","location","useTLS","replace","version","suffix","DependenciesReceivers","Dependencies","urlStore","baseUrl","urls","authenticationEndpoint","path","authorizationEndpoint","javascriptQuickStart","triggeringClientEvents","encryptedChannelSupport","fullUrl","url_store","url","urlObj","urlPrefix","BadEventName","msg","_newTarget","_this","BadChannelName","RequestTimedOut","TransportPriorityTooLow","TransportClosed","UnsupportedFeature","UnsupportedTransport","UnsupportedStrategy","HTTPAuthError","status","xhr_auth","context","query","authOptions","authRequestType","xhr","createXHR","headerName","open","setRequestHeader","headers","onreadystatechange","readyState","parsed","JSON","parse","responseText","e","toString","UserAuthentication","ChannelAuthorization","b64chars","b64tab","base64_i","charAt","cb_utob","cc","utob","u","cb_encode","ccc","padlen","ord","btoa","abstract_timer","Timer","set","clear","delay","timer","isRunning","ensureAborted","timers_extends","timers_clearTimeout","clearTimeout","timers_clearInterval","clearInterval","OneOffTimer","setTimeout","PeriodicTimer","setInterval","util","now","Date","valueOf","defer","method","args","_i","boundArguments","slice","concat","extend","target","sources","extensions","stringify","safeJSONStringify","arrayIndexOf","array","item","nativeIndexOf","indexOf","objectApply","f","keys","_","map","filter","test","filterObject","Boolean","any","encodeParamsObject","encodeURIComponent","buildQueryString","params","undefined","source","objects","paths","derez","nu","$ref","logger","Logger","globalLog","message","console","log","debug","warn","globalLogWarn","globalLogError","defaultLoggingFunction","core_pusher","logToConsole","jsonp_auth","callbackName","nextAuthCallbackID","document","script","createElement","auth_callbacks","callback_name","src","head","getElementsByTagName","documentElement","insertBefore","firstChild","script_request","ScriptRequest","errorString","type","charset","addEventListener","onerror","onload","async","attachEvent","navigator","userAgent","errorScript","text","nextSibling","parentNode","removeChild","jsonp_request","JSONPRequest","jsonp_timeline","getAgent","sender","host","createJSONPRequest","getGenericURL","baseScheme","hostTLS","hostNonTLS","getGenericPath","queryString","ws","getInitial","http","sockjs","callback_registry","CallbackRegistry","_callbacks","add","prefixedEventName","fn","names","removeCallback","removeAllCallbacks","binding","dispatcher","Dispatcher","failThrough","global_callbacks","eventName","bind_global","unbind","unbind_global","unbind_all","emit","metadata","transport_connection_extends","transport_connection","TransportConnection","hooks","priority","initialize","transportConnectionInitializer","state","timeline","generateUniqueID","handlesActivityChecks","supportsPing","connect","socket","getSocket","onError","changeState","bindListeners","close","ping","onOpen","beforeOpen","onopen","buildTimelineMessage","onClose","closeEvent","code","reason","wasClean","unbindListeners","onMessage","onActivity","onclose","onmessage","onactivity","info","cid","transports_transport","Transport","isSupported","environment","createConnection","WSTransport","isInitialized","getWebSocketAPI","createWebSocket","httpConfiguration","streamingConfiguration","HTTPFactory","createStreamingSocket","pollingConfiguration","createPollingSocket","xhrConfiguration","isXHRSupported","transports","xhr_streaming","xhr_polling","SockJSTransport","file","SockJS","js_path","ignore_null_origin","ignoreNullOrigin","xdrConfiguration","isXDRSupported","XDRStreamingTransport","XDRPollingTransport","xdr_streaming","xdr_polling","transports_transports","net_info_extends","net_info_Network","NetInfo","isOnline","onLine","assistant_to_the_transport_manager","AssistantToTheTransportManager","manager","minPingDelay","maxPingDelay","pingDelay","connection","openTimestamp","onClosed","reportDeath","lifespan","Math","max","isAlive","Protocol","decodeMessage","messageEvent","messageData","pusherEventData","pusherEvent","event","channel","user_id","encodeMessage","processHandshake","activity_timeout","action","socket_id","getCloseAction","getCloseError","protocol_protocol","connection_extends","connection_connection","Connection","send_event","listeners","activity","closed","handleCloseEvent","listener","connection_handshake","Handshake","finish","timeline_sender","TimelineSender","isEmpty","TimelineTransport","channel_extends","channels_channel","Channel","pusher","subscribed","subscriptionPending","subscriptionCancelled","authorize","socketId","auth","trigger","disconnect","handleEvent","handleSubscriptionSucceededEvent","handleSubscriptionCountEvent","unsubscribe","subscription_count","subscriptionCount","subscribe","assign","channel_data","cancelSubscription","reinstateSubscription","private_channel_extends","private_channel","PrivateChannel","config","channelAuthorizer","channelName","members","Members","reset","each","member","setMyID","myID","onSubscription","subscriptionData","presence","hash","count","me","addMember","memberData","user_info","removeMember","presence_channel_extends","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","rejected","done","then","__generator","body","y","g","label","sent","trys","ops","verb","iterator","v","TypeError","pop","presence_channel","PresenceChannel","authData","channelData","_a","user","signinDonePromise","user_data","handleInternalEvent","addedMember","removedMember","utf8","base64","encrypted_channel_extends","encrypted_channel","EncryptedChannel","nacl","sharedSecret","handleEncryptedEvent","ciphertext","nonce","cipherText","secretbox","overheadLength","nonceLength","bytes","getDataToEmit","raw","connection_manager_extends","connection_manager","ConnectionManager","usingTLS","errorCallbacks","buildErrorCallbacks","connectionCallbacks","buildConnectionCallbacks","handshakeCallbacks","buildHandshakeCallbacks","Network","getNetwork","netinfo","retryIn","sendActivityCheck","updateStrategy","runner","strategy","updateState","startConnecting","setUnavailableTimer","disconnectInternally","isUsingTLS","handshake","handshakeError","abortConnecting","abort","clearRetryTimer","clearUnavailableTimer","abandonConnection","getStrategy","round","retryTimer","unavailableTimer","stopActivityCheck","activityTimer","pong_timed_out","resetActivityCheck","shouldRetry","connected","Infinity","setConnection","withErrorEmitted","tls_only","refused","backoff","retry","newState","previousState","newStateDescription","previous","current","channels","Channels","createEncryptedChannel","errMsg","createPrivateChannel","createPresenceChannel","createChannel","all","values","find","createChannels","createConnectionManager","createTimelineSender","createHandshake","createAssistantToTheTransportManager","transport_manager","TransportManager","livesLeft","lives","getAssistant","sequential_strategy","SequentialStrategy","strategies","loop","failFast","timeout","timeoutLimit","minPriority","tryNextStrategy","tryStrategy","forceMinPriority","best_connected_ever_strategy","BestConnectedEverStrategy","callbackBuilder","runners","rs","abortRunner","collections_all","allRunnersFailed","aborted","cached_strategy","CachedStrategy","ttl","storage","getLocalStorage","serializedCache","getTransportCacheKey","flushTransportCache","fetchTransportCache","timestamp","cached","latency","startTimestamp","cb","storeTransportCache","delayed_strategy","DelayedStrategy","if_strategy","IfStrategy","trueBranch","falseBranch","first_connected_strategy","FirstConnectedStrategy","testSupportsStrategy","State","default_strategy","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","http_xdomain_request","getRequest","xdr","XDomainRequest","ontimeout","onprogress","onChunk","abortRequest","http_request_extends","http_request","HTTPRequest","start","payload","position","unloader","addUnloadListener","removeUnloadListener","chunk","advanceBuffer","isBufferTooLong","buffer","unreadData","endOfLinePosition","autoIncrement","getUniqueURL","separator","randomNumber","floor","random","TimelineLevel","http_socket","HTTPSocket","session","randomString","parts","exec","base","getLocation","CONNECTING","openStream","sendRaw","sendHeartbeat","OPEN","createSocketRequest","reconnect","closeStream","CLOSED","onEvent","onHeartbeat","hostname","urlParts","stream","getReceiveURL","onFinished","http_streaming_socket","http_polling_socket","http_xhr_request","getXHRAPI","http_http","createSocket","createRequest","getDefaultStrategy","Transports","XMLHttpRequest","WebSocket","MozWebSocket","setup","PusherClass","Pusher","initializeOnDocumentBody","onDocumentBody","ready","getProtocol","getAuthorizers","ajax","jsonp","localStorage","createXMLHttpRequest","createMicrosoftXHR","ActiveXObject","createXDR","Constructor","withCredentials","documentProtocol","removeEventListener","detachEvent","timeline_level","timeline_timeline","Timeline","events","uniqueID","level","limit","shift","ERROR","INFO","DEBUG","sendfn","bundle","lib","features","transport_strategy","TransportStrategy","failAttempt","onInitialized","serializedTransport","strategy_builder_Transports","strategy_builder_defineTransport","transportClass","enabledTransports","disabledTransports","strategy_builder_UnsupportedStrategy","deferred","user_authenticator","composeChannelQuery","channel_authorizer","channel_authorizer_composeChannelQuery","__assign","getHttpHost","opts","getWebsocketHost","getWebsocketHostFromCluster","shouldUseTLS","forceTLS","getEnableStatsConfig","enableStats","disableStats","buildUserAuthenticator","buildChannelAuthorizer","customHandler","channelAuthorizerGenerator","deprecatedAuthorizerOptions","ChannelAuthorizerProxy","authorizer","buildChannelAuth","flat_promise","promise","res","rej","user_extends","UserFacade","signin_requested","serverToUserChannel","_signinDoneResolve","_onAuthorize","err","_cleanup","_signin","_newSigninPromiseIfNeeded","_onSigninSuccess","signin","userAuthenticator","_subscribeChannels","setDone","pusher_Pusher","app_key","checkAppKey","statsHost","timelineParams","global_emitter","sessionID","getClientFeatures","timelineSender","subscribeAll","internal","instances","isReady","allChannels","timelineSenderTimer","event_name","channel_name","Runtime","_typeof","obj","_classCallCheck","instance","_defineProperties","props","descriptor","configurable","writable","_createClass","protoProps","staticProps","_extends","_inherits","subClass","superClass","_setPrototypeOf","_getPrototypeOf","getPrototypeOf","_possibleConstructorReturn","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","_isNativeReflectConstruct","Super","NewTarget","listen","stopListening","EventFormatter","namespace","setNamespace","substr","PusherChannel","_Channel","eventFormatter","subscription","on","format","_this2","startsWith","formattedEvent","substring","PusherPrivateChannel","_PusherChannel","PusherEncryptedPrivateChannel","PusherPresenceChannel","k","SocketIoChannel","unbindEvent","forEach","_this3","removeListener","SocketIoPrivateChannel","_SocketIoChannel","SocketIoPresenceChannel","_SocketIoPrivateChann","NullChannel","NullPrivateChannel","_NullChannel","NullPresenceChannel","Connector","_defaultOptions","broadcaster","csrfToken","setOptions","token","selector","querySelector","getAttribute","PusherConnector","_Connector","client","index","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","require","websocketConfig"],"mappings":"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","file":"/js/echo.js","sourcesContent":[" \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 = 3);\n","/*!\n * Pusher JavaScript Library v7.4.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\nvar ScriptReceiverFactory = (function () {\n function ScriptReceiverFactory(prefix, name) {\n this.lastId = 0;\n this.prefix = prefix;\n this.name = name;\n }\n ScriptReceiverFactory.prototype.create = function (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 ScriptReceiverFactory.prototype.remove = function (receiver) {\n delete this[receiver.number];\n };\n return ScriptReceiverFactory;\n}());\n\nvar ScriptReceivers = new ScriptReceiverFactory('_pusher_script_', 'Pusher.ScriptReceivers');\n\n// CONCATENATED MODULE: ./src/core/defaults.ts\nvar Defaults = {\n VERSION: \"7.4.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 cluster: 'mt1',\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\nvar dependency_loader_DependencyLoader = (function () {\n function DependencyLoader(options) {\n this.options = options;\n this.receivers = options.receivers || ScriptReceivers;\n this.loading = {};\n }\n DependencyLoader.prototype.load = function (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 DependencyLoader.prototype.getRoot = function (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 DependencyLoader.prototype.getPath = function (name, options) {\n return this.getRoot(options) + '/' + name + this.options.suffix + '.js';\n };\n return DependencyLoader;\n}());\n/* harmony default export */ var dependency_loader = (dependency_loader_DependencyLoader);\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({\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\nvar 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};\nvar buildLogSuffix = function (key) {\n var urlPrefix = 'See:';\n var urlObj = urlStore.urls[key];\n if (!urlObj)\n return '';\n var 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: 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\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar BadEventName = (function (_super) {\n __extends(BadEventName, _super);\n function BadEventName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadEventName;\n}(Error));\n\nvar BadChannelName = (function (_super) {\n __extends(BadChannelName, _super);\n function BadChannelName(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return BadChannelName;\n}(Error));\n\nvar RequestTimedOut = (function (_super) {\n __extends(RequestTimedOut, _super);\n function RequestTimedOut(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return RequestTimedOut;\n}(Error));\n\nvar TransportPriorityTooLow = (function (_super) {\n __extends(TransportPriorityTooLow, _super);\n function TransportPriorityTooLow(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportPriorityTooLow;\n}(Error));\n\nvar TransportClosed = (function (_super) {\n __extends(TransportClosed, _super);\n function TransportClosed(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return TransportClosed;\n}(Error));\n\nvar UnsupportedFeature = (function (_super) {\n __extends(UnsupportedFeature, _super);\n function UnsupportedFeature(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedFeature;\n}(Error));\n\nvar UnsupportedTransport = (function (_super) {\n __extends(UnsupportedTransport, _super);\n function UnsupportedTransport(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedTransport;\n}(Error));\n\nvar UnsupportedStrategy = (function (_super) {\n __extends(UnsupportedStrategy, _super);\n function UnsupportedStrategy(msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return UnsupportedStrategy;\n}(Error));\n\nvar HTTPAuthError = (function (_super) {\n __extends(HTTPAuthError, _super);\n function HTTPAuthError(status, msg) {\n var _newTarget = this.constructor;\n var _this = _super.call(this, msg) || this;\n _this.status = status;\n Object.setPrototypeOf(_this, _newTarget.prototype);\n return _this;\n }\n return HTTPAuthError;\n}(Error));\n\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/auth/xhr_auth.ts\n\n\n\n\nvar ajax = function (context, query, authOptions, authRequestType, callback) {\n var 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 xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n var data = void 0;\n var 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 var 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 authenticated 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\nvar Timer = (function () {\n function Timer(set, clear, delay, callback) {\n var _this = this;\n this.clear = clear;\n this.timer = set(function () {\n if (_this.timer) {\n _this.timer = callback(_this.timer);\n }\n }, delay);\n }\n Timer.prototype.isRunning = function () {\n return this.timer !== null;\n };\n Timer.prototype.ensureAborted = function () {\n if (this.timer) {\n this.clear(this.timer);\n this.timer = null;\n }\n };\n return Timer;\n}());\n/* harmony default export */ var abstract_timer = (Timer);\n\n// CONCATENATED MODULE: ./src/core/utils/timers/index.ts\nvar timers_extends = (undefined && undefined.__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})();\n\nfunction timers_clearTimeout(timer) {\n window.clearTimeout(timer);\n}\nfunction timers_clearInterval(timer) {\n window.clearInterval(timer);\n}\nvar OneOffTimer = (function (_super) {\n timers_extends(OneOffTimer, _super);\n function OneOffTimer(delay, callback) {\n return _super.call(this, setTimeout, timers_clearTimeout, delay, function (timer) {\n callback();\n return null;\n }) || this;\n }\n return OneOffTimer;\n}(abstract_timer));\n\nvar PeriodicTimer = (function (_super) {\n timers_extends(PeriodicTimer, _super);\n function PeriodicTimer(delay, callback) {\n return _super.call(this, setInterval, timers_clearInterval, delay, function (timer) {\n callback();\n return timer;\n }) || this;\n }\n return PeriodicTimer;\n}(abstract_timer));\n\n\n// CONCATENATED MODULE: ./src/core/util.ts\n\nvar Util = {\n now: function () {\n if (Date.now) {\n return Date.now();\n }\n else {\n return new Date().valueOf();\n }\n },\n defer: function (callback) {\n return new OneOffTimer(0, callback);\n },\n method: function (name) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\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) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\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\nvar logger_Logger = (function () {\n function Logger() {\n this.globalLog = function (message) {\n if (window.console && window.console.log) {\n window.console.log(message);\n }\n };\n }\n Logger.prototype.debug = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLog, args);\n };\n Logger.prototype.warn = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogWarn, args);\n };\n Logger.prototype.error = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n this.log(this.globalLogError, args);\n };\n Logger.prototype.globalLogWarn = function (message) {\n if (window.console && window.console.warn) {\n window.console.warn(message);\n }\n else {\n this.globalLog(message);\n }\n };\n Logger.prototype.globalLogError = function (message) {\n if (window.console && window.console.error) {\n window.console.error(message);\n }\n else {\n this.globalLogWarn(message);\n }\n };\n Logger.prototype.log = function (defaultLoggingFunction) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\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 var log = defaultLoggingFunction.bind(this);\n log(message);\n }\n };\n return Logger;\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 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\nvar ScriptRequest = (function () {\n function ScriptRequest(src) {\n this.src = src;\n }\n ScriptRequest.prototype.send = function (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 ScriptRequest.prototype.cleanup = function () {\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 return ScriptRequest;\n}());\n/* harmony default export */ var script_request = (ScriptRequest);\n\n// CONCATENATED MODULE: ./src/runtimes/web/dom/jsonp_request.ts\n\n\nvar jsonp_request_JSONPRequest = (function () {\n function JSONPRequest(url, data) {\n this.url = url;\n this.data = data;\n }\n JSONPRequest.prototype.send = function (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 JSONPRequest.prototype.cleanup = function () {\n if (this.request) {\n this.request.cleanup();\n }\n };\n return JSONPRequest;\n}());\n/* harmony default export */ var jsonp_request = (jsonp_request_JSONPRequest);\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: 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\nvar callback_registry_CallbackRegistry = (function () {\n function CallbackRegistry() {\n this._callbacks = {};\n }\n CallbackRegistry.prototype.get = function (name) {\n return this._callbacks[prefix(name)];\n };\n CallbackRegistry.prototype.add = function (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 CallbackRegistry.prototype.remove = function (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 CallbackRegistry.prototype.removeCallback = function (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 CallbackRegistry.prototype.removeAllCallbacks = function (names) {\n apply(names, function (name) {\n delete this._callbacks[name];\n }, this);\n };\n return CallbackRegistry;\n}());\n/* harmony default export */ var callback_registry = (callback_registry_CallbackRegistry);\nfunction prefix(name) {\n return '_' + name;\n}\n\n// CONCATENATED MODULE: ./src/core/events/dispatcher.ts\n\n\nvar dispatcher_Dispatcher = (function () {\n function Dispatcher(failThrough) {\n this.callbacks = new callback_registry();\n this.global_callbacks = [];\n this.failThrough = failThrough;\n }\n Dispatcher.prototype.bind = function (eventName, callback, context) {\n this.callbacks.add(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.bind_global = function (callback) {\n this.global_callbacks.push(callback);\n return this;\n };\n Dispatcher.prototype.unbind = function (eventName, callback, context) {\n this.callbacks.remove(eventName, callback, context);\n return this;\n };\n Dispatcher.prototype.unbind_global = function (callback) {\n if (!callback) {\n this.global_callbacks = [];\n return this;\n }\n this.global_callbacks = filter(this.global_callbacks || [], function (c) { return c !== callback; });\n return this;\n };\n Dispatcher.prototype.unbind_all = function () {\n this.unbind();\n this.unbind_global();\n return this;\n };\n Dispatcher.prototype.emit = function (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 return Dispatcher;\n}());\n/* harmony default export */ var dispatcher = (dispatcher_Dispatcher);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_connection.ts\nvar transport_connection_extends = (undefined && undefined.__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})();\n\n\n\n\n\nvar transport_connection_TransportConnection = (function (_super) {\n transport_connection_extends(TransportConnection, _super);\n function TransportConnection(hooks, name, priority, key, options) {\n var _this = _super.call(this) || this;\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 return _this;\n }\n TransportConnection.prototype.handlesActivityChecks = function () {\n return Boolean(this.hooks.handlesActivityChecks);\n };\n TransportConnection.prototype.supportsPing = function () {\n return Boolean(this.hooks.supportsPing);\n };\n TransportConnection.prototype.connect = function () {\n var _this = this;\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(function () {\n _this.onError(e);\n _this.changeState('closed');\n });\n return false;\n }\n this.bindListeners();\n logger.debug('Connecting', { transport: this.name, url: url });\n this.changeState('connecting');\n return true;\n };\n TransportConnection.prototype.close = function () {\n if (this.socket) {\n this.socket.close();\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.send = function (data) {\n var _this = this;\n if (this.state === 'open') {\n util.defer(function () {\n if (_this.socket) {\n _this.socket.send(data);\n }\n });\n return true;\n }\n else {\n return false;\n }\n };\n TransportConnection.prototype.ping = function () {\n if (this.state === 'open' && this.supportsPing()) {\n this.socket.ping();\n }\n };\n TransportConnection.prototype.onOpen = function () {\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 TransportConnection.prototype.onError = function (error) {\n this.emit('error', { type: 'WebSocketError', error: error });\n this.timeline.error(this.buildTimelineMessage({ error: error.toString() }));\n };\n TransportConnection.prototype.onClose = function (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 TransportConnection.prototype.onMessage = function (message) {\n this.emit('message', message);\n };\n TransportConnection.prototype.onActivity = function () {\n this.emit('activity');\n };\n TransportConnection.prototype.bindListeners = function () {\n var _this = this;\n this.socket.onopen = function () {\n _this.onOpen();\n };\n this.socket.onerror = function (error) {\n _this.onError(error);\n };\n this.socket.onclose = function (closeEvent) {\n _this.onClose(closeEvent);\n };\n this.socket.onmessage = function (message) {\n _this.onMessage(message);\n };\n if (this.supportsPing()) {\n this.socket.onactivity = function () {\n _this.onActivity();\n };\n }\n };\n TransportConnection.prototype.unbindListeners = function () {\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 TransportConnection.prototype.changeState = function (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 TransportConnection.prototype.buildTimelineMessage = function (message) {\n return extend({ cid: this.id }, message);\n };\n return TransportConnection;\n}(dispatcher));\n/* harmony default export */ var transport_connection = (transport_connection_TransportConnection);\n\n// CONCATENATED MODULE: ./src/core/transports/transport.ts\n\nvar transport_Transport = (function () {\n function Transport(hooks) {\n this.hooks = hooks;\n }\n Transport.prototype.isSupported = function (environment) {\n return this.hooks.isSupported(environment);\n };\n Transport.prototype.createConnection = function (name, priority, key, options) {\n return new transport_connection(this.hooks, name, priority, key, options);\n };\n return Transport;\n}());\n/* harmony default export */ var transports_transport = (transport_Transport);\n\n// CONCATENATED MODULE: ./src/runtimes/isomorphic/transports/transports.ts\n\n\n\n\nvar WSTransport = new transports_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 transports_transport((extend({}, streamingConfiguration, xhrConfiguration)));\nvar XHRPollingTransport = new transports_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 transports_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 transports_transport((extend({}, streamingConfiguration, xdrConfiguration)));\nvar XDRPollingTransport = new transports_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\nvar net_info_extends = (undefined && undefined.__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})();\n\nvar NetInfo = (function (_super) {\n net_info_extends(NetInfo, _super);\n function NetInfo() {\n var _this = _super.call(this) || this;\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 return _this;\n }\n NetInfo.prototype.isOnline = function () {\n if (window.navigator.onLine === undefined) {\n return true;\n }\n else {\n return window.navigator.onLine;\n }\n };\n return NetInfo;\n}(dispatcher));\n\nvar net_info_Network = new NetInfo();\n\n// CONCATENATED MODULE: ./src/core/transports/assistant_to_the_transport_manager.ts\n\n\nvar assistant_to_the_transport_manager_AssistantToTheTransportManager = (function () {\n function AssistantToTheTransportManager(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 AssistantToTheTransportManager.prototype.createConnection = function (name, priority, key, options) {\n var _this = this;\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 = function (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 AssistantToTheTransportManager.prototype.isSupported = function (environment) {\n return this.manager.isAlive() && this.transport.isSupported(environment);\n };\n return AssistantToTheTransportManager;\n}());\n/* harmony default export */ var assistant_to_the_transport_manager = (assistant_to_the_transport_manager_AssistantToTheTransportManager);\n\n// CONCATENATED MODULE: ./src/core/connection/protocol/protocol.ts\nvar 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\nvar connection_extends = (undefined && undefined.__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})();\n\n\n\n\nvar connection_Connection = (function (_super) {\n connection_extends(Connection, _super);\n function Connection(id, transport) {\n var _this = _super.call(this) || this;\n _this.id = id;\n _this.transport = transport;\n _this.activityTimeout = transport.activityTimeout;\n _this.bindListeners();\n return _this;\n }\n Connection.prototype.handlesActivityChecks = function () {\n return this.transport.handlesActivityChecks();\n };\n Connection.prototype.send = function (data) {\n return this.transport.send(data);\n };\n Connection.prototype.send_event = function (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 Connection.prototype.ping = function () {\n if (this.transport.supportsPing()) {\n this.transport.ping();\n }\n else {\n this.send_event('pusher:ping', {});\n }\n };\n Connection.prototype.close = function () {\n this.transport.close();\n };\n Connection.prototype.bindListeners = function () {\n var _this = this;\n var listeners = {\n message: function (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: function () {\n _this.emit('activity');\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function (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 = function () {\n objectApply(listeners, function (listener, event) {\n _this.transport.unbind(event, listener);\n });\n };\n objectApply(listeners, function (listener, event) {\n _this.transport.bind(event, listener);\n });\n };\n Connection.prototype.handleCloseEvent = function (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 return Connection;\n}(dispatcher));\n/* harmony default export */ var connection_connection = (connection_Connection);\n\n// CONCATENATED MODULE: ./src/core/connection/handshake/index.ts\n\n\n\nvar handshake_Handshake = (function () {\n function Handshake(transport, callback) {\n this.transport = transport;\n this.callback = callback;\n this.bindListeners();\n }\n Handshake.prototype.close = function () {\n this.unbindListeners();\n this.transport.close();\n };\n Handshake.prototype.bindListeners = function () {\n var _this = this;\n this.onMessage = function (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 = function (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 Handshake.prototype.unbindListeners = function () {\n this.transport.unbind('message', this.onMessage);\n this.transport.unbind('closed', this.onClosed);\n };\n Handshake.prototype.finish = function (action, params) {\n this.callback(extend({ transport: this.transport, action: action }, params));\n };\n return Handshake;\n}());\n/* harmony default export */ var connection_handshake = (handshake_Handshake);\n\n// CONCATENATED MODULE: ./src/core/timeline/timeline_sender.ts\n\nvar timeline_sender_TimelineSender = (function () {\n function TimelineSender(timeline, options) {\n this.timeline = timeline;\n this.options = options || {};\n }\n TimelineSender.prototype.send = function (useTLS, callback) {\n if (this.timeline.isEmpty()) {\n return;\n }\n this.timeline.send(runtime.TimelineTransport.getAgent(this, useTLS), callback);\n };\n return TimelineSender;\n}());\n/* harmony default export */ var timeline_sender = (timeline_sender_TimelineSender);\n\n// CONCATENATED MODULE: ./src/core/channels/channel.ts\nvar channel_extends = (undefined && undefined.__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})();\n\n\n\n\n\nvar channel_Channel = (function (_super) {\n channel_extends(Channel, _super);\n function Channel(name, pusher) {\n var _this = _super.call(this, function (event, data) {\n logger.debug('No callbacks on ' + name + ' for ' + event);\n }) || this;\n _this.name = name;\n _this.pusher = pusher;\n _this.subscribed = false;\n _this.subscriptionPending = false;\n _this.subscriptionCancelled = false;\n return _this;\n }\n Channel.prototype.authorize = function (socketId, callback) {\n return callback(null, { auth: '' });\n };\n Channel.prototype.trigger = function (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 Channel.prototype.disconnect = function () {\n this.subscribed = false;\n this.subscriptionPending = false;\n };\n Channel.prototype.handleEvent = function (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 Channel.prototype.handleSubscriptionSucceededEvent = function (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 Channel.prototype.handleSubscriptionCountEvent = function (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 Channel.prototype.subscribe = function () {\n var _this = this;\n if (this.subscribed) {\n return;\n }\n this.subscriptionPending = true;\n this.subscriptionCancelled = false;\n this.authorize(this.pusher.connection.socket_id, function (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 Channel.prototype.unsubscribe = function () {\n this.subscribed = false;\n this.pusher.send_event('pusher:unsubscribe', {\n channel: this.name\n });\n };\n Channel.prototype.cancelSubscription = function () {\n this.subscriptionCancelled = true;\n };\n Channel.prototype.reinstateSubscription = function () {\n this.subscriptionCancelled = false;\n };\n return Channel;\n}(dispatcher));\n/* harmony default export */ var channels_channel = (channel_Channel);\n\n// CONCATENATED MODULE: ./src/core/channels/private_channel.ts\nvar private_channel_extends = (undefined && undefined.__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})();\n\nvar PrivateChannel = (function (_super) {\n private_channel_extends(PrivateChannel, _super);\n function PrivateChannel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PrivateChannel.prototype.authorize = function (socketId, callback) {\n return this.pusher.config.channelAuthorizer({\n channelName: this.name,\n socketId: socketId\n }, callback);\n };\n return PrivateChannel;\n}(channels_channel));\n/* harmony default export */ var private_channel = (PrivateChannel);\n\n// CONCATENATED MODULE: ./src/core/channels/members.ts\n\nvar members_Members = (function () {\n function Members() {\n this.reset();\n }\n Members.prototype.get = function (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 Members.prototype.each = function (callback) {\n var _this = this;\n objectApply(this.members, function (member, id) {\n callback(_this.get(id));\n });\n };\n Members.prototype.setMyID = function (id) {\n this.myID = id;\n };\n Members.prototype.onSubscription = function (subscriptionData) {\n this.members = subscriptionData.presence.hash;\n this.count = subscriptionData.presence.count;\n this.me = this.get(this.myID);\n };\n Members.prototype.addMember = function (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 Members.prototype.removeMember = function (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 Members.prototype.reset = function () {\n this.members = {};\n this.count = 0;\n this.myID = null;\n this.me = null;\n };\n return Members;\n}());\n/* harmony default export */ var members = (members_Members);\n\n// CONCATENATED MODULE: ./src/core/channels/presence_channel.ts\nvar presence_channel_extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n\nvar presence_channel_PresenceChannel = (function (_super) {\n presence_channel_extends(PresenceChannel, _super);\n function PresenceChannel(name, pusher) {\n var _this = _super.call(this, name, pusher) || this;\n _this.members = new members();\n return _this;\n }\n PresenceChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) { return __awaiter(_this, void 0, void 0, function () {\n var channelData, suffix;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!error) return [3, 3];\n authData = authData;\n if (!(authData.channel_data != null)) return [3, 1];\n channelData = JSON.parse(authData.channel_data);\n this.members.setMyID(channelData.user_id);\n return [3, 3];\n case 1: return [4, this.pusher.user.signinDonePromise];\n case 2:\n _a.sent();\n if (this.pusher.user.user_data != null) {\n this.members.setMyID(this.pusher.user.user_data.id);\n }\n else {\n 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 [2];\n }\n _a.label = 3;\n case 3:\n callback(error, authData);\n return [2];\n }\n });\n }); });\n };\n PresenceChannel.prototype.handleEvent = function (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 PresenceChannel.prototype.handleInternalEvent = function (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 PresenceChannel.prototype.handleSubscriptionSucceededEvent = function (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 PresenceChannel.prototype.disconnect = function () {\n this.members.reset();\n _super.prototype.disconnect.call(this);\n };\n return PresenceChannel;\n}(private_channel));\n/* harmony default export */ var presence_channel = (presence_channel_PresenceChannel);\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\nvar encrypted_channel_extends = (undefined && undefined.__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})();\n\n\n\n\n\nvar encrypted_channel_EncryptedChannel = (function (_super) {\n encrypted_channel_extends(EncryptedChannel, _super);\n function EncryptedChannel(name, pusher, nacl) {\n var _this = _super.call(this, name, pusher) || this;\n _this.key = null;\n _this.nacl = nacl;\n return _this;\n }\n EncryptedChannel.prototype.authorize = function (socketId, callback) {\n var _this = this;\n _super.prototype.authorize.call(this, socketId, function (error, authData) {\n if (error) {\n callback(error, authData);\n return;\n }\n var 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 EncryptedChannel.prototype.trigger = function (event, data) {\n throw new UnsupportedFeature('Client events are not currently supported for encrypted channels');\n };\n EncryptedChannel.prototype.handleEvent = function (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.prototype.handleEvent.call(this, event);\n return;\n }\n this.handleEncryptedEvent(eventName, data);\n };\n EncryptedChannel.prototype.handleEncryptedEvent = function (event, data) {\n var _this = this;\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 var 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 var 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 var 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, function (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 EncryptedChannel.prototype.getDataToEmit = function (bytes) {\n var raw = Object(utf8[\"decode\"])(bytes);\n try {\n return JSON.parse(raw);\n }\n catch (_a) {\n return raw;\n }\n };\n return EncryptedChannel;\n}(private_channel));\n/* harmony default export */ var encrypted_channel = (encrypted_channel_EncryptedChannel);\n\n// CONCATENATED MODULE: ./src/core/connection/connection_manager.ts\nvar connection_manager_extends = (undefined && undefined.__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})();\n\n\n\n\n\nvar connection_manager_ConnectionManager = (function (_super) {\n connection_manager_extends(ConnectionManager, _super);\n function ConnectionManager(key, options) {\n var _this = _super.call(this) || this;\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', function () {\n _this.timeline.info({ netinfo: 'online' });\n if (_this.state === 'connecting' || _this.state === 'unavailable') {\n _this.retryIn(0);\n }\n });\n Network.bind('offline', function () {\n _this.timeline.info({ netinfo: 'offline' });\n if (_this.connection) {\n _this.sendActivityCheck();\n }\n });\n _this.updateStrategy();\n return _this;\n }\n ConnectionManager.prototype.connect = function () {\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 ConnectionManager.prototype.send = function (data) {\n if (this.connection) {\n return this.connection.send(data);\n }\n else {\n return false;\n }\n };\n ConnectionManager.prototype.send_event = function (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 ConnectionManager.prototype.disconnect = function () {\n this.disconnectInternally();\n this.updateState('disconnected');\n };\n ConnectionManager.prototype.isUsingTLS = function () {\n return this.usingTLS;\n };\n ConnectionManager.prototype.startConnecting = function () {\n var _this = this;\n var callback = function (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 ConnectionManager.prototype.abortConnecting = function () {\n if (this.runner) {\n this.runner.abort();\n this.runner = null;\n }\n };\n ConnectionManager.prototype.disconnectInternally = function () {\n this.abortConnecting();\n this.clearRetryTimer();\n this.clearUnavailableTimer();\n if (this.connection) {\n var connection = this.abandonConnection();\n connection.close();\n }\n };\n ConnectionManager.prototype.updateStrategy = function () {\n this.strategy = this.options.getStrategy({\n key: this.key,\n timeline: this.timeline,\n useTLS: this.usingTLS\n });\n };\n ConnectionManager.prototype.retryIn = function (delay) {\n var _this = this;\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 OneOffTimer(delay || 0, function () {\n _this.disconnectInternally();\n _this.connect();\n });\n };\n ConnectionManager.prototype.clearRetryTimer = function () {\n if (this.retryTimer) {\n this.retryTimer.ensureAborted();\n this.retryTimer = null;\n }\n };\n ConnectionManager.prototype.setUnavailableTimer = function () {\n var _this = this;\n this.unavailableTimer = new OneOffTimer(this.options.unavailableTimeout, function () {\n _this.updateState('unavailable');\n });\n };\n ConnectionManager.prototype.clearUnavailableTimer = function () {\n if (this.unavailableTimer) {\n this.unavailableTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.sendActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n this.connection.ping();\n this.activityTimer = new OneOffTimer(this.options.pongTimeout, function () {\n _this.timeline.error({ pong_timed_out: _this.options.pongTimeout });\n _this.retryIn(0);\n });\n };\n ConnectionManager.prototype.resetActivityCheck = function () {\n var _this = this;\n this.stopActivityCheck();\n if (this.connection && !this.connection.handlesActivityChecks()) {\n this.activityTimer = new OneOffTimer(this.activityTimeout, function () {\n _this.sendActivityCheck();\n });\n }\n };\n ConnectionManager.prototype.stopActivityCheck = function () {\n if (this.activityTimer) {\n this.activityTimer.ensureAborted();\n }\n };\n ConnectionManager.prototype.buildConnectionCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n message: function (message) {\n _this.resetActivityCheck();\n _this.emit('message', message);\n },\n ping: function () {\n _this.send_event('pusher:pong', {});\n },\n activity: function () {\n _this.resetActivityCheck();\n },\n error: function (error) {\n _this.emit('error', error);\n },\n closed: function () {\n _this.abandonConnection();\n if (_this.shouldRetry()) {\n _this.retryIn(1000);\n }\n }\n });\n };\n ConnectionManager.prototype.buildHandshakeCallbacks = function (errorCallbacks) {\n var _this = this;\n return extend({}, errorCallbacks, {\n connected: function (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 ConnectionManager.prototype.buildErrorCallbacks = function () {\n var _this = this;\n var withErrorEmitted = function (callback) {\n return function (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(function () {\n _this.usingTLS = true;\n _this.updateStrategy();\n _this.retryIn(0);\n }),\n refused: withErrorEmitted(function () {\n _this.disconnect();\n }),\n backoff: withErrorEmitted(function () {\n _this.retryIn(1000);\n }),\n retry: withErrorEmitted(function () {\n _this.retryIn(0);\n })\n };\n };\n ConnectionManager.prototype.setConnection = function (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 ConnectionManager.prototype.abandonConnection = function () {\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 ConnectionManager.prototype.updateState = function (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 ConnectionManager.prototype.shouldRetry = function () {\n return this.state === 'connecting' || this.state === 'connected';\n };\n return ConnectionManager;\n}(dispatcher));\n/* harmony default export */ var connection_manager = (connection_manager_ConnectionManager);\n\n// CONCATENATED MODULE: ./src/core/channels/channels.ts\n\n\n\n\nvar channels_Channels = (function () {\n function Channels() {\n this.channels = {};\n }\n Channels.prototype.add = function (name, pusher) {\n if (!this.channels[name]) {\n this.channels[name] = createChannel(name, pusher);\n }\n return this.channels[name];\n };\n Channels.prototype.all = function () {\n return values(this.channels);\n };\n Channels.prototype.find = function (name) {\n return this.channels[name];\n };\n Channels.prototype.remove = function (name) {\n var channel = this.channels[name];\n delete this.channels[name];\n return channel;\n };\n Channels.prototype.disconnect = function () {\n objectApply(this.channels, function (channel) {\n channel.disconnect();\n });\n };\n return Channels;\n}());\n/* harmony default export */ var channels = (channels_Channels);\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 var errMsg = 'Tried to subscribe to a private-encrypted- channel but no nacl implementation available';\n var 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: function () {\n return new channels();\n },\n createConnectionManager: function (key, options) {\n return new connection_manager(key, options);\n },\n createChannel: function (name, pusher) {\n return new channels_channel(name, pusher);\n },\n createPrivateChannel: function (name, pusher) {\n return new private_channel(name, pusher);\n },\n createPresenceChannel: function (name, pusher) {\n return new presence_channel(name, pusher);\n },\n createEncryptedChannel: function (name, pusher, nacl) {\n return new encrypted_channel(name, pusher, nacl);\n },\n createTimelineSender: function (timeline, options) {\n return new timeline_sender(timeline, options);\n },\n createHandshake: function (transport, callback) {\n return new connection_handshake(transport, callback);\n },\n createAssistantToTheTransportManager: function (manager, transport, options) {\n return new assistant_to_the_transport_manager(manager, transport, options);\n }\n};\n/* harmony default export */ var factory = (Factory);\n\n// CONCATENATED MODULE: ./src/core/transports/transport_manager.ts\n\nvar transport_manager_TransportManager = (function () {\n function TransportManager(options) {\n this.options = options || {};\n this.livesLeft = this.options.lives || Infinity;\n }\n TransportManager.prototype.getAssistant = function (transport) {\n return factory.createAssistantToTheTransportManager(this, transport, {\n minPingDelay: this.options.minPingDelay,\n maxPingDelay: this.options.maxPingDelay\n });\n };\n TransportManager.prototype.isAlive = function () {\n return this.livesLeft > 0;\n };\n TransportManager.prototype.reportDeath = function () {\n this.livesLeft -= 1;\n };\n return TransportManager;\n}());\n/* harmony default export */ var transport_manager = (transport_manager_TransportManager);\n\n// CONCATENATED MODULE: ./src/core/strategies/sequential_strategy.ts\n\n\n\nvar sequential_strategy_SequentialStrategy = (function () {\n function SequentialStrategy(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 SequentialStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n SequentialStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\n var strategies = this.strategies;\n var current = 0;\n var timeout = this.timeout;\n var runner = null;\n var tryNextStrategy = function (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: 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 SequentialStrategy.prototype.tryStrategy = function (strategy, minPriority, options, callback) {\n var timer = null;\n var runner = null;\n if (options.timeout > 0) {\n timer = new 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 return SequentialStrategy;\n}());\n/* harmony default export */ var sequential_strategy = (sequential_strategy_SequentialStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/best_connected_ever_strategy.ts\n\n\nvar best_connected_ever_strategy_BestConnectedEverStrategy = (function () {\n function BestConnectedEverStrategy(strategies) {\n this.strategies = strategies;\n }\n BestConnectedEverStrategy.prototype.isSupported = function () {\n return any(this.strategies, util.method('isSupported'));\n };\n BestConnectedEverStrategy.prototype.connect = function (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 return BestConnectedEverStrategy;\n}());\n/* harmony default export */ var best_connected_ever_strategy = (best_connected_ever_strategy_BestConnectedEverStrategy);\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/cached_strategy.ts\n\n\n\n\nvar cached_strategy_CachedStrategy = (function () {\n function CachedStrategy(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 CachedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n CachedStrategy.prototype.connect = function (minPriority, callback) {\n var usingTLS = this.usingTLS;\n var info = fetchTransportCache(usingTLS);\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 this.timeline.info({\n cached: true,\n transport: info.transport,\n latency: info.latency\n });\n strategies.push(new sequential_strategy([transport], {\n timeout: info.latency * 2 + 1000,\n failFast: true\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);\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 return CachedStrategy;\n}());\n/* harmony default export */ var cached_strategy = (cached_strategy_CachedStrategy);\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) {\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 });\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\nvar delayed_strategy_DelayedStrategy = (function () {\n function DelayedStrategy(strategy, _a) {\n var number = _a.delay;\n this.strategy = strategy;\n this.options = { delay: number };\n }\n DelayedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n DelayedStrategy.prototype.connect = function (minPriority, callback) {\n var strategy = this.strategy;\n var runner;\n var timer = new 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 return DelayedStrategy;\n}());\n/* harmony default export */ var delayed_strategy = (delayed_strategy_DelayedStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/if_strategy.ts\nvar IfStrategy = (function () {\n function IfStrategy(test, trueBranch, falseBranch) {\n this.test = test;\n this.trueBranch = trueBranch;\n this.falseBranch = falseBranch;\n }\n IfStrategy.prototype.isSupported = function () {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.isSupported();\n };\n IfStrategy.prototype.connect = function (minPriority, callback) {\n var branch = this.test() ? this.trueBranch : this.falseBranch;\n return branch.connect(minPriority, callback);\n };\n return IfStrategy;\n}());\n/* harmony default export */ var if_strategy = (IfStrategy);\n\n// CONCATENATED MODULE: ./src/core/strategies/first_connected_strategy.ts\nvar FirstConnectedStrategy = (function () {\n function FirstConnectedStrategy(strategy) {\n this.strategy = strategy;\n }\n FirstConnectedStrategy.prototype.isSupported = function () {\n return this.strategy.isSupported();\n };\n FirstConnectedStrategy.prototype.connect = function (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 return FirstConnectedStrategy;\n}());\n/* harmony default export */ var first_connected_strategy = (FirstConnectedStrategy);\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({\n lives: 2,\n minPingDelay: 10000,\n maxPingDelay: config.activityTimeout\n });\n var streaming_manager = new transport_manager({\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([ws_transport], timeouts);\n var wss_loop = new sequential_strategy([wss_transport], timeouts);\n var sockjs_loop = new sequential_strategy([sockjs_transport], timeouts);\n var streaming_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_streaming_transport), xhr_streaming_transport, xdr_streaming_transport)\n ], timeouts);\n var polling_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(xhr_polling_transport), xhr_polling_transport, xdr_polling_transport)\n ], timeouts);\n var http_loop = new sequential_strategy([\n new if_strategy(testSupportsStrategy(streaming_loop), new best_connected_ever_strategy([\n streaming_loop,\n new delayed_strategy(polling_loop, { delay: 4000 })\n ]), polling_loop)\n ], timeouts);\n var http_fallback_loop = new if_strategy(testSupportsStrategy(http_loop), http_loop, sockjs_loop);\n var wsStrategy;\n if (baseOptions.useTLS) {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(http_fallback_loop, { delay: 2000 })\n ]);\n }\n else {\n wsStrategy = new best_connected_ever_strategy([\n ws_loop,\n new delayed_strategy(wss_loop, { delay: 2000 }),\n new delayed_strategy(http_fallback_loop, { delay: 5000 })\n ]);\n }\n return new cached_strategy(new first_connected_strategy(new if_strategy(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\nvar http_request_extends = (undefined && undefined.__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})();\n\n\nvar MAX_BUFFER_LENGTH = 256 * 1024;\nvar http_request_HTTPRequest = (function (_super) {\n http_request_extends(HTTPRequest, _super);\n function HTTPRequest(hooks, method, url) {\n var _this = _super.call(this) || this;\n _this.hooks = hooks;\n _this.method = method;\n _this.url = url;\n return _this;\n }\n HTTPRequest.prototype.start = function (payload) {\n var _this = this;\n this.position = 0;\n this.xhr = this.hooks.getRequest(this);\n this.unloader = function () {\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 HTTPRequest.prototype.close = function () {\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 HTTPRequest.prototype.onChunk = function (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 HTTPRequest.prototype.advanceBuffer = function (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 HTTPRequest.prototype.isBufferTooLong = function (buffer) {\n return this.position === buffer.length && buffer.length > MAX_BUFFER_LENGTH;\n };\n return HTTPRequest;\n}(dispatcher));\n/* harmony default export */ var http_request = (http_request_HTTPRequest);\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;\nvar http_socket_HTTPSocket = (function () {\n function HTTPSocket(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 HTTPSocket.prototype.send = function (payload) {\n return this.sendRaw(JSON.stringify([payload]));\n };\n HTTPSocket.prototype.ping = function () {\n this.hooks.sendHeartbeat(this);\n };\n HTTPSocket.prototype.close = function (code, reason) {\n this.onClose(code, reason, true);\n };\n HTTPSocket.prototype.sendRaw = function (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 HTTPSocket.prototype.reconnect = function () {\n this.closeStream();\n this.openStream();\n };\n HTTPSocket.prototype.onClose = function (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 HTTPSocket.prototype.onChunk = function (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 HTTPSocket.prototype.onOpen = function (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 HTTPSocket.prototype.onEvent = function (event) {\n if (this.readyState === state.OPEN && this.onmessage) {\n this.onmessage({ data: event });\n }\n };\n HTTPSocket.prototype.onActivity = function () {\n if (this.onactivity) {\n this.onactivity();\n }\n };\n HTTPSocket.prototype.onError = function (error) {\n if (this.onerror) {\n this.onerror(error);\n }\n };\n HTTPSocket.prototype.openStream = function () {\n var _this = this;\n this.stream = runtime.createSocketRequest('POST', getUniqueURL(this.hooks.getReceiveURL(this.location, this.session)));\n this.stream.bind('chunk', function (chunk) {\n _this.onChunk(chunk);\n });\n this.stream.bind('finished', function (status) {\n _this.hooks.onFinished(_this, status);\n });\n this.stream.bind('buffer_too_long', function () {\n _this.reconnect();\n });\n try {\n this.stream.start();\n }\n catch (error) {\n util.defer(function () {\n _this.onError(error);\n _this.onClose(1006, 'Could not start streaming', false);\n });\n }\n };\n HTTPSocket.prototype.closeStream = function () {\n if (this.stream) {\n this.stream.unbind_all();\n this.stream.close();\n this.stream = null;\n }\n };\n return HTTPSocket;\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 Math.floor(Math.random() * 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: function (url) {\n return this.createSocket(http_streaming_socket, url);\n },\n createPollingSocket: function (url) {\n return this.createSocket(http_polling_socket, url);\n },\n createSocket: function (hooks, url) {\n return new http_socket(hooks, url);\n },\n createXHR: function (method, url) {\n return this.createRequest(http_xhr_request, method, url);\n },\n createRequest: function (hooks, method, url) {\n return new http_request(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: function () {\n return window.XMLHttpRequest;\n },\n getWebSocketAPI: function () {\n return window.WebSocket || window.MozWebSocket;\n },\n setup: function (PusherClass) {\n var _this = this;\n window.Pusher = PusherClass;\n var initializeOnDocumentBody = function () {\n _this.onDocumentBody(PusherClass.ready);\n };\n if (!window.JSON) {\n Dependencies.load('json2', {}, initializeOnDocumentBody);\n }\n else {\n initializeOnDocumentBody();\n }\n },\n getDocument: function () {\n return document;\n },\n getProtocol: function () {\n return this.getDocument().location.protocol;\n },\n getAuthorizers: function () {\n return { ajax: xhr_auth, jsonp: jsonp_auth };\n },\n onDocumentBody: function (callback) {\n var _this = this;\n if (document.body) {\n callback();\n }\n else {\n setTimeout(function () {\n _this.onDocumentBody(callback);\n }, 0);\n }\n },\n createJSONPRequest: function (url, data) {\n return new jsonp_request(url, data);\n },\n createScriptRequest: function (src) {\n return new script_request(src);\n },\n getLocalStorage: function () {\n try {\n return window.localStorage;\n }\n catch (e) {\n return undefined;\n }\n },\n createXHR: function () {\n if (this.getXHRAPI()) {\n return this.createXMLHttpRequest();\n }\n else {\n return this.createMicrosoftXHR();\n }\n },\n createXMLHttpRequest: function () {\n var Constructor = this.getXHRAPI();\n return new Constructor();\n },\n createMicrosoftXHR: function () {\n return new ActiveXObject('Microsoft.XMLHTTP');\n },\n getNetwork: function () {\n return net_info_Network;\n },\n createWebSocket: function (url) {\n var Constructor = this.getWebSocketAPI();\n return new Constructor(url);\n },\n createSocketRequest: function (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: function () {\n var Constructor = this.getXHRAPI();\n return (Boolean(Constructor) && new Constructor().withCredentials !== undefined);\n },\n isXDRSupported: function (useTLS) {\n var protocol = useTLS ? 'https:' : 'http:';\n var documentProtocol = this.getProtocol();\n return (Boolean(window['XDomainRequest']) && documentProtocol === protocol);\n },\n addUnloadListener: function (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: function (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};\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\nvar timeline_Timeline = (function () {\n function Timeline(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 Timeline.prototype.log = function (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 Timeline.prototype.error = function (event) {\n this.log(timeline_level.ERROR, event);\n };\n Timeline.prototype.info = function (event) {\n this.log(timeline_level.INFO, event);\n };\n Timeline.prototype.debug = function (event) {\n this.log(timeline_level.DEBUG, event);\n };\n Timeline.prototype.isEmpty = function () {\n return this.events.length === 0;\n };\n Timeline.prototype.send = function (sendfn, callback) {\n var _this = this;\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, function (error, result) {\n if (!error) {\n _this.sent++;\n }\n if (callback) {\n callback(error, result);\n }\n });\n return true;\n };\n Timeline.prototype.generateUniqueID = function () {\n this.uniqueID++;\n return this.uniqueID;\n };\n return Timeline;\n}());\n/* harmony default export */ var timeline_timeline = (timeline_Timeline);\n\n// CONCATENATED MODULE: ./src/core/strategies/transport_strategy.ts\n\n\n\n\nvar transport_strategy_TransportStrategy = (function () {\n function TransportStrategy(name, priority, transport, options) {\n this.name = name;\n this.priority = priority;\n this.transport = transport;\n this.options = options || {};\n }\n TransportStrategy.prototype.isSupported = function () {\n return this.transport.isSupported({\n useTLS: this.options.useTLS\n });\n };\n TransportStrategy.prototype.connect = function (minPriority, callback) {\n var _this = this;\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: function () {\n if (connected) {\n return;\n }\n unbindListeners();\n if (handshake) {\n handshake.close();\n }\n else {\n transport.close();\n }\n },\n forceMinPriority: function (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 return TransportStrategy;\n}());\n/* harmony default export */ var transport_strategy = (transport_strategy_TransportStrategy);\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\nvar strategy_builder_Transports = runtime.Transports;\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(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/auth/user_authenticator.ts\n\n\nvar composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n for (var i in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(i) +\n '=' +\n encodeURIComponent(authOptions.params[i]);\n }\n return query;\n};\nvar UserAuthenticator = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var 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\nvar channel_authorizer_composeChannelQuery = function (params, authOptions) {\n var query = 'socket_id=' + encodeURIComponent(params.socketId);\n query += '&channel_name=' + encodeURIComponent(params.channelName);\n for (var i in authOptions.params) {\n query +=\n '&' +\n encodeURIComponent(i) +\n '=' +\n encodeURIComponent(authOptions.params[i]);\n }\n return query;\n};\nvar ChannelAuthorizer = function (authOptions) {\n if (typeof runtime.getAuthorizers()[authOptions.transport] === 'undefined') {\n throw \"'\" + authOptions.transport + \"' is not a recognized auth transport\";\n }\n return function (params, callback) {\n var 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\nvar ChannelAuthorizerProxy = function (pusher, authOptions, channelAuthorizerGenerator) {\n var deprecatedAuthorizerOptions = {\n authTransport: authOptions.transport,\n authEndpoint: authOptions.endpoint,\n auth: {\n params: authOptions.params,\n headers: authOptions.headers\n }\n };\n return function (params, callback) {\n var channel = pusher.channel(params.channelName);\n var channelAuthorizer = channelAuthorizerGenerator(channel, deprecatedAuthorizerOptions);\n channelAuthorizer.authorize(params.socketId, callback);\n };\n};\n\n// CONCATENATED MODULE: ./src/core/config.ts\nvar __assign = (undefined && undefined.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\n\n\n\n\nfunction getConfig(opts, pusher) {\n var config = {\n activityTimeout: opts.activityTimeout || defaults.activityTimeout,\n cluster: opts.cluster || defaults.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 if (opts.cluster) {\n return getWebsocketHostFromCluster(opts.cluster);\n }\n return getWebsocketHostFromCluster(defaults.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 var userAuthentication = __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 var channelAuthorization;\n if ('channelAuthorization' in opts) {\n channelAuthorization = __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 var 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/utils/flat_promise.ts\nfunction flatPromise() {\n var resolve, reject;\n var promise = new Promise(function (res, rej) {\n resolve = res;\n reject = rej;\n });\n return { promise: promise, resolve: resolve, reject: reject };\n}\n/* harmony default export */ var flat_promise = (flatPromise);\n\n// CONCATENATED MODULE: ./src/core/user.ts\nvar user_extends = (undefined && undefined.__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})();\n\n\n\n\nvar user_UserFacade = (function (_super) {\n user_extends(UserFacade, _super);\n function UserFacade(pusher) {\n var _this = _super.call(this, function (eventName, data) {\n logger.debug('No callbacks on user for ' + eventName);\n }) || this;\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 = function (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', function (_a) {\n var previous = _a.previous, current = _a.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.pusher.connection.bind('message', function (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 return _this;\n }\n UserFacade.prototype.signin = function () {\n if (this.signin_requested) {\n return;\n }\n this.signin_requested = true;\n this._signin();\n };\n UserFacade.prototype._signin = function () {\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 UserFacade.prototype._onSigninSuccess = function (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 UserFacade.prototype._subscribeChannels = function () {\n var _this = this;\n var ensure_subscribed = function (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 channels_channel(\"#server-to-user-\" + this.user_data.id, this.pusher);\n this.serverToUserChannel.bind_global(function (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 UserFacade.prototype._cleanup = function () {\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 UserFacade.prototype._newSigninPromiseIfNeeded = function () {\n if (!this.signin_requested) {\n return;\n }\n if (this.signinDonePromise && !this.signinDonePromise.done) {\n return;\n }\n var _a = flat_promise(), promise = _a.promise, resolve = _a.resolve, _ = _a.reject;\n promise.done = false;\n var setDone = function () {\n promise.done = true;\n };\n promise.then(setDone)[\"catch\"](setDone);\n this.signinDonePromise = promise;\n this._signinDoneResolve = resolve;\n };\n return UserFacade;\n}(dispatcher));\n/* harmony default export */ var user = (user_UserFacade);\n\n// CONCATENATED MODULE: ./src/core/pusher.ts\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar pusher_Pusher = (function () {\n function Pusher(app_key, options) {\n var _this = this;\n checkAppKey(app_key);\n options = options || {};\n if (!options.cluster && !(options.wsHost || options.httpHost)) {\n var suffix = url_store.buildLogSuffix('javascriptQuickStart');\n logger.warn(\"You should always specify a cluster when connecting. \" + suffix);\n }\n if ('disableStats' in options) {\n logger.warn('The disableStats option is deprecated in favor of enableStats');\n }\n this.key = app_key;\n this.config = getConfig(options, this);\n this.channels = factory.createChannels();\n this.global_emitter = new dispatcher();\n this.sessionID = Math.floor(Math.random() * 1000000000);\n this.timeline = new timeline_timeline(this.key, this.sessionID, {\n cluster: this.config.cluster,\n features: 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 = function (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', function () {\n _this.subscribeAll();\n if (_this.timelineSender) {\n _this.timelineSender.send(_this.connection.isUsingTLS());\n }\n });\n this.connection.bind('message', function (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', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('disconnected', function () {\n _this.channels.disconnect();\n });\n this.connection.bind('error', function (err) {\n logger.warn(err);\n });\n Pusher.instances.push(this);\n this.timeline.info({ instances: Pusher.instances.length });\n this.user = new user(this);\n if (Pusher.isReady) {\n this.connect();\n }\n }\n Pusher.ready = function () {\n Pusher.isReady = true;\n for (var i = 0, l = Pusher.instances.length; i < l; i++) {\n Pusher.instances[i].connect();\n }\n };\n Pusher.getClientFeatures = function () {\n return keys(filterObject({ ws: runtime.Transports.ws }, function (t) {\n return t.isSupported({});\n }));\n };\n Pusher.prototype.channel = function (name) {\n return this.channels.find(name);\n };\n Pusher.prototype.allChannels = function () {\n return this.channels.all();\n };\n Pusher.prototype.connect = function () {\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 PeriodicTimer(60000, function () {\n timelineSender.send(usingTLS);\n });\n }\n }\n };\n Pusher.prototype.disconnect = function () {\n this.connection.disconnect();\n if (this.timelineSenderTimer) {\n this.timelineSenderTimer.ensureAborted();\n this.timelineSenderTimer = null;\n }\n };\n Pusher.prototype.bind = function (event_name, callback, context) {\n this.global_emitter.bind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.unbind = function (event_name, callback, context) {\n this.global_emitter.unbind(event_name, callback, context);\n return this;\n };\n Pusher.prototype.bind_global = function (callback) {\n this.global_emitter.bind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_global = function (callback) {\n this.global_emitter.unbind_global(callback);\n return this;\n };\n Pusher.prototype.unbind_all = function (callback) {\n this.global_emitter.unbind_all();\n return this;\n };\n Pusher.prototype.subscribeAll = function () {\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 Pusher.prototype.subscribe = function (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 Pusher.prototype.unsubscribe = function (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 Pusher.prototype.send_event = function (event_name, data, channel) {\n return this.connection.send_event(event_name, data, channel);\n };\n Pusher.prototype.shouldUseTLS = function () {\n return this.config.useTLS;\n };\n Pusher.prototype.signin = function () {\n this.user.signin();\n };\n Pusher.instances = [];\n Pusher.isReady = false;\n Pusher.logToConsole = false;\n Pusher.Runtime = runtime;\n Pusher.ScriptReceivers = runtime.ScriptReceivers;\n Pusher.DependenciesReceivers = runtime.DependenciesReceivers;\n Pusher.auth_callbacks = runtime.auth_callbacks;\n return Pusher;\n}());\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","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.setNamespace(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 * Trigger client event on 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 * Trigger client event on 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 * 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 /**\r\n * Trigger client event on 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 }]);\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 * Trigger client event on 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 * 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 * 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 * Trigger client event on 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 * Listen for someone leaving the channel.\r\n */\n\n }, {\n key: \"leaving\",\n value: function leaving(callback) {\n return this;\n }\n /**\r\n * Trigger client event on the channel.\r\n */\n\n }, {\n key: \"whisper\",\n value: function whisper(eventName, data) {\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 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 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 {\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 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 * 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","import Echo from 'laravel-echo';\n\nwindow.Pusher = require('pusher-js');\n\nwindow.Echo = new Echo(window.websocketConfig);\n"],"sourceRoot":""}