@webex/internal-plugin-mercury 3.0.0-beta.4 → 3.0.0-beta.400

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/mercury.js CHANGED
@@ -1,69 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
4
-
5
4
  var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
6
-
7
5
  var _Object$getOwnPropertyDescriptor2 = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
-
9
6
  var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
10
-
11
7
  var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
12
-
13
8
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
14
-
15
9
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
16
-
17
10
  _Object$defineProperty(exports, "__esModule", {
18
11
  value: true
19
12
  });
20
-
21
13
  exports.default = void 0;
22
-
23
14
  var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
24
-
25
15
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
26
-
27
16
  var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
28
-
29
17
  var _deleteProperty = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/reflect/delete-property"));
30
-
31
18
  var _now = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/date/now"));
32
-
33
19
  var _getOwnPropertyDescriptor = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor"));
34
-
35
20
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
36
-
37
21
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/slicedToArray"));
38
-
39
22
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/applyDecoratedDescriptor"));
40
-
41
23
  var _set2 = _interopRequireDefault(require("lodash/set"));
42
-
43
24
  var _get2 = _interopRequireDefault(require("lodash/get"));
44
-
45
25
  var _camelCase2 = _interopRequireDefault(require("lodash/camelCase"));
46
-
47
26
  var _url = _interopRequireDefault(require("url"));
48
-
49
27
  var _webexCore = require("@webex/webex-core");
50
-
51
28
  var _common = require("@webex/common");
52
-
53
29
  var _backoff = _interopRequireDefault(require("backoff"));
54
-
55
30
  var _socket = _interopRequireDefault(require("./socket"));
56
-
57
31
  var _errors = require("./errors");
58
-
59
32
  var _dec, _dec2, _obj;
60
-
61
33
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys2(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor2(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
62
-
63
34
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor2(source, key)); }); } return target; }
64
-
65
35
  var normalReconnectReasons = ['idle', 'done (forced)', 'pong not received', 'pong mismatch'];
66
-
67
36
  var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mercury#listen(): Use Mercury#connect() instead'), _dec2 = (0, _common.deprecated)('Mercury#stopListening(): Use Mercury#disconnect() instead'), (_obj = {
68
37
  namespace: 'Mercury',
69
38
  session: {
@@ -75,6 +44,10 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
75
44
  default: false,
76
45
  type: 'boolean'
77
46
  },
47
+ hasEverConnected: {
48
+ default: false,
49
+ type: 'boolean'
50
+ },
78
51
  socket: 'object',
79
52
  localClusterServiceUrls: 'object'
80
53
  },
@@ -88,39 +61,28 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
88
61
  },
89
62
  connect: function connect(webSocketUrl) {
90
63
  var _this = this;
91
-
92
64
  if (this.connected) {
93
- this.logger.info('mercury: already connected, will not connect again');
65
+ this.logger.info("".concat(this.namespace, ": already connected, will not connect again"));
94
66
  return _promise.default.resolve();
95
67
  }
96
-
97
68
  this.connecting = true;
98
69
  return _promise.default.resolve(this.webex.internal.device.registered || this.webex.internal.device.register()).then(function () {
99
- _this.logger.info('mercury: connecting');
100
-
70
+ _this.logger.info("".concat(_this.namespace, ": connecting"));
101
71
  return _this._connectWithBackoff(webSocketUrl);
102
72
  });
103
73
  },
104
74
  disconnect: function disconnect() {
105
75
  var _this2 = this;
106
-
107
76
  return new _promise.default(function (resolve) {
108
77
  if (_this2.backoffCall) {
109
- _this2.logger.info('mercury: aborting connection');
110
-
78
+ _this2.logger.info("".concat(_this2.namespace, ": aborting connection"));
111
79
  _this2.backoffCall.abort();
112
80
  }
113
-
114
81
  if (_this2.socket) {
115
82
  _this2.socket.removeAllListeners('message');
116
-
117
83
  _this2.once('offline', resolve);
118
-
119
- _this2.socket.close();
120
-
121
- return;
84
+ resolve(_this2.socket.close());
122
85
  }
123
-
124
86
  resolve();
125
87
  });
126
88
  },
