@webex/plugin-meetings 3.0.0-beta.5 → 3.0.0-beta.51

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 (498) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +137 -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 +579 -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 +48 -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 +122 -49
  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 +240 -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 +17 -30
  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 +220 -192
  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 +61 -90
  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 +25 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2205 -2211
  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 +60 -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 +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +490 -560
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +24 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +116 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +78 -86
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/util.js +31 -68
  138. package/dist/member/util.js.map +1 -1
  139. package/dist/members/collection.js +3 -12
  140. package/dist/members/collection.js.map +1 -1
  141. package/dist/members/index.js +110 -203
  142. package/dist/members/index.js.map +1 -1
  143. package/dist/members/request.js +16 -39
  144. package/dist/members/request.js.map +1 -1
  145. package/dist/members/util.js +42 -50
  146. package/dist/members/util.js.map +1 -1
  147. package/dist/metrics/config.js +1 -13
  148. package/dist/metrics/config.js.map +1 -1
  149. package/dist/metrics/constants.js +1 -6
  150. package/dist/metrics/constants.js.map +1 -1
  151. package/dist/metrics/index.js +54 -156
  152. package/dist/metrics/index.js.map +1 -1
  153. package/dist/multistream/mediaRequestManager.js +74 -52
  154. package/dist/multistream/mediaRequestManager.js.map +1 -1
  155. package/dist/multistream/receiveSlot.js +48 -65
  156. package/dist/multistream/receiveSlot.js.map +1 -1
  157. package/dist/multistream/receiveSlotManager.js +58 -93
  158. package/dist/multistream/receiveSlotManager.js.map +1 -1
  159. package/dist/multistream/remoteMedia.js +60 -76
  160. package/dist/multistream/remoteMedia.js.map +1 -1
  161. package/dist/multistream/remoteMediaGroup.js +6 -40
  162. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  163. package/dist/multistream/remoteMediaManager.js +446 -442
  164. package/dist/multistream/remoteMediaManager.js.map +1 -1
  165. package/dist/networkQualityMonitor/index.js +40 -59
  166. package/dist/networkQualityMonitor/index.js.map +1 -1
  167. package/dist/personal-meeting-room/index.js +21 -45
  168. package/dist/personal-meeting-room/index.js.map +1 -1
  169. package/dist/personal-meeting-room/request.js +1 -31
  170. package/dist/personal-meeting-room/request.js.map +1 -1
  171. package/dist/personal-meeting-room/util.js +0 -13
  172. package/dist/personal-meeting-room/util.js.map +1 -1
  173. package/dist/reachability/index.js +192 -191
  174. package/dist/reachability/index.js.map +1 -1
  175. package/dist/reachability/request.js +15 -23
  176. package/dist/reachability/request.js.map +1 -1
  177. package/dist/reactions/constants.js +13 -0
  178. package/dist/reactions/constants.js.map +1 -0
  179. package/dist/reactions/reactions.js +109 -0
  180. package/dist/reactions/reactions.js.map +1 -0
  181. package/dist/reactions/reactions.type.js +36 -0
  182. package/dist/reactions/reactions.type.js.map +1 -0
  183. package/dist/reconnection-manager/index.js +322 -456
  184. package/dist/reconnection-manager/index.js.map +1 -1
  185. package/dist/recording-controller/enums.js +17 -0
  186. package/dist/recording-controller/enums.js.map +1 -0
  187. package/dist/recording-controller/index.js +343 -0
  188. package/dist/recording-controller/index.js.map +1 -0
  189. package/dist/recording-controller/util.js +63 -0
  190. package/dist/recording-controller/util.js.map +1 -0
  191. package/dist/roap/index.js +48 -70
  192. package/dist/roap/index.js.map +1 -1
  193. package/dist/roap/request.js +143 -131
  194. package/dist/roap/request.js.map +1 -1
  195. package/dist/roap/turnDiscovery.js +91 -98
  196. package/dist/roap/turnDiscovery.js.map +1 -1
  197. package/dist/statsAnalyzer/global.js +1 -95
  198. package/dist/statsAnalyzer/global.js.map +1 -1
  199. package/dist/statsAnalyzer/index.js +372 -455
  200. package/dist/statsAnalyzer/index.js.map +1 -1
  201. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  202. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  203. package/dist/transcription/index.js +22 -47
  204. package/dist/transcription/index.js.map +1 -1
  205. package/dist/types/breakouts/breakout.d.ts +8 -0
  206. package/dist/types/breakouts/collection.d.ts +5 -0
  207. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  208. package/dist/types/breakouts/index.d.ts +5 -0
  209. package/dist/types/breakouts/request.d.ts +22 -0
  210. package/dist/types/breakouts/utils.d.ts +8 -0
  211. package/dist/types/common/browser-detection.d.ts +9 -0
  212. package/dist/types/common/collection.d.ts +48 -0
  213. package/dist/types/common/config.d.ts +2 -0
  214. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  215. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  216. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  217. package/dist/types/common/errors/media.d.ts +15 -0
  218. package/dist/types/common/errors/parameter.d.ts +15 -0
  219. package/dist/types/common/errors/password-error.d.ts +15 -0
  220. package/dist/types/common/errors/permission.d.ts +14 -0
  221. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  222. package/dist/types/common/errors/reconnection.d.ts +15 -0
  223. package/dist/types/common/errors/stats.d.ts +15 -0
  224. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  225. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  226. package/dist/types/common/events/events-scope.d.ts +17 -0
  227. package/dist/types/common/events/events.d.ts +12 -0
  228. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  229. package/dist/types/common/events/util.d.ts +2 -0
  230. package/dist/types/common/logs/logger-config.d.ts +2 -0
  231. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  232. package/dist/types/common/logs/request.d.ts +34 -0
  233. package/dist/types/common/queue.d.ts +32 -0
  234. package/dist/types/config.d.ts +77 -0
  235. package/dist/types/constants.d.ts +928 -0
  236. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  237. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  238. package/dist/types/controls-options-manager/index.d.ts +128 -0
  239. package/dist/types/controls-options-manager/util.d.ts +9 -0
  240. package/dist/types/index.d.ts +6 -0
  241. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  242. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  243. package/dist/types/locus-info/fullState.d.ts +2 -0
  244. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  245. package/dist/types/locus-info/index.d.ts +276 -0
  246. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  247. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  248. package/dist/types/locus-info/parser.d.ts +212 -0
  249. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  250. package/dist/types/media/index.d.ts +32 -0
  251. package/dist/types/media/properties.d.ts +108 -0
  252. package/dist/types/media/util.d.ts +2 -0
  253. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  254. package/dist/types/meeting/in-meeting-actions.d.ts +95 -0
  255. package/dist/types/meeting/index.d.ts +1719 -0
  256. package/dist/types/meeting/muteState.d.ts +132 -0
  257. package/dist/types/meeting/request.d.ts +271 -0
  258. package/dist/types/meeting/request.type.d.ts +11 -0
  259. package/dist/types/meeting/state.d.ts +9 -0
  260. package/dist/types/meeting/util.d.ts +2 -0
  261. package/dist/types/meeting-info/collection.d.ts +20 -0
  262. package/dist/types/meeting-info/index.d.ts +57 -0
  263. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  264. package/dist/types/meeting-info/request.d.ts +22 -0
  265. package/dist/types/meeting-info/util.d.ts +2 -0
  266. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  267. package/dist/types/meetings/collection.d.ts +23 -0
  268. package/dist/types/meetings/index.d.ts +297 -0
  269. package/dist/types/meetings/request.d.ts +27 -0
  270. package/dist/types/meetings/util.d.ts +18 -0
  271. package/dist/types/member/index.d.ts +146 -0
  272. package/dist/types/member/util.d.ts +2 -0
  273. package/dist/types/members/collection.d.ts +24 -0
  274. package/dist/types/members/index.d.ts +325 -0
  275. package/dist/types/members/request.d.ts +50 -0
  276. package/dist/types/members/util.d.ts +2 -0
  277. package/dist/types/metrics/config.d.ts +169 -0
  278. package/dist/types/metrics/constants.d.ts +53 -0
  279. package/dist/types/metrics/index.d.ts +152 -0
  280. package/dist/types/multistream/mediaRequestManager.d.ts +51 -0
  281. package/dist/types/multistream/receiveSlot.d.ts +64 -0
  282. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  283. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  284. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  285. package/dist/types/multistream/remoteMediaManager.d.ts +259 -0
  286. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  287. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  288. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  289. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  290. package/dist/types/reachability/index.d.ts +152 -0
  291. package/dist/types/reachability/request.d.ts +37 -0
  292. package/dist/types/reactions/constants.d.ts +3 -0
  293. package/dist/types/reactions/reactions.d.ts +4 -0
  294. package/dist/types/reactions/reactions.type.d.ts +52 -0
  295. package/dist/types/reconnection-manager/index.d.ts +117 -0
  296. package/dist/types/recording-controller/enums.d.ts +7 -0
  297. package/dist/types/recording-controller/index.d.ts +193 -0
  298. package/dist/types/recording-controller/util.d.ts +13 -0
  299. package/dist/types/roap/index.d.ts +77 -0
  300. package/dist/types/roap/request.d.ts +38 -0
  301. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  302. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  303. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  304. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  305. package/dist/types/transcription/index.d.ts +64 -0
  306. package/internal-README.md +7 -6
  307. package/package.json +27 -21
  308. package/src/breakouts/README.md +199 -0
  309. package/src/breakouts/breakout.ts +129 -0
  310. package/src/breakouts/collection.ts +19 -0
  311. package/src/breakouts/edit-lock-error.ts +25 -0
  312. package/src/breakouts/index.ts +539 -0
  313. package/src/breakouts/request.ts +55 -0
  314. package/src/breakouts/utils.ts +39 -0
  315. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  316. package/src/common/collection.ts +9 -7
  317. package/src/common/{config.js → config.ts} +1 -1
  318. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  319. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  320. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  321. package/src/common/errors/{media.js → media.ts} +11 -7
  322. package/src/common/errors/parameter.ts +11 -7
  323. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  324. package/src/common/errors/{permission.js → permission.ts} +10 -6
  325. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  326. package/src/common/errors/{stats.js → stats.ts} +11 -7
  327. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  328. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  329. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  330. package/src/common/events/{events.js → events.ts} +5 -1
  331. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  332. package/src/common/events/{util.js → util.ts} +2 -3
  333. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  334. package/src/common/logs/logger-proxy.ts +44 -0
  335. package/src/common/logs/{request.js → request.ts} +22 -9
  336. package/src/common/queue.ts +1 -2
  337. package/src/{config.js → config.ts} +17 -12
  338. package/src/constants.ts +76 -5
  339. package/src/controls-options-manager/constants.ts +5 -0
  340. package/src/controls-options-manager/enums.ts +7 -0
  341. package/src/controls-options-manager/index.ts +218 -0
  342. package/src/controls-options-manager/util.ts +30 -0
  343. package/src/index.js +4 -1
  344. package/src/locus-info/controlsUtils.ts +122 -0
  345. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  346. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  347. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  348. package/src/locus-info/{index.js → index.ts} +192 -67
  349. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  350. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  351. package/src/locus-info/{parser.js → parser.ts} +67 -79
  352. package/src/locus-info/{selfUtils.js → selfUtils.ts} +157 -68
  353. package/src/media/{index.js → index.ts} +179 -176
  354. package/src/media/{properties.js → properties.ts} +60 -37
  355. package/src/media/{util.js → util.ts} +2 -2
  356. package/src/mediaQualityMetrics/config.ts +384 -0
  357. package/src/meeting/in-meeting-actions.ts +55 -3
  358. package/src/meeting/{index.js → index.ts} +2590 -1576
  359. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  360. package/src/meeting/{request.js → request.ts} +326 -142
  361. package/src/meeting/request.type.ts +13 -0
  362. package/src/meeting/{state.js → state.ts} +50 -35
  363. package/src/meeting/{util.js → util.ts} +128 -115
  364. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  365. package/src/meeting-info/{index.js → index.ts} +42 -36
  366. package/src/meeting-info/meeting-info-v2.ts +273 -0
  367. package/src/meeting-info/{request.js → request.ts} +14 -4
  368. package/src/meeting-info/{util.js → util.ts} +60 -51
  369. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  370. package/src/meetings/{collection.js → collection.ts} +6 -3
  371. package/src/meetings/index.ts +1159 -0
  372. package/src/meetings/{request.js → request.ts} +32 -25
  373. package/src/meetings/{util.js → util.ts} +58 -32
  374. package/src/member/{index.js → index.ts} +102 -56
  375. package/src/member/{util.js → util.ts} +52 -25
  376. package/src/members/{collection.js → collection.ts} +2 -2
  377. package/src/members/{index.js → index.ts} +231 -144
  378. package/src/members/{request.js → request.ts} +60 -16
  379. package/src/members/{util.js → util.ts} +69 -54
  380. package/src/metrics/{config.js → config.ts} +253 -92
  381. package/src/metrics/{constants.js → constants.ts} +0 -6
  382. package/src/metrics/{index.js → index.ts} +105 -94
  383. package/src/multistream/mediaRequestManager.ts +101 -39
  384. package/src/multistream/receiveSlot.ts +62 -26
  385. package/src/multistream/receiveSlotManager.ts +50 -38
  386. package/src/multistream/remoteMedia.ts +38 -5
  387. package/src/multistream/remoteMediaGroup.ts +4 -3
  388. package/src/multistream/remoteMediaManager.ts +209 -62
  389. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  390. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  391. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  392. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  393. package/src/reachability/{index.js → index.ts} +157 -94
  394. package/src/reachability/request.ts +46 -35
  395. package/src/reactions/constants.ts +4 -0
  396. package/src/reactions/reactions.ts +104 -0
  397. package/src/reactions/reactions.type.ts +62 -0
  398. package/src/reconnection-manager/{index.js → index.ts} +196 -103
  399. package/src/recording-controller/enums.ts +8 -0
  400. package/src/recording-controller/index.ts +315 -0
  401. package/src/recording-controller/util.ts +58 -0
  402. package/src/roap/{index.js → index.ts} +77 -60
  403. package/src/roap/request.ts +172 -0
  404. package/src/roap/turnDiscovery.ts +81 -41
  405. package/src/statsAnalyzer/global.ts +37 -0
  406. package/src/statsAnalyzer/index.ts +1242 -0
  407. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  408. package/src/transcription/{index.js → index.ts} +46 -39
  409. package/test/integration/spec/converged-space-meetings.js +176 -0
  410. package/test/integration/spec/journey.js +665 -464
  411. package/test/integration/spec/space-meeting.js +320 -206
  412. package/test/integration/spec/transcription.js +7 -8
  413. package/test/unit/spec/breakouts/breakout.ts +146 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/index.ts +764 -0
  417. package/test/unit/spec/breakouts/request.ts +104 -0
  418. package/test/unit/spec/breakouts/utils.js +47 -0
  419. package/test/unit/spec/common/browser-detection.js +9 -28
  420. package/test/unit/spec/controls-options-manager/index.js +180 -0
  421. package/test/unit/spec/controls-options-manager/util.js +86 -0
  422. package/test/unit/spec/fixture/locus.js +92 -90
  423. package/test/unit/spec/locus-info/controlsUtils.js +112 -34
  424. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  425. package/test/unit/spec/locus-info/index.js +219 -2
  426. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  427. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  428. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  429. package/test/unit/spec/locus-info/parser.js +3 -9
  430. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  431. package/test/unit/spec/locus-info/selfUtils.js +128 -12
  432. package/test/unit/spec/media/index.ts +72 -8
  433. package/test/unit/spec/media/properties.ts +9 -9
  434. package/test/unit/spec/meeting/in-meeting-actions.ts +23 -2
  435. package/test/unit/spec/meeting/index.js +2490 -802
  436. package/test/unit/spec/meeting/muteState.js +146 -61
  437. package/test/unit/spec/meeting/request.js +141 -43
  438. package/test/unit/spec/meeting/utils.js +134 -164
  439. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  440. package/test/unit/spec/meeting-info/request.js +7 -9
  441. package/test/unit/spec/meeting-info/util.js +11 -12
  442. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  443. package/test/unit/spec/meetings/collection.js +1 -1
  444. package/test/unit/spec/meetings/index.js +439 -257
  445. package/test/unit/spec/meetings/utils.js +14 -12
  446. package/test/unit/spec/member/index.js +0 -1
  447. package/test/unit/spec/member/util.js +31 -7
  448. package/test/unit/spec/members/index.js +179 -54
  449. package/test/unit/spec/members/request.js +29 -20
  450. package/test/unit/spec/members/utils.js +119 -4
  451. package/test/unit/spec/metrics/index.js +16 -21
  452. package/test/unit/spec/multistream/mediaRequestManager.ts +318 -64
  453. package/test/unit/spec/multistream/receiveSlot.ts +68 -17
  454. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  455. package/test/unit/spec/multistream/remoteMedia.ts +38 -2
  456. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  457. package/test/unit/spec/multistream/remoteMediaManager.ts +539 -65
  458. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  459. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  460. package/test/unit/spec/reachability/index.ts +176 -27
  461. package/test/unit/spec/reachability/request.js +66 -0
  462. package/test/unit/spec/reconnection-manager/index.js +58 -30
  463. package/test/unit/spec/recording-controller/index.js +231 -0
  464. package/test/unit/spec/recording-controller/util.js +102 -0
  465. package/test/unit/spec/roap/index.ts +12 -8
  466. package/test/unit/spec/roap/request.ts +217 -0
  467. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  468. package/test/unit/spec/stats-analyzer/index.js +108 -57
  469. package/test/utils/cmr.js +44 -42
  470. package/test/utils/constants.js +9 -0
  471. package/test/utils/testUtils.js +98 -77
  472. package/test/utils/webex-config.js +22 -18
  473. package/test/utils/webex-test-users.js +57 -50
  474. package/tsconfig.json +6 -0
  475. package/dist/media/internal-media-core-wrapper.js +0 -22
  476. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  477. package/dist/meeting/effectsState.js +0 -327
  478. package/dist/meeting/effectsState.js.map +0 -1
  479. package/dist/multistream/multistreamMedia.js +0 -116
  480. package/dist/multistream/multistreamMedia.js.map +0 -1
  481. package/dist/peer-connection-manager/util.js +0 -124
  482. package/dist/peer-connection-manager/util.js.map +0 -1
  483. package/src/common/logs/logger-proxy.js +0 -33
  484. package/src/locus-info/controlsUtils.js +0 -102
  485. package/src/media/internal-media-core-wrapper.ts +0 -9
  486. package/src/mediaQualityMetrics/config.js +0 -382
  487. package/src/meeting/effectsState.js +0 -205
  488. package/src/meeting-info/meeting-info-v2.js +0 -255
  489. package/src/meetings/index.js +0 -1015
  490. package/src/multistream/multistreamMedia.ts +0 -92
  491. package/src/peer-connection-manager/util.ts +0 -117
  492. package/src/roap/request.js +0 -127
  493. package/src/statsAnalyzer/global.js +0 -133
  494. package/src/statsAnalyzer/index.js +0 -1006
  495. package/src/statsAnalyzer/mqaUtil.js +0 -173
  496. package/test/unit/spec/meeting/effectsState.js +0 -291
  497. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  498. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -19,14 +19,14 @@ import {
19
19
  } from '../constants';
