@webex/plugin-meetings 3.4.0-next.9 → 3.5.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.
Files changed (42) hide show
  1. package/dist/breakouts/breakout.js +1 -1
  2. package/dist/breakouts/index.js +1 -1
  3. package/dist/interpretation/index.js +1 -1
  4. package/dist/interpretation/siLanguage.js +1 -1
  5. package/dist/meeting/index.js +106 -12
  6. package/dist/meeting/index.js.map +1 -1
  7. package/dist/meeting/util.js +1 -0
  8. package/dist/meeting/util.js.map +1 -1
  9. package/dist/meetings/index.js +7 -0
  10. package/dist/meetings/index.js.map +1 -1
  11. package/dist/types/meeting/index.d.ts +20 -0
  12. package/dist/types/meetings/index.d.ts +2 -1
  13. package/dist/webinar/index.js +1 -1
  14. package/package.json +22 -22
  15. package/src/meeting/index.ts +73 -4
  16. package/src/meeting/util.ts +2 -0
  17. package/src/meetings/index.ts +7 -1
  18. package/test/integration/spec/converged-space-meetings.js +1 -1
  19. package/test/unit/spec/breakouts/index.ts +1 -0
  20. package/test/unit/spec/interceptors/locusRetry.ts +11 -10
  21. package/test/unit/spec/media/MediaConnectionAwaiter.ts +1 -0
  22. package/test/unit/spec/media/index.ts +1 -0
  23. package/test/unit/spec/media/properties.ts +1 -1
  24. package/test/unit/spec/meeting/connectionStateHandler.ts +1 -0
  25. package/test/unit/spec/meeting/index.js +67 -6
  26. package/test/unit/spec/meeting/locusMediaRequest.ts +3 -2
  27. package/test/unit/spec/meeting/request.js +1 -0
  28. package/test/unit/spec/meeting/utils.js +4 -0
  29. package/test/unit/spec/meeting-info/meetinginfov2.js +10 -11
  30. package/test/unit/spec/meeting-info/request.js +1 -1
  31. package/test/unit/spec/meetings/index.js +10 -2
  32. package/test/unit/spec/members/request.js +2 -1
  33. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  34. package/test/unit/spec/multistream/receiveSlot.ts +1 -0
  35. package/test/unit/spec/multistream/receiveSlotManager.ts +1 -0
  36. package/test/unit/spec/multistream/remoteMedia.ts +1 -0
  37. package/test/unit/spec/multistream/remoteMediaGroup.ts +1 -0
  38. package/test/unit/spec/multistream/remoteMediaManager.ts +1 -0
  39. package/test/unit/spec/multistream/sendSlotManager.ts +1 -0
  40. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +0 -1
  41. package/test/unit/spec/reachability/request.js +1 -0
  42. package/test/unit/spec/roap/request.ts +1 -0
@@ -209,7 +209,7 @@ var Breakout = _webexCore.WebexPlugin.extend({
209
209
  sessionId: this.sessionId
210
210
  });
211
211
  },
212
- version: "3.4.0-next.9"
212
+ version: "3.5.0-next.1"
213
213
  });
214
214
  var _default = exports.default = Breakout;
215
215
  //# sourceMappingURL=breakout.js.map
@@ -1046,7 +1046,7 @@ var Breakouts = _webexCore.WebexPlugin.extend({
1046
1046
  this.trigger(_constants.BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);
1047
1047
  }
1048
1048
  },
1049
- version: "3.4.0-next.9"
1049
+ version: "3.5.0-next.1"
1050
1050
  });
1051
1051
  var _default = exports.default = Breakouts;
1052
1052
  //# sourceMappingURL=index.js.map
@@ -373,7 +373,7 @@ var SimultaneousInterpretation = _webexCore.WebexPlugin.extend({
373
373
  throw error;
374
374
  });
375
375
  },