@@ -139,7 +101,6 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
139
101
  if (!event || !event.headers) {
140
102
  return;
141
103
  }
142
-
143
104
  var headerKeys = (0, _keys.default)(event.headers);
144
105
  headerKeys.forEach(function (keyPath) {
145
106
  (0, _set2.default)(event, keyPath, event.headers[keyPath]);
@@ -147,16 +108,13 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
147
108
  },
148
109
  _prepareUrl: function _prepareUrl(webSocketUrl) {
149
110
  var _this3 = this;
150
-
151
111
  if (!webSocketUrl) {
152
112
  webSocketUrl = this.webex.internal.device.webSocketUrl;
153
113
  }
154
-
155
114
  return this.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
156
115
  if (haMessagingEnabled) {
157
116
  return _this3.webex.internal.services.convertUrlToPriorityHostUrl(webSocketUrl);
158
117
  }
159
-
160
118
  return webSocketUrl;
161
119
  }).then(function (wsUrl) {
162
120
  webSocketUrl = wsUrl;
@@ -169,7 +127,6 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
169
127
  bufferStates: true,
170
128
  aliasHttpStatus: true
171
129
  });
172
-
173
130
  if (webSharedMercury) {
174
131
  (0, _assign.default)(webSocketUrl.query, {
175
132
  mercuryRegistrationStatus: true,
@@ -177,17 +134,14 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
177
134
  });
178
135
  (0, _deleteProperty.default)(webSocketUrl.query, 'bufferStates');
179
136
  }
180
-
181
137
  if ((0, _get2.default)(_this3, 'webex.config.device.ephemeral', false)) {
182
138
  webSocketUrl.query.multipleConnections = true;
183
139
  }
184
-
185
140
  return _url.default.format(webSocketUrl);
186
141
  });
187
142
  },
188
143
  _attemptConnection: function _attemptConnection(socketUrl, callback) {
189
144
  var _this4 = this;
190
-
191
145
  var socket = new _socket.default();
192
146
  var attemptWSUrl;
193
147
  socket.on('close', function () {
@@ -200,23 +154,23 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
200
154
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
201
155
  args[_key] = arguments[_key];
202
156
  }
203
-
204
157
  return _this4._emit.apply(_this4, ['sequence-mismatch'].concat(args));
205
158
  });
206
-
159
+ socket.on('ping-pong-latency', function () {
160
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
161
+ args[_key2] = arguments[_key2];
162
+ }
163
+ return _this4._emit.apply(_this4, ['ping-pong-latency'].concat(args));
164
+ });
207
165
  _promise.default.all([this._prepareUrl(socketUrl), this.webex.credentials.getUserToken()]).then(function (_ref) {
208
166
  var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
209
- webSocketUrl = _ref2[0],
210
- token = _ref2[1];
211
-
167
+ webSocketUrl = _ref2[0],
168
+ token = _ref2[1];
212
169
  if (!_this4.backoffCall) {
213
- var msg = 'mercury: prevent socket open when backoffCall no longer defined';
214
-
170
+ var msg = "".concat(_this4.namespace, ": prevent socket open when backoffCall no longer defined");
215
171
  _this4.logger.info(msg);
216
-
217
172
  return _promise.default.reject(new Error(msg));
218
173
  }
219
-
220
174
  attemptWSUrl = webSocketUrl;
221
175
  var options = {
222
176
  forceCloseDelay: _this4.config.forceCloseDelay,
@@ -225,35 +179,26 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
225
179
  token: token.toString(),
226
180
  trackingId: "".concat(_this4.webex.sessionId, "_").concat((0, _now.default)()),
227
181
  logger: _this4.logger
228
- }; // if the consumer has supplied request options use them
182
+ };
229
183
 
184
+ // if the consumer has supplied request options use them
230
185
  if (_this4.webex.config.defaultMercuryOptions) {
231
- _this4.logger.info('mercury: setting custom options');
232
-
186
+ _this4.logger.info("".concat(_this4.namespace, ": setting custom options"));
233
187
  options = _objectSpread(_objectSpread({}, options), _this4.webex.config.defaultMercuryOptions);
234
- } // Set the socket before opening it. This allows a disconnect() to close
235
- // the socket if it is in the process of being opened.
236
-
188
+ }
237
189
 
