@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,61 +1,36 @@
1
1
  "use strict";
2
2
 
3
3
  var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
-
5
4
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
6
-
7
5
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
8
-
9
6
  _Object$defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
-
13
9
  exports.default = void 0;
14
-
15
10
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
16
-
17
11
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
18
-
19
12
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
20
-
13
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
21
14
  var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
22
-
23
15
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
24
-
25
16
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
26
-
17
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
27
18
  var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
28
-
29
19
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
30
-
31
20
  var _eventsScope = _interopRequireDefault(require("../common/events/events-scope"));
32
-
33
21
  var _constants = require("../constants");
34
-
35
22
  var _metrics = _interopRequireDefault(require("../metrics"));
36
-
37
23
  var _config = require("../metrics/config");
38
-
39
- var _infoUtils = _interopRequireDefault(require("../locus-info/infoUtils"));
40
-
41
- var _fullState = _interopRequireDefault(require("../locus-info/fullState"));
42
-
43
- var _selfUtils = _interopRequireDefault(require("../locus-info/selfUtils"));
44
-
45
- var _hostUtils = _interopRequireDefault(require("../locus-info/hostUtils"));
46
-
47
- var _controlsUtils = _interopRequireDefault(require("../locus-info/controlsUtils"));
48
-
49
- var _embeddedAppsUtils = _interopRequireDefault(require("../locus-info/embeddedAppsUtils"));
50
-
51
- var _mediaSharesUtils = _interopRequireDefault(require("../locus-info/mediaSharesUtils"));
52
-
53
- var _parser = _interopRequireDefault(require("../locus-info/parser"));
54
-
24
+ var _infoUtils = _interopRequireDefault(require("./infoUtils"));
25
+ var _fullState = _interopRequireDefault(require("./fullState"));
26
+ var _selfUtils = _interopRequireDefault(require("./selfUtils"));
27
+ var _hostUtils = _interopRequireDefault(require("./hostUtils"));
28
+ var _controlsUtils = _interopRequireDefault(require("./controlsUtils"));
29
+ var _embeddedAppsUtils = _interopRequireDefault(require("./embeddedAppsUtils"));
30
+ var _mediaSharesUtils = _interopRequireDefault(require("./mediaSharesUtils"));
31
+ var _parser = _interopRequireDefault(require("./parser"));
55
32
  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); }; }
56
-
57
33
  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; } }
58
-
59
34
  /**
60
35
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
61
36
  * @export
@@ -64,14 +39,46 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_R
64
39
  */
65
40
  var LocusInfo = /*#__PURE__*/function (_EventsScope) {
66
41
  (0, _inherits2.default)(LocusInfo, _EventsScope);
67
-
68
42
  var _super = _createSuper(LocusInfo);
69
-
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
+ */
70
50
  function LocusInfo(updateMeeting, webex, meetingId) {
71
51
  var _this;
72
-
73
52
  (0, _classCallCheck2.default)(this, LocusInfo);
74
53
  _this = _super.call(this);
54
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "compareAndUpdateFlags", void 0);
55
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "emitChange", void 0);
56
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "locusParser", void 0);
57
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "meetingId", void 0);
58
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "parsedLocus", void 0);
59
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "updateMeeting", void 0);
60
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "webex", void 0);
61
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "aclUrl", void 0);
62
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "baseSequence", void 0);
63
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "created", void 0);
64
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "deltaParticipants", void 0);
65
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "identities", void 0);
66
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "membership", void 0);
67
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participants", void 0);
68
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "participantsUrl", void 0);
69
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replaces", void 0);
70
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "scheduledMeeting", void 0);
71
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "sequence", void 0);
72
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "controls", void 0);
73
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "conversationUrl", void 0);
74
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "embeddedApps", void 0);
75
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "fullState", void 0);
76
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "host", void 0);
77
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "info", void 0);
78
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaShares", void 0);
79
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "replace", void 0);
80
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "url", void 0);
81
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "services", void 0);
75
82
  _this.parsedLocus = {
76
83
  states: []
77
84
  };
@@ -83,6 +90,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
83
90
  _this.locusParser = new _parser.default();
84
91
  return _this;
85
92
  }
93
+
86
94
  /**
87
95
  * Apply locus delta data to meeting
88
96
  * @param {string} action Locus delta action
@@ -90,45 +98,38 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
90
98
  * @param {Meeting} meeting
91
99
  * @returns {undefined}
92
100
  */
