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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -0,0 +1,843 @@
1
+ "use strict";
2
+
3
+ var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
4
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs2/core-js/object/get-own-property-symbols");
5
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptor");
6
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs2/core-js/object/get-own-property-descriptors");
7
+ var _Object$defineProperties = require("@babel/runtime-corejs2/core-js/object/define-properties");
8
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
9
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
10
+ _Object$defineProperty(exports, "__esModule", {
11
+ value: true
12
+ });
13
+ exports.default = void 0;
14
+ var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs2/regenerator"));
15
+ var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
16
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
17
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/asyncToGenerator"));
18
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
19
+ var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
20
+ var _debounce2 = _interopRequireDefault(require("lodash/debounce"));
21
+ var _webexCore = require("@webex/webex-core");
22
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
23
+ var _constants = require("../constants");
24
+ var _breakout = _interopRequireDefault(require("./breakout"));
25
+ var _collection = _interopRequireDefault(require("./collection"));
26
+ var _request = _interopRequireDefault(require("./request"));
27
+ var _utils = require("./utils");
28
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
29
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
30
+ /**
31
+ * @class Breakouts
32
+ */
33
+ var Breakouts = _webexCore.WebexPlugin.extend({
34
+ namespace: _constants.MEETINGS,
35
+ breakoutRequest: _request.default,
36
+ collections: {
37
+ breakouts: _collection.default
38
+ },
39
+ props: {
40
+ allowBackToMain: 'boolean',
41
+ // only present when in a breakout session
42
+ delayCloseTime: 'number',
43
+ // appears once breakouts start
44
+ enableBreakoutSession: 'boolean',
45
+ // appears from the moment you enable breakouts
46
+ hasBreakoutPreAssignments: 'boolean',
47
+ // appears from the moment you enable breakouts
48
+ groupId: 'string',
49
+ // appears from the moment you enable breakouts
50
+ name: 'string',
51
+ // only present when in a breakout session
52
+ sessionId: 'string',
53
+ // appears from the moment you enable breakouts
54
+ sessionType: 'string',
55
+ // appears from the moment you enable breakouts
56
+ startTime: 'string',
57
+ // appears once breakouts start
58
+ status: 'string',
59
+ // only present when in a breakout session
60
+ url: 'string',
61
+ // appears from the moment you enable breakouts
62
+ locusUrl: 'string',
63
+ // the current locus url
64
+ breakoutServiceUrl: 'string',
65
+ // the current breakout resource url
66
+ mainLocusUrl: 'string',
67
+ // the locus url of the main session
68
+ groups: 'array',
69
+ // appears when create breakouts
70
+ shouldFetchPreassignments: 'boolean',
71
+ // Controlling the lifecycle of the pre-assign API
72
+ editLock: 'object',
73
+ // appears when getBreakout info editlock = true
74
+ intervalID: 'number',
75
+ meetingId: 'string'
76
+ },
77
+ children: {
78
+ currentBreakoutSession: _breakout.default
79
+ },
80
+ derived: {
81
+ isInMainSession: {
82
+ deps: ['sessionType'],
83
+ /**
84
+ * Returns true if the user is in the main session
85
+ * @returns {boolean}
86
+ */
87
+ fn: function fn() {
88
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
89
+ }
90
+ },
91
+ isActiveBreakout: {
92
+ deps: ['sessionType', 'status'],
93
+ /**
94
+ * Returns true if the breakout status is active
95
+ * @returns {boolean}
96
+ */
97
+ fn: function fn() {
98
+ return this.sessionType === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && (this.status === _constants.BREAKOUTS.STATUS.OPEN || this.status === _constants.BREAKOUTS.STATUS.CLOSING);
99
+ }
100
+ },
101
+ breakoutGroupId: {
102
+ deps: ['groups'],
103
+ /**
104
+ * Returns the actived group id
105
+ * @returns {boolean}
106
+ */
107
+ fn: function fn() {
108
+ var _this$groups;
109
+ if ((_this$groups = this.groups) !== null && _this$groups !== void 0 && _this$groups.length) {
110
+ return this.groups[0].id;
111
+ }
112
+ return '';
113
+ }
114
+ }
115
+ },
116
+ /**
117
+ * initialize for the breakouts
118
+ * @returns {void}
119
+ */
120
+ initialize: function initialize() {
121
+ var _this = this;
122
+ this.listenTo(this, 'change:status', function () {
123
+ if (_this.status === _constants.BREAKOUTS.STATUS.CLOSING) {
124
+ _this.trigger(_constants.BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);
125
+ }
126
+ });
127
+ this.debouncedQueryRosters = (0, _debounce2.default)(this.queryRosters, 10, {
128
+ leading: true,
129
+ trailing: false
130
+ });
131
+ this.listenTo(this.breakouts, 'add', function () {
132
+ _this.debouncedQueryRosters();
133
+ });
134
+ this.listenToBroadcastMessages();
135
+ this.listenToBreakoutRosters();
136
+ // @ts-ignore
137
+ this.breakoutRequest = new _request.default({
138
+ webex: this.webex
139
+ });
140
+ },
141
+ /**
142
+ * Calls this to clean up listeners
143
+ * @returns {void}
144
+ */
145
+ cleanUp: function cleanUp() {
146
+ this.stopListening();
147
+ },
148
+ /**
149
+ * Update the current locus url of the meeting
150
+ * @param {string} locusUrl // locus url
151
+ * @returns {void}
152
+ */
153
+ locusUrlUpdate: function locusUrlUpdate(locusUrl) {
154
+ this.set('locusUrl', locusUrl);
155
+ var isInMainSession = this.isInMainSession,
156
+ mainLocusUrl = this.mainLocusUrl;
157
+ if (isInMainSession || !mainLocusUrl) {
158
+ this.set('mainLocusUrl', locusUrl);
159
+ }
160
+ },
161
+ /**
162
+ * Update the current breakout resource url
163
+ * @param {string} breakoutServiceUrl
164
+ * @returns {void}
165
+ */
166
+ breakoutServiceUrlUpdate: function breakoutServiceUrlUpdate(breakoutServiceUrl) {
167
+ this.set('breakoutServiceUrl', "".concat(breakoutServiceUrl, "/breakout/"));
168
+ },
169
+ /**
170
+ * The initial roster lists need to be queried because you don't
171
+ * get a breakout.roster event when you join the meeting
172
+ * @returns {void}
173
+ */
174
+ queryRosters: function queryRosters() {
175
+ var _this2 = this;
176
+ this.webex.request({
177
+ uri: "".concat(this.url, "/roster"),
178
+ qs: {
179
+ locusUrl: btoa(this.locusUrl)
180
+ }
181
+ }).then(function (result) {
182
+ var rosters = result.body.rosters;
183
+ rosters === null || rosters === void 0 ? void 0 : rosters.forEach(function (_ref) {
184
+ var locus = _ref.locus;
185
+ _this2.handleRosterUpdate(locus);
186
+ });
187
+ _this2.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
188
+ }).catch(function (error) {
189
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryRosters failed', error);
190
+ });
191
+ },
192
+ /**
193
+ *
194
+ * @param {Object} locus // locus object
195
+ * @returns {void}
196
+ */
197
+ handleRosterUpdate: function handleRosterUpdate(locus) {
198
+ var _locus$controls, _locus$controls$break;
199
+ var sessionId = (_locus$controls = locus.controls) === null || _locus$controls === void 0 ? void 0 : (_locus$controls$break = _locus$controls.breakout) === null || _locus$controls$break === void 0 ? void 0 : _locus$controls$break.sessionId;
200
+ var session = this.breakouts.get(sessionId);
201
+ if (!session) {
202
+ return;
203
+ }
204
+ session.parseRoster(locus);
205
+ },
206
+ /**
207
+ * Sets up listener for broadcast messages sent to the breakout session
208
+ * @returns {void}
209
+ */
210
+ listenToBroadcastMessages: function listenToBroadcastMessages() {
211
+ var _this3 = this;
212
+ this.listenTo(this.webex.internal.llm, 'event:breakout.message', function (event) {
213
+ var _event$data = event.data,
214
+ senderUserId = _event$data.senderUserId,
215
+ sentTime = _event$data.sentTime,
216
+ message = _event$data.message;
217
+ _this3.trigger(_constants.BREAKOUTS.EVENTS.MESSAGE, {
218
+ senderUserId: senderUserId,
219
+ sentTime: sentTime,
220
+ message: message,
221
+ // FIXME: This is only the current sessionId
222
+ // We'd need to check that the dataChannelUrl is still the same
223
+ // to guarantee that this message was sent to this session
224
+ sessionId: _this3.currentBreakoutSession.sessionId
225
+ });
226
+ });
227
+ },
228
+ /**
229
+ * Sets up a listener for roster messags from mecury
230
+ * @returns {void}
231
+ */
232
+ listenToBreakoutRosters: function listenToBreakoutRosters() {
233
+ var _this4 = this;
234
+ this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', function (event) {
235
+ _this4.handleRosterUpdate(event.data.locus);
236
+ _this4.trigger(_constants.BREAKOUTS.EVENTS.MEMBERS_UPDATE);
237
+ });
238
+ },
239
+ /**
240
+ * Updates the information about the current breakout
241
+ * @param {Object} params
242
+ * @returns {void}
243
+ */
244
+ updateBreakout: function updateBreakout(params) {
245
+ var _this$set;
246
+ var preEnableBreakoutSession = this.get('enableBreakoutSession');
247
+ this.set(params);
248
+ this.set('groups', params.groups);
249
+ this.set('currentBreakoutSession', (_this$set = {
250
+ sessionId: params.sessionId,
251
+ groupId: params.groupId,
252
+ name: params.name,
253
+ current: true,
254
+ sessionType: params.sessionType,
255
+ url: params.url
256
+ }, (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ACTIVE, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ALLOWED, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT, false), (0, _defineProperty2.default)(_this$set, _constants.BREAKOUTS.SESSION_STATES.REQUESTED, false), _this$set));
257
+
258
+ // We need to call queryPreAssignments when enableBreakoutSession become true
259
+ if (params.enableBreakoutSession && params.hasBreakoutPreAssignments && preEnableBreakoutSession !== params.enableBreakoutSession) {
260
+ this.queryPreAssignments();
261
+ }
262
+ },
263
+ /**
264
+ * Updates the information about available breakouts
265
+ * @param {Object} payload
266
+ * @returns {void}
267
+ */
268
+ updateBreakoutSessions: function updateBreakoutSessions(payload) {
269
+ var _this5 = this;
270
+ var breakouts = {};
271
+ if (payload.breakoutSessions) {
272
+ (0, _forEach2.default)(_constants.BREAKOUTS.SESSION_STATES, function (state) {
273
+ (0, _forEach2.default)(payload.breakoutSessions[state], function (breakout) {
274
+ var sessionId = breakout.sessionId;
275
+ if (!breakouts[sessionId]) {
276
+ breakouts[sessionId] = breakout;
277
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ACTIVE] = false;
278
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED] = false;
279
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ALLOWED] = false;
280
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;
281
+ breakouts[sessionId][_constants.BREAKOUTS.SESSION_STATES.REQUESTED] = false;
282
+ }
283
+ breakouts[sessionId][state] = true;
284
+ });
285
+ });
286
+ }
287
+ (0, _forEach2.default)(breakouts, function (breakout) {
288
+ // eslint-disable-next-line no-param-reassign
289
+ breakout.url = _this5.url;
290
+ });
291
+ this.breakouts.set((0, _values.default)(breakouts));
292
+ },
293
+ /**
294
+ * get main session
295
+ * @returns {Breakout}
296
+ */
297
+ getMainSession: function getMainSession() {
298
+ if (this.isInMainSession) {
299
+ return this.currentBreakoutSession;
300
+ }
301
+ var mainSession = this.breakouts.filter(function (breakout) {
302
+ return breakout.isMain;
303
+ })[0];
304
+ if (!mainSession) {
305
+ throw new Error('no main session found');
306
+ }
307
+ return mainSession;
308
+ },
309
+ /**
310
+ * Host/CoHost ask all participants return to main session
311
+ * @returns {Promise}
312
+ */
313
+ askAllToReturn: function askAllToReturn() {
314
+ var mainSession = this.getMainSession();
315
+ return this.webex.request({
316
+ method: _constants.HTTP_VERBS.POST,
317
+ uri: "".concat(this.url, "/requestMove"),
318
+ body: {
319
+ groupId: mainSession.groupId,
320
+ sessionId: mainSession.sessionId
321
+ }
322
+ });
323
+ },
324
+ /**
325
+ * Broadcast message to all breakout session's participants
326
+ * @param {String} message
327
+ * @param {Object} options
328
+ * @returns {Promise}
329
+ */
330
+ broadcast: function broadcast(message, options) {
331
+ var breakoutGroupId = this.breakoutGroupId;
332
+ if (!breakoutGroupId) {
333
+ throw new Error('Cannot broadcast, no breakout session found');
334
+ }
335
+ return this.breakoutRequest.broadcast({
336
+ url: this.url,
337
+ message: message,
338
+ options: options,
339
+ groupId: breakoutGroupId
340
+ });
341
+ },
342
+ /**
343
+ * Make enable breakout resource
344
+ * @returns {Promise}
345
+ */
346
+ enableBreakouts: function enableBreakouts() {
347
+ if (this.breakoutServiceUrl) {
348
+ // @ts-ignore
349
+ return this.webex.request({
350
+ method: _constants.HTTP_VERBS.POST,
351
+ uri: this.breakoutServiceUrl,
352
+ body: {
353
+ locusUrl: this.locusUrl
354
+ }
355
+ }).catch(function (err) {
356
+ _loggerProxy.default.logger.error("Meeting:request#touchBreakout --> Error provisioning error ".concat(err));
357
+ throw err;
358
+ });
359
+ }
360
+ return _promise.default.reject(new Error("enableBreakouts: the breakoutServiceUrl is empty"));
361
+ },
362
+ /**
363
+ * Make the meeting enable or disable breakout session
364
+ * @param {boolean} enable
365
+ * @returns {Promise}
366
+ */
367
+ toggleBreakout: function toggleBreakout(enable) {
368
+ var _this6 = this;
369
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
370
+ var info;
371
+ return _regenerator.default.wrap(function _callee$(_context) {
372
+ while (1) switch (_context.prev = _context.next) {
373
+ case 0:
374
+ if (!(_this6.enableBreakoutSession === undefined)) {
375
+ _context.next = 10;
376
+ break;
377
+ }
378
+ _context.next = 3;
379
+ return _this6.enableBreakouts();
380
+ case 3:
381
+ info = _context.sent;
382
+ if (enable) {
383
+ _context.next = 8;
384
+ break;
385
+ }
386
+ // if enable is false, updateBreakout set the param then set enableBreakoutSession as false
387
+ _this6.updateBreakout(info.body);
388
+ _context.next = 8;
389
+ return _this6.doToggleBreakout(enable);
390
+ case 8:
391
+ _context.next = 12;
392
+ break;
393
+ case 10:
394
+ _context.next = 12;
395
+ return _this6.doToggleBreakout(enable);
396
+ case 12:
397
+ case "end":
398
+ return _context.stop();
399
+ }
400
+ }, _callee);
401
+ }))();
402
+ },
403
+ /**
404
+ * do toggle meeting breakout session enable or disable
405
+ * @param {boolean} enable
406
+ * @returns {Promise}
407
+ */
408
+ doToggleBreakout: function doToggleBreakout(enable) {
409
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
410
+ editlock: {
411
+ token: this.editLock.token
412
+ }
413
+ } : {}), {
414
+ enableBreakoutSession: enable
415
+ });
416
+
417
+ // @ts-ignore
418
+ return this.webex.request({
419
+ method: _constants.HTTP_VERBS.PUT,
420
+ uri: this.url,
421
+ body: body
422
+ });
423
+ },
424
+ /**
425
+ * Create new breakout sessions
426
+ * @param {object} sessions -- breakout session group
427
+ * @returns {Promise}
428
+ */
429
+ create: function create(sessions) {
430
+ var _this7 = this;
431
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
432
+ var _breakInfo$body;
433
+ var body, breakInfo;
434
+ return _regenerator.default.wrap(function _callee2$(_context2) {
435
+ while (1) switch (_context2.prev = _context2.next) {
436
+ case 0:
437
+ body = _objectSpread(_objectSpread({}, _this7.editLock && !!_this7.editLock.token ? {
438
+ editlock: {
439
+ token: _this7.editLock.token
440
+ }
441
+ } : {}), {
442
+ groups: [{
443
+ sessions: sessions
444
+ }]
445
+ }); // @ts-ignore
446
+ _context2.next = 3;
447
+ return _this7.webex.request({
448
+ method: _constants.HTTP_VERBS.PUT,
449
+ uri: _this7.url,
450
+ body: body
451
+ }).catch(function (error) {
452
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#create'));
453
+ });
454
+ case 3:
455
+ breakInfo = _context2.sent;
456
+ if ((_breakInfo$body = breakInfo.body) !== null && _breakInfo$body !== void 0 && _breakInfo$body.groups) {
457
+ _this7.set('groups', breakInfo.body.groups);
458
+ }
459
+
460
+ // clear edit lock info after save breakout session info
461
+ _this7._clearEditLockInfo();
462
+ return _context2.abrupt("return", _promise.default.resolve(breakInfo));
463
+ case 7:
464
+ case "end":
465
+ return _context2.stop();
466
+ }
467
+ }, _callee2);
468
+ }))();
469
+ },
470
+ /**
471
+ * Delete all breakout sessions
472
+ * @returns {Promise}
473
+ */
474
+ clearSessions: function clearSessions() {
475
+ var _this8 = this;
476
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
477
+ var _breakInfo$body2;
478
+ var body, breakInfo;
479
+ return _regenerator.default.wrap(function _callee3$(_context3) {
480
+ while (1) switch (_context3.prev = _context3.next) {
481
+ case 0:
482
+ body = _objectSpread(_objectSpread({}, _this8.editLock && !!_this8.editLock.token ? {
483
+ editlock: {
484
+ token: _this8.editLock.token
485
+ }
486
+ } : {}), {
487
+ groups: [{
488
+ action: _constants.BREAKOUTS.ACTION.DELETE
489
+ }]
490
+ }); // @ts-ignore
491
+ _context3.next = 3;
492
+ return _this8.webex.request({
493
+ method: _constants.HTTP_VERBS.PUT,
494
+ uri: _this8.url,
495
+ body: body
496
+ }).catch(function (error) {
497
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#clearSessions'));
498
+ });
499
+ case 3:
500
+ breakInfo = _context3.sent;
501
+ if ((_breakInfo$body2 = breakInfo.body) !== null && _breakInfo$body2 !== void 0 && _breakInfo$body2.groups) {
502
+ _this8.set('groups', breakInfo.body.groups);
503
+ }
504
+ _this8.shouldFetchPreassignments = false;
505
+ return _context3.abrupt("return", _promise.default.resolve(breakInfo));
506
+ case 7:
507
+ case "end":
508
+ return _context3.stop();
509
+ }
510
+ }, _callee3);
511
+ }))();
512
+ },
513
+ /**
514
+ * Host or cohost starts breakout sessions
515
+ * @param {object} params
516
+ * @returns {Promise}
517
+ */
518
+ start: function start() {
519
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
520
+ var action = _constants.BREAKOUTS.ACTION.START;
521
+ var payload = _objectSpread({
522
+ id: this.breakoutGroupId,
523
+ action: action,
524
+ allowBackToMain: false,
525
+ allowToJoinLater: false,
526
+ duration: _constants.BREAKOUTS.DEFAULT_DURATION
527
+ }, params);
528
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
529
+ editlock: {
530
+ token: this.editLock.token,
531
+ refresh: true
532
+ }
533
+ } : {}), {
534
+ groups: [payload]
535
+ });
536
+ return this.request({
537
+ method: _constants.HTTP_VERBS.PUT,
538
+ uri: this.url,
539
+ body: body
540
+ }).catch(function (error) {
541
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#start'));
542
+ });
543
+ },
544
+ /**
545
+ * Host or cohost ends breakout sessions
546
+ * @param {object} params
547
+ * @returns {Promise}
548
+ */
549
+ end: function end() {
550
+ var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
551
+ var delayCloseTime = this.delayCloseTime,
552
+ id = this.breakoutGroupId;
553
+ var action = _constants.BREAKOUTS.ACTION.CLOSE;
554
+ var payload = _objectSpread({
555
+ id: id,
556
+ action: action,
557
+ delayCloseTime: delayCloseTime
558
+ }, params);
559
+ var body = _objectSpread(_objectSpread({}, this.editLock && !!this.editLock.token ? {
560
+ editlock: {
561
+ token: this.editLock.token,
562
+ refresh: true
563
+ }
564
+ } : {}), {
565
+ groups: [payload]
566
+ });
567
+ return this.request({
568
+ method: _constants.HTTP_VERBS.PUT,
569
+ uri: this.url,
570
+ body: body
571
+ }).catch(function (error) {
572
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#end'));
573
+ });
574
+ },
575
+ /**
576
+ * Host or cohost update breakout sessions
577
+ * @param {Object} params
578
+ * @param {String} params.id
579
+ * @returns {Promise}
580
+ */
581
+ update: function update(params) {
582
+ var _this$editLock;
583
+ if (!params.id) {
584
+ return _promise.default.reject(new Error('Missing breakout group id'));
585
+ }
586
+ var payload = _objectSpread({}, params);
587
+ var body = _objectSpread(_objectSpread({}, (_this$editLock = this.editLock) !== null && _this$editLock !== void 0 && _this$editLock.token ? {
588
+ editlock: {
589
+ token: this.editLock.token,
590
+ refresh: true
591
+ }
592
+ } : {}), {
593
+ groups: [payload]
594
+ });
595
+ return this.request({
596
+ method: _constants.HTTP_VERBS.PUT,
597
+ uri: this.url,
598
+ body: body
599
+ }).catch(function (error) {
600
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#update'));
601
+ });
602
+ },
603
+ /**
604
+ * get existed breakout sessions
605
+ * @param {boolean} editlock -- lock operations of the breakout sessions
606
+ * @returns {Promise}
607
+ */
608
+ getBreakout: function getBreakout(editlock) {
609
+ var _this9 = this;
610
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {
611
+ var _breakout$body, _breakout$body2, _breakout$body2$editl;
612
+ var breakout;
613
+ return _regenerator.default.wrap(function _callee4$(_context4) {
614
+ while (1) switch (_context4.prev = _context4.next) {
615
+ case 0:
616
+ _context4.next = 2;
617
+ return _this9.request({
618
+ method: _constants.HTTP_VERBS.GET,
619
+ uri: _this9.url + (editlock ? "?editlock=".concat(editlock) : '')
620
+ });
621
+ case 2:
622
+ breakout = _context4.sent;
623
+ if ((_breakout$body = breakout.body) !== null && _breakout$body !== void 0 && _breakout$body.groups) {
624
+ _this9.set('groups', breakout.body.groups);
625
+ }
626
+ if (editlock && (_breakout$body2 = breakout.body) !== null && _breakout$body2 !== void 0 && (_breakout$body2$editl = _breakout$body2.editlock) !== null && _breakout$body2$editl !== void 0 && _breakout$body2$editl.token) {
627
+ _this9.set('editLock', breakout.body.editlock);
628
+ _this9.keepEditLockAlive();
629
+ }
630
+ return _context4.abrupt("return", breakout);
631
+ case 6:
632
+ case "end":
633
+ return _context4.stop();
634
+ }
635
+ }, _callee4);
636
+ }))();
637
+ },
638
+ /**
639
+ * enable and edit lock breakout
640
+ * @returns {void}
641
+ */
642
+ enableAndLockBreakout: function enableAndLockBreakout() {
643
+ var _this10 = this;
644
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {
645
+ var info;
646
+ return _regenerator.default.wrap(function _callee5$(_context5) {
647
+ while (1) switch (_context5.prev = _context5.next) {
648
+ case 0:
649
+ if (!_this10.enableBreakoutSession) {
650
+ _context5.next = 4;
651
+ break;
652
+ }
653
+ _this10.lockBreakout();
654
+ _context5.next = 8;
655
+ break;
656
+ case 4:
657
+ _context5.next = 6;
658
+ return _this10.enableBreakouts();
659
+ case 6:
660
+ info = _context5.sent;
661
+ if (info.body) {
662
+ _this10.lockBreakout();
663
+ }
664
+ case 8:
665
+ case "end":
666
+ return _context5.stop();
667
+ }
668
+ }, _callee5);
669
+ }))();
670
+ },
671
+ /**
672
+ * send breakout edit lock
673
+ * @returns {void}
674
+ */
675
+ lockBreakout: function lockBreakout() {
676
+ var _this11 = this;
677
+ return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {
678
+ var _breakout$body3, breakout;
679
+ return _regenerator.default.wrap(function _callee6$(_context6) {
680
+ while (1) switch (_context6.prev = _context6.next) {
681
+ case 0:
682
+ if (!(_this11.editLock && !!_this11.editLock.token)) {
683
+ _context6.next = 8;
684
+ break;
685
+ }
686
+ if (!(_this11.editLock.state === _constants.BREAKOUTS.EDIT_LOCK_STATUS.LOCKED)) {
687
+ _context6.next = 5;
688
+ break;
689
+ }
690
+ throw new Error('Breakout already locked');
691
+ case 5:
692
+ _this11.keepEditLockAlive();
693
+ case 6:
694
+ _context6.next = 12;
695
+ break;
696
+ case 8:
697
+ _context6.next = 10;
698
+ return _this11.getBreakout(true);
699
+ case 10:
700
+ breakout = _context6.sent;
701
+ if ((_breakout$body3 = breakout.body) !== null && _breakout$body3 !== void 0 && _breakout$body3.editlock) {
702
+ _this11.keepEditLockAlive();
703
+ }
704
+ case 12:
705
+ case "end":
706
+ return _context6.stop();
707
+ }
708
+ }, _callee6);
709
+ }))();
710
+ },
711
+ /**
712
+ * keep edit lock alive
713
+ * @returns {void}
714
+ */
715
+ keepEditLockAlive: function keepEditLockAlive() {
716
+ var _this12 = this;
717
+ if (this.editLock && !!this.editLock.token) {
718
+ var ttl = this.editLock.ttl < 30 ? _constants.BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;
719
+ if (this.intervalID) {
720
+ window.clearInterval(this.intervalID);
721
+ }
722
+ this.intervalID = window.setInterval(function () {
723
+ _this12.request({
724
+ method: _constants.HTTP_VERBS.PUT,
725
+ uri: "".concat(_this12.url, "/editlock/").concat(_this12.editLock.token)
726
+ }).catch(function (error) {
727
+ _this12._clearEditLockInfo();
728
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#keepEditLockAlive'));
729
+ });
730
+ }, ttl / 2 * 1000);
731
+ }
732
+ },
733
+ /**
734
+ * unlock edit breakout
735
+ * @returns {void}
736
+ */
737
+ unLockEditBreakout: function unLockEditBreakout() {
738
+ var _this13 = this;
739
+ if (this.editLock && !!this.editLock.token) {
740
+ this.request({
741
+ method: _constants.HTTP_VERBS.DELETE,
742
+ uri: "".concat(this.url, "/editlock/").concat(this.editLock.token)
743
+ }).then(function () {
744
+ _this13._clearEditLockInfo();
745
+ }).catch(function (error) {
746
+ return _promise.default.reject((0, _utils.boServiceErrorHandler)(error, 'Breakouts#unLockEditBreakout'));
747
+ });
748
+ }
749
+ },
750
+ /**
751
+ * clear interval and edit lock info
752
+ * @private
753
+ * @returns {void}
754
+ */
755
+ _clearEditLockInfo: function _clearEditLockInfo() {
756
+ if (this.intervalID) {
757
+ clearInterval(this.intervalID);
758
+ }
759
+ this.set('editLock', {});
760
+ },
761
+ /**
762
+ * assign participants to breakout session
763
+ * @param {Array} sessions
764
+ * @returns {void}
765
+ */
766
+ assign: function assign(sessions) {
767
+ var internalSessions = sessions.map(function (item) {
768
+ return {
769
+ id: item.id,
770
+ assigned: item.memberIds,
771
+ assignedEmails: item.emails,
772
+ anyoneCanJoin: !!item.anyone
773
+ };
774
+ });
775
+ return this.request({
776
+ method: _constants.HTTP_VERBS.PUT,
777
+ uri: this.url,
778
+ body: {
779
+ groups: [{
780
+ id: this.breakoutGroupId,
781
+ sessions: internalSessions
782
+ }]
783
+ }
784
+ });
785
+ },
786
+ /**
787
+ * The pre-assignments need to be queried when "hasBreakoutPreAssignments" is true
788
+ * @returns {void}
789
+ */
790
+ queryPreAssignments: function queryPreAssignments() {
791
+ var _this14 = this;
792
+ if (!this.shouldFetchPreassignments) {
793
+ this.webex.request({
794
+ uri: "".concat(this.url, "/preassignments"),
795
+ qs: {
796
+ locusUrl: btoa(this.locusUrl)
797
+ }
798
+ }).then(function (result) {
799
+ var _result$body;
800
+ if ((_result$body = result.body) !== null && _result$body !== void 0 && _result$body.groups) {
801
+ _this14.set('groups', result.body.groups);
802
+ }
803
+ }).catch(function (error) {
804
+ _loggerProxy.default.logger.error('Meeting:breakouts#queryPreAssignments failed', error);
805
+ });
806
+ this.shouldFetchPreassignments = true;
807
+ }
808
+ },
809
+ /**
810
+ * assign participants dynamically after breakout sessions started,
811
+ * but currently it only used for admitting participants from lobby into breakout directly
812
+ * @param {Array} sessions
813
+ * @returns {void}
814
+ */
815
+ dynamicAssign: function dynamicAssign(sessions) {
816
+ var updatedSessions = sessions.map(function (item) {
817
+ return {
818
+ id: item.id,
819
+ participants: item.participants,
820
+ targetState: item.targetState
821
+ };
822
+ });
823
+ var body = {
824
+ groups: [{
825
+ id: this.breakoutGroupId,
826
+ sessions: updatedSessions
827
+ }],
828
+ editlock: null
829
+ };
830
+ if (this.editLock && this.editLock.token) {
831
+ body.editlock = this.editLock;
832
+ }
833
+ return this.request({
834
+ method: _constants.HTTP_VERBS.PUT,
835
+ uri: "".concat(this.url, "/dynamicAssign"),
836
+ body: body
837
+ });
838
+ },
839
+ version: "3.0.0-beta.71"
840
+ });
841
+ var _default = Breakouts;
842
+ exports.default = _default;
843
+ //# sourceMappingURL=index.js.map