190
+ // Set the socket before opening it. This allows a disconnect() to close
191
+ // the socket if it is in the process of being opened.
238
192
  _this4.socket = socket;
193
+ _this4.logger.info("".concat(_this4.namespace, " connection url: ").concat(webSocketUrl));
239
194
  return socket.open(webSocketUrl, options);
240
195
  }).then(function () {
241
- _this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
242
- fields: {
243
- success: true
244
- },
245
- tags: {
246
- action: 'connected',
247
- url: attemptWSUrl
248
- }
249
- });
250
-
196
+ _this4.logger.info("".concat(_this4.namespace, ": connected to mercury, success, action: connected, url: ").concat(attemptWSUrl));
251
197
  callback();
252
198
  return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
253
199
  if (haMessagingEnabled) {
254
200
  return _this4.webex.internal.device.refresh();
255
201
  }
256
-
257
202
  return _promise.default.resolve();
258
203
  });
259
204
  }).catch(function (reason) {
@@ -266,29 +211,25 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
266
211
  retries: _this4.backoffCall.getNumRetries()
267
212
  });
268
213
  }
269
-
270
- _this4.logger.info('mercury: connection attempt failed', reason); // UnknownResponse is produced by IE for any 4XXX; treated it like a bad
214
+ _this4.logger.info("".concat(_this4.namespace, ": connection attempt failed"), reason);
215
+ // UnknownResponse is produced by IE for any 4XXX; treated it like a bad
271
216
  // web socket url and let WDM handle the token checking
272
-
273
-
274
217
  if (reason instanceof _errors.UnknownResponse) {
275
- _this4.logger.info('mercury: received unknown response code, refreshing device registration');
276
-
218
+ _this4.logger.info("".concat(_this4.namespace, ": received unknown response code, refreshing device registration"));
277
219
  return _this4.webex.internal.device.refresh().then(function () {
278
220
  return callback(reason);
279
221
  });
280
- } // NotAuthorized implies expired token
281
-
282
-
222
+ }
223
+ // NotAuthorized implies expired token
283
224
  if (reason instanceof _errors.NotAuthorized) {
284
- _this4.logger.info('mercury: received authorization error, reauthorizing');
285
-
225
+ _this4.logger.info("".concat(_this4.namespace, ": received authorization error, reauthorizing"));
286
226
  return _this4.webex.credentials.refresh({
287
227
  force: true
288
228
  }).then(function () {
289
229
  return callback(reason);
290
230
  });
291
- } // // NotFound implies expired web socket url
231
+ }
232
+ // // NotFound implies expired web socket url
292
233
  // else if (reason instanceof NotFound) {
293
234
  // this.logger.info(`mercury: received not found error, refreshing device registration`);
294
235
  // return this.webex.internal.device.refresh()
@@ -296,264 +237,205 @@ var Mercury = _webexCore.WebexPlugin.extend((_dec = (0, _common.deprecated)('Mer
296
237
  // }
297
238
  // BadRequest implies current credentials are for a Service Account
298
239
  // Forbidden implies current user is not entitle for Webex
299
-
300
-
301
240
  if (reason instanceof _errors.BadRequest || reason instanceof _errors.Forbidden) {
302
- _this4.logger.warn('mercury: received unrecoverable response from mercury');
303
-
241
+ _this4.logger.warn("".concat(_this4.namespace, ": received unrecoverable response from mercury"));
304
242
  _this4.backoffCall.abort();
305
-
306
243
  return callback(reason);
307
244
  }
308
-
309
245
  if (reason instanceof _errors.ConnectionError) {
310
246
  return _this4.webex.internal.feature.getFeature('developer', 'web-high-availability').then(function (haMessagingEnabled) {
311
247
  if (haMessagingEnabled) {
312
- _this4.logger.info('mercury: received a generic connection error, will try to connect to another datacenter');
313
-
314
- _this4.webex.internal.metrics.submitClientMetrics('web-ha-mercury', {
315
- fields: {
316
- success: false
317
- },
318
- tags: {
319
- action: 'failed',
320
- error: reason.message,
321
- url: attemptWSUrl
322
- }
323
- });
324
-
248
+ _this4.logger.info("".concat(_this4.namespace, ": received a generic connection error, will try to connect to another datacenter. failed, action: 'failed', url: ").concat(attemptWSUrl, " error: ").concat(reason.message));
325
249
  return _this4.webex.internal.services.markFailedUrl(attemptWSUrl);
326
250
  }
327
-
328
251
  return null;
329
252
  }).then(function () {
330
253
  return callback(reason);
331
254
  });
332
255
  }
333
-
334
256
  return callback(reason);
335
257
  }).catch(function (reason) {
336
- _this4.logger.error('mercury: failed to handle connection failure', reason);
337
-
258
+ _this4.logger.error("".concat(_this4.namespace, ": failed to handle connection failure"), reason);
338
259
  callback(reason);
339
260
  });
340
261
  },