93
-
94
-
95
101
  (0, _createClass2.default)(LocusInfo, [{
96
102
  key: "applyLocusDeltaData",
97
103
  value: function applyLocusDeltaData(action, locus, meeting) {
98
104
  var _this2 = this;
99
-
100
105
  var _LocusDeltaParser$loc = _parser.default.loci,
101
- DESYNC = _LocusDeltaParser$loc.DESYNC,
102
- USE_CURRENT = _LocusDeltaParser$loc.USE_CURRENT,
103
- USE_INCOMING = _LocusDeltaParser$loc.USE_INCOMING;
104
-
106
+ DESYNC = _LocusDeltaParser$loc.DESYNC,
107
+ USE_CURRENT = _LocusDeltaParser$loc.USE_CURRENT,
108
+ USE_INCOMING = _LocusDeltaParser$loc.USE_INCOMING;
105
109
  switch (action) {
106
110
  case USE_INCOMING:
107
111
  meeting.locusInfo.onDeltaLocus(locus);
108
112
  break;
109
-
110
113
  case USE_CURRENT:
111
114
  meeting.locusDesync = false;
112
115
  meeting.needToGetFullLocus = false;
113
116
  break;
114
-
115
117
  case DESYNC:
116
118
  meeting.meetingRequest.getFullLocus({
117
119
  desync: true,
118
120
  locusUrl: meeting.locusUrl
119
121
  }).then(function (res) {
120
- meeting.locusInfo.onFullLocus(res.body); // Notify parser to resume processing delta events
122
+ meeting.locusInfo.onFullLocus(res.body);
123
+ // Notify parser to resume processing delta events
121
124
  // now that we have full locus from DESYNC.
122
-
123
125
  _this2.locusParser.resume();
124
126
  });
125
127
  break;
126
-
127
128
  default:
128
129
  _loggerProxy.default.logger.info("Locus-info:index#applyLocusDeltaData --> Unknown locus delta action: ".concat(action));
129
-
130
130
  }
131
131
  }
132
+
132
133
  /**
133
134
  * Adds locus delta to parser's queue
134
135
  * and registers a function handler
@@ -137,12 +138,10 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
137
138
  * @param {Meeting} meeting
138
139
  * @returns {undefined}
139
140
  */
140
-
141
141
  }, {
142
142
  key: "handleLocusDelta",
143
143
  value: function handleLocusDelta(locus, meeting) {
144
144
  var _this3 = this;
145
-
146
145
  // register a function to process delta actions
147
146
  if (!this.locusParser.onDeltaAction) {
148
147
  // delta action, along with associated loci
@@ -150,20 +149,20 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
150
149
  this.locusParser.onDeltaAction = function (action, parsedLoci) {
151
150
  _this3.applyLocusDeltaData(action, parsedLoci, meeting);
152
151
  };
153
- } // queue delta event with parser
154
-
155
-
152
+ }
153
+ // queue delta event with parser
156
154
  this.locusParser.onDeltaEvent(locus);
157
155
  }
156
+
158
157
  /**
159
158
  * @param {Locus} locus
160
159
  * @returns {undefined}
161
160
  * @memberof LocusInfo
162
161
  */
163
-
164
162
  }, {
165
163
  key: "init",
166
164
  value: function init() {
165
+ var _locus$links;
167
166
  var locus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
168
167
  this.created = locus.created || null;
169
168
  this.scheduledMeeting = locus.meeting || null;
@@ -175,6 +174,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
175
174
  this.membership = locus.membership || null;
176
175
  this.identities = locus.identities || null;
177
176
  this.participants = locus.participants || null;
177
+
178
178
  /**
179
179
  * Stores the delta values for a changed participant.
180
180
  *
@@ -192,50 +192,51 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
192
192
  * @private
193
193
  * @member LocusInfo
194
194
  */
195
+ this.deltaParticipants = [];
195
196
 
196
- this.deltaParticipants = []; // above section only updates the locusInfo object
197
+ // above section only updates the locusInfo object
197
198
  // The below section makes sure it updates the locusInfo as well as updates the meeting object
198
-
199
- this.updateParticipants(locus.participants); // For 1:1 space meeting the conversation Url does not exist in locus.conversation
200
-
199
+ this.updateParticipants(locus.participants);
200
+ // For 1:1 space meeting the conversation Url does not exist in locus.conversation
201
201
  this.updateConversationUrl(locus.conversationUrl, locus.info);
202
202
  this.updateControls(locus.controls);
203
203
  this.updateLocusUrl(locus.url);
204
204
  this.updateFullState(locus.fullState);
205
205
  this.updateMeetingInfo(locus.info);
206
- this.updateEmbeddedApps(locus.embeddedApps); // self and participants generate sipUrl for 1:1 meeting
207
-
206
+ this.updateEmbeddedApps(locus.embeddedApps);
207
+ // self and participants generate sipUrl for 1:1 meeting
208
208
  this.updateSelf(locus.self, locus.participants);
209
209
  this.updateHostInfo(locus.host);
210
210
  this.updateMediaShares(locus.mediaShares);
211
+ this.updateServices((_locus$links = locus.links) === null || _locus$links === void 0 ? void 0 : _locus$links.services);
211
212
  }
213
+
212
214
  /**
213
215
  * @param {Object} locus
214
216
  * @returns {undefined}
215
217
  * @memberof LocusInfo
216
218
  */
217
-
218
219
  }, {
219
220
  key: "initialSetup",
220
221
  value: function initialSetup(locus) {
221
- this.onFullLocus(locus); // Change it to true after it receives it first locus object
222
+ this.onFullLocus(locus);
222
223
 
224
+ // Change it to true after it receives it first locus object
223
225
  this.emitChange = true;
224
226
  }
227
+
225
228
  /**
226
229
  * @param {Meeting} meeting
227
230
  * @param {Object} data
228
231
  * @returns {undefined}
229
232
  * @memberof LocusInfo
230
233
  */
231
-
232
234
  }, {
233
235
  key: "parse",
234
236
  value: function parse(meeting, data) {
237
+ // eslint-disable-next-line @typescript-eslint/no-shadow
235
238
  var eventType = data.eventType;
236
-
237
239
  _loggerProxy.default.logger.info("Locus-info:index#parse --> received locus data: ".concat(eventType));
238
-
239
240
  switch (eventType) {
240
241
  case _constants.LOCUSEVENT.PARTICIPANT_JOIN:
241
242
  case _constants.LOCUSEVENT.PARTICIPANT_LEFT:
@@ -253,17 +254,16 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
253
254
  case _constants.LOCUSEVENT.FLOOR_RELEASED:
254
255
  this.onFullLocus(data.locus, eventType);
255
256
  break;
256
-
257
257
  case _constants.LOCUSEVENT.DIFFERENCE:
258
258
  this.handleLocusDelta(data.locus, meeting);
259
259
  break;
260
-
261
260
  default:
262
261
  // Why will there be a event with no eventType ????
263
262
  // we may not need this, we can get full locus
264
263
  this.handleLocusDelta(data.locus, meeting);
265
264
  }
266
265
  }
266
+
267
267
  /**
268
268
  * @param {String} scope
269
269
  * @param {String} eventName
@@ -271,45 +271,46 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
271
271
  * @returns {undefined}
272
272
  * @memberof LocusInfo
273
273
  */
274
-
275
274
  }, {
276
275
  key: "emitScoped",
277
276
  value: function emitScoped(scope, eventName, args) {
278
277
  return this.emit(scope, eventName, args);
279
278
  }
279
+
280
280
  /**
281
281
  * updates the locus with full locus object
282
282
  * @param {object} locus locus object
283
- * @param {sting} eventType particulat locus event
283
+ * @param {string} eventType particulat locus event
284
284
  * @returns {object} null
285
285
  * @memberof LocusInfo
286
286
  */
287
-
287
+ // eslint-disable-next-line @typescript-eslint/no-shadow
288
288
  }, {
289
289
  key: "onFullLocus",
290
290
  value: function onFullLocus(locus, eventType) {
291
291
  if (!locus) {
292
292
  _loggerProxy.default.logger.error('Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.');
293
293
  }
294
-
295
294
  this.updateParticipantDeltas(locus.participants);
296
295
  this.scheduledMeeting = locus.meeting || null;
297
296
  this.participants = locus.participants;
297
+ var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
298
298
  this.updateLocusInfo(locus);
299
- this.updateParticipants(locus.participants);
299
+ this.updateParticipants(locus.participants, isReplaceMembers);
300
300
  this.isMeetingActive();
301
301
  this.handleOneOnOneEvent(eventType);
302
- this.updateEmbeddedApps(locus.embeddedApps); // set current (working copy) for parser
303
-
302
+ this.updateEmbeddedApps(locus.embeddedApps);
303
+ // set current (working copy) for parser
304
304
  this.locusParser.workingCopy = locus;
305
- } // used for ringing stops on one on one
305
+ }
306
306
 
307
+ // used for ringing stops on one on one
307
308
  /**
308
309
  * @param {String} eventType
309
310
  * @returns {undefined}
310
311
  * @memberof LocusInfo
311
312
  */
312
-
313
+ // eslint-disable-next-line @typescript-eslint/no-shadow
313
314
  }, {
314
315
  key: "handleOneOnOneEvent",
315
316
  value: function handleOneOnOneEvent(eventType) {
@@ -324,9 +325,8 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
324
325
  remoteDeclined: true,
325
326
  remoteAnswered: false
326
327
  });
