@webex/plugin-meetings 3.0.0-beta.6 → 3.0.0-beta.61

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 +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 +725 -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 +52 -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 +135 -51
  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 +259 -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 +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2214 -2243
  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 +5 -20
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +493 -560
  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 +116 -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 +3 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +131 -203
  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 +1 -13
  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 +54 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +74 -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 +62 -76
  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 +939 -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 +1719 -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 +23 -0
  272. package/dist/types/meetings/index.d.ts +297 -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 +24 -0
  279. package/dist/types/members/index.d.ts +335 -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 +169 -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 +51 -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 +208 -0
  315. package/src/breakouts/breakout.ts +129 -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 +659 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +39 -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 +87 -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 +234 -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 +122 -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} +192 -67
  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} +157 -68
  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} +2581 -1588
  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} +6 -3
  377. package/src/meetings/index.ts +1167 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +58 -32
  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} +2 -2
  384. package/src/members/{index.js → index.ts} +258 -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} +253 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +105 -94
  391. package/src/multistream/mediaRequestManager.ts +101 -39
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +40 -5
  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 +146 -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 +944 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +47 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +180 -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 +112 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +219 -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 +128 -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 +2490 -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 +1 -1
  452. package/test/unit/spec/meetings/index.js +439 -257
  453. package/test/unit/spec/meetings/utils.js +14 -12
  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 +256 -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 +318 -64
  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 +40 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +607 -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
@@ -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
 
