@webex/plugin-meetings 3.0.0-beta.18 → 3.0.0-beta.180

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 (410) hide show
  1. package/README.md +45 -7
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +3 -2
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/config.js +3 -8
  25. package/dist/config.js.map +1 -1
  26. package/dist/constants.js +172 -30
  27. package/dist/constants.js.map +1 -1
  28. package/dist/controls-options-manager/constants.js +14 -0
  29. package/dist/controls-options-manager/constants.js.map +1 -0
  30. package/dist/controls-options-manager/enums.js +27 -0
  31. package/dist/controls-options-manager/enums.js.map +1 -0
  32. package/dist/controls-options-manager/index.js +297 -0
  33. package/dist/controls-options-manager/index.js.map +1 -0
  34. package/dist/controls-options-manager/types.js +7 -0
  35. package/dist/controls-options-manager/types.js.map +1 -0
  36. package/dist/controls-options-manager/util.js +300 -0
  37. package/dist/controls-options-manager/util.js.map +1 -0
  38. package/dist/index.js +107 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/interpretation/collection.js +23 -0
  41. package/dist/interpretation/collection.js.map +1 -0
  42. package/dist/interpretation/index.js +352 -0
  43. package/dist/interpretation/index.js.map +1 -0
  44. package/dist/interpretation/siLanguage.js +25 -0
  45. package/dist/interpretation/siLanguage.js.map +1 -0
  46. package/dist/locus-info/controlsUtils.js +91 -2
  47. package/dist/locus-info/controlsUtils.js.map +1 -1
  48. package/dist/locus-info/index.js +302 -41
  49. package/dist/locus-info/index.js.map +1 -1
  50. package/dist/locus-info/mediaSharesUtils.js +43 -1
  51. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  52. package/dist/locus-info/parser.js +1 -1
  53. package/dist/locus-info/parser.js.map +1 -1
  54. package/dist/locus-info/selfUtils.js +89 -14
  55. package/dist/locus-info/selfUtils.js.map +1 -1
  56. package/dist/media/index.js +39 -134
  57. package/dist/media/index.js.map +1 -1
  58. package/dist/media/properties.js +29 -90
  59. package/dist/media/properties.js.map +1 -1
  60. package/dist/mediaQualityMetrics/config.js +505 -493
  61. package/dist/mediaQualityMetrics/config.js.map +1 -1
  62. package/dist/meeting/in-meeting-actions.js +76 -2
  63. package/dist/meeting/in-meeting-actions.js.map +1 -1
  64. package/dist/meeting/index.js +2610 -2465
  65. package/dist/meeting/index.js.map +1 -1
  66. package/dist/meeting/locusMediaRequest.js +291 -0
  67. package/dist/meeting/locusMediaRequest.js.map +1 -0
  68. package/dist/meeting/muteState.js +229 -124
  69. package/dist/meeting/muteState.js.map +1 -1
  70. package/dist/meeting/request.js +189 -146
  71. package/dist/meeting/request.js.map +1 -1
  72. package/dist/meeting/util.js +478 -414
  73. package/dist/meeting/util.js.map +1 -1
  74. package/dist/meeting-info/index.js +48 -7
  75. package/dist/meeting-info/index.js.map +1 -1
  76. package/dist/meeting-info/meeting-info-v2.js +171 -51
  77. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  78. package/dist/meeting-info/utilv2.js +20 -5
  79. package/dist/meeting-info/utilv2.js.map +1 -1
  80. package/dist/meetings/collection.js +22 -0
  81. package/dist/meetings/collection.js.map +1 -1
  82. package/dist/meetings/index.js +350 -65
  83. package/dist/meetings/index.js.map +1 -1
  84. package/dist/meetings/meetings.types.js +7 -0
  85. package/dist/meetings/meetings.types.js.map +1 -0
  86. package/dist/meetings/request.js +2 -0
  87. package/dist/meetings/request.js.map +1 -1
  88. package/dist/meetings/util.js +88 -1
  89. package/dist/meetings/util.js.map +1 -1
  90. package/dist/member/index.js +49 -0
  91. package/dist/member/index.js.map +1 -1
  92. package/dist/member/types.js +25 -0
  93. package/dist/member/types.js.map +1 -0
  94. package/dist/member/util.js +98 -2
  95. package/dist/member/util.js.map +1 -1
  96. package/dist/members/collection.js +10 -0
  97. package/dist/members/collection.js.map +1 -1
  98. package/dist/members/index.js +86 -5
  99. package/dist/members/index.js.map +1 -1
  100. package/dist/members/request.js +106 -38
  101. package/dist/members/request.js.map +1 -1
  102. package/dist/members/types.js +15 -0
  103. package/dist/members/types.js.map +1 -0
  104. package/dist/members/util.js +316 -233
  105. package/dist/members/util.js.map +1 -1
  106. package/dist/metrics/constants.js +3 -5
  107. package/dist/metrics/constants.js.map +1 -1
  108. package/dist/metrics/index.js +1 -468
  109. package/dist/metrics/index.js.map +1 -1
  110. package/dist/multistream/mediaRequestManager.js +238 -49
  111. package/dist/multistream/mediaRequestManager.js.map +1 -1
  112. package/dist/multistream/receiveSlot.js +49 -16
  113. package/dist/multistream/receiveSlot.js.map +1 -1
  114. package/dist/multistream/receiveSlotManager.js +48 -30
  115. package/dist/multistream/receiveSlotManager.js.map +1 -1
  116. package/dist/multistream/remoteMedia.js +44 -18
  117. package/dist/multistream/remoteMedia.js.map +1 -1
  118. package/dist/multistream/remoteMediaGroup.js +60 -3
  119. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  120. package/dist/multistream/remoteMediaManager.js +173 -59
  121. package/dist/multistream/remoteMediaManager.js.map +1 -1
  122. package/dist/networkQualityMonitor/index.js +4 -2
  123. package/dist/networkQualityMonitor/index.js.map +1 -1
  124. package/dist/reachability/index.js +72 -27
  125. package/dist/reachability/index.js.map +1 -1
  126. package/dist/reachability/request.js +12 -5
  127. package/dist/reachability/request.js.map +1 -1
  128. package/dist/reactions/reactions.js +2 -2
  129. package/dist/reactions/reactions.js.map +1 -1
  130. package/dist/reactions/reactions.type.js +18 -18
  131. package/dist/reactions/reactions.type.js.map +1 -1
  132. package/dist/reconnection-manager/index.js +196 -155
  133. package/dist/reconnection-manager/index.js.map +1 -1
  134. package/dist/recording-controller/index.js +21 -1
  135. package/dist/recording-controller/index.js.map +1 -1
  136. package/dist/recording-controller/util.js +9 -8
  137. package/dist/recording-controller/util.js.map +1 -1
  138. package/dist/roap/index.js +21 -29
  139. package/dist/roap/index.js.map +1 -1
  140. package/dist/roap/request.js +110 -89
  141. package/dist/roap/request.js.map +1 -1
  142. package/dist/roap/turnDiscovery.js +93 -36
  143. package/dist/roap/turnDiscovery.js.map +1 -1
  144. package/dist/statsAnalyzer/global.js +1 -93
  145. package/dist/statsAnalyzer/global.js.map +1 -1
  146. package/dist/statsAnalyzer/index.js +326 -311
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +90 -53
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/breakout.d.ts +8 -0
  154. package/dist/types/breakouts/collection.d.ts +5 -0
  155. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  156. package/dist/types/breakouts/events.d.ts +8 -0
  157. package/dist/types/breakouts/index.d.ts +5 -0
  158. package/dist/types/breakouts/request.d.ts +22 -0
  159. package/dist/types/breakouts/utils.d.ts +15 -0
  160. package/dist/types/common/browser-detection.d.ts +9 -0
  161. package/dist/types/common/collection.d.ts +48 -0
  162. package/dist/types/common/config.d.ts +2 -0
  163. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  164. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  165. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  166. package/dist/types/common/errors/media.d.ts +15 -0
  167. package/dist/types/common/errors/parameter.d.ts +15 -0
  168. package/dist/types/common/errors/password-error.d.ts +15 -0
  169. package/dist/types/common/errors/permission.d.ts +14 -0
  170. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  171. package/dist/types/common/errors/reconnection.d.ts +15 -0
  172. package/dist/types/common/errors/stats.d.ts +15 -0
  173. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  174. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  175. package/dist/types/common/events/events-scope.d.ts +17 -0
  176. package/dist/types/common/events/events.d.ts +12 -0
  177. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  178. package/dist/types/common/events/util.d.ts +2 -0
  179. package/dist/types/common/logs/logger-config.d.ts +2 -0
  180. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  181. package/dist/types/common/logs/request.d.ts +34 -0
  182. package/dist/types/common/queue.d.ts +32 -0
  183. package/dist/types/config.d.ts +72 -0
  184. package/dist/types/constants.d.ts +1016 -0
  185. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  186. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  187. package/dist/types/controls-options-manager/index.d.ts +136 -0
  188. package/dist/types/controls-options-manager/types.d.ts +43 -0
  189. package/dist/types/controls-options-manager/util.d.ts +1 -0
  190. package/dist/types/index.d.ts +7 -0
  191. package/dist/types/interpretation/collection.d.ts +5 -0
  192. package/dist/types/interpretation/index.d.ts +5 -0
  193. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  194. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  195. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  196. package/dist/types/locus-info/fullState.d.ts +2 -0
  197. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  198. package/dist/types/locus-info/index.d.ts +315 -0
  199. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  200. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  201. package/dist/types/locus-info/parser.d.ts +212 -0
  202. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  203. package/dist/types/media/index.d.ts +34 -0
  204. package/dist/types/media/properties.d.ts +93 -0
  205. package/dist/types/media/util.d.ts +2 -0
  206. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  207. package/dist/types/meeting/in-meeting-actions.d.ts +149 -0
  208. package/dist/types/meeting/index.d.ts +1467 -0
  209. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  210. package/dist/types/meeting/muteState.d.ts +184 -0
  211. package/dist/types/meeting/request.d.ts +270 -0
  212. package/dist/types/meeting/request.type.d.ts +11 -0
  213. package/dist/types/meeting/state.d.ts +9 -0
  214. package/dist/types/meeting/util.d.ts +77 -0
  215. package/dist/types/meeting-info/collection.d.ts +20 -0
  216. package/dist/types/meeting-info/index.d.ts +62 -0
  217. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  218. package/dist/types/meeting-info/request.d.ts +22 -0
  219. package/dist/types/meeting-info/util.d.ts +2 -0
  220. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  221. package/dist/types/meetings/collection.d.ts +31 -0
  222. package/dist/types/meetings/index.d.ts +365 -0
  223. package/dist/types/meetings/meetings.types.d.ts +4 -0
  224. package/dist/types/meetings/request.d.ts +27 -0
  225. package/dist/types/meetings/util.d.ts +18 -0
  226. package/dist/types/member/index.d.ts +159 -0
  227. package/dist/types/member/types.d.ts +32 -0
  228. package/dist/types/member/util.d.ts +2 -0
  229. package/dist/types/members/collection.d.ts +29 -0
  230. package/dist/types/members/index.d.ts +353 -0
  231. package/dist/types/members/request.d.ts +114 -0
  232. package/dist/types/members/types.d.ts +24 -0
  233. package/dist/types/members/util.d.ts +210 -0
  234. package/dist/types/metrics/constants.d.ts +55 -0
  235. package/dist/types/metrics/index.d.ts +45 -0
  236. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  237. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  238. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  239. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  240. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  241. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  242. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  243. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  244. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  245. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  246. package/dist/types/reachability/index.d.ts +152 -0
  247. package/dist/types/reachability/request.d.ts +37 -0
  248. package/dist/types/reactions/constants.d.ts +3 -0
  249. package/dist/types/reactions/reactions.d.ts +4 -0
  250. package/dist/types/reactions/reactions.type.d.ts +52 -0
  251. package/dist/types/reconnection-manager/index.d.ts +126 -0
  252. package/dist/types/recording-controller/enums.d.ts +7 -0
  253. package/dist/types/recording-controller/index.d.ts +208 -0
  254. package/dist/types/recording-controller/util.d.ts +14 -0
  255. package/dist/types/roap/index.d.ts +77 -0
  256. package/dist/types/roap/request.d.ts +36 -0
  257. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  258. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  259. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  260. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  261. package/dist/types/transcription/index.d.ts +64 -0
  262. package/package.json +26 -23
  263. package/src/annotation/annotation.types.ts +50 -0
  264. package/src/annotation/constants.ts +36 -0
  265. package/src/annotation/index.ts +328 -0
  266. package/src/breakouts/README.md +44 -14
  267. package/src/breakouts/breakout.ts +87 -9
  268. package/src/breakouts/edit-lock-error.ts +25 -0
  269. package/src/breakouts/events.ts +56 -0
  270. package/src/breakouts/index.ts +710 -10
  271. package/src/breakouts/request.ts +55 -0
  272. package/src/breakouts/utils.ts +57 -0
  273. package/src/common/errors/webex-errors.ts +6 -2
  274. package/src/common/logs/logger-proxy.ts +1 -1
  275. package/src/config.ts +2 -7
  276. package/src/constants.ts +157 -21
  277. package/src/controls-options-manager/constants.ts +5 -0
  278. package/src/controls-options-manager/enums.ts +18 -0
  279. package/src/controls-options-manager/index.ts +278 -0
  280. package/src/controls-options-manager/types.ts +59 -0
  281. package/src/controls-options-manager/util.ts +286 -0
  282. package/src/index.ts +39 -0
  283. package/src/interpretation/README.md +60 -0
  284. package/src/interpretation/collection.ts +19 -0
  285. package/src/interpretation/index.ts +318 -0
  286. package/src/interpretation/siLanguage.ts +18 -0
  287. package/src/locus-info/controlsUtils.ts +108 -0
  288. package/src/locus-info/index.ts +316 -38
  289. package/src/locus-info/mediaSharesUtils.ts +48 -0
  290. package/src/locus-info/parser.ts +1 -1
  291. package/src/locus-info/selfUtils.ts +81 -5
  292. package/src/media/index.ts +77 -142
  293. package/src/media/properties.ts +49 -90
  294. package/src/mediaQualityMetrics/config.ts +379 -377
  295. package/src/meeting/in-meeting-actions.ts +151 -3
  296. package/src/meeting/index.ts +1919 -2002
  297. package/src/meeting/locusMediaRequest.ts +309 -0
  298. package/src/meeting/muteState.ts +228 -132
  299. package/src/meeting/request.ts +96 -65
  300. package/src/meeting/util.ts +464 -396
  301. package/src/meeting-info/index.ts +54 -8
  302. package/src/meeting-info/meeting-info-v2.ts +148 -14
  303. package/src/meeting-info/utilv2.ts +13 -3
  304. package/src/meetings/collection.ts +20 -0
  305. package/src/meetings/index.ts +386 -84
  306. package/src/meetings/meetings.types.ts +12 -0
  307. package/src/meetings/request.ts +2 -0
  308. package/src/meetings/util.ts +103 -4
  309. package/src/member/index.ts +49 -0
  310. package/src/member/types.ts +38 -0
  311. package/src/member/util.ts +103 -0
  312. package/src/members/collection.ts +8 -0
  313. package/src/members/index.ts +107 -6
  314. package/src/members/request.ts +97 -17
  315. package/src/members/types.ts +28 -0
  316. package/src/members/util.ts +319 -240
  317. package/src/metrics/constants.ts +2 -4
  318. package/src/metrics/index.ts +1 -490
  319. package/src/multistream/mediaRequestManager.ts +289 -79
  320. package/src/multistream/receiveSlot.ts +55 -18
  321. package/src/multistream/receiveSlotManager.ts +42 -20
  322. package/src/multistream/remoteMedia.ts +28 -2
  323. package/src/multistream/remoteMediaGroup.ts +59 -0
  324. package/src/multistream/remoteMediaManager.ts +113 -32
  325. package/src/networkQualityMonitor/index.ts +6 -6
  326. package/src/reachability/index.ts +62 -15
  327. package/src/reachability/request.ts +10 -5
  328. package/src/reactions/reactions.ts +4 -4
  329. package/src/reactions/reactions.type.ts +3 -3
  330. package/src/reconnection-manager/index.ts +68 -43
  331. package/src/recording-controller/index.ts +20 -2
  332. package/src/recording-controller/util.ts +26 -9
  333. package/src/roap/index.ts +21 -30
  334. package/src/roap/request.ts +101 -95
  335. package/src/roap/turnDiscovery.ts +47 -25
  336. package/src/statsAnalyzer/global.ts +1 -94
  337. package/src/statsAnalyzer/index.ts +376 -386
  338. package/src/statsAnalyzer/mqaUtil.ts +100 -99
  339. package/test/integration/spec/converged-space-meetings.js +233 -0
  340. package/test/integration/spec/journey.js +336 -259
  341. package/test/integration/spec/space-meeting.js +77 -4
  342. package/test/unit/spec/annotation/index.ts +418 -0
  343. package/test/unit/spec/breakouts/breakout.ts +142 -24
  344. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  345. package/test/unit/spec/breakouts/events.ts +89 -0
  346. package/test/unit/spec/breakouts/index.ts +1545 -48
  347. package/test/unit/spec/breakouts/request.ts +104 -0
  348. package/test/unit/spec/breakouts/utils.js +72 -0
  349. package/test/unit/spec/controls-options-manager/index.js +287 -0
  350. package/test/unit/spec/controls-options-manager/util.js +518 -0
  351. package/test/unit/spec/fixture/locus.js +1 -0
  352. package/test/unit/spec/interpretation/collection.ts +15 -0
  353. package/test/unit/spec/interpretation/index.ts +570 -0
  354. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  355. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  356. package/test/unit/spec/locus-info/index.js +707 -22
  357. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  358. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  359. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  360. package/test/unit/spec/media/index.ts +129 -23
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +75 -3
  362. package/test/unit/spec/meeting/index.js +2728 -1397
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  364. package/test/unit/spec/meeting/muteState.js +370 -208
  365. package/test/unit/spec/meeting/request.js +338 -43
  366. package/test/unit/spec/meeting/utils.js +378 -55
  367. package/test/unit/spec/meeting-info/index.js +181 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +14 -0
  371. package/test/unit/spec/meetings/index.js +846 -121
  372. package/test/unit/spec/meetings/utils.js +206 -2
  373. package/test/unit/spec/member/index.js +58 -4
  374. package/test/unit/spec/member/util.js +415 -33
  375. package/test/unit/spec/members/index.js +320 -1
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +184 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  380. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  382. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
  385. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  386. package/test/unit/spec/reachability/index.ts +125 -8
  387. package/test/unit/spec/reachability/request.js +66 -0
  388. package/test/unit/spec/reconnection-manager/index.js +59 -6
  389. package/test/unit/spec/recording-controller/index.js +294 -218
  390. package/test/unit/spec/recording-controller/util.js +223 -96
  391. package/test/unit/spec/roap/index.ts +26 -51
  392. package/test/unit/spec/roap/request.ts +196 -85
  393. package/test/unit/spec/roap/turnDiscovery.ts +30 -7
  394. package/test/unit/spec/stats-analyzer/index.js +92 -41
  395. package/test/utils/constants.js +9 -0
  396. package/test/utils/integrationTestUtils.js +46 -0
  397. package/test/utils/testUtils.js +0 -45
  398. package/test/utils/webex-config.js +4 -0
  399. package/test/utils/webex-test-users.js +6 -3
  400. package/dist/meeting/effectsState.js +0 -262
  401. package/dist/meeting/effectsState.js.map +0 -1
  402. package/dist/metrics/config.js +0 -299
  403. package/dist/metrics/config.js.map +0 -1
  404. package/dist/multistream/multistreamMedia.js +0 -110
  405. package/dist/multistream/multistreamMedia.js.map +0 -1
  406. package/src/index.js +0 -15
  407. package/src/meeting/effectsState.ts +0 -211
  408. package/src/metrics/config.ts +0 -495
  409. package/src/multistream/multistreamMedia.ts +0 -97
  410. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -15,12 +15,12 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/
