@webex/internal-plugin-mercury 2.59.1 → 2.59.3-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/.eslintrc.js +6 -6
- package/README.md +64 -64
- package/babel.config.js +3 -3
- package/dist/config.js +18 -18
- package/dist/config.js.map +1 -1
- package/dist/errors.js +13 -13
- package/dist/errors.js.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mercury.js +1 -1
- package/dist/mercury.js.map +1 -1
- package/dist/socket/index.js.map +1 -1
- package/dist/socket/socket-base.js +76 -76
- package/dist/socket/socket-base.js.map +1 -1
- package/dist/socket/socket.js +2 -2
- package/dist/socket/socket.js.map +1 -1
- package/dist/socket/socket.shim.js +2 -2
- package/dist/socket/socket.shim.js.map +1 -1
- package/jest.config.js +3 -3
- package/package.json +24 -23
- package/process +1 -1
- package/src/config.js +34 -34
- package/src/errors.js +66 -66
- package/src/index.js +32 -32
- package/src/mercury.js +498 -498
- package/src/socket/index.js +5 -5
- package/src/socket/socket-base.js +481 -481
- package/src/socket/socket.js +13 -13
- package/src/socket/socket.shim.js +31 -31
- package/test/integration/spec/mercury.js +117 -117
- package/test/integration/spec/sharable-mercury.js +59 -59
- package/test/integration/spec/webex.js +43 -43
- package/test/unit/lib/promise-tick.js +19 -19
- package/test/unit/spec/mercury-events.js +473 -473
- package/test/unit/spec/mercury.js +709 -709
- package/test/unit/spec/socket.js +812 -812
package/.eslintrc.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
const config = {
|
|
2
|
-
root: true,
|
|
3
|
-
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
-
};
|
|
5
|
-
|
|
6
|
-
module.exports = config;
|
|
1
|
+
const config = {
|
|
2
|
+
root: true,
|
|
3
|
+
extends: ['@webex/eslint-config-legacy'],
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
module.exports = config;
|
package/README.md
CHANGED
|
@@ -1,64 +1,64 @@
|
|
|
1
|
-
# @webex/internal-plugin-mercury
|
|
2
|
-
|
|
3
|
-
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
-
|
|
5
|
-
> Plugin for the Mercury service
|
|
6
|
-
|
|
7
|
-
This is an internal Cisco Webex plugin. As such, it does not strictly adhere to semantic versioning. Use at your own risk. If you're not working on one of our first party clients, please look at our [developer api](https://developer.webex.com/) and stick to our public plugins.
|
|
8
|
-
|
|
9
|
-
- [Install](#install)
|
|
10
|
-
- [Usage](#usage)
|
|
11
|
-
- [Contribute](#contribute)
|
|
12
|
-
- [Maintainers](#maintainers)
|
|
13
|
-
- [License](#license)
|
|
14
|
-
|
|
15
|
-
## Install
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
npm install --save @webex/internal-plugin-mercury
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## Usage
|
|
22
|
-
|
|
23
|
-
```js
|
|
24
|
-
import '@webex/internal-plugin-mercury';
|
|
25
|
-
|
|
26
|
-
import WebexCore from '@webex/webex-core';
|
|
27
|
-
|
|
28
|
-
const webex = new WebexCore();
|
|
29
|
-
webex.internal.mercury.WHATEVER;
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
## Using A Proxy Agent To Open A Websocket Connection
|
|
33
|
-
|
|
34
|
-
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
|
-
|
|
36
|
-
This can be done by configuring an agent as part of a DefaultMercuryOptions config object as shown below. The agent object will then be injected into the SDK and used in the Mercury plugin during WebSocket construction as an option property, allowing a connection to be established via the specified proxy url.
|
|
37
|
-
|
|
38
|
-
```js
|
|
39
|
-
const webex = require(`webex`);
|
|
40
|
-
const HttpsProxyAgent = require('https-proxy-agent');
|
|
41
|
-
|
|
42
|
-
let httpsProxyAgent = new HttpsProxyAgent(url.parse(proxyUrl));
|
|
43
|
-
|
|
44
|
-
webex.init({
|
|
45
|
-
config: {
|
|
46
|
-
defaultMercuryOptions: {
|
|
47
|
-
agent: httpsProxyAgent
|
|
48
|
-
},
|
|
49
|
-
...
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
## Maintainers
|
|
55
|
-
|
|
56
|
-
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
57
|
-
|
|
58
|
-
## Contribute
|
|
59
|
-
|
|
60
|
-
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
61
|
-
|
|
62
|
-
## License
|
|
63
|
-
|
|
64
|
-
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
|
1
|
+
# @webex/internal-plugin-mercury
|
|
2
|
+
|
|
3
|
+
[](https://github.com/RichardLitt/standard-readme)
|
|
4
|
+
|
|
5
|
+
> Plugin for the Mercury service
|
|
6
|
+
|
|
7
|
+
This is an internal Cisco Webex plugin. As such, it does not strictly adhere to semantic versioning. Use at your own risk. If you're not working on one of our first party clients, please look at our [developer api](https://developer.webex.com/) and stick to our public plugins.
|
|
8
|
+
|
|
9
|
+
- [Install](#install)
|
|
10
|
+
- [Usage](#usage)
|
|
11
|
+
- [Contribute](#contribute)
|
|
12
|
+
- [Maintainers](#maintainers)
|
|
13
|
+
- [License](#license)
|
|
14
|
+
|
|
15
|
+
## Install
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install --save @webex/internal-plugin-mercury
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Usage
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
import '@webex/internal-plugin-mercury';
|
|
25
|
+
|
|
26
|
+
import WebexCore from '@webex/webex-core';
|
|
27
|
+
|
|
28
|
+
const webex = new WebexCore();
|
|
29
|
+
webex.internal.mercury.WHATEVER;
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Using A Proxy Agent To Open A Websocket Connection
|
|
33
|
+
|
|
34
|
+
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
|
+
|
|
36
|
+
This can be done by configuring an agent as part of a DefaultMercuryOptions config object as shown below. The agent object will then be injected into the SDK and used in the Mercury plugin during WebSocket construction as an option property, allowing a connection to be established via the specified proxy url.
|
|
37
|
+
|
|
38
|
+
```js
|
|
39
|
+
const webex = require(`webex`);
|
|
40
|
+
const HttpsProxyAgent = require('https-proxy-agent');
|
|
41
|
+
|
|
42
|
+
let httpsProxyAgent = new HttpsProxyAgent(url.parse(proxyUrl));
|
|
43
|
+
|
|
44
|
+
webex.init({
|
|
45
|
+
config: {
|
|
46
|
+
defaultMercuryOptions: {
|
|
47
|
+
agent: httpsProxyAgent
|
|
48
|
+
},
|
|
49
|
+
...
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Maintainers
|
|
55
|
+
|
|
56
|
+
This package is maintained by [Cisco Webex for Developers](https://developer.webex.com/).
|
|
57
|
+
|
|
58
|
+
## Contribute
|
|
59
|
+
|
|
60
|
+
Pull requests welcome. Please see [CONTRIBUTING.md](https://github.com/webex/webex-js-sdk/blob/master/CONTRIBUTING.md) for more details.
|
|
61
|
+
|
|
62
|
+
## License
|
|
63
|
+
|
|
64
|
+
© 2016-2020 Cisco and/or its affiliates. All Rights Reserved.
|
package/babel.config.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
-
|
|
3
|
-
module.exports = babelConfigLegacy;
|
|
1
|
+
const babelConfigLegacy = require('@webex/babel-config-legacy');
|
|
2
|
+
|
|
3
|
+
module.exports = babelConfigLegacy;
|
package/dist/config.js
CHANGED
|
@@ -5,35 +5,35 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
-
/*!
|
|
9
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
8
|
+
/*!
|
|
9
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
10
10
|
*/
|
|
11
11
|
var _default = {
|
|
12
12
|
mercury: {
|
|
13
|
-
/**
|
|
14
|
-
* Milliseconds between pings sent up the socket
|
|
15
|
-
* @type {number}
|
|
13
|
+
/**
|
|
14
|
+
* Milliseconds between pings sent up the socket
|
|
15
|
+
* @type {number}
|
|
16
16
|
*/
|
|
17
17
|
pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,
|
|
18
|
-
/**
|
|
19
|
-
* Milliseconds to wait for a pong before declaring the connection dead
|
|
20
|
-
* @type {number}
|
|
18
|
+
/**
|
|
19
|
+
* Milliseconds to wait for a pong before declaring the connection dead
|
|
20
|
+
* @type {number}
|
|
21
21
|
*/
|
|
22
22
|
pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,
|
|
23
|
-
/**
|
|
24
|
-
* Maximum milliseconds between connection attempts
|
|
25
|
-
* @type {Number}
|
|
23
|
+
/**
|
|
24
|
+
* Maximum milliseconds between connection attempts
|
|
25
|
+
* @type {Number}
|
|
26
26
|
*/
|
|
27
27
|
backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,
|
|
28
|
-
/**
|
|
29
|
-
* Initial milliseconds between connection attempts
|
|
30
|
-
* @type {Number}
|
|
28
|
+
/**
|
|
29
|
+
* Initial milliseconds between connection attempts
|
|
30
|
+
* @type {Number}
|
|
31
31
|
*/
|
|
32
32
|
backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,
|
|
33
|
-
/**
|
|
34
|
-
* Milliseconds to wait for a close frame before declaring the socket dead and
|
|
35
|
-
* discarding it
|
|
36
|
-
* @type {[type]}
|
|
33
|
+
/**
|
|
34
|
+
* Milliseconds to wait for a close frame before declaring the socket dead and
|
|
35
|
+
* discarding it
|
|
36
|
+
* @type {[type]}
|
|
37
37
|
*/
|
|
38
38
|
forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000
|
|
39
39
|
}
|
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","exports","default"],"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,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;AAAAC,OAAA,CAAAC,OAAA,GAAAf,QAAA"}
|
|
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","exports","default"],"sources":["config.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nexport default {\r\n mercury: {\r\n /**\r\n * Milliseconds between pings sent up the socket\r\n * @type {number}\r\n */\r\n pingInterval: process.env.MERCURY_PING_INTERVAL || 15000,\r\n /**\r\n * Milliseconds to wait for a pong before declaring the connection dead\r\n * @type {number}\r\n */\r\n pongTimeout: process.env.MERCURY_PONG_TIMEOUT || 14000,\r\n /**\r\n * Maximum milliseconds between connection attempts\r\n * @type {Number}\r\n */\r\n backoffTimeMax: process.env.MERCURY_BACKOFF_TIME_MAX || 32000,\r\n /**\r\n * Initial milliseconds between connection attempts\r\n * @type {Number}\r\n */\r\n backoffTimeReset: process.env.MERCURY_BACKOFF_TIME_RESET || 1000,\r\n /**\r\n * Milliseconds to wait for a close frame before declaring the socket dead and\r\n * discarding it\r\n * @type {[type]}\r\n */\r\n forceCloseDelay: process.env.MERCURY_FORCE_CLOSE_DELAY || 2000,\r\n },\r\n};\r\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AAFA,IAAAA,QAAA,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;AAAAC,OAAA,CAAAC,OAAA,GAAAf,QAAA"}
|
package/dist/errors.js
CHANGED
|
@@ -17,8 +17,8 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
|
|
|
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
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
|
-
/**
|
|
21
|
-
* Exception thrown when a websocket gets closed
|
|
20
|
+
/**
|
|
21
|
+
* Exception thrown when a websocket gets closed
|
|
22
22
|
*/
|
|
23
23
|
var ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
24
24
|
(0, _inherits2.default)(ConnectionError, _Exception);
|
|
@@ -30,9 +30,9 @@ var ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
|
30
30
|
(0, _createClass2.default)(ConnectionError, [{
|
|
31
31
|
key: "parse",
|
|
32
32
|
value:
|
|
33
|
-
/**
|
|
34
|
-
* @param {CloseEvent} event
|
|
35
|
-
* @returns {string}
|
|
33
|
+
/**
|
|
34
|
+
* @param {CloseEvent} event
|
|
35
|
+
* @returns {string}
|
|
36
36
|
*/
|
|
37
37
|
function parse() {
|
|
38
38
|
var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -49,8 +49,8 @@ var ConnectionError = /*#__PURE__*/function (_Exception) {
|
|
|
49
49
|
}]);
|
|
50
50
|
return ConnectionError;
|
|
51
51
|
}(_common.Exception);
|
|
52
|
-
/**
|
|
53
|
-
* thrown for CloseCode 4400
|
|
52
|
+
/**
|
|
53
|
+
* thrown for CloseCode 4400
|
|
54
54
|
*/
|
|
55
55
|
exports.ConnectionError = ConnectionError;
|
|
56
56
|
(0, _defineProperty2.default)(ConnectionError, "defaultMessage", 'Failed to connect to socket');
|
|
@@ -63,8 +63,8 @@ var UnknownResponse = /*#__PURE__*/function (_ConnectionError) {
|
|
|
63
63
|
}
|
|
64
64
|
return (0, _createClass2.default)(UnknownResponse);
|
|
65
65
|
}(ConnectionError);
|
|
66
|
-
/**
|
|
67
|
-
* thrown for CloseCode 4400
|
|
66
|
+
/**
|
|
67
|
+
* thrown for CloseCode 4400
|
|
68
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');
|
|
@@ -77,8 +77,8 @@ var BadRequest = /*#__PURE__*/function (_ConnectionError2) {
|
|
|
77
77
|
}
|
|
78
78
|
return (0, _createClass2.default)(BadRequest);
|
|
79
79
|
}(ConnectionError);
|
|
80
|
-
/**
|
|
81
|
-
* thrown for CloseCode 4401
|
|
80
|
+
/**
|
|
81
|
+
* thrown for CloseCode 4401
|
|
82
82
|
*/
|
|
83
83
|
exports.BadRequest = BadRequest;
|
|
84
84
|
(0, _defineProperty2.default)(BadRequest, "defaultMessage", 'BadRequest usually implies an attempt to use service account credentials');
|
|
@@ -91,8 +91,8 @@ var NotAuthorized = /*#__PURE__*/function (_ConnectionError3) {
|
|
|
91
91
|
}
|
|
92
92
|
return (0, _createClass2.default)(NotAuthorized);
|
|
93
93
|
}(ConnectionError);
|
|
94
|
-
/**
|
|
95
|
-
* thrown for CloseCode 4403
|
|
94
|
+
/**
|
|
95
|
+
* thrown for CloseCode 4403
|
|
96
96
|
*/
|
|
97
97
|
exports.NotAuthorized = NotAuthorized;
|
|
98
98
|
(0, _defineProperty2.default)(NotAuthorized, "defaultMessage", 'Please refresh your access token');
|
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","exports","_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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"}
|
|
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","exports","_defineProperty2","UnknownResponse","_ConnectionError","_super2","BadRequest","_ConnectionError2","_super3","NotAuthorized","_ConnectionError3","_super4","Forbidden","_ConnectionError4","_super5"],"sources":["errors.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport {Exception} from '@webex/common';\r\n\r\n/**\r\n * Exception thrown when a websocket gets closed\r\n */\r\nexport class ConnectionError extends Exception {\r\n static defaultMessage = 'Failed to connect to socket';\r\n\r\n /**\r\n * @param {CloseEvent} event\r\n * @returns {string}\r\n */\r\n parse(event = {}) {\r\n Object.defineProperties(this, {\r\n code: {\r\n value: event.code,\r\n },\r\n reason: {\r\n value: event.reason,\r\n },\r\n });\r\n\r\n return event.reason;\r\n }\r\n}\r\n\r\n/**\r\n * thrown for CloseCode 4400\r\n */\r\nexport class UnknownResponse extends ConnectionError {\r\n static defaultMessage =\r\n 'UnknownResponse is produced by IE when we receive a 4XXX. You probably want to treat this like a NotFound';\r\n}\r\n\r\n/**\r\n * thrown for CloseCode 4400\r\n */\r\nexport class BadRequest extends ConnectionError {\r\n static defaultMessage =\r\n 'BadRequest usually implies an attempt to use service account credentials';\r\n}\r\n\r\n/**\r\n * thrown for CloseCode 4401\r\n */\r\nexport class NotAuthorized extends ConnectionError {\r\n static defaultMessage = 'Please refresh your access token';\r\n}\r\n\r\n/**\r\n * thrown for CloseCode 4403\r\n */\r\nexport class Forbidden extends ConnectionError {\r\n static defaultMessage = 'Forbidden usually implies these credentials are not entitled for Webex';\r\n}\r\n\r\n// /**\r\n// * thrown for CloseCode 4404\r\n// */\r\n// export class NotFound extends ConnectionError {\r\n// static defaultMessage = `Please refresh your Mercury registration (typically via a WDM refresh)`;\r\n// }\r\n"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -67,8 +67,8 @@ var _mercury = _interopRequireDefault(require("./mercury"));
|
|
|
67
67
|
var _config = _interopRequireDefault(require("./config"));
|
|
68
68
|
var _socket = _interopRequireDefault(require("./socket"));
|
|
69
69
|
var _errors = require("./errors");
|
|
70
|
-
/*!
|
|
71
|
-
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
70
|
+
/*!
|
|
71
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
72
72
|
*/
|
|
73
73
|
|
|
74
74
|
(0, _webexCore.registerInternalPlugin)('mercury', _mercury.default, {
|
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,EAAE;EAC1B;AACF,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"names":["require","_webexCore","_mercury","_interopRequireDefault","_config","_socket","_errors","registerInternalPlugin","Mercury","config","onBeforeLogout","disconnect"],"sources":["index.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport '@webex/internal-plugin-device';\r\nimport '@webex/internal-plugin-feature';\r\nimport '@webex/internal-plugin-metrics';\r\n\r\nimport {registerInternalPlugin} from '@webex/webex-core';\r\n\r\nimport Mercury from './mercury';\r\nimport config from './config';\r\n\r\nregisterInternalPlugin('mercury', Mercury, {\r\n config,\r\n onBeforeLogout() {\r\n return this.disconnect();\r\n },\r\n});\r\n\r\nexport {default} from './mercury';\r\nexport {default as Mercury} from './mercury';\r\nexport {default as Socket} from './socket';\r\nexport {default as config} from './config';\r\nexport {\r\n BadRequest,\r\n ConnectionError,\r\n Forbidden,\r\n NotAuthorized,\r\n UnknownResponse,\r\n // NotFound\r\n} from './errors';\r\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,EAAE;EAC1B;AACF,CAAC,CAAC"}
|
package/dist/mercury.js
CHANGED
|
@@ -433,7 +433,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
|
|
|
433
433
|
this.logger.info('mercury: reconnecting');
|
|
434
434
|
return this.connect(webSocketUrl);
|
|
435
435
|
},
|
|
436
|
-
version: "2.59.
|
|
436
|
+
version: "2.59.0"
|
|
437
437
|
}, ((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
438
|
var _default = Mercury;
|
|
439
439
|
exports.default = _default;
|
package/dist/mercury.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_url","_interopRequireDefault","require","_webexCore","_common","_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","_set2","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","_get2","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","_camelCase2","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","_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","_set2","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","_get2","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","_camelCase2","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":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nimport url from 'url';\r\n\r\nimport {WebexPlugin} from '@webex/webex-core';\r\nimport {deprecated, oneFlight} from '@webex/common';\r\nimport {camelCase, get, set} from 'lodash';\r\nimport backoff from 'backoff';\r\n\r\nimport Socket from './socket';\r\nimport {\r\n BadRequest,\r\n Forbidden,\r\n NotAuthorized,\r\n UnknownResponse,\r\n ConnectionError,\r\n // NotFound\r\n} from './errors';\r\n\r\nconst normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];\r\n\r\nconst Mercury = WebexPlugin.extend({\r\n namespace: 'Mercury',\r\n\r\n session: {\r\n connected: {\r\n default: false,\r\n type: 'boolean',\r\n },\r\n connecting: {\r\n default: false,\r\n type: 'boolean',\r\n },\r\n socket: 'object',\r\n localClusterServiceUrls: 'object',\r\n },\r\n\r\n derived: {\r\n listening: {\r\n deps: ['connected'],\r\n fn() {\r\n return this.connected;\r\n },\r\n },\r\n },\r\n\r\n @oneFlight\r\n connect(webSocketUrl) {\r\n if (this.connected) {\r\n this.logger.info('mercury: already connected, will not connect again');\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n this.connecting = true;\r\n\r\n return Promise.resolve(\r\n this.webex.internal.device.registered || this.webex.internal.device.register()\r\n ).then(() => {\r\n this.logger.info('mercury: connecting');\r\n\r\n return this._connectWithBackoff(webSocketUrl);\r\n });\r\n },\r\n\r\n @oneFlight\r\n disconnect() {\r\n return new Promise((resolve) => {\r\n if (this.backoffCall) {\r\n this.logger.info('mercury: aborting connection');\r\n this.backoffCall.abort();\r\n }\r\n\r\n if (this.socket) {\r\n this.socket.removeAllListeners('message');\r\n this.once('offline', resolve);\r\n this.socket.close();\r\n\r\n return;\r\n }\r\n\r\n resolve();\r\n });\r\n },\r\n\r\n @deprecated('Mercury#listen(): Use Mercury#connect() instead')\r\n listen() {\r\n /* eslint no-invalid-this: [0] */\r\n return this.connect();\r\n },\r\n\r\n @deprecated('Mercury#stopListening(): Use Mercury#disconnect() instead')\r\n stopListening() {\r\n /* eslint no-invalid-this: [0] */\r\n return this.disconnect();\r\n },\r\n\r\n processRegistrationStatusEvent(message) {\r\n this.localClusterServiceUrls = message.localClusterServiceUrls;\r\n },\r\n\r\n _applyOverrides(event) {\r\n if (!event || !event.headers) {\r\n return;\r\n }\r\n const headerKeys = Object.keys(event.headers);\r\n\r\n headerKeys.forEach((keyPath) => {\r\n set(event, keyPath, event.headers[keyPath]);\r\n });\r\n },\r\n\r\n _prepareUrl(webSocketUrl) {\r\n if (!webSocketUrl) {\r\n webSocketUrl = this.webex.internal.device.webSocketUrl;\r\n }\r\n\r\n return this.webex.internal.feature\r\n .getFeature('developer', 'web-high-availability')\r\n .then((haMessagingEnabled) => {\r\n if (haMessagingEnabled) {\r\n return this.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);\r\n }\r\n\r\n return webSocketUrl;\r\n })\r\n .then((wsUrl) => {\r\n webSocketUrl = wsUrl;\r\n })\r\n .then(() => this.webex.internal.feature.getFeature('developer', 'web-shared-mercury'))\r\n .then((webSharedMercury) => {\r\n webSocketUrl = url.parse(webSocketUrl, true);\r\n Object.assign(webSocketUrl.query, {\r\n outboundWireFormat: 'text',\r\n bufferStates: true,\r\n aliasHttpStatus: true,\r\n });\r\n\r\n if (webSharedMercury) {\r\n Object.assign(webSocketUrl.query, {\r\n mercuryRegistrationStatus: true,\r\n isRegistrationRefreshEnabled: true,\r\n });\r\n Reflect.deleteProperty(webSocketUrl.query, 'bufferStates');\r\n }\r\n\r\n if (get(this, 'webex.config.device.ephemeral', false)) {\r\n webSocketUrl.query.multipleConnections = true;\r\n }\r\n\r\n return url.format(webSocketUrl);\r\n });\r\n },\r\n\r\n _attemptConnection(socketUrl, callback) {\r\n const socket = new Socket();\r\n let attemptWSUrl;\r\n\r\n socket.on('close', (...args) => this._onclose(...args));\r\n socket.on('message', (...args) => this._onmessage(...args));\r\n socket.on('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\r\n\r\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\r\n .then(([webSocketUrl, token]) => {\r\n if (!this.backoffCall) {\r\n const msg = 'mercury: prevent socket open when backoffCall no longer defined';\r\n\r\n this.logger.info(msg);\r\n\r\n return Promise.reject(new Error(msg));\r\n }\r\n\r\n attemptWSUrl = webSocketUrl;\r\n\r\n let options = {\r\n forceCloseDelay: this.config.forceCloseDelay,\r\n pingInterval: this.config.pingInterval,\r\n pongTimeout: this.config.pongTimeout,\r\n token: token.toString(),\r\n trackingId: `${this.webex.sessionId}_${Date.now()}`,\r\n logger: this.logger,\r\n };\r\n\r\n // if the consumer has supplied request options use them\r\n if (this.webex.config.defaultMercuryOptions) {\r\n this.logger.info('mercury: setting custom options');\r\n options = {...options, ...this.webex.config.defaultMercuryOptions};\r\n }\r\n\r\n // Set the socket before opening it. This allows a disconnect() to close\r\n // the socket if it is in the process of being opened.\r\n this.socket = socket;\r\n\r\n return socket.open(webSocketUrl, options);\r\n })\r\n .then(() => {\r\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\r\n fields: {\r\n success: true,\r\n },\r\n tags: {\r\n action: 'connected',\r\n url: attemptWSUrl,\r\n },\r\n });\r\n callback();\r\n\r\n return this.webex.internal.feature\r\n .getFeature('developer', 'web-high-availability')\r\n .then((haMessagingEnabled) => {\r\n if (haMessagingEnabled) {\r\n return this.webex.internal.device.refresh();\r\n }\r\n\r\n return Promise.resolve();\r\n });\r\n })\r\n .catch((reason) => {\r\n // Suppress connection errors that appear to be network related. This\r\n // may end up suppressing metrics during outages, but we might not care\r\n // (especially since many of our outages happen in a way that client\r\n // metrics can't be trusted).\r\n if (reason.code !== 1006 && this.backoffCall && this.backoffCall.getNumRetries() > 0) {\r\n this._emit('connection_failed', reason, {retries: this.backoffCall.getNumRetries()});\r\n }\r\n this.logger.info('mercury: connection attempt failed', reason);\r\n // UnknownResponse is produced by IE for any 4XXX; treated it like a bad\r\n // web socket url and let WDM handle the token checking\r\n if (reason instanceof UnknownResponse) {\r\n this.logger.info(\r\n 'mercury: received unknown response code, refreshing device registration'\r\n );\r\n\r\n return this.webex.internal.device.refresh().then(() => callback(reason));\r\n }\r\n // NotAuthorized implies expired token\r\n if (reason instanceof NotAuthorized) {\r\n this.logger.info('mercury: received authorization error, reauthorizing');\r\n\r\n return this.webex.credentials.refresh({force: true}).then(() => callback(reason));\r\n }\r\n // // NotFound implies expired web socket url\r\n // else if (reason instanceof NotFound) {\r\n // this.logger.info(`mercury: received not found error, refreshing device registration`);\r\n // return this.webex.internal.device.refresh()\r\n // .then(() => callback(reason));\r\n // }\r\n // BadRequest implies current credentials are for a Service Account\r\n // Forbidden implies current user is not entitle for Webex\r\n if (reason instanceof BadRequest || reason instanceof Forbidden) {\r\n this.logger.warn('mercury: received unrecoverable response from mercury');\r\n this.backoffCall.abort();\r\n\r\n return callback(reason);\r\n }\r\n if (reason instanceof ConnectionError) {\r\n return this.webex.internal.feature\r\n .getFeature('developer', 'web-high-availability')\r\n .then((haMessagingEnabled) => {\r\n if (haMessagingEnabled) {\r\n this.logger.info(\r\n 'mercury: received a generic connection error, will try to connect to another datacenter'\r\n );\r\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\r\n fields: {\r\n success: false,\r\n },\r\n tags: {\r\n action: 'failed',\r\n error: reason.message,\r\n url: attemptWSUrl,\r\n },\r\n });\r\n\r\n return this.webex.internal.services.markFailedUrl(attemptWSUrl);\r\n }\r\n\r\n return null;\r\n })\r\n .then(() => callback(reason));\r\n }\r\n\r\n return callback(reason);\r\n })\r\n .catch((reason) => {\r\n this.logger.error('mercury: failed to handle connection failure', reason);\r\n callback(reason);\r\n });\r\n },\r\n\r\n _connectWithBackoff(webSocketUrl) {\r\n return new Promise((resolve, reject) => {\r\n // eslint gets confused about whether or not call is actually used\r\n // eslint-disable-next-line prefer-const\r\n let call;\r\n const onComplete = (err) => {\r\n this.connecting = false;\r\n\r\n this.backoffCall = undefined;\r\n if (err) {\r\n this.logger.info(\r\n `mercury: failed to connect after ${call.getNumRetries()} retries; log statement about next retry was inaccurate; ${err}`\r\n );\r\n\r\n return reject(err);\r\n }\r\n this.connected = true;\r\n this._emit('online');\r\n\r\n return resolve();\r\n };\r\n\r\n // eslint-disable-next-line prefer-reflect\r\n call = backoff.call((callback) => {\r\n this.logger.info(`mercury: executing connection attempt ${call.getNumRetries()}`);\r\n this._attemptConnection(webSocketUrl, callback);\r\n }, onComplete);\r\n\r\n call.setStrategy(\r\n new backoff.ExponentialStrategy({\r\n initialDelay: this.config.backoffTimeReset,\r\n maxDelay: this.config.backoffTimeMax,\r\n })\r\n );\r\n\r\n if (this.config.maxRetries) {\r\n call.failAfter(this.config.maxRetries);\r\n }\r\n\r\n call.on('abort', () => {\r\n this.logger.info('mercury: connection aborted');\r\n reject(new Error('Mercury Connection Aborted'));\r\n });\r\n\r\n call.on('callback', (err) => {\r\n if (err) {\r\n const number = call.getNumRetries();\r\n const delay = Math.min(call.strategy_.nextBackoffDelay_, this.config.backoffTimeMax);\r\n\r\n this.logger.info(\r\n `mercury: failed to connect; attempting retry ${number + 1} in ${delay} ms`\r\n );\r\n /* istanbul ignore if */\r\n if (process.env.NODE_ENV === 'development') {\r\n this.logger.debug('mercury: ', err, err.stack);\r\n }\r\n\r\n return;\r\n }\r\n this.logger.info('mercury: connected');\r\n });\r\n\r\n call.start();\r\n\r\n this.backoffCall = call;\r\n });\r\n },\r\n\r\n _emit(...args) {\r\n try {\r\n this.trigger(...args);\r\n } catch (error) {\r\n this.logger.error('mercury: error occurred in event handler', error);\r\n }\r\n },\r\n\r\n _getEventHandlers(eventType) {\r\n const [namespace, name] = eventType.split('.');\r\n const handlers = [];\r\n\r\n if (!this.webex[namespace] && !this.webex.internal[namespace]) {\r\n return handlers;\r\n }\r\n\r\n const handlerName = camelCase(`process_${name}_event`);\r\n\r\n if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {\r\n handlers.push({\r\n name: handlerName,\r\n namespace,\r\n });\r\n }\r\n\r\n return handlers;\r\n },\r\n\r\n _onclose(event) {\r\n // I don't see any way to avoid the complexity or statement count in here.\r\n /* eslint complexity: [0] */\r\n\r\n try {\r\n const reason = event.reason && event.reason.toLowerCase();\r\n const socketUrl = this.socket.url;\r\n\r\n this.socket.removeAllListeners();\r\n this.unset('socket');\r\n this.connected = false;\r\n this._emit('offline', event);\r\n\r\n switch (event.code) {\r\n case 1003:\r\n // metric: disconnect\r\n this.logger.info(\r\n `mercury: Mercury service rejected last message; will not reconnect: ${event.reason}`\r\n );\r\n this._emit('offline.permanent', event);\r\n break;\r\n case 4000:\r\n // metric: disconnect\r\n this.logger.info('mercury: socket replaced; will not reconnect');\r\n this._emit('offline.replaced', event);\r\n break;\r\n case 1001:\r\n case 1005:\r\n case 1006:\r\n case 1011:\r\n this.logger.info('mercury: socket disconnected; reconnecting');\r\n this._emit('offline.transient', event);\r\n this._reconnect(socketUrl);\r\n // metric: disconnect\r\n // if (code == 1011 && reason !== ping error) metric: unexpected disconnect\r\n break;\r\n case 1000:\r\n if (normalReconnectReasons.includes(reason)) {\r\n this.logger.info('mercury: socket disconnected; reconnecting');\r\n this._emit('offline.transient', event);\r\n this._reconnect(socketUrl);\r\n // metric: disconnect\r\n // if (reason === done forced) metric: force closure\r\n } else {\r\n this.logger.info('mercury: socket disconnected; will not reconnect');\r\n this._emit('offline.permanent', event);\r\n }\r\n break;\r\n default:\r\n this.logger.info('mercury: socket disconnected unexpectedly; will not reconnect');\r\n // unexpected disconnect\r\n this._emit('offline.permanent', event);\r\n }\r\n } catch (error) {\r\n this.logger.error('mercury: error occurred in close handler', error);\r\n }\r\n },\r\n\r\n _onmessage(event) {\r\n const envelope = event.data;\r\n\r\n if (process.env.ENABLE_MERCURY_LOGGING) {\r\n this.logger.debug('mercury: message envelope: ', envelope);\r\n }\r\n\r\n const {data} = envelope;\r\n\r\n this._applyOverrides(data);\r\n\r\n return this._getEventHandlers(data.eventType)\r\n .reduce(\r\n (promise, handler) =>\r\n promise.then(() => {\r\n const {namespace, name} = handler;\r\n\r\n return new Promise((resolve) =>\r\n resolve((this.webex[namespace] || this.webex.internal[namespace])[name](data))\r\n ).catch((reason) =>\r\n this.logger.error(\r\n `mercury: error occurred in autowired event handler for ${data.eventType}`,\r\n reason\r\n )\r\n );\r\n }),\r\n Promise.resolve()\r\n )\r\n .then(() => {\r\n this._emit('event', event.data);\r\n const [namespace] = data.eventType.split('.');\r\n\r\n if (namespace === data.eventType) {\r\n this._emit(`event:${namespace}`, envelope);\r\n } else {\r\n this._emit(`event:${namespace}`, envelope);\r\n this._emit(`event:${data.eventType}`, envelope);\r\n }\r\n })\r\n .catch((reason) => {\r\n this.logger.error('mercury: error occurred processing socket message', reason);\r\n });\r\n },\r\n\r\n _reconnect(webSocketUrl) {\r\n this.logger.info('mercury: reconnecting');\r\n\r\n return this.connect(webSocketUrl);\r\n },\r\n});\r\n\r\nexport default Mercury;\r\n"],"mappings":"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"}
|
package/dist/socket/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {default} from './socket';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA"}
|
|
1
|
+
{"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.js"],"sourcesContent":["/*!\r\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\r\n */\r\n\r\nexport {default} from './socket';\r\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA"}
|