341
262
  _connectWithBackoff: function _connectWithBackoff(webSocketUrl) {
342
263
  var _this5 = this;
343
-
344
264
  return new _promise.default(function (resolve, reject) {
345
265
  // eslint gets confused about whether or not call is actually used
346
266
  // eslint-disable-next-line prefer-const
347
267
  var call;
348
-
349
268
  var onComplete = function onComplete(err) {
350
269
  _this5.connecting = false;
351
270
  _this5.backoffCall = undefined;
352
-
353
271
  if (err) {
354
- _this5.logger.info("mercury: failed to connect after ".concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
355
-
272
+ _this5.logger.info("".concat(_this5.namespace, ": failed to connect after ").concat(call.getNumRetries(), " retries; log statement about next retry was inaccurate; ").concat(err));
356
273
  return reject(err);
357
274
  }
358
-
359
275
  _this5.connected = true;
360
-
276
+ _this5.hasEverConnected = true;
361
277
  _this5._emit('online');
362
-
363
278
  return resolve();
364
- }; // eslint-disable-next-line prefer-reflect
365
-
279
+ };
366
280
 
281
+ // eslint-disable-next-line prefer-reflect
367
282
  call = _backoff.default.call(function (callback) {
368
- _this5.logger.info("mercury: executing connection attempt ".concat(call.getNumRetries()));
369
-
283
+ _this5.logger.info("".concat(_this5.namespace, ": executing connection attempt ").concat(call.getNumRetries()));
370
284
  _this5._attemptConnection(webSocketUrl, callback);
371
285
  }, onComplete);
372
286
  call.setStrategy(new _backoff.default.ExponentialStrategy({
373
287
  initialDelay: _this5.config.backoffTimeReset,
374
288
  maxDelay: _this5.config.backoffTimeMax
375
289
  }));
376
-
377
- if (_this5.config.maxRetries) {
290
+ if (_this5.config.initialConnectionMaxRetries && !_this5.hasEverConnected) {
291
+ call.failAfter(_this5.config.initialConnectionMaxRetries);
292
+ } else if (_this5.config.maxRetries) {
378
293
  call.failAfter(_this5.config.maxRetries);
379
294
  }
380
-
381
295
  call.on('abort', function () {
382
- _this5.logger.info('mercury: connection aborted');
383
-
296
+ _this5.logger.info("".concat(_this5.namespace, ": connection aborted"));
384
297
  reject(new Error('Mercury Connection Aborted'));
385
298
  });
386
299
  call.on('callback', function (err) {
387
300
  if (err) {
388
301
  var number = call.getNumRetries();
389
302
  var delay = Math.min(call.strategy_.nextBackoffDelay_, _this5.config.backoffTimeMax);
390
-
391
- _this5.logger.info("mercury: failed to connect; attempting retry ".concat(number + 1, " in ").concat(delay, " ms"));
303
+ _this5.logger.info("".concat(_this5.namespace, ": failed to connect; attempting retry ").concat(number + 1, " in ").concat(delay, " ms"));
392
304
  /* istanbul ignore if */
393
-
394
-
395
305
  if (process.env.NODE_ENV === 'development') {
396
- _this5.logger.debug('mercury: ', err, err.stack);
306
+ _this5.logger.debug("".concat(_this5.namespace, ": "), err, err.stack);
397
307
  }
398
-
399
308
  return;
400
309
  }
401
-
402
- _this5.logger.info('mercury: connected');
310
+ _this5.logger.info("".concat(_this5.namespace, ": connected"));
403
311
  });
404
312
  call.start();
405
313
  _this5.backoffCall = call;
406
314
  });
407
315
  },
408
316
  _emit: function _emit() {
317
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
318
+ args[_key3] = arguments[_key3];
319
+ }
409
320
  try {
410
- this.trigger.apply(this, arguments);
321
+ this.trigger.apply(this, args);
411
322
  } catch (error) {
412
- this.logger.error('mercury: error occurred in event handler', error);
323
+ this.logger.error("".concat(this.namespace, ": error occurred in event handler"), {
324
+ error: error,
325
+ arguments: args
326
+ });
413
327
  }
414
328
  },
