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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (498) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +137 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +579 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +48 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +122 -49
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +240 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +17 -30
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +220 -192
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +61 -90
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +25 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2205 -2211
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +60 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +490 -560
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +24 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +116 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +78 -86
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/util.js +31 -68
  138. package/dist/member/util.js.map +1 -1
  139. package/dist/members/collection.js +3 -12
  140. package/dist/members/collection.js.map +1 -1
  141. package/dist/members/index.js +110 -203
  142. package/dist/members/index.js.map +1 -1
  143. package/dist/members/request.js +16 -39
  144. package/dist/members/request.js.map +1 -1
  145. package/dist/members/util.js +42 -50
  146. package/dist/members/util.js.map +1 -1
  147. package/dist/metrics/config.js +1 -13
  148. package/dist/metrics/config.js.map +1 -1
  149. package/dist/metrics/constants.js +1 -6
  150. package/dist/metrics/constants.js.map +1 -1
  151. package/dist/metrics/index.js +54 -156
  152. package/dist/metrics/index.js.map +1 -1
  153. package/dist/multistream/mediaRequestManager.js +74 -52
  154. package/dist/multistream/mediaRequestManager.js.map +1 -1
  155. package/dist/multistream/receiveSlot.js +48 -65
  156. package/dist/multistream/receiveSlot.js.map +1 -1
  157. package/dist/multistream/receiveSlotManager.js +58 -93
  158. package/dist/multistream/receiveSlotManager.js.map +1 -1
  159. package/dist/multistream/remoteMedia.js +60 -76
  160. package/dist/multistream/remoteMedia.js.map +1 -1
  161. package/dist/multistream/remoteMediaGroup.js +6 -40
  162. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  163. package/dist/multistream/remoteMediaManager.js +446 -442
  164. package/dist/multistream/remoteMediaManager.js.map +1 -1
  165. package/dist/networkQualityMonitor/index.js +40 -59
  166. package/dist/networkQualityMonitor/index.js.map +1 -1
  167. package/dist/personal-meeting-room/index.js +21 -45
  168. package/dist/personal-meeting-room/index.js.map +1 -1
  169. package/dist/personal-meeting-room/request.js +1 -31
  170. package/dist/personal-meeting-room/request.js.map +1 -1
  171. package/dist/personal-meeting-room/util.js +0 -13
  172. package/dist/personal-meeting-room/util.js.map +1 -1
  173. package/dist/reachability/index.js +192 -191
  174. package/dist/reachability/index.js.map +1 -1
  175. package/dist/reachability/request.js +15 -23
  176. package/dist/reachability/request.js.map +1 -1
  177. package/dist/reactions/constants.js +13 -0
  178. package/dist/reactions/constants.js.map +1 -0
  179. package/dist/reactions/reactions.js +109 -0
  180. package/dist/reactions/reactions.js.map +1 -0
  181. package/dist/reactions/reactions.type.js +36 -0
  182. package/dist/reactions/reactions.type.js.map +1 -0
  183. package/dist/reconnection-manager/index.js +322 -456
  184. package/dist/reconnection-manager/index.js.map +1 -1
  185. package/dist/recording-controller/enums.js +17 -0
  186. package/dist/recording-controller/enums.js.map +1 -0
  187. package/dist/recording-controller/index.js +343 -0
  188. package/dist/recording-controller/index.js.map +1 -0
  189. package/dist/recording-controller/util.js +63 -0
  190. package/dist/recording-controller/util.js.map +1 -0
  191. package/dist/roap/index.js +48 -70
  192. package/dist/roap/index.js.map +1 -1
  193. package/dist/roap/request.js +143 -131
  194. package/dist/roap/request.js.map +1 -1
  195. package/dist/roap/turnDiscovery.js +91 -98
  196. package/dist/roap/turnDiscovery.js.map +1 -1
  197. package/dist/statsAnalyzer/global.js +1 -95
  198. package/dist/statsAnalyzer/global.js.map +1 -1
  199. package/dist/statsAnalyzer/index.js +372 -455
  200. package/dist/statsAnalyzer/index.js.map +1 -1
  201. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  202. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  203. package/dist/transcription/index.js +22 -47
  204. package/dist/transcription/index.js.map +1 -1
  205. package/dist/types/breakouts/breakout.d.ts +8 -0
  206. package/dist/types/breakouts/collection.d.ts +5 -0
  207. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  208. package/dist/types/breakouts/index.d.ts +5 -0
  209. package/dist/types/breakouts/request.d.ts +22 -0
  210. package/dist/types/breakouts/utils.d.ts +8 -0
  211. package/dist/types/common/browser-detection.d.ts +9 -0
  212. package/dist/types/common/collection.d.ts +48 -0
  213. package/dist/types/common/config.d.ts +2 -0
  214. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  215. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  216. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  217. package/dist/types/common/errors/media.d.ts +15 -0
  218. package/dist/types/common/errors/parameter.d.ts +15 -0
  219. package/dist/types/common/errors/password-error.d.ts +15 -0
  220. package/dist/types/common/errors/permission.d.ts +14 -0
  221. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  222. package/dist/types/common/errors/reconnection.d.ts +15 -0
  223. package/dist/types/common/errors/stats.d.ts +15 -0
  224. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  225. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  226. package/dist/types/common/events/events-scope.d.ts +17 -0
  227. package/dist/types/common/events/events.d.ts +12 -0
  228. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  229. package/dist/types/common/events/util.d.ts +2 -0
  230. package/dist/types/common/logs/logger-config.d.ts +2 -0
  231. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  232. package/dist/types/common/logs/request.d.ts +34 -0
  233. package/dist/types/common/queue.d.ts +32 -0
  234. package/dist/types/config.d.ts +77 -0
  235. package/dist/types/constants.d.ts +928 -0
  236. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  237. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  238. package/dist/types/controls-options-manager/index.d.ts +128 -0
  239. package/dist/types/controls-options-manager/util.d.ts +9 -0
  240. package/dist/types/index.d.ts +6 -0
  241. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  242. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  243. package/dist/types/locus-info/fullState.d.ts +2 -0
  244. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  245. package/dist/types/locus-info/index.d.ts +276 -0
  246. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  247. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  248. package/dist/types/locus-info/parser.d.ts +212 -0
  249. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  250. package/dist/types/media/index.d.ts +32 -0
  251. package/dist/types/media/properties.d.ts +108 -0
  252. package/dist/types/media/util.d.ts +2 -0
  253. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  254. package/dist/types/meeting/in-meeting-actions.d.ts +95 -0
  255. package/dist/types/meeting/index.d.ts +1719 -0
  256. package/dist/types/meeting/muteState.d.ts +132 -0
  257. package/dist/types/meeting/request.d.ts +271 -0
  258. package/dist/types/meeting/request.type.d.ts +11 -0
  259. package/dist/types/meeting/state.d.ts +9 -0
  260. package/dist/types/meeting/util.d.ts +2 -0
  261. package/dist/types/meeting-info/collection.d.ts +20 -0
  262. package/dist/types/meeting-info/index.d.ts +57 -0
  263. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  264. package/dist/types/meeting-info/request.d.ts +22 -0
  265. package/dist/types/meeting-info/util.d.ts +2 -0
  266. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  267. package/dist/types/meetings/collection.d.ts +23 -0
  268. package/dist/types/meetings/index.d.ts +297 -0
  269. package/dist/types/meetings/request.d.ts +27 -0
  270. package/dist/types/meetings/util.d.ts +18 -0
  271. package/dist/types/member/index.d.ts +146 -0
  272. package/dist/types/member/util.d.ts +2 -0
  273. package/dist/types/members/collection.d.ts +24 -0
  274. package/dist/types/members/index.d.ts +325 -0
  275. package/dist/types/members/request.d.ts +50 -0
  276. package/dist/types/members/util.d.ts +2 -0
  277. package/dist/types/metrics/config.d.ts +169 -0
  278. package/dist/types/metrics/constants.d.ts +53 -0
  279. package/dist/types/metrics/index.d.ts +152 -0
  280. package/dist/types/multistream/mediaRequestManager.d.ts +51 -0
  281. package/dist/types/multistream/receiveSlot.d.ts +64 -0
  282. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  283. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  284. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  285. package/dist/types/multistream/remoteMediaManager.d.ts +259 -0
  286. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  287. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  288. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  289. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  290. package/dist/types/reachability/index.d.ts +152 -0
  291. package/dist/types/reachability/request.d.ts +37 -0
  292. package/dist/types/reactions/constants.d.ts +3 -0
  293. package/dist/types/reactions/reactions.d.ts +4 -0
  294. package/dist/types/reactions/reactions.type.d.ts +52 -0
  295. package/dist/types/reconnection-manager/index.d.ts +117 -0
  296. package/dist/types/recording-controller/enums.d.ts +7 -0
  297. package/dist/types/recording-controller/index.d.ts +193 -0
  298. package/dist/types/recording-controller/util.d.ts +13 -0
  299. package/dist/types/roap/index.d.ts +77 -0
  300. package/dist/types/roap/request.d.ts +38 -0
  301. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  302. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  303. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  304. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  305. package/dist/types/transcription/index.d.ts +64 -0
  306. package/internal-README.md +7 -6
  307. package/package.json +27 -21
  308. package/src/breakouts/README.md +199 -0
  309. package/src/breakouts/breakout.ts +129 -0
  310. package/src/breakouts/collection.ts +19 -0
  311. package/src/breakouts/edit-lock-error.ts +25 -0
  312. package/src/breakouts/index.ts +539 -0
  313. package/src/breakouts/request.ts +55 -0
  314. package/src/breakouts/utils.ts +39 -0
  315. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  316. package/src/common/collection.ts +9 -7
  317. package/src/common/{config.js → config.ts} +1 -1
  318. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  319. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  320. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  321. package/src/common/errors/{media.js → media.ts} +11 -7
  322. package/src/common/errors/parameter.ts +11 -7
  323. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  324. package/src/common/errors/{permission.js → permission.ts} +10 -6
  325. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  326. package/src/common/errors/{stats.js → stats.ts} +11 -7
  327. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  328. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  329. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  330. package/src/common/events/{events.js → events.ts} +5 -1
  331. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  332. package/src/common/events/{util.js → util.ts} +2 -3
  333. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  334. package/src/common/logs/logger-proxy.ts +44 -0
  335. package/src/common/logs/{request.js → request.ts} +22 -9
  336. package/src/common/queue.ts +1 -2
  337. package/src/{config.js → config.ts} +17 -12
  338. package/src/constants.ts +76 -5
  339. package/src/controls-options-manager/constants.ts +5 -0
  340. package/src/controls-options-manager/enums.ts +7 -0
  341. package/src/controls-options-manager/index.ts +218 -0
  342. package/src/controls-options-manager/util.ts +30 -0
  343. package/src/index.js +4 -1
  344. package/src/locus-info/controlsUtils.ts +122 -0
  345. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  346. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  347. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  348. package/src/locus-info/{index.js → index.ts} +192 -67
  349. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  350. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  351. package/src/locus-info/{parser.js → parser.ts} +67 -79
  352. package/src/locus-info/{selfUtils.js → selfUtils.ts} +157 -68
  353. package/src/media/{index.js → index.ts} +179 -176
  354. package/src/media/{properties.js → properties.ts} +60 -37
  355. package/src/media/{util.js → util.ts} +2 -2
  356. package/src/mediaQualityMetrics/config.ts +384 -0
  357. package/src/meeting/in-meeting-actions.ts +55 -3
  358. package/src/meeting/{index.js → index.ts} +2590 -1576
  359. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  360. package/src/meeting/{request.js → request.ts} +326 -142
  361. package/src/meeting/request.type.ts +13 -0
  362. package/src/meeting/{state.js → state.ts} +50 -35
  363. package/src/meeting/{util.js → util.ts} +128 -115
  364. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  365. package/src/meeting-info/{index.js → index.ts} +42 -36
  366. package/src/meeting-info/meeting-info-v2.ts +273 -0
  367. package/src/meeting-info/{request.js → request.ts} +14 -4
  368. package/src/meeting-info/{util.js → util.ts} +60 -51
  369. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  370. package/src/meetings/{collection.js → collection.ts} +6 -3
  371. package/src/meetings/index.ts +1159 -0
  372. package/src/meetings/{request.js → request.ts} +32 -25
  373. package/src/meetings/{util.js → util.ts} +58 -32
  374. package/src/member/{index.js → index.ts} +102 -56
  375. package/src/member/{util.js → util.ts} +52 -25
  376. package/src/members/{collection.js → collection.ts} +2 -2
  377. package/src/members/{index.js → index.ts} +231 -144
  378. package/src/members/{request.js → request.ts} +60 -16
  379. package/src/members/{util.js → util.ts} +69 -54
  380. package/src/metrics/{config.js → config.ts} +253 -92
  381. package/src/metrics/{constants.js → constants.ts} +0 -6
  382. package/src/metrics/{index.js → index.ts} +105 -94
  383. package/src/multistream/mediaRequestManager.ts +101 -39
  384. package/src/multistream/receiveSlot.ts +62 -26
  385. package/src/multistream/receiveSlotManager.ts +50 -38
  386. package/src/multistream/remoteMedia.ts +38 -5
  387. package/src/multistream/remoteMediaGroup.ts +4 -3
  388. package/src/multistream/remoteMediaManager.ts +209 -62
  389. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  390. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  391. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  392. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  393. package/src/reachability/{index.js → index.ts} +157 -94
  394. package/src/reachability/request.ts +46 -35
  395. package/src/reactions/constants.ts +4 -0
  396. package/src/reactions/reactions.ts +104 -0
  397. package/src/reactions/reactions.type.ts +62 -0
  398. package/src/reconnection-manager/{index.js → index.ts} +196 -103
  399. package/src/recording-controller/enums.ts +8 -0
  400. package/src/recording-controller/index.ts +315 -0
  401. package/src/recording-controller/util.ts +58 -0
  402. package/src/roap/{index.js → index.ts} +77 -60
  403. package/src/roap/request.ts +172 -0
  404. package/src/roap/turnDiscovery.ts +81 -41
  405. package/src/statsAnalyzer/global.ts +37 -0
  406. package/src/statsAnalyzer/index.ts +1242 -0
  407. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  408. package/src/transcription/{index.js → index.ts} +46 -39
  409. package/test/integration/spec/converged-space-meetings.js +176 -0
  410. package/test/integration/spec/journey.js +665 -464
  411. package/test/integration/spec/space-meeting.js +320 -206
  412. package/test/integration/spec/transcription.js +7 -8
  413. package/test/unit/spec/breakouts/breakout.ts +146 -0
  414. package/test/unit/spec/breakouts/collection.ts +15 -0
  415. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  416. package/test/unit/spec/breakouts/index.ts +764 -0
  417. package/test/unit/spec/breakouts/request.ts +104 -0
  418. package/test/unit/spec/breakouts/utils.js +47 -0
  419. package/test/unit/spec/common/browser-detection.js +9 -28
  420. package/test/unit/spec/controls-options-manager/index.js +180 -0
  421. package/test/unit/spec/controls-options-manager/util.js +86 -0
  422. package/test/unit/spec/fixture/locus.js +92 -90
  423. package/test/unit/spec/locus-info/controlsUtils.js +112 -34
  424. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  425. package/test/unit/spec/locus-info/index.js +219 -2
  426. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  427. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  428. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  429. package/test/unit/spec/locus-info/parser.js +3 -9
  430. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  431. package/test/unit/spec/locus-info/selfUtils.js +128 -12
  432. package/test/unit/spec/media/index.ts +72 -8
  433. package/test/unit/spec/media/properties.ts +9 -9
  434. package/test/unit/spec/meeting/in-meeting-actions.ts +23 -2
  435. package/test/unit/spec/meeting/index.js +2490 -802
  436. package/test/unit/spec/meeting/muteState.js +146 -61
  437. package/test/unit/spec/meeting/request.js +141 -43
  438. package/test/unit/spec/meeting/utils.js +134 -164
  439. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  440. package/test/unit/spec/meeting-info/request.js +7 -9
  441. package/test/unit/spec/meeting-info/util.js +11 -12
  442. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  443. package/test/unit/spec/meetings/collection.js +1 -1
  444. package/test/unit/spec/meetings/index.js +439 -257
  445. package/test/unit/spec/meetings/utils.js +14 -12
  446. package/test/unit/spec/member/index.js +0 -1
  447. package/test/unit/spec/member/util.js +31 -7
  448. package/test/unit/spec/members/index.js +179 -54
  449. package/test/unit/spec/members/request.js +29 -20
  450. package/test/unit/spec/members/utils.js +119 -4
  451. package/test/unit/spec/metrics/index.js +16 -21
  452. package/test/unit/spec/multistream/mediaRequestManager.ts +318 -64
  453. package/test/unit/spec/multistream/receiveSlot.ts +68 -17
  454. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  455. package/test/unit/spec/multistream/remoteMedia.ts +38 -2
  456. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  457. package/test/unit/spec/multistream/remoteMediaManager.ts +539 -65
  458. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  459. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  460. package/test/unit/spec/reachability/index.ts +176 -27
  461. package/test/unit/spec/reachability/request.js +66 -0
  462. package/test/unit/spec/reconnection-manager/index.js +58 -30
  463. package/test/unit/spec/recording-controller/index.js +231 -0
  464. package/test/unit/spec/recording-controller/util.js +102 -0
  465. package/test/unit/spec/roap/index.ts +12 -8
  466. package/test/unit/spec/roap/request.ts +217 -0
  467. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  468. package/test/unit/spec/stats-analyzer/index.js +108 -57
  469. package/test/utils/cmr.js +44 -42
  470. package/test/utils/constants.js +9 -0
  471. package/test/utils/testUtils.js +98 -77
  472. package/test/utils/webex-config.js +22 -18
  473. package/test/utils/webex-test-users.js +57 -50
  474. package/tsconfig.json +6 -0
  475. package/dist/media/internal-media-core-wrapper.js +0 -22
  476. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  477. package/dist/meeting/effectsState.js +0 -327
  478. package/dist/meeting/effectsState.js.map +0 -1
  479. package/dist/multistream/multistreamMedia.js +0 -116
  480. package/dist/multistream/multistreamMedia.js.map +0 -1
  481. package/dist/peer-connection-manager/util.js +0 -124
  482. package/dist/peer-connection-manager/util.js.map +0 -1
  483. package/src/common/logs/logger-proxy.js +0 -33
  484. package/src/locus-info/controlsUtils.js +0 -102
  485. package/src/media/internal-media-core-wrapper.ts +0 -9
  486. package/src/mediaQualityMetrics/config.js +0 -382
  487. package/src/meeting/effectsState.js +0 -205
  488. package/src/meeting-info/meeting-info-v2.js +0 -255
  489. package/src/meetings/index.js +0 -1015
  490. package/src/multistream/multistreamMedia.ts +0 -92
  491. package/src/peer-connection-manager/util.ts +0 -117
  492. package/src/roap/request.js +0 -127
  493. package/src/statsAnalyzer/global.js +0 -133
  494. package/src/statsAnalyzer/index.js +0 -1006
  495. package/src/statsAnalyzer/mqaUtil.js +0 -173
  496. package/test/unit/spec/meeting/effectsState.js +0 -291
  497. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  498. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -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 ************
