@webex/calling 3.12.0-next.28 → 3.12.0-next.29
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/CallingClient/CallingClient.js +408 -194
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +119 -25
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/call.js +11 -8
- package/dist/CallingClient/calling/call.js.map +1 -1
- package/dist/CallingClient/calling/call.test.js +45 -4
- package/dist/CallingClient/calling/call.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +53 -30
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +35 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/calling/types.js +2 -0
- package/dist/CallingClient/calling/types.js.map +1 -1
- package/dist/CallingClient/constants.js +20 -2
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/line/line.test.js +16 -1
- package/dist/CallingClient/line/line.test.js.map +1 -1
- package/dist/CallingClient/registration/register.js +694 -406
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +202 -21
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/registration/types.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.js +41 -104
- package/dist/CallingClient/registration/webWorker.js.map +1 -1
- package/dist/CallingClient/registration/webWorker.test.js +39 -153
- package/dist/CallingClient/registration/webWorker.test.js.map +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js +1 -1
- package/dist/CallingClient/registration/webWorkerStr.js.map +1 -1
- package/dist/CallingClient/utils/constants.js +46 -0
- package/dist/CallingClient/utils/constants.js.map +1 -0
- package/dist/CallingClient/utils/index.js +63 -0
- package/dist/CallingClient/utils/index.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js +122 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.js.map +1 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js +211 -0
- package/dist/CallingClient/utils/mobiusSocketMapper.test.js.map +1 -0
- package/dist/CallingClient/utils/request.js +349 -0
- package/dist/CallingClient/utils/request.js.map +1 -0
- package/dist/CallingClient/utils/request.test.js +881 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -0
- package/dist/CallingClient/utils/types.js +7 -0
- package/dist/CallingClient/utils/types.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js +28 -0
- package/dist/CallingClient/utils/wsFeatureFlag.js.map +1 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js +139 -0
- package/dist/CallingClient/utils/wsFeatureFlag.test.js.map +1 -0
- package/dist/Contacts/ContactsClient.test.js +3 -8
- package/dist/Contacts/ContactsClient.test.js.map +1 -1
- package/dist/Metrics/index.js +60 -0
- package/dist/Metrics/index.js.map +1 -1
- package/dist/Metrics/index.test.js +356 -0
- package/dist/Metrics/index.test.js.map +1 -1
- package/dist/Metrics/types.js +11 -1
- package/dist/Metrics/types.js.map +1 -1
- package/dist/SDKConnector/types.js.map +1 -1
- package/dist/common/Utils.js +136 -40
- package/dist/common/Utils.js.map +1 -1
- package/dist/common/testUtil.js +8 -4
- package/dist/common/testUtil.js.map +1 -1
- package/dist/common/types.js +2 -0
- package/dist/common/types.js.map +1 -1
- package/dist/mobius-socket/config.js +24 -0
- package/dist/mobius-socket/config.js.map +1 -0
- package/dist/mobius-socket/errors.js +150 -0
- package/dist/mobius-socket/errors.js.map +1 -0
- package/dist/mobius-socket/index.js +57 -0
- package/dist/mobius-socket/index.js.map +1 -0
- package/dist/mobius-socket/mobius-socket-events.test.js +485 -0
- package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.js +804 -0
- package/dist/mobius-socket/mobius-socket.js.map +1 -0
- package/dist/mobius-socket/mobius-socket.test.js +1833 -0
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -0
- package/dist/mobius-socket/socket/constants.js +34 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -0
- package/dist/mobius-socket/socket/index.js +15 -0
- package/dist/mobius-socket/socket/index.js.map +1 -0
- package/dist/mobius-socket/socket/socket-base.js +604 -0
- package/dist/mobius-socket/socket/socket-base.js.map +1 -0
- package/dist/mobius-socket/socket/socket.js +19 -0
- package/dist/mobius-socket/socket/socket.js.map +1 -0
- package/dist/mobius-socket/socket/socket.shim.js +26 -0
- package/dist/mobius-socket/socket/socket.shim.js.map +1 -0
- package/dist/mobius-socket/socket/types.js +7 -0
- package/dist/mobius-socket/socket/types.js.map +1 -0
- package/dist/mobius-socket/socket.test.js +727 -0
- package/dist/mobius-socket/socket.test.js.map +1 -0
- package/dist/mobius-socket/test/mocha-helpers.js +23 -0
- package/dist/mobius-socket/test/mocha-helpers.js.map +1 -0
- package/dist/mobius-socket/test/promise-tick.js +28 -0
- package/dist/mobius-socket/test/promise-tick.js.map +1 -0
- package/dist/mobius-socket/types.js +7 -0
- package/dist/mobius-socket/types.js.map +1 -0
- package/dist/module/CallingClient/CallingClient.js +102 -5
- package/dist/module/CallingClient/calling/call.js +9 -6
- package/dist/module/CallingClient/calling/callManager.js +27 -7
- package/dist/module/CallingClient/calling/types.js +2 -0
- package/dist/module/CallingClient/constants.js +18 -0
- package/dist/module/CallingClient/registration/register.js +226 -62
- package/dist/module/CallingClient/registration/webWorker.js +42 -61
- package/dist/module/CallingClient/registration/webWorkerStr.js +47 -82
- package/dist/module/CallingClient/utils/constants.js +30 -0
- package/dist/module/CallingClient/utils/index.js +5 -0
- package/dist/module/CallingClient/utils/mobiusSocketMapper.js +72 -0
- package/dist/module/CallingClient/utils/request.js +162 -0
- package/dist/module/CallingClient/utils/types.js +1 -0
- package/dist/module/CallingClient/utils/wsFeatureFlag.js +12 -0
- package/dist/module/Metrics/index.js +46 -0
- package/dist/module/Metrics/types.js +10 -0
- package/dist/module/common/Utils.js +51 -8
- package/dist/module/common/testUtil.js +5 -1
- package/dist/module/common/types.js +2 -0
- package/dist/module/mobius-socket/config.js +15 -0
- package/dist/module/mobius-socket/errors.js +64 -0
- package/dist/module/mobius-socket/index.js +24 -0
- package/dist/module/mobius-socket/mobius-socket.js +571 -0
- package/dist/module/mobius-socket/socket/constants.js +10 -0
- package/dist/module/mobius-socket/socket/index.js +4 -0
- package/dist/module/mobius-socket/socket/socket-base.js +368 -0
- package/dist/module/mobius-socket/socket/socket.js +9 -0
- package/dist/module/mobius-socket/socket/socket.shim.js +12 -0
- package/dist/module/mobius-socket/socket/types.js +1 -0
- package/dist/module/mobius-socket/types.js +1 -0
- package/dist/types/CallingClient/CallingClient.d.ts +5 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/call.d.ts +1 -0
- package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +3 -2
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/types.d.ts +21 -9
- package/dist/types/CallingClient/calling/types.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +18 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts +6 -0
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/types.d.ts +3 -1
- package/dist/types/CallingClient/registration/types.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorker.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts +1 -1
- package/dist/types/CallingClient/registration/webWorkerStr.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/constants.d.ts +30 -0
- package/dist/types/CallingClient/utils/constants.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/index.d.ts +6 -0
- package/dist/types/CallingClient/utils/index.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts +5 -0
- package/dist/types/CallingClient/utils/mobiusSocketMapper.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/request.d.ts +23 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/types.d.ts +29 -0
- package/dist/types/CallingClient/utils/types.d.ts.map +1 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts +4 -0
- package/dist/types/CallingClient/utils/wsFeatureFlag.d.ts.map +1 -0
- package/dist/types/Metrics/index.d.ts.map +1 -1
- package/dist/types/Metrics/types.d.ts +11 -1
- package/dist/types/Metrics/types.d.ts.map +1 -1
- package/dist/types/SDKConnector/types.d.ts +24 -0
- package/dist/types/SDKConnector/types.d.ts.map +1 -1
- package/dist/types/common/Utils.d.ts +8 -2
- package/dist/types/common/Utils.d.ts.map +1 -1
- package/dist/types/common/testUtil.d.ts +4 -1
- package/dist/types/common/testUtil.d.ts.map +1 -1
- package/dist/types/common/types.d.ts +3 -0
- package/dist/types/common/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/config.d.ts +17 -0
- package/dist/types/mobius-socket/config.d.ts.map +1 -0
- package/dist/types/mobius-socket/errors.d.ts +32 -0
- package/dist/types/mobius-socket/errors.d.ts.map +1 -0
- package/dist/types/mobius-socket/index.d.ts +14 -0
- package/dist/types/mobius-socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts +48 -0
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/constants.d.ts +11 -0
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/index.d.ts +5 -0
- package/dist/types/mobius-socket/socket/index.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts +43 -0
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts +6 -0
- package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -0
- package/dist/types/mobius-socket/socket/types.d.ts +61 -0
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
- package/dist/types/mobius-socket/types.d.ts +21 -0
- package/dist/types/mobius-socket/types.d.ts.map +1 -0
- package/package.json +16 -2
- package/src/mobius-socket/socket/socket.shim.ts +22 -0
- package/src/mobius-socket/socket/socket.ts +14 -0
|
@@ -0,0 +1,604 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
|
|
4
|
+
var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
|
|
7
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
8
|
+
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
9
|
+
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
|
10
|
+
var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
|
11
|
+
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
|
12
|
+
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
|
13
|
+
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
|
14
|
+
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
15
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
16
|
+
value: true
|
|
17
|
+
});
|
|
18
|
+
exports.default = void 0;
|
|
19
|
+
var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
|
|
20
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
|
|
21
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
22
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
23
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/define-property"));
|
|
24
|
+
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
25
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
26
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
27
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
28
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
|
|
29
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
|
|
30
|
+
var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
31
|
+
var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
|
|
32
|
+
var _has2 = _interopRequireDefault(require("lodash/has"));
|
|
33
|
+
var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
|
|
34
|
+
var _events = require("events");
|
|
35
|
+
var _common = require("@webex/common");
|
|
36
|
+
var _commonTimers = require("@webex/common-timers");
|
|
37
|
+
var _errors = require("../errors");
|
|
38
|
+
var _constants = require("./constants");
|
|
39
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof _Symbol && r[_Symbol$iterator] || r["@@iterator"]; if (!t) { if (_Array$isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
40
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? _Array$from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
41
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
42
|
+
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$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
43
|
+
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, _defineProperty3.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
44
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? _Reflect$construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
45
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
|
|
46
|
+
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
47
|
+
*/ // @ts-ignore - type not available
|
|
48
|
+
// @ts-ignore - type not available
|
|
49
|
+
var sockets = new _weakMap.default();
|
|
50
|
+
function createTrackingId() {
|
|
51
|
+
return "webex-js-sdk_".concat(crypto.randomUUID());
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Generalized socket abstraction
|
|
56
|
+
*/
|
|
57
|
+
var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
58
|
+
/**
|
|
59
|
+
* Creates a new Socket instance.
|
|
60
|
+
*/
|
|
61
|
+
function Socket() {
|
|
62
|
+
var _this;
|
|
63
|
+
(0, _classCallCheck2.default)(this, Socket);
|
|
64
|
+
_this = _callSuper(this, Socket);
|
|
65
|
+
(0, _defineProperty3.default)(_this, "domain", void 0);
|
|
66
|
+
(0, _defineProperty3.default)(_this, "pendingResponses", void 0);
|
|
67
|
+
(0, _defineProperty3.default)(_this, "forceCloseDelay", void 0);
|
|
68
|
+
(0, _defineProperty3.default)(_this, "logger", void 0);
|
|
69
|
+
(0, _defineProperty3.default)(_this, "refreshToken", void 0);
|
|
70
|
+
(0, _defineProperty3.default)(_this, "token", void 0);
|
|
71
|
+
(0, _defineProperty3.default)(_this, "trackingId", void 0);
|
|
72
|
+
(0, _defineProperty3.default)(_this, "wssResponseTimeout", void 0);
|
|
73
|
+
_this.domain = 'unknown-domain';
|
|
74
|
+
_this.pendingResponses = new _map.default();
|
|
75
|
+
_this.onmessage = _this.onmessage.bind(_this);
|
|
76
|
+
_this.onclose = _this.onclose.bind(_this);
|
|
77
|
+
_this.setMaxListeners(10);
|
|
78
|
+
return _this;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// TODO: Circle back and check if we are using binaryType and related getters. If not, we can remove these.
|
|
82
|
+
/**
|
|
83
|
+
* Gets the binary type of the WebSocket connection.
|
|
84
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
85
|
+
*/
|
|
86
|
+
(0, _inherits2.default)(Socket, _EventEmitter);
|
|
87
|
+
return (0, _createClass2.default)(Socket, [{
|
|
88
|
+
key: "binaryType",
|
|
89
|
+
get: function get() {
|
|
90
|
+
var _sockets$get;
|
|
91
|
+
return ((_sockets$get = sockets.get(this)) === null || _sockets$get === void 0 ? void 0 : _sockets$get.binaryType) || '';
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Gets the number of bytes of data that have been queued but not yet transmitted.
|
|
96
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
97
|
+
*/
|
|
98
|
+
}, {
|
|
99
|
+
key: "bufferedAmount",
|
|
100
|
+
get: function get() {
|
|
101
|
+
var _sockets$get2;
|
|
102
|
+
return ((_sockets$get2 = sockets.get(this)) === null || _sockets$get2 === void 0 ? void 0 : _sockets$get2.bufferedAmount) || 0;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Gets the extensions selected by the server.
|
|
107
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
108
|
+
*/
|
|
109
|
+
}, {
|
|
110
|
+
key: "extensions",
|
|
111
|
+
get: function get() {
|
|
112
|
+
var _sockets$get3;
|
|
113
|
+
return ((_sockets$get3 = sockets.get(this)) === null || _sockets$get3 === void 0 ? void 0 : _sockets$get3.extensions) || '';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Gets the sub-protocol selected by the server.
|
|
118
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
119
|
+
*/
|
|
120
|
+
}, {
|
|
121
|
+
key: "protocol",
|
|
122
|
+
get: function get() {
|
|
123
|
+
var _sockets$get4;
|
|
124
|
+
return ((_sockets$get4 = sockets.get(this)) === null || _sockets$get4 === void 0 ? void 0 : _sockets$get4.protocol) || '';
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Gets the current state of the WebSocket connection.
|
|
129
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
130
|
+
*/
|
|
131
|
+
}, {
|
|
132
|
+
key: "readyState",
|
|
133
|
+
get: function get() {
|
|
134
|
+
var _sockets$get5;
|
|
135
|
+
return ((_sockets$get5 = sockets.get(this)) === null || _sockets$get5 === void 0 ? void 0 : _sockets$get5.readyState) || 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* Gets the URL of the WebSocket connection.
|
|
140
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
141
|
+
*/
|
|
142
|
+
}, {
|
|
143
|
+
key: "url",
|
|
144
|
+
get: function get() {
|
|
145
|
+
var _sockets$get6;
|
|
146
|
+
return ((_sockets$get6 = sockets.get(this)) === null || _sockets$get6 === void 0 ? void 0 : _sockets$get6.url) || '';
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Provides the environmentally appropriate WebSocket constructor.
|
|
151
|
+
*
|
|
152
|
+
* @returns The WebSocket constructor (ws in NodeJS, WebSocket in browsers)
|
|
153
|
+
*/
|
|
154
|
+
}, {
|
|
155
|
+
key: "close",
|
|
156
|
+
value:
|
|
157
|
+
/**
|
|
158
|
+
* Closes the socket.
|
|
159
|
+
* @param options - Close options containing code and reason
|
|
160
|
+
* @returns Promise that resolves when the socket is closed
|
|
161
|
+
*/
|
|
162
|
+
function close(options) {
|
|
163
|
+
var _this2 = this;
|
|
164
|
+
return new _promise.default(function (resolve, reject) {
|
|
165
|
+
var socket = sockets.get(_this2);
|
|
166
|
+
if (!socket) {
|
|
167
|
+
// Open has not been called yet so there is no socket to close
|
|
168
|
+
resolve();
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// logger is defined once open is called
|
|
172
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": closing"));
|
|
173
|
+
if (socket.readyState === _constants.SOCKET_READY_STATE.CLOSING || socket.readyState === _constants.SOCKET_READY_STATE.CLOSED) {
|
|
174
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": already closed"));
|
|
175
|
+
resolve();
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
var originalCode = options === null || options === void 0 ? void 0 : options.code;
|
|
179
|
+
var originalReason = options === null || options === void 0 ? void 0 : options.reason;
|
|
180
|
+
var resolvedOptions = (0, _defaults2.default)(options || {}, {
|
|
181
|
+
code: 1000,
|
|
182
|
+
reason: 'Done'
|
|
183
|
+
});
|
|
184
|
+
if (resolvedOptions.code && resolvedOptions.code !== 1000 && (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)) {
|
|
185
|
+
reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
var closeTimer = (0, _commonTimers.safeSetTimeout)(function () {
|
|
189
|
+
try {
|
|
190
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": no close event received, forcing closure"));
|
|
191
|
+
resolve(_this2.onclose(originalCode ? {
|
|
192
|
+
code: originalCode,
|
|
193
|
+
reason: originalReason || 'Done (unknown)'
|
|
194
|
+
} : {
|
|
195
|
+
code: 1000,
|
|
196
|
+
reason: 'Done (forced)'
|
|
197
|
+
}));
|
|
198
|
+
} catch (error) {
|
|
199
|
+
_this2.logger.warn("socket,".concat(_this2.domain, ": force-close failed"), error);
|
|
200
|
+
}
|
|
201
|
+
}, _this2.forceCloseDelay);
|
|
202
|
+
socket.onclose = function (event) {
|
|
203
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": close event fired"), event.code, event.reason);
|
|
204
|
+
clearTimeout(closeTimer);
|
|
205
|
+
_this2.onclose(event);
|
|
206
|
+
resolve(event);
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
// If socket is still connecting, manually trigger close handler with desired code
|
|
210
|
+
// because calling close() on a CONNECTING socket may not preserve custom codes
|
|
211
|
+
if (socket.readyState === _constants.SOCKET_READY_STATE.CONNECTING) {
|
|
212
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": socket still connecting, triggering close manually"));
|
|
213
|
+
clearTimeout(closeTimer);
|
|
214
|
+
var closeEvent = {
|
|
215
|
+
code: resolvedOptions.code,
|
|
216
|
+
reason: resolvedOptions.reason
|
|
217
|
+
};
|
|
218
|
+
_this2.onclose(closeEvent);
|
|
219
|
+
resolve(closeEvent);
|
|
220
|
+
try {
|
|
221
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
222
|
+
} catch (error) {
|
|
223
|
+
_this2.logger.info("socket,".concat(_this2.domain, ": error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes"), error);
|
|
224
|
+
}
|
|
225
|
+
} else {
|
|
226
|
+
socket.close(resolvedOptions.code, resolvedOptions.reason);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Opens a WebSocket connection and performs authentication.
|
|
233
|
+
*
|
|
234
|
+
* @param url - WebSocket URL to connect to
|
|
235
|
+
* @param options - Socket connection options including token, logger, and timeout settings
|
|
236
|
+
* @returns Promise that resolves when socket is opened and authenticated
|
|
237
|
+
*/
|
|
238
|
+
}, {
|
|
239
|
+
key: "open",
|
|
240
|
+
value: function open(url, options) {
|
|
241
|
+
var _this3 = this;
|
|
242
|
+
try {
|
|
243
|
+
this.domain = new URL(url).hostname;
|
|
244
|
+
} catch (_unused) {
|
|
245
|
+
this.domain = url;
|
|
246
|
+
}
|
|
247
|
+
return new _promise.default(function (resolve, reject) {
|
|
248
|
+
/* eslint complexity: [0] */
|
|
249
|
+
if (!url) {
|
|
250
|
+
reject(new Error('`url` is required'));
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
if (sockets.get(_this3)) {
|
|
254
|
+
reject(new Error('Socket#open() can only be called once per instance'));
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
var resolvedOptions = options || {};
|
|
258
|
+
(0, _common.checkRequired)(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);
|
|
259
|
+
(0, _keys.default)(resolvedOptions).forEach(function (key) {
|
|
260
|
+
(0, _defineProperty2.default)(_this3, key, {
|
|
261
|
+
enumerable: false,
|
|
262
|
+
value: resolvedOptions[key]
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
var WebSocket = Socket.getWebSocketConstructor();
|
|
266
|
+
_this3.logger.info("socket,".concat(_this3.domain, ": creating WebSocket"));
|
|
267
|
+
var socket = new WebSocket(url, [], resolvedOptions);
|
|
268
|
+
socket.binaryType = 'arraybuffer';
|
|
269
|
+
socket.onmessage = _this3.onmessage;
|
|
270
|
+
socket.onclose = function (event) {
|
|
271
|
+
event = _this3.fixCloseCode(event);
|
|
272
|
+
_this3.logger.info("socket,".concat(_this3.domain, ": closed before open"), event.code, event.reason);
|
|
273
|
+
switch (event.code) {
|
|
274
|
+
case 1005:
|
|
275
|
+
// IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume
|
|
276
|
+
// it's a bad websocket url. That'll trigger a device refresh; if it
|
|
277
|
+
// turns out we had a bad token, the device refresh should 401 and
|
|
278
|
+
// trigger a token refresh.
|
|
279
|
+
return reject(new _errors.UnknownResponse(event));
|
|
280
|
+
case 4400:
|
|
281
|
+
return reject(new _errors.BadRequest(event));
|
|
282
|
+
case 4401:
|
|
283
|
+
return reject(new _errors.NotAuthorized(event));
|
|
284
|
+
case 4403:
|
|
285
|
+
return reject(new _errors.Forbidden(event));
|
|
286
|
+
default:
|
|
287
|
+
return reject(new _errors.ConnectionError(event));
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
socket.onopen = function () {
|
|
291
|
+
_this3.logger.info("socket,".concat(_this3.domain, ": connected"));
|
|
292
|
+
_this3.authorize(_this3.token).then(function () {
|
|
293
|
+
_this3.logger.info("socket,".concat(_this3.domain, ": authorized"));
|
|
294
|
+
socket.onclose = _this3.onclose;
|
|
295
|
+
resolve();
|
|
296
|
+
}).catch(reject);
|
|
297
|
+
};
|
|
298
|
+
socket.onerror = function (event) {
|
|
299
|
+
_this3.logger.warn("socket,".concat(_this3.domain, ": error event fired"), event);
|
|
300
|
+
};
|
|
301
|
+
sockets.set(_this3, socket);
|
|
302
|
+
_this3.logger.info("socket,".concat(_this3.domain, ": waiting for server"));
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
/**
|
|
307
|
+
* Handles incoming CloseEvents.
|
|
308
|
+
* @param event - The close event containing code and reason
|
|
309
|
+
*/
|
|
310
|
+
}, {
|
|
311
|
+
key: "onclose",
|
|
312
|
+
value: function onclose(event) {
|
|
313
|
+
this.logger.info("socket,".concat(this.domain, ": closed"), event.code, event.reason);
|
|
314
|
+
event = this.fixCloseCode(event);
|
|
315
|
+
this.rejectPendingResponses(new _errors.ConnectionError(event));
|
|
316
|
+
this.emit('close', event);
|
|
317
|
+
|
|
318
|
+
// Remove all listeners to (a) avoid reacting to late pongs and (b) ensure
|
|
319
|
+
// we don't have a retain cycle.
|
|
320
|
+
this.removeAllListeners();
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Handles incoming message events from the WebSocket.
|
|
325
|
+
* @param event - The message event containing the data
|
|
326
|
+
*/
|
|
327
|
+
}, {
|
|
328
|
+
key: "onmessage",
|
|
329
|
+
value: function onmessage(event) {
|
|
330
|
+
var _this4 = this;
|
|
331
|
+
try {
|
|
332
|
+
var data = JSON.parse(event.data);
|
|
333
|
+
var processedEvent = {
|
|
334
|
+
data: data
|
|
335
|
+
};
|
|
336
|
+
if (data.type === 'async_event') {
|
|
337
|
+
this.acknowledge(processedEvent).catch(function (error) {
|
|
338
|
+
_this4.logger.warn("socket,".concat(_this4.domain, ": failed to acknowledge async event"), error);
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Match pending request/response promises before emitting the public message event.
|
|
343
|
+
// The message is still emitted afterward for any external listeners that care about it.
|
|
344
|
+
this.handlePendingResponse(data);
|
|
345
|
+
this.emit('message', processedEvent);
|
|
346
|
+
} catch (error) {
|
|
347
|
+
/* istanbul ignore next */
|
|
348
|
+
this.logger.warn("socket,".concat(this.domain, ": error while receiving WebSocket message"), error);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Sends a message up the socket.
|
|
354
|
+
* @param data - Data to send (string or object that will be JSON stringified)
|
|
355
|
+
* @returns Promise that resolves when the message is sent
|
|
356
|
+
*/
|
|
357
|
+
}, {
|
|
358
|
+
key: "send",
|
|
359
|
+
value: function send(data) {
|
|
360
|
+
var _this5 = this;
|
|
361
|
+
return new _promise.default(function (resolve, reject) {
|
|
362
|
+
if (_this5.readyState !== _constants.SOCKET_READY_STATE.OPEN) {
|
|
363
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
if ((0, _isObject2.default)(data)) {
|
|
367
|
+
data = (0, _stringify.default)(data);
|
|
368
|
+
}
|
|
369
|
+
var socket = sockets.get(_this5);
|
|
370
|
+
if (!socket) {
|
|
371
|
+
reject(new Error('INVALID_STATE_ERROR'));
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
socket.send(data);
|
|
375
|
+
resolve();
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Sends a request and resolves when the matching response arrives.
|
|
381
|
+
*
|
|
382
|
+
* @param data - Request data to send over the socket
|
|
383
|
+
* @param options - Request options including timeout and error handlers
|
|
384
|
+
* @returns Promise that resolves with the response data
|
|
385
|
+
*/
|
|
386
|
+
}, {
|
|
387
|
+
key: "sendRequest",
|
|
388
|
+
value: function sendRequest(data) {
|
|
389
|
+
var _this6 = this;
|
|
390
|
+
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
391
|
+
if (!(0, _isObject2.default)(data)) {
|
|
392
|
+
return _promise.default.reject(new Error('`data` is required'));
|
|
393
|
+
}
|
|
394
|
+
var request = _objectSpread({}, data);
|
|
395
|
+
var trackingId = request.trackingId || createTrackingId();
|
|
396
|
+
var timeout = options.timeout || this.wssResponseTimeout || 10000;
|
|
397
|
+
if (this.pendingResponses.has(trackingId)) {
|
|
398
|
+
return _promise.default.reject(new Error("socket request already sent for trackingId ".concat(trackingId)));
|
|
399
|
+
}
|
|
400
|
+
request.trackingId = trackingId;
|
|
401
|
+
return new _promise.default(function (_resolve, _reject) {
|
|
402
|
+
var timeoutId = (0, _commonTimers.safeSetTimeout)(function () {
|
|
403
|
+
_this6.clearPendingResponse(trackingId);
|
|
404
|
+
_reject((0, _errors.createTimeoutError)(request));
|
|
405
|
+
}, timeout);
|
|
406
|
+
var pendingResponse = {
|
|
407
|
+
request: request,
|
|
408
|
+
resolve: function resolve(response) {
|
|
409
|
+
_this6.clearPendingResponse(trackingId);
|
|
410
|
+
_resolve(response);
|
|
411
|
+
},
|
|
412
|
+
reject: function reject(error) {
|
|
413
|
+
_this6.clearPendingResponse(trackingId);
|
|
414
|
+
_reject(error);
|
|
415
|
+
},
|
|
416
|
+
timeoutId: timeoutId
|
|
417
|
+
};
|
|
418
|
+
_this6.pendingResponses.set(trackingId, pendingResponse);
|
|
419
|
+
_this6.send(request).catch(function (error) {
|
|
420
|
+
_this6.clearPendingResponse(trackingId);
|
|
421
|
+
_reject(error);
|
|
422
|
+
});
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
/**
|
|
427
|
+
* Sends an acknowledgment for a specific async event.
|
|
428
|
+
* @param event - Message event containing the async event to acknowledge
|
|
429
|
+
* @returns Promise that resolves when acknowledgment is sent
|
|
430
|
+
*/
|
|
431
|
+
}, {
|
|
432
|
+
key: "acknowledge",
|
|
433
|
+
value: function acknowledge(event) {
|
|
434
|
+
if (!event) {
|
|
435
|
+
return _promise.default.reject(new Error('`event` is required'));
|
|
436
|
+
}
|
|
437
|
+
if (!(0, _has2.default)(event, 'data.eventId')) {
|
|
438
|
+
return _promise.default.reject(new Error('`event.data.eventId` is required'));
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
// Don't try to acknowledge if socket is not in open state
|
|
442
|
+
if (this.readyState !== _constants.SOCKET_READY_STATE.OPEN) {
|
|
443
|
+
return _promise.default.resolve();
|
|
444
|
+
}
|
|
445
|
+
return this.send({
|
|
446
|
+
type: _constants.MESSAGE_TYPES.EVENT_ACK,
|
|
447
|
+
trackingId: event.data.trackingId || createTrackingId(),
|
|
448
|
+
eventId: event.data.eventId
|
|
449
|
+
}).catch(function (error) {
|
|
450
|
+
if (error.message === 'INVALID_STATE_ERROR') {
|
|
451
|
+
return _promise.default.resolve();
|
|
452
|
+
}
|
|
453
|
+
throw error;
|
|
454
|
+
});
|
|
455
|
+
}
|
|
456
|
+
}, {
|
|
457
|
+
key: "refresh",
|
|
458
|
+
value: function refresh(token) {
|
|
459
|
+
if (!token) {
|
|
460
|
+
return _promise.default.reject(new Error('`token` is required for Socket#refresh()'));
|
|
461
|
+
}
|
|
462
|
+
var refreshedToken;
|
|
463
|
+
if (typeof token === 'string') {
|
|
464
|
+
refreshedToken = token;
|
|
465
|
+
} else if (token && typeof token.toString === 'function') {
|
|
466
|
+
refreshedToken = token.toString();
|
|
467
|
+
} else {
|
|
468
|
+
refreshedToken = String(token);
|
|
469
|
+
}
|
|
470
|
+
return this.authorize(refreshedToken);
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
/**
|
|
474
|
+
* Sends an auth message up the socket with a refreshed token.
|
|
475
|
+
* @param token - Authentication token to send
|
|
476
|
+
* @returns Promise that resolves when authentication succeeds
|
|
477
|
+
*/
|
|
478
|
+
}, {
|
|
479
|
+
key: "authorize",
|
|
480
|
+
value: function authorize(token) {
|
|
481
|
+
this.logger.info("socket,".concat(this.domain, ": authorizing"));
|
|
482
|
+
return this.sendRequest({
|
|
483
|
+
type: _constants.MESSAGE_TYPES.AUTH,
|
|
484
|
+
data: {
|
|
485
|
+
token: token
|
|
486
|
+
}
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/**
|
|
491
|
+
* Clears a pending response entry.
|
|
492
|
+
* @param trackingId - Tracking ID of the response to clear
|
|
493
|
+
*/
|
|
494
|
+
}, {
|
|
495
|
+
key: "clearPendingResponse",
|
|
496
|
+
value: function clearPendingResponse(trackingId) {
|
|
497
|
+
var pendingResponse = this.pendingResponses.get(trackingId);
|
|
498
|
+
if (pendingResponse !== null && pendingResponse !== void 0 && pendingResponse.timeoutId) {
|
|
499
|
+
clearTimeout(pendingResponse.timeoutId);
|
|
500
|
+
}
|
|
501
|
+
this.pendingResponses.delete(trackingId);
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Rejects all pending responses with the provided error.
|
|
506
|
+
* @param error - Error to reject pending responses with
|
|
507
|
+
*/
|
|
508
|
+
}, {
|
|
509
|
+
key: "rejectPendingResponses",
|
|
510
|
+
value: function rejectPendingResponses(error) {
|
|
511
|
+
if (!this.pendingResponses.size) {
|
|
512
|
+
return;
|
|
513
|
+
}
|
|
514
|
+
var _iterator = _createForOfIteratorHelper(this.pendingResponses.values()),
|
|
515
|
+
_step;
|
|
516
|
+
try {
|
|
517
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
518
|
+
var pendingResponse = _step.value;
|
|
519
|
+
pendingResponse.reject(error);
|
|
520
|
+
}
|
|
521
|
+
} catch (err) {
|
|
522
|
+
_iterator.e(err);
|
|
523
|
+
} finally {
|
|
524
|
+
_iterator.f();
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Handles incoming responses for pending requests.
|
|
530
|
+
* @param response - Response data to match against pending requests
|
|
531
|
+
* @returns True if a matching pending request was found and handled
|
|
532
|
+
*/
|
|
533
|
+
}, {
|
|
534
|
+
key: "handlePendingResponse",
|
|
535
|
+
value: function handlePendingResponse(response) {
|
|
536
|
+
var _this7 = this;
|
|
537
|
+
if (!response) {
|
|
538
|
+
return false;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
// Pending request correlation currently requires trackingId on the response.
|
|
542
|
+
var pendingResponse = this.pendingResponses.get(response.trackingId || '');
|
|
543
|
+
if (!pendingResponse) {
|
|
544
|
+
return false;
|
|
545
|
+
}
|
|
546
|
+
if (response.subtype !== pendingResponse.request.type) {
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
var statusCode = response === null || response === void 0 ? void 0 : response.statusCode;
|
|
550
|
+
var statusMessage = response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
551
|
+
if (statusCode === 440 && (response === null || response === void 0 ? void 0 : response.subtype) !== _constants.MESSAGE_TYPES.AUTH) {
|
|
552
|
+
if (typeof this.refreshToken === 'function') {
|
|
553
|
+
_promise.default.resolve(this.refreshToken(response)).catch(function (error) {
|
|
554
|
+
_this7.logger.warn("socket,".concat(_this7.domain, ": failed token-expiry re-auth"), error);
|
|
555
|
+
});
|
|
556
|
+
} else {
|
|
557
|
+
this.logger.warn("socket,".concat(this.domain, ": refreshToken callback is unavailable for statusCode 440"));
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
if (statusCode === undefined) {
|
|
561
|
+
var error = (0, _errors.createWssResponseError)(response, statusCode, statusMessage || 'Socket response missing status code');
|
|
562
|
+
pendingResponse.reject(error);
|
|
563
|
+
} else if (statusCode >= 200 && statusCode < 300) {
|
|
564
|
+
pendingResponse.resolve(response);
|
|
565
|
+
} else {
|
|
566
|
+
pendingResponse.reject((0, _errors.createWssResponseError)(response, statusCode, statusMessage));
|
|
567
|
+
}
|
|
568
|
+
return true;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Deals with the fact that some browsers drop some close codes (but not close reasons).
|
|
573
|
+
*
|
|
574
|
+
* @param event - Close event to fix
|
|
575
|
+
* @returns Fixed close event with corrected code if necessary
|
|
576
|
+
*/
|
|
577
|
+
}, {
|
|
578
|
+
key: "fixCloseCode",
|
|
579
|
+
value: function fixCloseCode(event) {
|
|
580
|
+
if (event.code === 1005 && event.reason) {
|
|
581
|
+
switch (event.reason.toLowerCase()) {
|
|
582
|
+
case 'replaced':
|
|
583
|
+
this.logger.info("socket,".concat(this.domain, ": fixing CloseEvent code for reason: "), event.reason);
|
|
584
|
+
event.code = 4000;
|
|
585
|
+
break;
|
|
586
|
+
case 'authentication failed':
|
|
587
|
+
case 'authentication did not happen within the timeout window of 30000 seconds.':
|
|
588
|
+
this.logger.info("socket,".concat(this.domain, ": fixing CloseEvent code for reason: "), event.reason);
|
|
589
|
+
event.code = 1008;
|
|
590
|
+
break;
|
|
591
|
+
default:
|
|
592
|
+
// do nothing
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
return event;
|
|
596
|
+
}
|
|
597
|
+
}], [{
|
|
598
|
+
key: "getWebSocketConstructor",
|
|
599
|
+
value: function getWebSocketConstructor() {
|
|
600
|
+
throw new Error('Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way');
|
|
601
|
+
}
|
|
602
|
+
}]);
|
|
603
|
+
}(_events.EventEmitter);
|
|
604
|
+
//# sourceMappingURL=socket-base.js.map
|