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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -0,0 +1,44 @@
1
+ /* eslint-disable no-unused-vars */
2
+ import LoggerConfig from './logger-config';
3
+
4
+ const LoggerProxy: any = {
5
+ logger: {
6
+ info: (args) => {
7
+ console.error('LoggerProxy->info#NO LOGGER DEFINED');
8
+ },
9
+ log: (args) => {
10
+ console.error('LoggerProxy->log#NO LOGGER DEFINED');
11
+ },
12
+ error: (args) => {
13
+ console.error('LoggerProxy->error#NO LOGGER DEFINED');
14
+ },
15
+ warn: (args) => {
16
+ console.error('LoggerProxy->warn#NO LOGGER DEFINED');
17
+ },
18
+ trace: (args) => {
19
+ console.error('LoggerProxy->trace#NO LOGGER DEFINED');
20
+ },
21
+ debug: (args) => {
22
+ console.error('LoggerProxy->debug#NO LOGGER DEFINED');
23
+ },
24
+ },
25
+ };
26
+
27
+ LoggerProxy.set = (logger) => {
28
+ if (!LoggerConfig.enable) {
29
+ LoggerProxy.logger = {
30
+ info: () => {},
31
+ log: () => {},
32
+ error: () => {},
33
+ warn: () => {},
34
+ trace: () => {},
35
+ debug: () => {},
36
+ };
37
+ } else {
38
+ LoggerProxy.logger = logger;
39
+ }
40
+ };
41
+
42
+ LoggerProxy.get = () => LoggerProxy.logger;
43
+
44
+ export default LoggerProxy;
@@ -6,13 +6,15 @@ import LoggerProxy from './logger-proxy';
6
6
  * @class LogsRequest
7
7
  */
