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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,13 +26,15 @@ var _lodash = require("lodash");
26
26
  var _uuid = _interopRequireDefault(require("uuid"));
27
27
  var _errors = require("../errors");
28
28
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
29
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
29
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /*!
30
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
31
+ */
30
32
  var sockets = new _weakMap.default();
31
33
 
32
34
  /**
33
35
  * Generalized socket abstraction
34
36
  */
35
- var Socket = /*#__PURE__*/function (_EventEmitter) {
37
+ var Socket = exports.default = /*#__PURE__*/function (_EventEmitter) {
36
38
  (0, _inherits2.default)(Socket, _EventEmitter);
37
39
  var _super = _createSuper(Socket);
38
40
  /**
@@ -43,6 +45,7 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
43
45
  var _this;
44
46
  (0, _classCallCheck2.default)(this, Socket);
45
47
  _this = _super.call(this);
48
+ _this._domain = 'unknown-domain';
46
49
  _this.onmessage = _this.onmessage.bind((0, _assertThisInitialized2.default)(_this));
47
50
  _this.onclose = _this.onclose.bind((0, _assertThisInitialized2.default)(_this));
48
51
  return _this;
@@ -133,9 +136,9 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
133
136
  return;
134
137
  }
135
138
  // logger is defined once open is called
136
- _this2.logger.info('socket: closing');
139
+ _this2.logger.info("socket,".concat(_this2._domain, ": closing"));
137
140
  if (socket.readyState === 2 || socket.readyState === 3) {
138
- _this2.logger.info('socket: already closed');
141
+ _this2.logger.info("socket,".concat(_this2._domain, ": already closed"));
139
142
  resolve();
140
143
  return;
141
144
  }
@@ -150,17 +153,17 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
150
153
  });
151
154
  var closeTimer = (0, _commonTimers.safeSetTimeout)(function () {
152
155
  try {
153
- _this2.logger.info('socket: no close event received, forcing closure');
156
+ _this2.logger.info("socket,".concat(_this2._domain, ": no close event received, forcing closure"));
154
157
  resolve(_this2.onclose({
155
158
  code: 1000,
156
159
  reason: 'Done (forced)'
157
160
  }));
158
161
  } catch (error) {
159
- _this2.logger.warn('socket: force-close failed', error);
162
+ _this2.logger.warn("socket,".concat(_this2._domain, ": force-close failed"), error);
160
163
  }
161
164
  }, _this2.forceCloseDelay);
162
165
  socket.onclose = function (event) {
163
- _this2.logger.info('socket: close event fired', event.code, event.reason);
166
+ _this2.logger.info("socket,".concat(_this2._domain, ": close event fired"), event.code, event.reason);
164
167
  clearTimeout(closeTimer);
165
168
  _this2.onclose(event);
166
169
  resolve(event);
@@ -186,6 +189,11 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
186
189
  key: "open",
187
190
  value: function open(url, options) {
188
191
  var _this3 = this;
192
+ try {
193
+ this._domain = new URL(url).hostname;
194
+ } catch (_unused) {
195
+ this._domain = url;
196
+ }
189
197
  return new _promise.default(function (resolve, reject) {
190
198
  /* eslint complexity: [0] */
191
199
  if (!url) {
@@ -205,13 +213,13 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
205
213
  });
206
214
  });
207
215
  var WebSocket = Socket.getWebSocketConstructor();
208
- _this3.logger.info('socket: creating WebSocket');
216
+ _this3.logger.info("socket,".concat(_this3._domain, ": creating WebSocket"));
209
217
  var socket = new WebSocket(url, [], options);
210
218
  socket.binaryType = 'arraybuffer';
211
219
  socket.onmessage = _this3.onmessage;
212
220
  socket.onclose = function (event) {
213
221
  event = _this3._fixCloseCode(event);
214
- _this3.logger.info('socket: closed before open', event.code, event.reason);
222
+ _this3.logger.info("socket,".concat(_this3._domain, ": closed before open"), event.code, event.reason);
215
223
  switch (event.code) {
216
224
  case 1005:
217
225
  // IE 11 doesn't seem to allow 4XXX codes, so if we get a 1005, assume
@@ -232,18 +240,18 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
232
240
  }
233
241
  };
234
242
  socket.onopen = function () {
235
- _this3.logger.info('socket: connected');
243
+ _this3.logger.info("socket,".concat(_this3._domain, ": connected"));
236
244
  _this3._authorize().then(function () {
237
- _this3.logger.info('socket: authorized');
245
+ _this3.logger.info("socket,".concat(_this3._domain, ": authorized"));
238
246
  socket.onclose = _this3.onclose;
239
247
  resolve();
240
248
  }).catch(reject);
241
249
  };
242
250
  socket.onerror = function (event) {
243
- _this3.logger.warn('socket: error event fired', event);
251
+ _this3.logger.warn("socket,".concat(_this3._domain, ": error event fired"), event);
244
252
  };
245
253
  sockets.set(_this3, socket);
246
- _this3.logger.info('socket: waiting for server');
254
+ _this3.logger.info("socket,".concat(_this3._domain, ": waiting for server"));
247
255
  });
248
256
  }
249
257
 