327
- } // for 1:1 bob calls alice and alice answers, notify the meeting state
328
-
329
-
328
+ }
329
+ // for 1:1 bob calls alice and alice answers, notify the meeting state
330
330
  if (eventType === _constants.LOCUSEVENT.PARTICIPANT_JOIN) {
331
331
  // trigger the event for stop ringing
332
332
  this.emitScoped({
@@ -339,28 +339,36 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
339
339
  }
340
340
  }
341
341
  }
342
+
342
343
  /**
343
344
  * @param {Object} locus
344
345
  * @returns {undefined}
345
346
  * @memberof LocusInfo
346
347
  */
347
-
348
348
  }, {
349
349
  key: "onDeltaLocus",
350
350
  value: function onDeltaLocus(locus) {
351
+ var isReplaceMembers = _controlsUtils.default.isNeedReplaceMembers(this.controls, locus.controls);
351
352
  this.updateLocusInfo(locus);
352
- this.updateParticipants(locus.participants);
353
+ this.updateParticipants(locus.participants, isReplaceMembers);
353
354
  this.isMeetingActive();
354
355
  }
356
+
355
357
  /**
356
358
  * @param {Object} locus
357
359
  * @returns {undefined}
358
360
  * @memberof LocusInfo
359
361
  */
360
-
361
362
  }, {
362
363
  key: "updateLocusInfo",
363
364
  value: function updateLocusInfo(locus) {
365
+ var _locus$self, _locus$self2, _locus$links2;
366
+ if (((_locus$self = locus.self) === null || _locus$self === void 0 ? void 0 : _locus$self.reason) === 'MOVED' && ((_locus$self2 = locus.self) === null || _locus$self2 === void 0 ? void 0 : _locus$self2.state) === 'LEFT') {
367
+ // When moved to a breakout session locus sends a message for the previous locus
368
+ // indicating that we have been moved. It isn't helpful to continue parsing this
369
+ // as it gets interpreted as if we have left the call
370
+ return;
371
+ }
364
372
  this.updateControls(locus.controls);
365
373
  this.updateConversationUrl(locus.conversationUrl, locus.info);
366
374
  this.updateCreated(locus.created);
@@ -378,53 +386,59 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
378
386
  this.updateMemberShip(locus.membership);
379
387
  this.updateIdentifiers(locus.identities);
380
388
  this.updateEmbeddedApps(locus.embeddedApps);
381
- this.compareAndUpdate(); // update which required to compare different objects from locus
389
+ this.updateServices((_locus$links2 = locus.links) === null || _locus$links2 === void 0 ? void 0 : _locus$links2.services);
390
+ this.compareAndUpdate();
391
+ // update which required to compare different objects from locus
382
392
  }
393
+
383
394
  /**
384
395
  * @param {Array} participants
385
396
  * @param {Object} self
386
397
  * @returns {Array}
387
398
  * @memberof LocusInfo
388
399
  */
389
-
390
400
  }, {
391
401
  key: "getLocusPartner",
392
402
  value: function getLocusPartner(participants, self) {
393
403
  if (!participants || participants.length === 0) {
394
404
  return null;
395
405
  }
396
-
397
406
  return participants.find(function (participant) {
398
407
  return self && participant.identity !== self.identity && (participants.length <= 2 || participant.type === _constants._USER_ && !participant.removed);
399
- }) || this.partner;
400
- } // TODO: all the leave states need to be checked
408
+ }
409
+ // @ts-ignore
410
+ ) || this.partner;
411
+ }
401
412
 
413
+ // TODO: all the leave states need to be checked
402
414
  /**
403
415
  * @returns {undefined}
404
416
  * @memberof LocusInfo
405
417
  */
406
-
407
418
  }, {
408
419
  key: "isMeetingActive",
409
420
  value: function isMeetingActive() {
410
421
  if (this.parsedLocus.fullState.type === _constants._CALL_ || this.parsedLocus.fullState.type === _constants._SIP_BRIDGE_) {
422
+ // @ts-ignore
411
423
  var partner = this.getLocusPartner(this.participants, this.self);
412
424
  this.updateMeeting({
413
425
  partner: partner
414
- }); // Check if guest user needs to be checked here
426
+ });
427
+
428
+ // Check if guest user needs to be checked here
429
+
415
430
  // 1) when bob declines call from bob, (bob='DECLINED')
416
431
  // 2) When alice rejects call to bob , (bob='NOTIFIED')
432
+
417
433
  // When we dont add MEDIA for condition 2. The state of bob='IDLE'
418
434
 
419
435
  if (this.fullState && this.fullState.state === _constants.LOCUS.STATE.INACTIVE) {
420
436
  // TODO: update the meeting state
421
437
  _loggerProxy.default.logger.warn('Locus-info:index#isMeetingActive --> Call Ended, locus state is inactive.');
422
-
423
438
  _metrics.default.postEvent({
424
439
  event: _config.eventType.REMOTE_ENDED,
425
440
  meetingId: this.meetingId
426
441
  });
427
-
428
442
  this.emitScoped({
429
443
  file: 'locus-info',
430
444
  function: 'isMeetingActive'
@@ -437,7 +451,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
437
451
  event: _config.eventType.REMOTE_ENDED,
438
452
  meetingId: this.meetingId
439
453
  });
440
-
441
454
  this.emitScoped({
442
455
  file: 'locus-info',
443
456
  function: 'isMeetingActive'
@@ -451,7 +464,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
451
464
  event: _config.eventType.REMOTE_ENDED,
452
465
  meetingId: this.meetingId
453
466
  });
454
-
455
467
  this.emitScoped({
456
468
  file: 'locus-info',
457
469
  function: 'isMeetingActive'
@@ -461,14 +473,14 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
461
473
  });
462
474
  }
463
475
  } else if (this.parsedLocus.fullState.type === _constants._MEETING_) {
464
- if (this.fullState && (this.fullState.state === _constants.LOCUS.STATE.INACTIVE || this.fullState.state === _constants.LOCUS.STATE.TERMINATING)) {
476
+ if (this.fullState && (this.fullState.state === _constants.LOCUS.STATE.INACTIVE ||
477
+ // @ts-ignore
478
+ this.fullState.state === _constants.LOCUS.STATE.TERMINATING)) {
465
479
  _loggerProxy.default.logger.warn('Locus-info:index#isMeetingActive --> Meeting is ending due to inactive or terminating');
466
-
467
480
  _metrics.default.postEvent({
468
481
  event: _config.eventType.REMOTE_ENDED,
469
482
  meetingId: this.meetingId
470
483
  });
471
-
472
484
  this.emitScoped({
473
485
  file: 'locus-info',
474
486
  function: 'isMeetingActive'
@@ -482,7 +494,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
482
494
  event: _config.eventType.REMOTE_ENDED,
483
495
  meetingId: this.meetingId
484
496
  });
485
-
486
497
  this.emitScoped({
487
498
  file: 'locus-info',
488
499
  function: 'isMeetingActive'
@@ -490,7 +501,8 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
490
501
  reason: _constants.MEETING_REMOVED_REASON.FULLSTATE_REMOVED,
491
502
  shouldLeave: false
492
503
  });
493
- } // If you are guest and you are removed from the meeting
504
+ }
505
+ // If you are guest and you are removed from the meeting
494
506
  // You wont get any further events
495
507
  else if (this.parsedLocus.self && this.parsedLocus.self.removed) {
496
508
  // Check if we need to send an event
@@ -506,13 +518,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
506
518
  _loggerProxy.default.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');
507
519
  }
508
520
  }