376
- version: "3.4.0-next.9"
376
+ version: "3.5.0-next.1"
377
377
  });
378
378
  var _default = exports.default = SimultaneousInterpretation;
379
379
  //# sourceMappingURL=index.js.map
@@ -18,7 +18,7 @@ var SILanguage = _webexCore.WebexPlugin.extend({
18
18
  languageCode: 'number',
19
19
  languageName: 'string'
20
20
  },
21
- version: "3.4.0-next.9"
21
+ version: "3.5.0-next.1"
22
22
  });
23
23
  var _default = exports.default = SILanguage;
24
24
  //# sourceMappingURL=siLanguage.js.map
@@ -22,6 +22,7 @@ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/pr
22
22
  var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
23
23
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
24
24
  var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
25
+ var _weakMap = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/weak-map"));
25
26
  var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
26
27
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
27
28
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -31,6 +32,8 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
31
32
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
32
33
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
33
34
  var _defineProperty3 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
35
+ var _classPrivateFieldGet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldGet"));
36
+ var _classPrivateFieldSet2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classPrivateFieldSet"));
34
37
  var _uuid = _interopRequireDefault(require("uuid"));
35
38
  var _lodash = require("lodash");
36
39
  var _jwtDecode = _interopRequireDefault(require("jwt-decode"));
@@ -90,7 +93,9 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
90
93
  function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
91
94
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty3.default)(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
92
95
  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); }; }
93
- 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; } } // @ts-ignore - Fix this
96
+ 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; } }
97
+ function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
98
+ function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } } // @ts-ignore - Fix this
94
99
  // @ts-ignore - Types not available for @webex/common
95
100
  // default callback so we don't call an undefined function, but in practice it should never be used
96
101
  var DEFAULT_ICE_PHASE_CALLBACK = function DEFAULT_ICE_PHASE_CALLBACK() {
@@ -119,6 +124,7 @@ var ScreenShareFloorStatus = exports.ScreenShareFloorStatus = /*#__PURE__*/funct
119
124
  ScreenShareFloorStatus["RELEASED"] = "floor_released";
120
125
  return ScreenShareFloorStatus;
121
126
  }({});
127
+ var _isoLocalClientMeetingJoinTime = /*#__PURE__*/new _weakMap.default();
122
128
  /**
123
129
  * MediaDirection
124
130
  * @typedef {Object} MediaDirection
@@ -375,7 +381,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
375
381
  * @memberof Meeting
376
382
  */
377
383
  function Meeting(attrs, _options) {
378
- var _attrs$callStateForMe, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
384
+ var _attrs$callStateForMe, _attrs$callStateForMe2, _this$locusInfo, _this$locusInfo$links, _this$locusInfo$links2, _this$locusInfo$links3, _this$locusInfo2, _this$locusInfo2$full, _this$locusInfo3, _this$locusInfo4;
379
385
  var _this;
380
386
  (0, _classCallCheck2.default)(this, Meeting);
381
387
  _this = _super.call(this, {}, _options);
@@ -401,6 +407,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
401
407
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "id", void 0);
402
408
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "isMultistream", void 0);
403
409
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "locusUrl", void 0);
410
+ _classPrivateFieldInitSpec((0, _assertThisInitialized2.default)(_this), _isoLocalClientMeetingJoinTime, {
411
+ writable: true,
412
+ value: void 0
413
+ });
404
414
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaConnections", void 0);
405
415
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "mediaId", void 0);
406
416
  (0, _defineProperty3.default)((0, _assertThisInitialized2.default)(_this), "meetingFiniteStateMachine", void 0);
@@ -1400,10 +1410,20 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
1400
1410
  */
1401
1411
  _this.callStateForMetrics = attrs.callStateForMetrics || {};
1402
1412
  var _correlationId = attrs.correlationId || ((_attrs$callStateForMe = attrs.callStateForMetrics) === null || _attrs$callStateForMe === void 0 ? void 0 : _attrs$callStateForMe.correlationId);
