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

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 +555 -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 +130 -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 +511 -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 +147 -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 +707 -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
@@ -1,4 +1,6 @@
1
+ /* eslint-disable default-param-last */
1
2
 
3
+ import {isEqual} from 'lodash';
2
4
  import {
3
5
  _IDLE_,
4
6
  _JOINED_,
@@ -11,11 +13,11 @@ import {
11
13
  MEDIA_STATE,
12
14
  AUDIO,
13
15
  VIDEO,
14
- MediaContent
16
+ MediaContent,
15
17
  } from '../constants';
16
18
  import ParameterError from '../common/errors/parameter';
17
19
 
18
- const SelfUtils = {};
20
+ const SelfUtils: any = {};
19
21
  const PSTN_DEVICE_TYPE = 'PROVISIONAL';
20
22
 
21
23
  /**
@@ -24,12 +26,13 @@ const PSTN_DEVICE_TYPE = 'PROVISIONAL';
24
26
  * @param {String} deviceId
25
27
  * @returns {undefined}
26
28
  */
27
- SelfUtils.parse = (self, deviceId) => {
29
+ SelfUtils.parse = (self: any, deviceId: string) => {
28
30
  if (self) {
29
31
  const joinedWith = self.devices.find((device) => deviceId === device.url);
30
32
  const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);
31
33
 
32
34
  return {
35
+ remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),
33
36
  remoteMuted: SelfUtils.getRemoteMuted(self),
34
37
  unmuteAllowed: SelfUtils.getUnmuteAllowed(self),
35
38
  localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),
@@ -48,9 +51,7 @@ SelfUtils.parse = (self, deviceId) => {
48
51
  joinedWith,
49
52
  pstnDevices,
50
53
  // current media stats is for the current device who has joined
51
- currentMediaStatus: SelfUtils.getMediaStatus(
52
- joinedWith?.mediaSessions
53
- ),
54
+ currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),
54
55
  creator: self.isCreator, // check if its used,
55
56
  selfId: self.id,
56
57
  selfIdentity: SelfUtils.getSelfIdentity(self),
@@ -60,22 +61,27 @@ SelfUtils.parse = (self, deviceId) => {
60
61
  isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,
61
62
  layout: SelfUtils.getLayout(self),
62
63
  canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
63
- isSharingBlocked: SelfUtils.isSharingBlocked(self)
64
+ isSharingBlocked: SelfUtils.isSharingBlocked(self),
65
+ breakoutSessions: SelfUtils.getBreakouts(self),
64
66
  };
65
67
  }
66
68
 
67
69
  return null;
68
70
  };
69
71
 
70
- SelfUtils.getLayout = (self) => (Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined);
72
+ SelfUtils.getBreakouts = (self) => self?.controls?.breakout?.sessions;
71
73
 
72
- SelfUtils.getRoles = (self) => (self?.controls?.role?.roles || []).reduce((roles, role) => {
73
- if (role.hasRole) {
74
- roles.push(role.type);
75
- }
74
+ SelfUtils.getLayout = (self) =>
75
+ Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;
76
+
77
+ SelfUtils.getRoles = (self) =>
78
+ (self?.controls?.role?.roles || []).reduce((roles, role) => {
79
+ if (role.hasRole) {
80
+ roles.push(role.type);
81
+ }
76
82
 
77
- return roles;
78
- }, []);
83
+ return roles;
84
+ }, []);
79
85
 
80
86
  SelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;
81
87
 
@@ -84,30 +90,42 @@ SelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;
84
90
  SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
85
91
  const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);
86
92
  const current = newSelf && SelfUtils.parse(newSelf, deviceId);
87
- const updates = {};
93
+ const updates: any = {};
88
94
 
89
95
  updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
90
96
  updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
97
+ updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
91
98
  updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
92
- updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);
93
- updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
99
+ updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(
100
+ previous,
101
+ current
102
+ );
103
+ updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(
104
+ previous,
105
+ current
106
+ );
94
107
  updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
95
108
  updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
96
109
  updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
97
110
  updates.layoutChanged = SelfUtils.layoutChanged(previous, current);
98
111
 
99
112
  updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);
100
- updates.audioStateChange = previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;
101
- updates.videoStateChange = previous?.currentMediaStatus.video !== current.currentMediaStatus.video;
102
- updates.shareStateChange = previous?.currentMediaStatus.share !== current.currentMediaStatus.share;
103
-
104
- updates.canNotViewTheParticipantListChanged = previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;
113
+ updates.audioStateChange =
114
+ previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;
115
+ updates.videoStateChange =
116
+ previous?.currentMediaStatus.video !== current.currentMediaStatus.video;
117
+ updates.shareStateChange =
118
+ previous?.currentMediaStatus.share !== current.currentMediaStatus.share;
119
+
120
+ updates.canNotViewTheParticipantListChanged =
121
+ previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;
105
122
  updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;
