@webex/plugin-meetings 3.8.1 → 3.9.0-webinar5k.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 (296) hide show
  1. package/README.md +26 -13
  2. package/dist/breakouts/breakout.js +1 -1
  3. package/dist/breakouts/index.js +1 -1
  4. package/dist/constants.js +16 -3
  5. package/dist/constants.js.map +1 -1
  6. package/dist/controls-options-manager/enums.js +1 -0
  7. package/dist/controls-options-manager/enums.js.map +1 -1
  8. package/dist/controls-options-manager/types.js.map +1 -1
  9. package/dist/controls-options-manager/util.js +26 -0
  10. package/dist/controls-options-manager/util.js.map +1 -1
  11. package/dist/hashTree/constants.js +23 -0
  12. package/dist/hashTree/constants.js.map +1 -0
  13. package/dist/hashTree/hashTree.js +516 -0
  14. package/dist/hashTree/hashTree.js.map +1 -0
  15. package/dist/hashTree/hashTreeParser.js +521 -0
  16. package/dist/hashTree/hashTreeParser.js.map +1 -0
  17. package/dist/interpretation/index.js +1 -1
  18. package/dist/interpretation/siLanguage.js +1 -1
  19. package/dist/locus-info/controlsUtils.js +11 -3
  20. package/dist/locus-info/controlsUtils.js.map +1 -1
  21. package/dist/locus-info/index.js +331 -59
  22. package/dist/locus-info/index.js.map +1 -1
  23. package/dist/media/index.js +2 -2
  24. package/dist/media/index.js.map +1 -1
  25. package/dist/meeting/brbState.js +17 -14
  26. package/dist/meeting/brbState.js.map +1 -1
  27. package/dist/meeting/in-meeting-actions.js +5 -1
  28. package/dist/meeting/in-meeting-actions.js.map +1 -1
  29. package/dist/meeting/index.js +264 -125
  30. package/dist/meeting/index.js.map +1 -1
  31. package/dist/meeting/muteState.js +2 -5
  32. package/dist/meeting/muteState.js.map +1 -1
  33. package/dist/meeting/request.js +19 -0
  34. package/dist/meeting/request.js.map +1 -1
  35. package/dist/meeting/request.type.js.map +1 -1
  36. package/dist/meeting/util.js +8 -11
  37. package/dist/meeting/util.js.map +1 -1
  38. package/dist/meetings/index.js +6 -2
  39. package/dist/meetings/index.js.map +1 -1
  40. package/dist/member/types.js.map +1 -1
  41. package/dist/members/collection.js +13 -0
  42. package/dist/members/collection.js.map +1 -1
  43. package/dist/members/index.js +44 -23
  44. package/dist/members/index.js.map +1 -1
  45. package/dist/members/request.js +3 -3
  46. package/dist/members/request.js.map +1 -1
  47. package/dist/members/util.js +18 -6
  48. package/dist/members/util.js.map +1 -1
  49. package/dist/metrics/constants.js +1 -0
  50. package/dist/metrics/constants.js.map +1 -1
  51. package/dist/multistream/sendSlotManager.js +32 -2
  52. package/dist/multistream/sendSlotManager.js.map +1 -1
  53. package/dist/reachability/index.js +5 -10
  54. package/dist/reachability/index.js.map +1 -1
  55. package/dist/types/constants.d.ts +12 -0
  56. package/dist/types/controls-options-manager/enums.d.ts +2 -1
  57. package/dist/types/controls-options-manager/types.d.ts +4 -1
  58. package/dist/types/hashTree/constants.d.ts +8 -0
  59. package/dist/types/hashTree/hashTree.d.ts +128 -0
  60. package/dist/types/hashTree/hashTreeParser.d.ts +152 -0
  61. package/dist/types/locus-info/index.d.ts +93 -3
  62. package/dist/types/meeting/brbState.d.ts +0 -1
  63. package/dist/types/meeting/in-meeting-actions.d.ts +4 -0
  64. package/dist/types/meeting/index.d.ts +36 -3
  65. package/dist/types/meeting/request.d.ts +9 -1
  66. package/dist/types/meeting/request.type.d.ts +74 -0
  67. package/dist/types/meeting/util.d.ts +3 -3
  68. package/dist/types/member/types.d.ts +1 -0
  69. package/dist/types/members/collection.d.ts +6 -0
  70. package/dist/types/members/index.d.ts +15 -3
  71. package/dist/types/members/request.d.ts +1 -1
  72. package/dist/types/members/util.d.ts +5 -2
  73. package/dist/types/metrics/constants.d.ts +1 -0
  74. package/dist/types/multistream/sendSlotManager.d.ts +16 -0
  75. package/dist/types/reachability/index.d.ts +2 -2
  76. package/dist/webinar/index.js +1 -1
  77. package/package.json +26 -25
  78. package/src/constants.ts +16 -0
  79. package/src/controls-options-manager/enums.ts +1 -0
  80. package/src/controls-options-manager/types.ts +6 -1
  81. package/src/controls-options-manager/util.ts +31 -0
  82. package/src/hashTree/constants.ts +12 -0
  83. package/src/hashTree/hashTree.ts +460 -0
  84. package/src/hashTree/hashTreeParser.ts +556 -0
  85. package/src/locus-info/controlsUtils.ts +15 -0
  86. package/src/locus-info/index.ts +434 -58
  87. package/src/media/index.ts +2 -2
  88. package/src/meeting/brbState.ts +13 -9
  89. package/src/meeting/in-meeting-actions.ts +8 -0
  90. package/src/meeting/index.ts +193 -39
  91. package/src/meeting/muteState.ts +2 -6
  92. package/src/meeting/request.ts +16 -0
  93. package/src/meeting/request.type.ts +64 -0
  94. package/src/meeting/util.ts +17 -20
  95. package/src/meetings/index.ts +17 -3
  96. package/src/member/types.ts +1 -0
  97. package/src/members/collection.ts +11 -0
  98. package/src/members/index.ts +33 -7
  99. package/src/members/request.ts +2 -2
  100. package/src/members/util.ts +14 -3
  101. package/src/metrics/constants.ts +1 -0
  102. package/src/multistream/sendSlotManager.ts +34 -2
  103. package/src/reachability/index.ts +5 -13
  104. package/test/unit/spec/controls-options-manager/util.js +58 -0
  105. package/test/unit/spec/hashTree/hashTree.ts +394 -0
  106. package/test/unit/spec/hashTree/hashTreeParser.ts +156 -0
  107. package/test/unit/spec/locus-info/controlsUtils.js +52 -0
  108. package/test/unit/spec/locus-info/index.js +547 -54
  109. package/test/unit/spec/media/index.ts +107 -0
  110. package/test/unit/spec/meeting/brbState.ts +23 -4
  111. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  112. package/test/unit/spec/meeting/index.js +647 -46
  113. package/test/unit/spec/meeting/request.js +71 -0
  114. package/test/unit/spec/members/index.js +33 -10
  115. package/test/unit/spec/members/request.js +2 -2
  116. package/test/unit/spec/members/utils.js +27 -7
  117. package/test/unit/spec/multistream/sendSlotManager.ts +59 -0
  118. package/test/unit/spec/reachability/index.ts +2 -6
  119. package/dist/annotation/annotation.types.d.ts +0 -42
  120. package/dist/annotation/constants.d.ts +0 -31
  121. package/dist/annotation/index.d.ts +0 -117
  122. package/dist/breakouts/breakout.d.ts +0 -8
  123. package/dist/breakouts/collection.d.ts +0 -5
  124. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  125. package/dist/breakouts/events.d.ts +0 -8
  126. package/dist/breakouts/index.d.ts +0 -5
  127. package/dist/breakouts/request.d.ts +0 -22
  128. package/dist/breakouts/utils.d.ts +0 -15
  129. package/dist/common/browser-detection.d.ts +0 -9
  130. package/dist/common/collection.d.ts +0 -48
  131. package/dist/common/config.d.ts +0 -2
  132. package/dist/common/errors/captcha-error.d.ts +0 -15
  133. package/dist/common/errors/intent-to-join.d.ts +0 -16
  134. package/dist/common/errors/join-meeting.d.ts +0 -17
  135. package/dist/common/errors/media.d.ts +0 -15
  136. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  137. package/dist/common/errors/parameter.d.ts +0 -15
  138. package/dist/common/errors/password-error.d.ts +0 -15
  139. package/dist/common/errors/permission.d.ts +0 -14
  140. package/dist/common/errors/reclaim-host-role-error.d.ts +0 -60
  141. package/dist/common/errors/reclaim-host-role-error.js +0 -158
  142. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  143. package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
  144. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  145. package/dist/common/errors/reconnection-in-progress.js +0 -35
  146. package/dist/common/errors/reconnection-in-progress.js.map +0 -1
  147. package/dist/common/errors/reconnection.d.ts +0 -15
  148. package/dist/common/errors/stats.d.ts +0 -15
  149. package/dist/common/errors/webex-errors.d.ts +0 -81
  150. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  151. package/dist/common/events/events-scope.d.ts +0 -17
  152. package/dist/common/events/events.d.ts +0 -12
  153. package/dist/common/events/trigger-proxy.d.ts +0 -2
  154. package/dist/common/events/util.d.ts +0 -2
  155. package/dist/common/logs/logger-config.d.ts +0 -2
  156. package/dist/common/logs/logger-proxy.d.ts +0 -2
  157. package/dist/common/logs/request.d.ts +0 -34
  158. package/dist/common/queue.d.ts +0 -32
  159. package/dist/config.d.ts +0 -73
  160. package/dist/constants.d.ts +0 -952
  161. package/dist/controls-options-manager/constants.d.ts +0 -4
  162. package/dist/controls-options-manager/enums.d.ts +0 -5
  163. package/dist/controls-options-manager/index.d.ts +0 -120
  164. package/dist/controls-options-manager/types.d.ts +0 -43
  165. package/dist/controls-options-manager/util.d.ts +0 -7
  166. package/dist/index.d.ts +0 -4
  167. package/dist/interceptors/index.d.ts +0 -2
  168. package/dist/interceptors/locusRetry.d.ts +0 -27
  169. package/dist/interpretation/collection.d.ts +0 -5
  170. package/dist/interpretation/index.d.ts +0 -5
  171. package/dist/interpretation/siLanguage.d.ts +0 -5
  172. package/dist/locus-info/controlsUtils.d.ts +0 -2
  173. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  174. package/dist/locus-info/fullState.d.ts +0 -2
  175. package/dist/locus-info/hostUtils.d.ts +0 -2
  176. package/dist/locus-info/index.d.ts +0 -269
  177. package/dist/locus-info/infoUtils.d.ts +0 -2
  178. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  179. package/dist/locus-info/parser.d.ts +0 -212
  180. package/dist/locus-info/selfUtils.d.ts +0 -2
  181. package/dist/media/index.d.ts +0 -32
  182. package/dist/media/properties.d.ts +0 -108
  183. package/dist/media/util.d.ts +0 -2
  184. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  185. package/dist/mediaQualityMetrics/config.js +0 -513
  186. package/dist/mediaQualityMetrics/config.js.map +0 -1
  187. package/dist/meeting/effectsState.d.ts +0 -42
  188. package/dist/meeting/effectsState.js +0 -260
  189. package/dist/meeting/effectsState.js.map +0 -1
  190. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  191. package/dist/meeting/index.d.ts +0 -1622
  192. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  193. package/dist/meeting/muteState.d.ts +0 -116
  194. package/dist/meeting/request.d.ts +0 -257
  195. package/dist/meeting/request.type.d.ts +0 -11
  196. package/dist/meeting/state.d.ts +0 -9
  197. package/dist/meeting/util.d.ts +0 -2
  198. package/dist/meeting/voicea-meeting.d.ts +0 -16
  199. package/dist/meeting-info/collection.d.ts +0 -20
  200. package/dist/meeting-info/index.d.ts +0 -57
  201. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  202. package/dist/meeting-info/request.d.ts +0 -22
  203. package/dist/meeting-info/util.d.ts +0 -2
  204. package/dist/meeting-info/utilv2.d.ts +0 -2
  205. package/dist/meetings/collection.d.ts +0 -23
  206. package/dist/meetings/index.d.ts +0 -296
  207. package/dist/meetings/meetings.types.d.ts +0 -4
  208. package/dist/meetings/request.d.ts +0 -27
  209. package/dist/meetings/util.d.ts +0 -18
  210. package/dist/member/index.d.ts +0 -148
  211. package/dist/member/member.types.d.ts +0 -11
  212. package/dist/member/member.types.js +0 -18
  213. package/dist/member/member.types.js.map +0 -1
  214. package/dist/member/types.d.ts +0 -32
  215. package/dist/member/util.d.ts +0 -2
  216. package/dist/members/collection.d.ts +0 -24
  217. package/dist/members/index.d.ts +0 -308
  218. package/dist/members/request.d.ts +0 -58
  219. package/dist/members/types.d.ts +0 -25
  220. package/dist/members/util.d.ts +0 -2
  221. package/dist/metrics/config.d.ts +0 -169
  222. package/dist/metrics/config.js +0 -289
  223. package/dist/metrics/config.js.map +0 -1
  224. package/dist/metrics/constants.d.ts +0 -59
  225. package/dist/metrics/index.d.ts +0 -152
  226. package/dist/multistream/mediaRequestManager.d.ts +0 -119
  227. package/dist/multistream/receiveSlot.d.ts +0 -68
  228. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  229. package/dist/multistream/remoteMedia.d.ts +0 -72
  230. package/dist/multistream/remoteMediaGroup.d.ts +0 -49
  231. package/dist/multistream/remoteMediaManager.d.ts +0 -300
  232. package/dist/multistream/sendSlotManager.d.ts +0 -69
  233. package/dist/networkQualityMonitor/index.d.ts +0 -70
  234. package/dist/networkQualityMonitor/index.js +0 -226
  235. package/dist/networkQualityMonitor/index.js.map +0 -1
  236. package/dist/peer-connection-manager/index.d.ts +0 -6
  237. package/dist/peer-connection-manager/index.js +0 -671
  238. package/dist/peer-connection-manager/index.js.map +0 -1
  239. package/dist/peer-connection-manager/util.d.ts +0 -6
  240. package/dist/peer-connection-manager/util.js +0 -110
  241. package/dist/peer-connection-manager/util.js.map +0 -1
  242. package/dist/personal-meeting-room/index.d.ts +0 -47
  243. package/dist/personal-meeting-room/request.d.ts +0 -14
  244. package/dist/personal-meeting-room/util.d.ts +0 -2
  245. package/dist/reachability/clusterReachability.d.ts +0 -109
  246. package/dist/reachability/index.d.ts +0 -139
  247. package/dist/reachability/request.d.ts +0 -35
  248. package/dist/reachability/util.d.ts +0 -8
  249. package/dist/reactions/constants.d.ts +0 -3
  250. package/dist/reactions/reactions.d.ts +0 -4
  251. package/dist/reactions/reactions.type.d.ts +0 -32
  252. package/dist/reconnection-manager/index.d.ts +0 -112
  253. package/dist/recording-controller/enums.d.ts +0 -7
  254. package/dist/recording-controller/index.d.ts +0 -193
  255. package/dist/recording-controller/util.d.ts +0 -13
  256. package/dist/roap/collection.d.ts +0 -10
  257. package/dist/roap/collection.js +0 -63
  258. package/dist/roap/collection.js.map +0 -1
  259. package/dist/roap/handler.d.ts +0 -47
  260. package/dist/roap/handler.js +0 -279
  261. package/dist/roap/handler.js.map +0 -1
  262. package/dist/roap/index.d.ts +0 -116
  263. package/dist/roap/request.d.ts +0 -35
  264. package/dist/roap/state.d.ts +0 -9
  265. package/dist/roap/state.js +0 -127
  266. package/dist/roap/state.js.map +0 -1
  267. package/dist/roap/turnDiscovery.d.ts +0 -81
  268. package/dist/roap/util.d.ts +0 -2
  269. package/dist/roap/util.js +0 -76
  270. package/dist/roap/util.js.map +0 -1
  271. package/dist/rtcMetrics/constants.d.ts +0 -4
  272. package/dist/rtcMetrics/constants.js +0 -11
  273. package/dist/rtcMetrics/constants.js.map +0 -1
  274. package/dist/rtcMetrics/index.d.ts +0 -61
  275. package/dist/rtcMetrics/index.js +0 -197
  276. package/dist/rtcMetrics/index.js.map +0 -1
  277. package/dist/statsAnalyzer/global.d.ts +0 -118
  278. package/dist/statsAnalyzer/global.js +0 -127
  279. package/dist/statsAnalyzer/global.js.map +0 -1
  280. package/dist/statsAnalyzer/index.d.ts +0 -193
  281. package/dist/statsAnalyzer/index.js +0 -1019
  282. package/dist/statsAnalyzer/index.js.map +0 -1
  283. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  284. package/dist/statsAnalyzer/mqaUtil.js +0 -181
  285. package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
  286. package/dist/transcription/index.d.ts +0 -64
  287. package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
  288. package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
  289. package/dist/types/networkQualityMonitor/index.d.ts +0 -70
  290. package/dist/types/rtcMetrics/constants.d.ts +0 -4
  291. package/dist/types/rtcMetrics/index.d.ts +0 -71
  292. package/dist/types/statsAnalyzer/global.d.ts +0 -36
  293. package/dist/types/statsAnalyzer/index.d.ts +0 -217
  294. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
  295. package/dist/webinar/collection.d.ts +0 -16
  296. package/dist/webinar/index.d.ts +0 -5
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
 