1413
+ var sessionCorrelationId = attrs.sessionCorrelationId || ((_attrs$callStateForMe2 = attrs.callStateForMetrics) === null || _attrs$callStateForMe2 === void 0 ? void 0 : _attrs$callStateForMe2.sessionCorrelationId);
1414
+ if (sessionCorrelationId) {
1415
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with session correlation id from app ".concat(_correlationId));
1416
+ _this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;
1417
+ } else {
1418
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> No session correlation id supplied. None will be generated and this field will remain blank");
1419
+ // TODO: supply a session from the meetings instance
1420
+ _this.callStateForMetrics.sessionCorrelationId = '';
1421
+ }
1403
1422
  if (_correlationId) {
1404
1423
  _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with correlation id from app ".concat(_correlationId));
1405
1424
  _this.callStateForMetrics.correlationId = _correlationId;
1406
1425
  } else {
1426
+ _loggerProxy.default.logger.log("Meetings:index#constructor --> Initializing the meeting object with generated correlation id from sdk ".concat(_this.id));
1407
1427
  _this.callStateForMetrics.correlationId = _this.id;
1408
1428
  }
1409
1429
  /**
@@ -2157,6 +2177,17 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2157
2177
  * @memberof Meeting
2158
2178
  */
2159
2179
  _this.iceCandidatesCount = 0;
2180
+
2181
+ /**
2182
+ * Start time of meeting as an ISO string
2183
+ * based on browser time, so can only be used to compute durations client side
2184
+ * undefined if meeting has not been joined, set once on meeting join, and not updated again
2185
+ * @instance
2186
+ * @type {string}
2187
+ * @private
2188
+ * @memberof Meeting
2189
+ */
2190
+ (0, _classPrivateFieldSet2.default)((0, _assertThisInitialized2.default)(_this), _isoLocalClientMeetingJoinTime, undefined);
2160
2191
  return _this;
2161
2192
  }
2162
2193
 
@@ -2215,6 +2246,35 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
2215
2246
  this.callStateForMetrics.correlationId = correlationId;
2216
2247
  }
2217
2248
 
2249
+ /**
2250
+ * Getter - Returns callStateForMetrics.sessionCorrelationId
2251
+ * @returns {string}
2252
+ */
2253
+ }, {
2254
+ key: "sessionCorrelationId",
2255
+ get: function get() {
2256
+ return this.callStateForMetrics.correlationId;
2257
+ }
2258
+
2259
+ /**
2260
+ * Setter - sets callStateForMetrics.sessionCorrelationId
2261
+ * @param {string} sessionCorrelationId
2262
+ */,
2263
+ set: function set(sessionCorrelationId) {
2264
+ this.callStateForMetrics.sessionCorrelationId = sessionCorrelationId;
2265
+ }
2266
+
2267
+ /**
2268
+ * Getter - Returns isoLocalClientMeetingJoinTime
2269
+ * This will be set once on meeting join, and not updated again
2270
+ * @returns {string | undefined}
2271
+ */
2272
+ }, {
2273
+ key: "isoLocalClientMeetingJoinTime",
2274
+ get: function get() {
2275
+ return (0, _classPrivateFieldGet2.default)(this, _isoLocalClientMeetingJoinTime);
2276
+ }
2277
+
2218
2278
  /**
2219
2279
  * Set meeting info and trigger `MEETING_INFO_AVAILABLE` event
2220
2280
  * @param {any} info
@@ -5609,6 +5669,10 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
5609
5669
  return _context18.abrupt("return", _util2.default.joinMeetingOptions(this, options).then(function (join) {
5610
5670
  _this32.meetingFiniteStateMachine.join();
5611
5671
  _this32.setupLocusMediaRequest();
5672
+
5673
+ // @ts-ignore
5674
+ _this32.webex.internal.device.meetingStarted();
5675
+ (0, _classPrivateFieldSet2.default)(_this32, _isoLocalClientMeetingJoinTime, new Date().toISOString());
5612
5676
  _loggerProxy.default.logger.log('Meeting:index#join --> Success');
5613
5677
  _metrics.default.sendBehavioralMetric(_constants2.default.JOIN_SUCCESS, {
5614
5678
  correlation_id: _this32.correlationId
@@ -6324,6 +6388,8 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6324
6388
  *
6325
6389
  * @private
6326
6390
  * @static
6391
+ * @param {boolean} isAudioEnabled
6392
+ * @param {boolean} isVideoEnabled
6327
6393
  * @returns {Promise<void>}
6328
6394
  */
6329
6395
  }, {
@@ -6947,7 +7013,7 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
6947
7013
  break;
6948
7014
  }