@@ -255,7 +263,7 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
255
263
  }, {
256
264
  key: "onclose",
257
265
  value: function onclose(event) {
258
- this.logger.info('socket: closed', event.code, event.reason);
266
+ this.logger.info("socket,".concat(this._domain, ": closed"), event.code, event.reason);
259
267
  clearTimeout(this.pongTimer);
260
268
  clearTimeout(this.pingTimer);
261
269
  event = this._fixCloseCode(event);
@@ -277,9 +285,9 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
277
285
  try {
278
286
  var data = JSON.parse(event.data);
279
287
  var sequenceNumber = (0, _parseInt2.default)(data.sequenceNumber, 10);
280
- this.logger.debug('socket: sequence number: ', sequenceNumber);
288
+ this.logger.debug("socket,".concat(this._domain, ": sequence number: "), sequenceNumber);
281
289
  if (this.expectedSequenceNumber && sequenceNumber !== this.expectedSequenceNumber) {
282
- this.logger.debug("socket: sequence number mismatch indicates lost mercury message. expected: ".concat(this.expectedSequenceNumber, ", actual: ").concat(sequenceNumber));
290
+ this.logger.debug("socket,".concat(this._domain, ": sequence number mismatch indicates lost mercury message. expected: ").concat(this.expectedSequenceNumber, ", actual: ").concat(sequenceNumber));
283
291
  this.emit('sequence-mismatch', sequenceNumber, this.expectedSequenceNumber);
284
292
  }
285
293
  this.expectedSequenceNumber = sequenceNumber + 1;
@@ -301,7 +309,7 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
301
309
  // message from Mercury. At this time, the only action we have is to
302
310
  // ignore it and move on.
303
311
  /* istanbul ignore next */
304
- this.logger.warn('socket: error while receiving WebSocket message', error);
312
+ this.logger.warn("socket,".concat(this._domain, ": error while receiving WebSocket message"), error);
305
313
  }
306
314
  }
307
315
 
@@ -357,7 +365,7 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
357
365
  value: function _authorize() {
358
366
  var _this5 = this;
359
367
  return new _promise.default(function (resolve) {
360
- _this5.logger.info('socket: authorizing');
368
+ _this5.logger.info("socket,".concat(_this5._domain, ": authorizing"));
361
369
  _this5.send({
362
370
  id: _uuid.default.v4(),
363
371
  type: 'authorization',
@@ -391,12 +399,12 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
391
399
  if (event.code === 1005 && event.reason) {
392
400
  switch (event.reason.toLowerCase()) {
393
401
  case 'replaced':
394
- this.logger.info('socket: fixing CloseEvent code for reason: ', event.reason);
402
+ this.logger.info("socket,".concat(this._domain, ": fixing CloseEvent code for reason: "), event.reason);
395
403
  event.code = 4000;
396
404
  break;
397
405
  case 'authentication failed':
398
406
  case 'authentication did not happen within the timeout window of 30000 seconds.':
399
- this.logger.info('socket: fixing CloseEvent code for reason: ', event.reason);
407
+ this.logger.info("socket,".concat(this._domain, ": fixing CloseEvent code for reason: "), event.reason);
400
408
  event.code = 1008;
401
409
  break;
402
410
  default:
@@ -419,10 +427,10 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
419
427
  var _this6 = this;
420
428
  var confirmPongId = function confirmPongId(event) {
421
429
  try {
422
- _this6.logger.debug('socket: pong', event.data.id);
430
+ _this6.logger.debug("socket,".concat(_this6._domain, ": pong"), event.data.id);
423
431
  if (event.data && event.data.id !== id) {
424
- _this6.logger.info('socket: received pong for wrong ping id, closing socket');
425
- _this6.logger.debug('socket: expected', id, 'received', event.data.id);
432
+ _this6.logger.info("socket,".concat(_this6._domain, ": received pong for wrong ping id, closing socket"));
433
+ _this6.logger.debug("socket,".concat(_this6._domain, ": expected"), id, 'received', event.data.id);
426
434
  _this6.close({
427
435
  code: 1000,
428
436
  reason: 'Pong mismatch'
@@ -432,23 +440,23 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
432
440
  // This try/catch block was added as a debugging step; to the best of my
433
441
  // knowledge, the above can never throw.
434
442
  /* istanbul ignore next */
435
- _this6.logger.error('socket: error occurred in confirmPongId', error);
443
+ _this6.logger.error("socket,".concat(_this6._domain, ": error occurred in confirmPongId"), error);
436
444
  }
437
445
  };
438
446
  var onPongNotReceived = function onPongNotReceived() {
439
447
  try {
440
- _this6.logger.info('socket: pong not receive in expected period, closing socket');
448
+ _this6.logger.info("socket,".concat(_this6._domain, ": pong not receive in expected period, closing socket"));
441
449
  _this6.close({
442
450
  code: 1000,
443
451
  reason: 'Pong not received'
444
452
  }).catch(function (reason) {
445
- _this6.logger.warn('socket: failed to close socket after missed pong', reason);
453
+ _this6.logger.warn("socket,".concat(_this6._domain, ": failed to close socket after missed pong"), reason);
446
454
  });
447
455
  } catch (error) {
448
456
  // This try/catch block was added as a debugging step; to the best of my
449
457
  // knowledge, the above can never throw.
450
458
  /* istanbul ignore next */
451
- _this6.logger.error('socket: error occurred in onPongNotReceived', error);
459
+ _this6.logger.error("socket,".concat(_this6._domain, ": error occurred in onPongNotReceived"), error);
452
460
  }
453
461
  };
454
462
  var scheduleNextPingAndCancelPongTimer = function scheduleNextPingAndCancelPongTimer() {
@@ -461,14 +469,14 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
461
469
  // This try/catch block was added as a debugging step; to the best of my
462
470
  // knowledge, the above can never throw.
463
471
  /* istanbul ignore next */
464
- _this6.logger.error('socket: error occurred in scheduleNextPingAndCancelPongTimer', error);
472
+ _this6.logger.error("socket,".concat(_this6._domain, ": error occurred in scheduleNextPingAndCancelPongTimer"), error);
465
473
  }
466
474
  };
467
475
  id = id || _uuid.default.v4();
468
476
  this.pongTimer = (0, _commonTimers.safeSetTimeout)(onPongNotReceived, this.pongTimeout);
469
477
  this.once('pong', scheduleNextPingAndCancelPongTimer);
470
478
  this.once('pong', confirmPongId);
471
- this.logger.debug("socket: ping ".concat(id));
479
+ this.logger.debug("socket,".concat(this._domain, ": ping ").concat(id));
472
480
  return this.send({
473
481
  id: id,
474
482
  type: 'ping'
@@ -482,5 +490,4 @@ var Socket = /*#__PURE__*/function (_EventEmitter) {
482
490
  }]);
483
491
  return Socket;
484
492
  }(_events.EventEmitter);
485
- exports.default = Socket;
486
493
  //# sourceMappingURL=socket-base.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_events","require","_common","_commonTimers","_lodash","_uuid","_interopRequireDefault","_errors","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","sockets","_weakMap","Socket","_EventEmitter","_inherits2","_super","_this","_classCallCheck2","onmessage","bind","_assertThisInitialized2","onclose","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","code","Error","defaults","reason","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","open","_this3","checkRequired","_keys","forEach","_defineProperty","enumerable","WebSocket","getWebSocketConstructor","_fixCloseCode","UnknownResponse","BadRequest","NotAuthorized","Forbidden","ConnectionError","onopen","_authorize","then","catch","onerror","set","pongTimer","pingTimer","emit","removeAllListeners","data","JSON","parse","sequenceNumber","_parseInt2","debug","expectedSequenceNumber","concat","processedEvent","_acknowledge","type","send","_this4","isObject","_stringify","has","messageId","id","_this5","uuid","v4","token","trackingId","logLevelToken","waitForBufferState","eventType","removeListener","_ping","once","toLowerCase","_this6","confirmPongId","onPongNotReceived","scheduleNextPingAndCancelPongTimer","pingInterval","pongTimeout","EventEmitter","exports"],"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';\nimport uuid from 'uuid';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\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.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\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: closing');\n\n if (socket.readyState === 2 || socket.readyState === 3) {\n this.logger.info('socket: 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 options = defaults(options, {\n code: 1000,\n reason: 'Done',\n });\n\n const closeTimer = safeSetTimeout(() => {\n try {\n this.logger.info('socket: no close event received, forcing closure');\n resolve(\n this.onclose({\n code: 1000,\n reason: 'Done (forced)',\n })\n );\n } catch (error) {\n this.logger.warn('socket: force-close failed', error);\n }\n }, this.forceCloseDelay);\n\n socket.onclose = (event) => {\n this.logger.info('socket: close event fired', event.code, event.reason);\n clearTimeout(closeTimer);\n this.onclose(event);\n resolve(event);\n };\n\n socket.close(options.code, options.reason);\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {number} options.pingInterval (required)\n * @param {number} options.pongTimeout (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @param {string} options.logLevelToken\n * @returns {Promise}\n */\n open(url, options) {\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(\n ['forceCloseDelay', 'pingInterval', 'pongTimeout', 'token', 'trackingId', 'logger'],\n options\n );\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: 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: 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: connected');\n this._authorize()\n .then(() => {\n this.logger.info('socket: authorized');\n socket.onclose = this.onclose;\n resolve();\n })\n .catch(reject);\n };\n\n socket.onerror = (event) => {\n this.logger.warn('socket: error event fired', event);\n };\n\n sockets.set(this, socket);\n this.logger.info('socket: 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: closed', event.code, event.reason);\n clearTimeout(this.pongTimer);\n clearTimeout(this.pingTimer);\n\n event = this._fixCloseCode(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 sequenceNumber = parseInt(data.sequenceNumber, 10);\n\n this.logger.debug('socket: sequence number: ', sequenceNumber);\n if (this.expectedSequenceNumber && sequenceNumber !== this.expectedSequenceNumber) {\n this.logger.debug(\n `socket: sequence number mismatch indicates lost mercury message. expected: ${this.expectedSequenceNumber}, actual: ${sequenceNumber}`\n );\n this.emit('sequence-mismatch', sequenceNumber, this.expectedSequenceNumber);\n }\n this.expectedSequenceNumber = sequenceNumber + 1;\n\n // Yes, it's a little weird looking; we want to emit message events that\n // look like normal socket message events, but event.data cannot be\n // modified and we don't actually care about anything but the data property\n const processedEvent = {data};\n\n this._acknowledge(processedEvent);\n if (data.type === 'pong') {\n this.emit('pong', processedEvent);\n } else {\n this.emit('message', processedEvent);\n }\n } catch (error) {\n // The above code should only be able to throw if we receive an unparsable\n // message from Mercury. At this time, the only action we have is to\n // ignore it and move on.\n /* istanbul ignore next */\n this.logger.warn('socket: 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 !== 1) {\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 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.id')) {\n return Promise.reject(new Error('`event.data.id` is required'));\n }\n\n return this.send({\n messageId: event.data.id,\n type: 'ack',\n });\n }\n\n /**\n * Sends an auth message up the socket\n * @private\n * @returns {Promise}\n */\n _authorize() {\n return new Promise((resolve) => {\n this.logger.info('socket: authorizing');\n this.send({\n id: uuid.v4(),\n type: 'authorization',\n data: {\n token: this.token,\n },\n trackingId: this.trackingId,\n logLevelToken: this.logLevelToken,\n });\n\n const waitForBufferState = (event) => {\n if (\n !event.data.type &&\n (event.data.data.eventType === 'mercury.buffer_state' ||\n event.data.data.eventType === 'mercury.registration_status')\n ) {\n this.removeListener('message', waitForBufferState);\n this._ping();\n resolve();\n }\n };\n\n this.once('message', waitForBufferState);\n });\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('socket: fixing CloseEvent code for reason: ', event.reason);\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('socket: fixing CloseEvent code for reason: ', event.reason);\n event.code = 1008;\n break;\n default:\n // do nothing\n }\n }\n\n return event;\n }\n\n /**\n * Sends a ping up the socket and confirms we get it back\n * @param {[type]} id\n * @private\n * @returns {[type]}\n */\n _ping(id) {\n const confirmPongId = (event) => {\n try {\n this.logger.debug('socket: pong', event.data.id);\n if (event.data && event.data.id !== id) {\n this.logger.info('socket: received pong for wrong ping id, closing socket');\n this.logger.debug('socket: expected', id, 'received', event.data.id);\n this.close({\n code: 1000,\n reason: 'Pong mismatch',\n });\n }\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error('socket: error occurred in confirmPongId', error);\n }\n };\n\n const onPongNotReceived = () => {\n try {\n this.logger.info('socket: pong not receive in expected period, closing socket');\n this.close({\n code: 1000,\n reason: 'Pong not received',\n }).catch((reason) => {\n this.logger.warn('socket: failed to close socket after missed pong', reason);\n });\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error('socket: error occurred in onPongNotReceived', error);\n }\n };\n\n const scheduleNextPingAndCancelPongTimer = () => {\n try {\n clearTimeout(this.pongTimer);\n this.pingTimer = safeSetTimeout(() => this._ping(), this.pingInterval);\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error('socket: error occurred in scheduleNextPingAndCancelPongTimer', error);\n }\n };\n\n id = id || uuid.v4();\n this.pongTimer = safeSetTimeout(onPongNotReceived, this.pongTimeout);\n this.once('pong', scheduleNextPingAndCancelPongTimer);\n this.once('pong', confirmPongId);\n\n this.logger.debug(`socket: ping ${id}`);\n\n return this.send({\n id,\n type: 'ping',\n });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_events","require","_common","_commonTimers","_lodash","_uuid","_interopRequireDefault","_errors","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf2","default","result","NewTarget","constructor","_Reflect$construct","arguments","apply","_possibleConstructorReturn2","Reflect","sham","Proxy","Boolean","prototype","valueOf","call","e","sockets","_weakMap","Socket","exports","_EventEmitter","_inherits2","_super","_this","_classCallCheck2","_domain","onmessage","bind","_assertThisInitialized2","onclose","_createClass2","key","get","binaryType","bufferedAmount","extensions","protocol","readyState","url","value","close","options","_this2","_promise","resolve","reject","socket","logger","info","concat","code","Error","defaults","reason","closeTimer","safeSetTimeout","error","warn","forceCloseDelay","event","clearTimeout","open","_this3","URL","hostname","_unused","checkRequired","_keys","forEach","_defineProperty","enumerable","WebSocket","getWebSocketConstructor","_fixCloseCode","UnknownResponse","BadRequest","NotAuthorized","Forbidden","ConnectionError","onopen","_authorize","then","catch","onerror","set","pongTimer","pingTimer","emit","removeAllListeners","data","JSON","parse","sequenceNumber","_parseInt2","debug","expectedSequenceNumber","processedEvent","_acknowledge","type","send","_this4","isObject","_stringify","has","messageId","id","_this5","uuid","v4","token","trackingId","logLevelToken","waitForBufferState","eventType","removeListener","_ping","once","toLowerCase","_this6","confirmPongId","onPongNotReceived","scheduleNextPingAndCancelPongTimer","pingInterval","pongTimeout","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';\nimport uuid from 'uuid';\n\nimport {\n BadRequest,\n ConnectionError,\n Forbidden,\n NotAuthorized,\n UnknownResponse,\n // NotFound\n} from '../errors';\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.onmessage = this.onmessage.bind(this);\n this.onclose = this.onclose.bind(this);\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 (socket.readyState === 2 || socket.readyState === 3) {\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 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 code: 1000,\n reason: 'Done (forced)',\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 socket.close(options.code, options.reason);\n });\n }\n\n /**\n * Opens a WebSocket\n * @param {string} url\n * @param {options} options\n * @param {number} options.forceCloseDelay (required)\n * @param {number} options.pingInterval (required)\n * @param {number} options.pongTimeout (required)\n * @param {string} options.token (required)\n * @param {string} options.trackingId (required)\n * @param {Logger} options.logger (required)\n * @param {string} options.logLevelToken\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(\n ['forceCloseDelay', 'pingInterval', 'pongTimeout', 'token', 'trackingId', 'logger'],\n options\n );\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()\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 clearTimeout(this.pongTimer);\n clearTimeout(this.pingTimer);\n\n event = this._fixCloseCode(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 sequenceNumber = parseInt(data.sequenceNumber, 10);\n\n this.logger.debug(`socket,${this._domain}: sequence number: `, sequenceNumber);\n if (this.expectedSequenceNumber && sequenceNumber !== this.expectedSequenceNumber) {\n this.logger.debug(\n `socket,${this._domain}: sequence number mismatch indicates lost mercury message. expected: ${this.expectedSequenceNumber}, actual: ${sequenceNumber}`\n );\n this.emit('sequence-mismatch', sequenceNumber, this.expectedSequenceNumber);\n }\n this.expectedSequenceNumber = sequenceNumber + 1;\n\n // Yes, it's a little weird looking; we want to emit message events that\n // look like normal socket message events, but event.data cannot be\n // modified and we don't actually care about anything but the data property\n const processedEvent = {data};\n\n this._acknowledge(processedEvent);\n if (data.type === 'pong') {\n this.emit('pong', processedEvent);\n } else {\n this.emit('message', processedEvent);\n }\n } catch (error) {\n // The above code should only be able to throw if we receive an unparsable\n // message from Mercury. At this time, the only action we have is to\n // ignore it and move on.\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 !== 1) {\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 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.id')) {\n return Promise.reject(new Error('`event.data.id` is required'));\n }\n\n return this.send({\n messageId: event.data.id,\n type: 'ack',\n });\n }\n\n /**\n * Sends an auth message up the socket\n * @private\n * @returns {Promise}\n */\n _authorize() {\n return new Promise((resolve) => {\n this.logger.info(`socket,${this._domain}: authorizing`);\n this.send({\n id: uuid.v4(),\n type: 'authorization',\n data: {\n token: this.token,\n },\n trackingId: this.trackingId,\n logLevelToken: this.logLevelToken,\n });\n\n const waitForBufferState = (event) => {\n if (\n !event.data.type &&\n (event.data.data.eventType === 'mercury.buffer_state' ||\n event.data.data.eventType === 'mercury.registration_status')\n ) {\n this.removeListener('message', waitForBufferState);\n this._ping();\n resolve();\n }\n };\n\n this.once('message', waitForBufferState);\n });\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 /**\n * Sends a ping up the socket and confirms we get it back\n * @param {[type]} id\n * @private\n * @returns {[type]}\n */\n _ping(id) {\n const confirmPongId = (event) => {\n try {\n this.logger.debug(`socket,${this._domain}: pong`, event.data.id);\n if (event.data && event.data.id !== id) {\n this.logger.info(\n `socket,${this._domain}: received pong for wrong ping id, closing socket`\n );\n this.logger.debug(`socket,${this._domain}: expected`, id, 'received', event.data.id);\n this.close({\n code: 1000,\n reason: 'Pong mismatch',\n });\n }\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error(`socket,${this._domain}: error occurred in confirmPongId`, error);\n }\n };\n\n const onPongNotReceived = () => {\n try {\n this.logger.info(\n `socket,${this._domain}: pong not receive in expected period, closing socket`\n );\n this.close({\n code: 1000,\n reason: 'Pong not received',\n }).catch((reason) => {\n this.logger.warn(\n `socket,${this._domain}: failed to close socket after missed pong`,\n reason\n );\n });\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error(`socket,${this._domain}: error occurred in onPongNotReceived`, error);\n }\n };\n\n const scheduleNextPingAndCancelPongTimer = () => {\n try {\n clearTimeout(this.pongTimer);\n this.pingTimer = safeSetTimeout(() => this._ping(), this.pingInterval);\n } catch (error) {\n // This try/catch block was added as a debugging step; to the best of my\n // knowledge, the above can never throw.\n /* istanbul ignore next */\n this.logger.error(\n `socket,${this._domain}: error occurred in scheduleNextPingAndCancelPongTimer`,\n error\n );\n }\n };\n\n id = id || uuid.v4();\n this.pongTimer = safeSetTimeout(onPongNotReceived, this.pongTimeout);\n this.once('pong', scheduleNextPingAndCancelPongTimer);\n this.once('pong', confirmPongId);\n\n this.logger.debug(`socket,${this._domain}: ping ${id}`);\n\n return this.send({\n id,\n type: 'ping',\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,OAAA,GAAAC,OAAA;AAEA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,KAAA,GAAAC,sBAAA,CAAAL,OAAA;AAEA,IAAAM,OAAA,GAAAN,OAAA;AAOmB,SAAAO,aAAAC,OAAA,QAAAC,yBAAA,GAAAC,yBAAA,oBAAAC,qBAAA,QAAAC,KAAA,OAAAC,gBAAA,CAAAC,OAAA,EAAAN,OAAA,GAAAO,MAAA,MAAAN,yBAAA,QAAAO,SAAA,OAAAH,gBAAA,CAAAC,OAAA,QAAAG,WAAA,EAAAF,MAAA,GAAAG,kBAAA,CAAAN,KAAA,EAAAO,SAAA,EAAAH,SAAA,YAAAD,MAAA,GAAAH,KAAA,CAAAQ,KAAA,OAAAD,SAAA,gBAAAE,2BAAA,CAAAP,OAAA,QAAAC,MAAA;AAAA,SAAAL,0BAAA,eAAAY,OAAA,qBAAAJ,kBAAA,oBAAAA,kBAAA,CAAAK,IAAA,2BAAAC,KAAA,oCAAAC,OAAA,CAAAC,SAAA,CAAAC,OAAA,CAAAC,IAAA,CAAAV,kBAAA,CAAAO,OAAA,8CAAAI,CAAA,sBAlBnB;AACA;AACA;AAkBA,IAAMC,OAAO,GAAG,IAAAC,QAAA,CAAAjB,OAAA,CAAY,CAAC;;AAE7B;AACA;AACA;AAFA,IAGqBkB,MAAM,GAAAC,OAAA,CAAAnB,OAAA,0BAAAoB,aAAA;EAAA,IAAAC,UAAA,CAAArB,OAAA,EAAAkB,MAAA,EAAAE,aAAA;EAAA,IAAAE,MAAA,GAAA7B,YAAA,CAAAyB,MAAA;EACzB;AACF;AACA;AACA;EACE,SAAAA,OAAA,EAAc;IAAA,IAAAK,KAAA;IAAA,IAAAC,gBAAA,CAAAxB,OAAA,QAAAkB,MAAA;IACZK,KAAA,GAAAD,MAAA,CAAAR,IAAA;IACAS,KAAA,CAAKE,OAAO,GAAG,gBAAgB;IAC/BF,KAAA,CAAKG,SAAS,GAAGH,KAAA,CAAKG,SAAS,CAACC,IAAI,KAAAC,uBAAA,CAAA5B,OAAA,EAAAuB,KAAA,CAAK,CAAC;IAC1CA,KAAA,CAAKM,OAAO,GAAGN,KAAA,CAAKM,OAAO,CAACF,IAAI,KAAAC,uBAAA,CAAA5B,OAAA,EAAAuB,KAAA,CAAK,CAAC;IAAC,OAAAA,KAAA;EACzC;;EAEA;AACF;AACA;AACA;EAHE,IAAAO,aAAA,CAAA9B,OAAA,EAAAkB,MAAA;IAAAa,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACC,UAAU;IACrC;;IAEA;AACF;AACA;AACA;EAHE;IAAAF,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAqB;MACnB,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACE,cAAc;IACzC;;IAEA;AACF;AACA;AACA;EAHE;IAAAH,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACG,UAAU;IACrC;;IAEA;AACF;AACA;AACA;EAHE;IAAAJ,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAe;MACb,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACI,QAAQ;IACnC;;IAEA;AACF;AACA;AACA;EAHE;IAAAL,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAiB;MACf,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACK,UAAU;IACrC;;IAEA;AACF;AACA;AACA;EAHE;IAAAN,GAAA;IAAAC,GAAA,EAIA,SAAAA,IAAA,EAAU;MACR,OAAOhB,OAAO,CAACgB,GAAG,CAAC,IAAI,CAAC,CAACM,GAAG;IAC9B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAP,GAAA;IAAAQ,KAAA;IAWA;AACF;AACA;AACA;AACA;AACA;AACA;IACE,SAAAC,MAAMC,OAAO,EAAE;MAAA,IAAAC,MAAA;MACb,OAAO,IAAAC,QAAA,CAAA3C,OAAA,CAAY,UAAC4C,OAAO,EAAEC,MAAM,EAAK;QACtC,IAAMC,MAAM,GAAG9B,OAAO,CAACgB,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,CAACjB,OAAO,cAAW,CAAC;QAEnD,IAAIqB,MAAM,CAACT,UAAU,KAAK,CAAC,IAAIS,MAAM,CAACT,UAAU,KAAK,CAAC,EAAE;UACtDK,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACjB,OAAO,qBAAkB,CAAC;UAC1DmB,OAAO,CAAC,CAAC;UAET;QACF;QAEAH,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;QACvB,IAAIA,OAAO,CAACS,IAAI,IAAIT,OAAO,CAACS,IAAI,KAAK,IAAI,KAAKT,OAAO,CAACS,IAAI,GAAG,IAAI,IAAIT,OAAO,CAACS,IAAI,GAAG,IAAI,CAAC,EAAE;UACzFL,MAAM,CAAC,IAAIM,KAAK,CAAC,kEAAkE,CAAC,CAAC;UAErF;QACF;QAEAV,OAAO,GAAG,IAAAW,gBAAQ,EAACX,OAAO,EAAE;UAC1BS,IAAI,EAAE,IAAI;UACVG,MAAM,EAAE;QACV,CAAC,CAAC;QAEF,IAAMC,UAAU,GAAG,IAAAC,4BAAc,EAAC,YAAM;UACtC,IAAI;YACFb,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACjB,OAAO,+CAA4C,CAAC;YACpFmB,OAAO,CACLF,MAAI,CAACb,OAAO,CAAC;cACXqB,IAAI,EAAE,IAAI;cACVG,MAAM,EAAE;YACV,CAAC,CACH,CAAC;UACH,CAAC,CAAC,OAAOG,KAAK,EAAE;YACdd,MAAI,CAACK,MAAM,CAACU,IAAI,WAAAR,MAAA,CAAWP,MAAI,CAACjB,OAAO,2BAAwB+B,KAAK,CAAC;UACvE;QACF,CAAC,EAAEd,MAAI,CAACgB,eAAe,CAAC;QAExBZ,MAAM,CAACjB,OAAO,GAAG,UAAC8B,KAAK,EAAK;UAC1BjB,MAAI,CAACK,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWP,MAAI,CAACjB,OAAO,0BAAuBkC,KAAK,CAACT,IAAI,EAAES,KAAK,CAACN,MAAM,CAAC;UACvFO,YAAY,CAACN,UAAU,CAAC;UACxBZ,MAAI,CAACb,OAAO,CAAC8B,KAAK,CAAC;UACnBf,OAAO,CAACe,KAAK,CAAC;QAChB,CAAC;QAEDb,MAAM,CAACN,KAAK,CAACC,OAAO,CAACS,IAAI,EAAET,OAAO,CAACY,MAAM,CAAC;MAC5C,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EAZE;IAAAtB,GAAA;IAAAQ,KAAA,EAaA,SAAAsB,KAAKvB,GAAG,EAAEG,OAAO,EAAE;MAAA,IAAAqB,MAAA;MACjB,IAAI;QACF,IAAI,CAACrC,OAAO,GAAG,IAAIsC,GAAG,CAACzB,GAAG,CAAC,CAAC0B,QAAQ;MACtC,CAAC,CAAC,OAAAC,OAAA,EAAM;QACN,IAAI,CAACxC,OAAO,GAAGa,GAAG;MACpB;MAEA,OAAO,IAAAK,QAAA,CAAA3C,OAAA,CAAY,UAAC4C,OAAO,EAAEC,MAAM,EAAK;QACtC;QACA,IAAI,CAACP,GAAG,EAAE;UACRO,MAAM,CAAC,IAAIM,KAAK,CAAC,mBAAmB,CAAC,CAAC;UAEtC;QACF;QAEA,IAAInC,OAAO,CAACgB,GAAG,CAAC8B,MAAI,CAAC,EAAE;UACrBjB,MAAM,CAAC,IAAIM,KAAK,CAAC,oDAAoD,CAAC,CAAC;UAEvE;QACF;QAEAV,OAAO,GAAGA,OAAO,IAAI,CAAC,CAAC;QAEvB,IAAAyB,qBAAa,EACX,CAAC,iBAAiB,EAAE,cAAc,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EACnFzB,OACF,CAAC;QAED,IAAA0B,KAAA,CAAAnE,OAAA,EAAYyC,OAAO,CAAC,CAAC2B,OAAO,CAAC,UAACrC,GAAG,EAAK;UACpC,IAAAsC,eAAA,CAAArE,OAAA,EAAuB8D,MAAI,EAAE/B,GAAG,EAAE;YAChCuC,UAAU,EAAE,KAAK;YACjB/B,KAAK,EAAEE,OAAO,CAACV,GAAG;UACpB,CAAC,CAAC;QACJ,CAAC,CAAC;QAEF,IAAMwC,SAAS,GAAGrD,MAAM,CAACsD,uBAAuB,CAAC,CAAC;QAElDV,MAAI,CAACf,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWa,MAAI,CAACrC,OAAO,yBAAsB,CAAC;QAC9D,IAAMqB,MAAM,GAAG,IAAIyB,SAAS,CAACjC,GAAG,EAAE,EAAE,EAAEG,OAAO,CAAC;QAE9CK,MAAM,CAACb,UAAU,GAAG,aAAa;QACjCa,MAAM,CAACpB,SAAS,GAAGoC,MAAI,CAACpC,SAAS;QAEjCoB,MAAM,CAACjB,OAAO,GAAG,UAAC8B,KAAK,EAAK;UAC1BA,KAAK,GAAGG,MAAI,CAACW,aAAa,CAACd,KAAK,CAAC;UACjCG,MAAI,CAACf,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWa,MAAI,CAACrC,OAAO,2BAAwBkC,KAAK,CAACT,IAAI,EAAES,KAAK,CAACN,MAAM,CAAC;UACxF,QAAQM,KAAK,CAACT,IAAI;YAChB,KAAK,IAAI;cACP;cACA;cACA;cACA;cACA,OAAOL,MAAM,CAAC,IAAI6B,uBAAe,CAACf,KAAK,CAAC,CAAC;YAC3C,KAAK,IAAI;cACP,OAAOd,MAAM,CAAC,IAAI8B,kBAAU,CAAChB,KAAK,CAAC,CAAC;YACtC,KAAK,IAAI;cACP,OAAOd,MAAM,CAAC,IAAI+B,qBAAa,CAACjB,KAAK,CAAC,CAAC;YACzC,KAAK,IAAI;cACP,OAAOd,MAAM,CAAC,IAAIgC,iBAAS,CAAClB,KAAK,CAAC,CAAC;YACrC;YACA;YACA;cACE,OAAOd,MAAM,CAAC,IAAIiC,uBAAe,CAACnB,KAAK,CAAC,CAAC;UAC7C;QACF,CAAC;QAEDb,MAAM,CAACiC,MAAM,GAAG,YAAM;UACpBjB,MAAI,CAACf,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWa,MAAI,CAACrC,OAAO,gBAAa,CAAC;UACrDqC,MAAI,CAACkB,UAAU,CAAC,CAAC,CACdC,IAAI,CAAC,YAAM;YACVnB,MAAI,CAACf,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWa,MAAI,CAACrC,OAAO,iBAAc,CAAC;YACtDqB,MAAM,CAACjB,OAAO,GAAGiC,MAAI,CAACjC,OAAO;YAC7Be,OAAO,CAAC,CAAC;UACX,CAAC,CAAC,CACDsC,KAAK,CAACrC,MAAM,CAAC;QAClB,CAAC;QAEDC,MAAM,CAACqC,OAAO,GAAG,UAACxB,KAAK,EAAK;UAC1BG,MAAI,CAACf,MAAM,CAACU,IAAI,WAAAR,MAAA,CAAWa,MAAI,CAACrC,OAAO,0BAAuBkC,KAAK,CAAC;QACtE,CAAC;QAED3C,OAAO,CAACoE,GAAG,CAACtB,MAAI,EAAEhB,MAAM,CAAC;QACzBgB,MAAI,CAACf,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWa,MAAI,CAACrC,OAAO,yBAAsB,CAAC;MAChE,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAM,GAAA;IAAAQ,KAAA,EAKA,SAAAV,QAAQ8B,KAAK,EAAE;MACb,IAAI,CAACZ,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAW,IAAI,CAACxB,OAAO,eAAYkC,KAAK,CAACT,IAAI,EAAES,KAAK,CAACN,MAAM,CAAC;MAC5EO,YAAY,CAAC,IAAI,CAACyB,SAAS,CAAC;MAC5BzB,YAAY,CAAC,IAAI,CAAC0B,SAAS,CAAC;MAE5B3B,KAAK,GAAG,IAAI,CAACc,aAAa,CAACd,KAAK,CAAC;MACjC,IAAI,CAAC4B,IAAI,CAAC,OAAO,EAAE5B,KAAK,CAAC;;MAEzB;MACA;MACA,IAAI,CAAC6B,kBAAkB,CAAC,CAAC;IAC3B;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzD,GAAA;IAAAQ,KAAA,EAKA,SAAAb,UAAUiC,KAAK,EAAE;MACf,IAAI;QACF,IAAM8B,IAAI,GAAGC,IAAI,CAACC,KAAK,CAAChC,KAAK,CAAC8B,IAAI,CAAC;QACnC,IAAMG,cAAc,GAAG,IAAAC,UAAA,CAAA7F,OAAA,EAASyF,IAAI,CAACG,cAAc,EAAE,EAAE,CAAC;QAExD,IAAI,CAAC7C,MAAM,CAAC+C,KAAK,WAAA7C,MAAA,CAAW,IAAI,CAACxB,OAAO,0BAAuBmE,cAAc,CAAC;QAC9E,IAAI,IAAI,CAACG,sBAAsB,IAAIH,cAAc,KAAK,IAAI,CAACG,sBAAsB,EAAE;UACjF,IAAI,CAAChD,MAAM,CAAC+C,KAAK,WAAA7C,MAAA,CACL,IAAI,CAACxB,OAAO,2EAAAwB,MAAA,CAAwE,IAAI,CAAC8C,sBAAsB,gBAAA9C,MAAA,CAAa2C,cAAc,CACtJ,CAAC;UACD,IAAI,CAACL,IAAI,CAAC,mBAAmB,EAAEK,cAAc,EAAE,IAAI,CAACG,sBAAsB,CAAC;QAC7E;QACA,IAAI,CAACA,sBAAsB,GAAGH,cAAc,GAAG,CAAC;;QAEhD;QACA;QACA;QACA,IAAMI,cAAc,GAAG;UAACP,IAAI,EAAJA;QAAI,CAAC;QAE7B,IAAI,CAACQ,YAAY,CAACD,cAAc,CAAC;QACjC,IAAIP,IAAI,CAACS,IAAI,KAAK,MAAM,EAAE;UACxB,IAAI,CAACX,IAAI,CAAC,MAAM,EAAES,cAAc,CAAC;QACnC,CAAC,MAAM;UACL,IAAI,CAACT,IAAI,CAAC,SAAS,EAAES,cAAc,CAAC;QACtC;MACF,CAAC,CAAC,OAAOxC,KAAK,EAAE;QACd;QACA;QACA;QACA;QACA,IAAI,CAACT,MAAM,CAACU,IAAI,WAAAR,MAAA,CAAW,IAAI,CAACxB,OAAO,gDAA6C+B,KAAK,CAAC;MAC5F;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAzB,GAAA;IAAAQ,KAAA,EAKA,SAAA4D,KAAKV,IAAI,EAAE;MAAA,IAAAW,MAAA;MACT,OAAO,IAAAzD,QAAA,CAAA3C,OAAA,CAAY,UAAC4C,OAAO,EAAEC,MAAM,EAAK;QACtC,IAAIuD,MAAI,CAAC/D,UAAU,KAAK,CAAC,EAAE;UACzB,OAAOQ,MAAM,CAAC,IAAIM,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACjD;QAEA,IAAI,IAAAkD,gBAAQ,EAACZ,IAAI,CAAC,EAAE;UAClBA,IAAI,GAAG,IAAAa,UAAA,CAAAtG,OAAA,EAAeyF,IAAI,CAAC;QAC7B;QAEA,IAAM3C,MAAM,GAAG9B,OAAO,CAACgB,GAAG,CAACoE,MAAI,CAAC;QAEhCtD,MAAM,CAACqD,IAAI,CAACV,IAAI,CAAC;QAEjB,OAAO7C,OAAO,CAAC,CAAC;MAClB,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAb,GAAA;IAAAQ,KAAA,EAKA,SAAA0D,aAAatC,KAAK,EAAE;MAClB,IAAI,CAACA,KAAK,EAAE;QACV,OAAOhB,QAAA,CAAA3C,OAAA,CAAQ6C,MAAM,CAAC,IAAIM,KAAK,CAAC,qBAAqB,CAAC,CAAC;MACzD;MAEA,IAAI,CAAC,IAAAoD,WAAG,EAAC5C,KAAK,EAAE,SAAS,CAAC,EAAE;QAC1B,OAAOhB,QAAA,CAAA3C,OAAA,CAAQ6C,MAAM,CAAC,IAAIM,KAAK,CAAC,6BAA6B,CAAC,CAAC;MACjE;MAEA,OAAO,IAAI,CAACgD,IAAI,CAAC;QACfK,SAAS,EAAE7C,KAAK,CAAC8B,IAAI,CAACgB,EAAE;QACxBP,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAAnE,GAAA;IAAAQ,KAAA,EAKA,SAAAyC,WAAA,EAAa;MAAA,IAAA0B,MAAA;MACX,OAAO,IAAA/D,QAAA,CAAA3C,OAAA,CAAY,UAAC4C,OAAO,EAAK;QAC9B8D,MAAI,CAAC3D,MAAM,CAACC,IAAI,WAAAC,MAAA,CAAWyD,MAAI,CAACjF,OAAO,kBAAe,CAAC;QACvDiF,MAAI,CAACP,IAAI,CAAC;UACRM,EAAE,EAAEE,aAAI,CAACC,EAAE,CAAC,CAAC;UACbV,IAAI,EAAE,eAAe;UACrBT,IAAI,EAAE;YACJoB,KAAK,EAAEH,MAAI,CAACG;UACd,CAAC;UACDC,UAAU,EAAEJ,MAAI,CAACI,UAAU;UAC3BC,aAAa,EAAEL,MAAI,CAACK;QACtB,CAAC,CAAC;QAEF,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAIrD,KAAK,EAAK;UACpC,IACE,CAACA,KAAK,CAAC8B,IAAI,CAACS,IAAI,KACfvC,KAAK,CAAC8B,IAAI,CAACA,IAAI,CAACwB,SAAS,KAAK,sBAAsB,IACnDtD,KAAK,CAAC8B,IAAI,CAACA,IAAI,CAACwB,SAAS,KAAK,6BAA6B,CAAC,EAC9D;YACAP,MAAI,CAACQ,cAAc,CAAC,SAAS,EAAEF,kBAAkB,CAAC;YAClDN,MAAI,CAACS,KAAK,CAAC,CAAC;YACZvE,OAAO,CAAC,CAAC;UACX;QACF,CAAC;QAED8D,MAAI,CAACU,IAAI,CAAC,SAAS,EAAEJ,kBAAkB,CAAC;MAC1C,CAAC,CAAC;IACJ;;IAEA;AACF;AACA;AACA;AACA;AACA;AACA;EANE;IAAAjF,GAAA;IAAAQ,KAAA,EAOA,SAAAkC,cAAcd,KAAK,EAAE;MACnB,IAAIA,KAAK,CAACT,IAAI,KAAK,IAAI,IAAIS,KAAK,CAACN,MAAM,EAAE;QACvC,QAAQM,KAAK,CAACN,MAAM,CAACgE,WAAW,CAAC,CAAC;UAChC,KAAK,UAAU;YACb,IAAI,CAACtE,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJ,IAAI,CAACxB,OAAO,4CACtBkC,KAAK,CAACN,MACR,CAAC;YACDM,KAAK,CAACT,IAAI,GAAG,IAAI;YACjB;UACF,KAAK,uBAAuB;UAC5B,KAAK,2EAA2E;YAC9E,IAAI,CAACH,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJ,IAAI,CAACxB,OAAO,4CACtBkC,KAAK,CAACN,MACR,CAAC;YACDM,KAAK,CAACT,IAAI,GAAG,IAAI;YACjB;UACF;UACA;QACF;MACF;;MAEA,OAAOS,KAAK;IACd;;IAEA;AACF;AACA;AACA;AACA;AACA;EALE;IAAA5B,GAAA;IAAAQ,KAAA,EAMA,SAAA4E,MAAMV,EAAE,EAAE;MAAA,IAAAa,MAAA;MACR,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAI5D,KAAK,EAAK;QAC/B,IAAI;UACF2D,MAAI,CAACvE,MAAM,CAAC+C,KAAK,WAAA7C,MAAA,CAAWqE,MAAI,CAAC7F,OAAO,aAAUkC,KAAK,CAAC8B,IAAI,CAACgB,EAAE,CAAC;UAChE,IAAI9C,KAAK,CAAC8B,IAAI,IAAI9B,KAAK,CAAC8B,IAAI,CAACgB,EAAE,KAAKA,EAAE,EAAE;YACtCa,MAAI,CAACvE,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJqE,MAAI,CAAC7F,OAAO,sDACxB,CAAC;YACD6F,MAAI,CAACvE,MAAM,CAAC+C,KAAK,WAAA7C,MAAA,CAAWqE,MAAI,CAAC7F,OAAO,iBAAcgF,EAAE,EAAE,UAAU,EAAE9C,KAAK,CAAC8B,IAAI,CAACgB,EAAE,CAAC;YACpFa,MAAI,CAAC9E,KAAK,CAAC;cACTU,IAAI,EAAE,IAAI;cACVG,MAAM,EAAE;YACV,CAAC,CAAC;UACJ;QACF,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd;UACA;UACA;UACA8D,MAAI,CAACvE,MAAM,CAACS,KAAK,WAAAP,MAAA,CAAWqE,MAAI,CAAC7F,OAAO,wCAAqC+B,KAAK,CAAC;QACrF;MACF,CAAC;MAED,IAAMgE,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA,EAAS;QAC9B,IAAI;UACFF,MAAI,CAACvE,MAAM,CAACC,IAAI,WAAAC,MAAA,CACJqE,MAAI,CAAC7F,OAAO,0DACxB,CAAC;UACD6F,MAAI,CAAC9E,KAAK,CAAC;YACTU,IAAI,EAAE,IAAI;YACVG,MAAM,EAAE;UACV,CAAC,CAAC,CAAC6B,KAAK,CAAC,UAAC7B,MAAM,EAAK;YACnBiE,MAAI,CAACvE,MAAM,CAACU,IAAI,WAAAR,MAAA,CACJqE,MAAI,CAAC7F,OAAO,iDACtB4B,MACF,CAAC;UACH,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOG,KAAK,EAAE;UACd;UACA;UACA;UACA8D,MAAI,CAACvE,MAAM,CAACS,KAAK,WAAAP,MAAA,CAAWqE,MAAI,CAAC7F,OAAO,4CAAyC+B,KAAK,CAAC;QACzF;MACF,CAAC;MAED,IAAMiE,kCAAkC,GAAG,SAArCA,kCAAkCA,CAAA,EAAS;QAC/C,IAAI;UACF7D,YAAY,CAAC0D,MAAI,CAACjC,SAAS,CAAC;UAC5BiC,MAAI,CAAChC,SAAS,GAAG,IAAA/B,4BAAc,EAAC;YAAA,OAAM+D,MAAI,CAACH,KAAK,CAAC,CAAC;UAAA,GAAEG,MAAI,CAACI,YAAY,CAAC;QACxE,CAAC,CAAC,OAAOlE,KAAK,EAAE;UACd;UACA;UACA;UACA8D,MAAI,CAACvE,MAAM,CAACS,KAAK,WAAAP,MAAA,CACLqE,MAAI,CAAC7F,OAAO,6DACtB+B,KACF,CAAC;QACH;MACF,CAAC;MAEDiD,EAAE,GAAGA,EAAE,IAAIE,aAAI,CAACC,EAAE,CAAC,CAAC;MACpB,IAAI,CAACvB,SAAS,GAAG,IAAA9B,4BAAc,EAACiE,iBAAiB,EAAE,IAAI,CAACG,WAAW,CAAC;MACpE,IAAI,CAACP,IAAI,CAAC,MAAM,EAAEK,kCAAkC,CAAC;MACrD,IAAI,CAACL,IAAI,CAAC,MAAM,EAAEG,aAAa,CAAC;MAEhC,IAAI,CAACxE,MAAM,CAAC+C,KAAK,WAAA7C,MAAA,CAAW,IAAI,CAACxB,OAAO,aAAAwB,MAAA,CAAUwD,EAAE,CAAE,CAAC;MAEvD,OAAO,IAAI,CAACN,IAAI,CAAC;QACfM,EAAE,EAAFA,EAAE;QACFP,IAAI,EAAE;MACR,CAAC,CAAC;IACJ;EAAC;IAAAnE,GAAA;IAAAQ,KAAA,EA5ZD,SAAAiC,wBAAA,EAAiC;MAC/B,MAAM,IAAIrB,KAAK,CACb,4FACF,CAAC;IACH;EAAC;EAAA,OAAAjC,MAAA;AAAA,EArEiC0G,oBAAY"}
@@ -15,6 +15,5 @@ var _socketBase = _interopRequireDefault(require("./socket-base"));
15
15
  _socketBase.default.getWebSocketConstructor = function getWebSocketConstructor() {
16
16
  return _ws.default;
17
17
  };
18
- var _default = _socketBase.default;
19
- exports.default = _default;
18
+ var _default = exports.default = _socketBase.default;
20
19
  //# sourceMappingURL=socket.js.map
@@ -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,GAEaH,mBAAM;AAAAI,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
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"}
@@ -32,6 +32,5 @@ _socketBase.default.getWebSocketConstructor = function getWebSocketConstructor()
32
32
  }
33
33
  return ws;
34
34
  };
35
- var _default = _socketBase.default;
36
- exports.default = _default;
35
+ var _default = exports.default = _socketBase.default;
37
36
  //# 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,GAEaR,mBAAM;AAAAS,OAAA,CAAAC,OAAA,GAAAF,QAAA"}
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"}
package/package.json CHANGED
@@ -10,7 +10,7 @@
10
10
  "directory": "packages/@webex/internal-plugin-mercury"
11
11
  },
12
12
  "engines": {
13
- "node": ">=14"
13
+ "node": ">=16"
14
14
  },
15
15
  "browser": {
16
16
  "./dist/socket/socket.js": "./dist/socket/socket.shim.js",
@@ -29,27 +29,27 @@
29
29
  "@webex/eslint-config-legacy": "^0.0.0",
30
30
  "@webex/jest-config-legacy": "^0.0.0",
31
31
  "@webex/legacy-tools": "^0.0.0",
32
- "@webex/test-helper-chai": "^2.59.8-next.1",
33
- "@webex/test-helper-mocha": "^2.59.8-next.1",
34
- "@webex/test-helper-mock-webex": "^2.59.8-next.1",
35
- "@webex/test-helper-test-users": "^2.59.8-next.1",
32
+ "@webex/test-helper-chai": "^2.60.0-next.1",
33
+ "@webex/test-helper-mocha": "^2.60.0-next.1",
34
+ "@webex/test-helper-mock-webex": "^2.60.0-next.1",
35
+ "@webex/test-helper-test-users": "^2.60.0-next.1",
36
36
  "eslint": "^8.24.0",
37
37
  "prettier": "^2.7.1",
38
38
  "sinon": "^9.2.4"
39
39
  },
40
40
  "dependencies": {
41
- "@webex/common": "^2.59.8-next.1",
42
- "@webex/common-timers": "^2.59.8-next.1",
43
- "@webex/internal-plugin-device": "^2.59.8-next.1",
44
- "@webex/internal-plugin-feature": "^2.59.8-next.1",
45
- "@webex/internal-plugin-metrics": "^2.59.8-next.1",
46
- "@webex/test-helper-chai": "^2.59.8-next.1",
47
- "@webex/test-helper-mocha": "^2.59.8-next.1",
48
- "@webex/test-helper-mock-web-socket": "^2.59.8-next.1",
49
- "@webex/test-helper-mock-webex": "^2.59.8-next.1",
50
- "@webex/test-helper-refresh-callback": "^2.59.8-next.1",
51
- "@webex/test-helper-test-users": "^2.59.8-next.1",
52
- "@webex/webex-core": "^2.59.8-next.1",
41
+ "@webex/common": "^2.60.0-next.1",
42
+ "@webex/common-timers": "^2.60.0-next.1",
43
+ "@webex/internal-plugin-device": "^2.60.0-next.1",
44
+ "@webex/internal-plugin-feature": "^2.60.0-next.1",
45
+ "@webex/internal-plugin-metrics": "^2.60.0-next.1",
46
+ "@webex/test-helper-chai": "^2.60.0-next.1",
47
+ "@webex/test-helper-mocha": "^2.60.0-next.1",
48
+ "@webex/test-helper-mock-web-socket": "^2.60.0-next.1",
49
+ "@webex/test-helper-mock-webex": "^2.60.0-next.1",
50
+ "@webex/test-helper-refresh-callback": "^2.60.0-next.1",
51
+ "@webex/test-helper-test-users": "^2.60.0-next.1",
52
+ "@webex/webex-core": "^2.60.0-next.1",
53
53
  "backoff": "^2.5.0",
54
54
  "lodash": "^4.17.21",
55
55
  "uuid": "^3.3.2",
@@ -65,5 +65,5 @@
65
65
  "test:style": "eslint ./src/**/*.*",
66
66
  "test:unit": "webex-legacy-tools test --unit --runner jest"
67
67
  },
68
- "version": "2.59.8-next.1"
68
+ "version": "2.60.0-next.1"
69
69
  }