@webex/calling 3.12.0-mobius-socket.15 → 3.12.0-mobius-socket.16

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 (55) hide show
  1. package/dist/mobius-socket/config.js +8 -8
  2. package/dist/mobius-socket/config.js.map +1 -1
  3. package/dist/mobius-socket/errors.js +2 -3
  4. package/dist/mobius-socket/errors.js.map +1 -1
  5. package/dist/mobius-socket/index.js +16 -10
  6. package/dist/mobius-socket/index.js.map +1 -1
  7. package/dist/mobius-socket/mobius-socket-events.test.js +5 -3
  8. package/dist/mobius-socket/mobius-socket-events.test.js.map +1 -1
  9. package/dist/mobius-socket/mobius-socket.js +3 -2
  10. package/dist/mobius-socket/mobius-socket.js.map +1 -1
  11. package/dist/mobius-socket/mobius-socket.test.js +6 -4
  12. package/dist/mobius-socket/mobius-socket.test.js.map +1 -1
  13. package/dist/mobius-socket/socket/constants.js.map +1 -1
  14. package/dist/mobius-socket/socket/index.js.map +1 -1
  15. package/dist/mobius-socket/socket/socket-base.js +57 -32
  16. package/dist/mobius-socket/socket/socket-base.js.map +1 -1
  17. package/dist/mobius-socket/socket/socket.js.map +1 -1
  18. package/dist/mobius-socket/socket/socket.shim.js +3 -13
  19. package/dist/mobius-socket/socket/socket.shim.js.map +1 -1
  20. package/dist/mobius-socket/socket/types.js +7 -0
  21. package/dist/mobius-socket/socket/types.js.map +1 -0
  22. package/dist/mobius-socket/socket.test.js +36 -36
  23. package/dist/mobius-socket/socket.test.js.map +1 -1
  24. package/dist/mobius-socket/test/mocha-helpers.js.map +1 -1
  25. package/dist/mobius-socket/test/promise-tick.js +2 -3
  26. package/dist/mobius-socket/test/promise-tick.js.map +1 -1
  27. package/dist/module/mobius-socket/index.js +4 -1
  28. package/dist/module/mobius-socket/mobius-socket.js +3 -1
  29. package/dist/module/mobius-socket/socket/socket-base.js +60 -29
  30. package/dist/module/mobius-socket/socket/socket.shim.js +3 -15
  31. package/dist/module/mobius-socket/socket/types.js +1 -0
  32. package/dist/types/mobius-socket/config.d.ts +15 -12
  33. package/dist/types/mobius-socket/config.d.ts.map +1 -1
  34. package/dist/types/mobius-socket/errors.d.ts +15 -6
  35. package/dist/types/mobius-socket/errors.d.ts.map +1 -1
  36. package/dist/types/mobius-socket/index.d.ts +14 -7
  37. package/dist/types/mobius-socket/index.d.ts.map +1 -1
  38. package/dist/types/mobius-socket/mobius-socket.d.ts +27 -43
  39. package/dist/types/mobius-socket/mobius-socket.d.ts.map +1 -1
  40. package/dist/types/mobius-socket/socket/constants.d.ts +2 -2
  41. package/dist/types/mobius-socket/socket/constants.d.ts.map +1 -1
  42. package/dist/types/mobius-socket/socket/index.d.ts +4 -1
  43. package/dist/types/mobius-socket/socket/index.d.ts.map +1 -1
  44. package/dist/types/mobius-socket/socket/socket-base.d.ts +34 -28
  45. package/dist/types/mobius-socket/socket/socket-base.d.ts.map +1 -1
  46. package/dist/types/mobius-socket/socket/socket.d.ts +4 -1
  47. package/dist/types/mobius-socket/socket/socket.d.ts.map +1 -1
  48. package/dist/types/mobius-socket/socket/socket.shim.d.ts +4 -1
  49. package/dist/types/mobius-socket/socket/socket.shim.d.ts.map +1 -1
  50. package/dist/types/mobius-socket/socket/types.d.ts +69 -0
  51. package/dist/types/mobius-socket/socket/types.d.ts.map +1 -0
  52. package/package.json +2 -2
  53. package/src/mobius-socket/socket/socket.shim.ts +22 -0
  54. package/src/mobius-socket/socket/{socket.js → socket.ts} +2 -1
  55. package/src/mobius-socket/socket/socket.shim.js +0 -31