415
329
  _getEventHandlers: function _getEventHandlers(eventType) {
416
330
  var _eventType$split = eventType.split('.'),
417
- _eventType$split2 = (0, _slicedToArray2.default)(_eventType$split, 2),
418
- namespace = _eventType$split2[0],
419
- name = _eventType$split2[1];
420
-
331
+ _eventType$split2 = (0, _slicedToArray2.default)(_eventType$split, 2),
332
+ namespace = _eventType$split2[0],
333
+ name = _eventType$split2[1];
421
334
  var handlers = [];
422
-
423
335
  if (!this.webex[namespace] && !this.webex.internal[namespace]) {
424
336
  return handlers;
425
337
  }
426
-
427
338
  var handlerName = (0, _camelCase2.default)("process_".concat(name, "_event"));
428
-
429
339
  if ((this.webex[namespace] || this.webex.internal[namespace])[handlerName]) {
430
340
  handlers.push({
431
341
  name: handlerName,
432
342
  namespace: namespace
433
343
  });
434
344
  }
435
-
436
345
  return handlers;
437
346
  },
438
347
  _onclose: function _onclose(event) {
439
348
  // I don't see any way to avoid the complexity or statement count in here.
440
-
441
349
  /* eslint complexity: [0] */
350
+
442
351
  try {
443
352
  var reason = event.reason && event.reason.toLowerCase();
444
353
  var socketUrl = this.socket.url;
445
354
  this.socket.removeAllListeners();
446
355
  this.unset('socket');
447
356
  this.connected = false;
448
-
449
357
  this._emit('offline', event);
450
-
451
358
  switch (event.code) {
452
359
  case 1003:
453
360
  // metric: disconnect
454
- this.logger.info("mercury: Mercury service rejected last message; will not reconnect: ".concat(event.reason));
455
-
361
+ this.logger.info("".concat(this.namespace, ": Mercury service rejected last message; will not reconnect: ").concat(event.reason));
456
362
  this._emit('offline.permanent', event);
457
-
458
363
  break;
459
-
460
364
  case 4000:
461
365
  // metric: disconnect
462
- this.logger.info('mercury: socket replaced; will not reconnect');
463
-
366
+ this.logger.info("".concat(this.namespace, ": socket replaced; will not reconnect"));
464
367
  this._emit('offline.replaced', event);
465
-
466
368
  break;
467
-
468
369
  case 1001:
469
370
  case 1005:
470
371
  case 1006:
471
372
  case 1011:
472
- this.logger.info('mercury: socket disconnected; reconnecting');
473
-
373
+ this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
474
374
  this._emit('offline.transient', event);
475
-
476
- this._reconnect(socketUrl); // metric: disconnect
375
+ this._reconnect(socketUrl);
376
+ // metric: disconnect
477
377
  // if (code == 1011 && reason !== ping error) metric: unexpected disconnect
478
-
479
-
480
378
  break;
481
-
482
379
  case 1000:
483
380
  if (normalReconnectReasons.includes(reason)) {
484
- this.logger.info('mercury: socket disconnected; reconnecting');
485
-
381
+ this.logger.info("".concat(this.namespace, ": socket disconnected; reconnecting"));
486
382
  this._emit('offline.transient', event);
487
-
488
- this._reconnect(socketUrl); // metric: disconnect
383
+ this._reconnect(socketUrl);
384
+ // metric: disconnect
489
385
  // if (reason === done forced) metric: force closure
490
-
491
386
  } else {
492
- this.logger.info('mercury: socket disconnected; will not reconnect');
493
-
387
+ this.logger.info("".concat(this.namespace, ": socket disconnected; will not reconnect"));
494
388
  this._emit('offline.permanent', event);
495
389
  }
496
-
497
390
  break;
498
-
499
391
  default:
500
- this.logger.info('mercury: socket disconnected unexpectedly; will not reconnect'); // unexpected disconnect
501
-
392
+ this.logger.info("".concat(this.namespace, ": socket disconnected unexpectedly; will not reconnect"));
393
+ // unexpected disconnect
502
394
  this._emit('offline.permanent', event);
503
-
504
395
  }
505
396
  } catch (error) {
506
- this.logger.error('mercury: error occurred in close handler', error);
397
+ this.logger.error("".concat(this.namespace, ": error occurred in close handler"), error);
507
398
  }
508
399
  },
