@webex/internal-plugin-mercury 2.59.8-next.1 → 2.60.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/config.js 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
@@ -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","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
@@ -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":";;;;;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAAwC,SAAAC,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA;AAExC;AACA;AACA;AAFA,IAGaC,eAAe,0BAAAC,UAAA;EAAA,IAAAC,UAAA,CAAAlB,OAAA,EAAAgB,eAAA,EAAAC,UAAA;EAAA,IAAAE,MAAA,GAAA1B,YAAA,CAAAuB,eAAA;EAAA,SAAAA,gBAAA;IAAA,IAAAI,gBAAA,CAAApB,OAAA,QAAAgB,eAAA;IAAA,OAAAG,MAAA,CAAAb,KAAA,OAAAD,SAAA;EAAA;EAAA,IAAAgB,aAAA,CAAArB,OAAA,EAAAgB,eAAA;IAAAM,GAAA;IAAAC,KAAA;IAG1B;AACF;AACA;AACA;IACE,SAAAC,MAAA,EAAkB;MAAA,IAAZC,KAAK,GAAApB,SAAA,CAAAqB,MAAA,QAAArB,SAAA,QAAAsB,SAAA,GAAAtB,SAAA,MAAG,CAAC,CAAC;MACd,IAAAuB,iBAAA,CAAA5B,OAAA,EAAwB,IAAI,EAAE;QAC5B6B,IAAI,EAAE;UACJN,KAAK,EAAEE,KAAK,CAACI;QACf,CAAC;QACDC,MAAM,EAAE;UACNP,KAAK,EAAEE,KAAK,CAACK;QACf;MACF,CAAC,CAAC;MAEF,OAAOL,KAAK,CAACK,MAAM;IACrB;EAAC;EAAA,OAAAd,eAAA;AAAA,EAlBkCe,iBAAS;AAqB9C;AACA;AACA;AAFAC,OAAA,CAAAhB,eAAA,GAAAA,eAAA;AAAA,IAAAiB,gBAAA,CAAAjC,OAAA,EArBagB,eAAe,oBACF,6BAA6B;AAAA,IAuB1CkB,eAAe,0BAAAC,gBAAA;EAAA,IAAAjB,UAAA,CAAAlB,OAAA,EAAAkC,eAAA,EAAAC,gBAAA;EAAA,IAAAC,OAAA,GAAA3C,YAAA,CAAAyC,eAAA;EAAA,SAAAA,gBAAA;IAAA,IAAAd,gBAAA,CAAApB,OAAA,QAAAkC,eAAA;IAAA,OAAAE,OAAA,CAAA9B,KAAA,OAAAD,SAAA;EAAA;EAAA,WAAAgB,aAAA,CAAArB,OAAA,EAAAkC,eAAA;AAAA,EAASlB,eAAe;AAKpD;AACA;AACA;AAFAgB,OAAA,CAAAE,eAAA,GAAAA,eAAA;AAAA,IAAAD,gBAAA,CAAAjC,OAAA,EALakC,eAAe,oBAExB,2GAA2G;AAAA,IAMlGG,UAAU,0BAAAC,iBAAA;EAAA,IAAApB,UAAA,CAAAlB,OAAA,EAAAqC,UAAA,EAAAC,iBAAA;EAAA,IAAAC,OAAA,GAAA9C,YAAA,CAAA4C,UAAA;EAAA,SAAAA,WAAA;IAAA,IAAAjB,gBAAA,CAAApB,OAAA,QAAAqC,UAAA;IAAA,OAAAE,OAAA,CAAAjC,KAAA,OAAAD,SAAA;EAAA;EAAA,WAAAgB,aAAA,CAAArB,OAAA,EAAAqC,UAAA;AAAA,EAASrB,eAAe;AAK/C;AACA;AACA;AAFAgB,OAAA,CAAAK,UAAA,GAAAA,UAAA;AAAA,IAAAJ,gBAAA,CAAAjC,OAAA,EALaqC,UAAU,oBAEnB,0EAA0E;AAAA,IAMjEG,aAAa,0BAAAC,iBAAA;EAAA,IAAAvB,UAAA,CAAAlB,OAAA,EAAAwC,aAAA,EAAAC,iBAAA;EAAA,IAAAC,OAAA,GAAAjD,YAAA,CAAA+C,aAAA;EAAA,SAAAA,cAAA;IAAA,IAAApB,gBAAA,CAAApB,OAAA,QAAAwC,aAAA;IAAA,OAAAE,OAAA,CAAApC,KAAA,OAAAD,SAAA;EAAA;EAAA,WAAAgB,aAAA,CAAArB,OAAA,EAAAwC,aAAA;AAAA,EAASxB,eAAe;AAIlD;AACA;AACA;AAFAgB,OAAA,CAAAQ,aAAA,GAAAA,aAAA;AAAA,IAAAP,gBAAA,CAAAjC,OAAA,EAJawC,aAAa,oBACA,kCAAkC;AAAA,IAM/CG,SAAS,0BAAAC,iBAAA;EAAA,IAAA1B,UAAA,CAAAlB,OAAA,EAAA2C,SAAA,EAAAC,iBAAA;EAAA,IAAAC,OAAA,GAAApD,YAAA,CAAAkD,SAAA;EAAA,SAAAA,UAAA;IAAA,IAAAvB,gBAAA,CAAApB,OAAA,QAAA2C,SAAA;IAAA,OAAAE,OAAA,CAAAvC,KAAA,OAAAD,SAAA;EAAA;EAAA,WAAAgB,aAAA,CAAArB,OAAA,EAAA2C,SAAA;AAAA,EAAS3B,eAAe,GAI9C;AACA;AACA;AACA;AACA;AACA;AAAAgB,OAAA,CAAAW,SAAA,GAAAA,SAAA;AAAA,IAAAV,gBAAA,CAAAjC,OAAA,EATa2C,SAAS,oBACI,wEAAwE"}
1
+ {"version":3,"names":["_common","require","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","ConnectionError","exports","_Exception","_inherits2","_super","_classCallCheck2","_createClass2","key","value","parse","event","length","undefined","_defineProperties","code","reason","Exception","_defineProperty2","UnknownResponse","_ConnectionError","_super2","BadRequest","_ConnectionError2","_super3","NotAuthorized","_ConnectionError3","_super4","Forbidden","_ConnectionError4","_super5"],"sources":["errors.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {Exception} from '@webex/common';\n\n/**\n * Exception thrown when a websocket gets closed\n */\nexport class ConnectionError extends Exception {\n static defaultMessage = 'Failed to connect to socket';\n\n /**\n * @param {CloseEvent} event\n * @returns {string}\n */\n parse(event = {}) {\n Object.defineProperties(this, {\n code: {\n value: event.code,\n },\n reason: {\n value: event.reason,\n },\n });\n\n return event.reason;\n }\n}\n\n/**\n * thrown for CloseCode 4400\n */\nexport class UnknownResponse extends ConnectionError {\n static defaultMessage =\n 'UnknownResponse is produced by IE when we receive a 4XXX. You probably want to treat this like a NotFound';\n}\n\n/**\n * thrown for CloseCode 4400\n */\nexport class BadRequest extends ConnectionError {\n static defaultMessage =\n 'BadRequest usually implies an attempt to use service account credentials';\n}\n\n/**\n * thrown for CloseCode 4401\n */\nexport class NotAuthorized extends ConnectionError {\n static defaultMessage = 'Please refresh your access token';\n}\n\n/**\n * thrown for CloseCode 4403\n */\nexport class Forbidden extends ConnectionError {\n static defaultMessage = 'Forbidden usually implies these credentials are not entitled for Webex';\n}\n\n// /**\n// * thrown for CloseCode 4404\n// */\n// export class NotFound extends ConnectionError {\n// static defaultMessage = `Please refresh your Mercury registration (typically via a WDM refresh)`;\n// }\n"],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["require","_webexCore","_mercury","_interopRequireDefault","_config","_socket","_errors","registerInternalPlugin","Mercury","config","onBeforeLogout","disconnect"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-feature';\nimport '@webex/internal-plugin-metrics';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Mercury from './mercury';\nimport config from './config';\n\nregisterInternalPlugin('mercury', Mercury, {\n config,\n onBeforeLogout() {\n return this.disconnect();\n },\n});\n\nexport {default} from './mercury';\nexport {default as Mercury} from './mercury';\nexport {default as Socket} from './socket';\nexport {default as config} from './config';\nexport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAWA,IAAAK,OAAA,GAAAF,sBAAA,CAAAH,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAxBA;AACA;AACA;;AAWA,IAAAO,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA,eAAM;EACNC,cAAc,WAAAA,eAAA,EAAG;IACf,OAAO,IAAI,CAACC,UAAU,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":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport '@webex/internal-plugin-device';\nimport '@webex/internal-plugin-feature';\nimport '@webex/internal-plugin-metrics';\n\nimport {registerInternalPlugin} from '@webex/webex-core';\n\nimport Mercury from './mercury';\nimport config from './config';\n\nregisterInternalPlugin('mercury', Mercury, {\n config,\n onBeforeLogout() {\n return this.disconnect();\n },\n});\n\nexport {default} from './mercury';\nexport {default as Mercury} from './mercury';\nexport {default as Socket} from './socket';\nexport {default as config} from './config';\nexport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from './errors';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIAA,OAAA;AACAA,OAAA;AACAA,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AAEA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,OAAA,GAAAD,sBAAA,CAAAH,OAAA;AAWA,IAAAK,OAAA,GAAAF,sBAAA,CAAAH,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAxBA;AACA;AACA;;AAWA,IAAAO,iCAAsB,EAAC,SAAS,EAAEC,gBAAO,EAAE;EACzCC,MAAM,EAANA,eAAM;EACNC,cAAc,WAAAA,eAAA,EAAG;IACf,OAAO,IAAI,CAACC,UAAU,CAAC,CAAC;EAC1B;AACF,CAAC,CAAC"}
package/dist/mercury.js CHANGED
@@ -28,8 +28,11 @@ var _backoff = _interopRequireDefault(require("backoff"));
28
28
  var _socket = _interopRequireDefault(require("./socket"));
29
29
  var _errors = require("./errors");
30
30
  var _dec, _dec2, _obj;
31
- function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
32
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
31
+ /*!
32
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
33
+ */
34
+ function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor2(e, r).enumerable; })), t.push.apply(t, o); } return t; }
35
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor2(t, r)); }); } return e; }
33
36
  var normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];
34
37
  var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mercury#listen(): Use Mercury#connect() instead'), _dec2 = (0, _common.deprecated)('Mercury#stopListening(): Use Mercury#disconnect() instead'), (_obj = {
35
38
  namespace: 'Mercury',
