@webex/plugin-meetings 3.0.0-beta.10 → 3.0.0-beta.105

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