@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.
Files changed (31) hide show
  1. package/dist/mobius-socket/errors.js +47 -6
  2. package/dist/mobius-socket/errors.js.map +1 -1
  3. package/dist/mobius-socket/index.js +4 -10
  4. package/dist/mobius-socket/index.js.map +1 -1
  5. package/dist/mobius-socket/mobius-socket.js +151 -140
  6. package/dist/mobius-socket/mobius-socket.js.map +1 -1
  7. package/dist/mobius-socket/mobius-socket.test.js +18 -11
  8. package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
  9. package/dist/mobius-socket/socket/constants.js +14 -0
  10. package/dist/mobius-socket/socket/constants.js.map +1 -1
  11. package/dist/mobius-socket/socket/socket-base.js +93 -138
  12. package/dist/mobius-socket/socket/socket-base.js.map +1 -1
  13. package/dist/mobius-socket/socket/types.js.map +1 -1
  14. package/dist/mobius-socket/socket.test.js +3 -3
  15. package/dist/mobius-socket/socket.test.js.map +1 -1
  16. package/dist/mobius-socket/types.js.map +1 -1
  17. package/dist/module/mobius-socket/errors.js +17 -0
  18. package/dist/module/mobius-socket/mobius-socket.js +39 -41
  19. package/dist/module/mobius-socket/socket/socket-base.js +26 -58
  20. package/dist/types/mobius-socket/errors.d.ts +4 -1
  21. package/dist/types/mobius-socket/errors.d.ts.map +1 -1
  22. package/dist/types/mobius-socket/index.d.ts.map +1 -1
  23. package/dist/types/mobius-socket/mobius-socket.d.ts +14 -1
  24. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
  25. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -1
  26. package/dist/types/mobius-socket/socket/socket-base.d.ts +0 -1
  27. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -1
  28. package/dist/types/mobius-socket/socket/types.d.ts +0 -8
  29. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -1
  30. package/dist/types/mobius-socket/types.d.ts.map +1 -1
  31. 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":["export const SOCKET_READY_STATE = Object.freeze({\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3,\n});\n\nexport const MESSAGE_TYPES = Object.freeze({\n AUTH: 'auth',\n EVENT_ACK: 'event_ack',\n});\n"],"mappings":";;;;;;;;;AAAO,IAAMA,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAG,IAAAE,OAAA,CAAAC,OAAA,EAAc;EAC9CC,UAAU,EAAE,CAAC;EACbC,IAAI,EAAE,CAAC;EACPC,OAAO,EAAE,CAAC;EACVC,MAAM,EAAE;AACV,CAAC,CAAC;AAEK,IAAMC,aAAa,GAAAP,OAAA,CAAAO,aAAA,GAAG,IAAAN,OAAA,CAAAC,OAAA,EAAc;EACzCM,IAAI,EAAE,MAAM;EACZC,SAAS,EAAE;AACb,CAAC,CAAC","ignoreList":[]}
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-expect-error `@webex/common` is still JS-only and does not ship declarations.
42
- // @ts-expect-error `@webex/common-timers` is still JS-only and does not ship declarations.
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
- * constructor
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
- return sockets.get(this).binaryType;
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
- return sockets.get(this).bufferedAmount;
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
- return sockets.get(this).extensions;
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
- return sockets.get(this).protocol;
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
- return sockets.get(this).readyState;
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
- return sockets.get(this).url;
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 (ws in NodeJS,
136
- * WebSocket in browsers)
137
- * @returns {WebSocket}
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 {Object} options
145
- * @param {string} options.reason
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
- * @param {string} url
221
- * @param {options} options
222
- * @param {number} options.forceCloseDelay (required)
223
- * @param {string} options.token (required)
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 {CloseEvent} event
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 {MessageEvent} event
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 {mixed} data
347
- * @returns {Promise}
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
- * @param {Object} data
374
- * @param {Object} [options={}]
375
- * @param {Function} [options.matchesResponse]
376
- * @param {Function} [options.createError]
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 || this.createTrackingId();
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 pending for trackingId ".concat(trackingId)));
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
- _this6.pendingResponses.set(trackingId, {
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 {MessageEvent} event
449
- * @returns {Promise}
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 || this.createTrackingId(),
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 {string} token
496
- * @returns {Promise}
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 {string} trackingId
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 {Error} error
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
- (0, _from.default)(this.pendingResponses.values()).forEach(function (pendingResponse) {
569
- pendingResponse.reject(error);
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 {Object} response
576
- * @returns {boolean}
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 = response.trackingId ? this.pendingResponses.get(response.trackingId) : undefined;
542
+ var pendingResponse = this.pendingResponses.get(response.trackingId || '');
588
543
  if (!pendingResponse) {
589
544
  return false;
590
545
  }
591
- if (!pendingResponse.matchesResponse(response, pendingResponse.request)) {
546
+ if (response.subtype !== pendingResponse.request.type) {
592
547
  return false;
593
548
  }
594
- var statusCode = pendingResponse.getStatusCode(response);
595
- var statusMessage = pendingResponse.getStatusMessage(response);
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
- pendingResponse.reject(pendingResponse.createError(response, statusCode, statusMessage || 'Socket response missing status code'));
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(pendingResponse.createError(response, statusCode, statusMessage));
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
- * close reasons).
618
- * @param {CloseEvent} event
619
- * @private
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",