521
+
509
522
  /**
510
523
  * checks if the host permissions have changed while in the meeting
511
524
  * This would be the case if your role as host or moderator has been updated
512
525
  * @returns {undefined}
513
526
  * @memberof LocusInfo
514
527
  */
515
-
516
528
  }, {
517
529
  key: "compareAndUpdate",
518
530
  value: function compareAndUpdate() {
@@ -522,17 +534,16 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
522
534
  this.compareSelfAndHost();
523
535
  }
524
536
  }
537
+
525
538
  /**
526
539
  * compared the self object to check if the user has host permissions
527
540
  * @returns {undefined}
528
541
  * @memberof LocusInfo
529
542
  */
530
-
531
543
  }, {
532
544
  key: "compareSelfAndHost",
533
545
  value: function compareSelfAndHost() {
534
546
  var _this$parsedLocus$hos;
535
-
536
547
  // In some cases the host info is not present but the moderator values changes from null to false so it triggers an update
537
548
  if (this.parsedLocus.self.selfIdentity === ((_this$parsedLocus$hos = this.parsedLocus.host) === null || _this$parsedLocus$hos === void 0 ? void 0 : _this$parsedLocus$hos.hostId) && this.parsedLocus.self.moderator) {
538
549
  this.emitScoped({
@@ -550,6 +561,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
550
561
  });
551
562
  }
552
563
  }
564
+
553
565
  /**
554
566
  * Update the deltaParticipants property of this object based on a list of
555
567
  * provided participants.
@@ -557,22 +569,19 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
557
569
  * @param {Array} [participants] - The participants to update against.
558
570
  * @returns {void}
559
571
  */
560
-
561
572
  }, {
562
573
  key: "updateParticipantDeltas",
563
574
  value: function updateParticipantDeltas() {
564
575
  var _this4 = this;
565
-
566
576
  var participants = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
567
-
568
577
  // Used to find a participant within a participants collection.
569
578
  var findParticipant = function findParticipant(participant, collection) {
570
579
  return collection.find(function (item) {
571
580
  return item.person.id === participant.person.id;
572
581
  });
573
- }; // Generates an object that indicates which state properties have changed.
574
-
582
+ };
575
583
 
584
+ // Generates an object that indicates which state properties have changed.
576
585
  var generateDelta = function generateDelta() {
577
586
  var prevState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
578
587
  var newState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
@@ -581,8 +590,9 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
581
590
  audioStatus: prevState.audioStatus !== newState.audioStatus,
582
591
  videoSlidesStatus: prevState.videoSlidesStatus !== newState.videoSlidesStatus,
583
592
  videoStatus: prevState.videoStatus !== newState.videoStatus
584
- }; // Clean the object
593
+ };
585
594
 
595
+ // Clean the object
586
596
  (0, _keys.default)(deltas).forEach(function (key) {
587
597
  if (deltas[key] !== true) {
588
598
  delete deltas[key];
@@ -590,35 +600,31 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
590
600
  });
591
601
  return deltas;
592
602
  };
593
-
594
603
  this.deltaParticipants = participants.reduce(function (collection, participant) {
595
604
  var existingParticipant = findParticipant(participant, _this4.participants || []) || {};
596
605
  var delta = generateDelta(existingParticipant.status, participant.status);
597
606
  var changed = (0, _keys.default)(delta).length > 0;
598
-
599
607
  if (changed) {
600
608
  collection.push({
601
609
  person: participant.person,
602
610
  delta: delta
603
611
  });
604
612
  }
605
-
606
613
  return collection;
607
614
  }, []);
608
615
  }
616
+
609
617
  /**
610
- *
618
+ * update meeting's members
611
619
  * @param {Object} participants new participants object
612
- * @param {boolen} deltaParticpantFlag delta event
620
+ * @param {Boolean} isReplace is replace the whole members
613
621
  * @returns {Array} updatedParticipants
614
622
  * @memberof LocusInfo
615
623
  */