20
20
  import Metrics from '../metrics';
21
21
  import {eventType} from '../metrics/config';
22
- import InfoUtils from '../locus-info/infoUtils';
23
- import FullState from '../locus-info/fullState';
24
- import SelfUtils from '../locus-info/selfUtils';
25
- import HostUtils from '../locus-info/hostUtils';
26
- import ControlsUtils from '../locus-info/controlsUtils';
27
- import EmbeddedAppsUtils from '../locus-info/embeddedAppsUtils';
28
- import MediaSharesUtils from '../locus-info/mediaSharesUtils';
29
- import LocusDeltaParser from '../locus-info/parser';
22
+ import InfoUtils from './infoUtils';
23
+ import FullState from './fullState';
24
+ import SelfUtils from './selfUtils';
25
+ import HostUtils from './hostUtils';
26
+ import ControlsUtils from './controlsUtils';
27
+ import EmbeddedAppsUtils from './embeddedAppsUtils';
28
+ import MediaSharesUtils from './mediaSharesUtils';
29
+ import LocusDeltaParser from './parser';
30
30
 
31
31
  /**
32
32
  * @description LocusInfo extends ChildEmitter to convert locusInfo info a private emitter to parent object
@@ -35,6 +35,42 @@ import LocusDeltaParser from '../locus-info/parser';
35
35
  * @class LocusInfo
36
36
  */
