@webex/internal-plugin-mercury 3.0.0-bnr.5 → 3.0.0-next.10
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/.eslintrc.js +6 -0
- package/README.md +14 -1
- package/babel.config.js +3 -0
- 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 +75 -63
- package/dist/mercury.js.map +1 -1
- package/dist/socket/index.js.map +1 -1
- package/dist/socket/socket-base.js +57 -42
- 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/jest.config.js +3 -0
- package/package.json +35 -16
- package/process +1 -0
- package/src/mercury.js +63 -52
- package/src/socket/socket-base.js +61 -28
- package/test/integration/spec/webex.js +3 -2
- package/test/unit/spec/mercury.js +87 -9
- package/test/unit/spec/socket.js +18 -1
- package/dist/types/config.d.ts +0 -10
- package/dist/types/errors.d.ts +0 -31
- package/dist/types/index.d.ts +0 -4
- package/dist/types/mercury.d.ts +0 -2
- package/dist/types/socket/index.d.ts +0 -1
- package/dist/types/socket/socket-base.d.ts +0 -120
- package/dist/types/socket/socket.d.ts +0 -2
- package/dist/types/socket/socket.shim.d.ts +0 -2
- package/test/unit/spec/_setup.js +0 -5
package/.eslintrc.js
ADDED
package/README.md
CHANGED
|
@@ -29,7 +29,9 @@ const webex = new WebexCore();
|
|
|
29
29
|
webex.internal.mercury.WHATEVER;
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## Config Options
|
|
33
|
+
|
|
34
|
+
### Using A Proxy Agent To Open A Websocket Connection
|
|
33
35
|
|
|
34
36
|
For consumers who are not using the SDK via the browser it may be necessary to configure a proxy agent in order to connect with Mercury and open a Websocket in a proxy environment.
|
|
35
37
|
|
|
@@ -51,6 +53,17 @@ webex.init({
|
|
|
51
53
|
});
|
|
52
54
|
```
|
|
53
55
|
|
|
56
|
+
### Retries
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
The default behaviour is for Mercury to continue to try to connect with an exponential back-off. This behavior can be adjusted with the following config params:
|
|
60
|
+
|
|
61
|
+
- `maxRetries` - the number of times it will retry before error. Default: 0
|
|
62
|
+
- `initialConnectionMaxRetries` - the number of times it will retry before error on the first connection. Once a connection has been established, any further connection attempts will use `maxRetries`. Default: 0
|
|
63
|
+
- `backoffTimeMax` - The maximum time between connection attempts in ms. Default: 32000
|
|
64
|
+
- `backoffTimeReset` - The time before the first retry in ms. Default: 1000
|
|
65
|
+
|
|
66
|
+
|
|
54
67
|
## Maintainers
|
|
55
68
|
|
|
56
69
|
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
package/babel.config.js
ADDED
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":["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,
|
|
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":["ConnectionError","
|
|
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":["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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
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
|
@@ -20,21 +20,24 @@ var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-c
|
|
|
20
20
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
21
21
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
|
|
22
22
|
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/applyDecoratedDescriptor"));
|
|
23
|
-
var _set2 = _interopRequireDefault(require("lodash/set"));
|
|
24
|
-
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
25
|
-
var _camelCase2 = _interopRequireDefault(require("lodash/camelCase"));
|
|
26
23
|
var _url = _interopRequireDefault(require("url"));
|
|
27
24
|
var _webexCore = require("@webex/webex-core");
|
|
28
25
|
var _common = require("@webex/common");
|
|
26
|
+
var _lodash = require("lodash");
|
|
29
27
|
var _backoff = _interopRequireDefault(require("backoff"));
|
|
30
28
|
var _socket = _interopRequireDefault(require("./socket"));
|
|
31
29
|
var _errors = require("./errors");
|
|
32
30
|
var _dec, _dec2, _obj;
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
/* eslint-disable require-jsdoc */
|
|
32
|
+
/*!
|
|
33
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
34
|
+
*/
|
|
35
|
+
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; }
|
|
36
|
+
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; }
|
|
35
37
|
var normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];
|
|
36
38
|
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 = {
|
|
37
39
|
namespace: 'Mercury',
|
|
40
|
+
lastError: undefined,
|
|
38
41
|
session: {
|
|
39
42
|
connected: {
|
|
40
43
|
default: false,
|
|
@@ -44,6 +47,10 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
44
47
|
default: false,
|
|
45
48
|
type: 'boolean'
|
|
46
49
|
},
|
|
50
|
+
hasEverConnected: {
|
|
51
|
+
default: false,
|
|
52
|
+
type: 'boolean'
|
|
53
|
+
},
|
|
47
54
|
socket: 'object',
|
|
48
55
|
localClusterServiceUrls: 'object'
|
|
49
56
|
},
|
|
@@ -55,15 +62,22 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
55
62
|
}
|
|
56
63
|
}
|
|
57
64
|
},
|
|
65
|
+
/**
|
|
66
|
+
* Get the last error.
|
|
67
|
+
* @returns {any} The last error.
|
|
68
|
+
*/
|
|
69
|
+
getLastError: function getLastError() {
|
|
70
|
+
return this.lastError;
|
|
71
|
+
},
|
|
58
72
|
connect: function connect(webSocketUrl) {
|
|
59
73
|
var _this = this;
|
|
60
74
|
if (this.connected) {
|
|
61
|
-
this.logger.info(
|
|
75
|
+
this.logger.info("".concat(this.namespace, ": already connected, will not connect again"));
|
|
62
76
|
return _promise.default.resolve();
|
|
63
77
|
}
|
|
64
78
|
this.connecting = true;
|
|
65
79
|
return _promise.default.resolve(this.webex.internal.device.registered || this.webex.internal.device.register()).then(function () {
|
|
66
|
-
_this.logger.info(
|
|
80
|
+
_this.logger.info("".concat(_this.namespace, ": connecting"));
|
|
67
81
|
return _this._connectWithBackoff(webSocketUrl);
|
|
68
82
|
});
|
|
69
83
|
},
|
|
@@ -71,14 +85,13 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
71
85
|
var _this2 = this;
|
|
72
86
|
return new _promise.default(function (resolve) {
|
|
73
87
|
if (_this2.backoffCall) {
|
|
74
|
-
_this2.logger.info(
|
|
88
|
+
_this2.logger.info("".concat(_this2.namespace, ": aborting connection"));
|
|
75
89
|
_this2.backoffCall.abort();
|
|
76
90
|
}
|
|
77
91
|
if (_this2.socket) {
|
|
78
92
|
_this2.socket.removeAllListeners('message');
|
|
79
93
|
_this2.once('offline', resolve);
|
|
80
|
-
_this2.socket.close();
|
|
81
|
-
return;
|
|
94
|
+
resolve(_this2.socket.close());
|
|
82
95
|
}
|
|
83
96
|
resolve();
|
|
84
97
|
});
|
|
@@ -100,7 +113,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
100
113
|
}
|
|
101
114
|
var headerKeys = (0, _keys.default)(event.headers);
|
|
102
115
|
headerKeys.forEach(function (keyPath) {
|
|
103
|
-
(0,
|
|
116
|
+
(0, _lodash.set)(event, keyPath, event.headers[keyPath]);
|
|
104
117
|
});
|
|
105
118
|
},
|
|
106
119
|
_prepareUrl: function _prepareUrl(webSocketUrl) {
|
|
@@ -131,7 +144,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
131
144
|
});
|
|
132
145
|
(0, _deleteProperty.default)(webSocketUrl.query, 'bufferStates');
|
|
133
146
|
}
|
|
134
|
-
if ((0,
|
|
147
|
+
if ((0, _lodash.get)(_this3, 'webex.config.device.ephemeral', false)) {
|
|
135
148
|
webSocketUrl.query.multipleConnections = true;
|
|
136
149
|
}
|
|
137
150
|
return _url.default.format(webSocketUrl);
|
|
@@ -153,12 +166,18 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
153
166
|
}
|
|
154
167
|
return _this4._emit.apply(_this4, ['sequence-mismatch'].concat(args));
|
|
155
168
|
});
|
|
169
|
+
socket.on('ping-pong-latency', function () {
|
|
170
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
171
|
+
args[_key2] = arguments[_key2];
|
|
172
|
+
}
|
|
173
|
+
return _this4._emit.apply(_this4, ['ping-pong-latency'].concat(args));
|
|
174
|
+
});
|
|
156
175
|
_promise.default.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()]).then(function (_ref) {
|
|
157
176
|
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
158
177
|
webSocketUrl = _ref2[0],
|
|
159
178
|
token = _ref2[1];
|
|
160
179
|
if (!_this4.backoffCall) {
|
|
161
|
-
var msg =
|
|
180
|
+
var msg = "".concat(_this4.namespace, ": prevent socket open when backoffCall no longer defined");
|
|
162
181
|
_this4.logger.info(msg);
|
|
163
182
|
return _promise.default.reject(new Error(msg));
|
|
164
183
|
}
|
|
@@ -174,24 +193,17 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
174
193
|
|
|
175
194
|
// if the consumer has supplied request options use them
|
|
176
195
|
if (_this4.webex.config.defaultMercuryOptions) {
|
|
177
|
-
_this4.logger.info(
|
|
196
|
+
_this4.logger.info("".concat(_this4.namespace, ": setting custom options"));
|
|
178
197
|
options = _objectSpread(_objectSpread({}, options), _this4.webex.config.defaultMercuryOptions);
|
|
179
198
|
}
|
|
180
199
|
|
|
181
200
|
// Set the socket before opening it. This allows a disconnect() to close
|
|
182
201
|
// the socket if it is in the process of being opened.
|
|
183
202
|
_this4.socket = socket;
|
|
203
|
+
_this4.logger.info("".concat(_this4.namespace, " connection url: ").concat(webSocketUrl));
|
|
184
204
|
return socket.open(webSocketUrl, options);
|
|
185
205
|
}).then(function () {
|
|
186
|
-
_this4.
|
|
187
|
-
fields: {
|
|
188
|
-
success: true
|
|
189
|
-
},
|
|
190
|
-
tags: {
|
|
191
|
-
action: 'connected',
|
|
192
|
-
url: attemptWSUrl
|
|
193
|
-
}
|
|
194
|
-
});
|
|
206
|
+
_this4.logger.info("".concat(_this4.namespace, ": connected to mercury, success, action: connected, url: ").concat(attemptWSUrl));
|
|
195
207
|
callback();
|
|
196
208
|
return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
|
|
197
209
|
if (haMessagingEnabled) {
|
|
@@ -200,6 +212,8 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
200
212
|
return _promise.default.resolve();
|
|
201
213
|
});
|
|
202
214
|
}).catch(function (reason) {
|
|
215
|
+
_this4.lastError = reason; // remember the last error
|
|
216
|
+
|
|
203
217
|
// Suppress connection errors that appear to be network related. This
|
|
204
218
|
// may end up suppressing metrics during outages, but we might not care
|
|
205
219
|
// (especially since many of our outages happen in a way that client
|
|
@@ -209,18 +223,18 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
209
223
|
retries: _this4.backoffCall.getNumRetries()
|
|
210
224
|
});
|
|
211
225
|
}
|
|
212
|
-
_this4.logger.info(
|
|
226
|
+
_this4.logger.info("".concat(_this4.namespace, ": connection attempt failed"), reason);
|
|
213
227
|
// UnknownResponse is produced by IE for any 4XXX; treated it like a bad
|
|
214
228
|
// web socket url and let WDM handle the token checking
|
|
215
229
|
if (reason instanceof _errors.UnknownResponse) {
|
|
216
|
-
_this4.logger.info(
|
|
230
|
+
_this4.logger.info("".concat(_this4.namespace, ": received unknown response code, refreshing device registration"));
|
|
217
231
|
return _this4.webex.internal.device.refresh().then(function () {
|
|
218
232
|
return callback(reason);
|
|
219
233
|
});
|
|
220
234
|
}
|
|
221
235
|
// NotAuthorized implies expired token
|
|
222
236
|
if (reason instanceof _errors.NotAuthorized) {
|
|
223
|
-
_this4.logger.info(
|
|
237
|
+
_this4.logger.info("".concat(_this4.namespace, ": received authorization error, reauthorizing"));
|
|
224
238
|
return _this4.webex.credentials.refresh({
|
|
225
239
|
force: true
|
|
226
240
|
}).then(function () {
|
|
@@ -236,24 +250,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
236
250
|
// BadRequest implies current credentials are for a Service Account
|
|
237
251
|
// Forbidden implies current user is not entitle for Webex
|
|
238
252
|
if (reason instanceof _errors.BadRequest || reason instanceof _errors.Forbidden) {
|
|
239
|
-
_this4.logger.warn(
|
|
253
|
+
_this4.logger.warn("".concat(_this4.namespace, ": received unrecoverable response from mercury"));
|
|
240
254
|
_this4.backoffCall.abort();
|
|
241
255
|
return callback(reason);
|
|
242
256
|
}
|
|
243
257
|
if (reason instanceof _errors.ConnectionError) {
|
|
244
258
|
return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
|
|
245
259
|
if (haMessagingEnabled) {
|
|
246
|
-
_this4.logger.info(
|
|
247
|
-
_this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
|
|
248
|
-
fields: {
|
|
249
|
-
success: false
|
|
250
|
-
},
|
|
251
|
-
tags: {
|
|
252
|
-
action: 'failed',
|
|
253
|
-
error: reason.message,
|
|
254
|
-
url: attemptWSUrl
|
|
255
|
-
}
|
|
256
|
-
});
|
|
260
|
+
_this4.logger.info("".concat(_this4.namespace, ": received a generic connection error, will try to connect to another datacenter. failed, action: 'failed', url: ").concat(attemptWSUrl, " error: ").concat(reason.message));
|
|
257
261
|
return _this4.webex.internal.services.markFailedUrl(attemptWSUrl);
|
|
258
262
|
}
|
|
259
263
|
return null;
|
|
@@ -263,7 +267,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
263
267
|
}
|
|
264
268
|
return callback(reason);
|
|
265
269
|
}).catch(function (reason) {
|
|
266
|
-
_this4.logger.error(
|
|
270
|
+
_this4.logger.error("".concat(_this4.namespace, ": failed to handle connection failure"), reason);
|
|
267
271
|
callback(reason);
|
|
268
272
|
});
|
|
269
273
|
},
|
|
@@ -277,52 +281,61 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
277
281
|
_this5.connecting = false;
|
|
278
282
|
_this5.backoffCall = undefined;
|
|
279
283
|
if (err) {
|
|
280
|
-
_this5.logger.info("
|
|
284
|
+
_this5.logger.info("".concat(_this5.namespace, ": failed to connect after ").concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
|
|
281
285
|
return reject(err);
|
|
282
286
|
}
|
|
283
287
|
_this5.connected = true;
|
|
288
|
+
_this5.hasEverConnected = true;
|
|
284
289
|
_this5._emit('online');
|
|
285
290
|
return resolve();
|
|
286
291
|
};
|
|
287
292
|
|
|
288
293
|
// eslint-disable-next-line prefer-reflect
|
|
289
294
|
call = _backoff.default.call(function (callback) {
|
|
290
|
-
_this5.logger.info("
|
|
295
|
+
_this5.logger.info("".concat(_this5.namespace, ": executing connection attempt ").concat(call.getNumRetries()));
|
|
291
296
|
_this5._attemptConnection(webSocketUrl, callback);
|
|
292
297
|
}, onComplete);
|
|
293
298
|
call.setStrategy(new _backoff.default.ExponentialStrategy({
|
|
294
299
|
initialDelay: _this5.config.backoffTimeReset,
|
|
295
300
|
maxDelay: _this5.config.backoffTimeMax
|
|
296
301
|
}));
|
|
297
|
-
if (_this5.config.
|
|
302
|
+
if (_this5.config.initialConnectionMaxRetries && !_this5.hasEverConnected) {
|
|
303
|
+
call.failAfter(_this5.config.initialConnectionMaxRetries);
|
|
304
|
+
} else if (_this5.config.maxRetries) {
|
|
298
305
|
call.failAfter(_this5.config.maxRetries);
|
|
299
306
|
}
|
|
300
307
|
call.on('abort', function () {
|
|
301
|
-
_this5.logger.info(
|
|
308
|
+
_this5.logger.info("".concat(_this5.namespace, ": connection aborted"));
|
|
302
309
|
reject(new Error('Mercury Connection Aborted'));
|
|
303
310
|
});
|
|
304
311
|
call.on('callback', function (err) {
|
|
305
312
|
if (err) {
|
|
306
313
|
var number = call.getNumRetries();
|
|
307
314
|
var delay = Math.min(call.strategy_.nextBackoffDelay_, _this5.config.backoffTimeMax);
|
|
308
|
-
_this5.logger.info("
|
|
315
|
+
_this5.logger.info("".concat(_this5.namespace, ": failed to connect; attempting retry ").concat(number + 1, " in ").concat(delay, " ms"));
|
|
309
316
|
/* istanbul ignore if */
|
|
310
317
|
if (process.env.NODE_ENV === 'development') {
|
|
311
|
-
_this5.logger.debug(
|
|
318
|
+
_this5.logger.debug("".concat(_this5.namespace, ": "), err, err.stack);
|
|
312
319
|
}
|
|
313
320
|
return;
|
|
314
321
|
}
|
|
315
|
-
_this5.logger.info(
|
|
322
|
+
_this5.logger.info("".concat(_this5.namespace, ": connected"));
|
|
316
323
|
});
|
|
317
324
|
call.start();
|
|
318
325
|
_this5.backoffCall = call;
|
|
319
326
|
});
|
|
320
327
|
},
|
|
321
328
|
_emit: function _emit() {
|
|
329
|
+
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
|
|
330
|
+
args[_key3] = arguments[_key3];
|
|
331
|
+
}
|
|
322
332
|
try {
|
|
323
|
-
this.trigger.apply(this,
|
|
333
|
+
this.trigger.apply(this, args);
|
|
324
334
|
} catch (error) {
|
|
325
|
-
this.logger.error(
|
|
335
|
+
this.logger.error("".concat(this.namespace, ": error occurred in event handler"), {
|
|
336
|
+
error: error,
|
|
337
|
+
arguments: args
|
|
338
|
+
});
|
|
326
339
|
}
|
|
327
340
|
},
|
|
328
341
|
_getEventHandlers: function _getEventHandlers(eventType) {
|
|
@@ -334,7 +347,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
334
347
|
if (!this.webex[namespace] && !this.webex.internal[namespace]) {
|
|
335
348
|
return handlers;
|
|
336
349
|
}
|
|
337
|
-
var handlerName = (0,
|
|
350
|
+
var handlerName = (0, _lodash.camelCase)("process_".concat(name, "_event"));
|
|
338
351
|
if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {
|
|
339
352
|
handlers.push({
|
|
340
353
|
name: handlerName,
|
|
@@ -357,19 +370,19 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
357
370
|
switch (event.code) {
|
|
358
371
|
case 1003:
|
|
359
372
|
// metric: disconnect
|
|
360
|
-
this.logger.info("
|
|
373
|
+
this.logger.info("".concat(this.namespace, ": Mercury service rejected last message; will not reconnect: ").concat(event.reason));
|
|
361
374
|
this._emit('offline.permanent', event);
|
|
362
375
|
break;
|
|
363
376
|
case 4000:
|
|
364
377
|
// metric: disconnect
|
|
365
|
-
this.logger.info(
|
|
378
|
+
this.logger.info("".concat(this.namespace, ": socket replaced; will not reconnect"));
|
|
366
379
|
this._emit('offline.replaced', event);
|
|
367
380
|
break;
|
|
368
381
|
case 1001:
|
|
369
382
|
case 1005:
|
|
370
383
|
case 1006:
|
|
371
384
|
case 1011:
|
|
372
|
-
this.logger.info(
|
|
385
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
|
|
373
386
|
this._emit('offline.transient', event);
|
|
374
387
|
this._reconnect(socketUrl);
|
|
375
388
|
// metric: disconnect
|
|
@@ -377,30 +390,30 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
377
390
|
break;
|
|
378
391
|
case 1000:
|
|
379
392
|
if (normalReconnectReasons.includes(reason)) {
|
|
380
|
-
this.logger.info(
|
|
393
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
|
|
381
394
|
this._emit('offline.transient', event);
|
|
382
395
|
this._reconnect(socketUrl);
|
|
383
396
|
// metric: disconnect
|
|
384
397
|
// if (reason === done forced) metric: force closure
|
|
385
398
|
} else {
|
|
386
|
-
this.logger.info(
|
|
399
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected; will not reconnect"));
|
|
387
400
|
this._emit('offline.permanent', event);
|
|
388
401
|
}
|
|
389
402
|
break;
|
|
390
403
|
default:
|
|
391
|
-
this.logger.info(
|
|
404
|
+
this.logger.info("".concat(this.namespace, ": socket disconnected unexpectedly; will not reconnect"));
|
|
392
405
|
// unexpected disconnect
|
|
393
406
|
this._emit('offline.permanent', event);
|
|
394
407
|
}
|
|
395
408
|
} catch (error) {
|
|
396
|
-
this.logger.error(
|
|
409
|
+
this.logger.error("".concat(this.namespace, ": error occurred in close handler"), error);
|
|
397
410
|
}
|
|
398
411
|
},
|
|
399
412
|
_onmessage: function _onmessage(event) {
|
|
400
413
|
var _this6 = this;
|
|
401
414
|
var envelope = event.data;
|
|
402
415
|
if (process.env.ENABLE_MERCURY_LOGGING) {
|
|
403
|
-
this.logger.debug(
|
|
416
|
+
this.logger.debug("".concat(this.namespace, ": message envelope: "), envelope);
|
|
404
417
|
}
|
|
405
418
|
var data = envelope.data;
|
|
406
419
|
this._applyOverrides(data);
|
|
@@ -411,7 +424,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
411
424
|
return new _promise.default(function (resolve) {
|
|
412
425
|
return resolve((_this6.webex[namespace] || _this6.webex.internal[namespace])[name](data));
|
|
413
426
|
}).catch(function (reason) {
|
|
414
|
-
return _this6.logger.error("
|
|
427
|
+
return _this6.logger.error("".concat(_this6.namespace, ": error occurred in autowired event handler for ").concat(data.eventType), reason);
|
|
415
428
|
});
|
|
416
429
|
});
|
|
417
430
|
}, _promise.default.resolve()).then(function () {
|
|
@@ -426,15 +439,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
426
439
|
_this6._emit("event:".concat(data.eventType), envelope);
|
|
427
440
|
}
|
|
428
441
|
}).catch(function (reason) {
|
|
429
|
-
_this6.logger.error(
|
|
442
|
+
_this6.logger.error("".concat(_this6.namespace, ": error occurred processing socket message"), reason);
|
|
430
443
|
});
|
|
431
444
|
},
|
|
432
445
|
_reconnect: function _reconnect(webSocketUrl) {
|
|
433
|
-
this.logger.info(
|
|
446
|
+
this.logger.info("".concat(this.namespace, ": reconnecting"));
|
|
434
447
|
return this.connect(webSocketUrl);
|
|
435
448
|
},
|
|
436
|
-
version: "3.0.0-
|
|
449
|
+
version: "3.0.0-next.10"
|
|
437
450
|
}, ((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)));
|
|
438
|
-
var _default = Mercury;
|
|
439
|
-
exports.default = _default;
|
|
451
|
+
var _default = exports.default = Mercury;
|
|
440
452
|
//# sourceMappingURL=mercury.js.map
|