616
-
617
624
  }, {
618
625
  key: "updateParticipants",
619
- value: function updateParticipants(participants) {
626
+ value: function updateParticipants(participants, isReplace) {
620
627
  var _this$parsedLocus$con;
621
-
622
628
  this.emitScoped({
623
629
  file: 'locus-info',
624
630
  function: 'updateParticipants'
@@ -627,33 +633,33 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
627
633
  recordingId: this.parsedLocus.controls && ((_this$parsedLocus$con = this.parsedLocus.controls.record) === null || _this$parsedLocus$con === void 0 ? void 0 : _this$parsedLocus$con.modifiedBy),
628
634
  selfIdentity: this.parsedLocus.self && this.parsedLocus.self.selfIdentity,
629
635
  selfId: this.parsedLocus.self && this.parsedLocus.self.selfId,
630
- hostId: this.parsedLocus.host && this.parsedLocus.host.hostId
636
+ hostId: this.parsedLocus.host && this.parsedLocus.host.hostId,
637
+ isReplace: isReplace
631
638
  });
632
639
  }
640
+
633
641
  /**
634
642
  * @param {Object} controls
635
643
  * @returns {undefined}
636
644
  * @memberof LocusInfo
637
645
  */
638
-
639
646
  }, {
640
647
  key: "updateControls",
641
648
  value: function updateControls(controls) {
642
649
  if (controls && !(0, _isEqual2.default)(this.controls, controls)) {
643
650
  this.parsedLocus.controls = _controlsUtils.default.parse(controls);
644
-
645
651
  var _ControlsUtils$getCon = _controlsUtils.default.getControls(this.controls, controls),
646
- _ControlsUtils$getCon2 = _ControlsUtils$getCon.updates,
647
- hasRecordingChanged = _ControlsUtils$getCon2.hasRecordingChanged,
648
- hasRecordingPausedChanged = _ControlsUtils$getCon2.hasRecordingPausedChanged,
649
- hasMeetingContainerChanged = _ControlsUtils$getCon2.hasMeetingContainerChanged,
650
- hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
651
- hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
652
- current = _ControlsUtils$getCon.current;
653
-
652
+ _ControlsUtils$getCon2 = _ControlsUtils$getCon.updates,
653
+ hasRecordingChanged = _ControlsUtils$getCon2.hasRecordingChanged,
654
+ hasRecordingPausedChanged = _ControlsUtils$getCon2.hasRecordingPausedChanged,
655
+ hasMeetingContainerChanged = _ControlsUtils$getCon2.hasMeetingContainerChanged,
656
+ hasTranscribeChanged = _ControlsUtils$getCon2.hasTranscribeChanged,
657
+ hasEntryExitToneChanged = _ControlsUtils$getCon2.hasEntryExitToneChanged,
658
+ hasBreakoutChanged = _ControlsUtils$getCon2.hasBreakoutChanged,
659
+ hasVideoEnabledChanged = _ControlsUtils$getCon2.hasVideoEnabledChanged,
660
+ current = _ControlsUtils$getCon.current;
654
661
  if (hasRecordingChanged || hasRecordingPausedChanged) {
655
662
  var state = null;
656
-
657
663
  if (hasRecordingPausedChanged) {
658
664
  if (current.record.paused) {
659
665
  state = _constants.RECORDING_STATE.PAUSED;
@@ -664,7 +670,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
664
670
  } else if (hasRecordingChanged) {
665
671
  state = current.record.recording ? _constants.RECORDING_STATE.RECORDING : _constants.RECORDING_STATE.IDLE;
666
672
  }
667
-
668
673
  this.emitScoped({
669
674
  file: 'locus-info',
670
675
  function: 'updateControls'
@@ -674,7 +679,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
674
679
  lastModified: current.record.lastModified
675
680
  });
676
681
  }
677
-
678
682
  if (hasMeetingContainerChanged) {
679
683
  var meetingContainerUrl = current.meetingContainer.meetingContainerUrl;
680
684
  this.emitScoped({
@@ -684,11 +688,10 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
684
688
  meetingContainerUrl: meetingContainerUrl
685
689
  });
686
690
  }
687
-
688
691
  if (hasTranscribeChanged) {
689
692
  var _current$transcribe = current.transcribe,
690
- transcribing = _current$transcribe.transcribing,
691
- caption = _current$transcribe.caption;
693
+ transcribing = _current$transcribe.transcribing,
694
+ caption = _current$transcribe.caption;
692
695
  this.emitScoped({
693
696
  file: 'locus-info',
694
697
  function: 'updateControls'
@@ -697,30 +700,53 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
697
700
  caption: caption
698
701
  });
699
702
  }
700
-
703
+ if (hasBreakoutChanged) {
704
+ var breakout = current.breakout;
705
+ this.emitScoped({
706
+ file: 'locus-info',
707
+ function: 'updateControls'
708
+ }, _constants.LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED, {
709
+ breakout: breakout
710
+ });
711
+ }
701
712
  if (hasEntryExitToneChanged) {
702
713
  var entryExitTone = current.entryExitTone;
714
+ this.updateMeeting({
715
+ entryExitTone: entryExitTone
716
+ });
703
717
  this.emitScoped({
704
718
  file: 'locus-info',
705
719
  function: 'updateControls'
706
720
  }, _constants.LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED, {
707
721
  entryExitTone: entryExitTone
708
722
  });
723
+ }
724
+
725
+ // videoEnabled is handled differently than other controls,
726
+ // to fit with audio mute status logic
727
+ if (hasVideoEnabledChanged) {
728
+ var videoEnabled = current.videoEnabled;
709
729
  this.updateMeeting({
710
- entryExitTone: entryExitTone
730
+ unmuteVideoAllowed: videoEnabled
731
+ });
732
+ this.emitScoped({
733
+ file: 'locus-info',
734
+ function: 'updateControls'
735
+ }, _constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, {
736
+ // muted: not part of locus.controls
737
+ unmuteAllowed: videoEnabled
711
738
  });
712
739
  }
713
-
714
740
  this.controls = controls;
715
741
  }
716
742
  }
743
+
717
744
  /**
718
745
  * @param {String} conversationUrl
719
746
  * @param {Object} info
720
747
  * @returns {undefined}
721
748
  * @memberof LocusInfo
722
749
  */
723
-
724
750
  }, {
725
751
  key: "updateConversationUrl",
726
752
  value: function updateConversationUrl(conversationUrl, info) {
@@ -736,12 +762,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
736
762
  });
737
763
  }
738
764
  }
765
+
739
766
  /**
740
767
  * @param {Object} created
741
768
  * @returns {undefined}
742
769
  * @memberof LocusInfo
743
770
  */
744
-
745
771
  }, {
746
772
  key: "updateCreated",
747
773
  value: function updateCreated(created) {
@@ -749,20 +775,37 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
749
775
  this.created = created;
750
776
  }
751
777
  }
778
+
752
779
  /**
753
- * @param {Object} fullState
780
+ * @param {Object} services
754
781
  * @returns {undefined}
755
782
  * @memberof LocusInfo
756
783
  */
