@webex/internal-plugin-mercury 3.7.0-next.11 → 3.7.0-next.13
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.
- package/dist/mercury.js +3 -1
- package/dist/mercury.js.map +1 -1
- package/package.json +17 -17
- package/src/mercury.js +6 -0
package/dist/mercury.js
CHANGED
|
@@ -94,6 +94,8 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
94
94
|
return _promise.default.resolve();
|
|
95
95
|
}
|
|
96
96
|
this.connecting = true;
|
|
97
|
+
this.logger.info("".concat(this.namespace, ": starting connection attempt"));
|
|
98
|
+
this.logger.info("".concat(this.namespace, ": debug_mercury_logging stack: "), new Error('debug_mercury_logging').stack);
|
|
97
99
|
return _promise.default.resolve(this.webex.internal.device.registered || this.webex.internal.device.register()).then(function () {
|
|
98
100
|
_this2.logger.info("".concat(_this2.namespace, ": connecting"));
|
|
99
101
|
return _this2._connectWithBackoff(webSocketUrl);
|
|
@@ -481,7 +483,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
481
483
|
this.logger.info("".concat(this.namespace, ": reconnecting"));
|
|
482
484
|
return this.connect(webSocketUrl);
|
|
483
485
|
},
|
|
484
|
-
version: "3.7.0-next.
|
|
486
|
+
version: "3.7.0-next.13"
|
|
485
487
|
}, ((0, _applyDecoratedDescriptor2.default)(_obj, "connect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "connect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "disconnect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "disconnect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "listen", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "listen"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "stopListening", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "stopListening"), _obj)), _obj)));
|
|
486
488
|
var _default = exports.default = Mercury;
|
|
487
489
|
//# sourceMappingURL=mercury.js.map
|
package/dist/mercury.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_url","_interopRequireDefault","require","_webexCore","_common","_lodash","_backoff","_socket","_errors","_dec","_dec2","_obj","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalReconnectReasons","Mercury","WebexPlugin","extend","deprecated","namespace","lastError","undefined","session","connected","type","connecting","hasEverConnected","socket","localClusterServiceUrls","mercuryTimeOffset","derived","listening","deps","fn","initialize","_this","on","envelope","data","webex","internal","feature","updateFeature","featureToggle","getLastError","connect","webSocketUrl","_this2","logger","info","concat","_promise","resolve","device","registered","register","then","_connectWithBackoff","logout","disconnect","config","beforeLogoutOptionsCloseReason","includes","code","reason","options","_this3","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this4","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","clientTimestamp","_now","format","_attemptConnection","socketUrl","callback","_this5","Socket","attemptWSUrl","_onclose","_onmessage","_setTimeOffset","_len","args","Array","_key","_emit","_len2","_key2","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","Error","forceCloseDelay","pingInterval","pongTimeout","toString","trackingId","sessionId","defaultMercuryOptions","open","refresh","catch","_this5$backoffCall","getNumRetries","retries","stack","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","markFailedUrl","error","_this6","call","onComplete","err","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","initialConnectionMaxRetries","failAfter","maxRetries","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","start","_len3","_key3","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","_this7","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","wsWriteTimestamp","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/* eslint-disable require-jsdoc */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport url from 'url';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {deprecated, oneFlight} from '@webex/common';\nimport {camelCase, get, set} from 'lodash';\nimport backoff from 'backoff';\n\nimport Socket from './socket';\nimport {\n BadRequest,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n ConnectionError,\n // NotFound\n} from './errors';\n\nconst normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];\n\nconst Mercury = WebexPlugin.extend({\n namespace: 'Mercury',\n lastError: undefined,\n\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n hasEverConnected: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n mercuryTimeOffset: {\n default: undefined,\n type: 'number',\n },\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\n },\n\n initialize() {\n /*\n When one of these legacy feature gets updated, this event would be triggered\n * group-message-notifications\n * mention-notifications\n * thread-notifications\n */\n this.on('event:featureToggle_update', (envelope) => {\n if (envelope && envelope.data) {\n this.webex.internal.feature.updateFeature(envelope.data.featureToggle);\n }\n });\n },\n\n /**\n * Get the last error.\n * @returns {any} The last error.\n */\n getLastError() {\n return this.lastError;\n },\n\n @oneFlight\n connect(webSocketUrl) {\n if (this.connected) {\n this.logger.info(`${this.namespace}: already connected, will not connect again`);\n\n return Promise.resolve();\n }\n\n this.connecting = true;\n\n return Promise.resolve(\n this.webex.internal.device.registered || this.webex.internal.device.register()\n ).then(() => {\n this.logger.info(`${this.namespace}: connecting`);\n\n return this._connectWithBackoff(webSocketUrl);\n });\n },\n\n logout() {\n return this.disconnect(\n this.config.beforeLogoutOptionsCloseReason &&\n !normalReconnectReasons.includes(this.config.beforeLogoutOptionsCloseReason)\n ? {code: 1050, reason: this.config.beforeLogoutOptionsCloseReason}\n : undefined\n );\n },\n\n @oneFlight\n disconnect(options) {\n return new Promise((resolve) => {\n if (this.backoffCall) {\n this.logger.info(`${this.namespace}: aborting connection`);\n this.backoffCall.abort();\n }\n\n if (this.socket) {\n this.socket.removeAllListeners('message');\n this.once('offline', resolve);\n resolve(this.socket.close(options || undefined));\n }\n\n resolve();\n });\n },\n\n @deprecated('Mercury#listen(): Use Mercury#connect() instead')\n listen() {\n /* eslint no-invalid-this: [0] */\n return this.connect();\n },\n\n @deprecated('Mercury#stopListening(): Use Mercury#disconnect() instead')\n stopListening() {\n /* eslint no-invalid-this: [0] */\n return this.disconnect();\n },\n\n processRegistrationStatusEvent(message) {\n this.localClusterServiceUrls = message.localClusterServiceUrls;\n },\n\n _applyOverrides(event) {\n if (!event || !event.headers) {\n return;\n }\n const headerKeys = Object.keys(event.headers);\n\n headerKeys.forEach((keyPath) => {\n set(event, keyPath, event.headers[keyPath]);\n });\n },\n\n _prepareUrl(webSocketUrl) {\n if (!webSocketUrl) {\n webSocketUrl = this.webex.internal.device.webSocketUrl;\n }\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);\n }\n\n return webSocketUrl;\n })\n .then((wsUrl) => {\n webSocketUrl = wsUrl;\n })\n .then(() => this.webex.internal.feature.getFeature('developer', 'web-shared-mercury'))\n .then((webSharedMercury) => {\n webSocketUrl = url.parse(webSocketUrl, true);\n Object.assign(webSocketUrl.query, {\n outboundWireFormat: 'text',\n bufferStates: true,\n aliasHttpStatus: true,\n });\n\n if (webSharedMercury) {\n Object.assign(webSocketUrl.query, {\n mercuryRegistrationStatus: true,\n isRegistrationRefreshEnabled: true,\n });\n Reflect.deleteProperty(webSocketUrl.query, 'bufferStates');\n }\n\n if (get(this, 'webex.config.device.ephemeral', false)) {\n webSocketUrl.query.multipleConnections = true;\n }\n\n webSocketUrl.query.clientTimestamp = Date.now();\n\n return url.format(webSocketUrl);\n });\n },\n\n _attemptConnection(socketUrl, callback) {\n const socket = new Socket();\n let attemptWSUrl;\n\n socket.on('close', (...args) => this._onclose(...args));\n socket.on('message', (...args) => this._onmessage(...args));\n socket.on('pong', (...args) => this._setTimeOffset(...args));\n socket.on('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\n socket.on('ping-pong-latency', (...args) => this._emit('ping-pong-latency', ...args));\n\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\n .then(([webSocketUrl, token]) => {\n if (!this.backoffCall) {\n const msg = `${this.namespace}: prevent socket open when backoffCall no longer defined`;\n\n this.logger.info(msg);\n\n return Promise.reject(new Error(msg));\n }\n\n attemptWSUrl = webSocketUrl;\n\n let options = {\n forceCloseDelay: this.config.forceCloseDelay,\n pingInterval: this.config.pingInterval,\n pongTimeout: this.config.pongTimeout,\n token: token.toString(),\n trackingId: `${this.webex.sessionId}_${Date.now()}`,\n logger: this.logger,\n };\n\n // if the consumer has supplied request options use them\n if (this.webex.config.defaultMercuryOptions) {\n this.logger.info(`${this.namespace}: setting custom options`);\n options = {...options, ...this.webex.config.defaultMercuryOptions};\n }\n\n // Set the socket before opening it. This allows a disconnect() to close\n // the socket if it is in the process of being opened.\n this.socket = socket;\n\n this.logger.info(`${this.namespace} connection url: ${webSocketUrl}`);\n\n return socket.open(webSocketUrl, options);\n })\n .then(() => {\n this.logger.info(\n `${this.namespace}: connected to mercury, success, action: connected, url: ${attemptWSUrl}`\n );\n callback();\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.device.refresh();\n }\n\n return Promise.resolve();\n });\n })\n .catch((reason) => {\n this.lastError = reason; // remember the last error\n\n // Suppress connection errors that appear to be network related. This\n // may end up suppressing metrics during outages, but we might not care\n // (especially since many of our outages happen in a way that client\n // metrics can't be trusted).\n if (reason.code !== 1006 && this.backoffCall && this.backoffCall.getNumRetries() > 0) {\n this._emit('connection_failed', reason, {retries: this.backoffCall.getNumRetries()});\n }\n this.logger.info(\n `${this.namespace}: connection attempt failed`,\n reason,\n this.backoffCall?.getNumRetries() === 0 ? reason.stack : ''\n );\n // UnknownResponse is produced by IE for any 4XXX; treated it like a bad\n // web socket url and let WDM handle the token checking\n if (reason instanceof UnknownResponse) {\n this.logger.info(\n `${this.namespace}: received unknown response code, refreshing device registration`\n );\n\n return this.webex.internal.device.refresh().then(() => callback(reason));\n }\n // NotAuthorized implies expired token\n if (reason instanceof NotAuthorized) {\n this.logger.info(`${this.namespace}: received authorization error, reauthorizing`);\n\n return this.webex.credentials.refresh({force: true}).then(() => callback(reason));\n }\n // // NotFound implies expired web socket url\n // else if (reason instanceof NotFound) {\n // this.logger.info(`mercury: received not found error, refreshing device registration`);\n // return this.webex.internal.device.refresh()\n // .then(() => callback(reason));\n // }\n // BadRequest implies current credentials are for a Service Account\n // Forbidden implies current user is not entitle for Webex\n if (reason instanceof BadRequest || reason instanceof Forbidden) {\n this.logger.warn(`${this.namespace}: received unrecoverable response from mercury`);\n this.backoffCall.abort();\n\n return callback(reason);\n }\n if (reason instanceof ConnectionError) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n this.logger.info(\n `${this.namespace}: received a generic connection error, will try to connect to another datacenter. failed, action: 'failed', url: ${attemptWSUrl} error: ${reason.message}`\n );\n\n return this.webex.internal.services.markFailedUrl(attemptWSUrl);\n }\n\n return null;\n })\n .then(() => callback(reason));\n }\n\n return callback(reason);\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: failed to handle connection failure`, reason);\n callback(reason);\n });\n },\n\n _connectWithBackoff(webSocketUrl) {\n return new Promise((resolve, reject) => {\n // eslint gets confused about whether or not call is actually used\n // eslint-disable-next-line prefer-const\n let call;\n const onComplete = (err) => {\n this.connecting = false;\n\n this.backoffCall = undefined;\n if (err) {\n this.logger.info(\n `${\n this.namespace\n }: failed to connect after ${call.getNumRetries()} retries; log statement about next retry was inaccurate; ${err}`\n );\n\n return reject(err);\n }\n this.connected = true;\n this.hasEverConnected = true;\n this._emit('online');\n\n return resolve();\n };\n\n // eslint-disable-next-line prefer-reflect\n call = backoff.call((callback) => {\n this.logger.info(`${this.namespace}: executing connection attempt ${call.getNumRetries()}`);\n this._attemptConnection(webSocketUrl, callback);\n }, onComplete);\n\n call.setStrategy(\n new backoff.ExponentialStrategy({\n initialDelay: this.config.backoffTimeReset,\n maxDelay: this.config.backoffTimeMax,\n })\n );\n\n if (this.config.initialConnectionMaxRetries && !this.hasEverConnected) {\n call.failAfter(this.config.initialConnectionMaxRetries);\n } else if (this.config.maxRetries) {\n call.failAfter(this.config.maxRetries);\n }\n\n call.on('abort', () => {\n this.logger.info(`${this.namespace}: connection aborted`);\n reject(new Error('Mercury Connection Aborted'));\n });\n\n call.on('callback', (err) => {\n if (err) {\n const number = call.getNumRetries();\n const delay = Math.min(call.strategy_.nextBackoffDelay_, this.config.backoffTimeMax);\n\n this.logger.info(\n `${this.namespace}: failed to connect; attempting retry ${number + 1} in ${delay} ms`\n );\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'development') {\n this.logger.debug(`${this.namespace}: `, err, err.stack);\n }\n\n return;\n }\n this.logger.info(`${this.namespace}: connected`);\n });\n\n call.start();\n\n this.backoffCall = call;\n });\n },\n\n _emit(...args) {\n try {\n this.trigger(...args);\n } catch (error) {\n this.logger.error(\n `${this.namespace}: error occurred in event handler:`,\n error,\n ' with args: ',\n args\n );\n }\n },\n\n _getEventHandlers(eventType) {\n const [namespace, name] = eventType.split('.');\n const handlers = [];\n\n if (!this.webex[namespace] && !this.webex.internal[namespace]) {\n return handlers;\n }\n\n const handlerName = camelCase(`process_${name}_event`);\n\n if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {\n handlers.push({\n name: handlerName,\n namespace,\n });\n }\n\n return handlers;\n },\n\n _onclose(event) {\n // I don't see any way to avoid the complexity or statement count in here.\n /* eslint complexity: [0] */\n\n try {\n const reason = event.reason && event.reason.toLowerCase();\n const socketUrl = this.socket.url;\n\n this.socket.removeAllListeners();\n this.unset('socket');\n this.connected = false;\n this._emit('offline', event);\n\n switch (event.code) {\n case 1003:\n // metric: disconnect\n this.logger.info(\n `${this.namespace}: Mercury service rejected last message; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n break;\n case 4000:\n // metric: disconnect\n this.logger.info(`${this.namespace}: socket replaced; will not reconnect`);\n this._emit('offline.replaced', event);\n break;\n case 1001:\n case 1005:\n case 1006:\n case 1011:\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (code == 1011 && reason !== ping error) metric: unexpected disconnect\n break;\n case 1000:\n case 1050: // 1050 indicates logout form of closure, default to old behavior, use config reason defined by consumer to proceed with the permanent block\n if (normalReconnectReasons.includes(reason)) {\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (reason === done forced) metric: force closure\n } else {\n this.logger.info(\n `${this.namespace}: socket disconnected; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n }\n break;\n default:\n this.logger.info(\n `${this.namespace}: socket disconnected unexpectedly; will not reconnect`\n );\n // unexpected disconnect\n this._emit('offline.permanent', event);\n }\n } catch (error) {\n this.logger.error(`${this.namespace}: error occurred in close handler`, error);\n }\n },\n\n _onmessage(event) {\n this._setTimeOffset(event);\n const envelope = event.data;\n\n if (process.env.ENABLE_MERCURY_LOGGING) {\n this.logger.debug(`${this.namespace}: message envelope: `, envelope);\n }\n\n const {data} = envelope;\n\n this._applyOverrides(data);\n\n return this._getEventHandlers(data.eventType)\n .reduce(\n (promise, handler) =>\n promise.then(() => {\n const {namespace, name} = handler;\n\n return new Promise((resolve) =>\n resolve((this.webex[namespace] || this.webex.internal[namespace])[name](data))\n ).catch((reason) =>\n this.logger.error(\n `${this.namespace}: error occurred in autowired event handler for ${data.eventType}`,\n reason\n )\n );\n }),\n Promise.resolve()\n )\n .then(() => {\n this._emit('event', event.data);\n const [namespace] = data.eventType.split('.');\n\n if (namespace === data.eventType) {\n this._emit(`event:${namespace}`, envelope);\n } else {\n this._emit(`event:${namespace}`, envelope);\n this._emit(`event:${data.eventType}`, envelope);\n }\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: error occurred processing socket message`, reason);\n });\n },\n\n _setTimeOffset(event) {\n const {wsWriteTimestamp} = event.data;\n if (typeof wsWriteTimestamp === 'number' && wsWriteTimestamp > 0) {\n this.mercuryTimeOffset = Date.now() - wsWriteTimestamp;\n }\n },\n\n _reconnect(webSocketUrl) {\n this.logger.info(`${this.namespace}: reconnecting`);\n\n return this.connect(webSocketUrl);\n },\n});\n\nexport default Mercury;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_url","_interopRequireDefault","require","_webexCore","_common","_lodash","_backoff","_socket","_errors","_dec","_dec2","_obj","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalReconnectReasons","Mercury","WebexPlugin","extend","deprecated","namespace","lastError","undefined","session","connected","type","connecting","hasEverConnected","socket","localClusterServiceUrls","mercuryTimeOffset","derived","listening","deps","fn","initialize","_this","on","envelope","data","webex","internal","feature","updateFeature","featureToggle","getLastError","connect","webSocketUrl","_this2","logger","info","concat","_promise","resolve","Error","stack","device","registered","register","then","_connectWithBackoff","logout","disconnect","config","beforeLogoutOptionsCloseReason","includes","code","reason","options","_this3","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this4","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","clientTimestamp","_now","format","_attemptConnection","socketUrl","callback","_this5","Socket","attemptWSUrl","_onclose","_onmessage","_setTimeOffset","_len","args","Array","_key","_emit","_len2","_key2","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","forceCloseDelay","pingInterval","pongTimeout","toString","trackingId","sessionId","defaultMercuryOptions","open","refresh","catch","_this5$backoffCall","getNumRetries","retries","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","markFailedUrl","error","_this6","call","onComplete","err","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","initialConnectionMaxRetries","failAfter","maxRetries","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","start","_len3","_key3","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","_this7","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","wsWriteTimestamp","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/* eslint-disable require-jsdoc */\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport url from 'url';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {deprecated, oneFlight} from '@webex/common';\nimport {camelCase, get, set} from 'lodash';\nimport backoff from 'backoff';\n\nimport Socket from './socket';\nimport {\n BadRequest,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n ConnectionError,\n // NotFound\n} from './errors';\n\nconst normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];\n\nconst Mercury = WebexPlugin.extend({\n namespace: 'Mercury',\n lastError: undefined,\n\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n hasEverConnected: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n mercuryTimeOffset: {\n default: undefined,\n type: 'number',\n },\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\n },\n\n initialize() {\n /*\n When one of these legacy feature gets updated, this event would be triggered\n * group-message-notifications\n * mention-notifications\n * thread-notifications\n */\n this.on('event:featureToggle_update', (envelope) => {\n if (envelope && envelope.data) {\n this.webex.internal.feature.updateFeature(envelope.data.featureToggle);\n }\n });\n },\n\n /**\n * Get the last error.\n * @returns {any} The last error.\n */\n getLastError() {\n return this.lastError;\n },\n\n @oneFlight\n connect(webSocketUrl) {\n if (this.connected) {\n this.logger.info(`${this.namespace}: already connected, will not connect again`);\n\n return Promise.resolve();\n }\n\n this.connecting = true;\n\n this.logger.info(`${this.namespace}: starting connection attempt`);\n this.logger.info(\n `${this.namespace}: debug_mercury_logging stack: `,\n new Error('debug_mercury_logging').stack\n );\n\n return Promise.resolve(\n this.webex.internal.device.registered || this.webex.internal.device.register()\n ).then(() => {\n this.logger.info(`${this.namespace}: connecting`);\n\n return this._connectWithBackoff(webSocketUrl);\n });\n },\n\n logout() {\n return this.disconnect(\n this.config.beforeLogoutOptionsCloseReason &&\n !normalReconnectReasons.includes(this.config.beforeLogoutOptionsCloseReason)\n ? {code: 1050, reason: this.config.beforeLogoutOptionsCloseReason}\n : undefined\n );\n },\n\n @oneFlight\n disconnect(options) {\n return new Promise((resolve) => {\n if (this.backoffCall) {\n this.logger.info(`${this.namespace}: aborting connection`);\n this.backoffCall.abort();\n }\n\n if (this.socket) {\n this.socket.removeAllListeners('message');\n this.once('offline', resolve);\n resolve(this.socket.close(options || undefined));\n }\n\n resolve();\n });\n },\n\n @deprecated('Mercury#listen(): Use Mercury#connect() instead')\n listen() {\n /* eslint no-invalid-this: [0] */\n return this.connect();\n },\n\n @deprecated('Mercury#stopListening(): Use Mercury#disconnect() instead')\n stopListening() {\n /* eslint no-invalid-this: [0] */\n return this.disconnect();\n },\n\n processRegistrationStatusEvent(message) {\n this.localClusterServiceUrls = message.localClusterServiceUrls;\n },\n\n _applyOverrides(event) {\n if (!event || !event.headers) {\n return;\n }\n const headerKeys = Object.keys(event.headers);\n\n headerKeys.forEach((keyPath) => {\n set(event, keyPath, event.headers[keyPath]);\n });\n },\n\n _prepareUrl(webSocketUrl) {\n if (!webSocketUrl) {\n webSocketUrl = this.webex.internal.device.webSocketUrl;\n }\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);\n }\n\n return webSocketUrl;\n })\n .then((wsUrl) => {\n webSocketUrl = wsUrl;\n })\n .then(() => this.webex.internal.feature.getFeature('developer', 'web-shared-mercury'))\n .then((webSharedMercury) => {\n webSocketUrl = url.parse(webSocketUrl, true);\n Object.assign(webSocketUrl.query, {\n outboundWireFormat: 'text',\n bufferStates: true,\n aliasHttpStatus: true,\n });\n\n if (webSharedMercury) {\n Object.assign(webSocketUrl.query, {\n mercuryRegistrationStatus: true,\n isRegistrationRefreshEnabled: true,\n });\n Reflect.deleteProperty(webSocketUrl.query, 'bufferStates');\n }\n\n if (get(this, 'webex.config.device.ephemeral', false)) {\n webSocketUrl.query.multipleConnections = true;\n }\n\n webSocketUrl.query.clientTimestamp = Date.now();\n\n return url.format(webSocketUrl);\n });\n },\n\n _attemptConnection(socketUrl, callback) {\n const socket = new Socket();\n let attemptWSUrl;\n\n socket.on('close', (...args) => this._onclose(...args));\n socket.on('message', (...args) => this._onmessage(...args));\n socket.on('pong', (...args) => this._setTimeOffset(...args));\n socket.on('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\n socket.on('ping-pong-latency', (...args) => this._emit('ping-pong-latency', ...args));\n\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\n .then(([webSocketUrl, token]) => {\n if (!this.backoffCall) {\n const msg = `${this.namespace}: prevent socket open when backoffCall no longer defined`;\n\n this.logger.info(msg);\n\n return Promise.reject(new Error(msg));\n }\n\n attemptWSUrl = webSocketUrl;\n\n let options = {\n forceCloseDelay: this.config.forceCloseDelay,\n pingInterval: this.config.pingInterval,\n pongTimeout: this.config.pongTimeout,\n token: token.toString(),\n trackingId: `${this.webex.sessionId}_${Date.now()}`,\n logger: this.logger,\n };\n\n // if the consumer has supplied request options use them\n if (this.webex.config.defaultMercuryOptions) {\n this.logger.info(`${this.namespace}: setting custom options`);\n options = {...options, ...this.webex.config.defaultMercuryOptions};\n }\n\n // Set the socket before opening it. This allows a disconnect() to close\n // the socket if it is in the process of being opened.\n this.socket = socket;\n\n this.logger.info(`${this.namespace} connection url: ${webSocketUrl}`);\n\n return socket.open(webSocketUrl, options);\n })\n .then(() => {\n this.logger.info(\n `${this.namespace}: connected to mercury, success, action: connected, url: ${attemptWSUrl}`\n );\n callback();\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.device.refresh();\n }\n\n return Promise.resolve();\n });\n })\n .catch((reason) => {\n this.lastError = reason; // remember the last error\n\n // Suppress connection errors that appear to be network related. This\n // may end up suppressing metrics during outages, but we might not care\n // (especially since many of our outages happen in a way that client\n // metrics can't be trusted).\n if (reason.code !== 1006 && this.backoffCall && this.backoffCall.getNumRetries() > 0) {\n this._emit('connection_failed', reason, {retries: this.backoffCall.getNumRetries()});\n }\n this.logger.info(\n `${this.namespace}: connection attempt failed`,\n reason,\n this.backoffCall?.getNumRetries() === 0 ? reason.stack : ''\n );\n // UnknownResponse is produced by IE for any 4XXX; treated it like a bad\n // web socket url and let WDM handle the token checking\n if (reason instanceof UnknownResponse) {\n this.logger.info(\n `${this.namespace}: received unknown response code, refreshing device registration`\n );\n\n return this.webex.internal.device.refresh().then(() => callback(reason));\n }\n // NotAuthorized implies expired token\n if (reason instanceof NotAuthorized) {\n this.logger.info(`${this.namespace}: received authorization error, reauthorizing`);\n\n return this.webex.credentials.refresh({force: true}).then(() => callback(reason));\n }\n // // NotFound implies expired web socket url\n // else if (reason instanceof NotFound) {\n // this.logger.info(`mercury: received not found error, refreshing device registration`);\n // return this.webex.internal.device.refresh()\n // .then(() => callback(reason));\n // }\n // BadRequest implies current credentials are for a Service Account\n // Forbidden implies current user is not entitle for Webex\n if (reason instanceof BadRequest || reason instanceof Forbidden) {\n this.logger.warn(`${this.namespace}: received unrecoverable response from mercury`);\n this.backoffCall.abort();\n\n return callback(reason);\n }\n if (reason instanceof ConnectionError) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n this.logger.info(\n `${this.namespace}: received a generic connection error, will try to connect to another datacenter. failed, action: 'failed', url: ${attemptWSUrl} error: ${reason.message}`\n );\n\n return this.webex.internal.services.markFailedUrl(attemptWSUrl);\n }\n\n return null;\n })\n .then(() => callback(reason));\n }\n\n return callback(reason);\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: failed to handle connection failure`, reason);\n callback(reason);\n });\n },\n\n _connectWithBackoff(webSocketUrl) {\n return new Promise((resolve, reject) => {\n // eslint gets confused about whether or not call is actually used\n // eslint-disable-next-line prefer-const\n let call;\n const onComplete = (err) => {\n this.connecting = false;\n\n this.backoffCall = undefined;\n if (err) {\n this.logger.info(\n `${\n this.namespace\n }: failed to connect after ${call.getNumRetries()} retries; log statement about next retry was inaccurate; ${err}`\n );\n\n return reject(err);\n }\n this.connected = true;\n this.hasEverConnected = true;\n this._emit('online');\n\n return resolve();\n };\n\n // eslint-disable-next-line prefer-reflect\n call = backoff.call((callback) => {\n this.logger.info(`${this.namespace}: executing connection attempt ${call.getNumRetries()}`);\n this._attemptConnection(webSocketUrl, callback);\n }, onComplete);\n\n call.setStrategy(\n new backoff.ExponentialStrategy({\n initialDelay: this.config.backoffTimeReset,\n maxDelay: this.config.backoffTimeMax,\n })\n );\n\n if (this.config.initialConnectionMaxRetries && !this.hasEverConnected) {\n call.failAfter(this.config.initialConnectionMaxRetries);\n } else if (this.config.maxRetries) {\n call.failAfter(this.config.maxRetries);\n }\n\n call.on('abort', () => {\n this.logger.info(`${this.namespace}: connection aborted`);\n reject(new Error('Mercury Connection Aborted'));\n });\n\n call.on('callback', (err) => {\n if (err) {\n const number = call.getNumRetries();\n const delay = Math.min(call.strategy_.nextBackoffDelay_, this.config.backoffTimeMax);\n\n this.logger.info(\n `${this.namespace}: failed to connect; attempting retry ${number + 1} in ${delay} ms`\n );\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'development') {\n this.logger.debug(`${this.namespace}: `, err, err.stack);\n }\n\n return;\n }\n this.logger.info(`${this.namespace}: connected`);\n });\n\n call.start();\n\n this.backoffCall = call;\n });\n },\n\n _emit(...args) {\n try {\n this.trigger(...args);\n } catch (error) {\n this.logger.error(\n `${this.namespace}: error occurred in event handler:`,\n error,\n ' with args: ',\n args\n );\n }\n },\n\n _getEventHandlers(eventType) {\n const [namespace, name] = eventType.split('.');\n const handlers = [];\n\n if (!this.webex[namespace] && !this.webex.internal[namespace]) {\n return handlers;\n }\n\n const handlerName = camelCase(`process_${name}_event`);\n\n if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {\n handlers.push({\n name: handlerName,\n namespace,\n });\n }\n\n return handlers;\n },\n\n _onclose(event) {\n // I don't see any way to avoid the complexity or statement count in here.\n /* eslint complexity: [0] */\n\n try {\n const reason = event.reason && event.reason.toLowerCase();\n const socketUrl = this.socket.url;\n\n this.socket.removeAllListeners();\n this.unset('socket');\n this.connected = false;\n this._emit('offline', event);\n\n switch (event.code) {\n case 1003:\n // metric: disconnect\n this.logger.info(\n `${this.namespace}: Mercury service rejected last message; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n break;\n case 4000:\n // metric: disconnect\n this.logger.info(`${this.namespace}: socket replaced; will not reconnect`);\n this._emit('offline.replaced', event);\n break;\n case 1001:\n case 1005:\n case 1006:\n case 1011:\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (code == 1011 && reason !== ping error) metric: unexpected disconnect\n break;\n case 1000:\n case 1050: // 1050 indicates logout form of closure, default to old behavior, use config reason defined by consumer to proceed with the permanent block\n if (normalReconnectReasons.includes(reason)) {\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (reason === done forced) metric: force closure\n } else {\n this.logger.info(\n `${this.namespace}: socket disconnected; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n }\n break;\n default:\n this.logger.info(\n `${this.namespace}: socket disconnected unexpectedly; will not reconnect`\n );\n // unexpected disconnect\n this._emit('offline.permanent', event);\n }\n } catch (error) {\n this.logger.error(`${this.namespace}: error occurred in close handler`, error);\n }\n },\n\n _onmessage(event) {\n this._setTimeOffset(event);\n const envelope = event.data;\n\n if (process.env.ENABLE_MERCURY_LOGGING) {\n this.logger.debug(`${this.namespace}: message envelope: `, envelope);\n }\n\n const {data} = envelope;\n\n this._applyOverrides(data);\n\n return this._getEventHandlers(data.eventType)\n .reduce(\n (promise, handler) =>\n promise.then(() => {\n const {namespace, name} = handler;\n\n return new Promise((resolve) =>\n resolve((this.webex[namespace] || this.webex.internal[namespace])[name](data))\n ).catch((reason) =>\n this.logger.error(\n `${this.namespace}: error occurred in autowired event handler for ${data.eventType}`,\n reason\n )\n );\n }),\n Promise.resolve()\n )\n .then(() => {\n this._emit('event', event.data);\n const [namespace] = data.eventType.split('.');\n\n if (namespace === data.eventType) {\n this._emit(`event:${namespace}`, envelope);\n } else {\n this._emit(`event:${namespace}`, envelope);\n this._emit(`event:${data.eventType}`, envelope);\n }\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: error occurred processing socket message`, reason);\n });\n },\n\n _setTimeOffset(event) {\n const {wsWriteTimestamp} = event.data;\n if (typeof wsWriteTimestamp === 'number' && wsWriteTimestamp > 0) {\n this.mercuryTimeOffset = Date.now() - wsWriteTimestamp;\n }\n },\n\n _reconnect(webSocketUrl) {\n this.logger.info(`${this.namespace}: reconnecting`);\n\n return this.connect(webSocketUrl);\n },\n});\n\nexport default Mercury;\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -29,27 +29,27 @@
|
|
|
29
29
|
"@webex/eslint-config-legacy": "0.0.0",
|
|
30
30
|
"@webex/jest-config-legacy": "0.0.0",
|
|
31
31
|
"@webex/legacy-tools": "0.0.0",
|
|
32
|
-
"@webex/test-helper-chai": "3.7.0-next.
|
|
33
|
-
"@webex/test-helper-mocha": "3.7.0-next.
|
|
34
|
-
"@webex/test-helper-mock-webex": "3.7.0-next.
|
|
35
|
-
"@webex/test-helper-test-users": "3.7.0-next.
|
|
32
|
+
"@webex/test-helper-chai": "3.7.0-next.10",
|
|
33
|
+
"@webex/test-helper-mocha": "3.7.0-next.10",
|
|
34
|
+
"@webex/test-helper-mock-webex": "3.7.0-next.10",
|
|
35
|
+
"@webex/test-helper-test-users": "3.7.0-next.10",
|
|
36
36
|
"eslint": "^8.24.0",
|
|
37
37
|
"prettier": "^2.7.1",
|
|
38
38
|
"sinon": "^9.2.4"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@webex/common": "3.7.0-next.
|
|
42
|
-
"@webex/common-timers": "3.7.0-next.
|
|
43
|
-
"@webex/internal-plugin-device": "3.7.0-next.
|
|
44
|
-
"@webex/internal-plugin-feature": "3.7.0-next.
|
|
45
|
-
"@webex/internal-plugin-metrics": "3.7.0-next.
|
|
46
|
-
"@webex/test-helper-chai": "3.7.0-next.
|
|
47
|
-
"@webex/test-helper-mocha": "3.7.0-next.
|
|
48
|
-
"@webex/test-helper-mock-web-socket": "3.7.0-next.
|
|
49
|
-
"@webex/test-helper-mock-webex": "3.7.0-next.
|
|
50
|
-
"@webex/test-helper-refresh-callback": "3.7.0-next.
|
|
51
|
-
"@webex/test-helper-test-users": "3.7.0-next.
|
|
52
|
-
"@webex/webex-core": "3.7.0-next.
|
|
41
|
+
"@webex/common": "3.7.0-next.10",
|
|
42
|
+
"@webex/common-timers": "3.7.0-next.10",
|
|
43
|
+
"@webex/internal-plugin-device": "3.7.0-next.10",
|
|
44
|
+
"@webex/internal-plugin-feature": "3.7.0-next.10",
|
|
45
|
+
"@webex/internal-plugin-metrics": "3.7.0-next.10",
|
|
46
|
+
"@webex/test-helper-chai": "3.7.0-next.10",
|
|
47
|
+
"@webex/test-helper-mocha": "3.7.0-next.10",
|
|
48
|
+
"@webex/test-helper-mock-web-socket": "3.7.0-next.10",
|
|
49
|
+
"@webex/test-helper-mock-webex": "3.7.0-next.10",
|
|
50
|
+
"@webex/test-helper-refresh-callback": "3.7.0-next.10",
|
|
51
|
+
"@webex/test-helper-test-users": "3.7.0-next.10",
|
|
52
|
+
"@webex/webex-core": "3.7.0-next.10",
|
|
53
53
|
"backoff": "^2.5.0",
|
|
54
54
|
"lodash": "^4.17.21",
|
|
55
55
|
"uuid": "^3.3.2",
|
|
@@ -64,5 +64,5 @@
|
|
|
64
64
|
"test:style": "eslint ./src/**/*.*",
|
|
65
65
|
"test:unit": "webex-legacy-tools test --unit --runner mocha"
|
|
66
66
|
},
|
|
67
|
-
"version": "3.7.0-next.
|
|
67
|
+
"version": "3.7.0-next.13"
|
|
68
68
|
}
|
package/src/mercury.js
CHANGED
|
@@ -88,6 +88,12 @@ const Mercury = WebexPlugin.extend({
|
|
|
88
88
|
|
|
89
89
|
this.connecting = true;
|
|
90
90
|
|
|
91
|
+
this.logger.info(`${this.namespace}: starting connection attempt`);
|
|
92
|
+
this.logger.info(
|
|
93
|
+
`${this.namespace}: debug_mercury_logging stack: `,
|
|
94
|
+
new Error('debug_mercury_logging').stack
|
|
95
|
+
);
|
|
96
|
+
|
|
91
97
|
return Promise.resolve(
|
|
92
98
|
this.webex.internal.device.registered || this.webex.internal.device.register()
|
|
93
99
|
).then(() => {
|