@@ -372,6 +379,7 @@ export const CALL_REMOVED_REASON = {
372
379
  export const SHARE_STOPPED_REASON = {
373
380
  SELF_STOPPED: 'SELF_STOPPED',
374
381
  MEETING_REJOIN: 'MEETING_REJOIN',
382
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
375
383
  };
376
384
 
377
385
  export const EVENTS = {
@@ -447,6 +455,11 @@ export const ERROR_DICTIONARY = {
447
455
  MESSAGE: 'Captcha is required.',
448
456
  CODE: 8,
449
457
  },
458
+ BREAKOUT_EDIT: {
459
+ NAME: 'BreakoutEditLockedError',
460
+ MESSAGE: 'Edit lock token mismatch',
461
+ CODE: 9,
462
+ },
450
463
  };
451
464
 
452
465
  export const FLOOR_ACTION = {
@@ -468,6 +481,7 @@ export const HTTP_VERBS = {
468
481
  POST: 'POST',
469
482
  GET: 'GET',
470
483
  PATCH: 'PATCH',
484
+ DELETE: 'DELETE',
471
485
  };
472
486
 
473
487
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -513,15 +527,59 @@ export const LOCUS = {
513
527
  SYNCDEBUG: 'sync_debug',
514
528
  };
515
529
 
530
+ export const BREAKOUTS = {
531
+ STATUS: {
532
+ CLOSING: 'CLOSING',
533
+ CLOSED: 'CLOSED',
534
+ PENDING: 'PENDING',
535
+ OPEN: 'OPEN',
536
+ },
537
+ EVENTS: {
538
+ BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
539
+ MESSAGE: 'MESSAGE',
540
+ MEMBERS_UPDATE: 'MEMBERS_UPDATE',
541
+ },
542
+ SESSION_TYPES: {
543
+ MAIN: 'MAIN',
544
+ BREAKOUT: 'BREAKOUT',
545
+ },
546
+ SESSION_STATES: {
547
+ ACTIVE: 'active',
548
+ ASSIGNED: 'assigned',
549
+ ALLOWED: 'allowed',
550
+ ASSIGNED_CURRENT: 'assignedCurrent',
551
+ REQUESTED: 'requested',
552
+ },
553
+ BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
554
+ ACTION: {
555
+ START: 'START',
556
+ CLOSE: 'CLOSE',
557
+ DELETE: 'DELETE',
558
+ },
559
+ ERROR_CODE: {
560
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
561
+ EDIT_NOT_AUTHORIZED: 201403007,
562
+ },
563
+ DEFAULT_DURATION: 60000,
564
+ EDIT_LOCK_STATUS: {
565
+ LOCKED: 'LOCKED',
566
+ NOT_LOCKED: 'NOT_LOCKED',
567
+ UNKNOWN: 'UNKNOWN',
568
+ },
569
+ DEFAULT_TTL: 30,
570
+ };
571
+
516
572
  export const LOCUSINFO = {
517
573
  EVENTS: {
518
574
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
519
575
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
520
576
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
577
+ CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
521
578
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
522
579
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
523
580
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
524
581
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
582
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
525
583
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
526
584
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
527
585
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
@@ -539,6 +597,9 @@ export const LOCUSINFO = {
539
597
  EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
540
598
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
541
599
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
600
+ SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
601
+ MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
602
+ LINKS_SERVICES: 'LINKS_SERVICES',
542
603
  },
543
604
  };
544
605
 
@@ -551,6 +612,9 @@ export const LOCUSEVENT = {
551
612
  // delta events
552
613
  DIFFERENCE: 'locus.difference',
553
614
 
615
+ // Breakout sessions
616
+ BREAKOUT_ROSTER: 'breakout.roster',
617
+
554
618
  // screen sharing
555
619
  FLOOR_GRANTED: 'locus.floor_granted',
556
620
  FLOOR_RELEASED: 'locus.floor_released',
@@ -721,8 +785,27 @@ export const DISPLAY_HINTS = {
721
785
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
722
786
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
723
787
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
788
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
724
789
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
725
790
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
791
+ ENABLE_REACTIONS: 'ENABLE_REACTIONS',
792
+ DISABLE_REACTIONS: 'DISABLE_REACTIONS',
793
+ REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
794
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
795
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
796
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
797
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
798
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
799
+ MUTE_ALL: 'MUTE_ALL',
800
+ UNMUTE_ALL: 'UNMUTE_ALL',
801
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
802
+
803
+ // breakout session
804
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
805
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
806
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
807
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
808
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
726
809
  };
727
810
 
728
811
  export const SELF_ROLES = {
@@ -812,7 +895,9 @@ export const RESOURCE = {
812
895
  };
813
896
 
814
897
  export const REACHABILITY = {
815
- localStorage: 'reachability.result',
898
+ localStorageResult: 'reachability.result',
899
+ localStorageJoinCookie: 'reachability.joinCookie',
900
+ namespace: 'Reachability',
816
901
  };
817
902
 
818
903
  export const ROAP = {
@@ -847,9 +932,6 @@ export const NETWORK_TYPE = {
847
932
  };
848
933
 
849
934
  export const STATS = {
850
- AUDIO_CORRELATE: 'audio',
851
- VIDEO_CORRELATE: 'video',
852
- SHARE_CORRELATE: 'share',
853
935
  SEND_DIRECTION: 'send',
854
936
  RECEIVE_DIRECTION: 'recv',
855
937
  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,234 @@
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
+ Object.entries(setting).forEach(([key, value]) => {
151
+ if (!Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)) {
152
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
153
+ }
154
+
155
+ if (error) {
156
+ return;
157
+ }
158
+
159
+ switch (key) {
160
+ case Setting.muted:
161
+ body.audio = body.audio
162
+ ? {...body.audio, [camelCase(key)]: value}
163
+ : {[camelCase(key)]: value};
164
+ break;
165
+
166
+ case Setting.disallowUnmute:
167
+ case Setting.muteOnEntry:
168
+ if (Object.keys(setting).includes(Setting.muted)) {
169
+ body.audio = body.audio
170
+ ? {...body.audio, [camelCase(key)]: value}
171
+ : {[camelCase(key)]: value};
172
+ body.audio[camelCase(key)] = value;
173
+ } else {
174
+ body[camelCase(key)] = {[ENABLED]: value};
175
+ }
176
+ break;
177
+
178
+ default:
179
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
180
+ }
181
+ });
182
+
183
+ if (error) {
184
+ return Promise.reject(error);
185
+ }
186
+
187
+ // @ts-ignore
188
+ return this.request.request({
189
+ uri: `${this.locusUrl}/${CONTROLS}`,
190
+ body,
191
+ method: HTTP_VERBS.PATCH,
192
+ });
193
+ }
194
+
195
+ /**
196
+ * @public
197
+ * @param {boolean} enabled
198
+ * @memberof ControlsOptionsManager
199
+ * @returns {Promise}
200
+ */
201
+ public setMuteOnEntry(enabled: boolean): Promise<any> {
202
+ return this.setControls({[Setting.muteOnEntry]: enabled});
203
+ }
204
+
205
+ /**
206
+ * @public
207
+ * @param {boolean} enabled
208
+ * @memberof ControlsOptionsManager
209
+ * @returns {Promise}
210
+ */
211
+ public setDisallowUnmute(enabled: boolean): Promise<any> {
212
+ return this.setControls({[Setting.disallowUnmute]: enabled});
213
+ }
214
+
215
+ /**
216
+ * @public
217
+ * @param {boolean} mutedEnabled
218
+ * @param {boolean} disallowUnmuteEnabled
219
+ * @param {boolean} muteOnEntryEnabled
220
+ * @memberof ControlsOptionsManager
221
+ * @returns {Promise}
222
+ */
223
+ public setMuteAll(
224
+ mutedEnabled: boolean,
225
+ disallowUnmuteEnabled: boolean,
226
+ muteOnEntryEnabled: boolean
227
+ ): Promise<any> {
228
+ return this.setControls({
229
+ [Setting.muted]: mutedEnabled,
230
+ [Setting.disallowUnmute]: disallowUnmuteEnabled,
231
+ [Setting.muteOnEntry]: muteOnEntryEnabled,
232
+ });
233
+ }
234
+ }
@@ -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';