15
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
16
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
17
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
18
+ var _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
19
+ var _assignWith2 = _interopRequireDefault(require("lodash/assignWith"));
18
20
  var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
19
21
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
20
22
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
21
23
  var _constants = require("../constants");
22
- var _metrics = _interopRequireDefault(require("../metrics"));
23
- var _config = require("../metrics/config");
24
24
  var _infoUtils = _interopRequireDefault(require("./infoUtils"));
25
25
  var _fullState = _interopRequireDefault(require("./fullState"));
26
26
  var _selfUtils = _interopRequireDefault(require("./selfUtils"));
@@ -40,6 +40,13 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
40
40
  var LocusInfo = /*#__PURE__*/function (_EventsScope) {
41
41
  (0, _inherits2.default)(LocusInfo, _EventsScope);
42
42
  var _super = _createSuper(LocusInfo);
43
+ /**
44
+ * Constructor
45
+ * @param {boolean} updateMeeting true if the meeting should be updated
46
+ * @param {object} webex
47
+ * @param {string} meetingId
48
+ * @returns {undefined}
49
+ */
43
50
  function LocusInfo(updateMeeting, webex, meetingId) {
44
51
  var _this;
45
52
  (0, _classCallCheck2.default)(this, LocusInfo);
@@ -68,10 +75,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
68
75
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fullState", void 0);
69
76
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "host", void 0);
70
77
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "info", void 0);
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "roles", void 0);
71
79
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaShares", void 0);
72
80
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replace", void 0);
73
81
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "url", void 0);
74
82
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "services", void 0);
83
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mainSessionLocusCache", void 0);
75
84
  _this.parsedLocus = {
76
85
  states: []
77
86
  };