@@ -1 +1 @@
1
- {"version":3,"names":["SOCKET_READY_STATE","exports","_freeze","default","CONNECTING","OPEN","CLOSING","CLOSED","MESSAGE_TYPES","AUTH","EVENT_ACK"],"sources":["constants.js"],"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":["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 +1 @@
1
- {"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {default} from './socket';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA","ignoreList":[]}
1
+ {"version":3,"names":["_socket","_interopRequireDefault","require"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nexport {default} from './socket';\n"],"mappings":";;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA","ignoreList":[]}
@@ -19,12 +19,12 @@ var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/objec
19
19
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/define-property"));
20
20
  var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
21
21
  var _from = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/from"));
22
- var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
23
22
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
24
23
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
25
24
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
26
25
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
27
26
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
27
+ var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
28
28
  var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
29
29
  var _has2 = _interopRequireDefault(require("lodash/has"));
30
30
  var _defaults2 = _interopRequireDefault(require("lodash/defaults"));
@@ -38,8 +38,14 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
38
38
  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
39
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); } /*!
40
40
  * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
41
- */
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.
42
43
  var sockets = new _weakMap.default();
44
+ var UnknownResponseCtor = _errors.UnknownResponse;
45
+ var BadRequestCtor = _errors.BadRequest;
46
+ var NotAuthorizedCtor = _errors.NotAuthorized;
47
+ var ForbiddenCtor = _errors.Forbidden;
48
+ var ConnectionErrorCtor = _errors.ConnectionError;
43
49
 
44
50
  /**
45
51
  * Generalized socket abstraction
@@ -53,6 +59,14 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
53
59
  var _this;
54
60
  (0, _classCallCheck2.default)(this, Socket);
55
61
  _this = _callSuper(this, Socket);
62
+ (0, _defineProperty3.default)(_this, "_domain", void 0);
63
+ (0, _defineProperty3.default)(_this, "_pendingResponses", void 0);
64
+ (0, _defineProperty3.default)(_this, "forceCloseDelay", void 0);
65
+ (0, _defineProperty3.default)(_this, "logger", void 0);
66
+ (0, _defineProperty3.default)(_this, "refreshToken", void 0);
67
+ (0, _defineProperty3.default)(_this, "token", void 0);
68
+ (0, _defineProperty3.default)(_this, "trackingId", void 0);
69
+ (0, _defineProperty3.default)(_this, "wssResponseTimeout", void 0);
56
70
  _this._domain = 'unknown-domain';
57
71
  _this._pendingResponses = new _map.default();
58
72
  _this.onmessage = _this.onmessage.bind(_this);
@@ -154,17 +168,16 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
154
168
  resolve();
155
169
  return;
156
170
  }
157
- options = options || {};
158
- if (options.code && options.code !== 1000 && (options.code < 3000 || options.code > 4999)) {
159
- reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));
160
- return;
161
- }
162
- var originalCode = options.code;
163
- var originalReason = options.reason;
164
- options = (0, _defaults2.default)(options, {
171
+ var originalCode = options === null || options === void 0 ? void 0 : options.code;
172
+ var originalReason = options === null || options === void 0 ? void 0 : options.reason;
173
+ var resolvedOptions = (0, _defaults2.default)(options || {}, {
165
174
  code: 1000,
166
175
  reason: 'Done'
167
176
  });
177
+ if (resolvedOptions.code && resolvedOptions.code !== 1000 && (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)) {
178
+ reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));
179
+ return;
180
+ }
168
181
  var closeTimer = (0, _commonTimers.safeSetTimeout)(function () {
169
182
  try {
170
183
  _this2.logger.info("socket,".concat(_this2._domain, ": no close event received, forcing closure"));
@@ -192,18 +205,18 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
192
205
  _this2.logger.info("socket,".concat(_this2._domain, ": socket still connecting, triggering close manually"));
193
206
  clearTimeout(closeTimer);
194
207
  var closeEvent = {
195
- code: options.code,
196
- reason: options.reason
208
+ code: resolvedOptions.code,
209
+ reason: resolvedOptions.reason
197
210
  };
198
211
  _this2.onclose(closeEvent);
199
212
  resolve(closeEvent);
200
213
  try {
201
- socket.close(options.code, options.reason);
214
+ socket.close(resolvedOptions.code, resolvedOptions.reason);
202
215
  } catch (error) {
203
216
  _this2.logger.info("socket,".concat(_this2._domain, ": error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes"), error);
204
217
  }
205
218
  } else {
206
- socket.close(options.code, options.reason);
219
+ socket.close(resolvedOptions.code, resolvedOptions.reason);
207
220
  }
208
221
  });
209
222
  }
@@ -237,17 +250,17 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
237
250
  reject(new Error('Socket#open() can only be called once per instance'));
238
251
  return;
239
252
  }
240
- options = options || {};
241
- (0, _common.checkRequired)(['forceCloseDelay', 'token', 'trackingId', 'logger'], options);
242
- (0, _keys.default)(options).forEach(function (key) {
253
+ var resolvedOptions = options || {};
254
+ (0, _common.checkRequired)(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);
255
+ (0, _keys.default)(resolvedOptions).forEach(function (key) {
243
256
  (0, _defineProperty2.default)(_this3, key, {
244
257
  enumerable: false,
245
- value: options[key]
258
+ value: resolvedOptions[key]
246
259
  });
247
260
  });
248
261
  var WebSocket = Socket.getWebSocketConstructor();
249
262
  _this3.logger.info("socket,".concat(_this3._domain, ": creating WebSocket"));
250
- var socket = new WebSocket(url, [], options);
263
+ var socket = new WebSocket(url, [], resolvedOptions);
251
264
  socket.binaryType = 'arraybuffer';
252
265
  socket.onmessage = _this3.onmessage;
253
266
  socket.onclose = function (event) {
@@ -259,17 +272,17 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
259
272
  // it's a bad websocket url. That'll trigger a device refresh; if it
260
273
  // turns out we had a bad token, the device refresh should 401 and
261
274
  // trigger a token refresh.
262
- return reject(new _errors.UnknownResponse(event));
275
+ return reject(new UnknownResponseCtor(event));
263
276
  case 4400:
264
- return reject(new _errors.BadRequest(event));
277
+ return reject(new BadRequestCtor(event));
265
278
  case 4401:
266
- return reject(new _errors.NotAuthorized(event));
279
+ return reject(new NotAuthorizedCtor(event));
267
280
  case 4403:
268
- return reject(new _errors.Forbidden(event));
281
+ return reject(new ForbiddenCtor(event));
269
282
  // case 4404:
270
283
  // return reject(new NotFound(event));
271
284
  default:
272
- return reject(new _errors.ConnectionError(event));
285
+ return reject(new ConnectionErrorCtor(event));
273
286
  }
274
287
  };
275
288
  socket.onopen = function () {
@@ -298,7 +311,7 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
298
311
  value: function onclose(event) {
299
312
  this.logger.info("socket,".concat(this._domain, ": closed"), event.code, event.reason);
300
313
  event = this._fixCloseCode(event);
301
- this._rejectPendingResponses(new _errors.ConnectionError(event));
314
+ this._rejectPendingResponses(new ConnectionErrorCtor(event));
302
315
  this.emit('close', event);
303
316
 
304
317
  // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure
@@ -347,14 +360,19 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
347
360
  var _this5 = this;
348
361
  return new _promise.default(function (resolve, reject) {
349
362
  if (_this5.readyState !== _constants.SOCKET_READY_STATE.OPEN) {
350
- return reject(new Error('INVALID_STATE_ERROR'));
363
+ reject(new Error('INVALID_STATE_ERROR'));
364
+ return;
351
365
  }
352
366
  if ((0, _isObject2.default)(data)) {
353
367
  data = (0, _stringify.default)(data);
354
368
  }
355
369
  var socket = sockets.get(_this5);
370
+ if (!socket) {
371
+ reject(new Error('INVALID_STATE_ERROR'));
372
+ return;
373
+ }
356
374
  socket.send(data);
357
- return resolve();
375
+ resolve();
358
376
  });
359
377
  }
360
378
 
@@ -391,13 +409,13 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
391
409
  return response === null || response === void 0 ? void 0 : response.statusMessage;
392
410
  };
393
411
  var createError = options.createError || function (response, statusCode, statusMessage) {
394
- return new _errors.ConnectionError({
412
+ return new ConnectionErrorCtor({
395
413
  code: statusCode,
396
414
  reason: statusMessage || (response === null || response === void 0 ? void 0 : response.reason) || 'Socket request failed'
397
415
  });
398
416
  };
399
417
  var createTimeoutError = options.createTimeoutError || function () {
400
- return new _errors.ConnectionError({
418
+ return new ConnectionErrorCtor({
401
419
  reason: 'Socket response not received before timeout'
402
420
  });
403
421
  };
@@ -469,7 +487,14 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
469
487
  if (!token) {
470
488
  return _promise.default.reject(new Error('`token` is required for Socket#refresh()'));
471
489
  }
472
- var refreshedToken = token && typeof token.toString === 'function' ? token.toString() : token;
490
+ var refreshedToken;
491
+ if (typeof token === 'string') {
492
+ refreshedToken = token;
493
+ } else if (token && typeof token.toString === 'function') {
494
+ refreshedToken = token.toString();
495
+ } else {
496
+ refreshedToken = String(token);
497
+ }
473
498
  return this._authorize(refreshedToken);
474
499
  }
475
500
 
@@ -498,13 +523,13 @@ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
498
523
  return response === null || response === void 0 ? void 0 : response.statusMessage;
499
524
  },
500
525
  createError: function createError(response, statusCode, statusMessage) {
501
- return new _errors.NotAuthorized({
526
+ return new NotAuthorizedCtor({
502
527
  code: statusCode,
503
528
  reason: statusMessage || 'Mobius auth failed'
504
529
  });
505
530
  },
506
531
  createTimeoutError: function createTimeoutError() {
507
- return new _errors.NotAuthorized({
532
+ return new NotAuthorizedCtor({
508
533
  reason: 'Mobius auth response not received before timeout'
509
534
  });
510
535
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_events","require","_common","_commonTimers","_errors","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","sockets","_weakMap","Socket","exports","_EventEmitter","_this","_classCallCheck2","_domain","_pendingResponses","_map","onmessage","bind","onclose","setMaxListeners","_inherits2","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","concat","SOCKET_READY_STATE","CLOSING","CLOSED","code","Error","originalCode","originalReason","reason","_defaults2","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","CONNECTING","closeEvent","open","_this3","URL","hostname","_unused","checkRequired","_keys","_defineProperty2","WebSocket","getWebSocketConstructor","_fixCloseCode","UnknownResponse","BadRequest","NotAuthorized","Forbidden","ConnectionError","onopen","_authorize","token","then","catch","onerror","set","_rejectPendingResponses","emit","removeAllListeners","_this4","data","JSON","parse","processedEvent","type","_acknowledge","_handlePendingResponse","send","_this5","OPEN","_isObject2","_stringify","sendRequest","_this6","undefined","request","trackingId","_createTrackingId","timeout","wssResponseTimeout","matchesResponse","response","getStatusCode","statusCode","getStatusMessage","statusMessage","createError","createTimeoutError","has","timeoutId","_clearPendingResponse","_has2","MESSAGE_TYPES","EVENT_ACK","eventId","message","refresh","refreshedToken","toString","AUTH","subtype","crypto","randomUUID","pendingResponse","delete","size","_from","values","_this7","refreshToken","toLowerCase","EventEmitter"],"sources":["socket-base.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\nimport {checkRequired} from '@webex/common';\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {defaults, has, isObject} from 'lodash';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\nimport {MESSAGE_TYPES, SOCKET_READY_STATE} from './constants';\n\nconst sockets = new WeakMap();\n\n/**\n * Generalized socket abstraction\n */\nexport default class Socket extends EventEmitter {\n /**\n * constructor\n * @returns {Socket}\n */\n constructor() {\n super();\n this._domain = 'unknown-domain';\n this._pendingResponses = new Map();\n this.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\n // Increase max listeners to avoid memory leak warning in tests\n this.setMaxListeners(10);\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get binaryType() {\n return sockets.get(this).binaryType;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get bufferedAmount() {\n return sockets.get(this).bufferedAmount;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get extensions() {\n return sockets.get(this).extensions;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get protocol() {\n return sockets.get(this).protocol;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get readyState() {\n return sockets.get(this).readyState;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get url() {\n return sockets.get(this).url;\n }\n\n /**\n * Provides the environmentally appropriate constructor (ws in NodeJS,\n * WebSocket in browsers)\n * @returns {WebSocket}\n */\n static getWebSocketConstructor() {\n throw new Error(\n 'Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way'\n );\n }\n\n /**\n * Closes the socket\n * @param {Object} options\n * @param {string} options.reason\n * @param {number} options.code\n * @returns {Promise}\n */\n close(options) {\n return new Promise((resolve, reject) => {\n const socket = sockets.get(this);\n\n if (!socket) {\n // Open has not been called yet so there is no socket to close\n resolve();\n\n return;\n }\n // logger is defined once open is called\n this.logger.info(`socket,${this._domain}: closing`);\n\n if (\n socket.readyState === SOCKET_READY_STATE.CLOSING ||\n socket.readyState === SOCKET_READY_STATE.CLOSED\n ) {\n this.logger.info(`socket,${this._domain}: already closed`);\n resolve();\n\n return;\n }\n\n options = options || {};\n if (options.code && options.code !== 1000 && (options.code < 3000 || options.code > 4999)) {\n reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));\n\n return;\n }\n\n const originalCode = options.code;\n const originalReason = options.reason;\n\n options = defaults(options, {\n code: 1000,\n reason: 'Done',\n });\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info(`socket,${this._domain}: no close event received, forcing closure`);\n resolve(\n this.onclose(\n originalCode\n ? {code: originalCode, reason: originalReason || 'Done (unknown)'}\n : {\n code: 1000,\n reason: 'Done (forced)',\n }\n )\n );\n } catch (error) {\n this.logger.warn(`socket,${this._domain}: force-close failed`, error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info(`socket,${this._domain}: close event fired`, event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n // If socket is still connecting, manually trigger close handler with desired code\n // because calling close() on a CONNECTING socket may not preserve custom codes\n if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {\n this.logger.info(\n `socket,${this._domain}: socket still connecting, triggering close manually`\n );\n clearTimeout(closeTimer);\n const closeEvent = {code: options.code, reason: options.reason};\n this.onclose(closeEvent);\n resolve(closeEvent);\n try {\n socket.close(options.code, options.reason);\n } catch (error) {\n this.logger.info(\n `socket,${this._domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`,\n error\n );\n }\n } else {\n socket.close(options.code, options.reason);\n }\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @returns {Promise}\n */\n open(url, options) {\n try {\n this._domain = new URL(url).hostname;\n } catch {\n this._domain = url;\n }\n\n return new Promise((resolve, reject) => {\n /* eslint complexity: [0] */\n if (!url) {\n reject(new Error('`url` is required'));\n\n return;\n }\n\n if (sockets.get(this)) {\n reject(new Error('Socket#open() can only be called once per instance'));\n\n return;\n }\n\n options = options || {};\n\n checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], options);\n\n Object.keys(options).forEach((key) => {\n Reflect.defineProperty(this, key, {\n enumerable: false,\n value: options[key],\n });\n });\n\n const WebSocket = Socket.getWebSocketConstructor();\n\n this.logger.info(`socket,${this._domain}: creating WebSocket`);\n const socket = new WebSocket(url, [], options);\n\n socket.binaryType = 'arraybuffer';\n socket.onmessage = this.onmessage;\n\n socket.onclose = (event) => {\n event = this._fixCloseCode(event);\n this.logger.info(`socket,${this._domain}: closed before open`, event.code, event.reason);\n switch (event.code) {\n case 1005:\n // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume\n // it's a bad websocket url. That'll trigger a device refresh; if it\n // turns out we had a bad token, the device refresh should 401 and\n // trigger a token refresh.\n return reject(new UnknownResponse(event));\n case 4400:\n return reject(new BadRequest(event));\n case 4401:\n return reject(new NotAuthorized(event));\n case 4403:\n return reject(new Forbidden(event));\n // case 4404:\n // return reject(new NotFound(event));\n default:\n return reject(new ConnectionError(event));\n }\n };\n\n socket.onopen = () => {\n this.logger.info(`socket,${this._domain}: connected`);\n this._authorize(this.token)\n .then(() => {\n this.logger.info(`socket,${this._domain}: authorized`);\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn(`socket,${this._domain}: error event fired`, event);\n };\n\n sockets.set(this, socket);\n this.logger.info(`socket,${this._domain}: waiting for server`);\n });\n }\n\n /**\n * Handles incoming CloseEvents\n * @param {CloseEvent} event\n * @returns {undefined}\n */\n onclose(event) {\n this.logger.info(`socket,${this._domain}: closed`, event.code, event.reason);\n\n event = this._fixCloseCode(event);\n this._rejectPendingResponses(new ConnectionError(event));\n this.emit('close', event);\n\n // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure\n // we don't have a retain cycle.\n this.removeAllListeners();\n }\n\n /**\n * Handles incoming message events\n * @param {MessageEvent} event\n * @returns {undefined}\n */\n onmessage(event) {\n try {\n const data = JSON.parse(event.data);\n const processedEvent = {data};\n\n if (data.type === 'async_event') {\n this._acknowledge(processedEvent).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed to acknowledge async event`, error);\n });\n }\n\n // Match pending request/response promises before emitting the public message event.\n // The message is still emitted afterward for any external listeners that care about it.\n this._handlePendingResponse(data);\n this.emit('message', processedEvent);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.warn(`socket,${this._domain}: error while receiving WebSocket message`, error);\n }\n }\n\n /**\n * Sends a message up the socket\n * @param {mixed} data\n * @returns {Promise}\n */\n send(data) {\n return new Promise((resolve, reject) => {\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return reject(new Error('INVALID_STATE_ERROR'));\n }\n\n if (isObject(data)) {\n data = JSON.stringify(data);\n }\n\n const socket = sockets.get(this);\n\n socket.send(data);\n\n return resolve();\n });\n }\n\n /**\n * Sends a request and resolves when the matching response arrives.\n * @param {Object} data\n * @param {Object} [options={}]\n * @param {Function} [options.matchesResponse]\n * @param {Function} [options.createError]\n * @param {Function} [options.createTimeoutError]\n * @param {Function} [options.getStatusCode]\n * @param {Function} [options.getStatusMessage]\n * @param {number} [options.timeout]\n * @returns {Promise<Object>}\n */\n sendRequest(data, options = {}) {\n if (!isObject(data)) {\n return Promise.reject(new Error('`data` is required'));\n }\n\n const request = {...data};\n const trackingId = request.trackingId || this._createTrackingId();\n const timeout = options.timeout || this.wssResponseTimeout || 10000;\n const matchesResponse =\n options.matchesResponse ||\n ((response) => response?.trackingId === trackingId && response?.type === 'response_event');\n const getStatusCode = options.getStatusCode || ((response) => response?.statusCode);\n const getStatusMessage = options.getStatusMessage || ((response) => response?.statusMessage);\n const createError =\n options.createError ||\n ((response, statusCode, statusMessage) =>\n new ConnectionError({\n code: statusCode,\n reason: statusMessage || response?.reason || 'Socket request failed',\n }));\n const createTimeoutError =\n options.createTimeoutError ||\n (() =>\n new ConnectionError({\n reason: 'Socket response not received before timeout',\n }));\n\n if (this._pendingResponses.has(trackingId)) {\n return Promise.reject(\n new Error(`socket request already pending for trackingId ${trackingId}`)\n );\n }\n\n request.trackingId = trackingId;\n\n return new Promise((resolve, reject) => {\n const timeoutId = safeSetTimeout(() => {\n this._clearPendingResponse(trackingId);\n reject(createTimeoutError(request));\n }, timeout);\n\n this._pendingResponses.set(trackingId, {\n request,\n matchesResponse,\n getStatusCode,\n getStatusMessage,\n createError,\n resolve: (response) => {\n this._clearPendingResponse(trackingId);\n resolve(response);\n },\n reject: (error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n },\n timeoutId,\n });\n\n this.send(request).catch((error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n });\n });\n }\n\n /**\n * Sends an acknowledgment for a specific event\n * @param {MessageEvent} event\n * @returns {Promise}\n */\n _acknowledge(event) {\n if (!event) {\n return Promise.reject(new Error('`event` is required'));\n }\n\n if (!has(event, 'data.eventId')) {\n return Promise.reject(new Error('`event.data.eventId` is required'));\n }\n\n // Don't try to acknowledge if socket is not in open state\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return Promise.resolve();\n }\n\n return this.send({\n type: MESSAGE_TYPES.EVENT_ACK,\n trackingId: event.data.trackingId || this._createTrackingId(),\n eventId: event.data.eventId,\n }).catch((error) => {\n if (error.message === 'INVALID_STATE_ERROR') {\n return Promise.resolve();\n }\n throw error;\n });\n }\n\n refresh(token) {\n if (!token) {\n return Promise.reject(new Error('`token` is required for Socket#refresh()'));\n }\n\n const refreshedToken = token && typeof token.toString === 'function' ? token.toString() : token;\n\n return this._authorize(refreshedToken);\n }\n\n /**\n * Sends an auth message up the socket with a refreshed token.\n * @param {string} token\n * @returns {Promise}\n */\n _authorize(token) {\n this.logger.info(`socket,${this._domain}: authorizing`);\n\n return this.sendRequest(\n {\n type: MESSAGE_TYPES.AUTH,\n data: {\n token,\n },\n },\n {\n matchesResponse: (response, request) =>\n response?.type === 'response_event' &&\n response?.subtype === MESSAGE_TYPES.AUTH &&\n response?.trackingId === request.trackingId,\n getStatusCode: (response) => response?.statusCode,\n getStatusMessage: (response) => response?.statusMessage,\n createError: (response, statusCode, statusMessage) =>\n new NotAuthorized({\n code: statusCode,\n reason: statusMessage || 'Mobius auth failed',\n }),\n createTimeoutError: () =>\n new NotAuthorized({\n reason: 'Mobius auth response not received before timeout',\n }),\n }\n );\n }\n\n /**\n * Creates a unique tracking ID\n * @private\n * @returns {string}\n */\n _createTrackingId() {\n return `${this.trackingId}_${crypto.randomUUID()}`;\n }\n\n /**\n * Clears a pending response entry.\n * @param {string} trackingId\n * @returns {void}\n */\n _clearPendingResponse(trackingId) {\n const pendingResponse = this._pendingResponses.get(trackingId);\n\n if (pendingResponse?.timeoutId) {\n clearTimeout(pendingResponse.timeoutId);\n }\n\n this._pendingResponses.delete(trackingId);\n }\n\n /**\n * Rejects all pending responses with the provided error.\n * @param {Error} error\n * @returns {void}\n */\n _rejectPendingResponses(error) {\n if (!this._pendingResponses.size) {\n return;\n }\n\n Array.from(this._pendingResponses.values()).forEach((pendingResponse) => {\n pendingResponse.reject(error);\n });\n }\n\n /**\n * Handles incoming responses for pending requests.\n * @param {Object} response\n * @returns {boolean}\n */\n _handlePendingResponse(response) {\n if (!response) {\n return false;\n }\n\n // Pending request correlation currently requires trackingId on the response.\n const pendingResponse = response.trackingId\n ? this._pendingResponses.get(response.trackingId)\n : undefined;\n\n if (!pendingResponse) {\n return false;\n }\n\n if (!pendingResponse.matchesResponse(response, pendingResponse.request)) {\n return false;\n }\n\n const statusCode = pendingResponse.getStatusCode(response);\n const statusMessage = pendingResponse.getStatusMessage(response);\n\n if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {\n if (typeof this.refreshToken === 'function') {\n Promise.resolve(this.refreshToken(response)).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed token-expiry re-auth`, error);\n });\n } else {\n this.logger.warn(\n `socket,${this._domain}: refreshToken callback is unavailable for statusCode 440`\n );\n }\n }\n\n if (statusCode === undefined) {\n pendingResponse.reject(\n pendingResponse.createError(\n response,\n statusCode,\n statusMessage || 'Socket response missing status code'\n )\n );\n } else if (statusCode >= 200 && statusCode < 300) {\n pendingResponse.resolve(response);\n } else {\n pendingResponse.reject(pendingResponse.createError(response, statusCode, statusMessage));\n }\n\n return true;\n }\n\n /**\n * Deals with the fact that some browsers drop some close codes (but not\n * close reasons).\n * @param {CloseEvent} event\n * @private\n * @returns {CloseEvent}\n */\n _fixCloseCode(event) {\n if (event.code === 1005 && event.reason) {\n switch (event.reason.toLowerCase()) {\n case 'replaced':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 4000;\n break;\n case 'authentication failed':\n case 'authentication did not happen within the timeout window of 30000 seconds.':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_events","require","_common","_commonTimers","_errors","_constants","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty3","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_callSuper","_getPrototypeOf2","_possibleConstructorReturn2","_isNativeReflectConstruct","_Reflect$construct","constructor","Boolean","prototype","valueOf","call","sockets","_weakMap","UnknownResponseCtor","UnknownResponse","BadRequestCtor","BadRequest","NotAuthorizedCtor","NotAuthorized","ForbiddenCtor","Forbidden","ConnectionErrorCtor","ConnectionError","Socket","exports","_EventEmitter","_this","_classCallCheck2","_domain","_pendingResponses","_map","onmessage","bind","onclose","setMaxListeners","_inherits2","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","concat","SOCKET_READY_STATE","CLOSING","CLOSED","originalCode","code","originalReason","reason","resolvedOptions","_defaults2","Error","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","CONNECTING","closeEvent","open","_this3","URL","hostname","_unused","checkRequired","_keys","_defineProperty2","WebSocket","getWebSocketConstructor","_fixCloseCode","onopen","_authorize","token","then","catch","onerror","set","_rejectPendingResponses","emit","removeAllListeners","_this4","data","JSON","parse","processedEvent","type","_acknowledge","_handlePendingResponse","send","_this5","OPEN","_isObject2","_stringify","sendRequest","_this6","undefined","request","trackingId","_createTrackingId","timeout","wssResponseTimeout","matchesResponse","response","getStatusCode","statusCode","getStatusMessage","statusMessage","createError","createTimeoutError","has","timeoutId","_clearPendingResponse","_has2","MESSAGE_TYPES","EVENT_ACK","eventId","message","refresh","refreshedToken","toString","String","AUTH","subtype","crypto","randomUUID","pendingResponse","delete","size","_from","values","_this7","refreshToken","toLowerCase","EventEmitter"],"sources":["socket-base.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport {EventEmitter} from 'events';\n\n// @ts-expect-error `@webex/common` is still JS-only and does not ship declarations.\nimport {checkRequired} from '@webex/common';\n// @ts-expect-error `@webex/common-timers` is still JS-only and does not ship declarations.\nimport {safeSetTimeout} from '@webex/common-timers';\nimport {defaults, has, isObject} from 'lodash';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\nimport {MESSAGE_TYPES, SOCKET_READY_STATE} from './constants';\nimport type {\n SocketCloseEvent,\n SocketLogger,\n SocketMessageEvent,\n PendingResponseEntry,\n SendRequestOptions,\n SocketOpenOptions,\n SocketResponse,\n SocketTransport,\n SocketTransportConstructor,\n} from './types';\n\nconst sockets = new WeakMap<Socket, SocketTransport>();\nconst UnknownResponseCtor = UnknownResponse as unknown as new (\n event?: SocketCloseEvent\n) => UnknownResponse;\nconst BadRequestCtor = BadRequest as unknown as new (event?: SocketCloseEvent) => BadRequest;\nconst NotAuthorizedCtor = NotAuthorized as unknown as new (\n event?: SocketCloseEvent\n) => NotAuthorized;\nconst ForbiddenCtor = Forbidden as unknown as new (event?: SocketCloseEvent) => Forbidden;\nconst ConnectionErrorCtor = ConnectionError as unknown as new (\n event?: SocketCloseEvent\n) => ConnectionError;\n\n/**\n * Generalized socket abstraction\n */\nexport default class Socket extends EventEmitter {\n _domain: string;\n\n _pendingResponses: Map<string, PendingResponseEntry>;\n\n forceCloseDelay!: number;\n\n logger!: SocketLogger;\n\n refreshToken?: (response: SocketResponse) => unknown;\n\n token!: string;\n\n trackingId!: string;\n\n wssResponseTimeout?: number;\n\n /**\n * constructor\n * @returns {Socket}\n */\n constructor() {\n super();\n this._domain = 'unknown-domain';\n this._pendingResponses = new Map();\n this.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\n // Increase max listeners to avoid memory leak warning in tests\n this.setMaxListeners(10);\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get binaryType() {\n return sockets.get(this)!.binaryType;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get bufferedAmount() {\n return sockets.get(this)!.bufferedAmount;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get extensions() {\n return sockets.get(this)!.extensions;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get protocol() {\n return sockets.get(this)!.protocol;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {number}\n */\n get readyState() {\n return sockets.get(this)!.readyState;\n }\n\n /**\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @returns {string}\n */\n get url() {\n return sockets.get(this)!.url;\n }\n\n /**\n * Provides the environmentally appropriate constructor (ws in NodeJS,\n * WebSocket in browsers)\n * @returns {WebSocket}\n */\n static getWebSocketConstructor(): unknown {\n throw new Error(\n 'Socket.getWebSocketConstructor() must be implemented in an environmentally appropriate way'\n );\n }\n\n /**\n * Closes the socket\n * @param {Object} options\n * @param {string} options.reason\n * @param {number} options.code\n * @returns {Promise}\n */\n close(options?: {reason?: string; code?: number}) {\n return new Promise<SocketCloseEvent | void>((resolve, reject) => {\n const socket = sockets.get(this);\n\n if (!socket) {\n // Open has not been called yet so there is no socket to close\n resolve();\n\n return;\n }\n // logger is defined once open is called\n this.logger.info(`socket,${this._domain}: closing`);\n\n if (\n socket.readyState === SOCKET_READY_STATE.CLOSING ||\n socket.readyState === SOCKET_READY_STATE.CLOSED\n ) {\n this.logger.info(`socket,${this._domain}: already closed`);\n resolve();\n\n return;\n }\n\n const originalCode = options?.code;\n const originalReason = options?.reason;\n\n const resolvedOptions = defaults(options || {}, {\n code: 1000,\n reason: 'Done',\n }) as {code: number; reason: string};\n\n if (\n resolvedOptions.code &&\n resolvedOptions.code !== 1000 &&\n (resolvedOptions.code < 3000 || resolvedOptions.code > 4999)\n ) {\n reject(new Error('`options.code` must be 1000 or between 3000 and 4999 (inclusive)'));\n\n return;\n }\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info(`socket,${this._domain}: no close event received, forcing closure`);\n resolve(\n this.onclose(\n originalCode\n ? {code: originalCode, reason: originalReason || 'Done (unknown)'}\n : {\n code: 1000,\n reason: 'Done (forced)',\n }\n )\n );\n } catch (error) {\n this.logger.warn(`socket,${this._domain}: force-close failed`, error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info(`socket,${this._domain}: close event fired`, event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n // If socket is still connecting, manually trigger close handler with desired code\n // because calling close() on a CONNECTING socket may not preserve custom codes\n if (socket.readyState === SOCKET_READY_STATE.CONNECTING) {\n this.logger.info(\n `socket,${this._domain}: socket still connecting, triggering close manually`\n );\n clearTimeout(closeTimer);\n const closeEvent: SocketCloseEvent = {\n code: resolvedOptions.code,\n reason: resolvedOptions.reason,\n };\n this.onclose(closeEvent);\n resolve(closeEvent);\n try {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n } catch (error) {\n this.logger.info(\n `socket,${this._domain}: error while closing CONNECTING socket, likely due to browser incompatibility with custom close codes`,\n error\n );\n }\n } else {\n socket.close(resolvedOptions.code, resolvedOptions.reason);\n }\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @returns {Promise}\n */\n open(url: string, options?: SocketOpenOptions) {\n try {\n this._domain = new URL(url).hostname;\n } catch {\n this._domain = url;\n }\n\n return new Promise<void>((resolve, reject) => {\n /* eslint complexity: [0] */\n if (!url) {\n reject(new Error('`url` is required'));\n\n return;\n }\n\n if (sockets.get(this)) {\n reject(new Error('Socket#open() can only be called once per instance'));\n\n return;\n }\n\n const resolvedOptions = (options || {}) as SocketOpenOptions;\n\n checkRequired(['forceCloseDelay', 'token', 'trackingId', 'logger'], resolvedOptions);\n\n Object.keys(resolvedOptions).forEach((key) => {\n Reflect.defineProperty(this, key, {\n enumerable: false,\n value: resolvedOptions[key],\n });\n });\n\n const WebSocket = Socket.getWebSocketConstructor() as SocketTransportConstructor;\n\n this.logger.info(`socket,${this._domain}: creating WebSocket`);\n const socket = new WebSocket(url, [], resolvedOptions);\n\n socket.binaryType = 'arraybuffer';\n socket.onmessage = this.onmessage;\n\n socket.onclose = (event) => {\n event = this._fixCloseCode(event);\n this.logger.info(`socket,${this._domain}: closed before open`, event.code, event.reason);\n switch (event.code) {\n case 1005:\n // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume\n // it's a bad websocket url. That'll trigger a device refresh; if it\n // turns out we had a bad token, the device refresh should 401 and\n // trigger a token refresh.\n return reject(new UnknownResponseCtor(event));\n case 4400:\n return reject(new BadRequestCtor(event));\n case 4401:\n return reject(new NotAuthorizedCtor(event));\n case 4403:\n return reject(new ForbiddenCtor(event));\n // case 4404:\n // return reject(new NotFound(event));\n default:\n return reject(new ConnectionErrorCtor(event));\n }\n };\n\n socket.onopen = () => {\n this.logger.info(`socket,${this._domain}: connected`);\n this._authorize(this.token)\n .then(() => {\n this.logger.info(`socket,${this._domain}: authorized`);\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn(`socket,${this._domain}: error event fired`, event);\n };\n\n sockets.set(this, socket);\n this.logger.info(`socket,${this._domain}: waiting for server`);\n });\n }\n\n /**\n * Handles incoming CloseEvents\n * @param {CloseEvent} event\n * @returns {undefined}\n */\n onclose(event: SocketCloseEvent) {\n this.logger.info(`socket,${this._domain}: closed`, event.code, event.reason);\n\n event = this._fixCloseCode(event);\n this._rejectPendingResponses(new ConnectionErrorCtor(event));\n this.emit('close', event);\n\n // Remove all listeners to (a) avoid reacting to late pongs and (b) ensure\n // we don't have a retain cycle.\n this.removeAllListeners();\n }\n\n /**\n * Handles incoming message events\n * @param {MessageEvent} event\n * @returns {undefined}\n */\n onmessage(event: SocketMessageEvent<string>) {\n try {\n const data = JSON.parse(event.data) as SocketResponse;\n const processedEvent = {data};\n\n if (data.type === 'async_event') {\n this._acknowledge(processedEvent).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed to acknowledge async event`, error);\n });\n }\n\n // Match pending request/response promises before emitting the public message event.\n // The message is still emitted afterward for any external listeners that care about it.\n this._handlePendingResponse(data);\n this.emit('message', processedEvent);\n } catch (error) {\n /* istanbul ignore next */\n this.logger.warn(`socket,${this._domain}: error while receiving WebSocket message`, error);\n }\n }\n\n /**\n * Sends a message up the socket\n * @param {mixed} data\n * @returns {Promise}\n */\n send(data: string | Record<string, unknown>) {\n return new Promise<void>((resolve, reject) => {\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n if (isObject(data)) {\n data = JSON.stringify(data);\n }\n\n const socket = sockets.get(this);\n\n if (!socket) {\n reject(new Error('INVALID_STATE_ERROR'));\n\n return;\n }\n\n socket.send(data);\n\n resolve();\n });\n }\n\n /**\n * Sends a request and resolves when the matching response arrives.\n * @param {Object} data\n * @param {Object} [options={}]\n * @param {Function} [options.matchesResponse]\n * @param {Function} [options.createError]\n * @param {Function} [options.createTimeoutError]\n * @param {Function} [options.getStatusCode]\n * @param {Function} [options.getStatusMessage]\n * @param {number} [options.timeout]\n * @returns {Promise<Object>}\n */\n sendRequest(data: SocketResponse, options: SendRequestOptions = {}) {\n if (!isObject(data)) {\n return Promise.reject(new Error('`data` is required'));\n }\n\n const request = {...data};\n const trackingId = request.trackingId || this._createTrackingId();\n const timeout = options.timeout || this.wssResponseTimeout || 10000;\n const matchesResponse =\n options.matchesResponse ||\n ((response) => response?.trackingId === trackingId && response?.type === 'response_event');\n const getStatusCode = options.getStatusCode || ((response) => response?.statusCode);\n const getStatusMessage = options.getStatusMessage || ((response) => response?.statusMessage);\n const createError =\n options.createError ||\n ((response, statusCode, statusMessage) =>\n new ConnectionErrorCtor({\n code: statusCode,\n reason: statusMessage || response?.reason || 'Socket request failed',\n }));\n const createTimeoutError =\n options.createTimeoutError ||\n (() =>\n new ConnectionErrorCtor({\n reason: 'Socket response not received before timeout',\n }));\n\n if (this._pendingResponses.has(trackingId)) {\n return Promise.reject(\n new Error(`socket request already pending for trackingId ${trackingId}`)\n );\n }\n\n request.trackingId = trackingId;\n\n return new Promise<SocketResponse>((resolve, reject) => {\n const timeoutId = safeSetTimeout(() => {\n this._clearPendingResponse(trackingId);\n reject(createTimeoutError(request));\n }, timeout);\n\n this._pendingResponses.set(trackingId, {\n request,\n matchesResponse,\n getStatusCode,\n getStatusMessage,\n createError,\n resolve: (response) => {\n this._clearPendingResponse(trackingId);\n resolve(response);\n },\n reject: (error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n },\n timeoutId,\n });\n\n this.send(request).catch((error) => {\n this._clearPendingResponse(trackingId);\n reject(error);\n });\n });\n }\n\n /**\n * Sends an acknowledgment for a specific event\n * @param {MessageEvent} event\n * @returns {Promise}\n */\n _acknowledge(event: SocketMessageEvent<SocketResponse>) {\n if (!event) {\n return Promise.reject(new Error('`event` is required'));\n }\n\n if (!has(event, 'data.eventId')) {\n return Promise.reject(new Error('`event.data.eventId` is required'));\n }\n\n // Don't try to acknowledge if socket is not in open state\n if (this.readyState !== SOCKET_READY_STATE.OPEN) {\n return Promise.resolve();\n }\n\n return this.send({\n type: MESSAGE_TYPES.EVENT_ACK,\n trackingId: event.data.trackingId || this._createTrackingId(),\n eventId: event.data.eventId,\n }).catch((error) => {\n if (error.message === 'INVALID_STATE_ERROR') {\n return Promise.resolve();\n }\n throw error;\n });\n }\n\n refresh(token: string | {toString(): string}) {\n if (!token) {\n return Promise.reject(new Error('`token` is required for Socket#refresh()'));\n }\n\n let refreshedToken;\n\n if (typeof token === 'string') {\n refreshedToken = token;\n } else if (token && typeof token.toString === 'function') {\n refreshedToken = token.toString();\n } else {\n refreshedToken = String(token);\n }\n\n return this._authorize(refreshedToken);\n }\n\n /**\n * Sends an auth message up the socket with a refreshed token.\n * @param {string} token\n * @returns {Promise}\n */\n _authorize(token: string) {\n this.logger.info(`socket,${this._domain}: authorizing`);\n\n return this.sendRequest(\n {\n type: MESSAGE_TYPES.AUTH,\n data: {\n token,\n },\n },\n {\n matchesResponse: (response, request) =>\n response?.type === 'response_event' &&\n response?.subtype === MESSAGE_TYPES.AUTH &&\n response?.trackingId === request.trackingId,\n getStatusCode: (response) => response?.statusCode,\n getStatusMessage: (response) => response?.statusMessage,\n createError: (response, statusCode, statusMessage) =>\n new NotAuthorizedCtor({\n code: statusCode,\n reason: statusMessage || 'Mobius auth failed',\n }),\n createTimeoutError: () =>\n new NotAuthorizedCtor({\n reason: 'Mobius auth response not received before timeout',\n }),\n }\n );\n }\n\n /**\n * Creates a unique tracking ID\n * @private\n * @returns {string}\n */\n _createTrackingId() {\n return `${this.trackingId}_${crypto.randomUUID()}`;\n }\n\n /**\n * Clears a pending response entry.\n * @param {string} trackingId\n * @returns {void}\n */\n _clearPendingResponse(trackingId: string) {\n const pendingResponse = this._pendingResponses.get(trackingId);\n\n if (pendingResponse?.timeoutId) {\n clearTimeout(pendingResponse.timeoutId);\n }\n\n this._pendingResponses.delete(trackingId);\n }\n\n /**\n * Rejects all pending responses with the provided error.\n * @param {Error} error\n * @returns {void}\n */\n _rejectPendingResponses(error: unknown) {\n if (!this._pendingResponses.size) {\n return;\n }\n\n Array.from(this._pendingResponses.values()).forEach((pendingResponse) => {\n pendingResponse.reject(error);\n });\n }\n\n /**\n * Handles incoming responses for pending requests.\n * @param {Object} response\n * @returns {boolean}\n */\n _handlePendingResponse(response: SocketResponse) {\n if (!response) {\n return false;\n }\n\n // Pending request correlation currently requires trackingId on the response.\n const pendingResponse = response.trackingId\n ? this._pendingResponses.get(response.trackingId)\n : undefined;\n\n if (!pendingResponse) {\n return false;\n }\n\n if (!pendingResponse.matchesResponse(response, pendingResponse.request)) {\n return false;\n }\n\n const statusCode = pendingResponse.getStatusCode(response);\n const statusMessage = pendingResponse.getStatusMessage(response);\n\n if (statusCode === 440 && response?.subtype !== MESSAGE_TYPES.AUTH) {\n if (typeof this.refreshToken === 'function') {\n Promise.resolve(this.refreshToken(response)).catch((error) => {\n this.logger.warn(`socket,${this._domain}: failed token-expiry re-auth`, error);\n });\n } else {\n this.logger.warn(\n `socket,${this._domain}: refreshToken callback is unavailable for statusCode 440`\n );\n }\n }\n\n if (statusCode === undefined) {\n pendingResponse.reject(\n pendingResponse.createError(\n response,\n statusCode,\n statusMessage || 'Socket response missing status code'\n )\n );\n } else if (statusCode >= 200 && statusCode < 300) {\n pendingResponse.resolve(response);\n } else {\n pendingResponse.reject(pendingResponse.createError(response, statusCode, statusMessage));\n }\n\n return true;\n }\n\n /**\n * Deals with the fact that some browsers drop some close codes (but not\n * close reasons).\n * @param {CloseEvent} event\n * @private\n * @returns {CloseEvent}\n */\n _fixCloseCode(event: SocketCloseEvent) {\n if (event.code === 1005 && event.reason) {\n switch (event.reason.toLowerCase()) {\n case 'replaced':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 4000;\n break;\n case 'authentication failed':\n case 'authentication did not happen within the timeout window of 30000 seconds.':\n this.logger.info(\n `socket,${this._domain}: fixing CloseEvent code for reason: `,\n event.reason\n );\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAQA,IAAAI,UAAA,GAAAJ,OAAA;AAA8D,SAAAK,QAAAC,CAAA,EAAAC,CAAA,QAAAC,CAAA,GAAAC,aAAA,CAAAH,CAAA,OAAAI,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAJ,CAAA,GAAAC,CAAA,KAAAI,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAL,CAAA,WAAAM,gCAAA,CAAAP,CAAA,EAAAC,CAAA,EAAAO,UAAA,OAAAN,CAAA,CAAAO,IAAA,CAAAC,KAAA,CAAAR,CAAA,EAAAG,CAAA,YAAAH,CAAA;AAAA,SAAAS,cAAAX,CAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAW,SAAA,CAAAC,MAAA,EAAAZ,CAAA,UAAAC,CAAA,WAAAU,SAAA,CAAAX,CAAA,IAAAW,SAAA,CAAAX,CAAA,QAAAA,CAAA,OAAAF,OAAA,CAAAe,MAAA,CAAAZ,CAAA,OAAAa,OAAA,WAAAd,CAAA,QAAAe,gBAAA,CAAAC,OAAA,EAAAjB,CAAA,EAAAC,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAiB,iCAAA,GAAAC,wBAAA,CAAAnB,CAAA,EAAAkB,iCAAA,CAAAhB,CAAA,KAAAH,OAAA,CAAAe,MAAA,CAAAZ,CAAA,GAAAa,OAAA,WAAAd,CAAA,IAAAmB,sBAAA,CAAApB,CAAA,EAAAC,CAAA,EAAAM,gCAAA,CAAAL,CAAA,EAAAD,CAAA,iBAAAD,CAAA;AAAA,SAAAqB,WAAAnB,CAAA,EAAAG,CAAA,EAAAL,CAAA,WAAAK,CAAA,OAAAiB,gBAAA,CAAAL,OAAA,EAAAZ,CAAA,OAAAkB,2BAAA,CAAAN,OAAA,EAAAf,CAAA,EAAAsB,yBAAA,KAAAC,kBAAA,CAAApB,CAAA,EAAAL,CAAA,YAAAsB,gBAAA,CAAAL,OAAA,EAAAf,CAAA,EAAAwB,WAAA,IAAArB,CAAA,CAAAK,KAAA,CAAAR,CAAA,EAAAF,CAAA;AAAA,SAAAwB,0BAAA,cAAAtB,CAAA,IAAAyB,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAL,kBAAA,CAAAE,OAAA,iCAAAzB,CAAA,aAAAsB,yBAAA,YAAAA,0BAAA,aAAAtB,CAAA,UApB9D;AACA;AACA,GAFA,CAMA;AAEA;AAyBA,IAAM6B,OAAO,GAAG,IAAAC,QAAA,CAAAf,OAAA,CAAqC,CAAC;AACtD,IAAMgB,mBAAmB,GAAGC,uBAER;AACpB,IAAMC,cAAc,GAAGC,kBAAqE;AAC5F,IAAMC,iBAAiB,GAAGC,qBAER;AAClB,IAAMC,aAAa,GAAGC,iBAAmE;AACzF,IAAMC,mBAAmB,GAAGC,uBAER;;AAEpB;AACA;AACA;AAFA,IAGqBC,MAAM,GAAAC,OAAA,CAAA3B,OAAA,0BAAA4B,aAAA;EAiBzB;AACF;AACA;AACA;EACE,SAAAF,OAAA,EAAc;IAAA,IAAAG,KAAA;IAAA,IAAAC,gBAAA,CAAA9B,OAAA,QAAA0B,MAAA;IACZG,KAAA,GAAAzB,UAAA,OAAAsB,MAAA;IAAQ,IAAA3B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IAAA,IAAA9B,gBAAA,CAAAC,OAAA,EAAA6B,KAAA;IACRA,KAAA,CAAKE,OAAO,GAAG,gBAAgB;IAC/BF,KAAA,CAAKG,iBAAiB,GAAG,IAAAC,IAAA,CAAAjC,OAAA,CAAQ,CAAC;IAClC6B,KAAA,CAAKK,SAAS,GAAGL,KAAA,CAAKK,SAAS,CAACC,IAAI,CAAAN,KAAK,CAAC;IAC1CA,KAAA,CAAKO,OAAO,GAAGP,KAAA,CAAKO,OAAO,CAACD,IAAI,CAAAN,KAAK,CAAC;IACtC;IACAA,KAAA,CAAKQ,eAAe,CAAC,EAAE,CAAC;IAAC,OAAAR,KAAA;EAC3B;;EAEA;AACF;AACA;AACA;EAHE,IAAAS,UAAA,CAAAtC,OAAA,EAAA0B,MAAA,EAAAE,aAAA;EAAA,WAAAW,aAAA,CAAAvC,OAAA,EAAA0B,MAAA;IAAAc,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEC,UAAU;IACtC;;IAEA;AACF;AACA;AACA;EAHE;IAAAF,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAqB;MACnB,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEE,cAAc;IAC1C;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEG,UAAU;IACtC;;IAEA;AACF;AACA;AACA;EAHE;IAAAJ,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAe;MACb,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEI,QAAQ;IACpC;;IAEA;AACF;AACA;AACA;EAHE;IAAAL,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEK,UAAU;IACtC;;IAEA;AACF;AACA;AACA;EAHE;IAAAN,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAU;MACR,OAAO3B,OAAO,CAAC2B,GAAG,CAAC,IAAI,CAAC,CAAEM,GAAG;IAC/B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAP,GAAA;IAAAQ,KAAA;IAWA;AACF;AACA;AACA;AACA;AACA;AACA;IACE,SAAAC,KAAKA,CAACC,OAA0C,EAAE;MAAA,IAAAC,MAAA;MAChD,OAAO,IAAAC,QAAA,CAAApD,OAAA,CAAqC,UAACqD,OAAO,EAAEC,MAAM,EAAK;QAC/D,IAAMC,MAAM,GAAGzC,OAAO,CAAC2B,GAAG,CAACU,MAAI,CAAC;QAEhC,IAAI,CAACI,MAAM,EAAE;UACX;UACAF,OAAO,CAAC,CAAC;UAET;QACF;QACA;QACAF,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACpB,OAAO,cAAW,CAAC;QAEnD,IACEwB,MAAM,CAACT,UAAU,KAAKa,6BAAkB,CAACC,OAAO,IAChDL,MAAM,CAACT,UAAU,KAAKa,6BAAkB,CAACE,MAAM,EAC/C;UACAV,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACpB,OAAO,qBAAkB,CAAC;UAC1DsB,OAAO,CAAC,CAAC;UAET;QACF;QAEA,IAAMS,YAAY,GAAGZ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEa,IAAI;QAClC,IAAMC,cAAc,GAAGd,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEe,MAAM;QAEtC,IAAMC,eAAe,GAAG,IAAAC,UAAA,CAAAnE,OAAA,EAASkD,OAAO,IAAI,CAAC,CAAC,EAAE;UAC9Ca,IAAI,EAAE,IAAI;UACVE,MAAM,EAAE;QACV,CAAC,CAAmC;QAEpC,IACEC,eAAe,CAACH,IAAI,IACpBG,eAAe,CAACH,IAAI,KAAK,IAAI,KAC5BG,eAAe,CAACH,IAAI,GAAG,IAAI,IAAIG,eAAe,CAACH,IAAI,GAAG,IAAI,CAAC,EAC5D;UACAT,MAAM,CAAC,IAAIc,KAAK,CAAC,kEAAkE,CAAC,CAAC;UAErF;QACF;QAEA,IAAMC,UAAU,GAAG,IAAAC,4BAAc,EAAC,YAAM;UACtC,IAAI;YACFnB,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACpB,OAAO,+CAA4C,CAAC;YACpFsB,OAAO,CACLF,MAAI,CAACf,OAAO,CACV0B,YAAY,GACR;cAACC,IAAI,EAAED,YAAY;cAAEG,MAAM,EAAED,cAAc,IAAI;YAAgB,CAAC,GAChE;cACED,IAAI,EAAE,IAAI;cACVE,MAAM,EAAE;YACV,CACN,CACF,CAAC;UACH,CAAC,CAAC,OAAOM,KAAK,EAAE;YACdpB,MAAI,CAACK,MAAM,CAACgB,IAAI,WAAAd,MAAA,CAAWP,MAAI,CAACpB,OAAO,2BAAwBwC,KAAK,CAAC;UACvE;QACF,CAAC,EAAEpB,MAAI,CAACsB,eAAe,CAAC;QAExBlB,MAAM,CAACnB,OAAO,GAAG,UAACsC,KAAK,EAAK;UAC1BvB,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACpB,OAAO,0BAAuB2C,KAAK,CAACX,IAAI,EAAEW,KAAK,CAACT,MAAM,CAAC;UACvFU,YAAY,CAACN,UAAU,CAAC;UACxBlB,MAAI,CAACf,OAAO,CAACsC,KAAK,CAAC;UACnBrB,OAAO,CAACqB,KAAK,CAAC;QAChB,CAAC;;QAED;QACA;QACA,IAAInB,MAAM,CAACT,UAAU,KAAKa,6BAAkB,CAACiB,UAAU,EAAE;UACvDzB,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJP,MAAI,CAACpB,OAAO,yDACxB,CAAC;UACD4C,YAAY,CAACN,UAAU,CAAC;UACxB,IAAMQ,UAA4B,GAAG;YACnCd,IAAI,EAAEG,eAAe,CAACH,IAAI;YAC1BE,MAAM,EAAEC,eAAe,CAACD;UAC1B,CAAC;UACDd,MAAI,CAACf,OAAO,CAACyC,UAAU,CAAC;UACxBxB,OAAO,CAACwB,UAAU,CAAC;UACnB,IAAI;YACFtB,MAAM,CAACN,KAAK,CAACiB,eAAe,CAACH,IAAI,EAAEG,eAAe,CAACD,MAAM,CAAC;UAC5D,CAAC,CAAC,OAAOM,KAAK,EAAE;YACdpB,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJP,MAAI,CAACpB,OAAO,6GACtBwC,KACF,CAAC;UACH;QACF,CAAC,MAAM;UACLhB,MAAM,CAACN,KAAK,CAACiB,eAAe,CAACH,IAAI,EAAEG,eAAe,CAACD,MAAM,CAAC;QAC5D;MACF,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EATE;IAAAzB,GAAA;IAAAQ,KAAA,EAUA,SAAA8B,IAAIA,CAAC/B,GAAW,EAAEG,OAA2B,EAAE;MAAA,IAAA6B,MAAA;MAC7C,IAAI;QACF,IAAI,CAAChD,OAAO,GAAG,IAAIiD,GAAG,CAACjC,GAAG,CAAC,CAACkC,QAAQ;MACtC,CAAC,CAAC,OAAAC,OAAA,EAAM;QACN,IAAI,CAACnD,OAAO,GAAGgB,GAAG;MACpB;MAEA,OAAO,IAAAK,QAAA,CAAApD,OAAA,CAAkB,UAACqD,OAAO,EAAEC,MAAM,EAAK;QAC5C;QACA,IAAI,CAACP,GAAG,EAAE;UACRO,MAAM,CAAC,IAAIc,KAAK,CAAC,mBAAmB,CAAC,CAAC;UAEtC;QACF;QAEA,IAAItD,OAAO,CAAC2B,GAAG,CAACsC,MAAI,CAAC,EAAE;UACrBzB,MAAM,CAAC,IAAIc,KAAK,CAAC,oDAAoD,CAAC,CAAC;UAEvE;QACF;QAEA,IAAMF,eAAe,GAAIhB,OAAO,IAAI,CAAC,CAAuB;QAE5D,IAAAiC,qBAAa,EAAC,CAAC,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAEjB,eAAe,CAAC;QAEpF,IAAAkB,KAAA,CAAApF,OAAA,EAAYkE,eAAe,CAAC,CAACpE,OAAO,CAAC,UAAC0C,GAAG,EAAK;UAC5C,IAAA6C,gBAAA,CAAArF,OAAA,EAAuB+E,MAAI,EAAEvC,GAAG,EAAE;YAChCjD,UAAU,EAAE,KAAK;YACjByD,KAAK,EAAEkB,eAAe,CAAC1B,GAAG;UAC5B,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAM8C,SAAS,GAAG5D,MAAM,CAAC6D,uBAAuB,CAAC,CAA+B;QAEhFR,MAAI,CAACvB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWqB,MAAI,CAAChD,OAAO,yBAAsB,CAAC;QAC9D,IAAMwB,MAAM,GAAG,IAAI+B,SAAS,CAACvC,GAAG,EAAE,EAAE,EAAEmB,eAAe,CAAC;QAEtDX,MAAM,CAACb,UAAU,GAAG,aAAa;QACjCa,MAAM,CAACrB,SAAS,GAAG6C,MAAI,CAAC7C,SAAS;QAEjCqB,MAAM,CAACnB,OAAO,GAAG,UAACsC,KAAK,EAAK;UAC1BA,KAAK,GAAGK,MAAI,CAACS,aAAa,CAACd,KAAK,CAAC;UACjCK,MAAI,CAACvB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWqB,MAAI,CAAChD,OAAO,2BAAwB2C,KAAK,CAACX,IAAI,EAAEW,KAAK,CAACT,MAAM,CAAC;UACxF,QAAQS,KAAK,CAACX,IAAI;YAChB,KAAK,IAAI;cACP;cACA;cACA;cACA;cACA,OAAOT,MAAM,CAAC,IAAItC,mBAAmB,CAAC0D,KAAK,CAAC,CAAC;YAC/C,KAAK,IAAI;cACP,OAAOpB,MAAM,CAAC,IAAIpC,cAAc,CAACwD,KAAK,CAAC,CAAC;YAC1C,KAAK,IAAI;cACP,OAAOpB,MAAM,CAAC,IAAIlC,iBAAiB,CAACsD,KAAK,CAAC,CAAC;YAC7C,KAAK,IAAI;cACP,OAAOpB,MAAM,CAAC,IAAIhC,aAAa,CAACoD,KAAK,CAAC,CAAC;YACzC;YACA;YACA;cACE,OAAOpB,MAAM,CAAC,IAAI9B,mBAAmB,CAACkD,KAAK,CAAC,CAAC;UACjD;QACF,CAAC;QAEDnB,MAAM,CAACkC,MAAM,GAAG,YAAM;UACpBV,MAAI,CAACvB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWqB,MAAI,CAAChD,OAAO,gBAAa,CAAC;UACrDgD,MAAI,CAACW,UAAU,CAACX,MAAI,CAACY,KAAK,CAAC,CACxBC,IAAI,CAAC,YAAM;YACVb,MAAI,CAACvB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWqB,MAAI,CAAChD,OAAO,iBAAc,CAAC;YACtDwB,MAAM,CAACnB,OAAO,GAAG2C,MAAI,CAAC3C,OAAO;YAC7BiB,OAAO,CAAC,CAAC;UACX,CAAC,CAAC,CACDwC,KAAK,CAACvC,MAAM,CAAC;QAClB,CAAC;QAEDC,MAAM,CAACuC,OAAO,GAAG,UAACpB,KAAK,EAAK;UAC1BK,MAAI,CAACvB,MAAM,CAACgB,IAAI,WAAAd,MAAA,CAAWqB,MAAI,CAAChD,OAAO,0BAAuB2C,KAAK,CAAC;QACtE,CAAC;QAED5D,OAAO,CAACiF,GAAG,CAAChB,MAAI,EAAExB,MAAM,CAAC;QACzBwB,MAAI,CAACvB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWqB,MAAI,CAAChD,OAAO,yBAAsB,CAAC;MAChE,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAS,GAAA;IAAAQ,KAAA,EAKA,SAAAZ,OAAOA,CAACsC,KAAuB,EAAE;MAC/B,IAAI,CAAClB,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAW,IAAI,CAAC3B,OAAO,eAAY2C,KAAK,CAACX,IAAI,EAAEW,KAAK,CAACT,MAAM,CAAC;MAE5ES,KAAK,GAAG,IAAI,CAACc,aAAa,CAACd,KAAK,CAAC;MACjC,IAAI,CAACsB,uBAAuB,CAAC,IAAIxE,mBAAmB,CAACkD,KAAK,CAAC,CAAC;MAC5D,IAAI,CAACuB,IAAI,CAAC,OAAO,EAAEvB,KAAK,CAAC;;MAEzB;MACA;MACA,IAAI,CAACwB,kBAAkB,CAAC,CAAC;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA1D,GAAA;IAAAQ,KAAA,EAKA,SAAAd,SAASA,CAACwC,KAAiC,EAAE;MAAA,IAAAyB,MAAA;MAC3C,IAAI;QACF,IAAMC,IAAI,GAAGC,IAAI,CAACC,KAAK,CAAC5B,KAAK,CAAC0B,IAAI,CAAmB;QACrD,IAAMG,cAAc,GAAG;UAACH,IAAI,EAAJA;QAAI,CAAC;QAE7B,IAAIA,IAAI,CAACI,IAAI,KAAK,aAAa,EAAE;UAC/B,IAAI,CAACC,YAAY,CAACF,cAAc,CAAC,CAACV,KAAK,CAAC,UAACtB,KAAK,EAAK;YACjD4B,MAAI,CAAC3C,MAAM,CAACgB,IAAI,WAAAd,MAAA,CAAWyC,MAAI,CAACpE,OAAO,0CAAuCwC,KAAK,CAAC;UACtF,CAAC,CAAC;QACJ;;QAEA;QACA;QACA,IAAI,CAACmC,sBAAsB,CAACN,IAAI,CAAC;QACjC,IAAI,CAACH,IAAI,CAAC,SAAS,EAAEM,cAAc,CAAC;MACtC,CAAC,CAAC,OAAOhC,KAAK,EAAE;QACd;QACA,IAAI,CAACf,MAAM,CAACgB,IAAI,WAAAd,MAAA,CAAW,IAAI,CAAC3B,OAAO,gDAA6CwC,KAAK,CAAC;MAC5F;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA/B,GAAA;IAAAQ,KAAA,EAKA,SAAA2D,IAAIA,CAACP,IAAsC,EAAE;MAAA,IAAAQ,MAAA;MAC3C,OAAO,IAAAxD,QAAA,CAAApD,OAAA,CAAkB,UAACqD,OAAO,EAAEC,MAAM,EAAK;QAC5C,IAAIsD,MAAI,CAAC9D,UAAU,KAAKa,6BAAkB,CAACkD,IAAI,EAAE;UAC/CvD,MAAM,CAAC,IAAIc,KAAK,CAAC,qBAAqB,CAAC,CAAC;UAExC;QACF;QAEA,IAAI,IAAA0C,UAAA,CAAA9G,OAAA,EAASoG,IAAI,CAAC,EAAE;UAClBA,IAAI,GAAG,IAAAW,UAAA,CAAA/G,OAAA,EAAeoG,IAAI,CAAC;QAC7B;QAEA,IAAM7C,MAAM,GAAGzC,OAAO,CAAC2B,GAAG,CAACmE,MAAI,CAAC;QAEhC,IAAI,CAACrD,MAAM,EAAE;UACXD,MAAM,CAAC,IAAIc,KAAK,CAAC,qBAAqB,CAAC,CAAC;UAExC;QACF;QAEAb,MAAM,CAACoD,IAAI,CAACP,IAAI,CAAC;QAEjB/C,OAAO,CAAC,CAAC;MACX,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAXE;IAAAb,GAAA;IAAAQ,KAAA,EAYA,SAAAgE,WAAWA,CAACZ,IAAoB,EAAoC;MAAA,IAAAa,MAAA;MAAA,IAAlC/D,OAA2B,GAAAvD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAuH,SAAA,GAAAvH,SAAA,MAAG,CAAC,CAAC;MAChE,IAAI,CAAC,IAAAmH,UAAA,CAAA9G,OAAA,EAASoG,IAAI,CAAC,EAAE;QACnB,OAAOhD,QAAA,CAAApD,OAAA,CAAQsD,MAAM,CAAC,IAAIc,KAAK,CAAC,oBAAoB,CAAC,CAAC;MACxD;MAEA,IAAM+C,OAAO,GAAAzH,aAAA,KAAO0G,IAAI,CAAC;MACzB,IAAMgB,UAAU,GAAGD,OAAO,CAACC,UAAU,IAAI,IAAI,CAACC,iBAAiB,CAAC,CAAC;MACjE,IAAMC,OAAO,GAAGpE,OAAO,CAACoE,OAAO,IAAI,IAAI,CAACC,kBAAkB,IAAI,KAAK;MACnE,IAAMC,eAAe,GACnBtE,OAAO,CAACsE,eAAe,IACtB,UAACC,QAAQ;QAAA,OAAK,CAAAA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEL,UAAU,MAAKA,UAAU,IAAI,CAAAK,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEjB,IAAI,MAAK,gBAAgB;MAAA,CAAC;MAC5F,IAAMkB,aAAa,GAAGxE,OAAO,CAACwE,aAAa,IAAK,UAACD,QAAQ;QAAA,OAAKA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEE,UAAU;MAAA,CAAC;MACnF,IAAMC,gBAAgB,GAAG1E,OAAO,CAAC0E,gBAAgB,IAAK,UAACH,QAAQ;QAAA,OAAKA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEI,aAAa;MAAA,CAAC;MAC5F,IAAMC,WAAW,GACf5E,OAAO,CAAC4E,WAAW,IAClB,UAACL,QAAQ,EAAEE,UAAU,EAAEE,aAAa;QAAA,OACnC,IAAIrG,mBAAmB,CAAC;UACtBuC,IAAI,EAAE4D,UAAU;UAChB1D,MAAM,EAAE4D,aAAa,KAAIJ,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAExD,MAAM,KAAI;QAC/C,CAAC,CAAC;MAAA,CAAC;MACP,IAAM8D,kBAAkB,GACtB7E,OAAO,CAAC6E,kBAAkB,IACzB;QAAA,OACC,IAAIvG,mBAAmB,CAAC;UACtByC,MAAM,EAAE;QACV,CAAC,CAAC;MAAA,CAAC;MAEP,IAAI,IAAI,CAACjC,iBAAiB,CAACgG,GAAG,CAACZ,UAAU,CAAC,EAAE;QAC1C,OAAOhE,QAAA,CAAApD,OAAA,CAAQsD,MAAM,CACnB,IAAIc,KAAK,kDAAAV,MAAA,CAAkD0D,UAAU,CAAE,CACzE,CAAC;MACH;MAEAD,OAAO,CAACC,UAAU,GAAGA,UAAU;MAE/B,OAAO,IAAAhE,QAAA,CAAApD,OAAA,CAA4B,UAACqD,QAAO,EAAEC,OAAM,EAAK;QACtD,IAAM2E,SAAS,GAAG,IAAA3D,4BAAc,EAAC,YAAM;UACrC2C,MAAI,CAACiB,qBAAqB,CAACd,UAAU,CAAC;UACtC9D,OAAM,CAACyE,kBAAkB,CAACZ,OAAO,CAAC,CAAC;QACrC,CAAC,EAAEG,OAAO,CAAC;QAEXL,MAAI,CAACjF,iBAAiB,CAAC+D,GAAG,CAACqB,UAAU,EAAE;UACrCD,OAAO,EAAPA,OAAO;UACPK,eAAe,EAAfA,eAAe;UACfE,aAAa,EAAbA,aAAa;UACbE,gBAAgB,EAAhBA,gBAAgB;UAChBE,WAAW,EAAXA,WAAW;UACXzE,OAAO,EAAE,SAATA,OAAOA,CAAGoE,QAAQ,EAAK;YACrBR,MAAI,CAACiB,qBAAqB,CAACd,UAAU,CAAC;YACtC/D,QAAO,CAACoE,QAAQ,CAAC;UACnB,CAAC;UACDnE,MAAM,EAAE,SAARA,MAAMA,CAAGiB,KAAK,EAAK;YACjB0C,MAAI,CAACiB,qBAAqB,CAACd,UAAU,CAAC;YACtC9D,OAAM,CAACiB,KAAK,CAAC;UACf,CAAC;UACD0D,SAAS,EAATA;QACF,CAAC,CAAC;QAEFhB,MAAI,CAACN,IAAI,CAACQ,OAAO,CAAC,CAACtB,KAAK,CAAC,UAACtB,KAAK,EAAK;UAClC0C,MAAI,CAACiB,qBAAqB,CAACd,UAAU,CAAC;UACtC9D,OAAM,CAACiB,KAAK,CAAC;QACf,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA/B,GAAA;IAAAQ,KAAA,EAKA,SAAAyD,YAAYA,CAAC/B,KAAyC,EAAE;MACtD,IAAI,CAACA,KAAK,EAAE;QACV,OAAOtB,QAAA,CAAApD,OAAA,CAAQsD,MAAM,CAAC,IAAIc,KAAK,CAAC,qBAAqB,CAAC,CAAC;MACzD;MAEA,IAAI,CAAC,IAAA+D,KAAA,CAAAnI,OAAA,EAAI0E,KAAK,EAAE,cAAc,CAAC,EAAE;QAC/B,OAAOtB,QAAA,CAAApD,OAAA,CAAQsD,MAAM,CAAC,IAAIc,KAAK,CAAC,kCAAkC,CAAC,CAAC;MACtE;;MAEA;MACA,IAAI,IAAI,CAACtB,UAAU,KAAKa,6BAAkB,CAACkD,IAAI,EAAE;QAC/C,OAAOzD,QAAA,CAAApD,OAAA,CAAQqD,OAAO,CAAC,CAAC;MAC1B;MAEA,OAAO,IAAI,CAACsD,IAAI,CAAC;QACfH,IAAI,EAAE4B,wBAAa,CAACC,SAAS;QAC7BjB,UAAU,EAAE1C,KAAK,CAAC0B,IAAI,CAACgB,UAAU,IAAI,IAAI,CAACC,iBAAiB,CAAC,CAAC;QAC7DiB,OAAO,EAAE5D,KAAK,CAAC0B,IAAI,CAACkC;MACtB,CAAC,CAAC,CAACzC,KAAK,CAAC,UAACtB,KAAK,EAAK;QAClB,IAAIA,KAAK,CAACgE,OAAO,KAAK,qBAAqB,EAAE;UAC3C,OAAOnF,QAAA,CAAApD,OAAA,CAAQqD,OAAO,CAAC,CAAC;QAC1B;QACA,MAAMkB,KAAK;MACb,CAAC,CAAC;IACJ;EAAC;IAAA/B,GAAA;IAAAQ,KAAA,EAED,SAAAwF,OAAOA,CAAC7C,KAAoC,EAAE;MAC5C,IAAI,CAACA,KAAK,EAAE;QACV,OAAOvC,QAAA,CAAApD,OAAA,CAAQsD,MAAM,CAAC,IAAIc,KAAK,CAAC,0CAA0C,CAAC,CAAC;MAC9E;MAEA,IAAIqE,cAAc;MAElB,IAAI,OAAO9C,KAAK,KAAK,QAAQ,EAAE;QAC7B8C,cAAc,GAAG9C,KAAK;MACxB,CAAC,MAAM,IAAIA,KAAK,IAAI,OAAOA,KAAK,CAAC+C,QAAQ,KAAK,UAAU,EAAE;QACxDD,cAAc,GAAG9C,KAAK,CAAC+C,QAAQ,CAAC,CAAC;MACnC,CAAC,MAAM;QACLD,cAAc,GAAGE,MAAM,CAAChD,KAAK,CAAC;MAChC;MAEA,OAAO,IAAI,CAACD,UAAU,CAAC+C,cAAc,CAAC;IACxC;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAjG,GAAA;IAAAQ,KAAA,EAKA,SAAA0C,UAAUA,CAACC,KAAa,EAAE;MACxB,IAAI,CAACnC,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAW,IAAI,CAAC3B,OAAO,kBAAe,CAAC;MAEvD,OAAO,IAAI,CAACiF,WAAW,CACrB;QACER,IAAI,EAAE4B,wBAAa,CAACQ,IAAI;QACxBxC,IAAI,EAAE;UACJT,KAAK,EAALA;QACF;MACF,CAAC,EACD;QACE6B,eAAe,EAAE,SAAjBA,eAAeA,CAAGC,QAAQ,EAAEN,OAAO;UAAA,OACjC,CAAAM,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEjB,IAAI,MAAK,gBAAgB,IACnC,CAAAiB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoB,OAAO,MAAKT,wBAAa,CAACQ,IAAI,IACxC,CAAAnB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEL,UAAU,MAAKD,OAAO,CAACC,UAAU;QAAA;QAC7CM,aAAa,EAAE,SAAfA,aAAaA,CAAGD,QAAQ;UAAA,OAAKA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEE,UAAU;QAAA;QACjDC,gBAAgB,EAAE,SAAlBA,gBAAgBA,CAAGH,QAAQ;UAAA,OAAKA,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEI,aAAa;QAAA;QACvDC,WAAW,EAAE,SAAbA,WAAWA,CAAGL,QAAQ,EAAEE,UAAU,EAAEE,aAAa;UAAA,OAC/C,IAAIzG,iBAAiB,CAAC;YACpB2C,IAAI,EAAE4D,UAAU;YAChB1D,MAAM,EAAE4D,aAAa,IAAI;UAC3B,CAAC,CAAC;QAAA;QACJE,kBAAkB,EAAE,SAApBA,kBAAkBA,CAAA;UAAA,OAChB,IAAI3G,iBAAiB,CAAC;YACpB6C,MAAM,EAAE;UACV,CAAC,CAAC;QAAA;MACN,CACF,CAAC;IACH;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzB,GAAA;IAAAQ,KAAA,EAKA,SAAAqE,iBAAiBA,CAAA,EAAG;MAClB,UAAA3D,MAAA,CAAU,IAAI,CAAC0D,UAAU,OAAA1D,MAAA,CAAIoF,MAAM,CAACC,UAAU,CAAC,CAAC;IAClD;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAvG,GAAA;IAAAQ,KAAA,EAKA,SAAAkF,qBAAqBA,CAACd,UAAkB,EAAE;MACxC,IAAM4B,eAAe,GAAG,IAAI,CAAChH,iBAAiB,CAACS,GAAG,CAAC2E,UAAU,CAAC;MAE9D,IAAI4B,eAAe,aAAfA,eAAe,eAAfA,eAAe,CAAEf,SAAS,EAAE;QAC9BtD,YAAY,CAACqE,eAAe,CAACf,SAAS,CAAC;MACzC;MAEA,IAAI,CAACjG,iBAAiB,CAACiH,MAAM,CAAC7B,UAAU,CAAC;IAC3C;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA5E,GAAA;IAAAQ,KAAA,EAKA,SAAAgD,uBAAuBA,CAACzB,KAAc,EAAE;MACtC,IAAI,CAAC,IAAI,CAACvC,iBAAiB,CAACkH,IAAI,EAAE;QAChC;MACF;MAEA,IAAAC,KAAA,CAAAnJ,OAAA,EAAW,IAAI,CAACgC,iBAAiB,CAACoH,MAAM,CAAC,CAAC,CAAC,CAACtJ,OAAO,CAAC,UAACkJ,eAAe,EAAK;QACvEA,eAAe,CAAC1F,MAAM,CAACiB,KAAK,CAAC;MAC/B,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA/B,GAAA;IAAAQ,KAAA,EAKA,SAAA0D,sBAAsBA,CAACe,QAAwB,EAAE;MAAA,IAAA4B,MAAA;MAC/C,IAAI,CAAC5B,QAAQ,EAAE;QACb,OAAO,KAAK;MACd;;MAEA;MACA,IAAMuB,eAAe,GAAGvB,QAAQ,CAACL,UAAU,GACvC,IAAI,CAACpF,iBAAiB,CAACS,GAAG,CAACgF,QAAQ,CAACL,UAAU,CAAC,GAC/CF,SAAS;MAEb,IAAI,CAAC8B,eAAe,EAAE;QACpB,OAAO,KAAK;MACd;MAEA,IAAI,CAACA,eAAe,CAACxB,eAAe,CAACC,QAAQ,EAAEuB,eAAe,CAAC7B,OAAO,CAAC,EAAE;QACvE,OAAO,KAAK;MACd;MAEA,IAAMQ,UAAU,GAAGqB,eAAe,CAACtB,aAAa,CAACD,QAAQ,CAAC;MAC1D,IAAMI,aAAa,GAAGmB,eAAe,CAACpB,gBAAgB,CAACH,QAAQ,CAAC;MAEhE,IAAIE,UAAU,KAAK,GAAG,IAAI,CAAAF,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEoB,OAAO,MAAKT,wBAAa,CAACQ,IAAI,EAAE;QAClE,IAAI,OAAO,IAAI,CAACU,YAAY,KAAK,UAAU,EAAE;UAC3ClG,QAAA,CAAApD,OAAA,CAAQqD,OAAO,CAAC,IAAI,CAACiG,YAAY,CAAC7B,QAAQ,CAAC,CAAC,CAAC5B,KAAK,CAAC,UAACtB,KAAK,EAAK;YAC5D8E,MAAI,CAAC7F,MAAM,CAACgB,IAAI,WAAAd,MAAA,CAAW2F,MAAI,CAACtH,OAAO,oCAAiCwC,KAAK,CAAC;UAChF,CAAC,CAAC;QACJ,CAAC,MAAM;UACL,IAAI,CAACf,MAAM,CAACgB,IAAI,WAAAd,MAAA,CACJ,IAAI,CAAC3B,OAAO,8DACxB,CAAC;QACH;MACF;MAEA,IAAI4F,UAAU,KAAKT,SAAS,EAAE;QAC5B8B,eAAe,CAAC1F,MAAM,CACpB0F,eAAe,CAAClB,WAAW,CACzBL,QAAQ,EACRE,UAAU,EACVE,aAAa,IAAI,qCACnB,CACF,CAAC;MACH,CAAC,MAAM,IAAIF,UAAU,IAAI,GAAG,IAAIA,UAAU,GAAG,GAAG,EAAE;QAChDqB,eAAe,CAAC3F,OAAO,CAACoE,QAAQ,CAAC;MACnC,CAAC,MAAM;QACLuB,eAAe,CAAC1F,MAAM,CAAC0F,eAAe,CAAClB,WAAW,CAACL,QAAQ,EAAEE,UAAU,EAAEE,aAAa,CAAC,CAAC;MAC1F;MAEA,OAAO,IAAI;IACb;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAArF,GAAA;IAAAQ,KAAA,EAOA,SAAAwC,aAAaA,CAACd,KAAuB,EAAE;MACrC,IAAIA,KAAK,CAACX,IAAI,KAAK,IAAI,IAAIW,KAAK,CAACT,MAAM,EAAE;QACvC,QAAQS,KAAK,CAACT,MAAM,CAACsF,WAAW,CAAC,CAAC;UAChC,KAAK,UAAU;YACb,IAAI,CAAC/F,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJ,IAAI,CAAC3B,OAAO,4CACtB2C,KAAK,CAACT,MACR,CAAC;YACDS,KAAK,CAACX,IAAI,GAAG,IAAI;YACjB;UACF,KAAK,uBAAuB;UAC5B,KAAK,2EAA2E;YAC9E,IAAI,CAACP,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJ,IAAI,CAAC3B,OAAO,4CACtB2C,KAAK,CAACT,MACR,CAAC;YACDS,KAAK,CAACX,IAAI,GAAG,IAAI;YACjB;UACF;UACA;QACF;MACF;MAEA,OAAOW,KAAK;IACd;EAAC;IAAAlC,GAAA;IAAAQ,KAAA,EA/iBD,SAAOuC,uBAAuBA,CAAA,EAAY;MACxC,MAAM,IAAInB,KAAK,CACb,4FACF,CAAC;IACH;EAAC;AAAA,EAxFiCoF,oBAAY","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_ws","_interopRequireDefault","require","_socketBase","Socket","getWebSocketConstructor","WS","_default","exports","default"],"sources":["socket.js"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport WS from 'ws';\n\nimport Socket from './socket-base';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n return WS;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAIA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAMAE,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,OAAOC,WAAE;AACX,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaL,mBAAM","ignoreList":[]}
1
+ {"version":3,"names":["_ws","_interopRequireDefault","require","_socketBase","Socket","getWebSocketConstructor","WS","_default","exports","default"],"sources":["socket.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\nimport WS from 'ws';\n\nimport Socket from './socket-base';\nimport type {SocketTransportConstructor} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n return WS as unknown as SocketTransportConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAIA,IAAAA,GAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AANA;AACA;AACA;;AAOAE,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,OAAOC,WAAE;AACX,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaL,mBAAM","ignoreList":[]}
@@ -16,21 +16,11 @@ var _socketBase = _interopRequireDefault(require("./socket-base"));
16
16
  /* eslint-env browser */
17
17
 
18
18
  _socketBase.default.getWebSocketConstructor = function getWebSocketConstructor() {
19
- // Grabed from https://github.com/heineiuo/isomorphic-ws/blob/9b977394ac875638c045fd9cf774ed418484b394/browser.js
20
- var ws;
21
19
  if (typeof WebSocket !== 'undefined') {
22
- ws = WebSocket;
23
- } else if (typeof MozWebSocket !== 'undefined') {
24
- // eslint-disable-next-line no-undef
25
- ws = MozWebSocket;
26
- } else if (typeof global !== 'undefined') {
27
- ws = global.WebSocket || global.MozWebSocket;
28
- } else if (typeof window !== 'undefined') {
29
- ws = window.WebSocket || window.MozWebSocket;
30
- } else if (typeof self !== 'undefined') {
31
- ws = self.WebSocket || self.MozWebSocket;
20
+ return WebSocket;
32
21
  }
33
- return ws;
22
+ var scope = typeof globalThis !== 'undefined' ? globalThis : undefined;
23
+ return (scope === null || scope === void 0 ? void 0 : scope.WebSocket) || (scope === null || scope === void 0 ? void 0 : scope.MozWebSocket);
34
24
  };
35
25
  var _default = exports.default = _socketBase.default;
36
26
  //# sourceMappingURL=socket.shim.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_socketBase","_interopRequireDefault","require","Socket","getWebSocketConstructor","ws","WebSocket","MozWebSocket","global","window","self","_default","exports","default"],"sources":["socket.shim.js"],"sourcesContent":["/* eslint-disable no-restricted-globals */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport Socket from './socket-base';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n // Grabed from https://github.com/heineiuo/isomorphic-ws/blob/9b977394ac875638c045fd9cf774ed418484b394/browser.js\n let ws;\n\n if (typeof WebSocket !== 'undefined') {\n ws = WebSocket;\n } else if (typeof MozWebSocket !== 'undefined') {\n // eslint-disable-next-line no-undef\n ws = MozWebSocket;\n } else if (typeof global !== 'undefined') {\n ws = global.WebSocket || global.MozWebSocket;\n } else if (typeof window !== 'undefined') {\n ws = window.WebSocket || window.MozWebSocket;\n } else if (typeof self !== 'undefined') {\n ws = self.WebSocket || self.MozWebSocket;\n }\n\n return ws;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAQA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AARA;;AAEA;AACA;AACA;;AAEA;;AAIAC,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE;EACA,IAAIC,EAAE;EAEN,IAAI,OAAOC,SAAS,KAAK,WAAW,EAAE;IACpCD,EAAE,GAAGC,SAAS;EAChB,CAAC,MAAM,IAAI,OAAOC,YAAY,KAAK,WAAW,EAAE;IAC9C;IACAF,EAAE,GAAGE,YAAY;EACnB,CAAC,MAAM,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE;IACxCH,EAAE,GAAGG,MAAM,CAACF,SAAS,IAAIE,MAAM,CAACD,YAAY;EAC9C,CAAC,MAAM,IAAI,OAAOE,MAAM,KAAK,WAAW,EAAE;IACxCJ,EAAE,GAAGI,MAAM,CAACH,SAAS,IAAIG,MAAM,CAACF,YAAY;EAC9C,CAAC,MAAM,IAAI,OAAOG,IAAI,KAAK,WAAW,EAAE;IACtCL,EAAE,GAAGK,IAAI,CAACJ,SAAS,IAAII,IAAI,CAACH,YAAY;EAC1C;EAEA,OAAOF,EAAE;AACX,CAAC;AAAC,IAAAM,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaV,mBAAM","ignoreList":[]}
1
+ {"version":3,"names":["_socketBase","_interopRequireDefault","require","Socket","getWebSocketConstructor","WebSocket","scope","globalThis","undefined","MozWebSocket","_default","exports","default"],"sources":["socket.shim.ts"],"sourcesContent":["/* eslint-disable no-restricted-globals */\n\n/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n\n/* eslint-env browser */\n\nimport Socket from './socket-base';\nimport type {BrowserWebSocketConstructor, ShimGlobalScope} from './types';\n\nSocket.getWebSocketConstructor = function getWebSocketConstructor() {\n if (typeof WebSocket !== 'undefined') {\n return WebSocket;\n }\n\n const scope = typeof globalThis !== 'undefined' ? (globalThis as ShimGlobalScope) : undefined;\n\n return (scope?.WebSocket || scope?.MozWebSocket) as BrowserWebSocketConstructor;\n};\n\nexport default Socket;\n"],"mappings":";;;;;;;;AAQA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AARA;;AAEA;AACA;AACA;;AAEA;;AAKAC,mBAAM,CAACC,uBAAuB,GAAG,SAASA,uBAAuBA,CAAA,EAAG;EAClE,IAAI,OAAOC,SAAS,KAAK,WAAW,EAAE;IACpC,OAAOA,SAAS;EAClB;EAEA,IAAMC,KAAK,GAAG,OAAOC,UAAU,KAAK,WAAW,GAAIA,UAAU,GAAuBC,SAAS;EAE7F,OAAQ,CAAAF,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAED,SAAS,MAAIC,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEG,YAAY;AACjD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaT,mBAAM","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type BrowserWebSocketConstructor = typeof WebSocket;\n\nexport type ShimGlobalScope = {\n MozWebSocket?: BrowserWebSocketConstructor;\n WebSocket?: BrowserWebSocketConstructor;\n};\n\nexport type SocketCloseEvent = {\n code?: number;\n reason?: string;\n};\n\nexport type SocketMessageEvent<T = unknown> = {\n data: T;\n};\n\nexport type SocketLogger = {\n info: (...args: unknown[]) => void;\n warn: (...args: unknown[]) => void;\n};\n\nexport type SocketResponse = {\n trackingId?: string;\n type?: string;\n subtype?: string;\n statusCode?: number;\n statusMessage?: string;\n reason?: string;\n eventId?: string;\n [key: string]: unknown;\n};\n\nexport type PendingResponseEntry = {\n request: SocketResponse;\n matchesResponse: (response: SocketResponse, request: SocketResponse) => boolean;\n getStatusCode: (response: SocketResponse) => number | undefined;\n getStatusMessage: (response: SocketResponse) => string | undefined;\n createError: (response: SocketResponse, statusCode?: number, statusMessage?: string) => unknown;\n resolve: (response: SocketResponse) => void;\n reject: (error: unknown) => void;\n timeoutId: ReturnType<typeof setTimeout>;\n};\n\nexport type SendRequestOptions = {\n matchesResponse?: (response: SocketResponse, request: SocketResponse) => boolean;\n createError?: (response: SocketResponse, statusCode?: number, statusMessage?: string) => unknown;\n createTimeoutError?: (request: SocketResponse) => unknown;\n getStatusCode?: (response: SocketResponse) => number | undefined;\n getStatusMessage?: (response: SocketResponse) => string | undefined;\n timeout?: number;\n};\n\nexport type SocketOpenOptions = {\n forceCloseDelay: number;\n token: string;\n trackingId: string;\n logger: SocketLogger;\n wssResponseTimeout?: number;\n refreshToken?: (response: SocketResponse) => unknown;\n [key: string]: unknown;\n};\n\nexport type SocketTransport = {\n binaryType: string;\n bufferedAmount: number;\n extensions: string;\n protocol: string;\n readyState: number;\n url: string;\n onmessage: ((event: SocketMessageEvent<string>) => void) | null;\n onclose: ((event: SocketCloseEvent) => void) | null;\n onopen: (() => void) | null;\n onerror: ((event: unknown) => void) | null;\n close: (code?: number, reason?: string) => void;\n send: (data: string) => void;\n};\n\nexport type SocketTransportConstructor = new (...args: unknown[]) => SocketTransport;\n"],"mappings":"","ignoreList":[]}