784
+ }, {
785
+ key: "updateServices",
786
+ value: function updateServices(services) {
787
+ if (services && !(0, _isEqual2.default)(this.services, services)) {
788
+ this.services = services;
789
+ this.emitScoped({
790
+ file: 'locus-info',
791
+ function: 'updateServices'
792
+ }, _constants.LOCUSINFO.EVENTS.LINKS_SERVICES, {
793
+ services: services
794
+ });
795
+ }
796
+ }
757
797
 
798
+ /**
799
+ * @param {Object} fullState
800
+ * @returns {undefined}
801
+ * @memberof LocusInfo
802
+ */
758
803
  }, {
759
804
  key: "updateFullState",
760
805
  value: function updateFullState(fullState) {
761
806
  if (fullState && !(0, _isEqual2.default)(this.fullState, fullState)) {
762
807
  var result = _fullState.default.getFullState(this.fullState, fullState);
763
-
764
808
  this.updateMeeting(result.current);
765
-
766
809
  if (result.updates.meetingStateChangedTo) {
767
810
  this.emitScoped({
768
811
  file: 'locus-info',
@@ -772,7 +815,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
772
815
  currentState: result.current.meetingState
773
816
  });
774
817
  }
775
-
776
818
  if (result.updates.meetingTypeChangedTo) {
777
819
  this.emitScoped({
778
820
  file: 'locus-info',
@@ -781,11 +823,11 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
781
823
  type: result.current.type
782
824
  });
783
825
  }
784
-
785
826
  this.parsedLocus.fullState = result.current;
786
827
  this.fullState = fullState;
787
828
  }
788
829
  }
830
+
789
831
  /**
790
832
  * handles when the locus.host is updated
791
833
  * @param {Object} host the locus.host property
@@ -793,16 +835,13 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
793
835
  * @memberof LocusInfo
794
836
  * emits internal event locus_info_update_host
795
837
  */
796
-
797
838
  }, {
798
839
  key: "updateHostInfo",
799
840
  value: function updateHostInfo(host) {
800
841
  if (host && !(0, _isEqual2.default)(this.host, host)) {
801
842
  var parsedHosts = _hostUtils.default.getHosts(this.host, host);
802
-
803
843
  this.updateMeeting(parsedHosts.current);
804
844
  this.parsedLocus.host = parsedHosts.current;
805
-
806
845
  if (parsedHosts.updates.isNewHost) {
807
846
  this.compareAndUpdateFlags.compareSelfAndHost = true;
808
847
  this.emitScoped({
@@ -813,31 +852,26 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
813
852
  oldHost: parsedHosts.previous
814
853
  });
815
854
  }
816
-
817
855
  this.host = host;
818
856
  } else {
819
857
  this.compareAndUpdateFlags.compareSelfAndHost = false;
820
858
  }
821
859
  }
860
+
822
861
  /**
823
862
  * @param {Object} info
824
863
  * @param {Object} self
825
864
  * @returns {undefined}
826
865
  * @memberof LocusInfo
827
866
  */
828
-
829
867
  }, {
830
868
  key: "updateMeetingInfo",
831
869
  value: function updateMeetingInfo(info, self) {
832
870
  if (info && !(0, _isEqual2.default)(this.info, info)) {
833
871
  var _this$parsedLocus$sel;
834
-
835
872
  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) || [];
836
-
837
873
  var isJoined = _selfUtils.default.isJoined(self || this.parsedLocus.self);
838
-
839
874
  var parsedInfo = _infoUtils.default.getInfos(this.parsedLocus.info, info, roles, isJoined);
840
-
841
875
  this.emitScoped({
842
876
  file: 'locus-info',
843
877
  function: 'updateMeetingInfo'
@@ -845,33 +879,30 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
845
879
  info: parsedInfo.current,
846
880
  self: self
847
881
  });
848
-
849
882
  if (parsedInfo.updates.isLocked) {
850
883
  this.emitScoped({
851
884
  file: 'locus-info',
852
885
  function: 'updateMeetingInfo'
853
886
  }, _constants.LOCUSINFO.EVENTS.MEETING_LOCKED, info);
854
887
  }
855
-
856
888
  if (parsedInfo.updates.isUnlocked) {
857
889
  this.emitScoped({
858
890
  file: 'locus-info',
859
891
  function: 'updateMeetingInfo'
860
892
  }, _constants.LOCUSINFO.EVENTS.MEETING_UNLOCKED, info);
861
893
  }
862
-
863
894
  this.info = info;
864
- this.parsedLocus.info = parsedInfo.current; // Parses the info and adds necessary values
865
-
895
+ this.parsedLocus.info = parsedInfo.current;
896
+ // Parses the info and adds necessary values
866
897
  this.updateMeeting(parsedInfo.current);
867
898
  }
868
899
  }
900
+
869
901
  /**
870
902
  * @param {Object} embeddedApps
871
903
  * @returns {undefined}
872
904
  * @memberof LocusInfo
873
905
  */
874
-
875
906
  }, {
876
907
  key: "updateEmbeddedApps",
877
908
  value: function updateEmbeddedApps(embeddedApps) {
@@ -879,9 +910,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
879
910
  if (_embeddedAppsUtils.default.areSimilar(this.embeddedApps, embeddedApps)) {
880
911
  return;
881
912
  }
882
-
883
913
  var parsedEmbeddedApps = _embeddedAppsUtils.default.parse(embeddedApps);
884
-
885
914
  this.updateMeeting({
886
915
  embeddedApps: parsedEmbeddedApps
887
916
  });
@@ -891,6 +920,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
891
920
  }, _constants.LOCUSINFO.EVENTS.EMBEDDED_APPS_UPDATED, parsedEmbeddedApps);
892
921
  this.embeddedApps = embeddedApps;
893
922
  }
923
+
894
924
  /**
895
925
  * handles when the locus.mediaShares is updated
896
926
  * @param {Object} mediaShares the locus.mediaShares property
@@ -898,14 +928,14 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
898
928
  * @memberof LocusInfo
899
929
  * emits internal event locus_info_update_media_shares
900
930
  */