@@ -56,12 +59,12 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
56
59
  connect: function connect(webSocketUrl) {
57
60
  var _this = this;
58
61
  if (this.connected) {
59
- this.logger.info('mercury: already connected, will not connect again');
62
+ this.logger.info("".concat(this.namespace, ": already connected, will not connect again"));
60
63
  return _promise.default.resolve();
61
64
  }
62
65
  this.connecting = true;
63
66
  return _promise.default.resolve(this.webex.internal.device.registered || this.webex.internal.device.register()).then(function () {
64
- _this.logger.info('mercury: connecting');
67
+ _this.logger.info("".concat(_this.namespace, ": connecting"));
65
68
  return _this._connectWithBackoff(webSocketUrl);
66
69
  });
67
70
  },
@@ -69,14 +72,13 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
69
72
  var _this2 = this;
70
73
  return new _promise.default(function (resolve) {
71
74
  if (_this2.backoffCall) {
72
- _this2.logger.info('mercury: aborting connection');
75
+ _this2.logger.info("".concat(_this2.namespace, ": aborting connection"));
73
76
  _this2.backoffCall.abort();
74
77
  }
75
78
  if (_this2.socket) {
76
79
  _this2.socket.removeAllListeners('message');
77
80
  _this2.once('offline', resolve);
78
- _this2.socket.close();
79
- return;
81
+ resolve(_this2.socket.close());
80
82
  }
81
83
  resolve();
82
84
  });
@@ -156,7 +158,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
156
158
  webSocketUrl = _ref2[0],
157
159
  token = _ref2[1];
158
160
  if (!_this4.backoffCall) {
159
- var msg = 'mercury: prevent socket open when backoffCall no longer defined';
161
+ var msg = "".concat(_this4.namespace, ": prevent socket open when backoffCall no longer defined");
160
162
  _this4.logger.info(msg);
161
163
  return _promise.default.reject(new Error(msg));
162
164
  }
@@ -172,13 +174,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
172
174
 
173
175
  // if the consumer has supplied request options use them
174
176
  if (_this4.webex.config.defaultMercuryOptions) {
175
- _this4.logger.info('mercury: setting custom options');
177
+ _this4.logger.info("".concat(_this4.namespace, ": setting custom options"));
176
178
  options = _objectSpread(_objectSpread({}, options), _this4.webex.config.defaultMercuryOptions);
177
179
  }
178
180
 
179
181
  // Set the socket before opening it. This allows a disconnect() to close
180
182
  // the socket if it is in the process of being opened.
181
183
  _this4.socket = socket;
184
+ _this4.logger.info("".concat(_this4.namespace, " connection url: ").concat(webSocketUrl));
182
185
  return socket.open(webSocketUrl, options);
183
186
  }).then(function () {
184
187
  _this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
@@ -186,6 +189,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
186
189
  success: true
187
190
  },
188
191
  tags: {
192
+ namespace: _this4.namespace,
189
193
  action: 'connected',
190
194
  url: attemptWSUrl
191
195
  }
@@ -207,18 +211,18 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
207
211
  retries: _this4.backoffCall.getNumRetries()
208
212
  });
209
213
  }
210
- _this4.logger.info('mercury: connection attempt failed', reason);
214
+ _this4.logger.info("".concat(_this4.namespace, ": connection attempt failed"), reason);
211
215
  // UnknownResponse is produced by IE for any 4XXX; treated it like a bad
212
216
  // web socket url and let WDM handle the token checking
213
217
  if (reason instanceof _errors.UnknownResponse) {
214
- _this4.logger.info('mercury: received unknown response code, refreshing device registration');
218
+ _this4.logger.info("".concat(_this4.namespace, ": received unknown response code, refreshing device registration"));
215
219
  return _this4.webex.internal.device.refresh().then(function () {
216
220
  return callback(reason);
217
221
  });
218
222
  }
219
223
  // NotAuthorized implies expired token
220
224
  if (reason instanceof _errors.NotAuthorized) {
221
- _this4.logger.info('mercury: received authorization error, reauthorizing');
225
+ _this4.logger.info("".concat(_this4.namespace, ": received authorization error, reauthorizing"));
222
226
  return _this4.webex.credentials.refresh({
223
227
  force: true
224
228
  }).then(function () {
@@ -234,19 +238,20 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
234
238
  // BadRequest implies current credentials are for a Service Account
235
239
  // Forbidden implies current user is not entitle for Webex
236
240
  if (reason instanceof _errors.BadRequest || reason instanceof _errors.Forbidden) {
237
- _this4.logger.warn('mercury: received unrecoverable response from mercury');
241
+ _this4.logger.warn("".concat(_this4.namespace, ": received unrecoverable response from mercury"));
238
242
  _this4.backoffCall.abort();
239
243
  return callback(reason);
240
244
  }
241
245
  if (reason instanceof _errors.ConnectionError) {
242
246
  return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
243
247
  if (haMessagingEnabled) {
244
- _this4.logger.info('mercury: received a generic connection error, will try to connect to another datacenter');
248
+ _this4.logger.info("".concat(_this4.namespace, ": received a generic connection error, will try to connect to another datacenter"));
245
249
  _this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
246
250
  fields: {
247
251
  success: false
248
252
  },
249
253
  tags: {
254
+ namespace: _this4.namespace,
250
255
  action: 'failed',
251
256
  error: reason.message,
252
257
  url: attemptWSUrl
@@ -261,7 +266,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
261
266
  }
262
267
  return callback(reason);
263
268
  }).catch(function (reason) {
264
- _this4.logger.error('mercury: failed to handle connection failure', reason);
269
+ _this4.logger.error("".concat(_this4.namespace, ": failed to handle connection failure"), reason);
265
270
  callback(reason);
266
271
  });
267
272
  },
@@ -275,7 +280,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
275
280
  _this5.connecting = false;
276
281
  _this5.backoffCall = undefined;
277
282
  if (err) {
278
- _this5.logger.info("mercury: failed to connect after ".concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
283
+ _this5.logger.info("".concat(_this5.namespace, ": failed to connect after ").concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
279
284
  return reject(err);
280
285
  }
281
286
  _this5.connected = true;
@@ -285,7 +290,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
285
290
 
286
291
  // eslint-disable-next-line prefer-reflect
287
292
  call = _backoff.default.call(function (callback) {
288
- _this5.logger.info("mercury: executing connection attempt ".concat(call.getNumRetries()));
293
+ _this5.logger.info("".concat(_this5.namespace, ": executing connection attempt ").concat(call.getNumRetries()));
289
294
  _this5._attemptConnection(webSocketUrl, callback);
290
295
  }, onComplete);
291
296
  call.setStrategy(new _backoff.default.ExponentialStrategy({
@@ -296,31 +301,37 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
296
301
  call.failAfter(_this5.config.maxRetries);
297
302
  }
298
303
  call.on('abort', function () {
299
- _this5.logger.info('mercury: connection aborted');
304
+ _this5.logger.info("".concat(_this5.namespace, ": connection aborted"));
300
305
  reject(new Error('Mercury Connection Aborted'));
301
306
  });
302
307
  call.on('callback', function (err) {
303
308
  if (err) {
304
309
  var number = call.getNumRetries();
305
310
  var delay = Math.min(call.strategy_.nextBackoffDelay_, _this5.config.backoffTimeMax);
306
- _this5.logger.info("mercury: failed to connect; attempting retry ".concat(number + 1, " in ").concat(delay, " ms"));
311
+ _this5.logger.info("".concat(_this5.namespace, ": failed to connect; attempting retry ").concat(number + 1, " in ").concat(delay, " ms"));
307
312
  /* istanbul ignore if */
308
313
  if (process.env.NODE_ENV === 'development') {
309
- _this5.logger.debug('mercury: ', err, err.stack);
314
+ _this5.logger.debug("".concat(_this5.namespace, ": "), err, err.stack);
310
315
  }
311
316
  return;
312
317
  }
313
- _this5.logger.info('mercury: connected');
318
+ _this5.logger.info("".concat(_this5.namespace, ": connected"));
314
319
  });
315
320
  call.start();
316
321
  _this5.backoffCall = call;
317
322
  });
318
323
  },
319
324
  _emit: function _emit() {
325
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
326
+ args[_key2] = arguments[_key2];
327
+ }
320
328
  try {
321
- this.trigger.apply(this, arguments);
329
+ this.trigger.apply(this, args);
322
330
  } catch (error) {
323
- this.logger.error('mercury: error occurred in event handler', error);
331
+ this.logger.error("".concat(this.namespace, ": error occurred in event handler"), {
332
+ error: error,
333
+ arguments: args
334
+ });
324
335
  }
325
336
  },
326
337
  _getEventHandlers: function _getEventHandlers(eventType) {
@@ -355,19 +366,19 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
355
366
  switch (event.code) {
356
367
  case 1003:
357
368
  // metric: disconnect
358
- this.logger.info("mercury: Mercury service rejected last message; will not reconnect: ".concat(event.reason));
369
+ this.logger.info("".concat(this.namespace, ": Mercury service rejected last message; will not reconnect: ").concat(event.reason));
359
370
  this._emit('offline.permanent', event);
360
371
  break;
361
372
  case 4000:
362
373
  // metric: disconnect
363
- this.logger.info('mercury: socket replaced; will not reconnect');
374
+ this.logger.info("".concat(this.namespace, ": socket replaced; will not reconnect"));
364
375
  this._emit('offline.replaced', event);
365
376
  break;
366
377
  case 1001:
367
378
  case 1005:
368
379
  case 1006:
369
380
  case 1011:
370
- this.logger.info('mercury: socket disconnected; reconnecting');
381
+ this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
371
382
  this._emit('offline.transient', event);
372
383
  this._reconnect(socketUrl);
373
384
  // metric: disconnect
@@ -375,30 +386,30 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
375
386
  break;
376
387
  case 1000:
377
388
  if (normalReconnectReasons.includes(reason)) {
378
- this.logger.info('mercury: socket disconnected; reconnecting');
389
+ this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
379
390
  this._emit('offline.transient', event);
380
391
  this._reconnect(socketUrl);
381
392
  // metric: disconnect
382
393
  // if (reason === done forced) metric: force closure
383
394
  } else {
384
- this.logger.info('mercury: socket disconnected; will not reconnect');
395
+ this.logger.info("".concat(this.namespace, ": socket disconnected; will not reconnect"));
385
396
  this._emit('offline.permanent', event);
386
397
  }
387
398
  break;
388
399
  default:
389
- this.logger.info('mercury: socket disconnected unexpectedly; will not reconnect');
400
+ this.logger.info("".concat(this.namespace, ": socket disconnected unexpectedly; will not reconnect"));
390
401
  // unexpected disconnect
391
402
  this._emit('offline.permanent', event);
392
403
  }
393
404
  } catch (error) {
394
- this.logger.error('mercury: error occurred in close handler', error);
405
+ this.logger.error("".concat(this.namespace, ": error occurred in close handler"), error);
395
406
  }
396
407
  },
397
408
  _onmessage: function _onmessage(event) {
398
409
  var _this6 = this;
399
410
  var envelope = event.data;
400
411
  if (process.env.ENABLE_MERCURY_LOGGING) {
401
- this.logger.debug('mercury: message envelope: ', envelope);
412
+ this.logger.debug("".concat(this.namespace, ": message envelope: "), envelope);
402
413
  }
403
414
  var data = envelope.data;
404
415
  this._applyOverrides(data);
@@ -409,7 +420,7 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
409
420
  return new _promise.default(function (resolve) {
410
421
  return resolve((_this6.webex[namespace] || _this6.webex.internal[namespace])[name](data));
411
422
  }).catch(function (reason) {
412
- return _this6.logger.error("mercury: error occurred in autowired event handler for ".concat(data.eventType), reason);
423
+ return _this6.logger.error("".concat(_this6.namespace, ": error occurred in autowired event handler for ").concat(data.eventType), reason);
413
424
  });
414
425
  });