8
8
  export default class LogsRequest {
9
+ webex: any;
10
+
9
11
  /**
10
12
  *
11
13
  * @param {Object} options
12
14
  * @param {Object} options.webex Webex SDK instance
13
15
  * @param {ClientMetrics} metrics
14
16
  */
15
- constructor(options) {
17
+ constructor(options: {webex: object}) {
16
18
  this.webex = options.webex;
17
19
  }
18
20
 
@@ -28,20 +30,31 @@ export default class LogsRequest {
28
30
  * @returns {Promise.<String>} Feedback ID
29
31
  * @memberof LogsRequest
30
32
  */
31
- async uploadLogs(options = {}) {
33
+ async uploadLogs(
34
+ options: {
35
+ feedbackId?: string;
36
+ locusId?: string;
37
+ correlationId?: string;
38
+ callStart?: string;
39
+ meetingId?: string;
40
+ } = {}
41
+ ) {
32
42
  const id = options.feedbackId || uuid.v4();
33
- const {
34
- locusId, correlationId, meetingId, callStart
35
- } = options;
43
+ const {locusId, correlationId, meetingId, callStart} = options;
36
44
 
37
- LoggerProxy.logger.info(`Logs:request#uploadLogs --> uploading user logs for feedbackId: ${id}`);
45
+ LoggerProxy.logger.info(
46
+ `Logs:request#uploadLogs --> uploading user logs for feedbackId: ${id}`
47
+ );
38
48
 
39
49
  try {
40
50
  await this.webex.internal.support.submitLogs({
41
- feedbackId: id, locusId, correlationId, meetingId, callStart
51
+ feedbackId: id,
52
+ locusId,
53
+ correlationId,
54
+ meetingId,
55
+ callStart,
42
56
  });
43
- }
44
- catch (error) {
57
+ } catch (error) {
45
58
  LoggerProxy.logger.error('Logs:request#uploadLogs --> uploading user logs failed', error);
46
59
 
47
60
  return Promise.reject(error);
@@ -23,7 +23,7 @@ export default class SimpleQueue {
23
23
  * @param {object} item
24
24
  * @returns {undefined}
25
25
  */
26
- enqueue(item) {
26
+ enqueue(item: object) {
27
27
  this.queue.push(item);
28
28
  }
29
29
 
@@ -48,4 +48,3 @@ export default class SimpleQueue {
48
48
  return this.queue.length;
49
49
  }
50
50
  }
51
-
@@ -1,5 +1,6 @@
1
1
  import {
2
- deviceType
2
+ // @ts-ignore
3
+ deviceType,
3
4
  } from '@webex/common';
4
5
 
5
6
  export default {
@@ -15,7 +16,7 @@ export default {
15
16
  receiveVideo: true,
16
17
  pstn: false,
17
18
  sendShare: false,
18
- receiveShare: false
19
+ receiveShare: false,
19
20
  },
20
21
  reconnection: {
21
22
  enabled: false,
@@ -24,7 +25,7 @@ export default {
24
25
  // Timeout duration to wait for ICE to reconnect if a disconnect is received.
25
26
  iceReconnectionTimeout: 10000,
26
27
  // Amount of times attempting to rejoin a meeting during reconnect
27
- maxRejoinAttempts: 3
28
+ maxRejoinAttempts: 3,
28
29
  },
29
30
  stats: {
30
31
  // Enable the webrtc stats analyzer that emits quality degradation events
@@ -40,7 +41,7 @@ export default {
40
41
  // Once packet loss hits this ratio, the video will downgrade
41
42
  videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received
42
43
  rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
43
- jitterThreshold: 500 // 500 ms noticeable quality lag begins based on bandwidth of user
44
+ jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
44
45
  },
45
46
  metrics: {
46
47
  // change to your client name else data will be muddled
@@ -54,30 +55,30 @@ export default {
54
55
  mqaMetricsInterval: 60000,
55
56
  // send to cisco internal MQA data automatically
56
57
  // we already send CA
57
- autoSendMQA: true
58
+ autoSendMQA: true,
58
59
  },
59
60
  logging: {
60
61
  enable: true,
61
- verboseEvents: true
62
+ verboseEvents: true,
62
63
  },
63
64
  resolution: {
64
65
  maxWidth: 1280,
65
66
  maxHeight: 720,
66
67
  idealWidth: 1280,
67
- idealHeight: 720
68
+ idealHeight: 720,
68
69
  },
69
70
  screenResolution: {
70
71
  maxWidth: 1920,
71
72
  maxHeight: 1080,
72
73
  idealWidth: 1920,
73
- idealHeight: 1080
74
+ idealHeight: 1080,
74
75
  },
75
76
  bandwidth: {
76
77
  // please note, these are the maximum bandwidth values
77
78
  // the server supports, minimums have to be tested
78
79
  audio: 64000,
79
80
  video: 4000000,
80
- startBitrate: 2000
81
+ startBitrate: 2000,
81
82
  },
82
83
  screenFrameRate: 10,
83
84
  videoShareFrameRate: 30,
@@ -87,11 +88,15 @@ export default {
87
88
  enableRtx: true,
88
89
  receiveTranscription: false,
89
90
  enableExtmap: false,
91
+ enableAutomaticLLM: false,
90
92
  experimental: {
91
93
  enableMediaNegotiatedEvent: false,
92
94
  enableUnifiedMeetings: false,
93
95
  enableAdhocMeetings: false,
94
- enableTurnDiscovery: false,
95
- }
96
- }
96
+ enableTurnDiscovery: true,
97
+ },
98
+ degradationPreferences: {
99
+ maxMacroblocksLimit: 8192,
100
+ },
101
+ },
97
102
  };
package/src/constants.ts CHANGED
@@ -1,3 +1,4 @@
1
+ // @ts-ignore
1
2
  import {hydraTypes} from '@webex/common';
2
3
 
3
4
  // *********** LOWERCASE / CAMELCASE STRINGS ************
@@ -10,6 +11,7 @@ export const ANSWER = 'answer';
10
11
 
11
12
  export const CALL = 'call';
12
13
  export const CORRELATION_ID = 'correlationId';
14
+ export const MEETINGNUMBER = 'meetingNumber';
13
15
  export const CONVERSATION_URL = 'conversationUrl';
14
16
  export const CALENDAR = 'calendar';
15
17
  export const CALENDAR_EVENTS_API = 'calendarEvents';
@@ -92,6 +94,7 @@ export const _JOINED_ = 'JOINED';
92
94
 
93
95
  export const _LOCUS_ID_ = 'LOCUS_ID';
94
96
  export const _LEFT_ = 'LEFT';
97
+ export const _MOVED_ = 'MOVED';
95
98
 
96
99
  export const _MEETING_LINK_ = 'MEETING_LINK';
97
100
  export const _MEETING_UUID_ = 'MEETING_UUID';
@@ -287,6 +290,7 @@ export const EVENT_TRIGGERS = {
287
290
  MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',
288
291
  MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
289
292
  MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
293
+ MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',
290
294
  MEETING_PAUSED_RECORDING: 'meeting:recording:paused',
291
295
  MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',
292
296
  MEETING_ADDED: 'meeting:added',
@@ -295,6 +299,8 @@ export const EVENT_TRIGGERS = {
295
299
  MEETING_RINGING_STOP: 'meeting:ringingStop',
296
300
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
297
301
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
302
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
303
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
298
304
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
299
305
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
300
306
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
@@ -303,7 +309,11 @@ export const EVENT_TRIGGERS = {
303
309
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
304
310
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
305
311
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
312
+ MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
313
+ MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
314
+ MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
306
315
  MEMBERS_UPDATE: 'members:update',
316
+ MEMBERS_CLEAR: 'members:clear',
307
317
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
308
318
  MEMBERS_HOST_UPDATE: 'members:host:update',
309
319
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -330,7 +340,7 @@ export const EVENT_TRIGGERS = {
330
340
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
331
341
  REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
332
342
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
333
- REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScrenShareAudio:created',
343
+ REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
334
344
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
335
345
  };
336
346
 
@@ -372,6 +382,7 @@ export const CALL_REMOVED_REASON = {
372
382
  export const SHARE_STOPPED_REASON = {
373
383
  SELF_STOPPED: 'SELF_STOPPED',
374
384
  MEETING_REJOIN: 'MEETING_REJOIN',
385
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
375
386
  };
376
387
 
377
388
  export const EVENTS = {
@@ -447,6 +458,11 @@ export const ERROR_DICTIONARY = {
447
458
  MESSAGE: 'Captcha is required.',
448
459
  CODE: 8,
449
460
  },
461
+ BREAKOUT_EDIT: {
462
+ NAME: 'BreakoutEditLockedError',
463
+ MESSAGE: 'Edit lock token mismatch',
464
+ CODE: 9,
465
+ },
450
466
  };
451
467
 
452
468
  export const FLOOR_ACTION = {
@@ -468,6 +484,7 @@ export const HTTP_VERBS = {
468
484
  POST: 'POST',
469
485
  GET: 'GET',
470
486
  PATCH: 'PATCH',
487
+ DELETE: 'DELETE',
471
488
  };
472
489
 
473
490
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -513,15 +530,59 @@ export const LOCUS = {
513
530
  SYNCDEBUG: 'sync_debug',
514
531
  };
515
532
 
533
+ export const BREAKOUTS = {
534
+ STATUS: {
535
+ CLOSING: 'CLOSING',
536
+ CLOSED: 'CLOSED',
537
+ PENDING: 'PENDING',
538
+ OPEN: 'OPEN',
539
+ },
540
+ EVENTS: {
541
+ BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
542
+ MESSAGE: 'MESSAGE',
543
+ MEMBERS_UPDATE: 'MEMBERS_UPDATE',
544
+ },
545
+ SESSION_TYPES: {
546
+ MAIN: 'MAIN',
547
+ BREAKOUT: 'BREAKOUT',
548
+ },
549
+ SESSION_STATES: {
550
+ ACTIVE: 'active',
551
+ ASSIGNED: 'assigned',
552
+ ALLOWED: 'allowed',
553
+ ASSIGNED_CURRENT: 'assignedCurrent',
554
+ REQUESTED: 'requested',
555
+ },
556
+ BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
557
+ ACTION: {
558
+ START: 'START',
559
+ CLOSE: 'CLOSE',
560
+ DELETE: 'DELETE',
561
+ },
562
+ ERROR_CODE: {
563
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
564
+ EDIT_NOT_AUTHORIZED: 201403007,
565
+ },
566
+ DEFAULT_DURATION: 60000,
567
+ EDIT_LOCK_STATUS: {
568
+ LOCKED: 'LOCKED',
569
+ NOT_LOCKED: 'NOT_LOCKED',
570
+ UNKNOWN: 'UNKNOWN',
571
+ },
572
+ DEFAULT_TTL: 30,
573
+ };
574
+
516
575
  export const LOCUSINFO = {
517
576
  EVENTS: {
518
577
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
519
578
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
520
579
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
580
+ CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
521
581
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
522
582
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
523
583
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
524
584
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
585
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
525
586
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
526
587
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
527
588
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
@@ -539,6 +600,10 @@ export const LOCUSINFO = {
539
600
  EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
540
601
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
541
602
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
603
+ SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
604
+ MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
605
+ LINKS_SERVICES: 'LINKS_SERVICES',
606
+ SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
542
607
  },
543
608
  };
544
609
 
@@ -551,6 +616,9 @@ export const LOCUSEVENT = {
551
616
  // delta events
552
617
  DIFFERENCE: 'locus.difference',
553
618
 
619
+ // Breakout sessions
620
+ BREAKOUT_ROSTER: 'breakout.roster',
621
+
554
622
  // screen sharing
555
623
  FLOOR_GRANTED: 'locus.floor_granted',
556
624
  FLOOR_RELEASED: 'locus.floor_released',
@@ -721,13 +789,33 @@ export const DISPLAY_HINTS = {
721
789
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
722
790
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
723
791
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
792
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
724
793
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
725
794
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
795
+ ENABLE_REACTIONS: 'ENABLE_REACTIONS',
796
+ DISABLE_REACTIONS: 'DISABLE_REACTIONS',
797
+ REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
798
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
799
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
800
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
801
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
802
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
803
+ MUTE_ALL: 'MUTE_ALL',
804
+ UNMUTE_ALL: 'UNMUTE_ALL',
805
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
806
+
807
+ // breakout session
808
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
809
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
810
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
811
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
812
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
726
813
  };
727
814
 
728
815
  export const SELF_ROLES = {
729
816
  COHOST: 'COHOST',
730
817
  MODERATOR: 'MODERATOR',
818
+ ATTENDEE: 'ATTENDEE',
731
819
  };
732
820
 
733
821
  export const MEETING_STATE = {
@@ -812,7 +900,9 @@ export const RESOURCE = {
812
900
  };
813
901
 
814
902
  export const REACHABILITY = {
815
- localStorage: 'reachability.result',
903
+ localStorageResult: 'reachability.result',
904
+ localStorageJoinCookie: 'reachability.joinCookie',
905
+ namespace: 'Reachability',
816
906
  };
817
907
 
818
908
  export const ROAP = {
@@ -847,9 +937,6 @@ export const NETWORK_TYPE = {
847
937
  };
848
938
 
849
939
  export const STATS = {
850
- AUDIO_CORRELATE: 'audio',
851
- VIDEO_CORRELATE: 'video',
852
- SHARE_CORRELATE: 'share',
853
940
  SEND_DIRECTION: 'send',
854
941
  RECEIVE_DIRECTION: 'recv',
855
942
  REMOTE: 'remote',
@@ -0,0 +1,5 @@
1
+ const ENABLED = 'enabled';
2
+ const CAN_SET = 'canSet';
3
+ const CAN_UNSET = 'canUnset';
4
+
5
+ export {ENABLED, CAN_SET, CAN_UNSET};
@@ -0,0 +1,7 @@
1
+ enum Setting {
2
+ disallowUnmute = 'DisallowUnmute',
3
+ muteOnEntry = 'MuteOnEntry',
4
+ muted = 'Muted',
5
+ }
6
+
7
+ export default Setting;
@@ -0,0 +1,240 @@
1
+ import {camelCase} from 'lodash';
2
+ import PermissionError from '../common/errors/permission';
3
+ import {CONTROLS, HTTP_VERBS} from '../constants';
4
+ import MeetingRequest from '../meeting/request';
5
+ import LoggerProxy from '../common/logs/logger-proxy';
6
+ import Setting from './enums';
7
+ import Util from './util';
8
+ import {CAN_SET, CAN_UNSET, ENABLED} from './constants';
9
+
10
+ /**
11
+ * docs
12
+ * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html
13
+ * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry
14
+ * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting
15
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867
16
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351
17
+ */
18
+
19
+ /**
20
+ * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting
21
+ * @export
22
+ * @private
23
+ * @class Recording
24
+ */
25
+ export default class ControlsOptionsManager {
26
+ /**
27
+ * @instance
28
+ * @type {MeetingRequest}
29
+ * @private
30
+ * @memberof ControlsOptionsManager
31
+ */
32
+ private request: MeetingRequest;
33
+
34
+ /**
35
+ * @instance
36
+ * @type {Array}
37
+ * @private
38
+ * @memberof ControlsOptionsManager
39
+ */
40
+ private displayHints: Array<string> = [];
41
+
42
+ /**
43
+ * @instance
44
+ * @type {string}
45
+ * @private
46
+ * @memberof ControlsOptionsManager
47
+ */
48
+ private locusUrl: string;
49
+
50
+ /**
51
+ * @param {MeetingRequest} request
52
+ * @param {Object} options
53
+ * @constructor
54
+ * @memberof ControlsOptionsManager
55
+ */
56
+ constructor(
57
+ request: MeetingRequest,
58
+ options?: {
59
+ locusUrl: string;
60
+ displayHints?: Array<string>;
61
+ }
62
+ ) {
63
+ this.initialize(request);
64
+ this.set(options);
65
+ }
66
+
67
+ /**
68
+ * @param {MeetingRequest} request
69
+ * @returns {void}
70
+ * @private
71
+ * @memberof ControlsOptionsManager
72
+ */
73
+ private initialize(request: MeetingRequest) {
74
+ this.request = request;
75
+ }
76
+
77
+ /**
78
+ * @param {Object} options
79
+ * @returns {void}
80
+ * @public
81
+ * @memberof ControlsOptionsManager
82
+ */
83
+ public set(options?: {locusUrl: string; displayHints?: Array<string>}) {
84
+ this.extract(options);
85
+ }
86
+
87
+ /**
88
+ * @param {string} url
89
+ * @returns {void}
90
+ * @public
91
+ * @memberof ControlsOptionsManager
92
+ */
93
+ public setLocusUrl(url: string) {
94
+ this.locusUrl = url;
95
+ }
96
+
97
+ /**
98
+ * @param {Array} hints
99
+ * @returns {void}
100
+ * @public
101
+ * @memberof ControlsOptionsManager
102
+ */
103
+ public setDisplayHints(hints: Array<string>) {
104
+ this.displayHints = hints;
105
+ }
106
+
107
+ /**
108
+ * @returns {string}
109
+ * @public
110
+ * @memberof ControlsOptionsManager
111
+ */
112
+ public getLocusUrl() {
113
+ return this.locusUrl;
114
+ }
115
+
116
+ /**
117
+ * @returns {Array}
118
+ * @public
119
+ * @memberof ControlsOptionsManager
120
+ */
121
+ public getDisplayHints() {
122
+ return this.displayHints;
123
+ }
124
+
125
+ /**
126
+ * @param {Object} options
127
+ * @returns {void}
128
+ * @private
129
+ * @memberof ControlsOptionsManager
130
+ */
131
+ private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {
132
+ this.setDisplayHints(options?.displayHints);
133
+ this.setLocusUrl(options?.locusUrl);
134
+ }
135
+
136
+ /**
137
+ * @param {Setting} setting
138
+ * @private
139
+ * @memberof ControlsOptionsManager
140
+ * @returns {Promise}
141
+ */
142
+ private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
143
+ LoggerProxy.logger.log(
144
+ `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
145
+ );
146
+
147
+ const body: Record<string, any> = {};
148
+ let error: PermissionError;
149
+
150
+ let shouldSkipCheckToMergeBody = false;
151
+
152
+ Object.entries(setting).forEach(([key, value]) => {
153
+ if (
154
+ !shouldSkipCheckToMergeBody &&
155
+ !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
156
+ ) {
157
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
158
+ }
159
+
160
+ if (error) {
161
+ return;
162
+ }
163
+
164
+ switch (key) {
165
+ case Setting.muted:
166
+ shouldSkipCheckToMergeBody = true;
167
+ body.audio = body.audio
168
+ ? {...body.audio, [camelCase(key)]: value}
169
+ : {[camelCase(key)]: value};
170
+ break;
171
+
172
+ case Setting.disallowUnmute:
173
+ case Setting.muteOnEntry:
174
+ if (Object.keys(setting).includes(Setting.muted)) {
175
+ body.audio = body.audio
176
+ ? {...body.audio, [camelCase(key)]: value}
177
+ : {[camelCase(key)]: value};
178
+ body.audio[camelCase(key)] = value;
179
+ } else {
180
+ body[camelCase(key)] = {[ENABLED]: value};
181
+ }
182
+ break;
183
+
184
+ default:
185
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
186
+ }
187
+ });
188
+
189
+ if (error) {
190
+ return Promise.reject(error);
191
+ }
192
+
193
+ // @ts-ignore
194
+ return this.request.request({
195
+ uri: `${this.locusUrl}/${CONTROLS}`,
196
+ body,
197
+ method: HTTP_VERBS.PATCH,
198
+ });
199
+ }
200
+
201
+ /**
202
+ * @public
203
+ * @param {boolean} enabled
204
+ * @memberof ControlsOptionsManager
205
+ * @returns {Promise}
206
+ */
207
+ public setMuteOnEntry(enabled: boolean): Promise<any> {
208
+ return this.setControls({[Setting.muteOnEntry]: enabled});
209
+ }
210
+
211
+ /**
212
+ * @public
213
+ * @param {boolean} enabled
214
+ * @memberof ControlsOptionsManager
215
+ * @returns {Promise}
216
+ */
217
+ public setDisallowUnmute(enabled: boolean): Promise<any> {
218
+ return this.setControls({[Setting.disallowUnmute]: enabled});
219
+ }
220
+
221
+ /**
222
+ * @public
223
+ * @param {boolean} mutedEnabled
224
+ * @param {boolean} disallowUnmuteEnabled
225
+ * @param {boolean} muteOnEntryEnabled
226
+ * @memberof ControlsOptionsManager
227
+ * @returns {Promise}
228
+ */
229
+ public setMuteAll(
230
+ mutedEnabled: boolean,
231
+ disallowUnmuteEnabled: boolean,
232
+ muteOnEntryEnabled: boolean
233
+ ): Promise<any> {
234
+ return this.setControls({
235
+ [Setting.muted]: mutedEnabled,
236
+ [Setting.disallowUnmute]: disallowUnmuteEnabled,
237
+ [Setting.muteOnEntry]: muteOnEntryEnabled,
238
+ });
239
+ }
240
+ }