@@ -110,7 +119,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
110
119
  case DESYNC:
111
120
  meeting.meetingRequest.getFullLocus({
112
121
  desync: true,
113
- locusUrl: meeting.locusUrl
122
+ locusUrl: locus.url ? locus.url : meeting.locusUrl
114
123
  }).then(function (res) {
115
124
  meeting.locusInfo.onFullLocus(res.body);
116
125
  // Notify parser to resume processing delta events
@@ -186,13 +195,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
186
195
  * @member LocusInfo
187
196
  */
188
197
  this.deltaParticipants = [];
189
-
198
+ this.updateLocusCache(locus);
190
199
  // above section only updates the locusInfo object
191
200
  // The below section makes sure it updates the locusInfo as well as updates the meeting object
192
201
  this.updateParticipants(locus.participants);
193
202
  // For 1:1 space meeting the conversation Url does not exist in locus.conversation
194
203
  this.updateConversationUrl(locus.conversationUrl, locus.info);
195
- this.updateControls(locus.controls);
204
+ this.updateControls(locus.controls, locus.self);
196
205
  this.updateLocusUrl(locus.url);
197
206
  this.updateFullState(locus.fullState);
198
207
  this.updateMeetingInfo(locus.info);
@@ -212,6 +221,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
212
221
  }, {
213
222
  key: "initialSetup",
214
223
  value: function initialSetup(locus) {
224
+ this.updateLocusCache(locus);
215
225
  this.onFullLocus(locus);
216
226
 
217
227
  // Change it to true after it receives it first locus object
@@ -229,6 +239,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
229
239
  value: function parse(meeting, data) {
230
240
  // eslint-disable-next-line @typescript-eslint/no-shadow
231
241
  var eventType = data.eventType;
242
+ var locus = this.getTheLocusToUpdate(data.locus);
232
243
  _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
233
244
  switch (eventType) {
234
245
  case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
@@ -245,15 +256,15 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
245
256
  case _constants.LOCUSEVENT.PARTICIPANT_DECLINED:
246
257
  case _constants.LOCUSEVENT.FLOOR_GRANTED:
247
258
  case _constants.LOCUSEVENT.FLOOR_RELEASED:
248
- this.onFullLocus(data.locus, eventType);
259
+ this.onFullLocus(locus, eventType);
249
260
  break;
250
261
  case _constants.LOCUSEVENT.DIFFERENCE:
251
- this.handleLocusDelta(data.locus, meeting);
262
+ this.handleLocusDelta(locus, meeting);
252
263
  break;
253
264
  default:
254
265
  // Why will there be a event with no eventType ????
255
266
  // we may not need this, we can get full locus
256
- this.handleLocusDelta(data.locus, meeting);
267
+ this.handleLocusDelta(locus, meeting);
257
268
  }
258
269
  }
259
270
 
@@ -287,8 +298,9 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
287
298
  this.updateParticipantDeltas(locus.participants);
288
299
  this.scheduledMeeting = locus.meeting || null;
289
300
  this.participants = locus.participants;
301
+ var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
290
302
  this.updateLocusInfo(locus);
291
- this.updateParticipants(locus.participants);
303
+ this.updateParticipants(locus.participants, isReplaceMembers);
292
304
  this.isMeetingActive();
293
305
  this.handleOneOnOneEvent(eventType);
294
306
  this.updateEmbeddedApps(locus.embeddedApps);
@@ -340,8 +352,9 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
340
352
  }, {
341
353
  key: "onDeltaLocus",
342
354
  value: function onDeltaLocus(locus) {
355
+ var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
343
356
  this.updateLocusInfo(locus);
344
- this.updateParticipants(locus.participants);
357
+ this.updateParticipants(locus.participants, isReplaceMembers);
345
358
  this.isMeetingActive();
346
359
  }
347
360
 
@@ -360,7 +373,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
360
373
  // as it gets interpreted as if we have left the call
361
374
  return;
362
375
  }
363
- this.updateControls(locus.controls);
376
+ this.updateControls(locus.controls, locus.self);
364
377
  this.updateConversationUrl(locus.conversationUrl, locus.info);
365
378
  this.updateCreated(locus.created);
366
379
  this.updateFullState(locus.fullState);
@@ -426,9 +439,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
426
439
  if (this.fullState && this.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
427
440
  // TODO: update the meeting state
428
441
  _loggerProxy.default.logger.warn('Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.');
429
- _metrics.default.postEvent({
430
- event: _config.eventType.REMOTE_ENDED,
431
- meetingId: this.meetingId
442
+
443
+ // @ts-ignore
444
+ this.webex.internal.newMetrics.submitClientEvent({
445
+ name: 'client.call.remote-ended',
446
+ options: {
447
+ meetingId: this.meetingId
448
+ }
432
449
  });
433
450
  this.emitScoped({
434
451
  file: 'locus-info',
@@ -438,9 +455,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
438
455
  shouldLeave: false
439
456
  });
440
457
  } else if (partner.state === _constants.MEETING_STATE.STATES.LEFT && this.parsedLocus.self && (this.parsedLocus.self.state === _constants.MEETING_STATE.STATES.DECLINED || this.parsedLocus.self.state === _constants.MEETING_STATE.STATES.NOTIFIED || this.parsedLocus.self.state === _constants.MEETING_STATE.STATES.JOINED)) {
441
- _metrics.default.postEvent({
442
- event: _config.eventType.REMOTE_ENDED,
443
- meetingId: this.meetingId
458
+ // @ts-ignore
459
+ this.webex.internal.newMetrics.submitClientEvent({
460
+ name: 'client.call.remote-ended',
461
+ options: {
462
+ meetingId: this.meetingId
463
+ }
444
464
  });
445
465
  this.emitScoped({
446
466
  file: 'locus-info',
@@ -451,9 +471,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
451
471
  });
452
472
  } else if (this.parsedLocus.self && this.parsedLocus.self.state === _constants.MEETING_STATE.STATES.LEFT && (partner.state === _constants.MEETING_STATE.STATES.LEFT || partner.state === _constants.MEETING_STATE.STATES.DECLINED || partner.state === _constants.MEETING_STATE.STATES.NOTIFIED || partner.state === _constants.MEETING_STATE.STATES.IDLE) // Happens when user just joins and adds no Media
453
473
  ) {
454
- _metrics.default.postEvent({
455
- event: _config.eventType.REMOTE_ENDED,
456
- meetingId: this.meetingId
474
+ // @ts-ignore
475
+ this.webex.internal.newMetrics.submitClientEvent({
476
+ name: 'client.call.remote-ended',
477
+ options: {
478
+ meetingId: this.meetingId
479
+ }
457
480
  });
458
481
  this.emitScoped({
459
482
  file: 'locus-info',
@@ -468,9 +491,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
468
491
  // @ts-ignore
469
492
  this.fullState.state === _constants.LOCUS.STATE.TERMINATING)) {
470
493
  _loggerProxy.default.logger.warn('Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating');
471
- _metrics.default.postEvent({
472
- event: _config.eventType.REMOTE_ENDED,
473
- meetingId: this.meetingId
494
+
495
+ // @ts-ignore
496
+ this.webex.internal.newMetrics.submitClientEvent({
497
+ name: 'client.call.remote-ended',
498
+ options: {
499
+ meetingId: this.meetingId
500
+ }
474
501
  });
475
502
  this.emitScoped({
476
503
  file: 'locus-info',
@@ -481,9 +508,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
481
508
  });
482
509
  } else if (this.fullState && this.fullState.removed) {
483
510
  // user has been dropped from a meeting
484
- _metrics.default.postEvent({
485
- event: _config.eventType.REMOTE_ENDED,
486
- meetingId: this.meetingId
511
+
512
+ // @ts-ignore
513
+ this.webex.internal.newMetrics.submitClientEvent({
514
+ name: 'client.call.remote-ended',
515
+ options: {
516
+ meetingId: this.meetingId
517
+ }
487
518
  });
488
519
  this.emitScoped({
489
520
  file: 'locus-info',
@@ -606,15 +637,15 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
606
637
  }
607
638
 
608
639
  /**
609
- *
640
+ * update meeting's members
610
641
  * @param {Object} participants new participants object
611
- * @param {boolen} deltaParticpantFlag delta event
642
+ * @param {Boolean} isReplace is replace the whole members
612
643
  * @returns {Array} updatedParticipants
613
644
  * @memberof LocusInfo
614
645
  */
615
646
  }, {
616
647
  key: "updateParticipants",
617
- value: function updateParticipants(participants) {
648
+ value: function updateParticipants(participants, isReplace) {
618
649
  var _this$parsedLocus$con;
619
650
  this.emitScoped({
620
651
  file: 'locus-info',
@@ -624,18 +655,20 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
624
655
  recordingId: this.parsedLocus.controls && ((_this$parsedLocus$con = this.parsedLocus.controls.record) === null || _this$parsedLocus$con === void 0 ? void 0 : _this$parsedLocus$con.modifiedBy),
625
656
  selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,
626
657
  selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,
627
- hostId: this.parsedLocus.host && this.parsedLocus.host.hostId
658
+ hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,
659
+ isReplace: isReplace
628
660
  });
629
661
  }
630
662
 
631
663
  /**
632
664
  * @param {Object} controls
665
+ * @param {Object} self
633
666
  * @returns {undefined}
634
667
  * @memberof LocusInfo
635
668
  */
636
669
  }, {
637
670
  key: "updateControls",
638
- value: function updateControls(controls) {
671
+ value: function updateControls(controls, self) {
639
672
  if (controls && !(0, _isEqual2.default)(this.controls, controls)) {
640
673
  this.parsedLocus.controls = _controlsUtils.default.parse(controls);
641
674
  var _ControlsUtils$getCon = _controlsUtils.default.getControls(this.controls, controls),
@@ -646,7 +679,73 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
646
679
  hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
647
680
  hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
648
681
  hasBreakoutChanged = _ControlsUtils$getCon2.hasBreakoutChanged,
682
+ hasVideoEnabledChanged = _ControlsUtils$getCon2.hasVideoEnabledChanged,
683
+ hasMuteOnEntryChanged = _ControlsUtils$getCon2.hasMuteOnEntryChanged,
684
+ hasShareControlChanged = _ControlsUtils$getCon2.hasShareControlChanged,
685
+ hasDisallowUnmuteChanged = _ControlsUtils$getCon2.hasDisallowUnmuteChanged,
686
+ hasReactionsChanged = _ControlsUtils$getCon2.hasReactionsChanged,
687
+ hasReactionDisplayNamesChanged = _ControlsUtils$getCon2.hasReactionDisplayNamesChanged,
688
+ hasViewTheParticipantListChanged = _ControlsUtils$getCon2.hasViewTheParticipantListChanged,
689
+ hasRaiseHandChanged = _ControlsUtils$getCon2.hasRaiseHandChanged,
690
+ hasVideoChanged = _ControlsUtils$getCon2.hasVideoChanged,
691
+ hasInterpretationChanged = _ControlsUtils$getCon2.hasInterpretationChanged,
649
692
  current = _ControlsUtils$getCon.current;
693
+ if (hasMuteOnEntryChanged) {
694
+ this.emitScoped({
695
+ file: 'locus-info',
696
+ function: 'updateControls'
697
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_MUTE_ON_ENTRY_CHANGED, {
698
+ state: current.muteOnEntry
699
+ });
700
+ }
701
+ if (hasShareControlChanged) {
702
+ this.emitScoped({
703
+ file: 'locus-info',
704
+ function: 'updateControls'
705
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_SHARE_CONTROL_CHANGED, {
706
+ state: current.shareControl
707
+ });
708
+ }
709
+ if (hasDisallowUnmuteChanged) {
710
+ this.emitScoped({
711
+ file: 'locus-info',
712
+ function: 'updateControls'
713
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_DISALLOW_UNMUTE_CHANGED, {
714
+ state: current.disallowUnmute
715
+ });
716
+ }
717
+ if (hasReactionsChanged || hasReactionDisplayNamesChanged) {
718
+ this.emitScoped({
719
+ file: 'locus-info',
720
+ function: 'updateControls'
721
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_REACTIONS_CHANGED, {
722
+ state: current.reactions
723
+ });
724
+ }
725
+ if (hasViewTheParticipantListChanged) {
726
+ this.emitScoped({
727
+ file: 'locus-info',
728
+ function: 'updateControls'
729
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED, {
730
+ state: current.viewTheParticipantList
731
+ });
732
+ }
733
+ if (hasRaiseHandChanged) {
734
+ this.emitScoped({
735
+ file: 'locus-info',
736
+ function: 'updateControls'
737
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_RAISE_HAND_CHANGED, {
738
+ state: current.raiseHand
739
+ });
740
+ }
741
+ if (hasVideoChanged) {
742
+ this.emitScoped({
743
+ file: 'locus-info',
744
+ function: 'updateControls'
745
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_VIDEO_CHANGED, {
746
+ state: current.video
747
+ });
748
+ }
650
749
  if (hasRecordingChanged || hasRecordingPausedChanged) {
651
750
  var state = null;
652
751
  if (hasRecordingPausedChanged) {
@@ -691,6 +790,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
691
790
  }
692
791
  if (hasBreakoutChanged) {
693
792
  var breakout = current.breakout;
793
+ breakout.breakoutMoveId = _selfUtils.default.getReplacedBreakoutMoveId(self, this.webex.internal.device.url);
694
794
  this.emitScoped({
695
795
  file: 'locus-info',
696
796
  function: 'updateControls'
@@ -698,16 +798,41 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
698
798
  breakout: breakout
699
799
  });
700
800
  }
801
+ if (hasInterpretationChanged) {
802
+ var interpretation = current.interpretation;
803
+ this.emitScoped({
804
+ file: 'locus-info',
805
+ function: 'updateControls'
806
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_INTERPRETATION_UPDATED, {
807
+ interpretation: interpretation
808
+ });
809
+ }
701
810
  if (hasEntryExitToneChanged) {
702
811
  var entryExitTone = current.entryExitTone;
812
+ this.updateMeeting({
813
+ entryExitTone: entryExitTone
814
+ });
703
815
  this.emitScoped({
704
816
  file: 'locus-info',
705
817
  function: 'updateControls'
706
818
  }, _constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, {
707
819
  entryExitTone: entryExitTone
708
820
  });
821
+ }
822
+
823
+ // videoEnabled is handled differently than other controls,
824
+ // to fit with audio mute status logic
825
+ if (hasVideoEnabledChanged) {
826
+ var videoEnabled = current.videoEnabled;
709
827
  this.updateMeeting({
710
- entryExitTone: entryExitTone
828
+ unmuteVideoAllowed: videoEnabled
829
+ });
830
+ this.emitScoped({
831
+ file: 'locus-info',
832
+ function: 'updateControls'
833
+ }, _constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, {
834
+ // muted: not part of locus.controls
835
+ unmuteAllowed: videoEnabled
711
836
  });
712
837
  }
713
838
  this.controls = controls;
@@ -840,9 +965,9 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
840
965
  }, {
841
966
  key: "updateMeetingInfo",
842
967
  value: function updateMeetingInfo(info, self) {
843
- if (info && !(0, _isEqual2.default)(this.info, info)) {
844
- var _this$parsedLocus$sel;
845
- var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
968
+ var _this$parsedLocus$sel;
969
+ var roles = self ? _selfUtils.default.getRoles(self) : ((_this$parsedLocus$sel = this.parsedLocus.self) === null || _this$parsedLocus$sel === void 0 ? void 0 : _this$parsedLocus$sel.roles) || [];
970
+ if (info && !(0, _isEqual2.default)(this.info, info) || roles.length && !(0, _isEqual2.default)(this.roles, roles) && info) {
846
971
  var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
847
972
  var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
848
973
  this.emitScoped({
@@ -869,6 +994,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
869
994
  // Parses the info and adds necessary values
870
995
  this.updateMeeting(parsedInfo.current);
871
996
  }
997
+ this.roles = roles;
872
998
  }
873
999
 
874
1000
  /**
@@ -907,6 +1033,8 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
907
1033
  if (mediaShares && !(0, _isEqual2.default)(this.mediaShares, mediaShares)) {
908
1034
  var parsedMediaShares = _mediaSharesUtils.default.getMediaShares(this.mediaShares, mediaShares);
909
1035
  this.updateMeeting(parsedMediaShares.current);
1036
+ this.parsedLocus.mediaShares = parsedMediaShares.current;
1037
+ this.mediaShares = mediaShares;
910
1038
  this.emitScoped({
911
1039
  file: 'locus-info',
912
1040
  function: 'updateMediaShares'
@@ -914,8 +1042,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
914
1042
  current: parsedMediaShares.current,
915
1043
  previous: parsedMediaShares.previous
916
1044
  });
917
- this.parsedLocus.mediaShares = parsedMediaShares.current;
918
- this.mediaShares = mediaShares;
919
1045
  }
920
1046
  }
921
1047
 
@@ -994,6 +1120,15 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
994
1120
  breakoutSessions: parsedSelves.current.breakoutSessions
995
1121
  });
996
1122
  }
1123
+ if (parsedSelves.updates.interpretationChanged) {
1124
+ this.emitScoped({
1125
+ file: 'locus-info',
1126
+ function: 'updateSelf'
1127
+ }, _constants.LOCUSINFO.EVENTS.SELF_MEETING_INTERPRETATION_CHANGED, {
1128
+ interpretation: parsedSelves.current.interpretation,
1129
+ selfParticipantId: parsedSelves.current.selfId
1130
+ });
1131
+ }
997
1132
  if (parsedSelves.updates.isMediaInactiveOrReleased) {
998
1133
  this.emitScoped({
999
1134
  file: 'locus-info',
@@ -1008,6 +1143,26 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1008
1143
  function: 'updateSelf'
1009
1144
  }, _constants.LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED, self);
1010
1145
  }
1146
+ if (parsedSelves.updates.isRolesChanged) {
1147
+ var _parsedSelves$previou, _parsedSelves$current;
1148
+ this.emitScoped({
1149
+ file: 'locus-info',
1150
+ function: 'updateSelf'
1151
+ }, _constants.LOCUSINFO.EVENTS.SELF_ROLES_CHANGED, {
1152
+ oldRoles: (_parsedSelves$previou = parsedSelves.previous) === null || _parsedSelves$previou === void 0 ? void 0 : _parsedSelves$previou.roles,
1153
+ newRoles: (_parsedSelves$current = parsedSelves.current) === null || _parsedSelves$current === void 0 ? void 0 : _parsedSelves$current.roles
1154
+ });
1155
+ }
1156
+ if (parsedSelves.updates.isVideoMutedByOthersChanged) {
1157
+ this.emitScoped({
1158
+ file: 'locus-info',
1159
+ function: 'updateSelf'
1160
+ }, _constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, {
1161
+ muted: parsedSelves.current.remoteVideoMuted
1162
+ // unmuteAllowed: not part of .self
1163
+ });
1164
+ }
1165
+
1011
1166
  if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {
1012
1167
  this.emitScoped({
1013
1168
  file: 'locus-info',
@@ -1053,14 +1208,14 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1053
1208
  _constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, _selfUtils.default.getMediaStatus(self.mediaSessions));
1054
1209
  }
1055
1210
  if (parsedSelves.updates.audioStateChange || parsedSelves.updates.videoStateChange || parsedSelves.updates.shareStateChange) {
1056
- var _parsedSelves$current, _parsedSelves$current2, _parsedSelves$current3;
1211
+ var _parsedSelves$current2, _parsedSelves$current3, _parsedSelves$current4;
1057
1212
  this.emitScoped({
1058
1213
  file: 'locus-info',
1059
1214
  function: 'updateSelf'
1060
1215
  }, _constants.LOCUSINFO.EVENTS.MEDIA_STATUS_CHANGE, {
1061
- audioStatus: (_parsedSelves$current = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current === void 0 ? void 0 : _parsedSelves$current.audio,
1062
- videoStatus: (_parsedSelves$current2 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current2 === void 0 ? void 0 : _parsedSelves$current2.video,
1063
- shareStatus: (_parsedSelves$current3 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current3 === void 0 ? void 0 : _parsedSelves$current3.share
1216
+ audioStatus: (_parsedSelves$current2 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current2 === void 0 ? void 0 : _parsedSelves$current2.audio,
1217
+ videoStatus: (_parsedSelves$current3 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current3 === void 0 ? void 0 : _parsedSelves$current3.video,
1218
+ shareStatus: (_parsedSelves$current4 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current4 === void 0 ? void 0 : _parsedSelves$current4.share
1064
1219
  });
1065
1220
  }
1066
1221
  if (parsedSelves.updates.isUserObserving) {
@@ -1185,6 +1340,112 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1185
1340
  this.identities = identities;
1186
1341
  }
1187
1342
  }
1343
+
1344
+ /**
1345
+ * check the locus is main session's one or not, if is main session's, update main session cache
1346
+ * @param {Object} locus
1347
+ * @returns {undefined}
1348
+ * @memberof LocusInfo
1349
+ */
1350
+ }, {
1351
+ key: "updateLocusCache",
1352
+ value: function updateLocusCache(locus) {
1353
+ var isMainSessionDTO = _controlsUtils.default.isMainSessionDTO(locus);
1354
+ if (isMainSessionDTO) {
1355
+ this.updateMainSessionLocusCache(locus);
1356
+ }
1357
+ }
1358
+
1359
+ /**
1360
+ * if return from breakout to main session, need to use cached main session DTO since locus won't send the full locus (participants)
1361
+ * if join breakout from main session, need to query main locus url (if response with 403 means no privilege, need to clear the cache)
1362
+ * @param {Object} newLocus
1363
+ * @returns {Object}
1364
+ * @memberof LocusInfo
1365
+ */
1366
+ }, {
1367
+ key: "getTheLocusToUpdate",
1368
+ value: function getTheLocusToUpdate(newLocus) {
1369
+ var switchStatus = _controlsUtils.default.getSessionSwitchStatus(this.controls, newLocus === null || newLocus === void 0 ? void 0 : newLocus.controls);
1370
+ if (switchStatus.isReturnToMain && this.mainSessionLocusCache) {
1371
+ return (0, _cloneDeep2.default)(this.mainSessionLocusCache);
1372
+ }
1373
+ if (switchStatus.isJoinToBreakout) {
1374
+ this.emitScoped({
1375
+ file: 'locus-info',
1376
+ function: 'updateControls'
1377
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_JOIN_BREAKOUT_FROM_MAIN, {
1378
+ mainLocusUrl: this.url
1379
+ });
1380
+ }
1381
+ return newLocus;
1382
+ }
1383
+
1384
+ /**
1385
+ * merge participants by participant id
1386
+ * @param {Array} participants
1387
+ * @param {Array} sourceParticipants
1388
+ * @returns {Array} merged participants
1389
+ * @memberof LocusInfo
1390
+ */
1391
+ // eslint-disable-next-line class-methods-use-this
1392
+ }, {
1393
+ key: "mergeParticipants",
1394
+ value: function mergeParticipants(participants, sourceParticipants) {
1395
+ if (!sourceParticipants || !sourceParticipants.length) return participants;
1396
+ if (!participants || !participants.length) {
1397
+ return sourceParticipants;
1398
+ }
1399
+ sourceParticipants.forEach(function (participant) {
1400
+ var existIndex = participants.findIndex(function (p) {
1401
+ return p.id === participant.id;
1402
+ });
1403
+ if (existIndex > -1) {
1404
+ participants.splice(existIndex, 1, participant);
1405
+ } else {
1406
+ participants.push(participant);
1407
+ }
1408
+ });
1409
+ return participants;
1410
+ }
1411
+
1412
+ /**
1413
+ * need cache main sessions' participants since locus will not send the full list when cohost/host leave breakout
1414
+ * @param {Object} mainLocus
1415
+ * @returns {undefined}
1416
+ * @memberof LocusInfo
1417
+ */
1418
+ }, {
1419
+ key: "updateMainSessionLocusCache",
1420
+ value: function updateMainSessionLocusCache(mainLocus) {
1421
+ var _this5 = this;
1422
+ if (!mainLocus) {
1423
+ return;
1424
+ }
1425
+ var locusClone = (0, _cloneDeep2.default)(mainLocus);
1426
+ if (this.mainSessionLocusCache) {
1427
+ // shallow merge and do special merge for participants
1428
+ (0, _assignWith2.default)(this.mainSessionLocusCache, locusClone, function (objValue, srcValue, key) {
1429
+ if (key === 'participants') {
1430
+ return _this5.mergeParticipants(objValue, srcValue);
1431
+ }
1432
+ return srcValue || objValue;
1433
+ });
1434
+ } else {
1435
+ this.mainSessionLocusCache = locusClone;
1436
+ }
1437
+ }
1438
+
1439
+ /**
1440
+ * clear main session cache
1441
+ * @returns {undefined}
1442
+ * @memberof LocusInfo
1443
+ */
1444
+ }, {
1445
+ key: "clearMainSessionLocusCache",
1446
+ value: function clearMainSessionLocusCache() {
1447
+ this.mainSessionLocusCache = null;
1448
+ }
1188
1449
  }]);
1189
1450
  return LocusInfo;
1190
1451
  }(_eventsScope.default);