@webex/calling 3.12.0-mobius-socket.19 → 3.12.0-mobius-socket.20
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/mobius-socket/errors.js +47 -6
- package/dist/mobius-socket/errors.js.map +1 -1
- package/dist/mobius-socket/index.js +4 -10
- package/dist/mobius-socket/index.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.js +151 -140
- package/dist/mobius-socket/mobius-socket.js.map +1 -1
- package/dist/mobius-socket/mobius-socket.test.js +18 -11
- package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
- package/dist/mobius-socket/socket/constants.js +14 -0
- package/dist/mobius-socket/socket/constants.js.map +1 -1
- package/dist/mobius-socket/socket/socket-base.js +93 -138
- package/dist/mobius-socket/socket/socket-base.js.map +1 -1
- package/dist/mobius-socket/socket/types.js.map +1 -1
- package/dist/mobius-socket/socket.test.js +3 -3
- package/dist/mobius-socket/socket.test.js.map +1 -1
- package/dist/mobius-socket/types.js.map +1 -1
- package/dist/module/mobius-socket/errors.js +17 -0
- package/dist/module/mobius-socket/mobius-socket.js +39 -41
- package/dist/module/mobius-socket/socket/socket-base.js +26 -58
- package/dist/types/mobius-socket/errors.d.ts +4 -1
- package/dist/types/mobius-socket/errors.d.ts.map +1 -1
- package/dist/types/mobius-socket/index.d.ts.map +1 -1
- package/dist/types/mobius-socket/mobius-socket.d.ts +14 -1
- package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/socket-base.d.ts +0 -1
- package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -1
- package/dist/types/mobius-socket/socket/types.d.ts +0 -8
- package/dist/types/mobius-socket/socket/types.d.ts.map +1 -1
- package/dist/types/mobius-socket/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -7,14 +7,28 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
7
7
|
});
|
|
8
8
|
exports.SOCKET_READY_STATE = exports.MESSAGE_TYPES = void 0;
|
|
9
9
|
var _freeze = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/freeze"));
|
|
10
|
+
/**
|
|
11
|
+
* WebSocket connection ready states.
|
|
12
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState
|
|
13
|
+
*/
|
|
10
14
|
var SOCKET_READY_STATE = exports.SOCKET_READY_STATE = (0, _freeze.default)({
|
|
15
|
+
/** Connection is being established */
|
|
11
16
|
CONNECTING: 0,
|
|
17
|
+
/** Connection is open and ready to communicate */
|
|
12
18
|
OPEN: 1,
|
|
19
|
+
/** Connection is in the process of closing */
|
|
13
20
|
CLOSING: 2,
|
|
21
|
+
/** Connection is closed */
|
|
14
22
|
CLOSED: 3
|
|
15
23
|
});
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Message type identifiers for socket communications.
|
|
27
|
+
*/
|
|
16
28
|
var MESSAGE_TYPES = exports.MESSAGE_TYPES = (0, _freeze.default)({
|
|
29
|
+
/** Authentication message type */
|
|
17
30
|
AUTH: 'auth',
|
|
31
|
+
/** Event acknowledgment message type */
|
|
18
32
|
EVENT_ACK: 'event_ack'
|
|
19
33
|
});
|
|
20
34
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK"],"sources":["constants.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK"],"sources":["constants.ts"],"sourcesContent":["/**\n * WebSocket connection ready states.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/readyState\n */\nexport const SOCKET_READY_STATE = Object.freeze({\n /** Connection is being established */\n CONNECTING: 0,\n /** Connection is open and ready to communicate */\n OPEN: 1,\n /** Connection is in the process of closing */\n CLOSING: 2,\n /** Connection is closed */\n CLOSED: 3,\n});\n\n/**\n * Message type identifiers for socket communications.\n */\nexport const MESSAGE_TYPES = Object.freeze({\n /** Authentication message type */\n AUTH: 'auth',\n /** Event acknowledgment message type */\n EVENT_ACK: 'event_ack',\n});\n"],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,OAAA,CAAAC,OAAA,EAAc;EAC9C;EACAC,UAAU,EAAE,CAAC;EACb;EACAC,IAAI,EAAE,CAAC;EACP;EACAC,OAAO,EAAE,CAAC;EACV;EACAC,MAAM,EAAE;AACV,CAAC,CAAC;;AAEF;AACA;AACA;AACO,IAAMC,aAAa,GAAAP,OAAA,CAAAO,aAAA,GAAG,IAAAN,OAAA,CAAAC,OAAA,EAAc;EACzC;EACAM,IAAI,EAAE,MAAM;EACZ;EACAC,SAAS,EAAE;AACb,CAAC,CAAC","ignoreList":[]}
|
|
@@ -7,6 +7,10 @@ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/o
|
|
|
7
7
|
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
|
|
8
8
|
var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
|
|
9
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");
|
|
10
14
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
|
11
15
|
_Object$defineProperty(exports, "__esModule", {
|
|
12
16
|
value: true
|
|
@@ -18,7 +22,6 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
|
|
|
18
22
|
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
|
|
19
23
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/define-property"));
|
|
20
24
|
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
21
|
-
var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
|
|
22
25
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
|
23
26
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
|
24
27
|
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
|
|
@@ -33,22 +36,27 @@ var _common = require("@webex/common");
|
|
|
33
36
|
var _commonTimers = require("@webex/common-timers");
|
|
34
37
|
var _errors = require("../errors");
|
|
35
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; }
|
|
36
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; }
|
|
37
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; }
|
|
38
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)); }
|
|
39
45
|
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
|
|
40
46
|
* Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
|
|
41
|
-
*/ // @ts-
|
|
42
|
-
// @ts-
|
|
47
|
+
*/ // @ts-ignore - type not available
|
|
48
|
+
// @ts-ignore - type not available
|
|
43
49
|
var sockets = new _weakMap.default();
|
|
50
|
+
function createTrackingId() {
|
|
51
|
+
return "webex-js-sdk_".concat(crypto.randomUUID());
|
|
52
|
+
}
|
|
44
53
|
|
|
45
54
|
/**
|
|
46
55
|
* Generalized socket abstraction
|
|
47
56
|
*/
|
|
48
57
|
var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
49
58
|
/**
|
|
50
|
-
*
|
|
51
|
-
* @returns {Socket}
|
|
59
|
+
* Creates a new Socket instance.
|
|
52
60
|
*/
|
|
53
61
|
function Socket() {
|
|
54
62
|
var _this;
|
|
@@ -70,81 +78,86 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
70
78
|
return _this;
|
|
71
79
|
}
|
|
72
80
|
|
|
81
|
+
// TODO: Circle back and check if we are using binaryType and related getters. If not, we can remove these.
|
|
73
82
|
/**
|
|
83
|
+
* Gets the binary type of the WebSocket connection.
|
|
74
84
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
75
|
-
* @returns {string}
|
|
76
85
|
*/
|
|
77
86
|
(0, _inherits2.default)(Socket, _EventEmitter);
|
|
78
87
|
return (0, _createClass2.default)(Socket, [{
|
|
79
88
|
key: "binaryType",
|
|
80
89
|
get: function get() {
|
|
81
|
-
|
|
90
|
+
var _sockets$get;
|
|
91
|
+
return ((_sockets$get = sockets.get(this)) === null || _sockets$get === void 0 ? void 0 : _sockets$get.binaryType) || '';
|
|
82
92
|
}
|
|
83
93
|
|
|
84
94
|
/**
|
|
95
|
+
* Gets the number of bytes of data that have been queued but not yet transmitted.
|
|
85
96
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
86
|
-
* @returns {number}
|
|
87
97
|
*/
|
|
88
98
|
}, {
|
|
89
99
|
key: "bufferedAmount",
|
|
90
100
|
get: function get() {
|
|
91
|
-
|
|
101
|
+
var _sockets$get2;
|
|
102
|
+
return ((_sockets$get2 = sockets.get(this)) === null || _sockets$get2 === void 0 ? void 0 : _sockets$get2.bufferedAmount) || 0;
|
|
92
103
|
}
|
|
93
104
|
|
|
94
105
|
/**
|
|
106
|
+
* Gets the extensions selected by the server.
|
|
95
107
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
96
|
-
* @returns {string}
|
|
97
108
|
*/
|
|
98
109
|
}, {
|
|
99
110
|
key: "extensions",
|
|
100
111
|
get: function get() {
|
|
101
|
-
|
|
112
|
+
var _sockets$get3;
|
|
113
|
+
return ((_sockets$get3 = sockets.get(this)) === null || _sockets$get3 === void 0 ? void 0 : _sockets$get3.extensions) || '';
|
|
102
114
|
}
|
|
103
115
|
|
|
104
116
|
/**
|
|
117
|
+
* Gets the sub-protocol selected by the server.
|
|
105
118
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
106
|
-
* @returns {string}
|
|
107
119
|
*/
|
|
108
120
|
}, {
|
|
109
121
|
key: "protocol",
|
|
110
122
|
get: function get() {
|
|
111
|
-
|
|
123
|
+
var _sockets$get4;
|
|
124
|
+
return ((_sockets$get4 = sockets.get(this)) === null || _sockets$get4 === void 0 ? void 0 : _sockets$get4.protocol) || '';
|
|
112
125
|
}
|
|
113
126
|
|
|
114
127
|
/**
|
|
128
|
+
* Gets the current state of the WebSocket connection.
|
|
115
129
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
116
|
-
* @returns {number}
|
|
117
130
|
*/
|
|
118
131
|
}, {
|
|
119
132
|
key: "readyState",
|
|
120
133
|
get: function get() {
|
|
121
|
-
|
|
134
|
+
var _sockets$get5;
|
|
135
|
+
return ((_sockets$get5 = sockets.get(this)) === null || _sockets$get5 === void 0 ? void 0 : _sockets$get5.readyState) || 0;
|
|
122
136
|
}
|
|
123
137
|
|
|
124
138
|
/**
|
|
139
|
+
* Gets the URL of the WebSocket connection.
|
|
125
140
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket
|
|
126
|
-
* @returns {string}
|
|
127
141
|
*/
|
|
128
142
|
}, {
|
|
129
143
|
key: "url",
|
|
130
144
|
get: function get() {
|
|
131
|
-
|
|
145
|
+
var _sockets$get6;
|
|
146
|
+
return ((_sockets$get6 = sockets.get(this)) === null || _sockets$get6 === void 0 ? void 0 : _sockets$get6.url) || '';
|
|
132
147
|
}
|
|
133
148
|
|
|
134
149
|
/**
|
|
135
|
-
* Provides the environmentally appropriate constructor
|
|
136
|
-
*
|
|
137
|
-
* @returns
|
|
150
|
+
* Provides the environmentally appropriate WebSocket constructor.
|
|
151
|
+
*
|
|
152
|
+
* @returns The WebSocket constructor (ws in NodeJS, WebSocket in browsers)
|
|
138
153
|
*/
|
|
139
154
|
}, {
|
|
140
155
|
key: "close",
|
|
141
156
|
value:
|
|
142
157
|
/**
|
|
143
|
-
* Closes the socket
|
|
144
|
-
* @param
|
|
145
|
-
* @
|
|
146
|
-
* @param {number} options.code
|
|
147
|
-
* @returns {Promise}
|
|
158
|
+
* Closes the socket.
|
|
159
|
+
* @param options - Close options containing code and reason
|
|
160
|
+
* @returns Promise that resolves when the socket is closed
|
|
148
161
|
*/
|
|
149
162
|
function close(options) {
|
|
150
163
|
var _this2 = this;
|
|
@@ -216,14 +229,11 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
216
229
|
}
|
|
217
230
|
|
|
218
231
|
/**
|
|
219
|
-
* Opens a WebSocket
|
|
220
|
-
*
|
|
221
|
-
* @param
|
|
222
|
-
* @param
|
|
223
|
-
* @
|
|
224
|
-
* @param {string} options.trackingId (required)
|
|
225
|
-
* @param {Logger} options.logger (required)
|
|
226
|
-
* @returns {Promise}
|
|
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
|
|
227
237
|
*/
|
|
228
238
|
}, {
|
|
229
239
|
key: "open",
|
|
@@ -294,9 +304,8 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
294
304
|
}
|
|
295
305
|
|
|
296
306
|
/**
|
|
297
|
-
* Handles incoming CloseEvents
|
|
298
|
-
* @param
|
|
299
|
-
* @returns {undefined}
|
|
307
|
+
* Handles incoming CloseEvents.
|
|
308
|
+
* @param event - The close event containing code and reason
|
|
300
309
|
*/
|
|
301
310
|
}, {
|
|
302
311
|
key: "onclose",
|
|
@@ -312,9 +321,8 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
312
321
|
}
|
|
313
322
|
|
|
314
323
|
/**
|
|
315
|
-
* Handles incoming message events
|
|
316
|
-
* @param
|
|
317
|
-
* @returns {undefined}
|
|
324
|
+
* Handles incoming message events from the WebSocket.
|
|
325
|
+
* @param event - The message event containing the data
|
|
318
326
|
*/
|
|
319
327
|
}, {
|
|
320
328
|
key: "onmessage",
|
|
@@ -342,9 +350,9 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
342
350
|
}
|
|
343
351
|
|
|
344
352
|
/**
|
|
345
|
-
* Sends a message up the socket
|
|
346
|
-
* @param
|
|
347
|
-
* @returns
|
|
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
|
|
348
356
|
*/
|
|
349
357
|
}, {
|
|
350
358
|
key: "send",
|
|
@@ -370,15 +378,10 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
370
378
|
|
|
371
379
|
/**
|
|
372
380
|
* Sends a request and resolves when the matching response arrives.
|
|
373
|
-
*
|
|
374
|
-
* @param
|
|
375
|
-
* @param
|
|
376
|
-
* @
|
|
377
|
-
* @param {Function} [options.createTimeoutError]
|
|
378
|
-
* @param {Function} [options.getStatusCode]
|
|
379
|
-
* @param {Function} [options.getStatusMessage]
|
|
380
|
-
* @param {number} [options.timeout]
|
|
381
|
-
* @returns {Promise<Object>}
|
|
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
|
|
382
385
|
*/
|
|
383
386
|
}, {
|
|
384
387
|
key: "sendRequest",
|
|
@@ -389,43 +392,19 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
389
392
|
return _promise.default.reject(new Error('`data` is required'));
|
|
390
393
|
}
|
|
391
394
|
var request = _objectSpread({}, data);
|
|
392
|
-
var trackingId = request.trackingId ||
|
|
395
|
+
var trackingId = request.trackingId || createTrackingId();
|
|
393
396
|
var timeout = options.timeout || this.wssResponseTimeout || 10000;
|
|
394
|
-
var matchesResponse = options.matchesResponse || function (response) {
|
|
395
|
-
return (response === null || response === void 0 ? void 0 : response.trackingId) === trackingId && (response === null || response === void 0 ? void 0 : response.type) === 'response_event';
|
|
396
|
-
};
|
|
397
|
-
var getStatusCode = options.getStatusCode || function (response) {
|
|
398
|
-
return response === null || response === void 0 ? void 0 : response.statusCode;
|
|
399
|
-
};
|
|
400
|
-
var getStatusMessage = options.getStatusMessage || function (response) {
|
|
401
|
-
return response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
402
|
-
};
|
|
403
|
-
var createError = options.createError || function (response, statusCode, statusMessage) {
|
|
404
|
-
return new _errors.ConnectionError({
|
|
405
|
-
code: statusCode,
|
|
406
|
-
reason: statusMessage || (response === null || response === void 0 ? void 0 : response.reason) || 'Socket request failed'
|
|
407
|
-
});
|
|
408
|
-
};
|
|
409
|
-
var createTimeoutError = options.createTimeoutError || function () {
|
|
410
|
-
return new _errors.ConnectionError({
|
|
411
|
-
reason: 'Socket response not received before timeout'
|
|
412
|
-
});
|
|
413
|
-
};
|
|
414
397
|
if (this.pendingResponses.has(trackingId)) {
|
|
415
|
-
return _promise.default.reject(new Error("socket request already
|
|
398
|
+
return _promise.default.reject(new Error("socket request already sent for trackingId ".concat(trackingId)));
|
|
416
399
|
}
|
|
417
400
|
request.trackingId = trackingId;
|
|
418
401
|
return new _promise.default(function (_resolve, _reject) {
|
|
419
402
|
var timeoutId = (0, _commonTimers.safeSetTimeout)(function () {
|
|
420
403
|
_this6.clearPendingResponse(trackingId);
|
|
421
|
-
_reject(createTimeoutError(request));
|
|
404
|
+
_reject((0, _errors.createTimeoutError)(request));
|
|
422
405
|
}, timeout);
|
|
423
|
-
|
|
406
|
+
var pendingResponse = {
|
|
424
407
|
request: request,
|
|
425
|
-
matchesResponse: matchesResponse,
|
|
426
|
-
getStatusCode: getStatusCode,
|
|
427
|
-
getStatusMessage: getStatusMessage,
|
|
428
|
-
createError: createError,
|
|
429
408
|
resolve: function resolve(response) {
|
|
430
409
|
_this6.clearPendingResponse(trackingId);
|
|
431
410
|
_resolve(response);
|
|
@@ -435,7 +414,8 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
435
414
|
_reject(error);
|
|
436
415
|
},
|
|
437
416
|
timeoutId: timeoutId
|
|
438
|
-
}
|
|
417
|
+
};
|
|
418
|
+
_this6.pendingResponses.set(trackingId, pendingResponse);
|
|
439
419
|
_this6.send(request).catch(function (error) {
|
|
440
420
|
_this6.clearPendingResponse(trackingId);
|
|
441
421
|
_reject(error);
|
|
@@ -444,9 +424,9 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
444
424
|
}
|
|
445
425
|
|
|
446
426
|
/**
|
|
447
|
-
* Sends an acknowledgment for a specific event
|
|
448
|
-
* @param
|
|
449
|
-
* @returns
|
|
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
|
|
450
430
|
*/
|
|
451
431
|
}, {
|
|
452
432
|
key: "acknowledge",
|
|
@@ -464,7 +444,7 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
464
444
|
}
|
|
465
445
|
return this.send({
|
|
466
446
|
type: _constants.MESSAGE_TYPES.EVENT_ACK,
|
|
467
|
-
trackingId: event.data.trackingId ||
|
|
447
|
+
trackingId: event.data.trackingId || createTrackingId(),
|
|
468
448
|
eventId: event.data.eventId
|
|
469
449
|
}).catch(function (error) {
|
|
470
450
|
if (error.message === 'INVALID_STATE_ERROR') {
|
|
@@ -492,8 +472,8 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
492
472
|
|
|
493
473
|
/**
|
|
494
474
|
* Sends an auth message up the socket with a refreshed token.
|
|
495
|
-
* @param
|
|
496
|
-
* @returns
|
|
475
|
+
* @param token - Authentication token to send
|
|
476
|
+
* @returns Promise that resolves when authentication succeeds
|
|
497
477
|
*/
|
|
498
478
|
}, {
|
|
499
479
|
key: "authorize",
|
|
@@ -504,45 +484,12 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
504
484
|
data: {
|
|
505
485
|
token: token
|
|
506
486
|
}
|
|
507
|
-
}, {
|
|
508
|
-
matchesResponse: function matchesResponse(response, request) {
|
|
509
|
-
return (response === null || response === void 0 ? void 0 : response.type) === 'response_event' && (response === null || response === void 0 ? void 0 : response.subtype) === _constants.MESSAGE_TYPES.AUTH && (response === null || response === void 0 ? void 0 : response.trackingId) === request.trackingId;
|
|
510
|
-
},
|
|
511
|
-
getStatusCode: function getStatusCode(response) {
|
|
512
|
-
return response === null || response === void 0 ? void 0 : response.statusCode;
|
|
513
|
-
},
|
|
514
|
-
getStatusMessage: function getStatusMessage(response) {
|
|
515
|
-
return response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
516
|
-
},
|
|
517
|
-
createError: function createError(response, statusCode, statusMessage) {
|
|
518
|
-
return new _errors.NotAuthorized({
|
|
519
|
-
code: statusCode,
|
|
520
|
-
reason: statusMessage || 'Mobius auth failed'
|
|
521
|
-
});
|
|
522
|
-
},
|
|
523
|
-
createTimeoutError: function createTimeoutError() {
|
|
524
|
-
return new _errors.NotAuthorized({
|
|
525
|
-
reason: 'Mobius auth response not received before timeout'
|
|
526
|
-
});
|
|
527
|
-
}
|
|
528
487
|
});
|
|
529
488
|
}
|
|
530
489
|
|
|
531
|
-
/**
|
|
532
|
-
* Creates a unique tracking ID
|
|
533
|
-
* @private
|
|
534
|
-
* @returns {string}
|
|
535
|
-
*/
|
|
536
|
-
}, {
|
|
537
|
-
key: "createTrackingId",
|
|
538
|
-
value: function createTrackingId() {
|
|
539
|
-
return "".concat(this.trackingId, "_").concat(crypto.randomUUID());
|
|
540
|
-
}
|
|
541
|
-
|
|
542
490
|
/**
|
|
543
491
|
* Clears a pending response entry.
|
|
544
|
-
* @param
|
|
545
|
-
* @returns {void}
|
|
492
|
+
* @param trackingId - Tracking ID of the response to clear
|
|
546
493
|
*/
|
|
547
494
|
}, {
|
|
548
495
|
key: "clearPendingResponse",
|
|
@@ -556,8 +503,7 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
556
503
|
|
|
557
504
|
/**
|
|
558
505
|
* Rejects all pending responses with the provided error.
|
|
559
|
-
* @param
|
|
560
|
-
* @returns {void}
|
|
506
|
+
* @param error - Error to reject pending responses with
|
|
561
507
|
*/
|
|
562
508
|
}, {
|
|
563
509
|
key: "rejectPendingResponses",
|
|
@@ -565,15 +511,24 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
565
511
|
if (!this.pendingResponses.size) {
|
|
566
512
|
return;
|
|
567
513
|
}
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
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
|
+
}
|
|
571
526
|
}
|
|
572
527
|
|
|
573
528
|
/**
|
|
574
529
|
* Handles incoming responses for pending requests.
|
|
575
|
-
* @param
|
|
576
|
-
* @returns
|
|
530
|
+
* @param response - Response data to match against pending requests
|
|
531
|
+
* @returns True if a matching pending request was found and handled
|
|
577
532
|
*/
|
|
578
533
|
}, {
|
|
579
534
|
key: "handlePendingResponse",
|
|
@@ -584,15 +539,15 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
584
539
|
}
|
|
585
540
|
|
|
586
541
|
// Pending request correlation currently requires trackingId on the response.
|
|
587
|
-
var pendingResponse =
|
|
542
|
+
var pendingResponse = this.pendingResponses.get(response.trackingId || '');
|
|
588
543
|
if (!pendingResponse) {
|
|
589
544
|
return false;
|
|
590
545
|
}
|
|
591
|
-
if (
|
|
546
|
+
if (response.subtype !== pendingResponse.request.type) {
|
|
592
547
|
return false;
|
|
593
548
|
}
|
|
594
|
-
var statusCode =
|
|
595
|
-
var statusMessage =
|
|
549
|
+
var statusCode = response === null || response === void 0 ? void 0 : response.statusCode;
|
|
550
|
+
var statusMessage = response === null || response === void 0 ? void 0 : response.statusMessage;
|
|
596
551
|
if (statusCode === 440 && (response === null || response === void 0 ? void 0 : response.subtype) !== _constants.MESSAGE_TYPES.AUTH) {
|
|
597
552
|
if (typeof this.refreshToken === 'function') {
|
|
598
553
|
_promise.default.resolve(this.refreshToken(response)).catch(function (error) {
|
|
@@ -603,21 +558,21 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
|
|
|
603
558
|
}
|
|
604
559
|
}
|
|
605
560
|
if (statusCode === undefined) {
|
|
606
|
-
|
|
561
|
+
var error = (0, _errors.createWssResponseError)(response, statusCode, statusMessage || 'Socket response missing status code');
|
|
562
|
+
pendingResponse.reject(error);
|
|
607
563
|
} else if (statusCode >= 200 && statusCode < 300) {
|
|
608
564
|
pendingResponse.resolve(response);
|
|
609
565
|
} else {
|
|
610
|
-
pendingResponse.reject(
|
|
566
|
+
pendingResponse.reject((0, _errors.createWssResponseError)(response, statusCode, statusMessage));
|
|
611
567
|
}
|
|
612
568
|
return true;
|
|
613
569
|
}
|
|
614
570
|
|
|
615
571
|
/**
|
|
616
|
-
* Deals with the fact that some browsers drop some close codes (but not
|
|
617
|
-
*
|
|
618
|
-
* @param
|
|
619
|
-
* @
|
|
620
|
-
* @returns {CloseEvent}
|
|
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
|
|
621
576
|
*/
|
|
622
577
|
}, {
|
|
623
578
|
key: "fixCloseCode",
|