@@ -287,6 +288,7 @@ export const EVENT_TRIGGERS = {
287
288
  MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',
288
289
  MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
289
290
  MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
291
+ MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',
290
292
  MEETING_PAUSED_RECORDING: 'meeting:recording:paused',
291
293
  MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',
292
294
  MEETING_ADDED: 'meeting:added',
@@ -295,6 +297,8 @@ export const EVENT_TRIGGERS = {
295
297
  MEETING_RINGING_STOP: 'meeting:ringingStop',
296
298
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
297
299
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
300
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
301
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
298
302
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
299
303
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
300
304
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
@@ -303,6 +307,9 @@ export const EVENT_TRIGGERS = {
303
307
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
304
308
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
305
309
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
310
+ MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
311
+ MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
312
+ MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
306
313
  MEMBERS_UPDATE: 'members:update',
307
314
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
308
315
  MEMBERS_HOST_UPDATE: 'members:host:update',
@@ -330,7 +337,7 @@ export const EVENT_TRIGGERS = {
330
337
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
331
338
  REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
332
339
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
333
- REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScrenShareAudio:created',
340
+ REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
334
341
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
335
342
  };
336
343
 
@@ -447,6 +454,11 @@ export const ERROR_DICTIONARY = {
447
454
  MESSAGE: 'Captcha is required.',
448
455
  CODE: 8,
449
456
  },
457
+ BREAKOUT_EDIT: {
458
+ NAME: 'BreakoutEditLockedError',
459
+ MESSAGE: 'Edit lock token mismatch',
460
+ CODE: 9,
461
+ },
450
462
  };
451
463
 
452
464
  export const FLOOR_ACTION = {
@@ -513,15 +525,52 @@ export const LOCUS = {
513
525
  SYNCDEBUG: 'sync_debug',
514
526
  };
515
527
 
528
+ export const BREAKOUTS = {
529
+ STATUS: {
530
+ CLOSING: 'CLOSING',
531
+ CLOSED: 'CLOSED',
532
+ PENDING: 'PENDING',
533
+ OPEN: 'OPEN',
534
+ },
535
+ EVENTS: {
536
+ BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
537
+ MESSAGE: 'MESSAGE',
538
+ MEMBERS_UPDATE: 'MEMBERS_UPDATE',
539
+ },
540
+ SESSION_TYPES: {
541
+ MAIN: 'MAIN',
542
+ BREAKOUT: 'BREAKOUT',
543
+ },
544
+ SESSION_STATES: {
545
+ ACTIVE: 'active',
546
+ ASSIGNED: 'assigned',
547
+ ALLOWED: 'allowed',
548
+ ASSIGNED_CURRENT: 'assignedCurrent',
549
+ REQUESTED: 'requested',
550
+ },
551
+ BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
552
+ ACTION: {
553
+ START: 'START',
554
+ CLOSE: 'CLOSE',
555
+ DELETE: 'DELETE',
556
+ },
557
+ ERROR_CODE: {
558
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
559
+ },
560
+ DEFAULT_DURATION: 60000,
561
+ };
562
+
516
563
  export const LOCUSINFO = {
517
564
  EVENTS: {
518
565
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
519
566
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
520
567
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
568
+ CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
521
569
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
522
570
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
523
571
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
524
572
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
573
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
525
574
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
526
575
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
527
576
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
@@ -539,6 +588,9 @@ export const LOCUSINFO = {
539
588
  EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
540
589
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
541
590
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
591
+ SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
592
+ MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
593
+ LINKS_SERVICES: 'LINKS_SERVICES',
542
594
  },
543
595
  };
544
596
 
@@ -551,6 +603,9 @@ export const LOCUSEVENT = {
551
603
  // delta events
552
604
  DIFFERENCE: 'locus.difference',
553
605
 
606
+ // Breakout sessions
607
+ BREAKOUT_ROSTER: 'breakout.roster',
608
+
554
609
  // screen sharing
555
610
  FLOOR_GRANTED: 'locus.floor_granted',
556
611
  FLOOR_RELEASED: 'locus.floor_released',
@@ -723,6 +778,23 @@ export const DISPLAY_HINTS = {
723
778
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
724
779
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
725
780
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
781
+ ENABLE_REACTIONS: 'ENABLE_REACTIONS',
782
+ DISABLE_REACTIONS: 'DISABLE_REACTIONS',
783
+ REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
784
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
785
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
786
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
787
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
788
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
789
+ MUTE_ALL: 'MUTE_ALL',
790
+ UNMUTE_ALL: 'UNMUTE_ALL',
791
+
792
+ // breakout session
793
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
794
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
795
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
796
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
797
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
726
798
  };
727
799
 
728
800
  export const SELF_ROLES = {
@@ -812,7 +884,9 @@ export const RESOURCE = {
812
884
  };
813
885
 
814
886
  export const REACHABILITY = {
815
- localStorage: 'reachability.result',
887
+ localStorageResult: 'reachability.result',
888
+ localStorageJoinCookie: 'reachability.joinCookie',
889
+ namespace: 'Reachability',
816
890
  };
817
891
 
818
892
  export const ROAP = {
@@ -847,9 +921,6 @@ export const NETWORK_TYPE = {
847
921
  };
848
922
 
849
923
  export const STATS = {
850
- AUDIO_CORRELATE: 'audio',
851
- VIDEO_CORRELATE: 'video',
852
- SHARE_CORRELATE: 'share',
853
924
  SEND_DIRECTION: 'send',
854
925
  RECEIVE_DIRECTION: 'recv',
855
926
  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,218 @@
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
+ const muteUnmuteAll = Object.keys(setting).includes(Setting.muted);
144
+
145
+ const body = muteUnmuteAll ? {audio: {}} : {};
146
+ for (const [key, value] of Object.entries(setting)) {
147
+ LoggerProxy.logger.log(`ControlsOptionsManager:index#setControls --> ${key} [${value}]`);
148
+ // mute unmute all has different body structure than toggling disable hard mute
149
+ // or mute on entry by themselves
150
+ if (muteUnmuteAll) {
151
+ if (Util?.[`${value ? CAN_SET : CAN_UNSET}${Setting.muted}`](this.displayHints)) {
152
+ body.audio[camelCase(key)] = value;
153
+ } else {
154
+ return Promise.reject(
155
+ new PermissionError(
156
+ `${Setting.muted} [${value}] not allowed, due to moderator property.`
157
+ )
158
+ );
159
+ }
160
+ } else if (Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)) {
161
+ body[camelCase(key)] = {
162
+ [ENABLED]: value,
163
+ };
164
+ } else {
165
+ return Promise.reject(
166
+ new PermissionError(`${key} [${value}] not allowed, due to moderator property.`)
167
+ );
168
+ }
169
+ }
170
+
171
+ // @ts-ignore
172
+ return this.request.request({
173
+ uri: `${this.locusUrl}/${CONTROLS}`,
174
+ body,
175
+ method: HTTP_VERBS.PATCH,
176
+ });
177
+ }
178
+
179
+ /**
180
+ * @public
181
+ * @param {boolean} enabled
182
+ * @memberof ControlsOptionsManager
183
+ * @returns {Promise}
184
+ */
185
+ public setMuteOnEntry(enabled: boolean): Promise<any> {
186
+ return this.setControls({[Setting.muteOnEntry]: enabled});
187
+ }
188
+
189
+ /**
190
+ * @public
191
+ * @param {boolean} enabled
192
+ * @memberof ControlsOptionsManager
193
+ * @returns {Promise}
194
+ */
195
+ public setDisallowUnmute(enabled: boolean): Promise<any> {
196
+ return this.setControls({[Setting.disallowUnmute]: enabled});
197
+ }
198
+
199
+ /**
200
+ * @public
201
+ * @param {boolean} mutedEnabled
202
+ * @param {boolean} disallowUnmuteEnabled
203
+ * @param {boolean} muteOnEntryEnabled
204
+ * @memberof ControlsOptionsManager
205
+ * @returns {Promise}
206
+ */
207
+ public setMuteAll(
208
+ mutedEnabled: boolean,
209
+ disallowUnmuteEnabled: boolean,
210
+ muteOnEntryEnabled: boolean
211
+ ): Promise<any> {
212
+ return this.setControls({
213
+ [Setting.muted]: mutedEnabled,
214
+ [Setting.disallowUnmute]: disallowUnmuteEnabled,
215
+ [Setting.muteOnEntry]: muteOnEntryEnabled,
216
+ });
217
+ }
218
+ }
@@ -0,0 +1,30 @@
1
+ import {DISPLAY_HINTS} from '../constants';
2
+
3
+ const canSetMuteOnEntry = (displayHints: Array<string>): boolean =>
4
+ displayHints.includes(DISPLAY_HINTS.ENABLE_MUTE_ON_ENTRY);
5
+
6
+ const canSetDisallowUnmute = (displayHints: Array<string>): boolean =>
7
+ displayHints.includes(DISPLAY_HINTS.ENABLE_HARD_MUTE);
8
+
9
+ const canUnsetMuteOnEntry = (displayHints: Array<string>): boolean =>
10
+ displayHints.includes(DISPLAY_HINTS.DISABLE_MUTE_ON_ENTRY);
11
+
12
+ const canUnsetDisallowUnmute = (displayHints: Array<string>): boolean =>
13
+ displayHints.includes(DISPLAY_HINTS.DISABLE_HARD_MUTE);
14
+
15
+ // 'Muted' in the context of controls options manager refers to mute/unmute all.
16
+ // This was chosen because locus uses "muted" in the /controls API
17
+ const canSetMuted = (displayHints: Array<string>): boolean =>
18
+ displayHints.includes(DISPLAY_HINTS.MUTE_ALL);
19
+
20
+ const canUnsetMuted = (displayHints: Array<string>): boolean =>
21
+ displayHints.includes(DISPLAY_HINTS.UNMUTE_ALL);
22
+
23
+ export default {
24
+ canSetMuteOnEntry,
25
+ canSetDisallowUnmute,
26
+ canSetMuted,
27
+ canUnsetMuteOnEntry,
28
+ canUnsetDisallowUnmute,
29
+ canUnsetMuted,
30
+ };
package/src/index.js CHANGED
@@ -5,11 +5,14 @@ import Meetings from './meetings';
5
5
  import config from './config';
6
6
 
7
7
  registerPlugin('meetings', Meetings, {
8
- config
8
+ config,
9
9
  });
10
10
 
11
11
  export default Meetings;
12
12
 
13
13
  export * as CONSTANTS from './constants';
14
+ export * as REACTIONS from './reactions/reactions';
15
+
16
+ export {RemoteMedia} from './multistream/remoteMedia';
14
17
 
15
18
  export {default as TriggerProxy} from './common/events/trigger-proxy';