@webex/plugin-meetings 3.0.0-beta.11 → 3.0.0-beta.111

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