@webex/plugin-meetings 3.7.0-next.1 → 3.7.0-next.3

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.
@@ -39,6 +39,7 @@ var _lodash = require("lodash");
39
39
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
40
40
  var _webexCore = require("@webex/webex-core");
41
41
  var _common = require("@webex/common");
42
+ var _commonTimers = require("@webex/common-timers");
42
43
  var _internalPluginMetrics = require("@webex/internal-plugin-metrics");
43
44
  var _internalMediaCore = require("@webex/internal-media-core");
44
45
  var _mediaHelpers = require("@webex/media-helpers");
@@ -552,6 +553,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
552
553
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidateErrors", void 0);
553
554
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "iceCandidatesCount", void 0);
554
555
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "rtcMetrics", void 0);
556
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "uploadLogsTimer", void 0);
557
+ (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "logUploadIntervalIndex", void 0);
555
558
  /**
556
559
  * Callback called when a relay event is received from meeting LLM Connection
557
560
  * @param {RelayEvent} e Event object coming from LLM Connection
@@ -1434,6 +1437,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1434
1437
  _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ".concat(_this.id));
1435
1438
  _this.callStateForMetrics.correlationId = _this.id;
1436
1439
  }
1440
+ _this.logUploadIntervalIndex = 0;
1441
+
1437
1442
  /**
1438
1443
  * @instance
1439
1444
  * @type {String}
@@ -3740,6 +3745,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3740
3745
  }
3741
3746
  });
3742
3747
  }
3748
+ _metrics.default.sendBehavioralMetric(_constants2.default.GUEST_ENTERED_LOBBY, {
3749
+ correlation_id: _this20.correlationId
3750
+ });
3743
3751
  _this20.updateLLMConnection();
3744
3752
  });
3745
3753
  this.locusInfo.on(_constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, /*#__PURE__*/function () {
@@ -3764,6 +3772,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
3764
3772
  meetingId: _this20.id
3765
3773
  }
3766
3774
  });
3775
+ _metrics.default.sendBehavioralMetric(_constants2.default.GUEST_EXITED_LOBBY, {
3776
+ correlation_id: _this20.correlationId
3777
+ });
3767
3778
  }
3768
3779
  (_this20$rtcMetrics = _this20.rtcMetrics) === null || _this20$rtcMetrics === void 0 ? void 0 : _this20$rtcMetrics.sendNextMetrics();
3769
3780
  _this20.updateLLMConnection();
@@ -4488,6 +4499,64 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4488
4499
  _triggerProxy.default.trigger(this, options, _constants.EVENTS.REQUEST_UPLOAD_LOGS, this);
4489
4500
  }
4490
4501
 
