@webex/internal-plugin-mercury 2.59.8-next.1 → 2.60.0-next.1
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/config.js +1 -2
- package/dist/config.js.map +1 -1
- package/dist/errors.js +8 -11
- package/dist/errors.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mercury.js +47 -37
- package/dist/mercury.js.map +1 -1
- package/dist/socket/socket-base.js +37 -30
- package/dist/socket/socket-base.js.map +1 -1
- package/dist/socket/socket.js +1 -2
- package/dist/socket/socket.js.map +1 -1
- package/dist/socket/socket.shim.js +1 -2
- package/dist/socket/socket.shim.js.map +1 -1
- package/package.json +18 -18
- package/src/mercury.js +41 -32
- package/src/socket/socket-base.js +50 -27
- package/test/integration/spec/webex.js +3 -2
- package/test/unit/spec/mercury.js +13 -4
package/dist/config.js
CHANGED
|
@@ -8,7 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
/*!
|
|
9
9
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
10
10
|
*/
|
|
11
|
-
var _default = {
|
|
11
|
+
var _default = exports.default = {
|
|
12
12
|
mercury: {
|
|
13
13
|
/**
|
|
14
14
|
* Milliseconds between pings sent up the socket
|
|
@@ -38,5 +38,4 @@ var _default = {
|
|
|
38
38
|
forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000
|
|
39
39
|
}
|
|
40
40
|
};
|
|
41
|
-
exports.default = _default;
|
|
42
41
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","mercury","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY"
|
|
1
|
+
{"version":3,"names":["_default","exports","default","mercury","pingInterval","process","env","MERCURY_PING_INTERVAL","pongTimeout","MERCURY_PONG_TIMEOUT","backoffTimeMax","MERCURY_BACKOFF_TIME_MAX","backoffTimeReset","MERCURY_BACKOFF_TIME_RESET","forceCloseDelay","MERCURY_FORCE_CLOSE_DELAY"],"sources":["config.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport default {\n mercury: {\n /**\n * Milliseconds between pings sent up the socket\n * @type {number}\n */\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\n /**\n * Milliseconds to wait for a pong before declaring the connection dead\n * @type {number}\n */\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\n /**\n * Maximum milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\n /**\n * Initial milliseconds between connection attempts\n * @type {Number}\n */\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\n /**\n * Milliseconds to wait for a close frame before declaring the socket dead and\n * discarding it\n * @type {[type]}\n */\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\n },\n};\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAIe;EACbC,OAAO,EAAE;IACP;AACJ;AACA;AACA;IACIC,YAAY,EAAEC,OAAO,CAACC,GAAG,CAACC,qBAAqB,IAAI,KAAK;IACxD;AACJ;AACA;AACA;IACIC,WAAW,EAAEH,OAAO,CAACC,GAAG,CAACG,oBAAoB,IAAI,KAAK;IACtD;AACJ;AACA;AACA;IACIC,cAAc,EAAEL,OAAO,CAACC,GAAG,CAACK,wBAAwB,IAAI,KAAK;IAC7D;AACJ;AACA;AACA;IACIC,gBAAgB,EAAEP,OAAO,CAACC,GAAG,CAACO,0BAA0B,IAAI,IAAI;IAChE;AACJ;AACA;AACA;AACA;IACIC,eAAe,EAAET,OAAO,CAACC,GAAG,CAACS,yBAAyB,IAAI;EAC5D;AACF,CAAC"}
|
package/dist/errors.js
CHANGED
|
@@ -16,11 +16,13 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
17
17
|
var _common = require("@webex/common");
|
|
18
18
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
19
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
19
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /*!
|
|
20
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
21
|
+
*/
|
|
20
22
|
/**
|
|
21
23
|
* Exception thrown when a websocket gets closed
|
|
22
24
|
*/
|
|
23
|
-
var ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
25
|
+
var ConnectionError = exports.ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
24
26
|
(0, _inherits2.default)(ConnectionError, _Exception);
|
|
25
27
|
var _super = _createSuper(ConnectionError);
|
|
26
28
|
function ConnectionError() {
|
|
@@ -52,9 +54,8 @@ var ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
|
52
54
|
/**
|
|
53
55
|
* thrown for CloseCode 4400
|
|
54
56
|
*/
|
|
55
|
-
exports.ConnectionError = ConnectionError;
|
|
56
57
|
(0, _defineProperty2.default)(ConnectionError, "defaultMessage", 'Failed to connect to socket');
|
|
57
|
-
var UnknownResponse = /*#__PURE__*/function (_ConnectionError) {
|
|
58
|
+
var UnknownResponse = exports.UnknownResponse = /*#__PURE__*/function (_ConnectionError) {
|
|
58
59
|
(0, _inherits2.default)(UnknownResponse, _ConnectionError);
|
|
59
60
|
var _super2 = _createSuper(UnknownResponse);
|
|
60
61
|
function UnknownResponse() {
|
|
@@ -66,9 +67,8 @@ var UnknownResponse = /*#__PURE__*/function (_ConnectionError) {
|
|
|
66
67
|
/**
|
|
67
68
|
* thrown for CloseCode 4400
|
|
68
69
|
*/
|
|
69
|
-
exports.UnknownResponse = UnknownResponse;
|
|
70
70
|
(0, _defineProperty2.default)(UnknownResponse, "defaultMessage", 'UnknownResponse is produced by IE when we receive a 4XXX. You probably want to treat this like a NotFound');
|
|
71
|
-
var BadRequest = /*#__PURE__*/function (_ConnectionError2) {
|
|
71
|
+
var BadRequest = exports.BadRequest = /*#__PURE__*/function (_ConnectionError2) {
|
|
72
72
|
(0, _inherits2.default)(BadRequest, _ConnectionError2);
|
|
73
73
|
var _super3 = _createSuper(BadRequest);
|
|
74
74
|
function BadRequest() {
|
|
@@ -80,9 +80,8 @@ var BadRequest = /*#__PURE__*/function (_ConnectionError2) {
|
|
|
80
80
|
/**
|
|
81
81
|
* thrown for CloseCode 4401
|
|
82
82
|
*/
|
|
83
|
-
exports.BadRequest = BadRequest;
|
|
84
83
|
(0, _defineProperty2.default)(BadRequest, "defaultMessage", 'BadRequest usually implies an attempt to use service account credentials');
|
|
85
|
-
var NotAuthorized = /*#__PURE__*/function (_ConnectionError3) {
|
|
84
|
+
var NotAuthorized = exports.NotAuthorized = /*#__PURE__*/function (_ConnectionError3) {
|
|
86
85
|
(0, _inherits2.default)(NotAuthorized, _ConnectionError3);
|
|
87
86
|
var _super4 = _createSuper(NotAuthorized);
|
|
88
87
|
function NotAuthorized() {
|
|
@@ -94,9 +93,8 @@ var NotAuthorized = /*#__PURE__*/function (_ConnectionError3) {
|
|
|
94
93
|
/**
|
|
95
94
|
* thrown for CloseCode 4403
|
|
96
95
|
*/
|
|
97
|
-
exports.NotAuthorized = NotAuthorized;
|
|
98
96
|
(0, _defineProperty2.default)(NotAuthorized, "defaultMessage", 'Please refresh your access token');
|
|
99
|
-
var Forbidden = /*#__PURE__*/function (_ConnectionError4) {
|
|
97
|
+
var Forbidden = exports.Forbidden = /*#__PURE__*/function (_ConnectionError4) {
|
|
100
98
|
(0, _inherits2.default)(Forbidden, _ConnectionError4);
|
|
101
99
|
var _super5 = _createSuper(Forbidden);
|
|
102
100
|
function Forbidden() {
|
|
@@ -110,6 +108,5 @@ var Forbidden = /*#__PURE__*/function (_ConnectionError4) {
|
|
|
110
108
|
// export class NotFound extends ConnectionError {
|
|
111
109
|
// static defaultMessage = `Please refresh your Mercury registration (typically via a WDM refresh)`;
|
|
112
110
|
// }
|
|
113
|
-
exports.Forbidden = Forbidden;
|
|
114
111
|
(0, _defineProperty2.default)(Forbidden, "defaultMessage", 'Forbidden usually implies these credentials are not entitled for Webex');
|
|
115
112
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_common","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","ConnectionError","_Exception","_inherits2","_super","_classCallCheck2","_createClass2","key","value","parse","event","length","undefined","_defineProperties","code","reason","Exception","
|
|
1
|
+
{"version":3,"names":["_common","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","ConnectionError","exports","_Exception","_inherits2","_super","_classCallCheck2","_createClass2","key","value","parse","event","length","undefined","_defineProperties","code","reason","Exception","_defineProperty2","UnknownResponse","_ConnectionError","_super2","BadRequest","_ConnectionError2","_super3","NotAuthorized","_ConnectionError3","_super4","Forbidden","_ConnectionError4","_super5"],"sources":["errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\n\n/**\n * Exception thrown when a websocket gets closed\n */\nexport class ConnectionError extends Exception {\n static defaultMessage = 'Failed to connect to socket';\n\n /**\n * @param {CloseEvent} event\n * @returns {string}\n */\n parse(event = {}) {\n Object.defineProperties(this, {\n code: {\n value: event.code,\n },\n reason: {\n value: event.reason,\n },\n });\n\n return event.reason;\n }\n}\n\n/**\n * thrown for CloseCode 4400\n */\nexport class UnknownResponse extends ConnectionError {\n static defaultMessage =\n 'UnknownResponse is produced by IE when we receive a 4XXX. You probably want to treat this like a NotFound';\n}\n\n/**\n * thrown for CloseCode 4400\n */\nexport class BadRequest extends ConnectionError {\n static defaultMessage =\n 'BadRequest usually implies an attempt to use service account credentials';\n}\n\n/**\n * thrown for CloseCode 4401\n */\nexport class NotAuthorized extends ConnectionError {\n static defaultMessage = 'Please refresh your access token';\n}\n\n/**\n * thrown for CloseCode 4403\n */\nexport class Forbidden extends ConnectionError {\n static defaultMessage = 'Forbidden usually implies these credentials are not entitled for Webex';\n}\n\n// /**\n// * thrown for CloseCode 4404\n// */\n// export class NotFound extends ConnectionError {\n// static defaultMessage = `Please refresh your Mercury registration (typically via a WDM refresh)`;\n// }\n"],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["require","_webexCore","_mercury","_interopRequireDefault","_config","_socket","_errors","registerInternalPlugin","Mercury","config","onBeforeLogout","disconnect"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-feature';\nimport '@webex/internal-plugin-metrics';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Mercury from './mercury';\nimport config from './config';\n\nregisterInternalPlugin('mercury', Mercury, {\n config,\n onBeforeLogout() {\n return this.disconnect();\n },\n});\n\nexport {default} from './mercury';\nexport {default as Mercury} from './mercury';\nexport {default as Socket} from './socket';\nexport {default as config} from './config';\nexport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAWA,IAAAK,OAAA,GAAAF,sBAAA,CAAAH,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAxBA;AACA;AACA;;AAWA,IAAAO,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA,eAAM;EACNC,cAAc,WAAAA,eAAA,EAAG;IACf,OAAO,IAAI,CAACC,UAAU,
|
|
1
|
+
{"version":3,"names":["require","_webexCore","_mercury","_interopRequireDefault","_config","_socket","_errors","registerInternalPlugin","Mercury","config","onBeforeLogout","disconnect"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-feature';\nimport '@webex/internal-plugin-metrics';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Mercury from './mercury';\nimport config from './config';\n\nregisterInternalPlugin('mercury', Mercury, {\n config,\n onBeforeLogout() {\n return this.disconnect();\n },\n});\n\nexport {default} from './mercury';\nexport {default as Mercury} from './mercury';\nexport {default as Socket} from './socket';\nexport {default as config} from './config';\nexport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAWA,IAAAK,OAAA,GAAAF,sBAAA,CAAAH,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAxBA;AACA;AACA;;AAWA,IAAAO,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA,eAAM;EACNC,cAAc,WAAAA,eAAA,EAAG;IACf,OAAO,IAAI,CAACC,UAAU,CAAC,CAAC;EAC1B;AACF,CAAC,CAAC"}
|
package/dist/mercury.js
CHANGED
|
@@ -28,8 +28,11 @@ var _backoff = _interopRequireDefault(require("backoff"));
|
|
|
28
28
|
var _socket = _interopRequireDefault(require("./socket"));
|
|
29
29
|
var _errors = require("./errors");
|
|
30
30
|
var _dec, _dec2, _obj;
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
/*!
|
|
32
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
33
|
+
*/
|
|
34
|
+
function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor2(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
35
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor2(t, r)); }); } return e; }
|
|
33
36
|
var normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];
|
|
34
37
|
var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mercury#listen(): Use Mercury#connect() instead'), _dec2 = (0, _common.deprecated)('Mercury#stopListening(): Use Mercury#disconnect() instead'), (_obj = {
|
|
35
38
|
namespace: 'Mercury',
|
|
@@ -56,12 +59,12 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
56
59
|
connect: function connect(webSocketUrl) {
|
|
57
60
|
var _this = this;
|
|
58
61
|
if (this.connected) {
|
|
59
|
-
this.logger.info(
|
|
62
|
+
this.logger.info("".concat(this.namespace, ": already connected, will not connect again"));
|
|
60
63
|
return _promise.default.resolve();
|
|
61
64
|
}
|
|
62
65
|
this.connecting = true;
|
|
63
66
|
return _promise.default.resolve(this.webex.internal.device.registered || this.webex.internal.device.register()).then(function () {
|
|
64
|
-
_this.logger.info(
|
|
67
|
+
_this.logger.info("".concat(_this.namespace, ": connecting"));
|
|
65
68
|
return _this._connectWithBackoff(webSocketUrl);
|
|
66
69
|
});
|
|
67
70
|
},
|
|
@@ -69,14 +72,13 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
69
72
|
var _this2 = this;
|
|
70
73
|
return new _promise.default(function (resolve) {
|
|
71
74
|
if (_this2.backoffCall) {
|
|
72
|
-
_this2.logger.info(
|
|
75
|
+
_this2.logger.info("".concat(_this2.namespace, ": aborting connection"));
|
|
73
76
|
_this2.backoffCall.abort();
|
|
74
77
|
}
|
|
75
78
|
if (_this2.socket) {
|
|
76
79
|
_this2.socket.removeAllListeners('message');
|
|
77
80
|
_this2.once('offline', resolve);
|
|
78
|
-
_this2.socket.close();
|
|
79
|
-
return;
|
|
81
|
+
resolve(_this2.socket.close());
|
|
80
82
|
}
|
|
81
83
|
resolve();
|
|
82
84
|
});
|
|
@@ -156,7 +158,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
156
158
|
webSocketUrl = _ref2[0],
|
|
157
159
|
token = _ref2[1];
|
|
158
160
|
if (!_this4.backoffCall) {
|
|
159
|
-
var msg =
|
|
161
|
+
var msg = "".concat(_this4.namespace, ": prevent socket open when backoffCall no longer defined");
|
|
160
162
|
_this4.logger.info(msg);
|
|
161
163
|
return _promise.default.reject(new Error(msg));
|
|
162
164
|
}
|
|
@@ -172,13 +174,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
172
174
|
|
|
173
175
|
// if the consumer has supplied request options use them
|
|
174
176
|
if (_this4.webex.config.defaultMercuryOptions) {
|
|
175
|
-
_this4.logger.info(
|
|
177
|
+
_this4.logger.info("".concat(_this4.namespace, ": setting custom options"));
|
|
176
178
|
options = _objectSpread(_objectSpread({}, options), _this4.webex.config.defaultMercuryOptions);
|
|
177
179
|
}
|
|
178
180
|
|
|
179
181
|
// Set the socket before opening it. This allows a disconnect() to close
|
|
180
182
|
// the socket if it is in the process of being opened.
|
|
181
183
|
_this4.socket = socket;
|
|
184
|
+
_this4.logger.info("".concat(_this4.namespace, " connection url: ").concat(webSocketUrl));
|
|
182
185
|
return socket.open(webSocketUrl, options);
|
|
183
186
|
}).then(function () {
|
|
184
187
|
_this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
|
|
@@ -186,6 +189,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
186
189
|
success: true
|
|
187
190
|
},
|
|
188
191
|
tags: {
|
|
192
|
+
namespace: _this4.namespace,
|
|
189
193
|
action: 'connected',
|
|
190
194
|
url: attemptWSUrl
|
|
191
195
|
}
|
|
@@ -207,18 +211,18 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
207
211
|
retries: _this4.backoffCall.getNumRetries()
|
|
208
212
|
});
|
|
209
213
|
}
|
|
210
|
-
_this4.logger.info(
|
|
214
|
+
_this4.logger.info("".concat(_this4.namespace, ": connection attempt failed"), reason);
|
|
211
215
|
// UnknownResponse is produced by IE for any 4XXX; treated it like a bad
|
|
212
216
|
// web socket url and let WDM handle the token checking
|
|
213
217
|
if (reason instanceof _errors.UnknownResponse) {
|
|
214
|
-
_this4.logger.info(
|
|
218
|
+
_this4.logger.info("".concat(_this4.namespace, ": received unknown response code, refreshing device registration"));
|
|
215
219
|
return _this4.webex.internal.device.refresh().then(function () {
|
|
216
220
|
return callback(reason);
|
|
217
221
|
});
|
|
218
222
|
}
|
|
219
223
|
// NotAuthorized implies expired token
|
|
220
224
|
if (reason instanceof _errors.NotAuthorized) {
|
|
221
|
-
_this4.logger.info(
|
|
225
|
+
_this4.logger.info("".concat(_this4.namespace, ": received authorization error, reauthorizing"));
|
|
222
226
|
return _this4.webex.credentials.refresh({
|
|
223
227
|
force: true
|
|
224
228
|
}).then(function () {
|
|
@@ -234,19 +238,20 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
234
238
|
// BadRequest implies current credentials are for a Service Account
|
|
235
239
|
// Forbidden implies current user is not entitle for Webex
|
|
236
240
|
if (reason instanceof _errors.BadRequest || reason instanceof _errors.Forbidden) {
|
|
237
|
-
_this4.logger.warn(
|
|
241
|
+
_this4.logger.warn("".concat(_this4.namespace, ": received unrecoverable response from mercury"));
|
|
238
242
|
_this4.backoffCall.abort();
|
|
239
243
|
return callback(reason);
|
|
240
244
|
}
|
|
241
245
|
if (reason instanceof _errors.ConnectionError) {
|
|
242
246
|
return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
|
|
243
247
|
if (haMessagingEnabled) {
|
|
244
|
-
_this4.logger.info(
|
|
248
|
+
_this4.logger.info("".concat(_this4.namespace, ": received a generic connection error, will try to connect to another datacenter"));
|
|
245
249
|
_this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
|
|
246
250
|
fields: {
|
|
247
251
|
success: false
|
|
248
252
|
},
|
|
249
253
|
tags: {
|
|
254
|
+
namespace: _this4.namespace,
|
|
250
255
|
action: 'failed',
|
|
251
256
|
error: reason.message,
|
|
252
257
|
url: attemptWSUrl
|
|
@@ -261,7 +266,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
261
266
|
}
|
|
262
267
|
return callback(reason);
|
|
263
268
|
}).catch(function (reason) {
|
|
264
|
-
_this4.logger.error(
|
|
269
|
+
_this4.logger.error("".concat(_this4.namespace, ": failed to handle connection failure"), reason);
|
|
265
270
|
callback(reason);
|
|
266
271
|
});
|
|
267
272
|
},
|
|
@@ -275,7 +280,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
275
280
|
_this5.connecting = false;
|
|
276
281
|
_this5.backoffCall = undefined;
|
|
277
282
|
if (err) {
|
|
278
|
-
_this5.logger.info("
|
|
283
|
+
_this5.logger.info("".concat(_this5.namespace, ": failed to connect after ").concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
|
|
279
284
|
return reject(err);
|
|
280
285
|
}
|
|
281
286
|
_this5.connected = true;
|
|
@@ -285,7 +290,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
285
290
|
|
|
286
291
|
// eslint-disable-next-line prefer-reflect
|
|
287
292
|
call = _backoff.default.call(function (callback) {
|
|
288
|
-
_this5.logger.info("
|
|
293
|
+
_this5.logger.info("".concat(_this5.namespace, ": executing connection attempt ").concat(call.getNumRetries()));
|
|
289
294
|
_this5._attemptConnection(webSocketUrl, callback);
|
|
290
295
|
}, onComplete);
|
|
291
296
|
call.setStrategy(new _backoff.default.ExponentialStrategy({
|
|
@@ -296,31 +301,37 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
296
301
|
call.failAfter(_this5.config.maxRetries);
|
|
297
302
|
}
|
|
298
303
|
call.on('abort', function () {
|
|
299
|
-
_this5.logger.info(
|
|
304
|
+
_this5.logger.info("".concat(_this5.namespace, ": connection aborted"));
|
|
300
305
|
reject(new Error('Mercury Connection Aborted'));
|
|
301
306
|
});
|
|
302
307
|
call.on('callback', function (err) {
|
|
303
308
|
if (err) {
|
|
304
309
|
var number = call.getNumRetries();
|
|
305
310
|
var delay = Math.min(call.strategy_.nextBackoffDelay_, _this5.config.backoffTimeMax);
|
|
306
|
-
_this5.logger.info("
|
|
311
|
+
_this5.logger.info("".concat(_this5.namespace, ": failed to connect; attempting retry ").concat(number + 1, " in ").concat(delay, " ms"));
|
|
307
312
|
/* istanbul ignore if */
|
|
308
313
|
if (process.env.NODE_ENV === 'development') {
|
|
309
|
-
_this5.logger.debug(
|
|
314
|
+
_this5.logger.debug("".concat(_this5.namespace, ": "), err, err.stack);
|
|
310
315
|
}
|
|
311
316
|
return;
|
|
312
317
|
}
|
|
313
|
-
_this5.logger.info(
|
|
318
|
+
_this5.logger.info("".concat(_this5.namespace, ": connected"));
|
|
314
319
|
});
|
|
315
320
|
call.start();
|
|
316
321
|
_this5.backoffCall = call;
|
|
317
322
|
});
|
|
318
323
|
},
|
|
319
324
|
_emit: function _emit() {
|
|
325
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
326
|
+
args[_key2] = arguments[_key2];
|
|
327
|
+
}
|
|
320
328
|
try {
|
|
321
|
-
this.trigger.apply(this,
|
|
329
|
+
this.trigger.apply(this, args);
|
|
322
330
|
} catch (error) {
|
|
323
|
-
this.logger.error(
|
|
331
|
+
this.logger.error("".concat(this.namespace, ": error occurred in event handler"), {
|
|
332
|
+
error: error,
|
|
333
|
+
arguments: args
|
|
334
|
+
});
|
|
324
335
|
}
|
|
325
336
|
},
|
|
326
337
|
_getEventHandlers: function _getEventHandlers(eventType) {
|
|
@@ -355,19 +366,19 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
355
366
|
switch (event.code) {
|
|
356
367
|
case 1003:
|
|
357
368
|
// metric: disconnect
|
|
358
|
-
this.logger.info("
|
|
369
|
+
this.logger.info("".concat(this.namespace, ": Mercury service rejected last message; will not reconnect: ").concat(event.reason));
|
|
359
370
|
this._emit('offline.permanent', event);
|
|
360
371
|
break;
|
|
361
372
|
case 4000:
|
|
362
373
|
// metric: disconnect
|
|
363
|
-
this.logger.info(
|
|
374
|
+
this.logger.info("".concat(this.namespace, ": socket replaced; will not reconnect"));
|
|
364
375
|
this._emit('offline.replaced', event);
|
|
365
376
|
break;
|
|
366
377
|
case 1001:
|
|
367
378
|
case 1005:
|
|
368
379
|
case 1006:
|
|
369
380
|
case 1011:
|
|
370
|
-
this.logger.info(
|
|
381
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
|
|
371
382
|
this._emit('offline.transient', event);
|
|
372
383
|
this._reconnect(socketUrl);
|
|
373
384
|
// metric: disconnect
|
|
@@ -375,30 +386,30 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
375
386
|
break;
|
|
376
387
|
case 1000:
|
|
377
388
|
if (normalReconnectReasons.includes(reason)) {
|
|
378
|
-
this.logger.info(
|
|
389
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
|
|
379
390
|
this._emit('offline.transient', event);
|
|
380
391
|
this._reconnect(socketUrl);
|
|
381
392
|
// metric: disconnect
|
|
382
393
|
// if (reason === done forced) metric: force closure
|
|
383
394
|
} else {
|
|
384
|
-
this.logger.info(
|
|
395
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; will not reconnect"));
|
|
385
396
|
this._emit('offline.permanent', event);
|
|
386
397
|
}
|
|
387
398
|
break;
|
|
388
399
|
default:
|
|
389
|
-
this.logger.info(
|
|
400
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected unexpectedly; will not reconnect"));
|
|
390
401
|
// unexpected disconnect
|
|
391
402
|
this._emit('offline.permanent', event);
|
|
392
403
|
}
|
|
393
404
|
} catch (error) {
|
|
394
|
-
this.logger.error(
|
|
405
|
+
this.logger.error("".concat(this.namespace, ": error occurred in close handler"), error);
|
|
395
406
|
}
|
|
396
407
|
},
|
|
397
408
|
_onmessage: function _onmessage(event) {
|
|
398
409
|
var _this6 = this;
|
|
399
410
|
var envelope = event.data;
|
|
400
411
|
if (process.env.ENABLE_MERCURY_LOGGING) {
|
|
401
|
-
this.logger.debug(
|
|
412
|
+
this.logger.debug("".concat(this.namespace, ": message envelope: "), envelope);
|
|
402
413
|
}
|
|
403
414
|
var data = envelope.data;
|
|
404
415
|
this._applyOverrides(data);
|
|
@@ -409,7 +420,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
409
420
|
return new _promise.default(function (resolve) {
|
|
410
421
|
return resolve((_this6.webex[namespace] || _this6.webex.internal[namespace])[name](data));
|
|
411
422
|
}).catch(function (reason) {
|
|
412
|
-
return _this6.logger.error("
|
|
423
|
+
return _this6.logger.error("".concat(_this6.namespace, ": error occurred in autowired event handler for ").concat(data.eventType), reason);
|
|
413
424
|
});
|
|
414
425
|
});
|
|
415
426
|
}, _promise.default.resolve()).then(function () {
|
|
@@ -424,15 +435,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
424
435
|
_this6._emit("event:".concat(data.eventType), envelope);
|
|
425
436
|
}
|
|
426
437
|
}).catch(function (reason) {
|
|
427
|
-
_this6.logger.error(
|
|
438
|
+
_this6.logger.error("".concat(_this6.namespace, ": error occurred processing socket message"), reason);
|
|
428
439
|
});
|
|
429
440
|
},
|
|
430
441
|
_reconnect: function _reconnect(webSocketUrl) {
|
|
431
|
-
this.logger.info(
|
|
442
|
+
this.logger.info("".concat(this.namespace, ": reconnecting"));
|
|
432
443
|
return this.connect(webSocketUrl);
|
|
433
444
|
},
|
|
434
|
-
version: "2.
|
|
445
|
+
version: "2.60.0-next.1"
|
|
435
446
|
}, ((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)));
|
|
436
|
-
var _default = Mercury;
|
|
437
|
-
exports.default = _default;
|
|
447
|
+
var _default = exports.default = Mercury;
|
|
438
448
|
//# 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","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalReconnectReasons","Mercury","WebexPlugin","extend","deprecated","namespace","session","connected","type","connecting","socket","localClusterServiceUrls","derived","listening","deps","fn","connect","webSocketUrl","_this","logger","info","_promise","resolve","webex","internal","device","registered","register","then","_connectWithBackoff","disconnect","_this2","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","format","_attemptConnection","socketUrl","callback","_this4","Socket","attemptWSUrl","on","_onclose","_onmessage","_len","args","Array","_key","_emit","concat","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","Error","options","forceCloseDelay","config","pingInterval","pongTimeout","toString","trackingId","sessionId","_now","defaultMercuryOptions","open","metrics","submitClientMetrics","fields","success","tags","action","refresh","catch","reason","code","getNumRetries","retries","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","error","markFailedUrl","_this5","call","onComplete","err","undefined","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","maxRetries","failAfter","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","stack","start","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","includes","_this6","envelope","data","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/*!\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\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\n },\n\n @oneFlight\n connect(webSocketUrl) {\n if (this.connected) {\n this.logger.info('mercury: 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('mercury: connecting');\n\n return this._connectWithBackoff(webSocketUrl);\n });\n },\n\n @oneFlight\n disconnect() {\n return new Promise((resolve) => {\n if (this.backoffCall) {\n this.logger.info('mercury: aborting connection');\n this.backoffCall.abort();\n }\n\n if (this.socket) {\n this.socket.removeAllListeners('message');\n this.once('offline', resolve);\n this.socket.close();\n\n return;\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 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('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\n\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\n .then(([webSocketUrl, token]) => {\n if (!this.backoffCall) {\n const msg = 'mercury: 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('mercury: 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 return socket.open(webSocketUrl, options);\n })\n .then(() => {\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: true,\n },\n tags: {\n action: 'connected',\n url: attemptWSUrl,\n },\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 // 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('mercury: connection attempt failed', reason);\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 'mercury: 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('mercury: 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('mercury: 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 'mercury: received a generic connection error, will try to connect to another datacenter'\n );\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: false,\n },\n tags: {\n action: 'failed',\n error: reason.message,\n url: attemptWSUrl,\n },\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('mercury: 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 `mercury: 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._emit('online');\n\n return resolve();\n };\n\n // eslint-disable-next-line prefer-reflect\n call = backoff.call((callback) => {\n this.logger.info(`mercury: 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.maxRetries) {\n call.failAfter(this.config.maxRetries);\n }\n\n call.on('abort', () => {\n this.logger.info('mercury: 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 `mercury: 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('mercury: ', err, err.stack);\n }\n\n return;\n }\n this.logger.info('mercury: 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('mercury: error occurred in event handler', error);\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 `mercury: 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('mercury: 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('mercury: 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 if (normalReconnectReasons.includes(reason)) {\n this.logger.info('mercury: 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('mercury: socket disconnected; will not reconnect');\n this._emit('offline.permanent', event);\n }\n break;\n default:\n this.logger.info('mercury: socket disconnected unexpectedly; will not reconnect');\n // unexpected disconnect\n this._emit('offline.permanent', event);\n }\n } catch (error) {\n this.logger.error('mercury: error occurred in close handler', error);\n }\n },\n\n _onmessage(event) {\n const envelope = event.data;\n\n if (process.env.ENABLE_MERCURY_LOGGING) {\n this.logger.debug('mercury: 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 `mercury: 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('mercury: error occurred processing socket message', reason);\n });\n },\n\n _reconnect(webSocketUrl) {\n this.logger.info('mercury: 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","session","connected","type","connecting","socket","localClusterServiceUrls","derived","listening","deps","fn","connect","webSocketUrl","_this","logger","info","concat","_promise","resolve","webex","internal","device","registered","register","then","_connectWithBackoff","disconnect","_this2","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","format","_attemptConnection","socketUrl","callback","_this4","Socket","attemptWSUrl","on","_onclose","_onmessage","_len","args","Array","_key","_emit","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","Error","options","forceCloseDelay","config","pingInterval","pongTimeout","toString","trackingId","sessionId","_now","defaultMercuryOptions","open","metrics","submitClientMetrics","fields","success","tags","action","refresh","catch","reason","code","getNumRetries","retries","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","error","markFailedUrl","_this5","call","onComplete","err","undefined","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","maxRetries","failAfter","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","stack","start","_len2","_key2","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","includes","_this6","envelope","data","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/*!\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\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\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 @oneFlight\n disconnect() {\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());\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 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('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...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.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: true,\n },\n tags: {\n namespace: this.namespace,\n action: 'connected',\n url: attemptWSUrl,\n },\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 // 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(`${this.namespace}: connection attempt failed`, reason);\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`\n );\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: false,\n },\n tags: {\n namespace: this.namespace,\n action: 'failed',\n error: reason.message,\n url: attemptWSUrl,\n },\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._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.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(`${this.namespace}: error occurred in event handler`, {\n error,\n arguments: 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 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(`${this.namespace}: socket disconnected; will not reconnect`);\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 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 _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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"}
|