123
+ updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
106
124
 
107
125
  return {
108
126
  previous,
109
127
  current,
110
- updates
128
+ updates,
111
129
  };
112
130
  };
113
131
 
@@ -115,8 +133,8 @@ SelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {
115
133
  * Checks if user has joined the meeting
116
134
  * @param {Object} self
117
135
  * @returns {boolean} isJoined
118
- */
119
- SelfUtils.isJoined = (self) => self?.state === _JOINED_;
136
+ */
137
+ SelfUtils.isJoined = (self: any) => self?.state === _JOINED_;
120
138
 
121
139
  /**
122
140
  * Validate if the Meeting Layout Controls Layout has changed.
@@ -125,8 +143,11 @@ SelfUtils.isJoined = (self) => self?.state === _JOINED_;
125
143
  * @param {Self} current - Current self state [per event]
126
144
  * @returns {boolean} - If the MEeting Layout Controls Layout has changed.
127
145
  */
128
- SelfUtils.layoutChanged = (previous, current) => current?.layout && previous?.layout !== current?.layout;
146
+ SelfUtils.layoutChanged = (previous: any, current: any) =>
147
+ current?.layout && previous?.layout !== current?.layout;
129
148
 
149
+ SelfUtils.breakoutsChanged = (previous, current) =>
150
+ !isEqual(previous?.breakoutSessions, current?.breakoutSessions);
130
151
 
131
152
  SelfUtils.isMediaInactive = (previous, current) => {
132
153
  if (
@@ -137,15 +158,12 @@ SelfUtils.isMediaInactive = (previous, current) => {
137
158
  current.joinedWith &&
138
159
  current.joinedWith.mediaSessions
139
160
  ) {
140
- const previousMediaStatus = SelfUtils.getMediaStatus(
141
- previous.joinedWith.mediaSessions
142
- );
143
- const currentMediaStatus = SelfUtils.getMediaStatus(
144
- current.joinedWith.mediaSessions
145
- );
161
+ const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);
162
+ const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);
146
163
 
147
164
  if (
148
- previousMediaStatus.audio && currentMediaStatus.audio &&
165
+ previousMediaStatus.audio &&
166
+ currentMediaStatus.audio &&
149
167
  previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&
150
168
  currentMediaStatus.audio.state === MEDIA_STATE.inactive &&
151
169
  currentMediaStatus.audio.direction !== MEDIA_STATE.inactive
@@ -154,7 +172,8 @@ SelfUtils.isMediaInactive = (previous, current) => {
154
172
  }
155
173
 
156
174
  if (
157
- previousMediaStatus.video && currentMediaStatus.video &&
175
+ previousMediaStatus.video &&
176
+ currentMediaStatus.video &&
158
177
  previousMediaStatus.video.state !== MEDIA_STATE.inactive &&
159
178
  currentMediaStatus.video.state === MEDIA_STATE.inactive &&
160
179
  currentMediaStatus.video.direction !== MEDIA_STATE.inactive
@@ -163,7 +182,8 @@ SelfUtils.isMediaInactive = (previous, current) => {
163
182
  }
164
183
 
165
184
  if (
166
- previousMediaStatus.share && currentMediaStatus.share &&
185
+ previousMediaStatus.share &&
186
+ currentMediaStatus.share &&
167
187
  previousMediaStatus.share.state !== MEDIA_STATE.inactive &&
168
188
  currentMediaStatus.share.state === MEDIA_STATE.inactive &&
169
189
  currentMediaStatus.share.direction !== MEDIA_STATE.inactive
@@ -178,7 +198,13 @@ SelfUtils.isMediaInactive = (previous, current) => {
178
198
  };
179
199
 
180
200
  SelfUtils.getLastModified = (self) => {
181
- if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.lastModified) {
201
+ if (
202
+ !self ||
203
+ !self.controls ||
204
+ !self.controls.audio ||
205
+ !self.controls.audio.meta ||
206
+ !self.controls.audio.meta.lastModified
207
+ ) {
182
208
  return null;
183
209
  }
184
210
 
@@ -186,7 +212,13 @@ SelfUtils.getLastModified = (self) => {
186
212
  };
187
213
 
188
214
  SelfUtils.getModifiedBy = (self) => {
189
- if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.modifiedBy) {
215
+ if (
216
+ !self ||
217
+ !self.controls ||
218
+ !self.controls.audio ||
219
+ !self.controls.audio.meta ||
220
+ !self.controls.audio.meta.modifiedBy
221
+ ) {
190
222
  return null;
191
223
  }
192
224
 
@@ -198,7 +230,7 @@ SelfUtils.getModifiedBy = (self) => {
198
230
  * @param {Object} self
199
231
  * @returns {String}
200
232
  */
201
- SelfUtils.getSelfIdentity = (self) => {
233
+ SelfUtils.getSelfIdentity = (self: any) => {
202
234
  if (!self && !self.person) {
203
235
  return null;
204
236
  }
@@ -206,12 +238,25 @@ SelfUtils.getSelfIdentity = (self) => {
206
238
  return self.person.id;
207
239
  };
208
240
 
241
+ /**
242
+ * get the "remote video mute" property from the self object
243
+ * @param {Object} self
244
+ * @returns {Boolean}
245
+ */
246
+ SelfUtils.getRemoteVideoMuted = (self: any) => {
247
+ if (!self || !self.controls || !self.controls.video) {
248
+ return null;
249
+ }
250
+
251
+ return self.controls.video.muted;
252
+ };
253
+
209
254
  /**
210
255
  * get the "remote mute" property from the self object
211
256
  * @param {Object} self
212
257
  * @returns {Boolean}
213
258
  */
214
- SelfUtils.getRemoteMuted = (self) => {
259
+ SelfUtils.getRemoteMuted = (self: any) => {
215
260
  if (!self || !self.controls || !self.controls.audio) {
216
261
  return null;
217
262
  }
@@ -229,43 +274,46 @@ SelfUtils.getUnmuteAllowed = (self) => {
229
274
  return !self.controls.audio.disallowUnmute;
230
275
  };
231
276
 
232
-
233
277
  SelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;
234
278
 
235
279
  SelfUtils.getStatus = (status) => ({
236
280
  audio: status.audioStatus,
237
281
  video: status.videoStatus,
238
- slides: status.videoSlidesStatus
282
+ slides: status.videoSlidesStatus,
239
283
  });
240
284
 
241
-
242
285
  /**
243
286
  * @param {Object} oldSelf
244
287
  * @param {Object} changedSelf
245
288
  * @returns {Boolean}
246
289
  */
247
- SelfUtils.wasMediaInactiveOrReleased = (oldSelf = {}, changedSelf) => oldSelf.joinedWith && oldSelf.joinedWith.state === _JOINED_ && changedSelf.joinedWith.state === _LEFT_ &&
248
- (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);
249
-
290
+ SelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>
291
+ oldSelf.joinedWith &&
292
+ oldSelf.joinedWith.state === _JOINED_ &&
293
+ changedSelf.joinedWith.state === _LEFT_ &&
294
+ (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||
295
+ changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);
250
296
 
251
297
  /**
252
298
  * @param {Object} check
253
299
  * @returns {Boolean}
254
300
  */
255
- SelfUtils.isLocusUserUnadmitted = (check) => check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;
301
+ SelfUtils.isLocusUserUnadmitted = (check: any) =>
302
+ check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;
256
303
 
257
304
  /**
258
305
  * @param {Object} check
259
306
  * @returns {Boolean}
260
307
  */
261
- SelfUtils.isLocusUserAdmitted = (check) => check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;
308
+ SelfUtils.isLocusUserAdmitted = (check: any) =>
309
+ check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;
262
310
 
263
311
  /**
264
312
  * @param {Object} self
265
313
  * @returns {Boolean}
266
314
  * @throws {Error} when self is undefined
267
315
  */
268
- SelfUtils.isUserUnadmitted = (self) => {
316
+ SelfUtils.isUserUnadmitted = (self: object) => {
269
317
  if (!self) {
270
318
  throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');
271
319
  }
@@ -278,20 +326,25 @@ SelfUtils.moderatorChanged = (oldSelf, changedSelf) => {
278
326
  return true;
279
327
  }
280
328
  if (!changedSelf) {
281
- throw new ParameterError('New self must be defined to determine if self transitioned moderator status.');
329
+ throw new ParameterError(
330
+ 'New self must be defined to determine if self transitioned moderator status.'
331
+ );
282
332
  }
283
333
 
284
334
  return oldSelf.moderator !== changedSelf.moderator;
285
335
  };
286
336
 
287
-
288
337
  /**
289
338
  * @param {Object} oldSelf
290
339
  * @param {Object} changedSelf
291
340
  * @returns {Boolean}
292
341
  * @throws {Error} if changed self was undefined
293
342
  */
294
- SelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ && changedSelf && changedSelf.joinedWith?.intent?.type === _OBSERVE_;
343
+ SelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>
344
+ oldSelf &&
345
+ oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&
346
+ changedSelf &&
347
+ changedSelf.joinedWith?.intent?.type === _OBSERVE_;
295
348
 
296
349
  /**
297
350
  * @param {Object} oldSelf
@@ -299,24 +352,45 @@ SelfUtils.isDeviceObserving = (oldSelf, changedSelf) => oldSelf && oldSelf.joine
299
352
  * @returns {Boolean}
300
353
  * @throws {Error} if changed self was undefined
301
354
  */
302
- SelfUtils.isUserAdmitted = (oldSelf, changedSelf) => {
355
+ SelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {
303
356
  if (!oldSelf) {
304
357
  // if there was no previous locus, it couldn't have been admitted yet
305
358
  return false;
306
359
  }
307
360
  if (!changedSelf) {
308
- throw new ParameterError('New self must be defined to determine if self transitioned to admitted as guest.');
361
+ throw new ParameterError(
362
+ 'New self must be defined to determine if self transitioned to admitted as guest.'
363
+ );
309
364
  }
310
365
 
311
366
  return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);
312
367
  };
313
368
 
369
+ SelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {
370
+ if (!changedSelf) {
371
+ throw new ParameterError(
372
+ 'New self must be defined to determine if self was video muted by others.'
373
+ );
374
+ }
375
+
376
+ if (!oldSelf || oldSelf.remoteVideoMuted === null) {
377
+ if (changedSelf.remoteVideoMuted) {
378
+ return true; // this happens when host disables "Allow start video"
379
+ }
380
+
381
+ // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join
382
+ return false;
383
+ }
384
+
385
+ return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;
386
+ };
387
+
314
388
  SelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {
315
389
  if (!changedSelf) {
316
390
  throw new ParameterError('New self must be defined to determine if self was muted by others.');
317
391
  }
318
392
 
319
- if (!oldSelf || (oldSelf.remoteMuted === null)) {
393
+ if (!oldSelf || oldSelf.remoteMuted === null) {
320
394
  if (changedSelf.remoteMuted) {
321
395
  return true; // this happens when mute on-entry is enabled
322
396
  }
@@ -325,25 +399,35 @@ SelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {
325
399
  return false;
326
400
  }
327
401
 
328
- return (changedSelf.remoteMuted !== null) &&
329
- ((oldSelf.remoteMuted !== changedSelf.remoteMuted) || (changedSelf.remoteMuted && (oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed)));
402
+ return (
403
+ changedSelf.remoteMuted !== null &&
404
+ (oldSelf.remoteMuted !== changedSelf.remoteMuted ||
405
+ (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))
406
+ );
330
407
  };
331
408
 
332
- SelfUtils.localAudioUnmuteRequestedByServer = (oldSelf = {}, changedSelf) => {
409
+ SelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {
333
410
  if (!changedSelf) {
334
- throw new ParameterError('New self must be defined to determine if self received request to unmute.');
411
+ throw new ParameterError(
412
+ 'New self must be defined to determine if self received request to unmute.'
413
+ );
335
414
  }
336
415
 
337
416
  return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;
338
417
  };
339
418
 
340
-
341
- SelfUtils.localAudioUnmuteRequiredByServer = (oldSelf = {}, changedSelf) => {
419
+ SelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {
342
420
  if (!changedSelf) {
343
- throw new ParameterError('New self must be defined to determine if localAudioUnmuteRequired changed.');
421
+ throw new ParameterError(
422
+ 'New self must be defined to determine if localAudioUnmuteRequired changed.'
423
+ );
344
424
  }
345
425
 
346
- return !changedSelf.remoteMuted && changedSelf.localAudioUnmuteRequired && (oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired);
426
+ return (
427
+ !changedSelf.remoteMuted &&
428
+ changedSelf.localAudioUnmuteRequired &&
429
+ oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired
430
+ );
347
431
  };
348
432
 
349
433
  /**
@@ -353,7 +437,7 @@ SelfUtils.localAudioUnmuteRequiredByServer = (oldSelf = {}, changedSelf) => {
353
437
  * @returns {Object}
354
438
  */
355
439
 
356
- SelfUtils.getSipUrl = (partner, type, sipUri) => {
440
+ SelfUtils.getSipUrl = (partner: any, type, sipUri) => {
357
441
  // For webex meeting the sipUrl gets updated in info parser
358
442
  if (partner && type === _CALL_) {
359
443
  return {sipUri: partner.person.sipUrl || partner.person.id};
@@ -366,15 +450,20 @@ SelfUtils.getMediaStatus = (mediaSessions = []) => {
366
450
  const mediaStatus = {
367
451
  audio: {},
368
452
  video: {},
369
- share: {}
453
+ share: {},
370
454
  };
371
455
 
372
- mediaStatus.audio = mediaSessions.find((media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main);
373
- mediaStatus.video = mediaSessions.find((media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main);
374
- mediaStatus.share = mediaSessions.find((media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides);
456
+ mediaStatus.audio = mediaSessions.find(
457
+ (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main
458
+ );
459
+ mediaStatus.video = mediaSessions.find(
460
+ (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main
461
+ );
462
+ mediaStatus.share = mediaSessions.find(
463
+ (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides
464
+ );
375
465
 
376
466
  return mediaStatus;
377
467
  };
378
468
 
379
-
380
469
  export default SelfUtils;