901
-
902
931
  }, {
903
932
  key: "updateMediaShares",
904
933
  value: function updateMediaShares(mediaShares) {
905
934
  if (mediaShares && !(0, _isEqual2.default)(this.mediaShares, mediaShares)) {
906
935
  var parsedMediaShares = _mediaSharesUtils.default.getMediaShares(this.mediaShares, mediaShares);
907
-
908
936
  this.updateMeeting(parsedMediaShares.current);
937
+ this.parsedLocus.mediaShares = parsedMediaShares.current;
938
+ this.mediaShares = mediaShares;
909
939
  this.emitScoped({
910
940
  file: 'locus-info',
911
941
  function: 'updateMediaShares'
@@ -913,16 +943,14 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
913
943
  current: parsedMediaShares.current,
914
944
  previous: parsedMediaShares.previous
915
945
  });
916
- this.parsedLocus.mediaShares = parsedMediaShares.current;
917
- this.mediaShares = mediaShares;
918
946
  }
919
947
  }
948
+
920
949
  /**
921
950
  * @param {String} participantsUrl
922
951
  * @returns {undefined}
923
952
  * @memberof LocusInfo
924
953
  */
925
-
926
954
  }, {
927
955
  key: "updateParticipantsUrl",
928
956
  value: function updateParticipantsUrl(participantsUrl) {
@@ -930,12 +958,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
930
958
  this.participantsUrl = participantsUrl;
931
959
  }
932
960
  }
961
+
933
962
  /**
934
963
  * @param {Object} replace
935
964
  * @returns {undefined}
936
965
  * @memberof LocusInfo
937
966
  */
938
-
939
967
  }, {
940
968
  key: "updateReplace",
941
969
  value: function updateReplace(replace) {
@@ -943,6 +971,7 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
943
971
  this.replace = replace;
944
972
  }
945
973
  }
974
+
946
975
  /**
947
976
  * handles when the locus.self is updated
948
977
  * @param {Object} self the locus.mediaShares property
@@ -951,35 +980,31 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
951
980
  * @memberof LocusInfo
952
981
  * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
953
982
  */
954
-
955
983
  }, {
956
984
  key: "updateSelf",
957
985
  value: function updateSelf(self, participants) {
986
+ // @ts-ignore - check where this.self come from
958
987
  if (self && !(0, _isEqual2.default)(this.self, self)) {
988
+ // @ts-ignore
959
989
  var parsedSelves = _selfUtils.default.getSelves(this.self, self, this.webex.internal.device.url);
960
-
961
990
  this.updateMeeting(parsedSelves.current);
962
991
  this.parsedLocus.self = parsedSelves.current;
963
992
  var element = this.parsedLocus.states[this.parsedLocus.states.length - 1];
964
-
965
993
  if (element !== parsedSelves.current.state) {
966
994
  this.parsedLocus.states.push(parsedSelves.current.state);
967
- } // TODO: check if we need to save the sipUri here as well
968
- // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));
969
-
995
+ }
970
996
 
997
+ // TODO: check if we need to save the sipUri here as well
998
+ // this.emit(LOCUSINFO.EVENTS.MEETING_UPDATE, SelfUtils.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri));
971
999
  var result = _selfUtils.default.getSipUrl(this.getLocusPartner(participants, self), this.parsedLocus.fullState.type, this.parsedLocus.info.sipUri);
972
-
973
1000
  if (result.sipUri) {
974
1001
  this.updateMeeting(result);
975
1002
  }
976
-
977
1003
  if (parsedSelves.updates.moderatorChanged) {
978
1004
  this.compareAndUpdateFlags.compareHostAndSelf = true;
979
1005
  } else {
980
1006
  this.compareAndUpdateFlags.compareHostAndSelf = false;
981
1007
  }
982
-
983
1008
  if (parsedSelves.updates.layoutChanged) {
984
1009
  this.emitScoped({
985
1010
  file: 'locus-info',
@@ -988,7 +1013,14 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
988
1013
  layout: parsedSelves.current.layout
989
1014
  });
990
1015
  }
991
-
1016
+ if (parsedSelves.updates.breakoutsChanged) {
1017
+ this.emitScoped({
1018
+ file: 'locus-info',
1019
+ function: 'updateSelf'
1020
+ }, _constants.LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED, {
1021
+ breakoutSessions: parsedSelves.current.breakoutSessions
1022
+ });
1023
+ }
992
1024
  if (parsedSelves.updates.isMediaInactiveOrReleased) {
993
1025
  this.emitScoped({
994
1026
  file: 'locus-info',
@@ -997,13 +1029,29 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
997
1029
  reason: self.reason
998
1030
  });
999
1031
  }
1000
-
1001
1032
  if (parsedSelves.updates.moderatorChanged) {
1002
1033
  this.emitScoped({
1003
1034
  file: 'locus-info',
1004
1035
  function: 'updateSelf'
1005
1036
  }, _constants.LOCUSINFO.EVENTS.SELF_MODERATOR_CHANGED, self);
1006
1037
  }
1038
+ // When the user upgrades to moderator or cohost
1039
+ if (parsedSelves.updates.isUpgradeToModeratorOrCohost) {
1040
+ this.emitScoped({
1041
+ file: 'locus-info',
1042
+ function: 'updateSelf'
1043
+ }, _constants.LOCUSINFO.EVENTS.SELF_MODERATOR_OR_COHOST_UPGRADE, self);
1044
+ }
1045
+ //
1046
+ if (parsedSelves.updates.isVideoMutedByOthersChanged) {
1047
+ this.emitScoped({
1048
+ file: 'locus-info',
1049
+ function: 'updateSelf'
1050
+ }, _constants.LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED, {
1051
+ muted: parsedSelves.current.remoteVideoMuted
1052
+ // unmuteAllowed: not part of .self
1053
+ });
1054
+ }
1007
1055
 
1008
1056
  if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {
1009
1057
  this.emitScoped({
@@ -1014,7 +1062,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1014
1062
  unmuteAllowed: parsedSelves.current.unmuteAllowed
1015
1063
  });
1016
1064
  }
1017
-
1018
1065
  if (parsedSelves.updates.isMutedByOthersChanged) {
1019
1066
  this.emitScoped({
1020
1067
  file: 'locus-info',
@@ -1024,38 +1071,34 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1024
1071
  unmuteAllowed: parsedSelves.current.unmuteAllowed
1025
1072
  });
1026
1073
  }
1027
-
1028
1074
  if (parsedSelves.updates.localAudioUnmuteRequestedByServer) {
1029
1075
  this.emitScoped({
1030
1076
  file: 'locus-info',
1031
1077
  function: 'updateSelf'
1032
1078
  }, _constants.LOCUSINFO.EVENTS.LOCAL_UNMUTE_REQUESTED, {});
1033
1079
  }
1034
-
1035
1080
  if (parsedSelves.updates.isUserUnadmitted) {
1036
1081
  this.emitScoped({
1037
1082
  file: 'locus-info',
1038
1083
  function: 'updateSelf'
1039
1084
  }, _constants.LOCUSINFO.EVENTS.SELF_UNADMITTED_GUEST, self);
1040
1085
  }
1041
-
1042
1086
  if (parsedSelves.updates.isUserAdmitted) {
1043
1087
  this.emitScoped({
1044
1088
  file: 'locus-info',
1045
1089
  function: 'updateSelf'
1046
1090
  }, _constants.LOCUSINFO.EVENTS.SELF_ADMITTED_GUEST, self);
1047
1091
  }
1048
-
1049
1092
  if (parsedSelves.updates.isMediaInactive) {
1050
1093
  this.emitScoped({
1051
1094
  file: 'locus-info',
1052
1095
  function: 'updateSelf'
1053
- }, _constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, _selfUtils.default.getMediaStatus(self.mediaSessions));
1096
+ },
1097
+ // @ts-ignore
1098
+ _constants.LOCUSINFO.EVENTS.MEDIA_INACTIVITY, _selfUtils.default.getMediaStatus(self.mediaSessions));
1054
1099
  }
