faye 1.4.2 → 1.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://Faye/webpack/bootstrap","webpack://Faye/./src/util/class.js","webpack://Faye/(webpack)/buildin/global.js","webpack://Faye/./src/util/uri.js","webpack://Faye/./src/transport/transport.js","webpack://Faye/./src/util/to_json.js","webpack://Faye/./src/mixins/deferrable.js","webpack://Faye/./src/mixins/logging.js","webpack://Faye/./src/mixins/publisher.js","webpack://Faye/./src/util/array.js","webpack://Faye/./src/util/browser/event.js","webpack://Faye/./src/protocol/channel.js","webpack://Faye/./src/protocol/grammar.js","webpack://Faye/./src/protocol/dispatcher.js","webpack://Faye/./src/util/cookies/browser_cookies.js","webpack://Faye/./src/transport/browser_transports.js","webpack://Faye/./src/util/set.js","webpack://Faye/./src/transport/xhr.js","webpack://Faye/./src/protocol/scheduler.js","webpack://Faye/./src/util/constants.js","webpack://Faye/./src/protocol/subscription.js","webpack://Faye/./src/protocol/client.js","webpack://Faye/./src/util/validate_options.js","webpack://Faye/./src/util/event_emitter.js","webpack://Faye/./src/mixins/timeouts.js","webpack://Faye/./src/transport/web_socket.js","webpack://Faye/./src/util/websocket/browser_websocket.js","webpack://Faye/./src/transport/event_source.js","webpack://Faye/./src/transport/cors.js","webpack://Faye/./src/transport/jsonp.js","webpack://Faye/./src/protocol/error.js","webpack://Faye/./src/protocol/extensible.js","webpack://Faye/./src/protocol/publication.js","webpack://Faye/./src/faye_browser.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","parent","methods","klass","this","initialize","apply","arguments","bridge","assign","g","Function","e","window","isURI","uri","protocol","host","pathname","isSameOrigin","location","hostname","port","parse","url","base","URL","href","stringify","clone","Class","Cookie","array","Logging","Timeouts","Channel","Transport","className","DEFAULT_PORTS","MAX_DELAY","batching","dispatcher","endpoint","_dispatcher","_outbox","_proxy","proxy","origin","_findProxy","close","encode","messages","sendMessage","message","debug","clientId","push","_flushLargeBatch","channel","HANDSHAKE","_publish","CONNECT","_connectMessage","Promise","resolve","request","_makePromise","self","_requestPromise","_resolvePromise","delay","addTimeout","_flush","removeTimeout","length","advice","timeout","maxRequestSize","last","pop","_receive","replies","concat","connectionType","reply","handleResponse","_handleError","immediate","handleError","_getCookies","cookies","map","getCookiesSync","cookie","cookieString","join","_storeCookies","setCookie","cookieStr","setCookieSync","process","keys","replace","toLowerCase","upcase","toUpperCase","env","REQUEST_METHOD","filter","k","test","undefined","console","warn","allowed","disabled","callback","context","asyncEach","_transports","pair","resume","connType","connEndpoint","endpointFor","indexOf","isUsable","transport","Error","register","type","getConnectionTypes","disable","feature","_unloaded","JSON","Array","then","errback","_promise","reject","_resolve","_reject","reason","seconds","_timer","global","setTimeout","setDeferredStatus","status","clearTimeout","toJSON","LOG_LEVELS","fatal","error","info","writeLog","messageArgs","level","logger","wrapper","args","slice","banner","shift","EventEmitter","Publisher","countListeners","eventType","listeners","listener","handler","_listeners","on","unbind","tuple","splice","removeListener","trigger","emit","commonElement","lista","listb","list","needle","result","entries","iterator","calls","looping","iterate","loop","Event","_registry","element","eventName","wrapped","addEventListener","attachEvent","_element","_type","_callback","_context","_handler","detach","removeEventListener","detachEvent","Grammar","id","isUnused","SUBSCRIBE","UNSUBSCRIBE","DISCONNECT","META","SERVICE","expand","segments","channels","copy","unparse","isValid","CHANNEL_NAME","CHANNEL_PATTERN","split","isMeta","isService","isSubscribable","Set","_channels","Map","getKeys","remove","delete","hasSubscription","subscribe","names","subscription","has","set","unsubscribe","distributeMessage","chan","ERROR","VERSION","URI","Scheduler","Dispatcher","MAX_REQUEST_SIZE","DEFAULT_RETRY","UP","DOWN","client","options","_client","_alternates","endpoints","CookieJar","_disabled","_envelopes","headers","retry","_scheduler","scheduler","_state","transports","wsExtensions","exts","websocketExtensions","ext","addWebsocketExtension","tls","ca","alt","extension","setHeader","_transport","selectTransport","transportTypes","attempts","deadline","Date","getTime","envelope","interval","_sendEnvelope","timer","isDeliverable","abort","getTimeout","send","successful","succeed","req","fail","getInterval","_index","add","item","values","isEmpty","size","member","removed","browser","XHR","xhr","XMLHttpRequest","ActiveXObject","open","setRequestHeader","onbeforeunload","onreadystatechange","readyState","text","responseText","usable","navigator","product","made","now","BAYEUX_VERSION","ID_LENGTH","JSONP_CALLBACK","CONNECTION_TYPES","MANDATORY_CONNECTION_TYPES","Deferrable","Subscription","_cancelled","withChannel","_withChannel","data","cancel","constants","validateOptions","Extensible","Publication","Client","UNCONNECTED","CONNECTING","CONNECTED","DISCONNECTED","RETRY","NONE","CONNECTION_TIMEOUT","DEFAULT_ENDPOINT","INTERVAL","_messageId","_responseCallbacks","_advice","reconnect","_receiveMessage","disconnect","handshake","_sendMessage","version","supportedConnectionTypes","response","connect","_connectRequest","_cycleConnection","promise","force","publish","publication","_generateMessageId","pipeThroughExtensions","Math","pow","toString","_handleAdvice","_deliverMessage","validKeys","isArray","xs","_events","addListener","once","x","removeAllListeners","_timeouts","removeAllTimeouts","ws","WebSocket","_pending","socket","_createSocket","onopen","_socket","_everConnected","closed","onclose","onerror","wasConnected","onmessage","pending","event","getSocketUrl","extensions","PROTOCOLS","sockets","websocket","WS","MozWebSocket","protocols","EventSource","_xhr","eventsource","CORS","encodeURIComponent","xhrClass","XDomainRequest","_id","withCredentials","cleanUp","onload","ontimeout","onprogress","JSONP","searchParams","_cbCount","head","document","getElementsByTagName","script","createElement","callbackName","getCallbackName","cleanup","parentNode","removeChild","src","appendChild","code","params","parts","parseInt","msg","versionMismatch","conntypeMismatch","extMismatch","badRequest","clientUnknown","parameterMissing","channelForbidden","channelUnknown","channelInvalid","extUnknown","publishFailed","serverError","addExtension","_extensions","added","removeExtension","stage","pipe","fn","Faye"],"mappings":"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","file":"build/client/faye-browser-min.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 = 33);\n","'use strict';\n\nmodule.exports = function(parent, methods) {\n if (typeof parent !== 'function') {\n methods = parent;\n parent = Object;\n }\n\n var klass = function() {\n if (!this.initialize) return this;\n return this.initialize.apply(this, arguments) || this;\n };\n\n var bridge = function() {};\n bridge.prototype = parent.prototype;\n\n klass.prototype = new bridge();\n Object.assign(klass.prototype, methods);\n\n return klass;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nmodule.exports = {\n isURI: function(uri) {\n return uri && uri.protocol && uri.host && uri.pathname;\n },\n\n isSameOrigin: function(uri) {\n return uri.protocol === location.protocol &&\n uri.hostname === location.hostname &&\n uri.port === location.port;\n },\n\n parse: function(url, base) {\n if (typeof url !== 'string') return url;\n\n if (typeof location === 'undefined') {\n return new URL(url, base);\n } else {\n return new URL(url, base || location.href);\n }\n },\n\n stringify: function(uri) {\n return (typeof uri === 'string') ? uri : uri.href;\n },\n\n clone: function(url) {\n return this.parse(url.href);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Cookie = require('../util/cookies').Cookie,\n array = require('../util/array'),\n Logging = require('../mixins/logging'),\n Timeouts = require('../mixins/timeouts'),\n Channel = require('../protocol/channel');\n\nvar Transport = Object.assign(Class({ className: 'Transport',\n DEFAULT_PORTS: { 'http:': 80, 'https:': 443, 'ws:': 80, 'wss:': 443 },\n MAX_DELAY: 0,\n\n batching: true,\n\n initialize: function(dispatcher, endpoint) {\n this._dispatcher = dispatcher;\n this.endpoint = endpoint;\n this._outbox = [];\n this._proxy = Object.assign({}, this._dispatcher.proxy);\n\n if (!this._proxy.origin) {\n this._proxy.origin = this._findProxy();\n }\n },\n\n close: function() {},\n\n encode: function(messages) {\n return '';\n },\n\n sendMessage: function(message) {\n this.debug('Client ? sending message to ?: ?',\n this._dispatcher.clientId, this.endpoint.href, message);\n\n if (!this.batching) return Promise.resolve(this.request([message]));\n\n this._outbox.push(message);\n this._flushLargeBatch();\n\n if (message.channel === Channel.HANDSHAKE) {\n return this._publish(0.01);\n }\n if (message.channel === Channel.CONNECT) {\n this._connectMessage = message;\n }\n\n return this._publish(this.MAX_DELAY);\n },\n\n _makePromise: function() {\n var self = this;\n\n this._requestPromise = this._requestPromise || new Promise(function(resolve) {\n self._resolvePromise = resolve;\n });\n },\n\n _publish: function(delay) {\n this._makePromise();\n\n this.addTimeout('publish', delay, function() {\n this._flush();\n delete this._requestPromise;\n }, this);\n\n return this._requestPromise;\n },\n\n _flush: function() {\n this.removeTimeout('publish');\n\n if (this._outbox.length > 1 && this._connectMessage) {\n this._connectMessage.advice = { timeout: 0 };\n }\n\n this._resolvePromise(this.request(this._outbox));\n\n this._connectMessage = null;\n this._outbox = [];\n },\n\n _flushLargeBatch: function() {\n var string = this.encode(this._outbox);\n if (string.length < this._dispatcher.maxRequestSize) return;\n var last = this._outbox.pop();\n\n this._makePromise();\n this._flush();\n\n if (last) this._outbox.push(last);\n },\n\n _receive: function(replies) {\n if (!replies) return;\n replies = [].concat(replies);\n\n this.debug('Client ? received from ? via ?: ?',\n this._dispatcher.clientId, this.endpoint.href, this.connectionType, replies);\n\n for (let reply of replies) {\n this._dispatcher.handleResponse(reply);\n }\n },\n\n _handleError: function(messages, immediate) {\n messages = [].concat(messages);\n\n this.debug('Client ? failed to send to ? via ?: ?',\n this._dispatcher.clientId, this.endpoint.href, this.connectionType, messages);\n\n for (let message of messages) {\n this._dispatcher.handleError(message);\n }\n },\n\n _getCookies: function() {\n var cookies = this._dispatcher.cookies,\n url = this.endpoint.href;\n\n if (!cookies) return '';\n\n return array.map(cookies.getCookiesSync(url), function(cookie) {\n return cookie.cookieString();\n }).join('; ');\n },\n\n _storeCookies: function(setCookie) {\n var cookies = this._dispatcher.cookies,\n url = this.endpoint.href,\n cookie;\n\n if (!setCookie || !cookies) return;\n setCookie = [].concat(setCookie);\n\n for (let cookieStr of setCookie) {\n cookie = Cookie.parse(cookieStr);\n cookies.setCookieSync(cookie, url);\n }\n },\n\n _findProxy: function() {\n if (typeof process === 'undefined') return undefined;\n\n var protocol = this.endpoint.protocol;\n if (!protocol) return undefined;\n\n var name = protocol.replace(/:$/, '').toLowerCase() + '_proxy',\n upcase = name.toUpperCase(),\n env = process.env,\n keys, proxy;\n\n if (name === 'http_proxy' && env.REQUEST_METHOD) {\n keys = Object.keys(env).filter(function(k) { return /^http_proxy$/i.test(k) });\n if (keys.length === 1) {\n if (keys[0] === name && env[upcase] === undefined) {\n proxy = env[name];\n }\n } else if (keys.length > 1) {\n proxy = env[name];\n }\n proxy = proxy || env['CGI_' + upcase];\n } else {\n proxy = env[name] || env[upcase];\n if (proxy && !env[name]) {\n console.warn('The environment variable ' + upcase +\n ' is discouraged. Use ' + name + '.');\n }\n }\n return proxy;\n }\n\n}), {\n get: function(dispatcher, allowed, disabled, callback, context) {\n var endpoint = dispatcher.endpoint;\n\n array.asyncEach(this._transports, function(pair, resume) {\n var connType = pair[0], klass = pair[1],\n connEndpoint = dispatcher.endpointFor(connType);\n\n if (array.indexOf(disabled, connType) >= 0) {\n return resume();\n }\n if (array.indexOf(allowed, connType) < 0) {\n klass.isUsable(dispatcher, connEndpoint, function() {});\n return resume();\n }\n\n klass.isUsable(dispatcher, connEndpoint, function(isUsable) {\n if (!isUsable) return resume();\n var transport = klass.hasOwnProperty('create') ? klass.create(dispatcher, connEndpoint) : new klass(dispatcher, connEndpoint);\n callback.call(context, transport);\n });\n }, function() {\n throw new Error('Could not find a usable connection type for ' + endpoint.href);\n });\n },\n\n register: function(type, klass) {\n this._transports.push([type, klass]);\n klass.prototype.connectionType = type;\n },\n\n getConnectionTypes: function() {\n return array.map(this._transports, function(t) { return t[0] });\n },\n\n disable: function(feature) {\n if (feature !== 'autodisconnect') return;\n\n for (let transport of this._transports) {\n transport[1]._unloaded = false;\n }\n },\n\n _transports: []\n});\n\nObject.assign(Transport.prototype, Logging);\nObject.assign(Transport.prototype, Timeouts);\n\nmodule.exports = Transport;\n","'use strict';\n\n// http://assanka.net/content/tech/2009/09/02/json2-js-vs-prototype/\n\nmodule.exports = function(object) {\n return JSON.stringify(object, function(key, value) {\n return (this[key] instanceof Array) ? this[key] : value;\n });\n};\n","'use strict';\n\nmodule.exports = {\n then: function(callback, errback) {\n var self = this;\n\n if (!this._promise) {\n this._promise = new Promise(function(resolve, reject) {\n self._resolve = resolve;\n self._reject = reject;\n });\n }\n\n if (arguments.length === 0) {\n return this._promise;\n } else {\n return this._promise.then(callback, errback);\n }\n },\n\n callback: function(callback, context) {\n if (!callback) return;\n return this.then(function(value) { callback.call(context, value) });\n },\n\n errback: function(callback, context) {\n if (!callback) return;\n return this.then(null, function(reason) { callback.call(context, reason) });\n },\n\n timeout: function(seconds, message) {\n this.then();\n var self = this;\n this._timer = global.setTimeout(function() {\n self._reject(message);\n }, seconds * 1000);\n },\n\n setDeferredStatus: function(status, value) {\n if (this._timer) global.clearTimeout(this._timer);\n\n this.then();\n\n if (status === 'succeeded') {\n this._resolve(value);\n } else if (status === 'failed') {\n this._reject(value);\n } else {\n delete this._promise;\n }\n }\n};\n","'use strict';\n\nvar toJSON = require('../util/to_json');\n\nvar Logging = {\n LOG_LEVELS: {\n fatal: 4,\n error: 3,\n warn: 2,\n info: 1,\n debug: 0\n },\n\n writeLog: function(messageArgs, level) {\n var logger = Logging.logger || (Logging.wrapper || Logging).logger;\n if (!logger) return;\n\n var args = Array.prototype.slice.apply(messageArgs),\n banner = '[Faye',\n klass = this.className,\n\n message = args.shift().replace(/\\?/g, function() {\n try {\n return toJSON(args.shift());\n } catch (error) {\n return '[Object]';\n }\n });\n\n if (klass) banner += '.' + klass;\n banner += '] ';\n\n if (typeof logger[level] === 'function') {\n logger[level](banner + message);\n } else if (typeof logger === 'function') {\n logger(banner + message);\n }\n }\n};\n\nfor (let level of Object.keys(Logging.LOG_LEVELS)) {\n Logging[level] = function() {\n this.writeLog(arguments, level);\n };\n}\n\nmodule.exports = Logging;\n","'use strict';\n\nvar EventEmitter = require('../util/event_emitter');\n\nvar Publisher = {\n countListeners: function(eventType) {\n return this.listeners(eventType).length;\n },\n\n bind: function(eventType, listener, context) {\n var slice = Array.prototype.slice,\n handler = function() { listener.apply(context, slice.call(arguments)) };\n\n this._listeners = this._listeners || [];\n this._listeners.push([eventType, listener, context, handler]);\n return this.on(eventType, handler);\n },\n\n unbind: function(eventType, listener, context) {\n this._listeners = this._listeners || [];\n var n = this._listeners.length, tuple;\n\n while (n--) {\n tuple = this._listeners[n];\n if (tuple[0] !== eventType) continue;\n if (listener && (tuple[1] !== listener || tuple[2] !== context)) continue;\n this._listeners.splice(n, 1);\n this.removeListener(eventType, tuple[3]);\n }\n }\n};\n\nObject.assign(Publisher, EventEmitter.prototype);\nPublisher.trigger = Publisher.emit;\n\nmodule.exports = Publisher;\n","'use strict';\n\nmodule.exports = {\n commonElement: function(lista, listb) {\n for (var i = 0, n = lista.length; i < n; i++) {\n if (this.indexOf(listb, lista[i]) !== -1) {\n return lista[i];\n }\n }\n return null;\n },\n\n indexOf: function(list, needle) {\n if (list.indexOf) return list.indexOf(needle);\n\n for (var i = 0, n = list.length; i < n; i++) {\n if (list[i] === needle) return i;\n }\n return -1;\n },\n\n map: function(object, callback, context) {\n if (object.map) return object.map(callback, context);\n var result = [];\n\n if (object instanceof Array) {\n for (var i = 0, n = object.length; i < n; i++) {\n result.push(callback.call(context || null, object[i], i));\n }\n } else {\n for (let [key, value] of Object.entries(object)) {\n result.push(callback.call(context || null, key, value));\n }\n }\n return result;\n },\n\n filter: function(array, callback, context) {\n if (array.filter) return array.filter(callback, context);\n var result = [];\n for (var i = 0, n = array.length; i < n; i++) {\n if (callback.call(context || null, array[i], i)) {\n result.push(array[i]);\n }\n }\n return result;\n },\n\n asyncEach: function(list, iterator, callback, context) {\n var n = list.length,\n i = -1,\n calls = 0,\n looping = false;\n\n var iterate = function() {\n calls -= 1;\n i += 1;\n if (i === n) return callback && callback.call(context);\n iterator(list[i], resume);\n };\n\n var loop = function() {\n if (looping) return;\n looping = true;\n while (calls > 0) iterate();\n looping = false;\n };\n\n var resume = function() {\n calls += 1;\n loop();\n };\n resume();\n }\n};\n","'use strict';\n\nvar Event = {\n _registry: [],\n\n on: function(element, eventName, callback, context) {\n var wrapped = function() { callback.call(context) };\n\n if (element.addEventListener) {\n element.addEventListener(eventName, wrapped, false);\n } else {\n element.attachEvent('on' + eventName, wrapped);\n }\n\n this._registry.push({\n _element: element,\n _type: eventName,\n _callback: callback,\n _context: context,\n _handler: wrapped\n });\n },\n\n detach: function(element, eventName, callback, context) {\n var i = this._registry.length, register;\n while (i--) {\n register = this._registry[i];\n\n if ((element && element !== register._element) ||\n (eventName && eventName !== register._type) ||\n (callback && callback !== register._callback) ||\n (context && context !== register._context))\n continue;\n\n if (register._element.removeEventListener) {\n register._element.removeEventListener(register._type, register._handler, false);\n } else {\n register._element.detachEvent('on' + register._type, register._handler);\n }\n\n this._registry.splice(i,1);\n register = null;\n }\n }\n};\n\nmodule.exports = {\n Event: Event\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Publisher = require('../mixins/publisher'),\n Grammar = require('./grammar');\n\nvar Channel = Class({\n initialize: function(name) {\n this.id = this.name = name;\n },\n\n push: function(message) {\n this.trigger('message', message);\n },\n\n isUnused: function() {\n return this.countListeners('message') === 0;\n }\n});\n\nObject.assign(Channel.prototype, Publisher);\n\nObject.assign(Channel, {\n HANDSHAKE: '/meta/handshake',\n CONNECT: '/meta/connect',\n SUBSCRIBE: '/meta/subscribe',\n UNSUBSCRIBE: '/meta/unsubscribe',\n DISCONNECT: '/meta/disconnect',\n\n META: 'meta',\n SERVICE: 'service',\n\n expand: function(name) {\n var segments = this.parse(name),\n channels = ['/**', name];\n\n var copy = segments.slice();\n copy[copy.length - 1] = '*';\n channels.push(this.unparse(copy));\n\n for (var i = 1, n = segments.length; i < n; i++) {\n copy = segments.slice(0, i);\n copy.push('**');\n channels.push(this.unparse(copy));\n }\n\n return channels;\n },\n\n isValid: function(name) {\n return Grammar.CHANNEL_NAME.test(name) ||\n Grammar.CHANNEL_PATTERN.test(name);\n },\n\n parse: function(name) {\n if (!this.isValid(name)) return null;\n return name.split('/').slice(1);\n },\n\n unparse: function(segments) {\n return '/' + segments.join('/');\n },\n\n isMeta: function(name) {\n var segments = this.parse(name);\n return segments ? (segments[0] === this.META) : null;\n },\n\n isService: function(name) {\n var segments = this.parse(name);\n return segments ? (segments[0] === this.SERVICE) : null;\n },\n\n isSubscribable: function(name) {\n if (!this.isValid(name)) return null;\n return !this.isMeta(name) && !this.isService(name);\n },\n\n Set: Class({\n initialize: function() {\n this._channels = new Map();\n },\n\n getKeys: function() {\n return [...this._channels.keys()];\n },\n\n remove: function(name) {\n this._channels.delete(name);\n },\n\n hasSubscription: function(name) {\n return this._channels.hasOwnProperty(name);\n },\n\n subscribe: function(names, subscription) {\n for (let name of names) {\n if (!this._channels.has(name)) this._channels.set(name, new Channel(name));\n this._channels.get(name).bind('message', subscription);\n }\n },\n\n unsubscribe: function(name, subscription) {\n var channel = this._channels.get(name);\n if (!channel) return false;\n channel.unbind('message', subscription);\n\n if (channel.isUnused()) {\n this.remove(name);\n return true;\n } else {\n return false;\n }\n },\n\n distributeMessage: function(message) {\n var channels = Channel.expand(message.channel);\n\n for (let chan of channels) {\n var channel = this._channels.get(chan);\n if (channel) channel.trigger('message', message);\n }\n }\n })\n});\n\nmodule.exports = Channel;\n","'use strict';\n\nmodule.exports = {\n CHANNEL_NAME: /^\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+(\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+)*$/,\n CHANNEL_PATTERN: /^(\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+)*\\/\\*{1,2}$/,\n ERROR: /^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*(,(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*)$/,\n VERSION: /^([0-9])+(\\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\\-|\\_))*)*$/\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n cookies = require('../util/cookies'),\n Logging = require('../mixins/logging'),\n Publisher = require('../mixins/publisher'),\n Transport = require('../transport'),\n Scheduler = require('./scheduler');\n\nvar Dispatcher = Class({ className: 'Dispatcher',\n MAX_REQUEST_SIZE: 2048,\n DEFAULT_RETRY: 5,\n\n UP: 1,\n DOWN: 2,\n\n initialize: function(client, endpoint, options) {\n this._client = client;\n this.endpoint = URI.parse(endpoint);\n this._alternates = options.endpoints || {};\n\n this.cookies = cookies.CookieJar && new cookies.CookieJar();\n this._disabled = [];\n this._envelopes = new Map();\n this.headers = {};\n this.retry = options.retry || this.DEFAULT_RETRY;\n this._scheduler = options.scheduler || Scheduler;\n this._state = 0;\n this.transports = {};\n this.wsExtensions = [];\n\n this.proxy = options.proxy || {};\n if (typeof this._proxy === 'string') this._proxy = { origin: this._proxy };\n\n var exts = options.websocketExtensions;\n if (exts) {\n exts = [].concat(exts);\n for (let ext of exts) this.addWebsocketExtension(ext);\n }\n\n this.tls = options.tls || {};\n this.tls.ca = this.tls.ca || options.ca;\n\n for (let [type, alt] of Object.entries(this._alternates)) {\n this._alternates[type] = URI.parse(alt);\n }\n\n this.maxRequestSize = this.MAX_REQUEST_SIZE;\n },\n\n endpointFor: function(connectionType) {\n return this._alternates[connectionType] || this.endpoint;\n },\n\n addWebsocketExtension: function(extension) {\n this.wsExtensions.push(extension);\n },\n\n disable: function(feature) {\n this._disabled.push(feature);\n Transport.disable(feature);\n },\n\n setHeader: function(name, value) {\n this.headers[name] = value;\n },\n\n close: function() {\n var transport = this._transport;\n delete this._transport;\n if (transport) transport.close();\n },\n\n getConnectionTypes: function() {\n return Transport.getConnectionTypes();\n },\n\n selectTransport: function(transportTypes) {\n Transport.get(this, transportTypes, this._disabled, function(transport) {\n this.debug('Selected ? transport for ?', transport.connectionType, transport.endpoint.href);\n\n if (transport === this._transport) return;\n if (this._transport) this._transport.close();\n\n this._transport = transport;\n this.connectionType = transport.connectionType;\n }, this);\n },\n\n sendMessage: function(message, timeout, options) {\n options = options || {};\n\n var id = message.id,\n attempts = options.attempts,\n deadline = options.deadline && new Date().getTime() + (options.deadline * 1000),\n envelope = this._envelopes.get(id),\n scheduler;\n\n if (!envelope) {\n scheduler = new this._scheduler(message, { timeout: timeout, interval: this.retry, attempts: attempts, deadline: deadline });\n envelope = { message: message, scheduler: scheduler };\n this._envelopes.set(id, envelope);\n }\n\n this._sendEnvelope(envelope);\n },\n\n _sendEnvelope: function(envelope) {\n if (!this._transport) return;\n if (envelope.request || envelope.timer) return;\n\n var message = envelope.message,\n scheduler = envelope.scheduler,\n self = this;\n\n if (!scheduler.isDeliverable()) {\n scheduler.abort();\n this._envelopes.delete(message.id);\n return;\n }\n\n envelope.timer = global.setTimeout(function() {\n self.handleError(message);\n }, scheduler.getTimeout() * 1000);\n\n scheduler.send();\n envelope.request = this._transport.sendMessage(message);\n },\n\n handleResponse: function(reply) {\n var envelope = this._envelopes.get(reply.id);\n\n if (reply.successful !== undefined && envelope) {\n envelope.scheduler.succeed();\n this._envelopes.delete(reply.id);\n global.clearTimeout(envelope.timer);\n }\n\n this.trigger('message', reply);\n\n if (this._state === this.UP) return;\n this._state = this.UP;\n this._client.trigger('transport:up');\n },\n\n handleError: function(message, immediate) {\n var envelope = this._envelopes.get(message.id),\n request = envelope && envelope.request,\n self = this;\n\n if (!request) return;\n\n request.then(function(req) {\n if (req && req.abort) req.abort();\n });\n\n var scheduler = envelope.scheduler;\n scheduler.fail();\n\n global.clearTimeout(envelope.timer);\n envelope.request = envelope.timer = null;\n\n if (immediate) {\n this._sendEnvelope(envelope);\n } else {\n envelope.timer = global.setTimeout(function() {\n envelope.timer = null;\n self._sendEnvelope(envelope);\n }, scheduler.getInterval() * 1000);\n }\n\n if (this._state === this.DOWN) return;\n this._state = this.DOWN;\n this._client.trigger('transport:down');\n }\n});\n\nDispatcher.create = function(client, endpoint, options) {\n return new Dispatcher(client, endpoint, options);\n};\n\nObject.assign(Dispatcher.prototype, Publisher);\nObject.assign(Dispatcher.prototype, Logging);\n\nmodule.exports = Dispatcher;\n","'use strict';\n\nmodule.exports = {};\n","'use strict';\n\nvar Transport = require('./transport');\n\nTransport.register('websocket', require('./web_socket'));\nTransport.register('eventsource', require('./event_source'));\nTransport.register('long-polling', require('./xhr'));\nTransport.register('cross-origin-long-polling', require('./cors'));\nTransport.register('callback-polling', require('./jsonp'));\n\nmodule.exports = Transport;\n","'use strict';\n\nvar Class = require('./class');\n\nmodule.exports = Class({\n initialize: function() {\n this._index = new Map();\n },\n\n add: function(item) {\n var key = (item.id !== undefined) ? item.id : item;\n if (this._index.has(key)) return false;\n this._index.set(key, item);\n return true;\n },\n\n [Symbol.iterator]: function() {\n return this._index.values();\n },\n\n isEmpty: function() {\n return this._index.size === 0;\n },\n\n member: function(item) {\n for (let value of this._index.values()) {\n if (value === item) return true;\n }\n return false;\n },\n\n remove: function(item) {\n var key = (item.id !== undefined) ? item.id : item;\n var removed = this._index.get(key);\n this._index.delete(key);\n return removed;\n }\n});\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n browser = require('../util/browser'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar XHR = Object.assign(Class(Transport, {\n encode: function(messages) {\n return toJSON(messages);\n },\n\n request: function(messages) {\n var href = this.endpoint.href,\n self = this,\n xhr;\n\n // Prefer XMLHttpRequest over ActiveXObject if they both exist\n if (global.XMLHttpRequest) {\n xhr = new XMLHttpRequest();\n } else if (global.ActiveXObject) {\n xhr = new ActiveXObject('Microsoft.XMLHTTP');\n } else {\n return this._handleError(messages);\n }\n\n xhr.open('POST', href, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Pragma', 'no-cache');\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n\n var headers = this._dispatcher.headers;\n for (let [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n var abort = function() { xhr.abort() };\n if (global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', abort);\n }\n\n xhr.onreadystatechange = function() {\n if (!xhr || xhr.readyState !== 4) return;\n\n var replies = null,\n status = xhr.status,\n text = xhr.responseText,\n successful = (status >= 200 && status < 300) || status === 304 || status === 1223;\n\n if (global.onbeforeunload !== undefined) {\n browser.Event.detach(global, 'beforeunload', abort);\n }\n\n xhr.onreadystatechange = function() {};\n xhr = null;\n\n if (!successful) return self._handleError(messages);\n\n try {\n replies = JSON.parse(text);\n } catch (error) {}\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError(messages);\n }\n };\n\n xhr.send(this.encode(messages));\n return xhr;\n }\n}), {\n isUsable: function(dispatcher, endpoint, callback, context) {\n var usable = (navigator.product === 'ReactNative')\n || URI.isSameOrigin(endpoint);\n\n callback.call(context, usable);\n }\n});\n\nmodule.exports = XHR;\n","'use strict';\n\nvar Scheduler = function(message, options) {\n this.message = message;\n this.options = options;\n this.attempts = 0;\n};\n\nObject.assign(Scheduler.prototype, {\n getTimeout: function() {\n return this.options.timeout;\n },\n\n getInterval: function() {\n return this.options.interval;\n },\n\n isDeliverable: function() {\n var attempts = this.options.attempts,\n made = this.attempts,\n deadline = this.options.deadline,\n now = new Date().getTime();\n\n if (attempts !== undefined && made >= attempts) {\n return false;\n }\n if (deadline !== undefined && now > deadline) {\n return false;\n }\n\n return true;\n },\n\n send: function() {\n this.attempts += 1;\n },\n\n succeed: function() {},\n\n fail: function() {},\n\n abort: function() {}\n});\n\nmodule.exports = Scheduler;\n","module.exports = {\n VERSION: '1.4.2',\n\n BAYEUX_VERSION: '1.0',\n ID_LENGTH: 160,\n JSONP_CALLBACK: 'jsonpcallback',\n CONNECTION_TYPES: ['long-polling', 'cross-origin-long-polling', 'callback-polling', 'websocket', 'eventsource', 'in-process'],\n\n MANDATORY_CONNECTION_TYPES: ['long-polling', 'callback-polling', 'in-process']\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Deferrable = require('../mixins/deferrable');\n\nvar Subscription = Class({\n initialize: function(client, channels, callback, context) {\n this._client = client;\n this._channels = channels;\n this._callback = callback;\n this._context = context;\n this._cancelled = false;\n },\n\n withChannel: function(callback, context) {\n this._withChannel = [callback, context];\n return this;\n },\n\n apply: function(context, args) {\n var message = args[0];\n\n if (this._callback) {\n this._callback.call(this._context, message.data);\n }\n if (this._withChannel) {\n this._withChannel[0].call(this._withChannel[1], message.channel, message.data);\n }\n },\n\n cancel: function() {\n if (this._cancelled) return;\n this._client.unsubscribe(this._channels, this);\n this._cancelled = true;\n },\n\n unsubscribe: function() {\n this.cancel();\n }\n});\n\nObject.assign(Subscription.prototype, Deferrable);\n\nmodule.exports = Subscription;\n","'use strict';\n\nvar Class = require('../util/class'),\n array = require('../util/array'),\n browser = require('../util/browser'),\n constants = require('../util/constants'),\n validateOptions = require('../util/validate_options'),\n Deferrable = require('../mixins/deferrable'),\n Logging = require('../mixins/logging'),\n Publisher = require('../mixins/publisher'),\n Channel = require('./channel'),\n Dispatcher = require('./dispatcher'),\n Error = require('./error'),\n Extensible = require('./extensible'),\n Publication = require('./publication'),\n Subscription = require('./subscription');\n\nvar Client = Class({ className: 'Client',\n UNCONNECTED: 1,\n CONNECTING: 2,\n CONNECTED: 3,\n DISCONNECTED: 4,\n\n HANDSHAKE: 'handshake',\n RETRY: 'retry',\n NONE: 'none',\n\n CONNECTION_TIMEOUT: 60,\n\n DEFAULT_ENDPOINT: '/bayeux',\n INTERVAL: 0,\n\n initialize: function(endpoint, options) {\n this.info('New client created for ?', endpoint);\n options = options || {};\n\n validateOptions(options, ['interval', 'timeout', 'endpoints', 'proxy', 'retry', 'scheduler', 'websocketExtensions', 'tls', 'ca']);\n\n this._channels = new Channel.Set();\n this._dispatcher = Dispatcher.create(this, endpoint || this.DEFAULT_ENDPOINT, options);\n\n this._messageId = 0;\n this._state = this.UNCONNECTED;\n\n this._responseCallbacks = new Map();\n\n this._advice = {\n reconnect: this.RETRY,\n interval: 1000 * (options.interval || this.INTERVAL),\n timeout: 1000 * (options.timeout || this.CONNECTION_TIMEOUT)\n };\n this._dispatcher.timeout = this._advice.timeout / 1000;\n\n this._dispatcher.bind('message', this._receiveMessage, this);\n\n if (browser.Event && global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', function() {\n if (array.indexOf(this._dispatcher._disabled, 'autodisconnect') < 0) {\n this.disconnect();\n }\n }, this);\n }\n },\n\n addWebsocketExtension: function(extension) {\n return this._dispatcher.addWebsocketExtension(extension);\n },\n\n disable: function(feature) {\n return this._dispatcher.disable(feature);\n },\n\n setHeader: function(name, value) {\n return this._dispatcher.setHeader(name, value);\n },\n\n // Request\n // MUST include: * channel\n // * version\n // * supportedConnectionTypes\n // MAY include: * minimumVersion\n // * ext\n // * id\n //\n // Success Response Failed Response\n // MUST include: * channel MUST include: * channel\n // * version * successful\n // * supportedConnectionTypes * error\n // * clientId MAY include: * supportedConnectionTypes\n // * successful * advice\n // MAY include: * minimumVersion * version\n // * advice * minimumVersion\n // * ext * ext\n // * id * id\n // * authSuccessful\n handshake: function(callback, context) {\n if (this._advice.reconnect === this.NONE) return;\n if (this._state !== this.UNCONNECTED) return;\n\n this._state = this.CONNECTING;\n var self = this;\n\n this.info('Initiating handshake with ?', this._dispatcher.endpoint.href);\n this._dispatcher.selectTransport(constants.MANDATORY_CONNECTION_TYPES);\n\n this._sendMessage({\n channel: Channel.HANDSHAKE,\n version: constants.BAYEUX_VERSION,\n supportedConnectionTypes: this._dispatcher.getConnectionTypes()\n\n }, {}, function(response) {\n\n if (response.successful) {\n this._state = this.CONNECTED;\n this._dispatcher.clientId = response.clientId;\n\n this._dispatcher.selectTransport(response.supportedConnectionTypes);\n\n this.info('Handshake successful: ?', this._dispatcher.clientId);\n\n this.subscribe(this._channels.getKeys(), true);\n if (callback) Promise.resolve().then(function() { callback.call(context) });\n\n } else {\n this.info('Handshake unsuccessful');\n global.setTimeout(function() { self.handshake(callback, context) }, this._dispatcher.retry * 1000);\n this._state = this.UNCONNECTED;\n }\n }, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * connectionType * clientId\n // MAY include: * ext MAY include: * error\n // * id * advice\n // * ext\n // * id\n // * timestamp\n connect: function(callback, context) {\n if (this._advice.reconnect === this.NONE) return;\n if (this._state === this.DISCONNECTED) return;\n\n if (this._state === this.UNCONNECTED) {\n return this.handshake(function() { this.connect(callback, context) }, this);\n }\n\n this.callback(callback, context);\n if (this._state !== this.CONNECTED) return;\n\n this.info('Calling deferred actions for ?', this._dispatcher.clientId);\n this.setDeferredStatus('succeeded');\n this.setDeferredStatus('unknown');\n\n if (this._connectRequest) return;\n this._connectRequest = true;\n\n this.info('Initiating connection for ?', this._dispatcher.clientId);\n\n this._sendMessage({\n channel: Channel.CONNECT,\n clientId: this._dispatcher.clientId,\n connectionType: this._dispatcher.connectionType\n\n }, {}, this._cycleConnection, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // MAY include: * ext * clientId\n // * id MAY include: * error\n // * ext\n // * id\n disconnect: function() {\n if (this._state !== this.CONNECTED) return;\n this._state = this.DISCONNECTED;\n\n this.info('Disconnecting ?', this._dispatcher.clientId);\n var promise = new Publication();\n\n this._sendMessage({\n channel: Channel.DISCONNECT,\n clientId: this._dispatcher.clientId\n\n }, {}, function(response) {\n if (response.successful) {\n this._dispatcher.close();\n promise.setDeferredStatus('succeeded');\n } else {\n promise.setDeferredStatus('failed', Error.parse(response.error));\n }\n }, this);\n\n this.info('Clearing channel listeners for ?', this._dispatcher.clientId);\n this._channels = new Channel.Set();\n\n return promise;\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * subscription * clientId\n // MAY include: * ext * subscription\n // * id MAY include: * error\n // * advice\n // * ext\n // * id\n // * timestamp\n subscribe: function(channel, callback, context) {\n if (channel instanceof Array) {\n return array.map(channel, function(c) {\n return this.subscribe(c, callback, context);\n }, this);\n }\n\n var subscription = new Subscription(this, channel, callback, context),\n force = (callback === true),\n hasSubscribe = this._channels.hasSubscription(channel);\n\n if (hasSubscribe && !force) {\n this._channels.subscribe([channel], subscription);\n subscription.setDeferredStatus('succeeded');\n return subscription;\n }\n\n this.connect(function() {\n this.info('Client ? attempting to subscribe to ?', this._dispatcher.clientId, channel);\n if (!force) this._channels.subscribe([channel], subscription);\n\n this._sendMessage({\n channel: Channel.SUBSCRIBE,\n clientId: this._dispatcher.clientId,\n subscription: channel\n\n }, {}, function(response) {\n if (!response.successful) {\n subscription.setDeferredStatus('failed', Error.parse(response.error));\n return this._channels.unsubscribe(channel, subscription);\n }\n\n var channels = [].concat(response.subscription);\n this.info('Subscription acknowledged for ? to ?', this._dispatcher.clientId, channels);\n subscription.setDeferredStatus('succeeded');\n }, this);\n }, this);\n\n return subscription;\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * subscription * clientId\n // MAY include: * ext * subscription\n // * id MAY include: * error\n // * advice\n // * ext\n // * id\n // * timestamp\n unsubscribe: function(channel, subscription) {\n if (channel instanceof Array) {\n return array.map(channel, function(c) {\n return this.unsubscribe(c, subscription);\n }, this);\n }\n\n var dead = this._channels.unsubscribe(channel, subscription);\n if (!dead) return;\n\n this.connect(function() {\n this.info('Client ? attempting to unsubscribe from ?', this._dispatcher.clientId, channel);\n\n this._sendMessage({\n channel: Channel.UNSUBSCRIBE,\n clientId: this._dispatcher.clientId,\n subscription: channel\n\n }, {}, function(response) {\n if (!response.successful) return;\n\n var channels = [].concat(response.subscription);\n this.info('Unsubscription acknowledged for ? from ?', this._dispatcher.clientId, channels);\n }, this);\n }, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * data * successful\n // MAY include: * clientId MAY include: * id\n // * id * error\n // * ext * ext\n publish: function(channel, data, options) {\n validateOptions(options || {}, ['attempts', 'deadline']);\n var publication = new Publication();\n\n this.connect(function() {\n this.info('Client ? queueing published message to ?: ?', this._dispatcher.clientId, channel, data);\n\n this._sendMessage({\n channel: channel,\n data: data,\n clientId: this._dispatcher.clientId\n\n }, options, function(response) {\n if (response.successful) {\n publication.setDeferredStatus('succeeded');\n } else {\n publication.setDeferredStatus('failed', Error.parse(response.error));\n }\n }, this);\n }, this);\n\n return publication;\n },\n\n _sendMessage: function(message, options, callback, context) {\n message.id = this._generateMessageId();\n\n var timeout = this._advice.timeout\n ? 1.2 * this._advice.timeout / 1000\n : 1.2 * this._dispatcher.retry;\n\n this.pipeThroughExtensions('outgoing', message, null, function(message) {\n if (!message) return;\n if (callback) this._responseCallbacks.set(message.id, [callback, context]);\n this._dispatcher.sendMessage(message, timeout, options || {});\n }, this);\n },\n\n _generateMessageId: function() {\n this._messageId += 1;\n if (this._messageId >= Math.pow(2,32)) this._messageId = 0;\n return this._messageId.toString(36);\n },\n\n _receiveMessage: function(message) {\n var id = message.id, callback;\n\n if (message.successful !== undefined) {\n callback = this._responseCallbacks.get(id);\n this._responseCallbacks.delete(id);\n }\n\n this.pipeThroughExtensions('incoming', message, null, function(message) {\n if (!message) return;\n if (message.advice) this._handleAdvice(message.advice);\n this._deliverMessage(message);\n if (callback) callback[0].call(callback[1], message);\n }, this);\n },\n\n _handleAdvice: function(advice) {\n Object.assign(this._advice, advice);\n this._dispatcher.timeout = this._advice.timeout / 1000;\n\n if (this._advice.reconnect === this.HANDSHAKE && this._state !== this.DISCONNECTED) {\n this._state = this.UNCONNECTED;\n this._dispatcher.clientId = null;\n this._cycleConnection();\n }\n },\n\n _deliverMessage: function(message) {\n if (!message.channel || message.data === undefined) return;\n this.info('Client ? calling listeners for ? with ?', this._dispatcher.clientId, message.channel, message.data);\n this._channels.distributeMessage(message);\n },\n\n _cycleConnection: function() {\n if (this._connectRequest) {\n this._connectRequest = null;\n this.info('Closed connection for ?', this._dispatcher.clientId);\n }\n var self = this;\n global.setTimeout(function() { self.connect() }, this._advice.interval);\n }\n});\n\nObject.assign(Client.prototype, Deferrable);\nObject.assign(Client.prototype, Publisher);\nObject.assign(Client.prototype, Logging);\nObject.assign(Client.prototype, Extensible);\n\nmodule.exports = Client;\n","'use strict';\n\nvar array = require('./array');\n\nmodule.exports = function(options, validKeys) {\n for (let key of Object.keys(options)) {\n if (array.indexOf(validKeys, key) < 0) {\n throw new Error('Unrecognized option: ' + key);\n }\n }\n};\n","/*\nCopyright Joyent, Inc. and other Node contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nvar isArray = typeof Array.isArray === 'function'\n ? Array.isArray\n : function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]'\n }\n;\nfunction indexOf (xs, x) {\n if (xs.indexOf) return xs.indexOf(x);\n for (var i = 0; i < xs.length; i++) {\n if (x === xs[i]) return i;\n }\n return -1;\n}\n\nfunction EventEmitter() {}\nmodule.exports = EventEmitter;\n\nEventEmitter.prototype.emit = function(type) {\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events || !this._events.error ||\n (isArray(this._events.error) && !this._events.error.length))\n {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n return false;\n }\n }\n\n if (!this._events) return false;\n var handler = this._events[type];\n if (!handler) return false;\n\n if (typeof handler == 'function') {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n var args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n return true;\n\n } else if (isArray(handler)) {\n var args = Array.prototype.slice.call(arguments, 1);\n\n var listeners = handler.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i].apply(this, args);\n }\n return true;\n\n } else {\n return false;\n }\n};\n\n// EventEmitter is defined in src/node_events.cc\n// EventEmitter.prototype.emit() is also defined there.\nEventEmitter.prototype.addListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('addListener only takes instances of Function');\n }\n\n if (!this._events) this._events = {};\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n this.emit('newListener', type, listener);\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else if (isArray(this._events[type])) {\n // If we've already got an array, just append.\n this._events[type].push(listener);\n } else {\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n var self = this;\n self.on(type, function g() {\n self.removeListener(type, g);\n listener.apply(this, arguments);\n });\n\n return this;\n};\n\nEventEmitter.prototype.removeListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('removeListener only takes instances of Function');\n }\n\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events || !this._events[type]) return this;\n\n var list = this._events[type];\n\n if (isArray(list)) {\n var i = indexOf(list, listener);\n if (i < 0) return this;\n list.splice(i, 1);\n if (list.length == 0)\n delete this._events[type];\n } else if (this._events[type] === listener) {\n delete this._events[type];\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n if (arguments.length === 0) {\n this._events = {};\n return this;\n }\n\n // does not use listeners(), so no side effect of creating _events[type]\n if (type && this._events && this._events[type]) this._events[type] = null;\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n if (!this._events) this._events = {};\n if (!this._events[type]) this._events[type] = [];\n if (!isArray(this._events[type])) {\n this._events[type] = [this._events[type]];\n }\n return this._events[type];\n};\n","'use strict';\n\nmodule.exports = {\n addTimeout: function(name, delay, callback, context) {\n this._timeouts = this._timeouts || new Map();\n if (this._timeouts.has(name)) return;\n var self = this;\n this._timeouts.set(name, global.setTimeout(function() {\n delete self._timeouts[name];\n callback.call(context);\n }, 1000 * delay));\n },\n\n removeTimeout: function(name) {\n this._timeouts = this._timeouts || new Map();\n var timeout = this._timeouts.get(name);\n if (!timeout) return;\n global.clearTimeout(timeout);\n this._timeouts.delete(name);\n },\n\n removeAllTimeouts: function() {\n this._timeouts = this._timeouts || new Map();\n for (let name of this._timeouts.keys()) this.removeTimeout(name);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Set = require('../util/set'),\n URI = require('../util/uri'),\n browser = require('../util/browser'),\n toJSON = require('../util/to_json'),\n ws = require('../util/websocket'),\n Deferrable = require('../mixins/deferrable'),\n Transport = require('./transport');\n\nvar WebSocket = Object.assign(Class(Transport, {\n UNCONNECTED: 1,\n CONNECTING: 2,\n CONNECTED: 3,\n\n batching: false,\n\n isUsable: function(callback, context) {\n this.callback(function() { callback.call(context, true) });\n this.errback(function() { callback.call(context, false) });\n this.connect();\n },\n\n request: function(messages) {\n this._pending = this._pending || new Set();\n for (let message of messages) this._pending.add(message);\n\n var self = this;\n\n var promise = new Promise(function(resolve, reject) {\n self.callback(function(socket) {\n if (!socket || socket.readyState !== 1) return;\n socket.send(toJSON(messages));\n resolve(socket);\n });\n\n self.connect();\n });\n\n return {\n abort: function() { promise.then(function(ws) { ws.close() }) }\n };\n },\n\n connect: function() {\n if (WebSocket._unloaded) return;\n\n this._state = this._state || this.UNCONNECTED;\n if (this._state !== this.UNCONNECTED) return;\n this._state = this.CONNECTING;\n\n var socket = this._createSocket();\n if (!socket) return this.setDeferredStatus('failed');\n\n var self = this;\n\n socket.onopen = function() {\n if (socket.headers) self._storeCookies(socket.headers['set-cookie']);\n self._socket = socket;\n self._state = self.CONNECTED;\n self._everConnected = true;\n self.setDeferredStatus('succeeded', socket);\n };\n\n var closed = false;\n socket.onclose = socket.onerror = function() {\n if (closed) return;\n closed = true;\n\n var wasConnected = (self._state === self.CONNECTED);\n socket.onopen = socket.onclose = socket.onerror = socket.onmessage = null;\n\n delete self._socket;\n self._state = self.UNCONNECTED;\n\n var pending = self._pending ? [...self._pending] : [];\n delete self._pending;\n\n if (wasConnected || self._everConnected) {\n self.setDeferredStatus('unknown');\n self._handleError(pending, wasConnected);\n } else {\n self.setDeferredStatus('failed');\n }\n };\n\n socket.onmessage = function(event) {\n var replies;\n try { replies = JSON.parse(event.data) } catch (error) {}\n\n if (!replies) return;\n\n replies = [].concat(replies);\n\n for (let reply of replies) {\n if (reply.successful === undefined) continue;\n self._pending.remove(reply);\n }\n self._receive(replies);\n };\n },\n\n close: function() {\n if (!this._socket) return;\n this._socket.close();\n },\n\n _createSocket: function() {\n var url = WebSocket.getSocketUrl(this.endpoint),\n headers = this._dispatcher.headers,\n extensions = this._dispatcher.wsExtensions,\n cookie = this._getCookies(),\n tls = this._dispatcher.tls,\n options = { extensions: extensions, headers: headers, proxy: this._proxy, tls: tls };\n\n if (cookie !== '') options.headers['Cookie'] = cookie;\n\n try {\n return ws.create(url, [], options);\n } catch (e) {\n // catch CSP error to allow transport to fallback to next connType\n }\n }\n\n}), {\n PROTOCOLS: {\n 'http:': 'ws:',\n 'https:': 'wss:'\n },\n\n create: function(dispatcher, endpoint) {\n var transports = dispatcher.transports,\n sockets = transports.websocket = transports.websocket || new Map();\n\n if (!sockets.has(endpoint.href)) sockets.set(endpoint.href, new this(dispatcher, endpoint));\n\n return sockets.get(endpoint.href);\n },\n\n getSocketUrl: function(endpoint) {\n endpoint = URI.clone(endpoint);\n endpoint.protocol = this.PROTOCOLS[endpoint.protocol];\n return URI.stringify(endpoint);\n },\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n this.create(dispatcher, endpoint).isUsable(callback, context);\n }\n});\n\nObject.assign(WebSocket.prototype, Deferrable);\n\nif (browser.Event && global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', function() {\n if (WebSocket._unloaded === undefined) {\n WebSocket._unloaded = true;\n }\n });\n}\n\nmodule.exports = WebSocket;\n","'use strict';\n\nvar WS = global.MozWebSocket || global.WebSocket;\n\nmodule.exports = {\n create: function(url, protocols, options) {\n if (typeof WS !== 'function') return null;\n return new WS(url);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n Deferrable = require('../mixins/deferrable'),\n Transport = require('./transport'),\n XHR = require('./xhr');\n\nvar EventSource = Object.assign(Class(Transport, {\n initialize: function(dispatcher, endpoint) {\n Transport.prototype.initialize.call(this, dispatcher, endpoint);\n if (!global.EventSource) return this.setDeferredStatus('failed');\n\n this._xhr = new XHR(dispatcher, endpoint);\n\n endpoint = URI.clone(endpoint);\n endpoint.pathname += '/' + dispatcher.clientId;\n\n var socket = new global.EventSource(URI.stringify(endpoint)),\n self = this;\n\n socket.onopen = function() {\n self._everConnected = true;\n self.setDeferredStatus('succeeded');\n };\n\n socket.onerror = function() {\n if (self._everConnected) {\n self._handleError([]);\n } else {\n self.setDeferredStatus('failed');\n socket.close();\n }\n };\n\n socket.onmessage = function(event) {\n var replies;\n try { replies = JSON.parse(event.data) } catch (error) {}\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError([]);\n }\n };\n\n this._socket = socket;\n },\n\n close: function() {\n if (!this._socket) return;\n this._socket.onopen = this._socket.onerror = this._socket.onmessage = null;\n this._socket.close();\n delete this._socket;\n },\n\n isUsable: function(callback, context) {\n this.callback(function() { callback.call(context, true) });\n this.errback(function() { callback.call(context, false) });\n },\n\n encode: function(messages) {\n return this._xhr.encode(messages);\n },\n\n request: function(messages) {\n return this._xhr.request(messages);\n }\n\n}), {\n isUsable: function(dispatcher, endpoint, callback, context) {\n var id = dispatcher.clientId;\n if (!id) return callback.call(context, false);\n\n XHR.isUsable(dispatcher, endpoint, function(usable) {\n if (!usable) return callback.call(context, false);\n this.create(dispatcher, endpoint).isUsable(callback, context);\n }, this);\n },\n\n create: function(dispatcher, endpoint) {\n var transports = dispatcher.transports,\n sockets = transports.eventsource = transports.eventsource || new Map(),\n id = dispatcher.clientId;\n\n var url = URI.clone(endpoint);\n url.pathname += '/' + (id || '');\n url = URI.stringify(url);\n\n if (!sockets.has(url)) sockets.set(url, new this(dispatcher, endpoint));\n return sockets.get(url);\n }\n});\n\nObject.assign(EventSource.prototype, Deferrable);\n\nmodule.exports = EventSource;\n","'use strict';\n\nvar Class = require('../util/class'),\n Set = require('../util/set'),\n URI = require('../util/uri'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar CORS = Object.assign(Class(Transport, {\n encode: function(messages) {\n return 'message=' + encodeURIComponent(toJSON(messages));\n },\n\n request: function(messages) {\n var xhrClass = global.XDomainRequest ? XDomainRequest : XMLHttpRequest,\n xhr = new xhrClass(),\n id = ++CORS._id,\n headers = this._dispatcher.headers,\n self = this;\n\n xhr.open('POST', this.endpoint.href, true);\n xhr.withCredentials = true;\n\n if (xhr.setRequestHeader) {\n xhr.setRequestHeader('Pragma', 'no-cache');\n for (let [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n }\n\n var cleanUp = function() {\n if (!xhr) return false;\n CORS._pending.remove(id);\n xhr.onload = xhr.onerror = xhr.ontimeout = xhr.onprogress = null;\n xhr = null;\n };\n\n xhr.onload = function() {\n var replies;\n try { replies = JSON.parse(xhr.responseText) } catch (error) {}\n\n cleanUp();\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError(messages);\n }\n };\n\n xhr.onerror = xhr.ontimeout = function() {\n cleanUp();\n self._handleError(messages);\n };\n\n xhr.onprogress = function() {};\n\n if (xhrClass === global.XDomainRequest) {\n CORS._pending.add({ id: id, xhr: xhr });\n }\n\n xhr.send(this.encode(messages));\n return xhr;\n }\n}), {\n _id: 0,\n _pending: new Set(),\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n if (URI.isSameOrigin(endpoint)) {\n return callback.call(context, false);\n }\n if (global.XDomainRequest) {\n return callback.call(context, endpoint.protocol === location.protocol);\n }\n if (global.XMLHttpRequest) {\n var xhr = new XMLHttpRequest();\n return callback.call(context, xhr.withCredentials !== undefined);\n }\n return callback.call(context, false);\n }\n});\n\nmodule.exports = CORS;\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar JSONP = Object.assign(Class(Transport, {\n encode: function(messages) {\n var url = URI.clone(this.endpoint);\n url.searchParams.set('message', toJSON(messages));\n url.searchParams.set('jsonp', '__jsonp' + JSONP._cbCount + '__');\n return URI.stringify(url);\n },\n\n request: function(messages) {\n var head = document.getElementsByTagName('head')[0],\n script = document.createElement('script'),\n callbackName = JSONP.getCallbackName(),\n endpoint = URI.clone(this.endpoint),\n self = this;\n\n endpoint.searchParams.set('message', toJSON(messages));\n endpoint.searchParams.set('jsonp', callbackName);\n\n var cleanup = function() {\n if (!global[callbackName]) return false;\n global[callbackName] = undefined;\n try { delete global[callbackName] } catch (error) {}\n script.parentNode.removeChild(script);\n };\n\n global[callbackName] = function(replies) {\n cleanup();\n self._receive(replies);\n };\n\n script.type = 'text/javascript';\n script.src = URI.stringify(endpoint);\n head.appendChild(script);\n\n script.onerror = function() {\n cleanup();\n self._handleError(messages);\n };\n\n return { abort: cleanup };\n }\n}), {\n _cbCount: 0,\n\n getCallbackName: function() {\n this._cbCount += 1;\n return '__jsonp' + this._cbCount + '__';\n },\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n callback.call(context, true);\n }\n});\n\nmodule.exports = JSONP;\n","'use strict';\n\nvar Class = require('../util/class'),\n Grammar = require('./grammar');\n\nvar Error = Class({\n initialize: function(code, params, message) {\n this.code = code;\n this.params = Array.prototype.slice.call(params);\n this.message = message;\n },\n\n toString: function() {\n return this.code + ':' +\n this.params.join(',') + ':' +\n this.message;\n }\n});\n\nError.parse = function(message) {\n message = message || '';\n if (!Grammar.ERROR.test(message)) return new Error(null, [], message);\n\n var parts = message.split(':'),\n code = parseInt(parts[0]),\n params = parts[1].split(','),\n message = parts[2];\n\n return new Error(code, params, message);\n};\n\n// http://code.google.com/p/cometd/wiki/BayeuxCodes\nvar errors = {\n versionMismatch: [300, 'Version mismatch'],\n conntypeMismatch: [301, 'Connection types not supported'],\n extMismatch: [302, 'Extension mismatch'],\n badRequest: [400, 'Bad request'],\n clientUnknown: [401, 'Unknown client'],\n parameterMissing: [402, 'Missing required parameter'],\n channelForbidden: [403, 'Forbidden channel'],\n channelUnknown: [404, 'Unknown channel'],\n channelInvalid: [405, 'Invalid channel'],\n extUnknown: [406, 'Unknown extension'],\n publishFailed: [407, 'Failed to publish'],\n serverError: [500, 'Internal server error']\n};\n\nfor (let [name, [status, msg]] of Object.entries(errors)) {\n Error[name] = function() {\n return new Error(status, arguments, msg).toString();\n };\n}\n\nmodule.exports = Error;\n","'use strict';\n\nvar Logging = require('../mixins/logging');\n\nvar Extensible = {\n addExtension: function(extension) {\n this._extensions = this._extensions || [];\n this._extensions.push(extension);\n if (extension.added) extension.added(this);\n },\n\n removeExtension: function(extension) {\n if (!this._extensions) return;\n var i = this._extensions.length;\n while (i--) {\n if (this._extensions[i] !== extension) continue;\n this._extensions.splice(i,1);\n if (extension.removed) extension.removed(this);\n }\n },\n\n pipeThroughExtensions: function(stage, message, request, callback, context) {\n this.debug('Passing through ? extensions: ?', stage, message);\n\n if (!this._extensions) return callback.call(context, message);\n var extensions = this._extensions.slice();\n\n var pipe = function(message) {\n if (!message) return callback.call(context, message);\n\n var extension = extensions.shift();\n if (!extension) return callback.call(context, message);\n\n var fn = extension[stage];\n if (!fn) return pipe(message);\n\n if (fn.length >= 3) extension[stage](message, request, pipe);\n else extension[stage](message, pipe);\n };\n pipe(message);\n }\n};\n\nObject.assign(Extensible, Logging);\n\nmodule.exports = Extensible;\n","'use strict';\n\nvar Class = require('../util/class'),\n Deferrable = require('../mixins/deferrable');\n\nmodule.exports = Class(Deferrable);\n","'use strict';\n\nvar constants = require('./util/constants'),\n Logging = require('./mixins/logging');\n\nvar Faye = {\n VERSION: constants.VERSION,\n\n Client: require('./protocol/client'),\n Scheduler: require('./protocol/scheduler')\n};\n\nLogging.wrapper = Faye;\n\nmodule.exports = Faye;\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack://Faye/webpack/bootstrap","webpack://Faye/./src/util/class.js","webpack://Faye/(webpack)/buildin/global.js","webpack://Faye/./src/util/uri.js","webpack://Faye/./src/transport/transport.js","webpack://Faye/./src/util/to_json.js","webpack://Faye/./src/mixins/deferrable.js","webpack://Faye/./src/mixins/logging.js","webpack://Faye/./src/mixins/publisher.js","webpack://Faye/./src/util/array.js","webpack://Faye/./src/util/browser/event.js","webpack://Faye/./src/protocol/channel.js","webpack://Faye/./src/protocol/grammar.js","webpack://Faye/./src/protocol/dispatcher.js","webpack://Faye/./src/util/cookies/browser_cookies.js","webpack://Faye/./src/transport/browser_transports.js","webpack://Faye/./src/util/set.js","webpack://Faye/./src/transport/xhr.js","webpack://Faye/./src/protocol/scheduler.js","webpack://Faye/./src/util/constants.js","webpack://Faye/./src/protocol/subscription.js","webpack://Faye/./src/protocol/client.js","webpack://Faye/./src/util/validate_options.js","webpack://Faye/./src/util/event_emitter.js","webpack://Faye/./src/mixins/timeouts.js","webpack://Faye/./src/transport/web_socket.js","webpack://Faye/./src/util/websocket/browser_websocket.js","webpack://Faye/./src/transport/event_source.js","webpack://Faye/./src/transport/cors.js","webpack://Faye/./src/transport/jsonp.js","webpack://Faye/./src/protocol/error.js","webpack://Faye/./src/protocol/extensible.js","webpack://Faye/./src/protocol/publication.js","webpack://Faye/./src/faye_browser.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","parent","methods","klass","this","initialize","apply","arguments","bridge","assign","g","Function","e","window","isURI","uri","protocol","host","pathname","isSameOrigin","location","hostname","port","parse","url","base","URL","href","stringify","clone","Class","Cookie","array","Logging","Timeouts","Channel","Transport","className","DEFAULT_PORTS","MAX_DELAY","batching","dispatcher","endpoint","_dispatcher","_outbox","_proxy","proxy","origin","_findProxy","close","encode","messages","sendMessage","message","debug","clientId","push","_flushLargeBatch","channel","HANDSHAKE","_publish","CONNECT","_connectMessage","Promise","resolve","request","_makePromise","self","_requestPromise","_resolvePromise","delay","addTimeout","_flush","removeTimeout","length","advice","timeout","maxRequestSize","last","pop","_receive","replies","concat","connectionType","reply","handleResponse","_handleError","immediate","handleError","_getCookies","cookies","map","getCookiesSync","cookie","cookieString","join","_storeCookies","setCookie","cookieStr","setCookieSync","process","keys","replace","toLowerCase","upcase","toUpperCase","env","REQUEST_METHOD","filter","k","test","undefined","console","warn","allowed","disabled","callback","context","asyncEach","_transports","pair","resume","connType","connEndpoint","endpointFor","indexOf","isUsable","transport","Error","register","type","getConnectionTypes","disable","feature","_unloaded","JSON","Array","then","errback","noop","_promise","reject","_resolve","_reject","reason","seconds","_timer","global","setTimeout","setDeferredStatus","status","clearTimeout","toJSON","LOG_LEVELS","fatal","error","info","writeLog","messageArgs","level","logger","wrapper","args","slice","banner","shift","EventEmitter","Publisher","countListeners","eventType","listeners","listener","handler","_listeners","on","unbind","tuple","splice","removeListener","trigger","emit","commonElement","lista","listb","list","needle","result","entries","iterator","calls","looping","iterate","loop","Event","_registry","element","eventName","wrapped","addEventListener","attachEvent","_element","_type","_callback","_context","_handler","detach","removeEventListener","detachEvent","Grammar","id","isUnused","SUBSCRIBE","UNSUBSCRIBE","DISCONNECT","META","SERVICE","expand","segments","channels","copy","unparse","isValid","CHANNEL_NAME","CHANNEL_PATTERN","split","isMeta","isService","isSubscribable","Set","_channels","Map","getKeys","remove","delete","hasSubscription","subscribe","names","subscription","has","set","unsubscribe","distributeMessage","chan","ERROR","VERSION","URI","Scheduler","Dispatcher","MAX_REQUEST_SIZE","DEFAULT_RETRY","UP","DOWN","client","options","_client","_alternates","endpoints","CookieJar","_disabled","_envelopes","headers","retry","_scheduler","scheduler","_state","transports","wsExtensions","exts","websocketExtensions","ext","addWebsocketExtension","tls","ca","alt","extension","setHeader","_transport","selectTransport","transportTypes","attempts","deadline","Date","getTime","envelope","interval","_sendEnvelope","timer","isDeliverable","abort","getTimeout","send","successful","succeed","req","fail","getInterval","_index","add","item","values","isEmpty","size","member","removed","browser","XHR","xhr","XMLHttpRequest","ActiveXObject","open","setRequestHeader","onbeforeunload","onreadystatechange","readyState","text","responseText","usable","navigator","product","made","now","BAYEUX_VERSION","ID_LENGTH","JSONP_CALLBACK","CONNECTION_TYPES","MANDATORY_CONNECTION_TYPES","Deferrable","Subscription","_cancelled","withChannel","_withChannel","data","cancel","constants","validateOptions","Extensible","Publication","Client","UNCONNECTED","CONNECTING","CONNECTED","DISCONNECTED","RETRY","NONE","CONNECTION_TIMEOUT","DEFAULT_ENDPOINT","INTERVAL","_messageId","_responseCallbacks","_advice","reconnect","_receiveMessage","disconnect","handshake","_sendMessage","version","supportedConnectionTypes","response","connect","_connectRequest","_cycleConnection","promise","force","publish","publication","_generateMessageId","pipeThroughExtensions","Math","pow","toString","_handleAdvice","_deliverMessage","validKeys","isArray","xs","_events","addListener","once","x","removeAllListeners","_timeouts","removeAllTimeouts","ws","WebSocket","_pending","socket","_createSocket","onopen","_socket","_everConnected","closed","onclose","onerror","wasConnected","onmessage","pending","event","getSocketUrl","extensions","PROTOCOLS","sockets","websocket","WS","MozWebSocket","protocols","EventSource","_xhr","eventsource","CORS","encodeURIComponent","xhrClass","XDomainRequest","_id","withCredentials","cleanUp","onload","ontimeout","onprogress","JSONP","searchParams","_cbCount","head","document","getElementsByTagName","script","createElement","callbackName","getCallbackName","cleanup","parentNode","removeChild","src","appendChild","code","params","parts","parseInt","msg","versionMismatch","conntypeMismatch","extMismatch","badRequest","clientUnknown","parameterMissing","channelForbidden","channelUnknown","channelInvalid","extUnknown","publishFailed","serverError","addExtension","_extensions","added","removeExtension","stage","pipe","fn","Faye"],"mappings":"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","file":"build/client/faye-browser-min.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 = 33);\n","'use strict';\n\nmodule.exports = function(parent, methods) {\n if (typeof parent !== 'function') {\n methods = parent;\n parent = Object;\n }\n\n var klass = function() {\n if (!this.initialize) return this;\n return this.initialize.apply(this, arguments) || this;\n };\n\n var bridge = function() {};\n bridge.prototype = parent.prototype;\n\n klass.prototype = new bridge();\n Object.assign(klass.prototype, methods);\n\n return klass;\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","'use strict';\n\nmodule.exports = {\n isURI: function(uri) {\n return uri && uri.protocol && uri.host && uri.pathname;\n },\n\n isSameOrigin: function(uri) {\n return uri.protocol === location.protocol &&\n uri.hostname === location.hostname &&\n uri.port === location.port;\n },\n\n parse: function(url, base) {\n if (typeof url !== 'string') return url;\n\n if (typeof location === 'undefined') {\n return new URL(url, base);\n } else {\n return new URL(url, base || location.href);\n }\n },\n\n stringify: function(uri) {\n return (typeof uri === 'string') ? uri : uri.href;\n },\n\n clone: function(url) {\n return this.parse(url.href);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Cookie = require('../util/cookies').Cookie,\n array = require('../util/array'),\n Logging = require('../mixins/logging'),\n Timeouts = require('../mixins/timeouts'),\n Channel = require('../protocol/channel');\n\nvar Transport = Object.assign(Class({ className: 'Transport',\n DEFAULT_PORTS: { 'http:': 80, 'https:': 443, 'ws:': 80, 'wss:': 443 },\n MAX_DELAY: 0,\n\n batching: true,\n\n initialize: function(dispatcher, endpoint) {\n this._dispatcher = dispatcher;\n this.endpoint = endpoint;\n this._outbox = [];\n this._proxy = Object.assign({}, this._dispatcher.proxy);\n\n if (!this._proxy.origin) {\n this._proxy.origin = this._findProxy();\n }\n },\n\n close: function() {},\n\n encode: function(messages) {\n return '';\n },\n\n sendMessage: function(message) {\n this.debug('Client ? sending message to ?: ?',\n this._dispatcher.clientId, this.endpoint.href, message);\n\n if (!this.batching) return Promise.resolve(this.request([message]));\n\n this._outbox.push(message);\n this._flushLargeBatch();\n\n if (message.channel === Channel.HANDSHAKE) {\n return this._publish(0.01);\n }\n if (message.channel === Channel.CONNECT) {\n this._connectMessage = message;\n }\n\n return this._publish(this.MAX_DELAY);\n },\n\n _makePromise: function() {\n var self = this;\n\n this._requestPromise = this._requestPromise || new Promise(function(resolve) {\n self._resolvePromise = resolve;\n });\n },\n\n _publish: function(delay) {\n this._makePromise();\n\n this.addTimeout('publish', delay, function() {\n this._flush();\n delete this._requestPromise;\n }, this);\n\n return this._requestPromise;\n },\n\n _flush: function() {\n this.removeTimeout('publish');\n\n if (this._outbox.length > 1 && this._connectMessage) {\n this._connectMessage.advice = { timeout: 0 };\n }\n\n this._resolvePromise(this.request(this._outbox));\n\n this._connectMessage = null;\n this._outbox = [];\n },\n\n _flushLargeBatch: function() {\n var string = this.encode(this._outbox);\n if (string.length < this._dispatcher.maxRequestSize) return;\n var last = this._outbox.pop();\n\n this._makePromise();\n this._flush();\n\n if (last) this._outbox.push(last);\n },\n\n _receive: function(replies) {\n if (!replies) return;\n replies = [].concat(replies);\n\n this.debug('Client ? received from ? via ?: ?',\n this._dispatcher.clientId, this.endpoint.href, this.connectionType, replies);\n\n for (let reply of replies) {\n this._dispatcher.handleResponse(reply);\n }\n },\n\n _handleError: function(messages, immediate) {\n messages = [].concat(messages);\n\n this.debug('Client ? failed to send to ? via ?: ?',\n this._dispatcher.clientId, this.endpoint.href, this.connectionType, messages);\n\n for (let message of messages) {\n this._dispatcher.handleError(message);\n }\n },\n\n _getCookies: function() {\n var cookies = this._dispatcher.cookies,\n url = this.endpoint.href;\n\n if (!cookies) return '';\n\n return array.map(cookies.getCookiesSync(url), function(cookie) {\n return cookie.cookieString();\n }).join('; ');\n },\n\n _storeCookies: function(setCookie) {\n var cookies = this._dispatcher.cookies,\n url = this.endpoint.href,\n cookie;\n\n if (!setCookie || !cookies) return;\n setCookie = [].concat(setCookie);\n\n for (let cookieStr of setCookie) {\n cookie = Cookie.parse(cookieStr);\n cookies.setCookieSync(cookie, url);\n }\n },\n\n _findProxy: function() {\n if (typeof process === 'undefined') return undefined;\n\n var protocol = this.endpoint.protocol;\n if (!protocol) return undefined;\n\n var name = protocol.replace(/:$/, '').toLowerCase() + '_proxy',\n upcase = name.toUpperCase(),\n env = process.env,\n keys, proxy;\n\n if (name === 'http_proxy' && env.REQUEST_METHOD) {\n keys = Object.keys(env).filter(function(k) { return /^http_proxy$/i.test(k) });\n if (keys.length === 1) {\n if (keys[0] === name && env[upcase] === undefined) {\n proxy = env[name];\n }\n } else if (keys.length > 1) {\n proxy = env[name];\n }\n proxy = proxy || env['CGI_' + upcase];\n } else {\n proxy = env[name] || env[upcase];\n if (proxy && !env[name]) {\n console.warn('The environment variable ' + upcase +\n ' is discouraged. Use ' + name + '.');\n }\n }\n return proxy;\n }\n\n}), {\n get: function(dispatcher, allowed, disabled, callback, context) {\n var endpoint = dispatcher.endpoint;\n\n array.asyncEach(this._transports, function(pair, resume) {\n var connType = pair[0], klass = pair[1],\n connEndpoint = dispatcher.endpointFor(connType);\n\n if (array.indexOf(disabled, connType) >= 0) {\n return resume();\n }\n if (array.indexOf(allowed, connType) < 0) {\n klass.isUsable(dispatcher, connEndpoint, function() {});\n return resume();\n }\n\n klass.isUsable(dispatcher, connEndpoint, function(isUsable) {\n if (!isUsable) return resume();\n var transport = klass.hasOwnProperty('create') ? klass.create(dispatcher, connEndpoint) : new klass(dispatcher, connEndpoint);\n callback.call(context, transport);\n });\n }, function() {\n throw new Error('Could not find a usable connection type for ' + endpoint.href);\n });\n },\n\n register: function(type, klass) {\n this._transports.push([type, klass]);\n klass.prototype.connectionType = type;\n },\n\n getConnectionTypes: function() {\n return array.map(this._transports, function(t) { return t[0] });\n },\n\n disable: function(feature) {\n if (feature !== 'autodisconnect') return;\n\n for (let transport of this._transports) {\n transport[1]._unloaded = false;\n }\n },\n\n _transports: []\n});\n\nObject.assign(Transport.prototype, Logging);\nObject.assign(Transport.prototype, Timeouts);\n\nmodule.exports = Transport;\n","'use strict';\n\n// http://assanka.net/content/tech/2009/09/02/json2-js-vs-prototype/\n\nmodule.exports = function(object) {\n return JSON.stringify(object, function(key, value) {\n return (this[key] instanceof Array) ? this[key] : value;\n });\n};\n","'use strict';\n\nmodule.exports = {\n then: function(callback, errback) {\n var self = this;\n var noop = function() {};\n\n if (!this._promise) {\n this._promise = new Promise(function(resolve, reject) {\n self._resolve = resolve;\n self._reject = reject;\n });\n }\n\n return this._promise.then(\n callback || noop,\n errback || noop\n );\n },\n\n callback: function(callback, context) {\n if (!callback) return;\n this.then(function(value) { callback.call(context, value) });\n },\n\n errback: function(callback, context) {\n if (!callback) return;\n this.then(null, function(reason) { callback.call(context, reason) });\n },\n\n timeout: function(seconds, message) {\n this.then();\n var self = this;\n this._timer = global.setTimeout(function() {\n self._reject(message);\n }, seconds * 1000);\n },\n\n setDeferredStatus: function(status, value) {\n if (this._timer) global.clearTimeout(this._timer);\n\n this.then();\n\n if (status === 'succeeded') {\n this._resolve(value);\n } else if (status === 'failed') {\n this._reject(value);\n } else {\n delete this._promise;\n }\n }\n};\n","'use strict';\n\nvar toJSON = require('../util/to_json');\n\nvar Logging = {\n LOG_LEVELS: {\n fatal: 4,\n error: 3,\n warn: 2,\n info: 1,\n debug: 0\n },\n\n writeLog: function(messageArgs, level) {\n var logger = Logging.logger || (Logging.wrapper || Logging).logger;\n if (!logger) return;\n\n var args = Array.prototype.slice.apply(messageArgs),\n banner = '[Faye',\n klass = this.className,\n\n message = args.shift().replace(/\\?/g, function() {\n try {\n return toJSON(args.shift());\n } catch (error) {\n return '[Object]';\n }\n });\n\n if (klass) banner += '.' + klass;\n banner += '] ';\n\n if (typeof logger[level] === 'function') {\n logger[level](banner + message);\n } else if (typeof logger === 'function') {\n logger(banner + message);\n }\n }\n};\n\nfor (let level of Object.keys(Logging.LOG_LEVELS)) {\n Logging[level] = function() {\n this.writeLog(arguments, level);\n };\n}\n\nmodule.exports = Logging;\n","'use strict';\n\nvar EventEmitter = require('../util/event_emitter');\n\nvar Publisher = {\n countListeners: function(eventType) {\n return this.listeners(eventType).length;\n },\n\n bind: function(eventType, listener, context) {\n var slice = Array.prototype.slice,\n handler = function() { listener.apply(context, slice.call(arguments)) };\n\n this._listeners = this._listeners || [];\n this._listeners.push([eventType, listener, context, handler]);\n return this.on(eventType, handler);\n },\n\n unbind: function(eventType, listener, context) {\n this._listeners = this._listeners || [];\n var n = this._listeners.length, tuple;\n\n while (n--) {\n tuple = this._listeners[n];\n if (tuple[0] !== eventType) continue;\n if (listener && (tuple[1] !== listener || tuple[2] !== context)) continue;\n this._listeners.splice(n, 1);\n this.removeListener(eventType, tuple[3]);\n }\n }\n};\n\nObject.assign(Publisher, EventEmitter.prototype);\nPublisher.trigger = Publisher.emit;\n\nmodule.exports = Publisher;\n","'use strict';\n\nmodule.exports = {\n commonElement: function(lista, listb) {\n for (var i = 0, n = lista.length; i < n; i++) {\n if (this.indexOf(listb, lista[i]) !== -1) {\n return lista[i];\n }\n }\n return null;\n },\n\n indexOf: function(list, needle) {\n if (list.indexOf) return list.indexOf(needle);\n\n for (var i = 0, n = list.length; i < n; i++) {\n if (list[i] === needle) return i;\n }\n return -1;\n },\n\n map: function(object, callback, context) {\n if (object.map) return object.map(callback, context);\n var result = [];\n\n if (object instanceof Array) {\n for (var i = 0, n = object.length; i < n; i++) {\n result.push(callback.call(context || null, object[i], i));\n }\n } else {\n for (let [key, value] of Object.entries(object)) {\n result.push(callback.call(context || null, key, value));\n }\n }\n return result;\n },\n\n filter: function(array, callback, context) {\n if (array.filter) return array.filter(callback, context);\n var result = [];\n for (var i = 0, n = array.length; i < n; i++) {\n if (callback.call(context || null, array[i], i)) {\n result.push(array[i]);\n }\n }\n return result;\n },\n\n asyncEach: function(list, iterator, callback, context) {\n var n = list.length,\n i = -1,\n calls = 0,\n looping = false;\n\n var iterate = function() {\n calls -= 1;\n i += 1;\n if (i === n) return callback && callback.call(context);\n iterator(list[i], resume);\n };\n\n var loop = function() {\n if (looping) return;\n looping = true;\n while (calls > 0) iterate();\n looping = false;\n };\n\n var resume = function() {\n calls += 1;\n loop();\n };\n resume();\n }\n};\n","'use strict';\n\nvar Event = {\n _registry: [],\n\n on: function(element, eventName, callback, context) {\n var wrapped = function() { callback.call(context) };\n\n if (element.addEventListener) {\n element.addEventListener(eventName, wrapped, false);\n } else {\n element.attachEvent('on' + eventName, wrapped);\n }\n\n this._registry.push({\n _element: element,\n _type: eventName,\n _callback: callback,\n _context: context,\n _handler: wrapped\n });\n },\n\n detach: function(element, eventName, callback, context) {\n var i = this._registry.length, register;\n while (i--) {\n register = this._registry[i];\n\n if ((element && element !== register._element) ||\n (eventName && eventName !== register._type) ||\n (callback && callback !== register._callback) ||\n (context && context !== register._context))\n continue;\n\n if (register._element.removeEventListener) {\n register._element.removeEventListener(register._type, register._handler, false);\n } else {\n register._element.detachEvent('on' + register._type, register._handler);\n }\n\n this._registry.splice(i,1);\n register = null;\n }\n }\n};\n\nmodule.exports = {\n Event: Event\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Publisher = require('../mixins/publisher'),\n Grammar = require('./grammar');\n\nvar Channel = Class({\n initialize: function(name) {\n this.id = this.name = name;\n },\n\n push: function(message) {\n this.trigger('message', message);\n },\n\n isUnused: function() {\n return this.countListeners('message') === 0;\n }\n});\n\nObject.assign(Channel.prototype, Publisher);\n\nObject.assign(Channel, {\n HANDSHAKE: '/meta/handshake',\n CONNECT: '/meta/connect',\n SUBSCRIBE: '/meta/subscribe',\n UNSUBSCRIBE: '/meta/unsubscribe',\n DISCONNECT: '/meta/disconnect',\n\n META: 'meta',\n SERVICE: 'service',\n\n expand: function(name) {\n var segments = this.parse(name),\n channels = ['/**', name];\n\n var copy = segments.slice();\n copy[copy.length - 1] = '*';\n channels.push(this.unparse(copy));\n\n for (var i = 1, n = segments.length; i < n; i++) {\n copy = segments.slice(0, i);\n copy.push('**');\n channels.push(this.unparse(copy));\n }\n\n return channels;\n },\n\n isValid: function(name) {\n return Grammar.CHANNEL_NAME.test(name) ||\n Grammar.CHANNEL_PATTERN.test(name);\n },\n\n parse: function(name) {\n if (!this.isValid(name)) return null;\n return name.split('/').slice(1);\n },\n\n unparse: function(segments) {\n return '/' + segments.join('/');\n },\n\n isMeta: function(name) {\n var segments = this.parse(name);\n return segments ? (segments[0] === this.META) : null;\n },\n\n isService: function(name) {\n var segments = this.parse(name);\n return segments ? (segments[0] === this.SERVICE) : null;\n },\n\n isSubscribable: function(name) {\n if (!this.isValid(name)) return null;\n return !this.isMeta(name) && !this.isService(name);\n },\n\n Set: Class({\n initialize: function() {\n this._channels = new Map();\n },\n\n getKeys: function() {\n return [...this._channels.keys()];\n },\n\n remove: function(name) {\n this._channels.delete(name);\n },\n\n hasSubscription: function(name) {\n return this._channels.hasOwnProperty(name);\n },\n\n subscribe: function(names, subscription) {\n for (let name of names) {\n if (!this._channels.has(name)) this._channels.set(name, new Channel(name));\n this._channels.get(name).bind('message', subscription);\n }\n },\n\n unsubscribe: function(name, subscription) {\n var channel = this._channels.get(name);\n if (!channel) return false;\n channel.unbind('message', subscription);\n\n if (channel.isUnused()) {\n this.remove(name);\n return true;\n } else {\n return false;\n }\n },\n\n distributeMessage: function(message) {\n var channels = Channel.expand(message.channel);\n\n for (let chan of channels) {\n var channel = this._channels.get(chan);\n if (channel) channel.trigger('message', message);\n }\n }\n })\n});\n\nmodule.exports = Channel;\n","'use strict';\n\nmodule.exports = {\n CHANNEL_NAME: /^\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+(\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+)*$/,\n CHANNEL_PATTERN: /^(\\/(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)))+)*\\/\\*{1,2}$/,\n ERROR: /^([0-9][0-9][0-9]:(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*(,(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*)*:(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*|[0-9][0-9][0-9]::(((([a-z]|[A-Z])|[0-9])|(\\-|\\_|\\!|\\~|\\(|\\)|\\$|\\@)| |\\/|\\*|\\.))*)$/,\n VERSION: /^([0-9])+(\\.(([a-z]|[A-Z])|[0-9])(((([a-z]|[A-Z])|[0-9])|\\-|\\_))*)*$/\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n cookies = require('../util/cookies'),\n Logging = require('../mixins/logging'),\n Publisher = require('../mixins/publisher'),\n Transport = require('../transport'),\n Scheduler = require('./scheduler');\n\nvar Dispatcher = Class({ className: 'Dispatcher',\n MAX_REQUEST_SIZE: 2048,\n DEFAULT_RETRY: 5,\n\n UP: 1,\n DOWN: 2,\n\n initialize: function(client, endpoint, options) {\n this._client = client;\n this.endpoint = URI.parse(endpoint);\n this._alternates = options.endpoints || {};\n\n this.cookies = cookies.CookieJar && new cookies.CookieJar();\n this._disabled = [];\n this._envelopes = new Map();\n this.headers = {};\n this.retry = options.retry || this.DEFAULT_RETRY;\n this._scheduler = options.scheduler || Scheduler;\n this._state = 0;\n this.transports = {};\n this.wsExtensions = [];\n\n this.proxy = options.proxy || {};\n if (typeof this._proxy === 'string') this._proxy = { origin: this._proxy };\n\n var exts = options.websocketExtensions;\n if (exts) {\n exts = [].concat(exts);\n for (let ext of exts) this.addWebsocketExtension(ext);\n }\n\n this.tls = options.tls || {};\n this.tls.ca = this.tls.ca || options.ca;\n\n for (let [type, alt] of Object.entries(this._alternates)) {\n this._alternates[type] = URI.parse(alt);\n }\n\n this.maxRequestSize = this.MAX_REQUEST_SIZE;\n },\n\n endpointFor: function(connectionType) {\n return this._alternates[connectionType] || this.endpoint;\n },\n\n addWebsocketExtension: function(extension) {\n this.wsExtensions.push(extension);\n },\n\n disable: function(feature) {\n this._disabled.push(feature);\n Transport.disable(feature);\n },\n\n setHeader: function(name, value) {\n this.headers[name] = value;\n },\n\n close: function() {\n var transport = this._transport;\n delete this._transport;\n if (transport) transport.close();\n },\n\n getConnectionTypes: function() {\n return Transport.getConnectionTypes();\n },\n\n selectTransport: function(transportTypes) {\n Transport.get(this, transportTypes, this._disabled, function(transport) {\n this.debug('Selected ? transport for ?', transport.connectionType, transport.endpoint.href);\n\n if (transport === this._transport) return;\n if (this._transport) this._transport.close();\n\n this._transport = transport;\n this.connectionType = transport.connectionType;\n }, this);\n },\n\n sendMessage: function(message, timeout, options) {\n options = options || {};\n\n var id = message.id,\n attempts = options.attempts,\n deadline = options.deadline && new Date().getTime() + (options.deadline * 1000),\n envelope = this._envelopes.get(id),\n scheduler;\n\n if (!envelope) {\n scheduler = new this._scheduler(message, { timeout: timeout, interval: this.retry, attempts: attempts, deadline: deadline });\n envelope = { message: message, scheduler: scheduler };\n this._envelopes.set(id, envelope);\n }\n\n this._sendEnvelope(envelope);\n },\n\n _sendEnvelope: function(envelope) {\n if (!this._transport) return;\n if (envelope.request || envelope.timer) return;\n\n var message = envelope.message,\n scheduler = envelope.scheduler,\n self = this;\n\n if (!scheduler.isDeliverable()) {\n scheduler.abort();\n this._envelopes.delete(message.id);\n return;\n }\n\n envelope.timer = global.setTimeout(function() {\n self.handleError(message);\n }, scheduler.getTimeout() * 1000);\n\n scheduler.send();\n envelope.request = this._transport.sendMessage(message);\n },\n\n handleResponse: function(reply) {\n var envelope = this._envelopes.get(reply.id);\n\n if (reply.successful !== undefined && envelope) {\n envelope.scheduler.succeed();\n this._envelopes.delete(reply.id);\n global.clearTimeout(envelope.timer);\n }\n\n this.trigger('message', reply);\n\n if (this._state === this.UP) return;\n this._state = this.UP;\n this._client.trigger('transport:up');\n },\n\n handleError: function(message, immediate) {\n var envelope = this._envelopes.get(message.id),\n request = envelope && envelope.request,\n self = this;\n\n if (!request) return;\n\n request.then(function(req) {\n if (req && req.abort) req.abort();\n });\n\n var scheduler = envelope.scheduler;\n scheduler.fail();\n\n global.clearTimeout(envelope.timer);\n envelope.request = envelope.timer = null;\n\n if (immediate) {\n this._sendEnvelope(envelope);\n } else {\n envelope.timer = global.setTimeout(function() {\n envelope.timer = null;\n self._sendEnvelope(envelope);\n }, scheduler.getInterval() * 1000);\n }\n\n if (this._state === this.DOWN) return;\n this._state = this.DOWN;\n this._client.trigger('transport:down');\n }\n});\n\nDispatcher.create = function(client, endpoint, options) {\n return new Dispatcher(client, endpoint, options);\n};\n\nObject.assign(Dispatcher.prototype, Publisher);\nObject.assign(Dispatcher.prototype, Logging);\n\nmodule.exports = Dispatcher;\n","'use strict';\n\nmodule.exports = {};\n","'use strict';\n\nvar Transport = require('./transport');\n\nTransport.register('websocket', require('./web_socket'));\nTransport.register('eventsource', require('./event_source'));\nTransport.register('long-polling', require('./xhr'));\nTransport.register('cross-origin-long-polling', require('./cors'));\nTransport.register('callback-polling', require('./jsonp'));\n\nmodule.exports = Transport;\n","'use strict';\n\nvar Class = require('./class');\n\nmodule.exports = Class({\n initialize: function() {\n this._index = new Map();\n },\n\n add: function(item) {\n var key = (item.id !== undefined) ? item.id : item;\n if (this._index.has(key)) return false;\n this._index.set(key, item);\n return true;\n },\n\n [Symbol.iterator]: function() {\n return this._index.values();\n },\n\n isEmpty: function() {\n return this._index.size === 0;\n },\n\n member: function(item) {\n for (let value of this._index.values()) {\n if (value === item) return true;\n }\n return false;\n },\n\n remove: function(item) {\n var key = (item.id !== undefined) ? item.id : item;\n var removed = this._index.get(key);\n this._index.delete(key);\n return removed;\n }\n});\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n browser = require('../util/browser'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar XHR = Object.assign(Class(Transport, {\n encode: function(messages) {\n return toJSON(messages);\n },\n\n request: function(messages) {\n var href = this.endpoint.href,\n self = this,\n xhr;\n\n // Prefer XMLHttpRequest over ActiveXObject if they both exist\n if (global.XMLHttpRequest) {\n xhr = new XMLHttpRequest();\n } else if (global.ActiveXObject) {\n xhr = new ActiveXObject('Microsoft.XMLHTTP');\n } else {\n return this._handleError(messages);\n }\n\n xhr.open('POST', href, true);\n xhr.setRequestHeader('Content-Type', 'application/json');\n xhr.setRequestHeader('Pragma', 'no-cache');\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n\n var headers = this._dispatcher.headers;\n for (let [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n\n var abort = function() { xhr.abort() };\n if (global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', abort);\n }\n\n xhr.onreadystatechange = function() {\n if (!xhr || xhr.readyState !== 4) return;\n\n var replies = null,\n status = xhr.status,\n text = xhr.responseText,\n successful = (status >= 200 && status < 300) || status === 304 || status === 1223;\n\n if (global.onbeforeunload !== undefined) {\n browser.Event.detach(global, 'beforeunload', abort);\n }\n\n xhr.onreadystatechange = function() {};\n xhr = null;\n\n if (!successful) return self._handleError(messages);\n\n try {\n replies = JSON.parse(text);\n } catch (error) {}\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError(messages);\n }\n };\n\n xhr.send(this.encode(messages));\n return xhr;\n }\n}), {\n isUsable: function(dispatcher, endpoint, callback, context) {\n var usable = (navigator.product === 'ReactNative')\n || URI.isSameOrigin(endpoint);\n\n callback.call(context, usable);\n }\n});\n\nmodule.exports = XHR;\n","'use strict';\n\nvar Scheduler = function(message, options) {\n this.message = message;\n this.options = options;\n this.attempts = 0;\n};\n\nObject.assign(Scheduler.prototype, {\n getTimeout: function() {\n return this.options.timeout;\n },\n\n getInterval: function() {\n return this.options.interval;\n },\n\n isDeliverable: function() {\n var attempts = this.options.attempts,\n made = this.attempts,\n deadline = this.options.deadline,\n now = new Date().getTime();\n\n if (attempts !== undefined && made >= attempts) {\n return false;\n }\n if (deadline !== undefined && now > deadline) {\n return false;\n }\n\n return true;\n },\n\n send: function() {\n this.attempts += 1;\n },\n\n succeed: function() {},\n\n fail: function() {},\n\n abort: function() {}\n});\n\nmodule.exports = Scheduler;\n","module.exports = {\n VERSION: '1.4.3',\n\n BAYEUX_VERSION: '1.0',\n ID_LENGTH: 160,\n JSONP_CALLBACK: 'jsonpcallback',\n CONNECTION_TYPES: ['long-polling', 'cross-origin-long-polling', 'callback-polling', 'websocket', 'eventsource', 'in-process'],\n\n MANDATORY_CONNECTION_TYPES: ['long-polling', 'callback-polling', 'in-process']\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Deferrable = require('../mixins/deferrable');\n\nvar Subscription = Class({\n initialize: function(client, channels, callback, context) {\n this._client = client;\n this._channels = channels;\n this._callback = callback;\n this._context = context;\n this._cancelled = false;\n },\n\n withChannel: function(callback, context) {\n this._withChannel = [callback, context];\n return this;\n },\n\n apply: function(context, args) {\n var message = args[0];\n\n if (this._callback) {\n this._callback.call(this._context, message.data);\n }\n if (this._withChannel) {\n this._withChannel[0].call(this._withChannel[1], message.channel, message.data);\n }\n },\n\n cancel: function() {\n if (this._cancelled) return;\n this._client.unsubscribe(this._channels, this);\n this._cancelled = true;\n },\n\n unsubscribe: function() {\n this.cancel();\n }\n});\n\nObject.assign(Subscription.prototype, Deferrable);\n\nmodule.exports = Subscription;\n","'use strict';\n\nvar Class = require('../util/class'),\n array = require('../util/array'),\n browser = require('../util/browser'),\n constants = require('../util/constants'),\n validateOptions = require('../util/validate_options'),\n Deferrable = require('../mixins/deferrable'),\n Logging = require('../mixins/logging'),\n Publisher = require('../mixins/publisher'),\n Channel = require('./channel'),\n Dispatcher = require('./dispatcher'),\n Error = require('./error'),\n Extensible = require('./extensible'),\n Publication = require('./publication'),\n Subscription = require('./subscription');\n\nvar Client = Class({ className: 'Client',\n UNCONNECTED: 1,\n CONNECTING: 2,\n CONNECTED: 3,\n DISCONNECTED: 4,\n\n HANDSHAKE: 'handshake',\n RETRY: 'retry',\n NONE: 'none',\n\n CONNECTION_TIMEOUT: 60,\n\n DEFAULT_ENDPOINT: '/bayeux',\n INTERVAL: 0,\n\n initialize: function(endpoint, options) {\n this.info('New client created for ?', endpoint);\n options = options || {};\n\n validateOptions(options, ['interval', 'timeout', 'endpoints', 'proxy', 'retry', 'scheduler', 'websocketExtensions', 'tls', 'ca']);\n\n this._channels = new Channel.Set();\n this._dispatcher = Dispatcher.create(this, endpoint || this.DEFAULT_ENDPOINT, options);\n\n this._messageId = 0;\n this._state = this.UNCONNECTED;\n\n this._responseCallbacks = new Map();\n\n this._advice = {\n reconnect: this.RETRY,\n interval: 1000 * (options.interval || this.INTERVAL),\n timeout: 1000 * (options.timeout || this.CONNECTION_TIMEOUT)\n };\n this._dispatcher.timeout = this._advice.timeout / 1000;\n\n this._dispatcher.bind('message', this._receiveMessage, this);\n\n if (browser.Event && global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', function() {\n if (array.indexOf(this._dispatcher._disabled, 'autodisconnect') < 0) {\n this.disconnect();\n }\n }, this);\n }\n },\n\n addWebsocketExtension: function(extension) {\n return this._dispatcher.addWebsocketExtension(extension);\n },\n\n disable: function(feature) {\n return this._dispatcher.disable(feature);\n },\n\n setHeader: function(name, value) {\n return this._dispatcher.setHeader(name, value);\n },\n\n // Request\n // MUST include: * channel\n // * version\n // * supportedConnectionTypes\n // MAY include: * minimumVersion\n // * ext\n // * id\n //\n // Success Response Failed Response\n // MUST include: * channel MUST include: * channel\n // * version * successful\n // * supportedConnectionTypes * error\n // * clientId MAY include: * supportedConnectionTypes\n // * successful * advice\n // MAY include: * minimumVersion * version\n // * advice * minimumVersion\n // * ext * ext\n // * id * id\n // * authSuccessful\n handshake: function(callback, context) {\n if (this._advice.reconnect === this.NONE) return;\n if (this._state !== this.UNCONNECTED) return;\n\n this._state = this.CONNECTING;\n var self = this;\n\n this.info('Initiating handshake with ?', this._dispatcher.endpoint.href);\n this._dispatcher.selectTransport(constants.MANDATORY_CONNECTION_TYPES);\n\n this._sendMessage({\n channel: Channel.HANDSHAKE,\n version: constants.BAYEUX_VERSION,\n supportedConnectionTypes: this._dispatcher.getConnectionTypes()\n\n }, {}, function(response) {\n\n if (response.successful) {\n this._state = this.CONNECTED;\n this._dispatcher.clientId = response.clientId;\n\n this._dispatcher.selectTransport(response.supportedConnectionTypes);\n\n this.info('Handshake successful: ?', this._dispatcher.clientId);\n\n this.subscribe(this._channels.getKeys(), true);\n if (callback) Promise.resolve().then(function() { callback.call(context) });\n\n } else {\n this.info('Handshake unsuccessful');\n global.setTimeout(function() { self.handshake(callback, context) }, this._dispatcher.retry * 1000);\n this._state = this.UNCONNECTED;\n }\n }, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * connectionType * clientId\n // MAY include: * ext MAY include: * error\n // * id * advice\n // * ext\n // * id\n // * timestamp\n connect: function(callback, context) {\n if (this._advice.reconnect === this.NONE) return;\n if (this._state === this.DISCONNECTED) return;\n\n if (this._state === this.UNCONNECTED) {\n return this.handshake(function() { this.connect(callback, context) }, this);\n }\n\n this.callback(callback, context);\n if (this._state !== this.CONNECTED) return;\n\n this.info('Calling deferred actions for ?', this._dispatcher.clientId);\n this.setDeferredStatus('succeeded');\n this.setDeferredStatus('unknown');\n\n if (this._connectRequest) return;\n this._connectRequest = true;\n\n this.info('Initiating connection for ?', this._dispatcher.clientId);\n\n this._sendMessage({\n channel: Channel.CONNECT,\n clientId: this._dispatcher.clientId,\n connectionType: this._dispatcher.connectionType\n\n }, {}, this._cycleConnection, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // MAY include: * ext * clientId\n // * id MAY include: * error\n // * ext\n // * id\n disconnect: function() {\n if (this._state !== this.CONNECTED) return;\n this._state = this.DISCONNECTED;\n\n this.info('Disconnecting ?', this._dispatcher.clientId);\n var promise = new Publication();\n\n this._sendMessage({\n channel: Channel.DISCONNECT,\n clientId: this._dispatcher.clientId\n\n }, {}, function(response) {\n if (response.successful) {\n this._dispatcher.close();\n promise.setDeferredStatus('succeeded');\n } else {\n promise.setDeferredStatus('failed', Error.parse(response.error));\n }\n }, this);\n\n this.info('Clearing channel listeners for ?', this._dispatcher.clientId);\n this._channels = new Channel.Set();\n\n return promise;\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * subscription * clientId\n // MAY include: * ext * subscription\n // * id MAY include: * error\n // * advice\n // * ext\n // * id\n // * timestamp\n subscribe: function(channel, callback, context) {\n if (channel instanceof Array) {\n return array.map(channel, function(c) {\n return this.subscribe(c, callback, context);\n }, this);\n }\n\n var subscription = new Subscription(this, channel, callback, context),\n force = (callback === true),\n hasSubscribe = this._channels.hasSubscription(channel);\n\n if (hasSubscribe && !force) {\n this._channels.subscribe([channel], subscription);\n subscription.setDeferredStatus('succeeded');\n return subscription;\n }\n\n this.connect(function() {\n this.info('Client ? attempting to subscribe to ?', this._dispatcher.clientId, channel);\n if (!force) this._channels.subscribe([channel], subscription);\n\n this._sendMessage({\n channel: Channel.SUBSCRIBE,\n clientId: this._dispatcher.clientId,\n subscription: channel\n\n }, {}, function(response) {\n if (!response.successful) {\n subscription.setDeferredStatus('failed', Error.parse(response.error));\n return this._channels.unsubscribe(channel, subscription);\n }\n\n var channels = [].concat(response.subscription);\n this.info('Subscription acknowledged for ? to ?', this._dispatcher.clientId, channels);\n subscription.setDeferredStatus('succeeded');\n }, this);\n }, this);\n\n return subscription;\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * clientId * successful\n // * subscription * clientId\n // MAY include: * ext * subscription\n // * id MAY include: * error\n // * advice\n // * ext\n // * id\n // * timestamp\n unsubscribe: function(channel, subscription) {\n if (channel instanceof Array) {\n return array.map(channel, function(c) {\n return this.unsubscribe(c, subscription);\n }, this);\n }\n\n var dead = this._channels.unsubscribe(channel, subscription);\n if (!dead) return;\n\n this.connect(function() {\n this.info('Client ? attempting to unsubscribe from ?', this._dispatcher.clientId, channel);\n\n this._sendMessage({\n channel: Channel.UNSUBSCRIBE,\n clientId: this._dispatcher.clientId,\n subscription: channel\n\n }, {}, function(response) {\n if (!response.successful) return;\n\n var channels = [].concat(response.subscription);\n this.info('Unsubscription acknowledged for ? from ?', this._dispatcher.clientId, channels);\n }, this);\n }, this);\n },\n\n // Request Response\n // MUST include: * channel MUST include: * channel\n // * data * successful\n // MAY include: * clientId MAY include: * id\n // * id * error\n // * ext * ext\n publish: function(channel, data, options) {\n validateOptions(options || {}, ['attempts', 'deadline']);\n var publication = new Publication();\n\n this.connect(function() {\n this.info('Client ? queueing published message to ?: ?', this._dispatcher.clientId, channel, data);\n\n this._sendMessage({\n channel: channel,\n data: data,\n clientId: this._dispatcher.clientId\n\n }, options, function(response) {\n if (response.successful) {\n publication.setDeferredStatus('succeeded');\n } else {\n publication.setDeferredStatus('failed', Error.parse(response.error));\n }\n }, this);\n }, this);\n\n return publication;\n },\n\n _sendMessage: function(message, options, callback, context) {\n message.id = this._generateMessageId();\n\n var timeout = this._advice.timeout\n ? 1.2 * this._advice.timeout / 1000\n : 1.2 * this._dispatcher.retry;\n\n this.pipeThroughExtensions('outgoing', message, null, function(message) {\n if (!message) return;\n if (callback) this._responseCallbacks.set(message.id, [callback, context]);\n this._dispatcher.sendMessage(message, timeout, options || {});\n }, this);\n },\n\n _generateMessageId: function() {\n this._messageId += 1;\n if (this._messageId >= Math.pow(2,32)) this._messageId = 0;\n return this._messageId.toString(36);\n },\n\n _receiveMessage: function(message) {\n var id = message.id, callback;\n\n if (message.successful !== undefined) {\n callback = this._responseCallbacks.get(id);\n this._responseCallbacks.delete(id);\n }\n\n this.pipeThroughExtensions('incoming', message, null, function(message) {\n if (!message) return;\n if (message.advice) this._handleAdvice(message.advice);\n this._deliverMessage(message);\n if (callback) callback[0].call(callback[1], message);\n }, this);\n },\n\n _handleAdvice: function(advice) {\n Object.assign(this._advice, advice);\n this._dispatcher.timeout = this._advice.timeout / 1000;\n\n if (this._advice.reconnect === this.HANDSHAKE && this._state !== this.DISCONNECTED) {\n this._state = this.UNCONNECTED;\n this._dispatcher.clientId = null;\n this._cycleConnection();\n }\n },\n\n _deliverMessage: function(message) {\n if (!message.channel || message.data === undefined) return;\n this.info('Client ? calling listeners for ? with ?', this._dispatcher.clientId, message.channel, message.data);\n this._channels.distributeMessage(message);\n },\n\n _cycleConnection: function() {\n if (this._connectRequest) {\n this._connectRequest = null;\n this.info('Closed connection for ?', this._dispatcher.clientId);\n }\n var self = this;\n global.setTimeout(function() { self.connect() }, this._advice.interval);\n }\n});\n\nObject.assign(Client.prototype, Deferrable);\nObject.assign(Client.prototype, Publisher);\nObject.assign(Client.prototype, Logging);\nObject.assign(Client.prototype, Extensible);\n\nmodule.exports = Client;\n","'use strict';\n\nvar array = require('./array');\n\nmodule.exports = function(options, validKeys) {\n for (let key of Object.keys(options)) {\n if (array.indexOf(validKeys, key) < 0) {\n throw new Error('Unrecognized option: ' + key);\n }\n }\n};\n","/*\nCopyright Joyent, Inc. and other Node contributors. All rights reserved.\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\nvar isArray = typeof Array.isArray === 'function'\n ? Array.isArray\n : function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]'\n }\n;\nfunction indexOf (xs, x) {\n if (xs.indexOf) return xs.indexOf(x);\n for (var i = 0; i < xs.length; i++) {\n if (x === xs[i]) return i;\n }\n return -1;\n}\n\nfunction EventEmitter() {}\nmodule.exports = EventEmitter;\n\nEventEmitter.prototype.emit = function(type) {\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events || !this._events.error ||\n (isArray(this._events.error) && !this._events.error.length))\n {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n return false;\n }\n }\n\n if (!this._events) return false;\n var handler = this._events[type];\n if (!handler) return false;\n\n if (typeof handler == 'function') {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n var args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n return true;\n\n } else if (isArray(handler)) {\n var args = Array.prototype.slice.call(arguments, 1);\n\n var listeners = handler.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i].apply(this, args);\n }\n return true;\n\n } else {\n return false;\n }\n};\n\n// EventEmitter is defined in src/node_events.cc\n// EventEmitter.prototype.emit() is also defined there.\nEventEmitter.prototype.addListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('addListener only takes instances of Function');\n }\n\n if (!this._events) this._events = {};\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n this.emit('newListener', type, listener);\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else if (isArray(this._events[type])) {\n // If we've already got an array, just append.\n this._events[type].push(listener);\n } else {\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n var self = this;\n self.on(type, function g() {\n self.removeListener(type, g);\n listener.apply(this, arguments);\n });\n\n return this;\n};\n\nEventEmitter.prototype.removeListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('removeListener only takes instances of Function');\n }\n\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events || !this._events[type]) return this;\n\n var list = this._events[type];\n\n if (isArray(list)) {\n var i = indexOf(list, listener);\n if (i < 0) return this;\n list.splice(i, 1);\n if (list.length == 0)\n delete this._events[type];\n } else if (this._events[type] === listener) {\n delete this._events[type];\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n if (arguments.length === 0) {\n this._events = {};\n return this;\n }\n\n // does not use listeners(), so no side effect of creating _events[type]\n if (type && this._events && this._events[type]) this._events[type] = null;\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n if (!this._events) this._events = {};\n if (!this._events[type]) this._events[type] = [];\n if (!isArray(this._events[type])) {\n this._events[type] = [this._events[type]];\n }\n return this._events[type];\n};\n","'use strict';\n\nmodule.exports = {\n addTimeout: function(name, delay, callback, context) {\n this._timeouts = this._timeouts || new Map();\n if (this._timeouts.has(name)) return;\n var self = this;\n this._timeouts.set(name, global.setTimeout(function() {\n delete self._timeouts[name];\n callback.call(context);\n }, 1000 * delay));\n },\n\n removeTimeout: function(name) {\n this._timeouts = this._timeouts || new Map();\n var timeout = this._timeouts.get(name);\n if (!timeout) return;\n global.clearTimeout(timeout);\n this._timeouts.delete(name);\n },\n\n removeAllTimeouts: function() {\n this._timeouts = this._timeouts || new Map();\n for (let name of this._timeouts.keys()) this.removeTimeout(name);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n Set = require('../util/set'),\n URI = require('../util/uri'),\n browser = require('../util/browser'),\n toJSON = require('../util/to_json'),\n ws = require('../util/websocket'),\n Deferrable = require('../mixins/deferrable'),\n Transport = require('./transport');\n\nvar WebSocket = Object.assign(Class(Transport, {\n UNCONNECTED: 1,\n CONNECTING: 2,\n CONNECTED: 3,\n\n batching: false,\n\n isUsable: function(callback, context) {\n this.callback(function() { callback.call(context, true) });\n this.errback(function() { callback.call(context, false) });\n this.connect();\n },\n\n request: function(messages) {\n this._pending = this._pending || new Set();\n for (let message of messages) this._pending.add(message);\n\n var self = this;\n\n var promise = new Promise(function(resolve, reject) {\n self.callback(function(socket) {\n if (!socket || socket.readyState !== 1) return;\n socket.send(toJSON(messages));\n resolve(socket);\n });\n\n self.connect();\n });\n\n return {\n abort: function() { promise.then(function(ws) { ws.close() }) }\n };\n },\n\n connect: function() {\n if (WebSocket._unloaded) return;\n\n this._state = this._state || this.UNCONNECTED;\n if (this._state !== this.UNCONNECTED) return;\n this._state = this.CONNECTING;\n\n var socket = this._createSocket();\n if (!socket) return this.setDeferredStatus('failed');\n\n var self = this;\n\n socket.onopen = function() {\n if (socket.headers) self._storeCookies(socket.headers['set-cookie']);\n self._socket = socket;\n self._state = self.CONNECTED;\n self._everConnected = true;\n self.setDeferredStatus('succeeded', socket);\n };\n\n var closed = false;\n socket.onclose = socket.onerror = function() {\n if (closed) return;\n closed = true;\n\n var wasConnected = (self._state === self.CONNECTED);\n socket.onopen = socket.onclose = socket.onerror = socket.onmessage = null;\n\n delete self._socket;\n self._state = self.UNCONNECTED;\n\n var pending = self._pending ? [...self._pending] : [];\n delete self._pending;\n\n if (wasConnected || self._everConnected) {\n self.setDeferredStatus('unknown');\n self._handleError(pending, wasConnected);\n } else {\n self.setDeferredStatus('failed');\n }\n };\n\n socket.onmessage = function(event) {\n var replies;\n try { replies = JSON.parse(event.data) } catch (error) {}\n\n if (!replies) return;\n\n replies = [].concat(replies);\n\n for (let reply of replies) {\n if (reply.successful === undefined) continue;\n self._pending.remove(reply);\n }\n self._receive(replies);\n };\n },\n\n close: function() {\n if (!this._socket) return;\n this._socket.close();\n },\n\n _createSocket: function() {\n var url = WebSocket.getSocketUrl(this.endpoint),\n headers = this._dispatcher.headers,\n extensions = this._dispatcher.wsExtensions,\n cookie = this._getCookies(),\n tls = this._dispatcher.tls,\n options = { extensions: extensions, headers: headers, proxy: this._proxy, tls: tls };\n\n if (cookie !== '') options.headers['Cookie'] = cookie;\n\n try {\n return ws.create(url, [], options);\n } catch (e) {\n // catch CSP error to allow transport to fallback to next connType\n }\n }\n\n}), {\n PROTOCOLS: {\n 'http:': 'ws:',\n 'https:': 'wss:'\n },\n\n create: function(dispatcher, endpoint) {\n var transports = dispatcher.transports,\n sockets = transports.websocket = transports.websocket || new Map();\n\n if (!sockets.has(endpoint.href)) sockets.set(endpoint.href, new this(dispatcher, endpoint));\n\n return sockets.get(endpoint.href);\n },\n\n getSocketUrl: function(endpoint) {\n endpoint = URI.clone(endpoint);\n endpoint.protocol = this.PROTOCOLS[endpoint.protocol];\n return URI.stringify(endpoint);\n },\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n this.create(dispatcher, endpoint).isUsable(callback, context);\n }\n});\n\nObject.assign(WebSocket.prototype, Deferrable);\n\nif (browser.Event && global.onbeforeunload !== undefined) {\n browser.Event.on(global, 'beforeunload', function() {\n if (WebSocket._unloaded === undefined) {\n WebSocket._unloaded = true;\n }\n });\n}\n\nmodule.exports = WebSocket;\n","'use strict';\n\nvar WS = global.MozWebSocket || global.WebSocket;\n\nmodule.exports = {\n create: function(url, protocols, options) {\n if (typeof WS !== 'function') return null;\n return new WS(url);\n }\n};\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n Deferrable = require('../mixins/deferrable'),\n Transport = require('./transport'),\n XHR = require('./xhr');\n\nvar EventSource = Object.assign(Class(Transport, {\n initialize: function(dispatcher, endpoint) {\n Transport.prototype.initialize.call(this, dispatcher, endpoint);\n if (!global.EventSource) return this.setDeferredStatus('failed');\n\n this._xhr = new XHR(dispatcher, endpoint);\n\n endpoint = URI.clone(endpoint);\n endpoint.pathname += '/' + dispatcher.clientId;\n\n var socket = new global.EventSource(URI.stringify(endpoint)),\n self = this;\n\n socket.onopen = function() {\n self._everConnected = true;\n self.setDeferredStatus('succeeded');\n };\n\n socket.onerror = function() {\n if (self._everConnected) {\n self._handleError([]);\n } else {\n self.setDeferredStatus('failed');\n socket.close();\n }\n };\n\n socket.onmessage = function(event) {\n var replies;\n try { replies = JSON.parse(event.data) } catch (error) {}\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError([]);\n }\n };\n\n this._socket = socket;\n },\n\n close: function() {\n if (!this._socket) return;\n this._socket.onopen = this._socket.onerror = this._socket.onmessage = null;\n this._socket.close();\n delete this._socket;\n },\n\n isUsable: function(callback, context) {\n this.callback(function() { callback.call(context, true) });\n this.errback(function() { callback.call(context, false) });\n },\n\n encode: function(messages) {\n return this._xhr.encode(messages);\n },\n\n request: function(messages) {\n return this._xhr.request(messages);\n }\n\n}), {\n isUsable: function(dispatcher, endpoint, callback, context) {\n var id = dispatcher.clientId;\n if (!id) return callback.call(context, false);\n\n XHR.isUsable(dispatcher, endpoint, function(usable) {\n if (!usable) return callback.call(context, false);\n this.create(dispatcher, endpoint).isUsable(callback, context);\n }, this);\n },\n\n create: function(dispatcher, endpoint) {\n var transports = dispatcher.transports,\n sockets = transports.eventsource = transports.eventsource || new Map(),\n id = dispatcher.clientId;\n\n var url = URI.clone(endpoint);\n url.pathname += '/' + (id || '');\n url = URI.stringify(url);\n\n if (!sockets.has(url)) sockets.set(url, new this(dispatcher, endpoint));\n return sockets.get(url);\n }\n});\n\nObject.assign(EventSource.prototype, Deferrable);\n\nmodule.exports = EventSource;\n","'use strict';\n\nvar Class = require('../util/class'),\n Set = require('../util/set'),\n URI = require('../util/uri'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar CORS = Object.assign(Class(Transport, {\n encode: function(messages) {\n return 'message=' + encodeURIComponent(toJSON(messages));\n },\n\n request: function(messages) {\n var xhrClass = global.XDomainRequest ? XDomainRequest : XMLHttpRequest,\n xhr = new xhrClass(),\n id = ++CORS._id,\n headers = this._dispatcher.headers,\n self = this;\n\n xhr.open('POST', this.endpoint.href, true);\n xhr.withCredentials = true;\n\n if (xhr.setRequestHeader) {\n xhr.setRequestHeader('Pragma', 'no-cache');\n for (let [key, value] of Object.entries(headers)) {\n xhr.setRequestHeader(key, value);\n }\n }\n\n var cleanUp = function() {\n if (!xhr) return false;\n CORS._pending.remove(id);\n xhr.onload = xhr.onerror = xhr.ontimeout = xhr.onprogress = null;\n xhr = null;\n };\n\n xhr.onload = function() {\n var replies;\n try { replies = JSON.parse(xhr.responseText) } catch (error) {}\n\n cleanUp();\n\n if (replies) {\n self._receive(replies);\n } else {\n self._handleError(messages);\n }\n };\n\n xhr.onerror = xhr.ontimeout = function() {\n cleanUp();\n self._handleError(messages);\n };\n\n xhr.onprogress = function() {};\n\n if (xhrClass === global.XDomainRequest) {\n CORS._pending.add({ id: id, xhr: xhr });\n }\n\n xhr.send(this.encode(messages));\n return xhr;\n }\n}), {\n _id: 0,\n _pending: new Set(),\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n if (URI.isSameOrigin(endpoint)) {\n return callback.call(context, false);\n }\n if (global.XDomainRequest) {\n return callback.call(context, endpoint.protocol === location.protocol);\n }\n if (global.XMLHttpRequest) {\n var xhr = new XMLHttpRequest();\n return callback.call(context, xhr.withCredentials !== undefined);\n }\n return callback.call(context, false);\n }\n});\n\nmodule.exports = CORS;\n","'use strict';\n\nvar Class = require('../util/class'),\n URI = require('../util/uri'),\n toJSON = require('../util/to_json'),\n Transport = require('./transport');\n\nvar JSONP = Object.assign(Class(Transport, {\n encode: function(messages) {\n var url = URI.clone(this.endpoint);\n url.searchParams.set('message', toJSON(messages));\n url.searchParams.set('jsonp', '__jsonp' + JSONP._cbCount + '__');\n return URI.stringify(url);\n },\n\n request: function(messages) {\n var head = document.getElementsByTagName('head')[0],\n script = document.createElement('script'),\n callbackName = JSONP.getCallbackName(),\n endpoint = URI.clone(this.endpoint),\n self = this;\n\n endpoint.searchParams.set('message', toJSON(messages));\n endpoint.searchParams.set('jsonp', callbackName);\n\n var cleanup = function() {\n if (!global[callbackName]) return false;\n global[callbackName] = undefined;\n try { delete global[callbackName] } catch (error) {}\n script.parentNode.removeChild(script);\n };\n\n global[callbackName] = function(replies) {\n cleanup();\n self._receive(replies);\n };\n\n script.type = 'text/javascript';\n script.src = URI.stringify(endpoint);\n head.appendChild(script);\n\n script.onerror = function() {\n cleanup();\n self._handleError(messages);\n };\n\n return { abort: cleanup };\n }\n}), {\n _cbCount: 0,\n\n getCallbackName: function() {\n this._cbCount += 1;\n return '__jsonp' + this._cbCount + '__';\n },\n\n isUsable: function(dispatcher, endpoint, callback, context) {\n callback.call(context, true);\n }\n});\n\nmodule.exports = JSONP;\n","'use strict';\n\nvar Class = require('../util/class'),\n Grammar = require('./grammar');\n\nvar Error = Class({\n initialize: function(code, params, message) {\n this.code = code;\n this.params = Array.prototype.slice.call(params);\n this.message = message;\n },\n\n toString: function() {\n return this.code + ':' +\n this.params.join(',') + ':' +\n this.message;\n }\n});\n\nError.parse = function(message) {\n message = message || '';\n if (!Grammar.ERROR.test(message)) return new Error(null, [], message);\n\n var parts = message.split(':'),\n code = parseInt(parts[0]),\n params = parts[1].split(','),\n message = parts[2];\n\n return new Error(code, params, message);\n};\n\n// http://code.google.com/p/cometd/wiki/BayeuxCodes\nvar errors = {\n versionMismatch: [300, 'Version mismatch'],\n conntypeMismatch: [301, 'Connection types not supported'],\n extMismatch: [302, 'Extension mismatch'],\n badRequest: [400, 'Bad request'],\n clientUnknown: [401, 'Unknown client'],\n parameterMissing: [402, 'Missing required parameter'],\n channelForbidden: [403, 'Forbidden channel'],\n channelUnknown: [404, 'Unknown channel'],\n channelInvalid: [405, 'Invalid channel'],\n extUnknown: [406, 'Unknown extension'],\n publishFailed: [407, 'Failed to publish'],\n serverError: [500, 'Internal server error']\n};\n\nfor (let [name, [status, msg]] of Object.entries(errors)) {\n Error[name] = function() {\n return new Error(status, arguments, msg).toString();\n };\n}\n\nmodule.exports = Error;\n","'use strict';\n\nvar Logging = require('../mixins/logging');\n\nvar Extensible = {\n addExtension: function(extension) {\n this._extensions = this._extensions || [];\n this._extensions.push(extension);\n if (extension.added) extension.added(this);\n },\n\n removeExtension: function(extension) {\n if (!this._extensions) return;\n var i = this._extensions.length;\n while (i--) {\n if (this._extensions[i] !== extension) continue;\n this._extensions.splice(i,1);\n if (extension.removed) extension.removed(this);\n }\n },\n\n pipeThroughExtensions: function(stage, message, request, callback, context) {\n this.debug('Passing through ? extensions: ?', stage, message);\n\n if (!this._extensions) return callback.call(context, message);\n var extensions = this._extensions.slice();\n\n var pipe = function(message) {\n if (!message) return callback.call(context, message);\n\n var extension = extensions.shift();\n if (!extension) return callback.call(context, message);\n\n var fn = extension[stage];\n if (!fn) return pipe(message);\n\n if (fn.length >= 3) extension[stage](message, request, pipe);\n else extension[stage](message, pipe);\n };\n pipe(message);\n }\n};\n\nObject.assign(Extensible, Logging);\n\nmodule.exports = Extensible;\n","'use strict';\n\nvar Class = require('../util/class'),\n Deferrable = require('../mixins/deferrable');\n\nmodule.exports = Class(Deferrable);\n","'use strict';\n\nvar constants = require('./util/constants'),\n Logging = require('./mixins/logging');\n\nvar Faye = {\n VERSION: constants.VERSION,\n\n Client: require('./protocol/client'),\n Scheduler: require('./protocol/scheduler')\n};\n\nLogging.wrapper = Faye;\n\nmodule.exports = Faye;\n"],"sourceRoot":""}