4502
+ /**
4503
+ * sets the timer for periodic log upload
4504
+ * @returns {void}
4505
+ */
4506
+ }, {
4507
+ key: "setLogUploadTimer",
4508
+ value: function setLogUploadTimer() {
4509
+ var _this23 = this;
4510
+ // start with short timeouts and increase them later on so in case users have very long multi-hour meetings we don't get too fragmented logs
4511
+ var LOG_UPLOAD_INTERVALS = [0.1, 1, 15, 15, 30, 30, 30, 60];
4512
+ var delay = 1000 *
4513
+ // @ts-ignore - config coming from registerPlugin
4514
+ this.config.logUploadIntervalMultiplicationFactor * LOG_UPLOAD_INTERVALS[this.logUploadIntervalIndex];
4515
+ if (this.logUploadIntervalIndex < LOG_UPLOAD_INTERVALS.length - 1) {
4516
+ this.logUploadIntervalIndex += 1;
4517
+ }
4518
+ this.uploadLogsTimer = (0, _commonTimers.safeSetTimeout)(function () {
4519
+ _this23.uploadLogsTimer = undefined;
4520
+ _this23.uploadLogs();
4521
+
4522
+ // just as an extra precaution, to avoid uploading logs forever in case something goes wrong
4523
+ // and the page remains opened, we stop it if there is no media connection
4524
+ if (!_this23.mediaProperties.webrtcMediaConnection) {
4525
+ return;
4526
+ }
4527
+ _this23.setLogUploadTimer();
4528
+ }, delay);
4529
+ }
4530
+
4531
+ /**
4532
+ * Starts a periodic upload of logs
4533
+ *
4534
+ * @returns {undefined}
4535
+ */
4536
+ }, {
4537
+ key: "startPeriodicLogUpload",
4538
+ value: function startPeriodicLogUpload() {
4539
+ // @ts-ignore - config coming from registerPlugin
4540
+ if (this.config.logUploadIntervalMultiplicationFactor && !this.uploadLogsTimer) {
4541
+ this.logUploadIntervalIndex = 0;
4542
+ this.setLogUploadTimer();
4543
+ }
4544
+ }
4545
+
4546
+ /**
4547
+ * Stops the periodic upload of logs
4548
+ *
4549
+ * @returns {undefined}
4550
+ */
4551
+ }, {
4552
+ key: "stopPeriodicLogUpload",
4553
+ value: function stopPeriodicLogUpload() {
4554
+ if (this.uploadLogsTimer) {
4555
+ clearTimeout(this.uploadLogsTimer);
4556
+ this.uploadLogsTimer = undefined;
4557
+ }
4558
+ }
4559
+
4491
4560
  /**
4492
4561
  * Removes remote audio, video and share streams from class instance's mediaProperties
4493
4562
  * @returns {undefined}
@@ -4522,7 +4591,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4522
4591
  }, {
4523
4592
  key: "closeRemoteStreams",
4524
4593
  value: function closeRemoteStreams() {
4525
- var _this23 = this;
4594
+ var _this24 = this;
4526
4595
  var _this$mediaProperties4 = this.mediaProperties,
4527
4596
  remoteAudioStream = _this$mediaProperties4.remoteAudioStream,
4528
4597
  remoteVideoStream = _this$mediaProperties4.remoteVideoStream,
@@ -4536,7 +4605,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4536
4605
  */
4537
4606
  // eslint-disable-next-line @typescript-eslint/no-shadow
4538
4607
  var triggerMediaStoppedEvent = function triggerMediaStoppedEvent(mediaType) {
4539
- _triggerProxy.default.trigger(_this23, {
4608
+ _triggerProxy.default.trigger(_this24, {
4540
4609
  file: 'meeting/index',
4541
4610
  function: 'closeRemoteStreams'
4542
4611
  }, _constants.EVENT_TRIGGERS.MEDIA_STOPPED, {
@@ -4844,7 +4913,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4844
4913
  }, {
4845
4914
  key: "setMercuryListener",
4846
4915
  value: function setMercuryListener() {
4847
- var _this24 = this;
4916
+ var _this25 = this;
4848
4917
  // Client will have a socket manager and handle reconnecting to mercury, when we reconnect to mercury
4849
4918
  // if the meeting has active peer connections, it should try to reconnect.
4850
4919
  // @ts-ignore
@@ -4852,33 +4921,33 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4852
4921
  _loggerProxy.default.logger.info('Meeting:index#setMercuryListener --> Web socket online');
4853
4922
 
4854
4923
  // Only send restore event when it was disconnected before and for connected later
4855
- if (!_this24.hasWebsocketConnected) {
4924
+ if (!_this25.hasWebsocketConnected) {
4856
4925
  // @ts-ignore
4857
- _this24.webex.internal.newMetrics.submitClientEvent({
4926
+ _this25.webex.internal.newMetrics.submitClientEvent({
4858
4927
  name: 'client.mercury.connection.restored',
4859
4928
  options: {
4860
- meetingId: _this24.id
4929
+ meetingId: _this25.id
4861
4930
  }
4862
4931
  });
4863
4932
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_RESTORED, {
4864
- correlation_id: _this24.correlationId
4933
+ correlation_id: _this25.correlationId
4865
4934
  });
4866
4935
  }
4867
- _this24.hasWebsocketConnected = true;
4936
+ _this25.hasWebsocketConnected = true;
4868
4937
  });
4869
4938
 
4870
4939
  // @ts-ignore
4871
4940
  this.webex.internal.mercury.on(_constants.OFFLINE, function () {
4872
4941
  _loggerProxy.default.logger.error('Meeting:index#setMercuryListener --> Web socket offline');
4873
4942
  // @ts-ignore
4874
- _this24.webex.internal.newMetrics.submitClientEvent({
4943
+ _this25.webex.internal.newMetrics.submitClientEvent({
4875
4944
  name: 'client.mercury.connection.lost',
4876
4945
  options: {
4877
- meetingId: _this24.id
4946
+ meetingId: _this25.id
4878
4947
  }
4879
4948
  });
4880
4949
  _metrics.default.sendBehavioralMetric(_constants2.default.MERCURY_CONNECTION_FAILURE, {
4881
- correlation_id: _this24.correlationId
4950
+ correlation_id: _this25.correlationId
4882
4951
  });
4883
4952
  });
4884
4953
  }
@@ -4980,7 +5049,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4980
5049
  }, {
4981
5050
  key: "muteAudio",
4982
5051
  value: function muteAudio() {
4983
- var _this25 = this;
5052
+ var _this26 = this;
4984
5053
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
4985
5054
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
4986
5055
  }
@@ -4996,22 +5065,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
4996
5065
 
4997
5066
  // First, stop sending the local audio media
4998
5067
  return logRequest(this.audio.handleClientRequest(this, true).then(function () {
4999
- _util2.default.handleAudioLogging(_this25.mediaProperties.audioStream);
5068
+ _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
5000
5069
  // @ts-ignore
5001
- _this25.webex.internal.newMetrics.submitClientEvent({
5070
+ _this26.webex.internal.newMetrics.submitClientEvent({
5002
5071
  name: 'client.muted',
5003
5072
  payload: {
5004
5073
  trigger: 'user-interaction',
5005
5074
  mediaType: 'audio'
5006
5075
  },
5007
5076
  options: {
5008
- meetingId: _this25.id
5077
+ meetingId: _this26.id
5009
5078
  }
5010
5079
  });
5011
5080
  }).catch(function (error) {
5012
5081
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_AUDIO_FAILURE, {
5013
- correlation_id: _this25.correlationId,
5014
- locus_id: _this25.locusUrl.split('/').pop(),
5082
+ correlation_id: _this26.correlationId,
5083
+ locus_id: _this26.locusUrl.split('/').pop(),
5015
5084
  reason: error.message,
5016
5085
  stack: error.stack
5017
5086
  });
@@ -5030,7 +5099,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5030
5099
  }, {
5031
5100
  key: "unmuteAudio",
5032
5101
  value: function unmuteAudio() {
5033
- var _this26 = this;
5102
+ var _this27 = this;
5034
5103
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5035
5104
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5036
5105
  }
@@ -5046,22 +5115,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5046
5115
 
5047
5116
  // First, send the control to unmute the participant on the server
5048
5117
  return logRequest(this.audio.handleClientRequest(this, false).then(function () {
5049
- _util2.default.handleAudioLogging(_this26.mediaProperties.audioStream);
5118
+ _util2.default.handleAudioLogging(_this27.mediaProperties.audioStream);
5050
5119
  // @ts-ignore
5051
- _this26.webex.internal.newMetrics.submitClientEvent({
5120
+ _this27.webex.internal.newMetrics.submitClientEvent({
5052
5121
  name: 'client.unmuted',
5053
5122
  payload: {
5054
5123
  trigger: 'user-interaction',
5055
5124
  mediaType: 'audio'
5056
5125
  },
5057
5126
  options: {
5058
- meetingId: _this26.id
5127
+ meetingId: _this27.id
5059
5128
  }
5060
5129
  });
5061
5130
  }).catch(function (error) {
5062
5131
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_AUDIO_FAILURE, {
5063
- correlation_id: _this26.correlationId,
5064
- locus_id: _this26.locusUrl.split('/').pop(),
5132
+ correlation_id: _this27.correlationId,
5133
+ locus_id: _this27.locusUrl.split('/').pop(),
5065
5134
  reason: error.message,
5066
5135
  stack: error.stack
5067
5136
  });
@@ -5080,7 +5149,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5080
5149
  }, {
5081
5150
  key: "muteVideo",
5082
5151
  value: function muteVideo() {
5083
- var _this27 = this;
5152
+ var _this28 = this;
5084
5153
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5085
5154
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5086
5155
  }
@@ -5094,22 +5163,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5094
5163
  return _promise.default.reject(new _parameter.default('no video control associated to the meeting'));
5095
5164
  }
5096
5165
  return logRequest(this.video.handleClientRequest(this, true).then(function () {
5097
- _util2.default.handleVideoLogging(_this27.mediaProperties.videoStream);
5166
+ _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5098
5167
  // @ts-ignore
5099
- _this27.webex.internal.newMetrics.submitClientEvent({
5168
+ _this28.webex.internal.newMetrics.submitClientEvent({
5100
5169
  name: 'client.muted',
5101
5170
  payload: {
5102
5171
  trigger: 'user-interaction',
5103
5172
  mediaType: 'video'
5104
5173
  },
5105
5174
  options: {
5106
- meetingId: _this27.id
5175
+ meetingId: _this28.id
5107
5176
  }
5108
5177
  });
5109
5178
  }).catch(function (error) {
5110
5179
  _metrics.default.sendBehavioralMetric(_constants2.default.MUTE_VIDEO_FAILURE, {
5111
- correlation_id: _this27.correlationId,
5112
- locus_id: _this27.locusUrl.split('/').pop(),
5180
+ correlation_id: _this28.correlationId,
5181
+ locus_id: _this28.locusUrl.split('/').pop(),
5113
5182
  reason: error.message,
5114
5183
  stack: error.stack
5115
5184
  });
@@ -5128,7 +5197,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5128
5197
  }, {
5129
5198
  key: "unmuteVideo",
5130
5199
  value: function unmuteVideo() {
5131
- var _this28 = this;
5200
+ var _this29 = this;
5132
5201
  if (!_util2.default.isUserInJoinedState(this.locusInfo)) {
5133
5202
  return _promise.default.reject(new _webexErrors.UserNotJoinedError());
5134
5203
  }
@@ -5142,22 +5211,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5142
5211
  return _promise.default.reject(new _parameter.default('no audio control associated to the meeting'));
5143
5212
  }
5144
5213
  return logRequest(this.video.handleClientRequest(this, false).then(function () {
5145
- _util2.default.handleVideoLogging(_this28.mediaProperties.videoStream);
5214
+ _util2.default.handleVideoLogging(_this29.mediaProperties.videoStream);
5146
5215
  // @ts-ignore
5147
- _this28.webex.internal.newMetrics.submitClientEvent({
5216
+ _this29.webex.internal.newMetrics.submitClientEvent({
5148
5217
  name: 'client.unmuted',
5149
5218
  payload: {
5150
5219
  trigger: 'user-interaction',
5151
5220
  mediaType: 'video'
5152
5221
  },
5153
5222
  options: {
5154
- meetingId: _this28.id
5223
+ meetingId: _this29.id
5155
5224
  }
5156
5225
  });
5157
5226
  }).catch(function (error) {
5158
5227
  _metrics.default.sendBehavioralMetric(_constants2.default.UNMUTE_VIDEO_FAILURE, {
5159
- correlation_id: _this28.correlationId,
5160
- locus_id: _this28.locusUrl.split('/').pop(),
5228
+ correlation_id: _this29.correlationId,
5229
+ locus_id: _this29.locusUrl.split('/').pop(),
5161
5230
  reason: error.message,
5162
5231
  stack: error.stack
5163
5232
  });
@@ -5187,7 +5256,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5187
5256
  key: "joinWithMedia",
5188
5257
  value: (function () {
5189
5258
  var _joinWithMedia = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
5190
- var _this29 = this;
5259
+ var _this30 = this;
5191
5260
  var options,
5192
5261
  mediaOptions,
5193
5262
  _options$joinOptions,
@@ -5270,7 +5339,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5270
5339
  case 35:
5271
5340
  _context15.next = 37;
5272
5341
  return this.addMediaInternal(function () {
5273
- return _this29.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5342
+ return _this30.joinWithMediaRetryInfo.isRetry ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
5274
5343
  }, turnServerInfo, forceTurnDiscovery, mediaOptions);
5275
5344
  case 37:
5276
5345
  mediaResponse = _context15.sent;
@@ -5362,7 +5431,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5362
5431
  }, {
5363
5432
  key: "reconnect",
5364
5433
  value: function reconnect(options) {
5365
- var _this30 = this;
5434
+ var _this31 = this;
5366
5435
  _loggerProxy.default.logger.log("Meeting:index#reconnect --> attempting to reconnect meeting ".concat(this.id));
5367
5436
  if (!this.reconnectionManager || !this.reconnectionManager.reconnect) {
5368
5437
  return _promise.default.reject(new _parameter.default('Cannot reconnect, ReconnectionManager must first be defined.'));
@@ -5378,10 +5447,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5378
5447
  while (1) switch (_context16.prev = _context16.next) {
5379
5448
  case 0:
5380
5449
  _context16.next = 2;
5381
- return _this30.waitForRemoteSDPAnswer();
5450
+ return _this31.waitForRemoteSDPAnswer();
5382
5451
  case 2:
5383
5452
  _context16.next = 4;
5384
- return _this30.waitForMediaConnectionConnected();
5453
+ return _this31.waitForMediaConnectionConnected();
5385
5454
  case 4:
5386
5455
  case "end":
5387
5456
  return _context16.stop();
@@ -5395,7 +5464,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5395
5464
  return _promise.default.resolve();
5396
5465
  }
5397
5466
  _loggerProxy.default.logger.error('Meeting:index#reconnect --> Meeting reconnect failed', error);
5398
- _this30.uploadLogs({
5467
+ _this31.uploadLogs({
5399
5468
  file: 'meeting/index',
5400
5469
  function: 'reconnect'
5401
5470
  });
@@ -5442,19 +5511,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5442
5511
  }, {
5443
5512
  key: "setCaptionLanguage",
5444
5513
  value: function setCaptionLanguage(language) {
5445
- var _this31 = this;
5514
+ var _this32 = this;
5446
5515
  return new _promise.default(function (resolve, reject) {
5447
- if (!_this31.isTranscriptionSupported()) {
5516
+ if (!_this32.isTranscriptionSupported()) {
5448
5517
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5449
5518
  reject(new Error('Webex Assistant is not enabled/supported'));
5450
5519
  }
5451
5520
  try {
5452
5521
  var voiceaListenerCaptionUpdate = function voiceaListenerCaptionUpdate(payload) {
5453
5522
  // @ts-ignore
5454
- _this31.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5523
+ _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5455
5524
  var statusCode = payload.statusCode;
5456
5525
  if (statusCode === 200) {
5457
- _this31.transcription.languageOptions = _objectSpread(_objectSpread({}, _this31.transcription.languageOptions), {}, {
5526
+ _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5458
5527
  currentCaptionLanguage: language
5459
5528
  });
5460
5529
  resolve(language);
@@ -5463,9 +5532,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5463
5532
  }
5464
5533
  };
5465
5534
  // @ts-ignore
5466
- _this31.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5535
+ _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.CAPTION_LANGUAGE_UPDATE, voiceaListenerCaptionUpdate);
5467
5536
  // @ts-ignore
5468
- _this31.webex.internal.voicea.requestLanguage(language);
5537
+ _this32.webex.internal.voicea.requestLanguage(language);
5469
5538
  } catch (error) {
5470
5539
  _loggerProxy.default.logger.error("Meeting:index#setCaptionLanguage --> ".concat(error));
5471
5540
  reject(error);
@@ -5481,23 +5550,23 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5481
5550
  }, {
5482
5551
  key: "setSpokenLanguage",
5483
5552
  value: function setSpokenLanguage(language) {
5484
- var _this32 = this;
5553
+ var _this33 = this;
5485
5554
  return new _promise.default(function (resolve, reject) {
5486
- if (!_this32.isTranscriptionSupported()) {
5555
+ if (!_this33.isTranscriptionSupported()) {
5487
5556
  _loggerProxy.default.logger.error('Meeting:index#setCaptionLanguage --> Webex Assistant is not enabled/supported');
5488
5557
  reject(new Error('Webex Assistant is not enabled/supported'));
5489
5558
  }
5490
- if (_this32.getCurUserType() !== 'host') {
5559
+ if (_this33.getCurUserType() !== 'host') {
5491
5560
  _loggerProxy.default.logger.error('Meeting:index#setSpokenLanguage --> Only host can set spoken language');
5492
5561
  reject(new Error('Only host can set spoken language'));
5493
5562
  }
5494
5563
  try {
5495
5564
  var voiceaListenerLanguageUpdate = function voiceaListenerLanguageUpdate(payload) {
5496
5565
  // @ts-ignore
5497
- _this32.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5566
+ _this33.webex.internal.voicea.off(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5498
5567
  var languageCode = payload.languageCode;
5499
5568
  if (languageCode) {
5500
- _this32.transcription.languageOptions = _objectSpread(_objectSpread({}, _this32.transcription.languageOptions), {}, {
5569
+ _this33.transcription.languageOptions = _objectSpread(_objectSpread({}, _this33.transcription.languageOptions), {}, {
5501
5570
  currentSpokenLanguage: languageCode
5502
5571
  });
5503
5572
  resolve(languageCode);
@@ -5507,10 +5576,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5507
5576
  };
5508
5577
 
5509
5578
  // @ts-ignore
5510
- _this32.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5579
+ _this33.webex.internal.voicea.on(_internalPluginVoicea.EVENT_TRIGGERS.SPOKEN_LANGUAGE_UPDATE, voiceaListenerLanguageUpdate);
5511
5580
 
5512
5581
  // @ts-ignore
5513
- _this32.webex.internal.voicea.setSpokenLanguage(language);
5582
+ _this33.webex.internal.voicea.setSpokenLanguage(language);
5514
5583
  } catch (error) {
5515
5584
  _loggerProxy.default.logger.error("Meeting:index#setSpokenLanguage --> ".concat(error));
5516
5585
  reject(error);
@@ -5630,7 +5699,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5630
5699
  */
5631
5700
  function () {
5632
5701
  var _join = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18() {
5633
- var _this33 = this;
5702
+ var _this34 = this;
5634
5703
  var options,
5635
5704
  errorMessage,
5636
5705
  error,
@@ -5776,62 +5845,62 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5776
5845
  return _context18.abrupt("return", _promise.default.reject(_context18.t0));
5777
5846
  case 51:
5778
5847
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5779
- _this33.meetingFiniteStateMachine.join();
5780
- _this33.setupLocusMediaRequest();
5848
+ _this34.meetingFiniteStateMachine.join();
5849
+ _this34.setupLocusMediaRequest();
5781
5850
 
5782
5851
  // @ts-ignore
5783
- _this33.webex.internal.device.meetingStarted();
5784
- (0, _classPrivateFieldSet2.default)(_this33, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5852
+ _this34.webex.internal.device.meetingStarted();
5853
+ (0, _classPrivateFieldSet2.default)(_this34, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5785
5854
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5786
5855
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5787
- correlation_id: _this33.correlationId
5856
+ correlation_id: _this34.correlationId
5788
5857
  });
5789
5858
  joinSuccess(join);
5790
- _this33.deferJoin = undefined;
5859
+ _this34.deferJoin = undefined;
5791
5860
  return join;
5792
5861
  }).catch(function (error) {
5793
- var _this33$meetingInfo, _error$error;
5794
- _this33.meetingFiniteStateMachine.fail(error);
5862
+ var _this34$meetingInfo, _error$error;
5863
+ _this34.meetingFiniteStateMachine.fail(error);
5795
5864
  _loggerProxy.default.logger.error('Meeting:index#join --> Failed', error);
5796
5865
 
5797
5866
  // @ts-ignore
5798
- _this33.webex.internal.newMetrics.submitClientEvent({
5867
+ _this34.webex.internal.newMetrics.submitClientEvent({
5799
5868
  name: 'client.locus.join.response',
5800
5869
  payload: {
5801
5870
  identifiers: {
5802
- meetingLookupUrl: (_this33$meetingInfo = _this33.meetingInfo) === null || _this33$meetingInfo === void 0 ? void 0 : _this33$meetingInfo.meetingLookupUrl
5871
+ meetingLookupUrl: (_this34$meetingInfo = _this34.meetingInfo) === null || _this34$meetingInfo === void 0 ? void 0 : _this34$meetingInfo.meetingLookupUrl
5803
5872
  }
5804
5873
  },
5805
5874
  options: {
5806
- meetingId: _this33.id,
5875
+ meetingId: _this34.id,
5807
5876
  rawError: error
5808
5877
  }
5809
5878
  });
5810
5879
 
5811
5880
  // TODO: change this to error codes and pre defined dictionary
5812
5881
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_FAILURE, {
5813
- correlation_id: _this33.correlationId,
5882
+ correlation_id: _this34.correlationId,
5814
5883
  reason: (_error$error = error.error) === null || _error$error === void 0 ? void 0 : _error$error.message,
5815
5884
  stack: error.stack
5816
5885
  });
5817
5886
 
5818
5887
  // Upload logs on join Failure
5819
- _triggerProxy.default.trigger(_this33, {
5888
+ _triggerProxy.default.trigger(_this34, {
5820
5889
  file: 'meeting/index',
5821
5890
  function: 'join'
5822
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this33);
5891
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this34);
5823
5892
  joinFailed(error);
5824
- _this33.deferJoin = undefined;
5893
+ _this34.deferJoin = undefined;
5825
5894
  return _promise.default.reject(error);
5826
5895
  }).then(function (join) {
5827
5896
  // @ts-ignore - config coming from registerPlugin
5828
- if (_this33.config.enableAutomaticLLM) {
5897
+ if (_this34.config.enableAutomaticLLM) {
5829
5898
  // @ts-ignore
5830
- _this33.webex.internal.llm.on('online', _this33.handleLLMOnline);
5831
- _this33.updateLLMConnection().catch(function (error) {
5899
+ _this34.webex.internal.llm.on('online', _this34.handleLLMOnline);
5900
+ _this34.updateLLMConnection().catch(function (error) {
5832
5901
  _loggerProxy.default.logger.error('Meeting:index#join --> Transcription Socket Connection Failed', error);
5833
5902
  _metrics.default.sendBehavioralMetric(_constants2.default.LLM_CONNECTION_AFTER_JOIN_FAILURE, {
5834
- correlation_id: _this33.correlationId,
5903
+ correlation_id: _this34.correlationId,
5835
5904
  reason: error === null || error === void 0 ? void 0 : error.message,
5836
5905
  stack: error.stack
5837
5906
  });
@@ -5863,7 +5932,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5863
5932
  key: "updateLLMConnection",
5864
5933
  value: (function () {
5865
5934
  var _updateLLMConnection = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19() {
5866
- var _this34 = this;
5935
+ var _this35 = this;
5867
5936
  var _this$locusInfo6, url, _this$locusInfo6$info, _this$locusInfo6$info2, datachannelUrl, isJoined;
5868
5937
  return _regenerator.default.wrap(function _callee19$(_context19) {
5869
5938
  while (1) switch (_context19.prev = _context19.next) {
@@ -5899,9 +5968,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5899
5968
  case 10:
5900
5969
  return _context19.abrupt("return", this.webex.internal.llm.registerAndConnect(url, datachannelUrl).then(function (registerAndConnectResult) {
5901
5970
  // @ts-ignore - Fix type
5902
- _this34.webex.internal.llm.off('event:relay.event', _this34.processRelayEvent);
5971
+ _this35.webex.internal.llm.off('event:relay.event', _this35.processRelayEvent);
5903
5972
  // @ts-ignore - Fix type
5904
- _this34.webex.internal.llm.on('event:relay.event', _this34.processRelayEvent);
5973
+ _this35.webex.internal.llm.on('event:relay.event', _this35.processRelayEvent);
5905
5974
  _loggerProxy.default.logger.info('Meeting:index#updateLLMConnection --> enabled to receive relay events!');
5906
5975
  return _promise.default.resolve(registerAndConnectResult);
5907
5976
  }));
@@ -5955,7 +6024,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5955
6024
  }, {
5956
6025
  key: "dialInPstn",
5957
6026
  value: function dialInPstn() {
5958
- var _this35 = this;
6027
+ var _this36 = this;
5959
6028
  if (this.isPhoneProvisioned(this.dialInDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial in devices from being provisioned
5960
6029
 
5961
6030
  var correlationId = this.correlationId,
@@ -5971,10 +6040,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5971
6040
  }).catch(function (error) {
5972
6041
  var _error$error2;
5973
6042
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_IN_FAILURE, {
5974
- correlation_id: _this35.correlationId,
5975
- dial_in_url: _this35.dialInUrl,
6043
+ correlation_id: _this36.correlationId,
6044
+ dial_in_url: _this36.dialInUrl,
5976
6045
  locus_id: locusUrl.split('/').pop(),
5977
- client_url: _this35.deviceUrl,
6046
+ client_url: _this36.deviceUrl,
5978
6047
  reason: (_error$error2 = error.error) === null || _error$error2 === void 0 ? void 0 : _error$error2.message,
5979
6048
  stack: error.stack
5980
6049
  });
@@ -5992,7 +6061,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5992
6061
  }, {
5993
6062
  key: "dialOutPstn",
5994
6063
  value: function dialOutPstn(phoneNumber) {
5995
- var _this36 = this;
6064
+ var _this37 = this;
5996
6065
  if (this.isPhoneProvisioned(this.dialOutDeviceStatus)) return _promise.default.resolve(); // prevent multiple dial out devices from being provisioned
5997
6066
 
5998
6067
  var correlationId = this.correlationId,
@@ -6009,10 +6078,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6009
6078
  }).catch(function (error) {
6010
6079
  var _error$error3;
6011
6080
  _metrics.default.sendBehavioralMetric(_constants2.default.ADD_DIAL_OUT_FAILURE, {
6012
- correlation_id: _this36.correlationId,
6013
- dial_out_url: _this36.dialOutUrl,
6081
+ correlation_id: _this37.correlationId,
6082
+ dial_out_url: _this37.dialOutUrl,
6014
6083
  locus_id: locusUrl.split('/').pop(),
6015
- client_url: _this36.deviceUrl,
6084
+ client_url: _this37.deviceUrl,
6016
6085
  reason: (_error$error3 = error.error) === null || _error$error3 === void 0 ? void 0 : _error$error3.message,
6017
6086
  stack: error.stack
6018
6087
  });
@@ -6043,7 +6112,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6043
6112
  }, {
6044
6113
  key: "moveTo",
6045
6114
  value: function moveTo(resourceId) {
6046
- var _this37 = this;
6115
+ var _this38 = this;
6047
6116
  if (!resourceId) {
6048
6117
  throw new _parameter.default('Cannot move call without a resourceId.');
6049
6118
  }
@@ -6087,12 +6156,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6087
6156
  while (1) switch (_context20.prev = _context20.next) {
6088
6157
  case 0:
6089
6158
  _context20.prev = 0;
6090
- if (!(_this37.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6159
+ if (!(_this38.screenShareFloorState === ScreenShareFloorStatus.GRANTED)) {
6091
6160
  _context20.next = 4;
6092
6161
  break;
6093
6162
  }
6094
6163
  _context20.next = 4;
6095
- return _this37.releaseScreenShareFloor();
6164
+ return _this38.releaseScreenShareFloor();
6096
6165
  case 4:
6097
6166
  mediaSettings = {
6098
6167
  mediaDirection: {
@@ -6104,37 +6173,37 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6104
6173
  receiveShare: true
6105
6174
  }
6106
6175
  };
6107
- _this37.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6108
- _this37.mediaProperties.unsetRemoteMedia();
6176
+ _this38.mediaProperties.setMediaDirection(mediaSettings.mediaDirection);
6177
+ _this38.mediaProperties.unsetRemoteMedia();
6109
6178
 
6110
6179
  // when a move to is intiated by the client , Locus delets the existing media node from the server as soon the device answers the meeting
6111
6180
  // once the device answers we close the old connection and create new media server connection with only share enabled
6112
- if (!_this37.statsAnalyzer) {
6181
+ if (!_this38.statsAnalyzer) {
6113
6182
  _context20.next = 10;
6114
6183
  break;
6115
6184
  }
6116
6185
  _context20.next = 10;
6117
- return _this37.statsAnalyzer.stopAnalyzer();
6186
+ return _this38.statsAnalyzer.stopAnalyzer();
6118
6187
  case 10:
6119
6188
  _context20.next = 12;
6120
- return _this37.closeRemoteStreams();
6189
+ return _this38.closeRemoteStreams();
6121
6190
  case 12:
6122
6191
  _context20.next = 14;
6123
- return _this37.closePeerConnections();
6192
+ return _this38.closePeerConnections();
6124
6193
  case 14:
6125
- _this37.cleanupLocalStreams();
6126
- _this37.unsetRemoteStreams();
6127
- _this37.unsetPeerConnections();
6128
- _this37.reconnectionManager.cleanUp();
6194
+ _this38.cleanupLocalStreams();
6195
+ _this38.unsetRemoteStreams();
6196
+ _this38.unsetPeerConnections();
6197
+ _this38.reconnectionManager.cleanUp();
6129
6198
  _context20.next = 20;
6130
- return _this37.addMedia({
6199
+ return _this38.addMedia({
6131
6200
  audioEnabled: false,
6132
6201
  videoEnabled: false,
6133
6202
  shareVideoEnabled: true
6134
6203
  });
6135
6204
  case 20:
6136
6205
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_SUCCESS);
6137
- _this37.isMoveToInProgress = false;
6206
+ _this38.isMoveToInProgress = false;
6138
6207
  _context20.next = 29;
6139
6208
  break;
6140
6209
  case 24:
@@ -6142,12 +6211,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6142
6211
  _context20.t0 = _context20["catch"](0);
6143
6212
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', _context20.t0);
6144
6213
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6145
- correlation_id: _this37.correlationId,
6146
- locus_id: _this37.locusUrl.split('/').pop(),
6214
+ correlation_id: _this38.correlationId,
6215
+ locus_id: _this38.locusUrl.split('/').pop(),
6147
6216
  reason: _context20.t0.message,
6148
6217
  stack: _context20.t0.stack
6149
6218
  });
6150
- _this37.isMoveToInProgress = false;
6219
+ _this38.isMoveToInProgress = false;
6151
6220
  case 29:
6152
6221
  case "end":
6153
6222
  return _context20.stop();
@@ -6163,17 +6232,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6163
6232
  resourceId: resourceId,
6164
6233
  moveToResource: true
6165
6234
  }).then(function () {
6166
- _this37.meetingFiniteStateMachine.join();
6235
+ _this38.meetingFiniteStateMachine.join();
6167
6236
  }).catch(function (error) {
6168
- _this37.meetingFiniteStateMachine.fail(error);
6237
+ _this38.meetingFiniteStateMachine.fail(error);
6169
6238
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_TO_FAILURE, {
6170
- correlation_id: _this37.correlationId,
6171
- locus_id: _this37.locusUrl.split('/').pop(),
6239
+ correlation_id: _this38.correlationId,
6240
+ locus_id: _this38.locusUrl.split('/').pop(),
6172
6241
  reason: error.message,
6173
6242
  stack: error.stack
6174
6243
  });
6175
6244
  _loggerProxy.default.logger.error('Meeting:index#moveTo --> Failed to moveTo resourceId', error);
6176
- _this37.isMoveToInProgress = false;
6245
+ _this38.isMoveToInProgress = false;
6177
6246
  return _promise.default.reject(error);
6178
6247
  });
6179
6248
  }
@@ -6188,7 +6257,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6188
6257
  }, {
6189
6258
  key: "moveFrom",
6190
6259
  value: function moveFrom(resourceId) {
6191
- var _this38 = this;
6260
+ var _this39 = this;
6192
6261
  // On moveFrom ask the developer to re capture it moveFrom then updateMedia
6193
6262
  if (!resourceId) {
6194
6263
  throw new _parameter.default('Cannot move call without a resourceId.');
@@ -6203,19 +6272,19 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6203
6272
  }
6204
6273
  });
6205
6274
  return _util2.default.joinMeetingOptions(this).then(function () {
6206
- return _util2.default.leaveMeeting(_this38, {
6275
+ return _util2.default.leaveMeeting(_this39, {
6207
6276
  resourceId: resourceId,
6208
6277
  correlationId: oldCorrelationId,
6209
6278
  moveMeeting: true
6210
6279
  }).then(function () {
6211
- _this38.resourceId = '';
6280
+ _this39.resourceId = '';
6212
6281
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_SUCCESS);
6213
6282
  });
6214
6283
  }).catch(function (error) {
6215
- _this38.meetingFiniteStateMachine.fail(error);
6284
+ _this39.meetingFiniteStateMachine.fail(error);
6216
6285
  _metrics.default.sendBehavioralMetric(_constants2.default.MOVE_FROM_FAILURE, {
6217
- correlation_id: _this38.correlationId,
6218
- locus_id: _this38.locusUrl.split('/').pop(),
6286
+ correlation_id: _this39.correlationId,
6287
+ locus_id: _this39.locusUrl.split('/').pop(),
6219
6288
  reason: error.message,
6220
6289
  stack: error.stack
6221
6290
  });
@@ -6328,9 +6397,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6328
6397
  }, {
6329
6398
  key: "forwardEvent",
6330
6399
  value: function forwardEvent(eventEmitter, eventTypeToForward, meetingEventType) {
6331
- var _this39 = this;
6400
+ var _this40 = this;
6332
6401
  eventEmitter.on(eventTypeToForward, function (data) {
6333
- return _triggerProxy.default.trigger(_this39, {
6402
+ return _triggerProxy.default.trigger(_this40, {
6334
6403
  file: 'meetings',
6335
6404
  function: 'addMedia'
6336
6405
  }, meetingEventType, data);
@@ -6517,7 +6586,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6517
6586
  */
6518
6587
  function () {
6519
6588
  var _waitForRemoteSDPAnswer = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24() {
6520
- var _this40 = this;
6589
+ var _this41 = this;
6521
6590
  var LOG_HEADER, deferSDPAnswer;
6522
6591
  return _regenerator.default.wrap(function _callee24$(_context24) {
6523
6592
  while (1) switch (_context24.prev = _context24.next) {
@@ -6534,18 +6603,18 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6534
6603
  this.sdpResponseTimer = setTimeout(function () {
6535
6604
  _loggerProxy.default.logger.warn("".concat(LOG_HEADER, " timeout! no REMOTE SDP ANSWER received within ").concat(_constants.ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT / 1000, " seconds"));
6536
6605
  // @ts-ignore
6537
- _this40.webex.internal.newMetrics.submitClientEvent({
6606
+ _this41.webex.internal.newMetrics.submitClientEvent({
6538
6607
  name: 'client.media-engine.remote-sdp-received',
6539
6608
  payload: {
6540
6609
  canProceed: false,
6541
6610
  errors: [
6542
6611
  // @ts-ignore
6543
- _this40.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6612
+ _this41.webex.internal.newMetrics.callDiagnosticMetrics.getErrorPayloadForClientErrorCode({
6544
6613
  clientErrorCode: _internalPluginMetrics.CALL_DIAGNOSTIC_CONFIG.MISSING_ROAP_ANSWER_CLIENT_CODE
6545
6614
  })]
6546
6615
  },
6547
6616
  options: {
6548
- meetingId: _this40.id,
6617
+ meetingId: _this41.id,
6549
6618
  rawError: new Error('Timeout waiting for SDP answer')
6550
6619
  }
6551
6620
  });
@@ -7009,10 +7078,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7009
7078
  }, {
7010
7079
  key: "addMedia",
7011
7080
  value: function addMedia() {
7012
- var _this41 = this;
7081
+ var _this42 = this;
7013
7082
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7014
7083
  return this.addMediaInternal(function () {
7015
- return _this41.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7084
+ return _this42.turnServerUsed ? 'JOIN_MEETING_FINAL' : 'JOIN_MEETING_RETRY';
7016
7085
  }, undefined, false, options);
7017
7086
  }
7018
7087
 
@@ -7212,21 +7281,22 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7212
7281
 
7213
7282
  // We can log ReceiveSlot SSRCs only after the SDP exchange, so doing it here:
7214
7283
  (_this$remoteMediaMana = this.remoteMediaManager) === null || _this$remoteMediaMana === void 0 ? void 0 : _this$remoteMediaMana.logAllReceiveSlots();
7215
- _context33.next = 68;
7284
+ this.startPeriodicLogUpload();
7285
+ _context33.next = 69;
7216
7286
  break;
7217
- case 50:
7218
- _context33.prev = 50;
7287
+ case 51:
7288
+ _context33.prev = 51;
7219
7289
  _context33.t0 = _context33["catch"](18);
7220
7290
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " failed to establish media connection: "), _context33.t0);
7221
7291
 
7222
7292
  // @ts-ignore
7223
- _context33.next = 55;
7293
+ _context33.next = 56;
7224
7294
  return this.webex.meetings.reachability.getReachabilityMetrics();
7225
- case 55:
7295
+ case 56:
7226
7296
  reachabilityMetrics = _context33.sent;
7227
- _context33.next = 58;
7297
+ _context33.next = 59;
7228
7298
  return this.mediaProperties.getCurrentConnectionInfo();
7229
- case 58:
7299
+ case 59:
7230
7300
  _yield$this$mediaProp2 = _context33.sent;
7231
7301
  _selectedCandidatePairChanges = _yield$this$mediaProp2.selectedCandidatePairChanges;
7232
7302
  _numTransports = _yield$this$mediaProp2.numTransports;
@@ -7250,9 +7320,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7250
7320
  }, reachabilityMetrics), _iceCandidateErrors), {}, {
7251
7321
  iceCandidatesCount: this.iceCandidatesCount
7252
7322
  }));
7253
- _context33.next = 65;
7323
+ _context33.next = 66;
7254
7324
  return this.cleanUpOnAddMediaFailure();
7255
- case 65:
7325
+ case 66:
7256
7326
  // Upload logs on error while adding media
7257
7327
  _triggerProxy.default.trigger(this, {
7258
7328
  file: 'meeting/index',
@@ -7264,15 +7334,15 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7264
7334
  });
7265
7335
  }
7266
7336
  throw _context33.t0;
7267
- case 68:
7268
- _context33.prev = 68;
7337
+ case 69:
7338
+ _context33.prev = 69;
7269
7339
  this.addMediaData.icePhaseCallback = DEFAULT_ICE_PHASE_CALLBACK;
7270
- return _context33.finish(68);
7271
- case 71:
7340
+ return _context33.finish(69);
7341
+ case 72:
7272
7342
  case "end":
7273
7343
  return _context33.stop();
7274
7344
  }
7275
- }, _callee33, this, [[18, 50, 68, 71]]);
7345
+ }, _callee33, this, [[18, 51, 69, 72]]);
7276
7346
  }));
7277
7347
  function addMediaInternal(_x32, _x33, _x34) {
7278
7348
  return _addMediaInternal.apply(this, arguments);
@@ -7304,7 +7374,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7304
7374
  * @memberof Meeting
7305
7375
  */
7306
7376
  function enqueueMediaUpdate(mediaUpdateType) {
7307
- var _this42 = this;
7377
+ var _this43 = this;
7308
7378
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
7309
7379
  var canUpdateMediaNow = this.canUpdateMedia();
7310
7380
  return new _promise.default(function (resolve, reject) {
@@ -7315,9 +7385,9 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7315
7385
  options: options
7316
7386
  };
7317
7387
  _loggerProxy.default.logger.log("Meeting:index#enqueueMediaUpdate --> enqueuing media update type=".concat(mediaUpdateType));
7318
- _this42.queuedMediaUpdates.push(queueItem);
7388
+ _this43.queuedMediaUpdates.push(queueItem);
7319
7389
  if (canUpdateMediaNow) {
7320
- _this42.processNextQueuedMediaUpdate();
7390
+ _this43.processNextQueuedMediaUpdate();
7321
7391
  }
7322
7392
  });
7323
7393
  }
@@ -7422,7 +7492,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7422
7492
  }, {
7423
7493
  key: "acknowledge",
7424
7494
  value: function acknowledge(type) {
7425
- var _this43 = this;
7495
+ var _this44 = this;
7426
7496
  if (!type) {
7427
7497
  return _promise.default.reject(new _parameter.default('Type must be set to acknowledge the meeting.'));
7428
7498
  }
@@ -7434,12 +7504,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7434
7504
  }).then(function (response) {
7435
7505
  return _promise.default.resolve(response);
7436
7506
  }).then(function (response) {
7437
- _this43.meetingFiniteStateMachine.ring(type);
7507
+ _this44.meetingFiniteStateMachine.ring(type);
7438
7508
  // @ts-ignore
7439
- _this43.webex.internal.newMetrics.submitClientEvent({
7509
+ _this44.webex.internal.newMetrics.submitClientEvent({
7440
7510
  name: 'client.alert.displayed',
7441
7511
  options: {
7442
- meetingId: _this43.id
7512
+ meetingId: _this44.id
7443
7513
  }
7444
7514
  });
7445
7515
  return _promise.default.resolve({
@@ -7464,12 +7534,12 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7464
7534
  }, {
7465
7535
  key: "decline",
7466
7536
  value: function decline(reason) {
7467
- var _this44 = this;
7537
+ var _this45 = this;
7468
7538
  return _util2.default.declineMeeting(this, reason).then(function (decline) {
7469
- _this44.meetingFiniteStateMachine.decline();
7539
+ _this45.meetingFiniteStateMachine.decline();
7470
7540
  return _promise.default.resolve(decline);
7471
7541
  }).catch(function (error) {
7472
- _this44.meetingFiniteStateMachine.fail(error);
7542
+ _this45.meetingFiniteStateMachine.fail(error);
7473
7543
  return _promise.default.reject(error);
7474
7544
  });
7475
7545
  }
@@ -7520,7 +7590,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7520
7590
  }, {
7521
7591
  key: "leave",
7522
7592
  value: function leave() {
7523
- var _this45 = this;
7593
+ var _this46 = this;
7524
7594
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7525
7595
  var leaveReason = options.reason || _constants.MEETING_REMOVED_REASON.CLIENT_LEAVE_REQUEST;
7526
7596
 
@@ -7532,7 +7602,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7532
7602
  var payload = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
7533
7603
  return (
7534
7604
  // @ts-ignore
7535
- _this45.webex.internal.newMetrics.submitClientEvent({
7605
+ _this46.webex.internal.newMetrics.submitClientEvent({
7536
7606
  name: 'client.call.leave',
7537
7607
  payload: _objectSpread({
7538
7608
  trigger: 'user-interaction',
@@ -7540,7 +7610,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7540
7610
  leaveReason: options.clientEventLeaveReason
7541
7611
  }, payload),
7542
7612
  options: {
7543
- meetingId: _this45.id
7613
+ meetingId: _this46.id
7544
7614
  }
7545
7615
  })
7546
7616
  );
@@ -7549,24 +7619,24 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7549
7619
  return _util2.default.leaveMeeting(this, options).then(function (leave) {
7550
7620
  // CA team recommends submitting this *after* locus /leave
7551
7621
  submitLeaveMetric();
7552
- _this45.meetingFiniteStateMachine.leave();
7553
- _this45.clearMeetingData();
7622
+ _this46.meetingFiniteStateMachine.leave();
7623
+ _this46.clearMeetingData();
7554
7624
 
7555
7625
  // upload logs on leave irrespective of meeting delete
7556
- _triggerProxy.default.trigger(_this45, {
7626
+ _triggerProxy.default.trigger(_this46, {
7557
7627
  file: 'meeting/index',
7558
7628
  function: 'leave'
7559
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7629
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7560
7630
 
7561
7631
  // TODO: more testing before we remove this code, we are not sure the scenarios for destroy here
7562
- if (_this45.wirelessShare || _this45.guest) {
7632
+ if (_this46.wirelessShare || _this46.guest) {
7563
7633
  // If screen sharing clean the meeting object
7564
- _triggerProxy.default.trigger(_this45, {
7634
+ _triggerProxy.default.trigger(_this46, {
7565
7635
  file: 'meeting/index',
7566
7636
  function: 'leave'
7567
7637
  }, _constants.EVENTS.DESTROY_MEETING, {
7568
7638
  reason: options.reason,
7569
- meetingId: _this45.id
7639
+ meetingId: _this46.id
7570
7640
  });
7571
7641
  }
7572
7642
  _loggerProxy.default.logger.log('Meeting:index#leave --> LEAVE REASON ', leaveReason);
@@ -7583,16 +7653,16 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7583
7653
  shownToUser: false
7584
7654
  }]
7585
7655
  });
7586
- _this45.meetingFiniteStateMachine.fail(error);
7656
+ _this46.meetingFiniteStateMachine.fail(error);
7587
7657
  _loggerProxy.default.logger.error('Meeting:index#leave --> Failed to leave ', error);
7588
7658
  // upload logs on leave irrespective of meeting delete
7589
- _triggerProxy.default.trigger(_this45, {
7659
+ _triggerProxy.default.trigger(_this46, {
7590
7660
  file: 'meeting/index',
7591
7661
  function: 'leave'
7592
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this45);
7662
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this46);
7593
7663
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_LEAVE_FAILURE, {
7594
- correlation_id: _this45.correlationId,
7595
- locus_id: _this45.locusUrl.split('/').pop(),
7664
+ correlation_id: _this46.correlationId,
7665
+ locus_id: _this46.locusUrl.split('/').pop(),
7596
7666
  reason: error.message,
7597
7667
  stack: error.stack,
7598
7668
  code: error.code
@@ -7612,7 +7682,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7612
7682
  }, {
7613
7683
  key: "startWhiteboardShare",
7614
7684
  value: function startWhiteboardShare(channelUrl, resourceToken) {
7615
- var _this46 = this;
7685
+ var _this47 = this;
7616
7686
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7617
7687
  return element.name === 'whiteboard';
7618
7688
  });
@@ -7641,13 +7711,13 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7641
7711
  body.resourceToken = resourceToken;
7642
7712
  }
7643
7713
  return this.meetingRequest.changeMeetingFloor(body).then(function () {
7644
- _this46.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7714
+ _this47.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7645
7715
  return _promise.default.resolve();
7646
7716
  }).catch(function (error) {
7647
7717
  _loggerProxy.default.logger.error('Meeting:index#startWhiteboardShare --> Error ', error);
7648
7718
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_START_WHITEBOARD_SHARE_FAILURE, {
7649
- correlation_id: _this46.correlationId,
7650
- locus_id: _this46.locusUrl.split('/').pop(),
7719
+ correlation_id: _this47.correlationId,
7720
+ locus_id: _this47.locusUrl.split('/').pop(),
7651
7721
  reason: error.message,
7652
7722
  stack: error.stack,
7653
7723
  board: {
@@ -7670,7 +7740,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7670
7740
  }, {
7671
7741
  key: "stopWhiteboardShare",
7672
7742
  value: function stopWhiteboardShare(channelUrl) {
7673
- var _this47 = this;
7743
+ var _this48 = this;
7674
7744
  var whiteboard = this.locusInfo.mediaShares.find(function (element) {
7675
7745
  return element.name === 'whiteboard';
7676
7746
  });
@@ -7693,8 +7763,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7693
7763
  }).catch(function (error) {
7694
7764
  _loggerProxy.default.logger.error('Meeting:index#stopWhiteboardShare --> Error ', error);
7695
7765
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_STOP_WHITEBOARD_SHARE_FAILURE, {
7696
- correlation_id: _this47.correlationId,
7697
- locus_id: _this47.locusUrl.split('/').pop(),
7766
+ correlation_id: _this48.correlationId,
7767
+ locus_id: _this48.locusUrl.split('/').pop(),
7698
7768
  reason: error.message,
7699
7769
  stack: error.stack,
7700
7770
  board: {
@@ -7716,7 +7786,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7716
7786
  }, {
7717
7787
  key: "requestScreenShareFloor",
7718
7788
  value: function requestScreenShareFloor() {
7719
- var _this48 = this;
7789
+ var _this49 = this;
7720
7790
  if (!this.mediaProperties.hasLocalShareStream() || !this.mediaProperties.mediaDirection.sendShare) {
7721
7791
  _loggerProxy.default.logger.log("Meeting:index#requestScreenShareFloor --> NOT requesting floor, because we don't have the share stream anymore (shareStream=".concat(this.mediaProperties.shareVideoStream ? 'yes' : 'no', ", sendShare=").concat(this.mediaProperties.mediaDirection.sendShare, ")"));
7722
7792
  this.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
@@ -7747,34 +7817,34 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7747
7817
  resourceUrl: this.resourceUrl,
7748
7818
  shareInstanceId: this.localShareInstanceId
7749
7819
  }).then(function () {
7750
- _this48.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7820
+ _this49.screenShareFloorState = ScreenShareFloorStatus.GRANTED;
7751
7821
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_SUCCESS, {
7752
- correlation_id: _this48.correlationId,
7753
- locus_id: _this48.locusUrl.split('/').pop()
7822
+ correlation_id: _this49.correlationId,
7823
+ locus_id: _this49.locusUrl.split('/').pop()
7754
7824
  });
7755
7825
  return _promise.default.resolve();
7756
7826
  }).catch(function (error) {
7757
7827
  _loggerProxy.default.logger.error('Meeting:index#share --> Error ', error);
7758
7828
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_SHARE_FAILURE, {
7759
- correlation_id: _this48.correlationId,
7760
- locus_id: _this48.locusUrl.split('/').pop(),
7829
+ correlation_id: _this49.correlationId,
7830
+ locus_id: _this49.locusUrl.split('/').pop(),
7761
7831
  reason: error.message,
7762
7832
  stack: error.stack
7763
7833
  });
7764
7834
 
7765
7835
  // @ts-ignore
7766
- _this48.webex.internal.newMetrics.submitClientEvent({
7836
+ _this49.webex.internal.newMetrics.submitClientEvent({
7767
7837
  name: 'client.share.floor-granted.local',
7768
7838
  payload: {
7769
7839
  mediaType: 'share',
7770
7840
  errors: _util2.default.getChangeMeetingFloorErrorPayload(error.message),
7771
- shareInstanceId: _this48.localShareInstanceId
7841
+ shareInstanceId: _this49.localShareInstanceId
7772
7842
  },
7773
7843
  options: {
7774
- meetingId: _this48.id
7844
+ meetingId: _this49.id
7775
7845
  }
7776
7846
  });
7777
- _this48.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7847
+ _this49.screenShareFloorState = ScreenShareFloorStatus.RELEASED;
7778
7848
  return _promise.default.reject(error);
7779
7849
  });
7780
7850
  }
@@ -7797,10 +7867,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7797
7867
  }, {
7798
7868
  key: "requestScreenShareFloorIfPending",
7799
7869
  value: function requestScreenShareFloorIfPending() {
7800
- var _this49 = this;
7870
+ var _this50 = this;
7801
7871
  if (this.floorGrantPending && this.state === _constants.MEETING_STATE.STATES.JOINED) {
7802
7872
  this.requestScreenShareFloor().then(function () {
7803
- _this49.floorGrantPending = false;
7873
+ _this50.floorGrantPending = false;
7804
7874
  });
7805
7875
  }
7806
7876
  }
@@ -7814,7 +7884,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7814
7884
  }, {
7815
7885
  key: "releaseScreenShareFloor",
7816
7886
  value: function releaseScreenShareFloor() {
7817
- var _this50 = this;
7887
+ var _this51 = this;
7818
7888
  var content = this.locusInfo.mediaShares.find(function (element) {
7819
7889
  return element.name === _constants.CONTENT;
7820
7890
  });
@@ -7849,8 +7919,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
7849
7919
  }).catch(function (error) {
7850
7920
  _loggerProxy.default.logger.error('Meeting:index#releaseScreenShareFloor --> Error ', error);
7851
7921
  _metrics.default.sendBehavioralMetric(_constants2.default.STOP_FLOOR_REQUEST_FAILURE, {
7852
- correlation_id: _this50.correlationId,
7853
- locus_id: _this50.locusUrl.split('/').pop(),
7922
+ correlation_id: _this51.correlationId,
7923
+ locus_id: _this51.locusUrl.split('/').pop(),
7854
7924
  reason: error.message,
7855
7925
  stack: error.stack
7856
7926
  });
@@ -8030,7 +8100,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8030
8100
  }, {
8031
8101
  key: "changeVideoLayout",
8032
8102
  value: function changeVideoLayout(layoutType) {
8033
- var _this51 = this;
8103
+ var _this52 = this;
8034
8104
  var renderInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
8035
8105
  var main = renderInfo.main,
8036
8106
  content = renderInfo.content;
@@ -8084,7 +8154,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8084
8154
  }
8085
8155
  this.lastVideoLayoutInfo = (0, _lodash.cloneDeep)(layoutInfo);
8086
8156
  this.locusInfo.once(_constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_LAYOUT_UPDATED, function (envelope) {
8087
- _triggerProxy.default.trigger(_this51, {
8157
+ _triggerProxy.default.trigger(_this52, {
8088
8158
  file: 'meeting/index',
8089
8159
  function: 'changeVideoLayout'
8090
8160
  }, _constants.EVENT_TRIGGERS.MEETING_CONTROLS_LAYOUT_UPDATE, {
@@ -8200,7 +8270,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8200
8270
  }, {
8201
8271
  key: "endMeetingForAll",
8202
8272
  value: function endMeetingForAll() {
8203
- var _this52 = this;
8273
+ var _this53 = this;
8204
8274
  // @ts-ignore
8205
8275
  this.webex.internal.newMetrics.submitClientEvent({
8206
8276
  name: 'client.call.leave',
@@ -8218,25 +8288,25 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8218
8288
  locus_id: this.locusId
8219
8289
  });
8220
8290
  return _util2.default.endMeetingForAll(this).then(function (end) {
8221
- _this52.meetingFiniteStateMachine.end();
8222
- _this52.clearMeetingData();
8291
+ _this53.meetingFiniteStateMachine.end();
8292
+ _this53.clearMeetingData();
8223
8293
  // upload logs on leave irrespective of meeting delete
8224
- _triggerProxy.default.trigger(_this52, {
8294
+ _triggerProxy.default.trigger(_this53, {
8225
8295
  file: 'meeting/index',
8226
8296
  function: 'endMeetingForAll'
8227
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8297
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8228
8298
  return end;
8229
8299
  }).catch(function (error) {
8230
- _this52.meetingFiniteStateMachine.fail(error);
8300
+ _this53.meetingFiniteStateMachine.fail(error);
8231
8301
  _loggerProxy.default.logger.error('Meeting:index#endMeetingForAll --> Failed to end meeting ', error);
8232
8302
  // upload logs on leave irrespective of meeting delete
8233
- _triggerProxy.default.trigger(_this52, {
8303
+ _triggerProxy.default.trigger(_this53, {
8234
8304
  file: 'meeting/index',
8235
8305
  function: 'endMeetingForAll'
8236
- }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this52);
8306
+ }, _constants.EVENTS.REQUEST_UPLOAD_LOGS, _this53);
8237
8307
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETING_END_ALL_FAILURE, {
8238
- correlation_id: _this52.correlationId,
8239
- locus_id: _this52.locusUrl.split('/').pop(),
8308
+ correlation_id: _this53.correlationId,
8309
+ locus_id: _this53.locusUrl.split('/').pop(),
8240
8310
  reason: error.message,
8241
8311
  stack: error.stack,
8242
8312
  code: error.code
@@ -8378,7 +8448,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8378
8448
  _this$mediaProperties41,
8379
8449
  _this$mediaProperties42,
8380
8450
  _this$mediaProperties43,
8381
- _this53 = this;
8451
+ _this54 = this;
8382
8452
  var LOG_HEADER = 'Meeting:index#updateTranscodedMediaConnection -->';
8383
8453
  _loggerProxy.default.logger.info("".concat(LOG_HEADER, " starting"));
8384
8454
  if (!this.canUpdateMedia()) {
@@ -8403,8 +8473,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8403
8473
  }).catch(function (error) {
8404
8474
  _loggerProxy.default.logger.error("".concat(LOG_HEADER, " Error: "), error);
8405
8475
  _metrics.default.sendBehavioralMetric(_constants2.default.UPDATE_MEDIA_FAILURE, {
8406
- correlation_id: _this53.correlationId,
8407
- locus_id: _this53.locusUrl.split('/').pop(),
8476
+ correlation_id: _this54.correlationId,
8477
+ locus_id: _this54.locusUrl.split('/').pop(),
8408
8478
  reason: error.message,
8409
8479
  stack: error.stack
8410
8480
  });