3
+ var _typeof = require("@babel/runtime-corejs2/helpers/typeof");
3
4
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
5
+ var _Object$keys2 = require("@babel/runtime-corejs2/core-js/object/keys");
6
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
7
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
8
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
9
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
10
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
11
  var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
5
12
  var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
6
13
  var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
7
14
  var _Array$isArray2 = require("@babel/runtime-corejs2/core-js/array/is-array");
8
- var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
15
+ var _WeakMap = require("@babel/runtime-corejs2/core-js/weak-map");
9
16
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
17
  _Object$defineProperty(exports, "__esModule", {
11
18
  value: true
12
19
  });
13
20
  exports.default = void 0;
21
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/map"));
14
22
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
15
23
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
16
24
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -34,11 +42,18 @@ var _mediaSharesUtils = _interopRequireDefault(require("./mediaSharesUtils"));
34
42
  var _parser = _interopRequireDefault(require("./parser"));
35
43
  var _metrics = _interopRequireDefault(require("../metrics"));
36
44
  var _constants2 = _interopRequireDefault(require("../metrics/constants"));
45
+ var _hashTreeParser = _interopRequireWildcard(require("../hashTree/hashTreeParser"));
46
+ function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
47
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
37
48
  function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray2(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
38
49
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
50
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
51
+ 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; }
52
+ 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, _defineProperty2.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; }
40
53
  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); }; }