509
400
  _onmessage: function _onmessage(event) {
510
401
  var _this6 = this;
511
-
512
402
  var envelope = event.data;
513
-
514
403
  if (process.env.ENABLE_MERCURY_LOGGING) {
515
- this.logger.debug('mercury: message envelope: ', envelope);
404
+ this.logger.debug("".concat(this.namespace, ": message envelope: "), envelope);
516
405
  }
517
-
518
406
  var data = envelope.data;
519
-
520
407
  this._applyOverrides(data);
521
-
522
408
  return this._getEventHandlers(data.eventType).reduce(function (promise, handler) {
523
409
  return promise.then(function () {
524
410
  var namespace = handler.namespace,
525
- name = handler.name;
411
+ name = handler.name;
526
412
  return new _promise.default(function (resolve) {
527
413
  return resolve((_this6.webex[namespace] || _this6.webex.internal[namespace])[name](data));
528
414
  }).catch(function (reason) {
529
- return _this6.logger.error("mercury: error occurred in autowired event handler for ".concat(data.eventType), reason);
415
+ return _this6.logger.error("".concat(_this6.namespace, ": error occurred in autowired event handler for ").concat(data.eventType), reason);
530
416
  });
531
417
  });
532
418
  }, _promise.default.resolve()).then(function () {
533
419
  _this6._emit('event', event.data);
534
-
535
420
  var _data$eventType$split = data.eventType.split('.'),
536
- _data$eventType$split2 = (0, _slicedToArray2.default)(_data$eventType$split, 1),
537
- namespace = _data$eventType$split2[0];
538
-
421
+ _data$eventType$split2 = (0, _slicedToArray2.default)(_data$eventType$split, 1),
422
+ namespace = _data$eventType$split2[0];
539
423
  if (namespace === data.eventType) {
540
424
  _this6._emit("event:".concat(namespace), envelope);
541
425
  } else {
542
426
  _this6._emit("event:".concat(namespace), envelope);
543
-
544
427
  _this6._emit("event:".concat(data.eventType), envelope);
545
428
  }
546
429
  }).catch(function (reason) {
547
- _this6.logger.error('mercury: error occurred processing socket message', reason);
430
+ _this6.logger.error("".concat(_this6.namespace, ": error occurred processing socket message"), reason);
548
431
  });
549
432
  },
550
433
  _reconnect: function _reconnect(webSocketUrl) {
551
- this.logger.info('mercury: reconnecting');
434
+ this.logger.info("".concat(this.namespace, ": reconnecting"));
552
435
  return this.connect(webSocketUrl);
553
436
  },
554
- version: "3.0.0-beta.4"
437
+ version: "3.0.0-beta.400"
555
438
  }, ((0, _applyDecoratedDescriptor2.default)(_obj, "connect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "connect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "disconnect", [_common.oneFlight], (0, _getOwnPropertyDescriptor.default)(_obj, "disconnect"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "listen", [_dec], (0, _getOwnPropertyDescriptor.default)(_obj, "listen"), _obj), (0, _applyDecoratedDescriptor2.default)(_obj, "stopListening", [_dec2], (0, _getOwnPropertyDescriptor.default)(_obj, "stopListening"), _obj)), _obj)));
556
-
557
439
  var _default = Mercury;
558
440
  exports.default = _default;
559
441
  //# sourceMappingURL=mercury.js.map