6949
7015
  _context32.next = 28;
6950
- return Meeting.handleDeviceLogging();
7016
+ return Meeting.handleDeviceLogging(audioEnabled, videoEnabled);
6951
7017
  case 28:
6952
7018
  _context32.next = 31;
6953
7019
  break;
@@ -8550,29 +8616,57 @@ var Meeting = exports.default = /*#__PURE__*/function (_StatelessWebexPlugin) {
8550
8616
  }], [{
8551
8617
  key: "handleDeviceLogging",
8552
8618
  value: (function () {
8553
- var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
8619
+ var _handleDeviceLogging = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39(isAudioEnabled, isVideoEnabled) {
8554
8620
  var devices;
8555
8621
  return _regenerator.default.wrap(function _callee39$(_context39) {
8556
8622
  while (1) switch (_context39.prev = _context39.next) {
8557
8623
  case 0:
8558
8624
  _context39.prev = 0;
8559
- _context39.next = 3;
8625
+ devices = [];
8626
+ if (!(isVideoEnabled && isAudioEnabled)) {
8627
+ _context39.next = 8;
8628
+ break;
8629
+ }
8630
+ _context39.next = 5;
8560
8631
  return (0, _mediaHelpers.getDevices)();
8561
- case 3:
8632
+ case 5:
8562
8633
  devices = _context39.sent;
8634
+ _context39.next = 18;
8635
+ break;
8636
+ case 8:
8637
+ if (!isVideoEnabled) {
8638
+ _context39.next = 14;
8639
+ break;
8640
+ }
8641
+ _context39.next = 11;
8642
+ return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.VIDEO_INPUT);
8643
+ case 11:
8644
+ devices = _context39.sent;
8645
+ _context39.next = 18;
8646
+ break;
8647
+ case 14:
8648
+ if (!isAudioEnabled) {
8649
+ _context39.next = 18;
8650
+ break;
8651
+ }
8652
+ _context39.next = 17;
8653
+ return (0, _mediaHelpers.getDevices)(_media.default.DeviceKind.AUDIO_INPUT);
8654
+ case 17:
8655
+ devices = _context39.sent;
8656
+ case 18:
8563
8657
  _util2.default.handleDeviceLogging(devices);
8564
- _context39.next = 9;
8658
+ _context39.next = 23;
8565
8659
  break;
8566
- case 7:
8567
- _context39.prev = 7;
8660
+ case 21:
8661
+ _context39.prev = 21;
8568
8662
  _context39.t0 = _context39["catch"](0);
8569
- case 9:
8663
+ case 23:
8570
8664
  case "end":
8571
8665
  return _context39.stop();
8572
8666
  }
8573
- }, _callee39, null, [[0, 7]]);
8667
+ }, _callee39, null, [[0, 21]]);
8574
8668
  }));
8575
- function handleDeviceLogging() {
8669
+ function handleDeviceLogging(_x43, _x44) {
8576
8670
  return _handleDeviceLogging.apply(this, arguments);
8577
8671
  }
8578
8672
  return handleDeviceLogging;