41
- 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; } }
54
+ 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; } } /* eslint-disable class-methods-use-this */
55
+ var LocusDtoTopLevelKeys = ['controls', 'fullState', 'host', 'info', 'links', 'mediaShares', 'meetings', 'participants', 'replaces', 'self', 'sequence', 'syncUrl', 'url'];
56
+
42
57
  /**
43
58
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
44
59
  * @export
@@ -48,6 +63,8 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
48
63
  var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
49
64
  (0, _inherits2.default)(LocusInfo, _EventsScope);
50
65
  var _super = _createSuper(LocusInfo);
66
+ // mapping of hash tree object ids to participant ids
67
+
51
68
  /**
52
69
  * Constructor
53
70
  * @param {function} updateMeeting callback to update the meeting object from an object
@@ -91,6 +108,8 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
91
108
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "resources", void 0);
92
109
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mainSessionLocusCache", void 0);
93
110
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "self", void 0);
111
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hashTreeParser", void 0);
112
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "hashTreeObjectId2ParticipantId", void 0);
94
113
  _this.parsedLocus = {
95
114
  states: []
96
115
  };
@@ -100,6 +119,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
100
119
  _this.meetingId = meetingId;
101
120
  _this.updateMeeting = updateMeeting;
102
121
  _this.locusParser = new _parser.default();
122
+ _this.hashTreeObjectId2ParticipantId = new _map.default();
103
123
  return _this;
104
124
  }
105
125
 
@@ -115,6 +135,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
115
135
  var _this2 = this;
116
136
  var isDelta;
117
137
  var url;
138
+ var meetingDestroyed = false;
118
139
  if (this.locusParser.workingCopy.syncUrl) {
119
140
  url = this.locusParser.workingCopy.syncUrl;
120
141
  isDelta = true;
@@ -139,30 +160,60 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
139
160
  code: e.code
140
161
  });
141
162
  isDelta = false;
142
- return meeting.meetingRequest.getLocusDTO({
143
- url: meeting.locusUrl
144
- }).catch(function (err) {
145
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
146
- _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
147
- throw err;
148
- });
163
+
164
+ // Locus sometimes returns 403, for example if meeting has ended, no point trying the fallback to full sync in that case
165
+ if (e.statusCode !== 403) {
166
+ return meeting.meetingRequest.getLocusDTO({
167
+ url: meeting.locusUrl
168
+ }).catch(function (err) {
169
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
170
+ _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
171
+ meetingDestroyed = true;
172
+ throw err;
173
+ });
174
+ }
175
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got 403 from Locus, skipping fallback to full sync, destroying the meeting');
176
+ } else {
177
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
149
178
  }
150
- _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> fallback full sync failed, destroying the meeting');
151
179
  _this2.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
180
+ meetingDestroyed = true;
152
181
  throw e;
153
182
  }).then(function (res) {
154
- if (isDelta) {
155
- if (!(0, _lodash.isEmpty)(res.body)) {
156
- meeting.locusInfo.handleLocusDelta(res.body, meeting);
157
- } else {
183
+ if ((0, _lodash.isEmpty)(res.body)) {
184
+ if (isDelta) {
158
185
  _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from syncUrl, so we already have latest Locus DTO');
186
+ } else {
187
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> received empty body from full DTO sync request');
159
188
  }
160
- } else {
161
- meeting.locusInfo.onFullLocus(res.body);
189
+ return;
190
+ }
191
+ if (isDelta) {
192
+ if (res.body.baseSequence) {
193
+ meeting.locusInfo.handleLocusDelta(res.body, meeting); // todo: check if this is safe, is isDelta=true always only for non-hash tree locus
194
+
195
+ return;
196
+ }
197
+ // in some cases Locus might return us full DTO even when we asked for a delta
198
+ _loggerProxy.default.logger.info('Locus-info:index#doLocusSync --> got full DTO when we asked for delta');
199
+ }
200
+ meeting.locusInfo.onFullLocus(res.body);
201
+ }).catch(function (e) {
202
+ _loggerProxy.default.logger.info("Locus-info:index#doLocusSync --> getLocusDTO succeeded but failed to handle result, locus parser will resume but not all data may be synced (".concat(e.toString(), ")"));
203
+ _metrics.default.sendBehavioralMetric(_constants2.default.LOCUS_SYNC_HANDLING_FAILED, {
204
+ correlationId: meeting.correlationId,
205
+ url: url,
206
+ reason: e.message,
207
+ errorName: e.name,
208
+ stack: e.stack,
209
+ code: e.code
210
+ });
211
+ }).finally(function () {
212
+ if (!meetingDestroyed) {
213
+ // Notify parser to resume processing delta events.
214
+ // Any deltas in the queue that have now been superseded by this sync will simply be ignored
215
+ _this2.locusParser.resume();
162
216
  }
163
- // Notify parser to resume processing delta events.
164
- // Any deltas in the queue that have now been superseded by this sync will simply be ignored
165
- _this2.locusParser.resume();
166
217
  });
167
218
  }
168
219
 
@@ -265,7 +316,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
265
316
  this.updateLocusCache(locus);
266
317
  // above section only updates the locusInfo object
267
318
  // The below section makes sure it updates the locusInfo as well as updates the meeting object
268
- this.updateParticipants(locus.participants);
319
+ this.updateParticipants(locus.participants, []);
269
320
  // For 1:1 space meeting the conversation Url does not exist in locus.conversation
270
321
  this.updateConversationUrl(locus.conversationUrl, locus.info);
271
322
  this.updateControls(locus.controls, locus.self);
@@ -283,19 +334,178 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
283
334
 
284
335
  /**
285
336
  * @param {Object} locus
337
+ * @param {DataSet[]} [dataSets=[]] - Array of data sets
286
338
  * @returns {undefined}
287
339
  * @memberof LocusInfo
288
340
  */