415
426
  }, _promise.default.resolve()).then(function () {
@@ -424,15 +435,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
424
435
  _this6._emit("event:".concat(data.eventType), envelope);
425
436
  }
426
437
  }).catch(function (reason) {
427
- _this6.logger.error('mercury: error occurred processing socket message', reason);
438
+ _this6.logger.error("".concat(_this6.namespace, ": error occurred processing socket message"), reason);
428
439
  });
429
440
  },
430
441
  _reconnect: function _reconnect(webSocketUrl) {
431
- this.logger.info('mercury: reconnecting');
442
+ this.logger.info("".concat(this.namespace, ": reconnecting"));
432
443
  return this.connect(webSocketUrl);
433
444
  },
434
- version: "2.59.8-next.1"
445
+ version: "2.60.0-next.1"
435
446
  }, ((0, _applyDecoratedDescriptor2.default)(_obj, "connect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "connect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "disconnect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "disconnect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "listen", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "listen"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "stopListening", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "stopListening"), _obj)), _obj)));
436
- var _default = Mercury;
437
- exports.default = _default;
447
+ var _default = exports.default = Mercury;
438
448
  //# sourceMappingURL=mercury.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_url","_interopRequireDefault","require","_webexCore","_common","_lodash","_backoff","_socket","_errors","_dec","_dec2","_obj","ownKeys","object","enumerableOnly","keys","_Object$keys2","_Object$getOwnPropertySymbols","symbols","filter","sym","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","target","i","arguments","length","source","Object","forEach","key","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalReconnectReasons","Mercury","WebexPlugin","extend","deprecated","namespace","session","connected","type","connecting","socket","localClusterServiceUrls","derived","listening","deps","fn","connect","webSocketUrl","_this","logger","info","_promise","resolve","webex","internal","device","registered","register","then","_connectWithBackoff","disconnect","_this2","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","format","_attemptConnection","socketUrl","callback","_this4","Socket","attemptWSUrl","on","_onclose","_onmessage","_len","args","Array","_key","_emit","concat","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","Error","options","forceCloseDelay","config","pingInterval","pongTimeout","toString","trackingId","sessionId","_now","defaultMercuryOptions","open","metrics","submitClientMetrics","fields","success","tags","action","refresh","catch","reason","code","getNumRetries","retries","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","error","markFailedUrl","_this5","call","onComplete","err","undefined","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","maxRetries","failAfter","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","stack","start","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","includes","_this6","envelope","data","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport url from 'url';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {deprecated, oneFlight} from '@webex/common';\nimport {camelCase, get, set} from 'lodash';\nimport backoff from 'backoff';\n\nimport Socket from './socket';\nimport {\n BadRequest,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n ConnectionError,\n // NotFound\n} from './errors';\n\nconst normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];\n\nconst Mercury = WebexPlugin.extend({\n namespace: 'Mercury',\n\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\n },\n\n @oneFlight\n connect(webSocketUrl) {\n if (this.connected) {\n this.logger.info('mercury: already connected, will not connect again');\n\n return Promise.resolve();\n }\n\n this.connecting = true;\n\n return Promise.resolve(\n this.webex.internal.device.registered || this.webex.internal.device.register()\n ).then(() => {\n this.logger.info('mercury: connecting');\n\n return this._connectWithBackoff(webSocketUrl);\n });\n },\n\n @oneFlight\n disconnect() {\n return new Promise((resolve) => {\n if (this.backoffCall) {\n this.logger.info('mercury: aborting connection');\n this.backoffCall.abort();\n }\n\n if (this.socket) {\n this.socket.removeAllListeners('message');\n this.once('offline', resolve);\n this.socket.close();\n\n return;\n }\n\n resolve();\n });\n },\n\n @deprecated('Mercury#listen(): Use Mercury#connect() instead')\n listen() {\n /* eslint no-invalid-this: [0] */\n return this.connect();\n },\n\n @deprecated('Mercury#stopListening(): Use Mercury#disconnect() instead')\n stopListening() {\n /* eslint no-invalid-this: [0] */\n return this.disconnect();\n },\n\n processRegistrationStatusEvent(message) {\n this.localClusterServiceUrls = message.localClusterServiceUrls;\n },\n\n _applyOverrides(event) {\n if (!event || !event.headers) {\n return;\n }\n const headerKeys = Object.keys(event.headers);\n\n headerKeys.forEach((keyPath) => {\n set(event, keyPath, event.headers[keyPath]);\n });\n },\n\n _prepareUrl(webSocketUrl) {\n if (!webSocketUrl) {\n webSocketUrl = this.webex.internal.device.webSocketUrl;\n }\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);\n }\n\n return webSocketUrl;\n })\n .then((wsUrl) => {\n webSocketUrl = wsUrl;\n })\n .then(() => this.webex.internal.feature.getFeature('developer', 'web-shared-mercury'))\n .then((webSharedMercury) => {\n webSocketUrl = url.parse(webSocketUrl, true);\n Object.assign(webSocketUrl.query, {\n outboundWireFormat: 'text',\n bufferStates: true,\n aliasHttpStatus: true,\n });\n\n if (webSharedMercury) {\n Object.assign(webSocketUrl.query, {\n mercuryRegistrationStatus: true,\n isRegistrationRefreshEnabled: true,\n });\n Reflect.deleteProperty(webSocketUrl.query, 'bufferStates');\n }\n\n if (get(this, 'webex.config.device.ephemeral', false)) {\n webSocketUrl.query.multipleConnections = true;\n }\n\n return url.format(webSocketUrl);\n });\n },\n\n _attemptConnection(socketUrl, callback) {\n const socket = new Socket();\n let attemptWSUrl;\n\n socket.on('close', (...args) => this._onclose(...args));\n socket.on('message', (...args) => this._onmessage(...args));\n socket.on('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\n\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\n .then(([webSocketUrl, token]) => {\n if (!this.backoffCall) {\n const msg = 'mercury: prevent socket open when backoffCall no longer defined';\n\n this.logger.info(msg);\n\n return Promise.reject(new Error(msg));\n }\n\n attemptWSUrl = webSocketUrl;\n\n let options = {\n forceCloseDelay: this.config.forceCloseDelay,\n pingInterval: this.config.pingInterval,\n pongTimeout: this.config.pongTimeout,\n token: token.toString(),\n trackingId: `${this.webex.sessionId}_${Date.now()}`,\n logger: this.logger,\n };\n\n // if the consumer has supplied request options use them\n if (this.webex.config.defaultMercuryOptions) {\n this.logger.info('mercury: setting custom options');\n options = {...options, ...this.webex.config.defaultMercuryOptions};\n }\n\n // Set the socket before opening it. This allows a disconnect() to close\n // the socket if it is in the process of being opened.\n this.socket = socket;\n\n return socket.open(webSocketUrl, options);\n })\n .then(() => {\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: true,\n },\n tags: {\n action: 'connected',\n url: attemptWSUrl,\n },\n });\n callback();\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.device.refresh();\n }\n\n return Promise.resolve();\n });\n })\n .catch((reason) => {\n // Suppress connection errors that appear to be network related. This\n // may end up suppressing metrics during outages, but we might not care\n // (especially since many of our outages happen in a way that client\n // metrics can't be trusted).\n if (reason.code !== 1006 && this.backoffCall && this.backoffCall.getNumRetries() > 0) {\n this._emit('connection_failed', reason, {retries: this.backoffCall.getNumRetries()});\n }\n this.logger.info('mercury: connection attempt failed', reason);\n // UnknownResponse is produced by IE for any 4XXX; treated it like a bad\n // web socket url and let WDM handle the token checking\n if (reason instanceof UnknownResponse) {\n this.logger.info(\n 'mercury: received unknown response code, refreshing device registration'\n );\n\n return this.webex.internal.device.refresh().then(() => callback(reason));\n }\n // NotAuthorized implies expired token\n if (reason instanceof NotAuthorized) {\n this.logger.info('mercury: received authorization error, reauthorizing');\n\n return this.webex.credentials.refresh({force: true}).then(() => callback(reason));\n }\n // // NotFound implies expired web socket url\n // else if (reason instanceof NotFound) {\n // this.logger.info(`mercury: received not found error, refreshing device registration`);\n // return this.webex.internal.device.refresh()\n // .then(() => callback(reason));\n // }\n // BadRequest implies current credentials are for a Service Account\n // Forbidden implies current user is not entitle for Webex\n if (reason instanceof BadRequest || reason instanceof Forbidden) {\n this.logger.warn('mercury: received unrecoverable response from mercury');\n this.backoffCall.abort();\n\n return callback(reason);\n }\n if (reason instanceof ConnectionError) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n this.logger.info(\n 'mercury: received a generic connection error, will try to connect to another datacenter'\n );\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: false,\n },\n tags: {\n action: 'failed',\n error: reason.message,\n url: attemptWSUrl,\n },\n });\n\n return this.webex.internal.services.markFailedUrl(attemptWSUrl);\n }\n\n return null;\n })\n .then(() => callback(reason));\n }\n\n return callback(reason);\n })\n .catch((reason) => {\n this.logger.error('mercury: failed to handle connection failure', reason);\n callback(reason);\n });\n },\n\n _connectWithBackoff(webSocketUrl) {\n return new Promise((resolve, reject) => {\n // eslint gets confused about whether or not call is actually used\n // eslint-disable-next-line prefer-const\n let call;\n const onComplete = (err) => {\n this.connecting = false;\n\n this.backoffCall = undefined;\n if (err) {\n this.logger.info(\n `mercury: failed to connect after ${call.getNumRetries()} retries; log statement about next retry was inaccurate; ${err}`\n );\n\n return reject(err);\n }\n this.connected = true;\n this._emit('online');\n\n return resolve();\n };\n\n // eslint-disable-next-line prefer-reflect\n call = backoff.call((callback) => {\n this.logger.info(`mercury: executing connection attempt ${call.getNumRetries()}`);\n this._attemptConnection(webSocketUrl, callback);\n }, onComplete);\n\n call.setStrategy(\n new backoff.ExponentialStrategy({\n initialDelay: this.config.backoffTimeReset,\n maxDelay: this.config.backoffTimeMax,\n })\n );\n\n if (this.config.maxRetries) {\n call.failAfter(this.config.maxRetries);\n }\n\n call.on('abort', () => {\n this.logger.info('mercury: connection aborted');\n reject(new Error('Mercury Connection Aborted'));\n });\n\n call.on('callback', (err) => {\n if (err) {\n const number = call.getNumRetries();\n const delay = Math.min(call.strategy_.nextBackoffDelay_, this.config.backoffTimeMax);\n\n this.logger.info(\n `mercury: failed to connect; attempting retry ${number + 1} in ${delay} ms`\n );\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'development') {\n this.logger.debug('mercury: ', err, err.stack);\n }\n\n return;\n }\n this.logger.info('mercury: connected');\n });\n\n call.start();\n\n this.backoffCall = call;\n });\n },\n\n _emit(...args) {\n try {\n this.trigger(...args);\n } catch (error) {\n this.logger.error('mercury: error occurred in event handler', error);\n }\n },\n\n _getEventHandlers(eventType) {\n const [namespace, name] = eventType.split('.');\n const handlers = [];\n\n if (!this.webex[namespace] && !this.webex.internal[namespace]) {\n return handlers;\n }\n\n const handlerName = camelCase(`process_${name}_event`);\n\n if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {\n handlers.push({\n name: handlerName,\n namespace,\n });\n }\n\n return handlers;\n },\n\n _onclose(event) {\n // I don't see any way to avoid the complexity or statement count in here.\n /* eslint complexity: [0] */\n\n try {\n const reason = event.reason && event.reason.toLowerCase();\n const socketUrl = this.socket.url;\n\n this.socket.removeAllListeners();\n this.unset('socket');\n this.connected = false;\n this._emit('offline', event);\n\n switch (event.code) {\n case 1003:\n // metric: disconnect\n this.logger.info(\n `mercury: Mercury service rejected last message; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n break;\n case 4000:\n // metric: disconnect\n this.logger.info('mercury: socket replaced; will not reconnect');\n this._emit('offline.replaced', event);\n break;\n case 1001:\n case 1005:\n case 1006:\n case 1011:\n this.logger.info('mercury: socket disconnected; reconnecting');\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (code == 1011 && reason !== ping error) metric: unexpected disconnect\n break;\n case 1000:\n if (normalReconnectReasons.includes(reason)) {\n this.logger.info('mercury: socket disconnected; reconnecting');\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (reason === done forced) metric: force closure\n } else {\n this.logger.info('mercury: socket disconnected; will not reconnect');\n this._emit('offline.permanent', event);\n }\n break;\n default:\n this.logger.info('mercury: socket disconnected unexpectedly; will not reconnect');\n // unexpected disconnect\n this._emit('offline.permanent', event);\n }\n } catch (error) {\n this.logger.error('mercury: error occurred in close handler', error);\n }\n },\n\n _onmessage(event) {\n const envelope = event.data;\n\n if (process.env.ENABLE_MERCURY_LOGGING) {\n this.logger.debug('mercury: message envelope: ', envelope);\n }\n\n const {data} = envelope;\n\n this._applyOverrides(data);\n\n return this._getEventHandlers(data.eventType)\n .reduce(\n (promise, handler) =>\n promise.then(() => {\n const {namespace, name} = handler;\n\n return new Promise((resolve) =>\n resolve((this.webex[namespace] || this.webex.internal[namespace])[name](data))\n ).catch((reason) =>\n this.logger.error(\n `mercury: error occurred in autowired event handler for ${data.eventType}`,\n reason\n )\n );\n }),\n Promise.resolve()\n )\n .then(() => {\n this._emit('event', event.data);\n const [namespace] = data.eventType.split('.');\n\n if (namespace === data.eventType) {\n this._emit(`event:${namespace}`, envelope);\n } else {\n this._emit(`event:${namespace}`, envelope);\n this._emit(`event:${data.eventType}`, envelope);\n }\n })\n .catch((reason) => {\n this.logger.error('mercury: error occurred processing socket message', reason);\n });\n },\n\n _reconnect(webSocketUrl) {\n this.logger.info('mercury: reconnecting');\n\n return this.connect(webSocketUrl);\n },\n});\n\nexport default Mercury;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_url","_interopRequireDefault","require","_webexCore","_common","_lodash","_backoff","_socket","_errors","_dec","_dec2","_obj","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor2","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","normalReconnectReasons","Mercury","WebexPlugin","extend","deprecated","namespace","session","connected","type","connecting","socket","localClusterServiceUrls","derived","listening","deps","fn","connect","webSocketUrl","_this","logger","info","concat","_promise","resolve","webex","internal","device","registered","register","then","_connectWithBackoff","disconnect","_this2","backoffCall","abort","removeAllListeners","once","close","listen","stopListening","processRegistrationStatusEvent","message","_applyOverrides","event","headers","headerKeys","_keys","keyPath","set","_prepareUrl","_this3","feature","getFeature","haMessagingEnabled","services","convertUrlToPriorityHostUrl","wsUrl","webSharedMercury","url","parse","_assign","query","outboundWireFormat","bufferStates","aliasHttpStatus","mercuryRegistrationStatus","isRegistrationRefreshEnabled","_deleteProperty","get","multipleConnections","format","_attemptConnection","socketUrl","callback","_this4","Socket","attemptWSUrl","on","_onclose","_onmessage","_len","args","Array","_key","_emit","all","credentials","getUserToken","_ref","_ref2","_slicedToArray2","token","msg","reject","Error","options","forceCloseDelay","config","pingInterval","pongTimeout","toString","trackingId","sessionId","_now","defaultMercuryOptions","open","metrics","submitClientMetrics","fields","success","tags","action","refresh","catch","reason","code","getNumRetries","retries","UnknownResponse","NotAuthorized","force","BadRequest","Forbidden","warn","ConnectionError","error","markFailedUrl","_this5","call","onComplete","err","undefined","backoff","setStrategy","ExponentialStrategy","initialDelay","backoffTimeReset","maxDelay","backoffTimeMax","maxRetries","failAfter","number","delay","Math","min","strategy_","nextBackoffDelay_","process","env","NODE_ENV","debug","stack","start","_len2","_key2","trigger","_getEventHandlers","eventType","_eventType$split","split","_eventType$split2","name","handlers","handlerName","camelCase","toLowerCase","unset","_reconnect","includes","_this6","envelope","data","ENABLE_MERCURY_LOGGING","reduce","promise","handler","_data$eventType$split","_data$eventType$split2","version","_applyDecoratedDescriptor2","oneFlight","_getOwnPropertyDescriptor","_default","exports"],"sources":["mercury.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport url from 'url';\n\nimport {WebexPlugin} from '@webex/webex-core';\nimport {deprecated, oneFlight} from '@webex/common';\nimport {camelCase, get, set} from 'lodash';\nimport backoff from 'backoff';\n\nimport Socket from './socket';\nimport {\n BadRequest,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n ConnectionError,\n // NotFound\n} from './errors';\n\nconst normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];\n\nconst Mercury = WebexPlugin.extend({\n namespace: 'Mercury',\n\n session: {\n connected: {\n default: false,\n type: 'boolean',\n },\n connecting: {\n default: false,\n type: 'boolean',\n },\n socket: 'object',\n localClusterServiceUrls: 'object',\n },\n\n derived: {\n listening: {\n deps: ['connected'],\n fn() {\n return this.connected;\n },\n },\n },\n\n @oneFlight\n connect(webSocketUrl) {\n if (this.connected) {\n this.logger.info(`${this.namespace}: already connected, will not connect again`);\n\n return Promise.resolve();\n }\n\n this.connecting = true;\n\n return Promise.resolve(\n this.webex.internal.device.registered || this.webex.internal.device.register()\n ).then(() => {\n this.logger.info(`${this.namespace}: connecting`);\n\n return this._connectWithBackoff(webSocketUrl);\n });\n },\n\n @oneFlight\n disconnect() {\n return new Promise((resolve) => {\n if (this.backoffCall) {\n this.logger.info(`${this.namespace}: aborting connection`);\n this.backoffCall.abort();\n }\n\n if (this.socket) {\n this.socket.removeAllListeners('message');\n this.once('offline', resolve);\n resolve(this.socket.close());\n }\n\n resolve();\n });\n },\n\n @deprecated('Mercury#listen(): Use Mercury#connect() instead')\n listen() {\n /* eslint no-invalid-this: [0] */\n return this.connect();\n },\n\n @deprecated('Mercury#stopListening(): Use Mercury#disconnect() instead')\n stopListening() {\n /* eslint no-invalid-this: [0] */\n return this.disconnect();\n },\n\n processRegistrationStatusEvent(message) {\n this.localClusterServiceUrls = message.localClusterServiceUrls;\n },\n\n _applyOverrides(event) {\n if (!event || !event.headers) {\n return;\n }\n const headerKeys = Object.keys(event.headers);\n\n headerKeys.forEach((keyPath) => {\n set(event, keyPath, event.headers[keyPath]);\n });\n },\n\n _prepareUrl(webSocketUrl) {\n if (!webSocketUrl) {\n webSocketUrl = this.webex.internal.device.webSocketUrl;\n }\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);\n }\n\n return webSocketUrl;\n })\n .then((wsUrl) => {\n webSocketUrl = wsUrl;\n })\n .then(() => this.webex.internal.feature.getFeature('developer', 'web-shared-mercury'))\n .then((webSharedMercury) => {\n webSocketUrl = url.parse(webSocketUrl, true);\n Object.assign(webSocketUrl.query, {\n outboundWireFormat: 'text',\n bufferStates: true,\n aliasHttpStatus: true,\n });\n\n if (webSharedMercury) {\n Object.assign(webSocketUrl.query, {\n mercuryRegistrationStatus: true,\n isRegistrationRefreshEnabled: true,\n });\n Reflect.deleteProperty(webSocketUrl.query, 'bufferStates');\n }\n\n if (get(this, 'webex.config.device.ephemeral', false)) {\n webSocketUrl.query.multipleConnections = true;\n }\n\n return url.format(webSocketUrl);\n });\n },\n\n _attemptConnection(socketUrl, callback) {\n const socket = new Socket();\n let attemptWSUrl;\n\n socket.on('close', (...args) => this._onclose(...args));\n socket.on('message', (...args) => this._onmessage(...args));\n socket.on('sequence-mismatch', (...args) => this._emit('sequence-mismatch', ...args));\n\n Promise.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()])\n .then(([webSocketUrl, token]) => {\n if (!this.backoffCall) {\n const msg = `${this.namespace}: prevent socket open when backoffCall no longer defined`;\n\n this.logger.info(msg);\n\n return Promise.reject(new Error(msg));\n }\n\n attemptWSUrl = webSocketUrl;\n\n let options = {\n forceCloseDelay: this.config.forceCloseDelay,\n pingInterval: this.config.pingInterval,\n pongTimeout: this.config.pongTimeout,\n token: token.toString(),\n trackingId: `${this.webex.sessionId}_${Date.now()}`,\n logger: this.logger,\n };\n\n // if the consumer has supplied request options use them\n if (this.webex.config.defaultMercuryOptions) {\n this.logger.info(`${this.namespace}: setting custom options`);\n options = {...options, ...this.webex.config.defaultMercuryOptions};\n }\n\n // Set the socket before opening it. This allows a disconnect() to close\n // the socket if it is in the process of being opened.\n this.socket = socket;\n\n this.logger.info(`${this.namespace} connection url: ${webSocketUrl}`);\n\n return socket.open(webSocketUrl, options);\n })\n .then(() => {\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: true,\n },\n tags: {\n namespace: this.namespace,\n action: 'connected',\n url: attemptWSUrl,\n },\n });\n callback();\n\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n return this.webex.internal.device.refresh();\n }\n\n return Promise.resolve();\n });\n })\n .catch((reason) => {\n // Suppress connection errors that appear to be network related. This\n // may end up suppressing metrics during outages, but we might not care\n // (especially since many of our outages happen in a way that client\n // metrics can't be trusted).\n if (reason.code !== 1006 && this.backoffCall && this.backoffCall.getNumRetries() > 0) {\n this._emit('connection_failed', reason, {retries: this.backoffCall.getNumRetries()});\n }\n this.logger.info(`${this.namespace}: connection attempt failed`, reason);\n // UnknownResponse is produced by IE for any 4XXX; treated it like a bad\n // web socket url and let WDM handle the token checking\n if (reason instanceof UnknownResponse) {\n this.logger.info(\n `${this.namespace}: received unknown response code, refreshing device registration`\n );\n\n return this.webex.internal.device.refresh().then(() => callback(reason));\n }\n // NotAuthorized implies expired token\n if (reason instanceof NotAuthorized) {\n this.logger.info(`${this.namespace}: received authorization error, reauthorizing`);\n\n return this.webex.credentials.refresh({force: true}).then(() => callback(reason));\n }\n // // NotFound implies expired web socket url\n // else if (reason instanceof NotFound) {\n // this.logger.info(`mercury: received not found error, refreshing device registration`);\n // return this.webex.internal.device.refresh()\n // .then(() => callback(reason));\n // }\n // BadRequest implies current credentials are for a Service Account\n // Forbidden implies current user is not entitle for Webex\n if (reason instanceof BadRequest || reason instanceof Forbidden) {\n this.logger.warn(`${this.namespace}: received unrecoverable response from mercury`);\n this.backoffCall.abort();\n\n return callback(reason);\n }\n if (reason instanceof ConnectionError) {\n return this.webex.internal.feature\n .getFeature('developer', 'web-high-availability')\n .then((haMessagingEnabled) => {\n if (haMessagingEnabled) {\n this.logger.info(\n `${this.namespace}: received a generic connection error, will try to connect to another datacenter`\n );\n this.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {\n fields: {\n success: false,\n },\n tags: {\n namespace: this.namespace,\n action: 'failed',\n error: reason.message,\n url: attemptWSUrl,\n },\n });\n\n return this.webex.internal.services.markFailedUrl(attemptWSUrl);\n }\n\n return null;\n })\n .then(() => callback(reason));\n }\n\n return callback(reason);\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: failed to handle connection failure`, reason);\n callback(reason);\n });\n },\n\n _connectWithBackoff(webSocketUrl) {\n return new Promise((resolve, reject) => {\n // eslint gets confused about whether or not call is actually used\n // eslint-disable-next-line prefer-const\n let call;\n const onComplete = (err) => {\n this.connecting = false;\n\n this.backoffCall = undefined;\n if (err) {\n this.logger.info(\n `${\n this.namespace\n }: failed to connect after ${call.getNumRetries()} retries; log statement about next retry was inaccurate; ${err}`\n );\n\n return reject(err);\n }\n this.connected = true;\n this._emit('online');\n\n return resolve();\n };\n\n // eslint-disable-next-line prefer-reflect\n call = backoff.call((callback) => {\n this.logger.info(`${this.namespace}: executing connection attempt ${call.getNumRetries()}`);\n this._attemptConnection(webSocketUrl, callback);\n }, onComplete);\n\n call.setStrategy(\n new backoff.ExponentialStrategy({\n initialDelay: this.config.backoffTimeReset,\n maxDelay: this.config.backoffTimeMax,\n })\n );\n\n if (this.config.maxRetries) {\n call.failAfter(this.config.maxRetries);\n }\n\n call.on('abort', () => {\n this.logger.info(`${this.namespace}: connection aborted`);\n reject(new Error('Mercury Connection Aborted'));\n });\n\n call.on('callback', (err) => {\n if (err) {\n const number = call.getNumRetries();\n const delay = Math.min(call.strategy_.nextBackoffDelay_, this.config.backoffTimeMax);\n\n this.logger.info(\n `${this.namespace}: failed to connect; attempting retry ${number + 1} in ${delay} ms`\n );\n /* istanbul ignore if */\n if (process.env.NODE_ENV === 'development') {\n this.logger.debug(`${this.namespace}: `, err, err.stack);\n }\n\n return;\n }\n this.logger.info(`${this.namespace}: connected`);\n });\n\n call.start();\n\n this.backoffCall = call;\n });\n },\n\n _emit(...args) {\n try {\n this.trigger(...args);\n } catch (error) {\n this.logger.error(`${this.namespace}: error occurred in event handler`, {\n error,\n arguments: args,\n });\n }\n },\n\n _getEventHandlers(eventType) {\n const [namespace, name] = eventType.split('.');\n const handlers = [];\n\n if (!this.webex[namespace] && !this.webex.internal[namespace]) {\n return handlers;\n }\n\n const handlerName = camelCase(`process_${name}_event`);\n\n if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {\n handlers.push({\n name: handlerName,\n namespace,\n });\n }\n\n return handlers;\n },\n\n _onclose(event) {\n // I don't see any way to avoid the complexity or statement count in here.\n /* eslint complexity: [0] */\n\n try {\n const reason = event.reason && event.reason.toLowerCase();\n const socketUrl = this.socket.url;\n\n this.socket.removeAllListeners();\n this.unset('socket');\n this.connected = false;\n this._emit('offline', event);\n\n switch (event.code) {\n case 1003:\n // metric: disconnect\n this.logger.info(\n `${this.namespace}: Mercury service rejected last message; will not reconnect: ${event.reason}`\n );\n this._emit('offline.permanent', event);\n break;\n case 4000:\n // metric: disconnect\n this.logger.info(`${this.namespace}: socket replaced; will not reconnect`);\n this._emit('offline.replaced', event);\n break;\n case 1001:\n case 1005:\n case 1006:\n case 1011:\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (code == 1011 && reason !== ping error) metric: unexpected disconnect\n break;\n case 1000:\n if (normalReconnectReasons.includes(reason)) {\n this.logger.info(`${this.namespace}: socket disconnected; reconnecting`);\n this._emit('offline.transient', event);\n this._reconnect(socketUrl);\n // metric: disconnect\n // if (reason === done forced) metric: force closure\n } else {\n this.logger.info(`${this.namespace}: socket disconnected; will not reconnect`);\n this._emit('offline.permanent', event);\n }\n break;\n default:\n this.logger.info(\n `${this.namespace}: socket disconnected unexpectedly; will not reconnect`\n );\n // unexpected disconnect\n this._emit('offline.permanent', event);\n }\n } catch (error) {\n this.logger.error(`${this.namespace}: error occurred in close handler`, error);\n }\n },\n\n _onmessage(event) {\n const envelope = event.data;\n\n if (process.env.ENABLE_MERCURY_LOGGING) {\n this.logger.debug(`${this.namespace}: message envelope: `, envelope);\n }\n\n const {data} = envelope;\n\n this._applyOverrides(data);\n\n return this._getEventHandlers(data.eventType)\n .reduce(\n (promise, handler) =>\n promise.then(() => {\n const {namespace, name} = handler;\n\n return new Promise((resolve) =>\n resolve((this.webex[namespace] || this.webex.internal[namespace])[name](data))\n ).catch((reason) =>\n this.logger.error(\n `${this.namespace}: error occurred in autowired event handler for ${data.eventType}`,\n reason\n )\n );\n }),\n Promise.resolve()\n )\n .then(() => {\n this._emit('event', event.data);\n const [namespace] = data.eventType.split('.');\n\n if (namespace === data.eventType) {\n this._emit(`event:${namespace}`, envelope);\n } else {\n this._emit(`event:${namespace}`, envelope);\n this._emit(`event:${data.eventType}`, envelope);\n }\n })\n .catch((reason) => {\n this.logger.error(`${this.namespace}: error occurred processing socket message`, reason);\n });\n },\n\n _reconnect(webSocketUrl) {\n this.logger.info(`${this.namespace}: reconnecting`);\n\n return this.connect(webSocketUrl);\n },\n});\n\nexport default Mercury;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,IAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,QAAA,GAAAL,sBAAA,CAAAC,OAAA;AAEA,IAAAK,OAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,OAAA,GAAAN,OAAA;AAOkB,IAAAO,IAAA,EAAAC,KAAA,EAAAC,IAAA;AAnBlB;AACA;AACA;AAFA,SAAAC,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,aAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,iCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,iCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAqBA,IAAMqB,sBAAsB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,CAAC;AAE9F,IAAMC,OAAO,GAAGC,sBAAW,CAACC,MAAM,EAAA5B,IAAA,GA8D/B,IAAA6B,kBAAU,EAAC,iDAAiD,CAAC,EAAA5B,KAAA,GAM7D,IAAA4B,kBAAU,EAAC,2DAA2D,CAAC,GAAA3B,IAAA,GApEvC;EACjC4B,SAAS,EAAE,SAAS;EAEpBC,OAAO,EAAE;IACPC,SAAS,EAAE;MACTX,OAAO,EAAE,KAAK;MACdY,IAAI,EAAE;IACR,CAAC;IACDC,UAAU,EAAE;MACVb,OAAO,EAAE,KAAK;MACdY,IAAI,EAAE;IACR,CAAC;IACDE,MAAM,EAAE,QAAQ;IAChBC,uBAAuB,EAAE;EAC3B,CAAC;EAEDC,OAAO,EAAE;IACPC,SAAS,EAAE;MACTC,IAAI,EAAE,CAAC,WAAW,CAAC;MACnBC,EAAE,WAAAA,GAAA,EAAG;QACH,OAAO,IAAI,CAACR,SAAS;MACvB;IACF;EACF,CAAC;EAGDS,OAAO,WAAAA,QAACC,YAAY,EAAE;IAAA,IAAAC,KAAA;IACpB,IAAI,IAAI,CAACX,SAAS,EAAE;MAClB,IAAI,CAACY,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,gDAA6C,CAAC;MAEhF,OAAOiB,QAAA,CAAA1B,OAAA,CAAQ2B,OAAO,CAAC,CAAC;IAC1B;IAEA,IAAI,CAACd,UAAU,GAAG,IAAI;IAEtB,OAAOa,QAAA,CAAA1B,OAAA,CAAQ2B,OAAO,CACpB,IAAI,CAACC,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACC,UAAU,IAAI,IAAI,CAACH,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACE,QAAQ,CAAC,CAC/E,CAAC,CAACC,IAAI,CAAC,YAAM;MACXX,KAAI,CAACC,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIH,KAAI,CAACb,SAAS,iBAAc,CAAC;MAEjD,OAAOa,KAAI,CAACY,mBAAmB,CAACb,YAAY,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAGDc,UAAU,WAAAA,WAAA,EAAG;IAAA,IAAAC,MAAA;IACX,OAAO,IAAAV,QAAA,CAAA1B,OAAA,CAAY,UAAC2B,OAAO,EAAK;MAC9B,IAAIS,MAAI,CAACC,WAAW,EAAE;QACpBD,MAAI,CAACb,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIW,MAAI,CAAC3B,SAAS,0BAAuB,CAAC;QAC1D2B,MAAI,CAACC,WAAW,CAACC,KAAK,CAAC,CAAC;MAC1B;MAEA,IAAIF,MAAI,CAACtB,MAAM,EAAE;QACfsB,MAAI,CAACtB,MAAM,CAACyB,kBAAkB,CAAC,SAAS,CAAC;QACzCH,MAAI,CAACI,IAAI,CAAC,SAAS,EAAEb,OAAO,CAAC;QAC7BA,OAAO,CAACS,MAAI,CAACtB,MAAM,CAAC2B,KAAK,CAAC,CAAC,CAAC;MAC9B;MAEAd,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;EACJ,CAAC;EAGDe,MAAM,WAAAA,OAAA,EAAG;IACP;IACA,OAAO,IAAI,CAACtB,OAAO,CAAC,CAAC;EACvB,CAAC;EAGDuB,aAAa,WAAAA,cAAA,EAAG;IACd;IACA,OAAO,IAAI,CAACR,UAAU,CAAC,CAAC;EAC1B,CAAC;EAEDS,8BAA8B,WAAAA,+BAACC,OAAO,EAAE;IACtC,IAAI,CAAC9B,uBAAuB,GAAG8B,OAAO,CAAC9B,uBAAuB;EAChE,CAAC;EAED+B,eAAe,WAAAA,gBAACC,KAAK,EAAE;IACrB,IAAI,CAACA,KAAK,IAAI,CAACA,KAAK,CAACC,OAAO,EAAE;MAC5B;IACF;IACA,IAAMC,UAAU,GAAG,IAAAC,KAAA,CAAAlD,OAAA,EAAY+C,KAAK,CAACC,OAAO,CAAC;IAE7CC,UAAU,CAACnD,OAAO,CAAC,UAACqD,OAAO,EAAK;MAC9B,IAAAC,WAAG,EAACL,KAAK,EAAEI,OAAO,EAAEJ,KAAK,CAACC,OAAO,CAACG,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC;EACJ,CAAC;EAEDE,WAAW,WAAAA,YAAChC,YAAY,EAAE;IAAA,IAAAiC,MAAA;IACxB,IAAI,CAACjC,YAAY,EAAE;MACjBA,YAAY,GAAG,IAAI,CAACO,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACT,YAAY;IACxD;IAEA,OAAO,IAAI,CAACO,KAAK,CAACC,QAAQ,CAAC0B,OAAO,CAC/BC,UAAU,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAChDvB,IAAI,CAAC,UAACwB,kBAAkB,EAAK;MAC5B,IAAIA,kBAAkB,EAAE;QACtB,OAAOH,MAAI,CAAC1B,KAAK,CAACC,QAAQ,CAAC6B,QAAQ,CAACC,2BAA2B,CAACtC,YAAY,CAAC;MAC/E;MAEA,OAAOA,YAAY;IACrB,CAAC,CAAC,CACDY,IAAI,CAAC,UAAC2B,KAAK,EAAK;MACfvC,YAAY,GAAGuC,KAAK;IACtB,CAAC,CAAC,CACD3B,IAAI,CAAC;MAAA,OAAMqB,MAAI,CAAC1B,KAAK,CAACC,QAAQ,CAAC0B,OAAO,CAACC,UAAU,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAAA,EAAC,CACrFvB,IAAI,CAAC,UAAC4B,gBAAgB,EAAK;MAC1BxC,YAAY,GAAGyC,YAAG,CAACC,KAAK,CAAC1C,YAAY,EAAE,IAAI,CAAC;MAC5C,IAAA2C,OAAA,CAAAhE,OAAA,EAAcqB,YAAY,CAAC4C,KAAK,EAAE;QAChCC,kBAAkB,EAAE,MAAM;QAC1BC,YAAY,EAAE,IAAI;QAClBC,eAAe,EAAE;MACnB,CAAC,CAAC;MAEF,IAAIP,gBAAgB,EAAE;QACpB,IAAAG,OAAA,CAAAhE,OAAA,EAAcqB,YAAY,CAAC4C,KAAK,EAAE;UAChCI,yBAAyB,EAAE,IAAI;UAC/BC,4BAA4B,EAAE;QAChC,CAAC,CAAC;QACF,IAAAC,eAAA,CAAAvE,OAAA,EAAuBqB,YAAY,CAAC4C,KAAK,EAAE,cAAc,CAAC;MAC5D;MAEA,IAAI,IAAAO,WAAG,EAAClB,MAAI,EAAE,+BAA+B,EAAE,KAAK,CAAC,EAAE;QACrDjC,YAAY,CAAC4C,KAAK,CAACQ,mBAAmB,GAAG,IAAI;MAC/C;MAEA,OAAOX,YAAG,CAACY,MAAM,CAACrD,YAAY,CAAC;IACjC,CAAC,CAAC;EACN,CAAC;EAEDsD,kBAAkB,WAAAA,mBAACC,SAAS,EAAEC,QAAQ,EAAE;IAAA,IAAAC,MAAA;IACtC,IAAMhE,MAAM,GAAG,IAAIiE,eAAM,CAAC,CAAC;IAC3B,IAAIC,YAAY;IAEhBlE,MAAM,CAACmE,EAAE,CAAC,OAAO,EAAE;MAAA,OAAaH,MAAI,CAACI,QAAQ,CAAAzF,KAAA,CAAbqF,MAAI,EAAAnF,SAAiB,CAAC;IAAA,EAAC;IACvDmB,MAAM,CAACmE,EAAE,CAAC,SAAS,EAAE;MAAA,OAAaH,MAAI,CAACK,UAAU,CAAA1F,KAAA,CAAfqF,MAAI,EAAAnF,SAAmB,CAAC;IAAA,EAAC;IAC3DmB,MAAM,CAACmE,EAAE,CAAC,mBAAmB,EAAE;MAAA,SAAAG,IAAA,GAAAzF,SAAA,CAAAC,MAAA,EAAIyF,IAAI,OAAAC,KAAA,CAAAF,IAAA,GAAAG,IAAA,MAAAA,IAAA,GAAAH,IAAA,EAAAG,IAAA;QAAJF,IAAI,CAAAE,IAAA,IAAA5F,SAAA,CAAA4F,IAAA;MAAA;MAAA,OAAKT,MAAI,CAACU,KAAK,CAAA/F,KAAA,CAAVqF,MAAI,GAAO,mBAAmB,EAAArD,MAAA,CAAK4D,IAAI,EAAC;IAAA,EAAC;IAErF3D,QAAA,CAAA1B,OAAA,CAAQyF,GAAG,CAAC,CAAC,IAAI,CAACpC,WAAW,CAACuB,SAAS,CAAC,EAAE,IAAI,CAAChD,KAAK,CAAC8D,WAAW,CAACC,YAAY,CAAC,CAAC,CAAC,CAAC,CAC9E1D,IAAI,CAAC,UAAA2D,IAAA,EAA2B;MAAA,IAAAC,KAAA,OAAAC,eAAA,CAAA9F,OAAA,EAAA4F,IAAA;QAAzBvE,YAAY,GAAAwE,KAAA;QAAEE,KAAK,GAAAF,KAAA;MACzB,IAAI,CAACf,MAAI,CAACzC,WAAW,EAAE;QACrB,IAAM2D,GAAG,MAAAvE,MAAA,CAAMqD,MAAI,CAACrE,SAAS,6DAA0D;QAEvFqE,MAAI,CAACvD,MAAM,CAACC,IAAI,CAACwE,GAAG,CAAC;QAErB,OAAOtE,QAAA,CAAA1B,OAAA,CAAQiG,MAAM,CAAC,IAAIC,KAAK,CAACF,GAAG,CAAC,CAAC;MACvC;MAEAhB,YAAY,GAAG3D,YAAY;MAE3B,IAAI8E,OAAO,GAAG;QACZC,eAAe,EAAEtB,MAAI,CAACuB,MAAM,CAACD,eAAe;QAC5CE,YAAY,EAAExB,MAAI,CAACuB,MAAM,CAACC,YAAY;QACtCC,WAAW,EAAEzB,MAAI,CAACuB,MAAM,CAACE,WAAW;QACpCR,KAAK,EAAEA,KAAK,CAACS,QAAQ,CAAC,CAAC;QACvBC,UAAU,KAAAhF,MAAA,CAAKqD,MAAI,CAAClD,KAAK,CAAC8E,SAAS,OAAAjF,MAAA,CAAI,IAAAkF,IAAA,CAAA3G,OAAA,EAAS,CAAC,CAAE;QACnDuB,MAAM,EAAEuD,MAAI,CAACvD;MACf,CAAC;;MAED;MACA,IAAIuD,MAAI,CAAClD,KAAK,CAACyE,MAAM,CAACO,qBAAqB,EAAE;QAC3C9B,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIqD,MAAI,CAACrE,SAAS,6BAA0B,CAAC;QAC7D0F,OAAO,GAAAzG,aAAA,CAAAA,aAAA,KAAOyG,OAAO,GAAKrB,MAAI,CAAClD,KAAK,CAACyE,MAAM,CAACO,qBAAqB,CAAC;MACpE;;MAEA;MACA;MACA9B,MAAI,CAAChE,MAAM,GAAGA,MAAM;MAEpBgE,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIqD,MAAI,CAACrE,SAAS,uBAAAgB,MAAA,CAAoBJ,YAAY,CAAE,CAAC;MAErE,OAAOP,MAAM,CAAC+F,IAAI,CAACxF,YAAY,EAAE8E,OAAO,CAAC;IAC3C,CAAC,CAAC,CACDlE,IAAI,CAAC,YAAM;MACV6C,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAACiF,OAAO,CAACC,mBAAmB,CAAC,gBAAgB,EAAE;QAChEC,MAAM,EAAE;UACNC,OAAO,EAAE;QACX,CAAC;QACDC,IAAI,EAAE;UACJzG,SAAS,EAAEqE,MAAI,CAACrE,SAAS;UACzB0G,MAAM,EAAE,WAAW;UACnBrD,GAAG,EAAEkB;QACP;MACF,CAAC,CAAC;MACFH,QAAQ,CAAC,CAAC;MAEV,OAAOC,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAAC0B,OAAO,CAC/BC,UAAU,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAChDvB,IAAI,CAAC,UAACwB,kBAAkB,EAAK;QAC5B,IAAIA,kBAAkB,EAAE;UACtB,OAAOqB,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACsF,OAAO,CAAC,CAAC;QAC7C;QAEA,OAAO1F,QAAA,CAAA1B,OAAA,CAAQ2B,OAAO,CAAC,CAAC;MAC1B,CAAC,CAAC;IACN,CAAC,CAAC,CACD0F,KAAK,CAAC,UAACC,MAAM,EAAK;MACjB;MACA;MACA;MACA;MACA,IAAIA,MAAM,CAACC,IAAI,KAAK,IAAI,IAAIzC,MAAI,CAACzC,WAAW,IAAIyC,MAAI,CAACzC,WAAW,CAACmF,aAAa,CAAC,CAAC,GAAG,CAAC,EAAE;QACpF1C,MAAI,CAACU,KAAK,CAAC,mBAAmB,EAAE8B,MAAM,EAAE;UAACG,OAAO,EAAE3C,MAAI,CAACzC,WAAW,CAACmF,aAAa,CAAC;QAAC,CAAC,CAAC;MACtF;MACA1C,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIqD,MAAI,CAACrE,SAAS,kCAA+B6G,MAAM,CAAC;MACxE;MACA;MACA,IAAIA,MAAM,YAAYI,uBAAe,EAAE;QACrC5C,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CACXqD,MAAI,CAACrE,SAAS,qEACnB,CAAC;QAED,OAAOqE,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAACC,MAAM,CAACsF,OAAO,CAAC,CAAC,CAACnF,IAAI,CAAC;UAAA,OAAM4C,QAAQ,CAACyC,MAAM,CAAC;QAAA,EAAC;MAC1E;MACA;MACA,IAAIA,MAAM,YAAYK,qBAAa,EAAE;QACnC7C,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAIqD,MAAI,CAACrE,SAAS,kDAA+C,CAAC;QAElF,OAAOqE,MAAI,CAAClD,KAAK,CAAC8D,WAAW,CAAC0B,OAAO,CAAC;UAACQ,KAAK,EAAE;QAAI,CAAC,CAAC,CAAC3F,IAAI,CAAC;UAAA,OAAM4C,QAAQ,CAACyC,MAAM,CAAC;QAAA,EAAC;MACnF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA,IAAIA,MAAM,YAAYO,kBAAU,IAAIP,MAAM,YAAYQ,iBAAS,EAAE;QAC/DhD,MAAI,CAACvD,MAAM,CAACwG,IAAI,IAAAtG,MAAA,CAAIqD,MAAI,CAACrE,SAAS,mDAAgD,CAAC;QACnFqE,MAAI,CAACzC,WAAW,CAACC,KAAK,CAAC,CAAC;QAExB,OAAOuC,QAAQ,CAACyC,MAAM,CAAC;MACzB;MACA,IAAIA,MAAM,YAAYU,uBAAe,EAAE;QACrC,OAAOlD,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAAC0B,OAAO,CAC/BC,UAAU,CAAC,WAAW,EAAE,uBAAuB,CAAC,CAChDvB,IAAI,CAAC,UAACwB,kBAAkB,EAAK;UAC5B,IAAIA,kBAAkB,EAAE;YACtBqB,MAAI,CAACvD,MAAM,CAACC,IAAI,IAAAC,MAAA,CACXqD,MAAI,CAACrE,SAAS,qFACnB,CAAC;YACDqE,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAACiF,OAAO,CAACC,mBAAmB,CAAC,gBAAgB,EAAE;cAChEC,MAAM,EAAE;gBACNC,OAAO,EAAE;cACX,CAAC;cACDC,IAAI,EAAE;gBACJzG,SAAS,EAAEqE,MAAI,CAACrE,SAAS;gBACzB0G,MAAM,EAAE,QAAQ;gBAChBc,KAAK,EAAEX,MAAM,CAACzE,OAAO;gBACrBiB,GAAG,EAAEkB;cACP;YACF,CAAC,CAAC;YAEF,OAAOF,MAAI,CAAClD,KAAK,CAACC,QAAQ,CAAC6B,QAAQ,CAACwE,aAAa,CAAClD,YAAY,CAAC;UACjE;UAEA,OAAO,IAAI;QACb,CAAC,CAAC,CACD/C,IAAI,CAAC;UAAA,OAAM4C,QAAQ,CAACyC,MAAM,CAAC;QAAA,EAAC;MACjC;MAEA,OAAOzC,QAAQ,CAACyC,MAAM,CAAC;IACzB,CAAC,CAAC,CACDD,KAAK,CAAC,UAACC,MAAM,EAAK;MACjBxC,MAAI,CAACvD,MAAM,CAAC0G,KAAK,IAAAxG,MAAA,CAAIqD,MAAI,CAACrE,SAAS,4CAAyC6G,MAAM,CAAC;MACnFzC,QAAQ,CAACyC,MAAM,CAAC;IAClB,CAAC,CAAC;EACN,CAAC;EAEDpF,mBAAmB,WAAAA,oBAACb,YAAY,EAAE;IAAA,IAAA8G,MAAA;IAChC,OAAO,IAAAzG,QAAA,CAAA1B,OAAA,CAAY,UAAC2B,OAAO,EAAEsE,MAAM,EAAK;MACtC;MACA;MACA,IAAImC,IAAI;MACR,IAAMC,UAAU,GAAG,SAAbA,UAAUA,CAAIC,GAAG,EAAK;QAC1BH,MAAI,CAACtH,UAAU,GAAG,KAAK;QAEvBsH,MAAI,CAAC9F,WAAW,GAAGkG,SAAS;QAC5B,IAAID,GAAG,EAAE;UACPH,MAAI,CAAC5G,MAAM,CAACC,IAAI,IAAAC,MAAA,CAEZ0G,MAAI,CAAC1H,SAAS,gCAAAgB,MAAA,CACa2G,IAAI,CAACZ,aAAa,CAAC,CAAC,+DAAA/F,MAAA,CAA4D6G,GAAG,CAClH,CAAC;UAED,OAAOrC,MAAM,CAACqC,GAAG,CAAC;QACpB;QACAH,MAAI,CAACxH,SAAS,GAAG,IAAI;QACrBwH,MAAI,CAAC3C,KAAK,CAAC,QAAQ,CAAC;QAEpB,OAAO7D,OAAO,CAAC,CAAC;MAClB,CAAC;;MAED;MACAyG,IAAI,GAAGI,gBAAO,CAACJ,IAAI,CAAC,UAACvD,QAAQ,EAAK;QAChCsD,MAAI,CAAC5G,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI0G,MAAI,CAAC1H,SAAS,qCAAAgB,MAAA,CAAkC2G,IAAI,CAACZ,aAAa,CAAC,CAAC,CAAE,CAAC;QAC3FW,MAAI,CAACxD,kBAAkB,CAACtD,YAAY,EAAEwD,QAAQ,CAAC;MACjD,CAAC,EAAEwD,UAAU,CAAC;MAEdD,IAAI,CAACK,WAAW,CACd,IAAID,gBAAO,CAACE,mBAAmB,CAAC;QAC9BC,YAAY,EAAER,MAAI,CAAC9B,MAAM,CAACuC,gBAAgB;QAC1CC,QAAQ,EAAEV,MAAI,CAAC9B,MAAM,CAACyC;MACxB,CAAC,CACH,CAAC;MAED,IAAIX,MAAI,CAAC9B,MAAM,CAAC0C,UAAU,EAAE;QAC1BX,IAAI,CAACY,SAAS,CAACb,MAAI,CAAC9B,MAAM,CAAC0C,UAAU,CAAC;MACxC;MAEAX,IAAI,CAACnD,EAAE,CAAC,OAAO,EAAE,YAAM;QACrBkD,MAAI,CAAC5G,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI0G,MAAI,CAAC1H,SAAS,yBAAsB,CAAC;QACzDwF,MAAM,CAAC,IAAIC,KAAK,CAAC,4BAA4B,CAAC,CAAC;MACjD,CAAC,CAAC;MAEFkC,IAAI,CAACnD,EAAE,CAAC,UAAU,EAAE,UAACqD,GAAG,EAAK;QAC3B,IAAIA,GAAG,EAAE;UACP,IAAMW,MAAM,GAAGb,IAAI,CAACZ,aAAa,CAAC,CAAC;UACnC,IAAM0B,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAChB,IAAI,CAACiB,SAAS,CAACC,iBAAiB,EAAEnB,MAAI,CAAC9B,MAAM,CAACyC,cAAc,CAAC;UAEpFX,MAAI,CAAC5G,MAAM,CAACC,IAAI,IAAAC,MAAA,CACX0G,MAAI,CAAC1H,SAAS,4CAAAgB,MAAA,CAAyCwH,MAAM,GAAG,CAAC,UAAAxH,MAAA,CAAOyH,KAAK,QAClF,CAAC;UACD;UACA,IAAIK,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;YAC1CtB,MAAI,CAAC5G,MAAM,CAACmI,KAAK,IAAAjI,MAAA,CAAI0G,MAAI,CAAC1H,SAAS,SAAM6H,GAAG,EAAEA,GAAG,CAACqB,KAAK,CAAC;UAC1D;UAEA;QACF;QACAxB,MAAI,CAAC5G,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI0G,MAAI,CAAC1H,SAAS,gBAAa,CAAC;MAClD,CAAC,CAAC;MAEF2H,IAAI,CAACwB,KAAK,CAAC,CAAC;MAEZzB,MAAI,CAAC9F,WAAW,GAAG+F,IAAI;IACzB,CAAC,CAAC;EACJ,CAAC;EAED5C,KAAK,WAAAA,MAAA,EAAU;IAAA,SAAAqE,KAAA,GAAAlK,SAAA,CAAAC,MAAA,EAANyF,IAAI,OAAAC,KAAA,CAAAuE,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;MAAJzE,IAAI,CAAAyE,KAAA,IAAAnK,SAAA,CAAAmK,KAAA;IAAA;IACX,IAAI;MACF,IAAI,CAACC,OAAO,CAAAtK,KAAA,CAAZ,IAAI,EAAY4F,IAAI,CAAC;IACvB,CAAC,CAAC,OAAO4C,KAAK,EAAE;MACd,IAAI,CAAC1G,MAAM,CAAC0G,KAAK,IAAAxG,MAAA,CAAI,IAAI,CAAChB,SAAS,wCAAqC;QACtEwH,KAAK,EAALA,KAAK;QACLtI,SAAS,EAAE0F;MACb,CAAC,CAAC;IACJ;EACF,CAAC;EAED2E,iBAAiB,WAAAA,kBAACC,SAAS,EAAE;IAC3B,IAAAC,gBAAA,GAA0BD,SAAS,CAACE,KAAK,CAAC,GAAG,CAAC;MAAAC,iBAAA,OAAAtE,eAAA,CAAA9F,OAAA,EAAAkK,gBAAA;MAAvCzJ,SAAS,GAAA2J,iBAAA;MAAEC,IAAI,GAAAD,iBAAA;IACtB,IAAME,QAAQ,GAAG,EAAE;IAEnB,IAAI,CAAC,IAAI,CAAC1I,KAAK,CAACnB,SAAS,CAAC,IAAI,CAAC,IAAI,CAACmB,KAAK,CAACC,QAAQ,CAACpB,SAAS,CAAC,EAAE;MAC7D,OAAO6J,QAAQ;IACjB;IAEA,IAAMC,WAAW,GAAG,IAAAC,iBAAS,aAAA/I,MAAA,CAAY4I,IAAI,WAAQ,CAAC;IAEtD,IAAI,CAAC,IAAI,CAACzI,KAAK,CAACnB,SAAS,CAAC,IAAI,IAAI,CAACmB,KAAK,CAACC,QAAQ,CAACpB,SAAS,CAAC,EAAE8J,WAAW,CAAC,EAAE;MAC1ED,QAAQ,CAAC9K,IAAI,CAAC;QACZ6K,IAAI,EAAEE,WAAW;QACjB9J,SAAS,EAATA;MACF,CAAC,CAAC;IACJ;IAEA,OAAO6J,QAAQ;EACjB,CAAC;EAEDpF,QAAQ,WAAAA,SAACnC,KAAK,EAAE;IACd;IACA;;IAEA,IAAI;MACF,IAAMuE,MAAM,GAAGvE,KAAK,CAACuE,MAAM,IAAIvE,KAAK,CAACuE,MAAM,CAACmD,WAAW,CAAC,CAAC;MACzD,IAAM7F,SAAS,GAAG,IAAI,CAAC9D,MAAM,CAACgD,GAAG;MAEjC,IAAI,CAAChD,MAAM,CAACyB,kBAAkB,CAAC,CAAC;MAChC,IAAI,CAACmI,KAAK,CAAC,QAAQ,CAAC;MACpB,IAAI,CAAC/J,SAAS,GAAG,KAAK;MACtB,IAAI,CAAC6E,KAAK,CAAC,SAAS,EAAEzC,KAAK,CAAC;MAE5B,QAAQA,KAAK,CAACwE,IAAI;QAChB,KAAK,IAAI;UACP;UACA,IAAI,CAAChG,MAAM,CAACC,IAAI,IAAAC,MAAA,CACX,IAAI,CAAChB,SAAS,mEAAAgB,MAAA,CAAgEsB,KAAK,CAACuE,MAAM,CAC/F,CAAC;UACD,IAAI,CAAC9B,KAAK,CAAC,mBAAmB,EAAEzC,KAAK,CAAC;UACtC;QACF,KAAK,IAAI;UACP;UACA,IAAI,CAACxB,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,0CAAuC,CAAC;UAC1E,IAAI,CAAC+E,KAAK,CAAC,kBAAkB,EAAEzC,KAAK,CAAC;UACrC;QACF,KAAK,IAAI;QACT,KAAK,IAAI;QACT,KAAK,IAAI;QACT,KAAK,IAAI;UACP,IAAI,CAACxB,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,wCAAqC,CAAC;UACxE,IAAI,CAAC+E,KAAK,CAAC,mBAAmB,EAAEzC,KAAK,CAAC;UACtC,IAAI,CAAC4H,UAAU,CAAC/F,SAAS,CAAC;UAC1B;UACA;UACA;QACF,KAAK,IAAI;UACP,IAAIxE,sBAAsB,CAACwK,QAAQ,CAACtD,MAAM,CAAC,EAAE;YAC3C,IAAI,CAAC/F,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,wCAAqC,CAAC;YACxE,IAAI,CAAC+E,KAAK,CAAC,mBAAmB,EAAEzC,KAAK,CAAC;YACtC,IAAI,CAAC4H,UAAU,CAAC/F,SAAS,CAAC;YAC1B;YACA;UACF,CAAC,MAAM;YACL,IAAI,CAACrD,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,8CAA2C,CAAC;YAC9E,IAAI,CAAC+E,KAAK,CAAC,mBAAmB,EAAEzC,KAAK,CAAC;UACxC;UACA;QACF;UACE,IAAI,CAACxB,MAAM,CAACC,IAAI,IAAAC,MAAA,CACX,IAAI,CAAChB,SAAS,2DACnB,CAAC;UACD;UACA,IAAI,CAAC+E,KAAK,CAAC,mBAAmB,EAAEzC,KAAK,CAAC;MAC1C;IACF,CAAC,CAAC,OAAOkF,KAAK,EAAE;MACd,IAAI,CAAC1G,MAAM,CAAC0G,KAAK,IAAAxG,MAAA,CAAI,IAAI,CAAChB,SAAS,wCAAqCwH,KAAK,CAAC;IAChF;EACF,CAAC;EAED9C,UAAU,WAAAA,WAACpC,KAAK,EAAE;IAAA,IAAA8H,MAAA;IAChB,IAAMC,QAAQ,GAAG/H,KAAK,CAACgI,IAAI;IAE3B,IAAIxB,OAAO,CAACC,GAAG,CAACwB,sBAAsB,EAAE;MACtC,IAAI,CAACzJ,MAAM,CAACmI,KAAK,IAAAjI,MAAA,CAAI,IAAI,CAAChB,SAAS,2BAAwBqK,QAAQ,CAAC;IACtE;IAEA,IAAOC,IAAI,GAAID,QAAQ,CAAhBC,IAAI;IAEX,IAAI,CAACjI,eAAe,CAACiI,IAAI,CAAC;IAE1B,OAAO,IAAI,CAACf,iBAAiB,CAACe,IAAI,CAACd,SAAS,CAAC,CAC1CgB,MAAM,CACL,UAACC,OAAO,EAAEC,OAAO;MAAA,OACfD,OAAO,CAACjJ,IAAI,CAAC,YAAM;QACjB,IAAOxB,SAAS,GAAU0K,OAAO,CAA1B1K,SAAS;UAAE4J,IAAI,GAAIc,OAAO,CAAfd,IAAI;QAEtB,OAAO,IAAA3I,QAAA,CAAA1B,OAAA,CAAY,UAAC2B,OAAO;UAAA,OACzBA,OAAO,CAAC,CAACkJ,MAAI,CAACjJ,KAAK,CAACnB,SAAS,CAAC,IAAIoK,MAAI,CAACjJ,KAAK,CAACC,QAAQ,CAACpB,SAAS,CAAC,EAAE4J,IAAI,CAAC,CAACU,IAAI,CAAC,CAAC;QAAA,CAChF,CAAC,CAAC1D,KAAK,CAAC,UAACC,MAAM;UAAA,OACbuD,MAAI,CAACtJ,MAAM,CAAC0G,KAAK,IAAAxG,MAAA,CACZoJ,MAAI,CAACpK,SAAS,sDAAAgB,MAAA,CAAmDsJ,IAAI,CAACd,SAAS,GAClF3C,MACF,CAAC;QAAA,CACH,CAAC;MACH,CAAC,CAAC;IAAA,GACJ5F,QAAA,CAAA1B,OAAA,CAAQ2B,OAAO,CAAC,CAClB,CAAC,CACAM,IAAI,CAAC,YAAM;MACV4I,MAAI,CAACrF,KAAK,CAAC,OAAO,EAAEzC,KAAK,CAACgI,IAAI,CAAC;MAC/B,IAAAK,qBAAA,GAAoBL,IAAI,CAACd,SAAS,CAACE,KAAK,CAAC,GAAG,CAAC;QAAAkB,sBAAA,OAAAvF,eAAA,CAAA9F,OAAA,EAAAoL,qBAAA;QAAtC3K,SAAS,GAAA4K,sBAAA;MAEhB,IAAI5K,SAAS,KAAKsK,IAAI,CAACd,SAAS,EAAE;QAChCY,MAAI,CAACrF,KAAK,UAAA/D,MAAA,CAAUhB,SAAS,GAAIqK,QAAQ,CAAC;MAC5C,CAAC,MAAM;QACLD,MAAI,CAACrF,KAAK,UAAA/D,MAAA,CAAUhB,SAAS,GAAIqK,QAAQ,CAAC;QAC1CD,MAAI,CAACrF,KAAK,UAAA/D,MAAA,CAAUsJ,IAAI,CAACd,SAAS,GAAIa,QAAQ,CAAC;MACjD;IACF,CAAC,CAAC,CACDzD,KAAK,CAAC,UAACC,MAAM,EAAK;MACjBuD,MAAI,CAACtJ,MAAM,CAAC0G,KAAK,IAAAxG,MAAA,CAAIoJ,MAAI,CAACpK,SAAS,iDAA8C6G,MAAM,CAAC;IAC1F,CAAC,CAAC;EACN,CAAC;EAEDqD,UAAU,WAAAA,WAACtJ,YAAY,EAAE;IACvB,IAAI,CAACE,MAAM,CAACC,IAAI,IAAAC,MAAA,CAAI,IAAI,CAAChB,SAAS,mBAAgB,CAAC;IAEnD,OAAO,IAAI,CAACW,OAAO,CAACC,YAAY,CAAC;EACnC,CAAC;EAAAiK,OAAA;AACH,CAAC,OAAAC,0BAAA,CAAAvL,OAAA,EAAAnB,IAAA,cAxcE2M,iBAAS,OAAAC,yBAAA,CAAAzL,OAAA,EAAAnB,IAAA,cAAAA,IAAA,OAAA0M,0BAAA,CAAAvL,OAAA,EAAAnB,IAAA,iBAmBT2M,iBAAS,OAAAC,yBAAA,CAAAzL,OAAA,EAAAnB,IAAA,iBAAAA,IAAA,OAAA0M,0BAAA,CAAAvL,OAAA,EAAAnB,IAAA,aAAAF,IAAA,OAAA8M,yBAAA,CAAAzL,OAAA,EAAAnB,IAAA,aAAAA,IAAA,OAAA0M,0BAAA,CAAAvL,OAAA,EAAAnB,IAAA,oBAAAD,KAAA,OAAA6M,yBAAA,CAAAzL,OAAA,EAAAnB,IAAA,oBAAAA,IAAA,IAAAA,IAAA,EAqbX,CAAC;AAAC,IAAA6M,QAAA,GAAAC,OAAA,CAAA3L,OAAA,GAEYK,OAAO"}