1055
-
1056
1100
  if (parsedSelves.updates.audioStateChange || parsedSelves.updates.videoStateChange || parsedSelves.updates.shareStateChange) {
1057
1101
  var _parsedSelves$current, _parsedSelves$current2, _parsedSelves$current3;
1058
-
1059
1102
  this.emitScoped({
1060
1103
  file: 'locus-info',
1061
1104
  function: 'updateSelf'
@@ -1065,14 +1108,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1065
1108
  shareStatus: (_parsedSelves$current3 = parsedSelves.current.currentMediaStatus) === null || _parsedSelves$current3 === void 0 ? void 0 : _parsedSelves$current3.share
1066
1109
  });
1067
1110
  }
1068
-
1069
1111
  if (parsedSelves.updates.isUserObserving) {
1070
1112
  this.emitScoped({
1071
1113
  file: 'locus-info',
1072
1114
  function: 'updateSelf'
1073
1115
  }, _constants.LOCUSINFO.EVENTS.SELF_OBSERVING);
1074
1116
  }
1075
-
1076
1117
  if (parsedSelves.updates.canNotViewTheParticipantListChanged) {
1077
1118
  this.emitScoped({
1078
1119
  file: 'locus-info',
@@ -1081,7 +1122,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1081
1122
  canNotViewTheParticipantList: parsedSelves.current.canNotViewTheParticipantList
1082
1123
  });
1083
1124
  }
1084
-
1085
1125
  if (parsedSelves.updates.isSharingBlockedChanged) {
1086
1126
  this.emitScoped({
1087
1127
  file: 'locus-info',
@@ -1090,7 +1130,6 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1090
1130
  isSharingBlocked: parsedSelves.current.isSharingBlocked
1091
1131
  });
1092
1132
  }
1093
-
1094
1133
  this.emitScoped({
1095
1134
  file: 'locus-info',
1096
1135
  function: 'updateSelf'
@@ -1099,18 +1138,19 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1099
1138
  newSelf: parsedSelves.current
1100
1139
  });
1101
1140
  this.parsedLocus.self = parsedSelves.current;
1141
+ // @ts-ignore
1102
1142
  this.self = self;
1103
1143
  } else {
1104
1144
  this.compareAndUpdateFlags.compareHostAndSelf = false;
1105
1145
  }
1106
1146
  }
1147
+
1107
1148
  /**
1108
1149
  * handles when the locus.url is updated
1109
1150
  * @param {String} url
1110
1151
  * @returns {undefined}
1111
1152
  * emits internal event locus_info_update_url
1112
1153
  */
1113
-
1114
1154
  }, {
1115
1155
  key: "updateLocusUrl",
1116
1156
  value: function updateLocusUrl(url) {
@@ -1125,12 +1165,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1125
1165
  }, _constants.EVENTS.LOCUS_INFO_UPDATE_URL, url);
1126
1166
  }
1127
1167
  }
1168
+
1128
1169
  /**
1129
1170
  * @param {String} aclUrl
1130
1171
  * @returns {undefined}
1131
1172
  * @memberof LocusInfo
1132
1173
  */
1133
-
1134
1174
  }, {
1135
1175
  key: "updateAclUrl",
1136
1176
  value: function updateAclUrl(aclUrl) {
@@ -1138,12 +1178,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1138
1178
  this.aclUrl = aclUrl;
1139
1179
  }
1140
1180
  }
1181
+
1141
1182
  /**
1142
1183
  * @param {Number} baseSequence
1143
1184
  * @returns {undefined}
1144
1185
  * @memberof LocusInfo
1145
1186
  */
1146
-
1147
1187
  }, {
1148
1188
  key: "updateBasequence",
1149
1189
  value: function updateBasequence(baseSequence) {
@@ -1151,12 +1191,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1151
1191
  this.baseSequence = baseSequence;
1152
1192
  }
1153
1193
  }
1194
+
1154
1195
  /**
1155
1196
  * @param {Number} sequence
1156
1197
  * @returns {undefined}
1157
1198
  * @memberof LocusInfo
1158
1199
  */
1159
-
1160
1200
  }, {
1161
1201
  key: "updateSequence",
1162
1202
  value: function updateSequence(sequence) {
@@ -1164,12 +1204,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1164
1204
  this.sequence = sequence;
1165
1205
  }
1166
1206
  }
1207
+
1167
1208
  /**
1168
1209
  * @param {Object} membership
1169
1210
  * @returns {undefined}
1170
1211
  * @memberof LocusInfo
1171
1212
  */
1172
-
1173
1213
  }, {
1174
1214
  key: "updateMemberShip",
1175
1215
  value: function updateMemberShip(membership) {
@@ -1177,12 +1217,12 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1177
1217
  this.membership = membership;
1178
1218
  }
1179
1219
  }
1220
+
1180
1221
  /**
1181
1222
  * @param {Array} identities
1182
1223
  * @returns {undefined}
1183
1224
  * @memberof LocusInfo
1184
1225
  */
1185
-
1186
1226
  }, {
1187
1227
  key: "updateIdentifiers",
1188
1228
  value: function updateIdentifiers(identities) {
@@ -1193,6 +1233,5 @@ var LocusInfo = /*#__PURE__*/function (_EventsScope) {
1193
1233
  }]);
1194
1234
  return LocusInfo;
1195
1235
  }(_eventsScope.default);
1196
-
1197
1236
  exports.default = LocusInfo;
1198
1237
  //# sourceMappingURL=index.js.map