289
341
  }, {
290
342
  key: "initialSetup",
291
343
  value: function initialSetup(locus) {
344
+ var dataSets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
292
345
  this.updateLocusCache(locus);
293
- this.onFullLocus(locus);
346
+ this.onFullLocus(locus, undefined, dataSets);
294
347
 
295
348
  // Change it to true after it receives it first locus object
296
349
  this.emitChange = true;
297
350
  }
298
351
 
352
+ /**
353
+ *
354
+ * @param {HashTreeObject} object data set object
355
+ * @param {any} locus
356
+ * @returns {void}
357
+ */
358
+ }, {
359
+ key: "updateHashTreeObjectInLocus",
360
+ value: function updateHashTreeObjectInLocus(object, locus) {
361
+ var type = object.htMeta.elementId.type.toLowerCase();
362
+ switch (type) {
363
+ case _hashTreeParser.ObjectType.locus:
364
+ {
365
+ if (!object.data) {
366
+ _loggerProxy.default.logger.warn("Locus-info:index#updateHashTreeObjectInLocus --> received LOCUS object without data, this is not supported!");
367
+ return locus;
368
+ }
369
+ // replace the main locus
370
+
371
+ // The Locus object from MAIN dataset has empty participants, so removing them to avoid it overriding the ones in our current locus object
372
+ // Also, it doesn't have "self". That's OK as it won't override existing locus.self and also existing SDK code can handle that missing self in Locus updates
373
+ var locusObjectFromData = object.data;
374
+ delete locusObjectFromData.participants;
375
+ locus = _objectSpread(_objectSpread({}, locus), locusObjectFromData);
376
+ locus.htMeta = object.htMeta;
377
+ break;
378
+ }
379
+ case _hashTreeParser.ObjectType.participant:
380
+ _loggerProxy.default.logger.info("Locus-info:index#updateHashTreeObjectInLocus --> participant id=".concat(object.htMeta.elementId.id, " ").concat(object.data ? 'updated' : 'removed'));
381
+ console.log('marcin: hashTreeObjectId2ParticipantId=', (0, _lodash.cloneDeep)(this.hashTreeObjectId2ParticipantId));
382
+ if (object.data) {
383
+ if (!locus.participants) {
384
+ locus.participants = [];
385
+ }
386
+ var participantObject = object.data;
387
+ participantObject.htMeta = object.htMeta;
388
+ locus.participants.push(participantObject);
389
+ this.hashTreeObjectId2ParticipantId.set(object.htMeta.elementId.id, participantObject.id);
390
+ } else {
391
+ var participantId = this.hashTreeObjectId2ParticipantId.get(object.htMeta.elementId.id);
392
+ if (!locus.jsSdkMeta) {
393
+ locus.jsSdkMeta = {
394
+ removedParticipantIds: []
395
+ };
396
+ }
397
+ locus.jsSdkMeta.removedParticipantIds.push(participantId);
398
+ this.hashTreeObjectId2ParticipantId.delete(object.htMeta.elementId.id);
399
+ }
400
+ break;
401
+ case _hashTreeParser.ObjectType.self:
402
+ if (!object.data) {
403
+ _loggerProxy.default.logger.warn("Locus-info:index#updateHashTreeObjectInLocus --> received SELF object without data, this is not supported!");
404
+ return locus;
405
+ }
406
+ locus.self = object.data;
407
+ break;
408
+ }
409
+ return locus;
410
+ }
411
+
412
+ /**
413
+ * Handles HTTP response from Locus API call when hash tree update.
414
+ * @param {Meeting} meeting meeting object
415
+ * @param {LocusApiResponseBody} responseBody body of the http reponse from Locus API call
416
+ * @returns {void}
417
+ */
418
+ }, {
419
+ key: "handleLocusAPIResponse",
420
+ value: function handleLocusAPIResponse(meeting, responseBody) {
421
+ console.log('marcin: locus response from API call:', responseBody);
422
+ if (responseBody.dataSets) {
423
+ if (!this.hashTreeParser) {
424
+ _loggerProxy.default.logger.warn("Locus-info:index#handleLocusAPIResponse --> received response with hash tree info from Locus API, but we don't have the hashTreeParser created");
425
+ return;
426
+ }
427
+ // Locus is using the new hash tree mechanism
428
+ // so update our data in the hash tree parser
429
+ this.hashTreeParser.handleLocusUpdate(responseBody);
430
+
431
+ // but the Locus object we receive in this case looks same like classic delta, so we can use existing delta method to process it
432
+ this.onDeltaLocus(responseBody.locus);
433
+ } else {
434
+ // classic Locus delta
435
+ this.handleLocusDelta(responseBody.locus, meeting);
436
+ }
437
+ }
438
+
439
+ /**
440
+ * Handles a hash tree message received from Locus.
441
+ *
442
+ * @param {Meeting} meeting - The meeting object
443
+ * @param {HashTreeMessage} message incoming hash tree message
444
+ * @returns {void}
445
+ */
446
+ }, {
447
+ key: "handleHashTreeMessage",
448
+ value: function handleHashTreeMessage(meeting, message) {
449
+ if (!this.hashTreeParser) {
450
+ _loggerProxy.default.logger.warn("Locus-info:index#handleHashTreeMessage --> received hash tree message, but we don't have the hashTreeParser");
451
+ return;
452
+ }
453
+ if (message.locusStateElements === undefined) {
454
+ // todo: need to see in practice how exactly the heartbeat messages look like
455
+ this.hashTreeParser.handleRootHashHeartBeatMessage(message);
456
+ } else {
457
+ this.hashTreeParser.handleMessage(message);
458
+ }
459
+ }
460
+
461
+ /**
462
+ * Updates our locus info based on the data parsed by the hash tree parser.
463
+ *
464
+ * @param {LocusInfoUpdateType} updateType - The type of update received.
465
+ * @param {Object} [data] - Additional data for the update, if applicable.
466
+ * @returns {void}
467
+ */
468
+ }, {
469
+ key: "updateFromHashTree",
470
+ value: function updateFromHashTree(updateType, data) {
471
+ var _this4 = this;
472
+ switch (updateType) {
473
+ case _hashTreeParser.LocusInfoUpdateType.OBJECTS_UPDATED:
474
+ {
475
+ // initialize the main locus with what we currently have
476
+ // but with empty participants array
477
+ var locus = {
478
+ participants: [],
479
+ jsSdkMeta: {
480
+ removedParticipantIds: []
481
+ }
482
+ };
483
+ LocusDtoTopLevelKeys.forEach(function (key) {
484
+ if (key === 'participants') {
485
+ locus[key] = [];
486
+ } else {
487
+ locus[key] = (0, _lodash.cloneDeep)(_this4[key]);
488
+ }
489
+ });
490
+
491
+ // apply the updates from the hash tree onto the locus
492
+ data.updatedObjects.forEach(function (object) {
493
+ locus = _this4.updateHashTreeObjectInLocus(object, locus);
494
+ });
495
+
496
+ // update our locus info with the new locus
497
+ this.onDeltaLocus(locus);
498
+ break;
499
+ }
500
+ case _hashTreeParser.LocusInfoUpdateType.MEETING_ENDED:
501
+ {
502
+ _loggerProxy.default.logger.info("Locus-info:index#updateFromHashTree --> received signal that meeting ended, destroying meeting ".concat(this.meetingId));
503
+ var meeting = this.webex.meetings.meetingCollection.get(this.meetingId);
504
+ this.webex.meetings.destroy(meeting, _constants.MEETING_REMOVED_REASON.LOCUS_DTO_SYNC_FAILED);
505
+ }
506
+ }
507
+ }
508
+
299
509
  /**
300
510
  * @param {Meeting} meeting
301
511
  * @param {Object} data
@@ -305,34 +515,42 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
305
515
  }, {
306
516
  key: "parse",
307
517
  value: function parse(meeting, data) {
308
- // eslint-disable-next-line @typescript-eslint/no-shadow
309
- var eventType = data.eventType;
310
- var locus = this.getTheLocusToUpdate(data.locus);
311
- _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
312
- switch (eventType) {
313
- case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
314
- case _constants.LOCUSEVENT.PARTICIPANT_LEFT:
315
- case _constants.LOCUSEVENT.CONTROLS_UPDATED:
316
- case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:
317
- case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:
318
- case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:
319
- case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:
320
- case _constants.LOCUSEVENT.SELF_CHANGED:
321
- case _constants.LOCUSEVENT.PARTICIPANT_UPDATED:
322
- case _constants.LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:
323
- case _constants.LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:
324
- case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
325
- case _constants.LOCUSEVENT.FLOOR_GRANTED:
326
- case _constants.LOCUSEVENT.FLOOR_RELEASED:
327
- this.onFullLocus(locus, eventType);
328
- break;
329
- case _constants.LOCUSEVENT.DIFFERENCE:
330
- this.handleLocusDelta(locus, meeting);
331
- break;
332
- default:
333
- // Why will there be a event with no eventType ????
334
- // we may not need this, we can get full locus
335
- this.handleLocusDelta(locus, meeting);
518
+ if (data.eventType === 'locus.state_message') {
519
+ // this is the new hashmap Locus message format (only applicable to webinars for now)
520
+ this.handleHashTreeMessage(meeting, data.stateElementsMessage);
521
+ } else {
522
+ // eslint-disable-next-line @typescript-eslint/no-shadow
523
+ var eventType = data.eventType;
524
+ var locus = this.getTheLocusToUpdate(data.locus);
525
+ _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
526
+ locus.jsSdkMeta = {
527
+ removedParticipantIds: []
528
+ };
529
+ switch (eventType) {
530
+ case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
531
+ case _constants.LOCUSEVENT.PARTICIPANT_LEFT:
532
+ case _constants.LOCUSEVENT.CONTROLS_UPDATED:
533
+ case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_MUTED:
534
+ case _constants.LOCUSEVENT.PARTICIPANT_AUDIO_UNMUTED:
535
+ case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_MUTED:
536
+ case _constants.LOCUSEVENT.PARTICIPANT_VIDEO_UNMUTED:
537
+ case _constants.LOCUSEVENT.SELF_CHANGED:
538
+ case _constants.LOCUSEVENT.PARTICIPANT_UPDATED:
539
+ case _constants.LOCUSEVENT.PARTICIPANT_CONTROLS_UPDATED:
540
+ case _constants.LOCUSEVENT.PARTICIPANT_ROLES_UPDATED:
541
+ case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
542
+ case _constants.LOCUSEVENT.FLOOR_GRANTED:
543
+ case _constants.LOCUSEVENT.FLOOR_RELEASED:
544
+ this.onFullLocus(locus, eventType);
545
+ break;
546
+ case _constants.LOCUSEVENT.DIFFERENCE:
547
+ this.handleLocusDelta(locus, meeting);
548
+ break;
549
+ default:
550
+ // Why will there be a event with no eventType ????
551
+ // we may not need this, we can get full locus
552
+ this.handleLocusDelta(locus, meeting);
553
+ }
336
554
  }
337
555
  }
338
556
 
@@ -353,25 +571,57 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
353
571
  * updates the locus with full locus object
354
572
  * @param {object} locus locus object
355
573
  * @param {string} eventType particulat locus event
574
+ * @param {DataSet[]} dataSets
356
575
  * @returns {object} null
357
576
  * @memberof LocusInfo
358
577
  */
359
578
  }, {
360
579
  key: "onFullLocus",
361
- value: function onFullLocus(locus, eventType) {
580
+ value: function onFullLocus(locus, eventType, dataSets) {
581
+ var _this$participants,
582
+ _this5 = this,
583
+ _locus$jsSdkMeta;
362
584
  if (!locus) {
363
585
  _loggerProxy.default.logger.error('Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.');
364
586
  }
365
- if (!this.locusParser.isNewFullLocus(locus)) {
587
+ if (dataSets) {
588
+ // this is the new hashmap Locus DTO format (only applicable to webinars for now)
589
+ if (!this.hashTreeParser) {
590
+ _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> creating hash tree parser");
591
+ _loggerProxy.default.logger.info('Locus-info:index#onFullLocus --> dataSets:', dataSets, ' and locus:', locus);
592
+ this.hashTreeParser = new _hashTreeParser.default({
593
+ initialLocus: {
594
+ locus: locus,
595
+ dataSets: dataSets
596
+ },
597
+ webexRequest: this.webex.request.bind(this.webex),
598
+ locusInfoUpdateCallback: this.updateFromHashTree.bind(this),
599
+ debugId: "HT-".concat(this.meetingId.substring(0, 4))
600
+ });
601
+ } else {
602
+ // in this case the Locus we're getting is not necessarily the full one
603
+ // so treat it like if we just got it in a message
604
+ console.log('marcin: !!!!!!!! full DTO - this is not fully implemented/tested yet');
605
+ _loggerProxy.default.logger.warn('Locus-info:index#onFullLocus --> full DTO - this is not fully implemented/tested yet!!!!!!!!');
606
+ this.handleLocusAPIResponse(undefined, {
607
+ dataSets: dataSets,
608
+ locus: locus
609
+ });
610
+ return;
611
+ }
612
+ } else if (!this.locusParser.isNewFullLocus(locus)) {
366
613
  _loggerProxy.default.logger.info("Locus-info:index#onFullLocus --> ignoring old full locus DTO, eventType=".concat(eventType));
367
614
  return;
368
615
  }
369
616
  this.updateParticipantDeltas(locus.participants);
370
617
  this.scheduledMeeting = locus.meeting || null;
371
618
  this.participants = locus.participants;
619
+ (_this$participants = this.participants) === null || _this$participants === void 0 ? void 0 : _this$participants.forEach(function (participant) {
620
+ _this5.hashTreeObjectId2ParticipantId.set(participant.htMeta.elementId.id, participant.id);
621
+ });
372
622
  var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
373
623
  this.updateLocusInfo(locus);
374
- this.updateParticipants(locus.participants, isReplaceMembers);
624
+ this.updateParticipants(locus.participants, (_locus$jsSdkMeta = locus.jsSdkMeta) === null || _locus$jsSdkMeta === void 0 ? void 0 : _locus$jsSdkMeta.removedParticipantIds, isReplaceMembers);
375
625
  this.isMeetingActive();
376
626
  this.handleOneOnOneEvent(eventType);
377
627
  this.updateEmbeddedApps(locus.embeddedApps);
@@ -423,10 +673,11 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
423
673
  }, {
424
674
  key: "onDeltaLocus",
425
675
  value: function onDeltaLocus(locus) {
676
+ var _locus$jsSdkMeta2;
426
677
  var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
427
678
  this.mergeParticipants(this.participants, locus.participants);
428
679
  this.updateLocusInfo(locus);
429
- this.updateParticipants(locus.participants, isReplaceMembers);
680
+ this.updateParticipants(locus.participants, (_locus$jsSdkMeta2 = locus.jsSdkMeta) === null || _locus$jsSdkMeta2 === void 0 ? void 0 : _locus$jsSdkMeta2.removedParticipantIds, isReplaceMembers);
430
681
  this.isMeetingActive();
431
682
  }
432
683
 
@@ -450,12 +701,12 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
450
701
  this.updateCreated(locus.created);
451
702
  this.updateFullState(locus.fullState);
452
703
  this.updateHostInfo(locus.host);
704
+ this.updateLocusUrl(locus.url);
453
705
  this.updateMeetingInfo(locus.info, locus.self);
454
706
  this.updateMediaShares(locus.mediaShares);
455
707
  this.updateParticipantsUrl(locus.participantsUrl);
456
708
  this.updateReplace(locus.replace);
457
709
  this.updateSelf(locus.self);
458
- this.updateLocusUrl(locus.url);
459
710
  this.updateAclUrl(locus.aclUrl);
460
711
  this.updateBasequence(locus.baseSequence);
461
712
  this.updateSequence(locus.sequence);
@@ -667,7 +918,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
667
918
  }, {
668
919
  key: "updateParticipantDeltas",
669
920
  value: function updateParticipantDeltas() {
670
- var _this4 = this;
921
+ var _this6 = this;
671
922
  var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
672
923
  // Used to find a participant within a participants collection.
673
924
  var findParticipant = function findParticipant(participant, collection) {
@@ -696,7 +947,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
696
947
  return deltas;
697
948
  };
698
949
  this.deltaParticipants = participants.reduce(function (collection, participant) {
699
- var existingParticipant = findParticipant(participant, _this4.participants || []) || {};
950
+ var existingParticipant = findParticipant(participant, _this6.participants || []) || {};
700
951
  var delta = generateDelta(existingParticipant.status, participant.status);
701
952
  var changed = (0, _keys.default)(delta).length > 0;
702
953
  if (changed) {
@@ -712,19 +963,21 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
712
963
  /**
713
964
  * update meeting's members
714
965
  * @param {Object} participants new participants object
966
+ * @param {Array} removedParticipantIds list of removed participants
715
967
  * @param {Boolean} isReplace is replace the whole members
716
968
  * @returns {Array} updatedParticipants
717
969
  * @memberof LocusInfo
718
970
  */
719
971
  }, {
720
972
  key: "updateParticipants",
721
- value: function updateParticipants(participants, isReplace) {
973
+ value: function updateParticipants(participants, removedParticipantIds, isReplace) {
722
974
  var _this$parsedLocus$con;
723
975
  this.emitScoped({
724
976
  file: 'locus-info',
725
977
  function: 'updateParticipants'
726
978
  }, _constants.EVENTS.LOCUS_INFO_UPDATE_PARTICIPANTS, {
727
979
  participants: participants,
980
+ removedParticipantIds: removedParticipantIds,
728
981
  recordingId: this.parsedLocus.controls && ((_this$parsedLocus$con = this.parsedLocus.controls.record) === null || _this$parsedLocus$con === void 0 ? void 0 : _this$parsedLocus$con.modifiedBy),
729
982
  selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,
730
983
  selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,
@@ -772,6 +1025,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
772
1025
  hasRecordingPausedChanged = _ControlsUtils$getCon2.hasRecordingPausedChanged,
773
1026
  hasMeetingContainerChanged = _ControlsUtils$getCon2.hasMeetingContainerChanged,
774
1027
  hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
1028
+ hasTranscribeSpokenLanguageChanged = _ControlsUtils$getCon2.hasTranscribeSpokenLanguageChanged,
775
1029
  hasManualCaptionChanged = _ControlsUtils$getCon2.hasManualCaptionChanged,
776
1030
  hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
777
1031
  hasBreakoutChanged = _ControlsUtils$getCon2.hasBreakoutChanged,
@@ -791,6 +1045,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
791
1045
  hasStageViewChanged = _ControlsUtils$getCon2.hasStageViewChanged,
792
1046
  hasAnnotationControlChanged = _ControlsUtils$getCon2.hasAnnotationControlChanged,
793
1047
  hasRemoteDesktopControlChanged = _ControlsUtils$getCon2.hasRemoteDesktopControlChanged,
1048
+ hasPollingQAControlChanged = _ControlsUtils$getCon2.hasPollingQAControlChanged,
794
1049
  current = _ControlsUtils$getCon.current;
795
1050
  if (hasMuteOnEntryChanged) {
796
1051
  this.emitScoped({
@@ -890,6 +1145,15 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
890
1145
  caption: caption
891
1146
  });
892
1147
  }
1148
+ if (hasTranscribeSpokenLanguageChanged) {
1149
+ var spokenLanguage = current.transcribe.spokenLanguage;
1150
+ this.emitScoped({
1151
+ file: 'locus-info',
1152
+ function: 'updateControls'
1153
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_TRANSCRIPTION_SPOKEN_LANGUAGE_UPDATED, {
1154
+ spokenLanguage: spokenLanguage
1155
+ });
1156
+ }
893
1157
  if (hasManualCaptionChanged) {
894
1158
  var enabled = current.manualCaptionControl.enabled;
895
1159
  this.emitScoped({
@@ -994,6 +1258,14 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
994
1258
  state: current.rdcControl
995
1259
  });
996
1260
  }
1261
+ if (hasPollingQAControlChanged) {
1262
+ this.emitScoped({
1263
+ file: 'locus-info',
1264
+ function: 'updateControls'
1265
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_POLLING_QA_CHANGED, {
1266
+ state: current.pollingQAControl
1267
+ });
1268
+ }
997
1269
  this.controls = controls;
998
1270
  }
999
1271
  }
@@ -1607,7 +1879,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1607
1879
  }, {
1608
1880
  key: "updateMainSessionLocusCache",
1609
1881
  value: function updateMainSessionLocusCache(mainLocus) {
1610
- var _this5 = this;
1882
+ var _this7 = this;
1611
1883
  if (!mainLocus) {
1612
1884
  return;
1613
1885
  }
@@ -1616,7 +1888,7 @@ var LocusInfo = exports.default = /*#__PURE__*/function (_EventsScope) {
1616
1888
  // shallow merge and do special merge for participants
1617
1889
  (0, _lodash.assignWith)(this.mainSessionLocusCache, locusClone, function (objValue, srcValue, key) {
1618
1890
  if (key === 'participants') {
1619
- return _this5.mergeParticipants(objValue, srcValue);
1891
+ return _this7.mergeParticipants(objValue, srcValue);
1620
1892
  }
1621
1893
  return srcValue || objValue;
1622
1894
  });