37
37
  export default class LocusInfo extends EventsScope {
38
+ compareAndUpdateFlags: any;
39
+ emitChange: any;
40
+ locusParser: any;
41
+ meetingId: any;
42
+ parsedLocus: any;
43
+ updateMeeting: any;
44
+ webex: any;
45
+ aclUrl: any;
46
+ baseSequence: any;
47
+ created: any;
48
+ deltaParticipants: any;
49
+ identities: any;
50
+ membership: any;
51
+ participants: any;
52
+ participantsUrl: any;
53
+ replaces: any;
54
+ scheduledMeeting: any;
55
+ sequence: any;
56
+ controls: any;
57
+ conversationUrl: any;
58
+ embeddedApps: any;
59
+ fullState: any;
60
+ host: any;
61
+ info: any;
62
+ mediaShares: any;
63
+ replace: any;
64
+ url: any;
65
+ services: any;
66
+
67
+ /**
68
+ * Constructor
69
+ * @param {boolean} updateMeeting true if the meeting should be updated
70
+ * @param {object} webex
71
+ * @param {string} meetingId
72
+ * @returns {undefined}
73
+ */
38
74
  constructor(updateMeeting, webex, meetingId) {
39
75
  super();
40
76
  this.parsedLocus = {
@@ -55,7 +91,7 @@ export default class LocusInfo extends EventsScope {
55
91
  * @param {Meeting} meeting
56
92
  * @returns {undefined}
57
93
  */
58
- applyLocusDeltaData(action, locus, meeting) {
94
+ applyLocusDeltaData(action: string, locus: any, meeting: any) {
59
95
  const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
60
96
 
61
97
  switch (action) {
@@ -94,7 +130,7 @@ export default class LocusInfo extends EventsScope {
94
130
  * @param {Meeting} meeting
95
131
  * @returns {undefined}
96
132
  */
97
- handleLocusDelta(locus, meeting) {
133
+ handleLocusDelta(locus: any, meeting: any) {
98
134
  // register a function to process delta actions
99
135
  if (!this.locusParser.onDeltaAction) {
100
136
  // delta action, along with associated loci
@@ -112,7 +148,7 @@ export default class LocusInfo extends EventsScope {
112
148
  * @returns {undefined}
113
149
  * @memberof LocusInfo
114
150
  */
115
- init(locus = {}) {
151
+ init(locus: any = {}) {
116
152
  this.created = locus.created || null;
117
153
  this.scheduledMeeting = locus.meeting || null;
118
154
  this.participantsUrl = locus.participantsUrl || null;
@@ -157,6 +193,7 @@ export default class LocusInfo extends EventsScope {
157
193
  this.updateSelf(locus.self, locus.participants);
158
194
  this.updateHostInfo(locus.host);
159
195
  this.updateMediaShares(locus.mediaShares);
196
+ this.updateServices(locus.links?.services);
160
197
  }
161
198
 
162
199
  /**
@@ -164,7 +201,7 @@ export default class LocusInfo extends EventsScope {
164
201
  * @returns {undefined}
165
202
  * @memberof LocusInfo
166
203
  */
167
- initialSetup(locus) {
204
+ initialSetup(locus: object) {
168
205
  this.onFullLocus(locus);
169
206
 
170
207
  // Change it to true after it receives it first locus object
@@ -177,7 +214,8 @@ export default class LocusInfo extends EventsScope {
177
214
  * @returns {undefined}
178
215
  * @memberof LocusInfo
179
216
  */
180
- parse(meeting, data) {
217
+ parse(meeting: any, data: any) {
218
+ // eslint-disable-next-line @typescript-eslint/no-shadow
181
219
  const {eventType} = data;
182
220
 
183
221
  LoggerProxy.logger.info(`Locus-info:index#parse --> received locus data: ${eventType}`);
@@ -217,18 +255,19 @@ export default class LocusInfo extends EventsScope {
217
255
  * @returns {undefined}
218
256
  * @memberof LocusInfo
219
257
  */
220
- emitScoped(scope, eventName, args) {
258
+ emitScoped(scope?: any, eventName?: string, args?: any) {
221
259
  return this.emit(scope, eventName, args);
222
260
  }
223
261
 
224
262
  /**
225
263
  * updates the locus with full locus object
226
264
  * @param {object} locus locus object
227
- * @param {sting} eventType particulat locus event
265
+ * @param {string} eventType particulat locus event
228
266
  * @returns {object} null
229
267
  * @memberof LocusInfo
230
268
  */
231
- onFullLocus(locus, eventType) {
269
+ // eslint-disable-next-line @typescript-eslint/no-shadow
270
+ onFullLocus(locus: any, eventType?: string) {
232
271
  if (!locus) {
233
272
  LoggerProxy.logger.error(
234
273
  'Locus-info:index#onFullLocus --> object passed as argument was invalid, continuing.'
@@ -252,7 +291,8 @@ export default class LocusInfo extends EventsScope {
252
291
  * @returns {undefined}
253
292
  * @memberof LocusInfo
254
293
  */
255
- handleOneOnOneEvent(eventType) {
294
+ // eslint-disable-next-line @typescript-eslint/no-shadow
295
+ handleOneOnOneEvent(eventType: string) {
256
296
  if (
257
297
  this.parsedLocus.fullState.type === _CALL_ ||
258
298
  this.parsedLocus.fullState.type === _SIP_BRIDGE_
@@ -295,7 +335,7 @@ export default class LocusInfo extends EventsScope {
295
335
  * @returns {undefined}
296
336
  * @memberof LocusInfo
297
337
  */
298
- onDeltaLocus(locus) {
338
+ onDeltaLocus(locus: any) {
299
339
  this.updateLocusInfo(locus);
300
340
  this.updateParticipants(locus.participants);
301
341
  this.isMeetingActive();
@@ -307,6 +347,13 @@ export default class LocusInfo extends EventsScope {
307
347
  * @memberof LocusInfo
308
348
  */
309
349
  updateLocusInfo(locus) {
350
+ if (locus.self?.reason === 'MOVED' && locus.self?.state === 'LEFT') {
351
+ // When moved to a breakout session locus sends a message for the previous locus
352
+ // indicating that we have been moved. It isn't helpful to continue parsing this
353
+ // as it gets interpreted as if we have left the call
354
+ return;
355
+ }
356
+
310
357
  this.updateControls(locus.controls);
311
358
  this.updateConversationUrl(locus.conversationUrl, locus.info);
312
359
  this.updateCreated(locus.created);
@@ -324,6 +371,7 @@ export default class LocusInfo extends EventsScope {
324
371
  this.updateMemberShip(locus.membership);
325
372
  this.updateIdentifiers(locus.identities);
326
373
  this.updateEmbeddedApps(locus.embeddedApps);
374
+ this.updateServices(locus.links?.services);
327
375
  this.compareAndUpdate();
328
376
  // update which required to compare different objects from locus
329
377
  }
@@ -334,7 +382,7 @@ export default class LocusInfo extends EventsScope {
334
382
  * @returns {Array}
335
383
  * @memberof LocusInfo
336
384
  */
337
- getLocusPartner(participants, self) {
385
+ getLocusPartner(participants: Array<any>, self: any) {
338
386
  if (!participants || participants.length === 0) {
339
387
  return null;
340
388
  }
@@ -345,6 +393,7 @@ export default class LocusInfo extends EventsScope {
345
393
  self &&
346
394
  participant.identity !== self.identity &&
347
395
  (participants.length <= 2 || (participant.type === _USER_ && !participant.removed))
396
+ // @ts-ignore
348
397
  ) || this.partner
349
398
  );
350
399
  }
@@ -359,6 +408,7 @@ export default class LocusInfo extends EventsScope {
359
408
  this.parsedLocus.fullState.type === _CALL_ ||
360
409
  this.parsedLocus.fullState.type === _SIP_BRIDGE_
361
410
  ) {
411
+ // @ts-ignore
362
412
  const partner = this.getLocusPartner(this.participants, this.self);
363
413
 
364
414
  this.updateMeeting({partner});
@@ -390,8 +440,7 @@ export default class LocusInfo extends EventsScope {
390
440
  shouldLeave: false,
391
441
  }
392
442
  );
393
- }
394
- else if (
443
+ } else if (
395
444
  partner.state === MEETING_STATE.STATES.LEFT &&
396
445
  this.parsedLocus.self &&
397
446
  (this.parsedLocus.self.state === MEETING_STATE.STATES.DECLINED ||
@@ -414,8 +463,7 @@ export default class LocusInfo extends EventsScope {
414
463
  this.parsedLocus.self.joinedWith && this.parsedLocus.self.joinedWith.state !== _LEFT_,
415
464
  }
416
465
  );
417
- }
418
- else if (
466
+ } else if (
419
467
  this.parsedLocus.self &&
420
468
  this.parsedLocus.self.state === MEETING_STATE.STATES.LEFT &&
421
469
  (partner.state === MEETING_STATE.STATES.LEFT ||
@@ -439,11 +487,11 @@ export default class LocusInfo extends EventsScope {
439
487
  }
440
488
  );
441
489
  }
442
- }
443
- else if (this.parsedLocus.fullState.type === _MEETING_) {
490
+ } else if (this.parsedLocus.fullState.type === _MEETING_) {
444
491
  if (
445
492
  this.fullState &&
446
493
  (this.fullState.state === LOCUS.STATE.INACTIVE ||
494
+ // @ts-ignore
447
495
  this.fullState.state === LOCUS.STATE.TERMINATING)
448
496
  ) {
449
497
  LoggerProxy.logger.warn(
@@ -464,8 +512,7 @@ export default class LocusInfo extends EventsScope {
464
512
  shouldLeave: false,
465
513
  }
466
514
  );
467
- }
468
- else if (this.fullState && this.fullState.removed) {
515
+ } else if (this.fullState && this.fullState.removed) {
469
516
  // user has been dropped from a meeting
470
517
  Metrics.postEvent({
471
518
  event: eventType.REMOTE_ENDED,
@@ -499,8 +546,7 @@ export default class LocusInfo extends EventsScope {
499
546
  }
500
547
  );
501
548
  }
502
- }
503
- else {
549
+ } else {
504
550
  LoggerProxy.logger.warn('Locus-info:index#isMeetingActive --> Meeting Type is unknown.');
505
551
  }
506
552
  }
@@ -543,8 +589,7 @@ export default class LocusInfo extends EventsScope {
543
589
  canAssignHost: true,
544
590
  }
545
591
  );
546
- }
547
- else {
592
+ } else {
548
593
  this.emitScoped(
549
594
  {
550
595
  file: 'locus-info',
@@ -565,13 +610,13 @@ export default class LocusInfo extends EventsScope {
565
610
  * @param {Array} [participants] - The participants to update against.
566
611
  * @returns {void}
567
612
  */
568
- updateParticipantDeltas(participants = []) {
613
+ updateParticipantDeltas(participants: Array<any> = []) {
569
614
  // Used to find a participant within a participants collection.
570
615
  const findParticipant = (participant, collection) =>
571
616
  collection.find((item) => item.person.id === participant.person.id);
572
617
 
573
618
  // Generates an object that indicates which state properties have changed.
574
- const generateDelta = (prevState = {}, newState = {}) => {
619
+ const generateDelta = (prevState: any = {}, newState: any = {}) => {
575
620
  // Setup deltas.
576
621
  const deltas = {
577
622
  audioStatus: prevState.audioStatus !== newState.audioStatus,
@@ -614,7 +659,7 @@ export default class LocusInfo extends EventsScope {
614
659
  * @returns {Array} updatedParticipants
615
660
  * @memberof LocusInfo
616
661
  */
617
- updateParticipants(participants) {
662
+ updateParticipants(participants: object) {
618
663
  this.emitScoped(
619
664
  {
620
665
  file: 'locus-info',
@@ -636,7 +681,7 @@ export default class LocusInfo extends EventsScope {
636
681
  * @returns {undefined}
637
682
  * @memberof LocusInfo
638
683
  */
639
- updateControls(controls) {
684
+ updateControls(controls: object) {
640
685
  if (controls && !isEqual(this.controls, controls)) {
641
686
  this.parsedLocus.controls = ControlsUtils.parse(controls);
642
687
  const {
@@ -646,6 +691,8 @@ export default class LocusInfo extends EventsScope {
646
691
  hasMeetingContainerChanged,
647
692
  hasTranscribeChanged,
648
693
  hasEntryExitToneChanged,
694
+ hasBreakoutChanged,
695
+ hasVideoEnabledChanged,
649
696
  },
650
697
  current,
651
698
  } = ControlsUtils.getControls(this.controls, controls);
@@ -656,13 +703,11 @@ export default class LocusInfo extends EventsScope {
656
703
  if (hasRecordingPausedChanged) {
657
704
  if (current.record.paused) {
658
705
  state = RECORDING_STATE.PAUSED;
659
- }
660
- else {
706
+ } else {
661
707
  // state will be `IDLE` if the recording is not active, even when there is a `pause` status change.
662
708
  state = current.record.recording ? RECORDING_STATE.RESUMED : RECORDING_STATE.IDLE;
663
709
  }
664
- }
665
- else if (hasRecordingChanged) {
710
+ } else if (hasRecordingChanged) {
666
711
  state = current.record.recording ? RECORDING_STATE.RECORDING : RECORDING_STATE.IDLE;
667
712
  }
668
713
 
@@ -711,9 +756,26 @@ export default class LocusInfo extends EventsScope {
711
756
  );
712
757
  }
713
758
 
759
+ if (hasBreakoutChanged) {
760
+ const {breakout} = current;
761
+
762
+ this.emitScoped(
763
+ {
764
+ file: 'locus-info',
765
+ function: 'updateControls',
766
+ },
767
+ LOCUSINFO.EVENTS.CONTROLS_MEETING_BREAKOUT_UPDATED,
768
+ {
769
+ breakout,
770
+ }
771
+ );
772
+ }
773
+
714
774
  if (hasEntryExitToneChanged) {
715
775
  const {entryExitTone} = current;
716
776
 
777
+ this.updateMeeting({entryExitTone});
778
+
717
779
  this.emitScoped(
718
780
  {
719
781
  file: 'locus-info',
@@ -721,11 +783,29 @@ export default class LocusInfo extends EventsScope {
721
783
  },
722
784
  LOCUSINFO.EVENTS.CONTROLS_ENTRY_EXIT_TONE_UPDATED,
723
785
  {
724
- entryExitTone
786
+ entryExitTone,
725
787
  }
726
788
  );
789
+ }
727
790
 
728
- this.updateMeeting({entryExitTone});
791
+ // videoEnabled is handled differently than other controls,
792
+ // to fit with audio mute status logic
793
+ if (hasVideoEnabledChanged) {
794
+ const {videoEnabled} = current;
795
+
796
+ this.updateMeeting({unmuteVideoAllowed: videoEnabled});
797
+
798
+ this.emitScoped(
799
+ {
800
+ file: 'locus-info',
801
+ function: 'updateControls',
802
+ },
803
+ LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,
804
+ {
805
+ // muted: not part of locus.controls
806
+ unmuteAllowed: videoEnabled,
807
+ }
808
+ );
729
809
  }
730
810
 
731
811
  this.controls = controls;
@@ -738,12 +818,11 @@ export default class LocusInfo extends EventsScope {
738
818
  * @returns {undefined}
739
819
  * @memberof LocusInfo
740
820
  */
741
- updateConversationUrl(conversationUrl, info) {
821
+ updateConversationUrl(conversationUrl: string, info: any) {
742
822
  if (conversationUrl && !isEqual(this.conversationUrl, conversationUrl)) {
743
823
  this.conversationUrl = conversationUrl;
744
824
  this.updateMeeting({conversationUrl});
745
- }
746
- else if (
825
+ } else if (
747
826
  info &&
748
827
  info.conversationUrl &&
749
828
  !isEqual(this.conversationUrl, info.conversationUrl)
@@ -758,18 +837,39 @@ export default class LocusInfo extends EventsScope {
758
837
  * @returns {undefined}
759
838
  * @memberof LocusInfo
760
839
  */
761
- updateCreated(created) {
840
+ updateCreated(created: object) {
762
841
  if (created && !isEqual(this.created, created)) {
763
842
  this.created = created;
764
843
  }
765
844
  }
766
845
 
846
+ /**
847
+ * @param {Object} services
848
+ * @returns {undefined}
849
+ * @memberof LocusInfo
850
+ */
851
+ updateServices(services: Record<'breakout' | 'record', {url: string}>) {
852
+ if (services && !isEqual(this.services, services)) {
853
+ this.services = services;
854
+ this.emitScoped(
855
+ {
856
+ file: 'locus-info',
857
+ function: 'updateServices',
858
+ },
859
+ LOCUSINFO.EVENTS.LINKS_SERVICES,
860
+ {
861
+ services,
862
+ }
863
+ );
864
+ }
865
+ }
866
+
767
867
  /**
768
868
  * @param {Object} fullState
769
869
  * @returns {undefined}
770
870
  * @memberof LocusInfo
771
871
  */
772
- updateFullState(fullState) {
872
+ updateFullState(fullState: object) {
773
873
  if (fullState && !isEqual(this.fullState, fullState)) {
774
874
  const result = FullState.getFullState(this.fullState, fullState);
775
875
 
@@ -813,7 +913,7 @@ export default class LocusInfo extends EventsScope {
813
913
  * @memberof LocusInfo
814
914
  * emits internal event locus_info_update_host
815
915
  */
816
- updateHostInfo(host) {
916
+ updateHostInfo(host: object) {
817
917
  if (host && !isEqual(this.host, host)) {
818
918
  const parsedHosts = HostUtils.getHosts(this.host, host);
819
919
 
@@ -834,8 +934,7 @@ export default class LocusInfo extends EventsScope {
834
934
  );
835
935
  }
836
936
  this.host = host;
837
- }
838
- else {
937
+ } else {
839
938
  this.compareAndUpdateFlags.compareSelfAndHost = false;
840
939
  }
841
940
  }
@@ -846,7 +945,7 @@ export default class LocusInfo extends EventsScope {
846
945
  * @returns {undefined}
847
946
  * @memberof LocusInfo
848
947
  */
849
- updateMeetingInfo(info, self) {
948
+ updateMeetingInfo(info: object, self?: object) {
850
949
  if (info && !isEqual(this.info, info)) {
851
950
  const roles = self ? SelfUtils.getRoles(self) : this.parsedLocus.self?.roles || [];
852
951
  const isJoined = SelfUtils.isJoined(self || this.parsedLocus.self);
@@ -894,7 +993,7 @@ export default class LocusInfo extends EventsScope {
894
993
  * @returns {undefined}
895
994
  * @memberof LocusInfo
896
995
  */
897
- updateEmbeddedApps(embeddedApps) {
996
+ updateEmbeddedApps(embeddedApps: object) {
898
997
  // don't do anything if the arrays of apps haven't changed significantly
899
998
  if (EmbeddedAppsUtils.areSimilar(this.embeddedApps, embeddedApps)) {
900
999
  return;
@@ -922,11 +1021,13 @@ export default class LocusInfo extends EventsScope {
922
1021
  * @memberof LocusInfo
923
1022
  * emits internal event locus_info_update_media_shares
924
1023
  */
925
- updateMediaShares(mediaShares) {
1024
+ updateMediaShares(mediaShares: object) {
926
1025
  if (mediaShares && !isEqual(this.mediaShares, mediaShares)) {
927
1026
  const parsedMediaShares = MediaSharesUtils.getMediaShares(this.mediaShares, mediaShares);
928
1027
 
929
1028
  this.updateMeeting(parsedMediaShares.current);
1029
+ this.parsedLocus.mediaShares = parsedMediaShares.current;
1030
+ this.mediaShares = mediaShares;
930
1031
  this.emitScoped(
931
1032
  {
932
1033
  file: 'locus-info',
@@ -938,8 +1039,6 @@ export default class LocusInfo extends EventsScope {
938
1039
  previous: parsedMediaShares.previous,
939
1040
  }
940
1041
  );
941
- this.parsedLocus.mediaShares = parsedMediaShares.current;
942
- this.mediaShares = mediaShares;
943
1042
  }
944
1043
  }
945
1044
 
@@ -948,7 +1047,7 @@ export default class LocusInfo extends EventsScope {
948
1047
  * @returns {undefined}
949
1048
  * @memberof LocusInfo
950
1049
  */
951
- updateParticipantsUrl(participantsUrl) {
1050
+ updateParticipantsUrl(participantsUrl: string) {
952
1051
  if (participantsUrl && !isEqual(this.participantsUrl, participantsUrl)) {
953
1052
  this.participantsUrl = participantsUrl;
954
1053
  }
@@ -959,7 +1058,7 @@ export default class LocusInfo extends EventsScope {
959
1058
  * @returns {undefined}
960
1059
  * @memberof LocusInfo
961
1060
  */
962
- updateReplace(replace) {
1061
+ updateReplace(replace: object) {
963
1062
  if (replace && !isEqual(this.replace, replace)) {
964
1063
  this.replace = replace;
965
1064
  }
@@ -973,8 +1072,10 @@ export default class LocusInfo extends EventsScope {
973
1072
  * @memberof LocusInfo
974
1073
  * emits internal events self_admitted_guest, self_unadmitted_guest, locus_info_update_self
975
1074
  */
976
- updateSelf(self, participants) {
1075
+ updateSelf(self: any, participants: Array<any>) {
1076
+ // @ts-ignore - check where this.self come from
977
1077
  if (self && !isEqual(this.self, self)) {
1078
+ // @ts-ignore
978
1079
  const parsedSelves = SelfUtils.getSelves(this.self, self, this.webex.internal.device.url);
979
1080
 
980
1081
  this.updateMeeting(parsedSelves.current);
@@ -1000,8 +1101,7 @@ export default class LocusInfo extends EventsScope {
1000
1101
 
1001
1102
  if (parsedSelves.updates.moderatorChanged) {
1002
1103
  this.compareAndUpdateFlags.compareHostAndSelf = true;
1003
- }
1004
- else {
1104
+ } else {
1005
1105
  this.compareAndUpdateFlags.compareHostAndSelf = false;
1006
1106
  }
1007
1107
 
@@ -1016,6 +1116,17 @@ export default class LocusInfo extends EventsScope {
1016
1116
  );
1017
1117
  }
1018
1118
 
1119
+ if (parsedSelves.updates.breakoutsChanged) {
1120
+ this.emitScoped(
1121
+ {
1122
+ file: 'locus-info',
1123
+ function: 'updateSelf',
1124
+ },
1125
+ LOCUSINFO.EVENTS.SELF_MEETING_BREAKOUTS_CHANGED,
1126
+ {breakoutSessions: parsedSelves.current.breakoutSessions}
1127
+ );
1128
+ }
1129
+
1019
1130
  if (parsedSelves.updates.isMediaInactiveOrReleased) {
1020
1131
  this.emitScoped(
1021
1132
  {
@@ -1037,6 +1148,19 @@ export default class LocusInfo extends EventsScope {
1037
1148
  self
1038
1149
  );
1039
1150
  }
1151
+ if (parsedSelves.updates.isVideoMutedByOthersChanged) {
1152
+ this.emitScoped(
1153
+ {
1154
+ file: 'locus-info',
1155
+ function: 'updateSelf',
1156
+ },
1157
+ LOCUSINFO.EVENTS.SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED,
1158
+ {
1159
+ muted: parsedSelves.current.remoteVideoMuted,
1160
+ // unmuteAllowed: not part of .self
1161
+ }
1162
+ );
1163
+ }
1040
1164
  if (parsedSelves.updates.localAudioUnmuteRequiredByServer) {
1041
1165
  this.emitScoped(
1042
1166
  {
@@ -1100,6 +1224,7 @@ export default class LocusInfo extends EventsScope {
1100
1224
  file: 'locus-info',
1101
1225
  function: 'updateSelf',
1102
1226
  },
1227
+ // @ts-ignore
1103
1228
  LOCUSINFO.EVENTS.MEDIA_INACTIVITY,
1104
1229
  SelfUtils.getMediaStatus(self.mediaSessions)
1105
1230
  );
@@ -1168,9 +1293,9 @@ export default class LocusInfo extends EventsScope {
1168
1293
  }
1169
1294
  );
1170
1295
  this.parsedLocus.self = parsedSelves.current;
1296
+ // @ts-ignore
1171
1297
  this.self = self;
1172
- }
1173
- else {
1298
+ } else {
1174
1299
  this.compareAndUpdateFlags.compareHostAndSelf = false;
1175
1300
  }
1176
1301
  }
@@ -1181,7 +1306,7 @@ export default class LocusInfo extends EventsScope {
1181
1306
  * @returns {undefined}
1182
1307
  * emits internal event locus_info_update_url
1183
1308
  */
1184
- updateLocusUrl(url) {
1309
+ updateLocusUrl(url: string) {
1185
1310
  if (url && this.url !== url) {
1186
1311
  this.url = url;
1187
1312
  this.updateMeeting({locusUrl: url});
@@ -1201,7 +1326,7 @@ export default class LocusInfo extends EventsScope {
1201
1326
  * @returns {undefined}
1202
1327
  * @memberof LocusInfo
1203
1328
  */
1204
- updateAclUrl(aclUrl) {
1329
+ updateAclUrl(aclUrl: string) {
1205
1330
  if (aclUrl && !isEqual(this.aclUrl, aclUrl)) {
1206
1331
  this.aclUrl = aclUrl;
1207
1332
  }
@@ -1212,7 +1337,7 @@ export default class LocusInfo extends EventsScope {
1212
1337
  * @returns {undefined}
1213
1338
  * @memberof LocusInfo
1214
1339
  */
1215
- updateBasequence(baseSequence) {
1340
+ updateBasequence(baseSequence: number) {
1216
1341
  if (baseSequence && !isEqual(this.baseSequence, baseSequence)) {
1217
1342
  this.baseSequence = baseSequence;
1218
1343
  }
@@ -1223,7 +1348,7 @@ export default class LocusInfo extends EventsScope {
1223
1348
  * @returns {undefined}
1224
1349
  * @memberof LocusInfo
1225
1350
  */
1226
- updateSequence(sequence) {
1351
+ updateSequence(sequence: number) {
1227
1352
  if (sequence && !isEqual(this.sequence, sequence)) {
1228
1353
  this.sequence = sequence;
1229
1354
  }
@@ -1234,7 +1359,7 @@ export default class LocusInfo extends EventsScope {
1234
1359
  * @returns {undefined}
1235
1360
  * @memberof LocusInfo
1236
1361
  */
1237
- updateMemberShip(membership) {
1362
+ updateMemberShip(membership: object) {
1238
1363
  if (membership && !isEqual(this.membership, membership)) {
1239
1364
  this.membership = membership;
1240
1365
  }
@@ -1245,7 +1370,7 @@ export default class LocusInfo extends EventsScope {
1245
1370
  * @returns {undefined}
1246
1371
  * @memberof LocusInfo
1247
1372
  */
1248
- updateIdentifiers(identities) {
1373
+ updateIdentifiers(identities: Array<any>) {
1249
1374
  if (identities && !isEqual(this.identities, identities)) {
1250
1375
  this.identities = identities;
1251
1376
  }