@webex/plugin-meetings 3.0.0-beta.26 → 3.0.0-beta.261

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 (361) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +114 -14
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +841 -19
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/request.js +78 -0
  17. package/dist/breakouts/request.js.map +1 -0
  18. package/dist/breakouts/utils.js +67 -0
  19. package/dist/breakouts/utils.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +28 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/queue.js +24 -9
  25. package/dist/common/queue.js.map +1 -1
  26. package/dist/config.js +5 -10
  27. package/dist/config.js.map +1 -1
  28. package/dist/constants.js +196 -28
  29. package/dist/constants.js.map +1 -1
  30. package/dist/controls-options-manager/enums.js +14 -2
  31. package/dist/controls-options-manager/enums.js.map +1 -1
  32. package/dist/controls-options-manager/index.js +109 -15
  33. package/dist/controls-options-manager/index.js.map +1 -1
  34. package/dist/controls-options-manager/types.js +7 -0
  35. package/dist/controls-options-manager/types.js.map +1 -0
  36. package/dist/controls-options-manager/util.js +309 -18
  37. package/dist/controls-options-manager/util.js.map +1 -1
  38. package/dist/index.js +112 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/interpretation/collection.js +23 -0
  41. package/dist/interpretation/collection.js.map +1 -0
  42. package/dist/interpretation/index.js +366 -0
  43. package/dist/interpretation/index.js.map +1 -0
  44. package/dist/interpretation/siLanguage.js +25 -0
  45. package/dist/interpretation/siLanguage.js.map +1 -0
  46. package/dist/locus-info/controlsUtils.js +91 -2
  47. package/dist/locus-info/controlsUtils.js.map +1 -1
  48. package/dist/locus-info/index.js +381 -62
  49. package/dist/locus-info/index.js.map +1 -1
  50. package/dist/locus-info/infoUtils.js +7 -1
  51. package/dist/locus-info/infoUtils.js.map +1 -1
  52. package/dist/locus-info/mediaSharesUtils.js +43 -1
  53. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  54. package/dist/locus-info/parser.js +224 -63
  55. package/dist/locus-info/parser.js.map +1 -1
  56. package/dist/locus-info/selfUtils.js +89 -14
  57. package/dist/locus-info/selfUtils.js.map +1 -1
  58. package/dist/media/index.js +58 -116
  59. package/dist/media/index.js.map +1 -1
  60. package/dist/media/properties.js +60 -121
  61. package/dist/media/properties.js.map +1 -1
  62. package/dist/meeting/in-meeting-actions.js +82 -2
  63. package/dist/meeting/in-meeting-actions.js.map +1 -1
  64. package/dist/meeting/index.js +3022 -2795
  65. package/dist/meeting/index.js.map +1 -1
  66. package/dist/meeting/locusMediaRequest.js +292 -0
  67. package/dist/meeting/locusMediaRequest.js.map +1 -0
  68. package/dist/meeting/muteState.js +230 -124
  69. package/dist/meeting/muteState.js.map +1 -1
  70. package/dist/meeting/request.js +256 -196
  71. package/dist/meeting/request.js.map +1 -1
  72. package/dist/meeting/util.js +601 -417
  73. package/dist/meeting/util.js.map +1 -1
  74. package/dist/meeting-info/index.js +70 -7
  75. package/dist/meeting-info/index.js.map +1 -1
  76. package/dist/meeting-info/meeting-info-v2.js +189 -51
  77. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  78. package/dist/meeting-info/util.js +1 -1
  79. package/dist/meeting-info/util.js.map +1 -1
  80. package/dist/meeting-info/utilv2.js +36 -36
  81. package/dist/meeting-info/utilv2.js.map +1 -1
  82. package/dist/meetings/collection.js +22 -0
  83. package/dist/meetings/collection.js.map +1 -1
  84. package/dist/meetings/index.js +372 -90
  85. package/dist/meetings/index.js.map +1 -1
  86. package/dist/meetings/meetings.types.js +7 -0
  87. package/dist/meetings/meetings.types.js.map +1 -0
  88. package/dist/meetings/request.js +2 -0
  89. package/dist/meetings/request.js.map +1 -1
  90. package/dist/meetings/util.js +88 -1
  91. package/dist/meetings/util.js.map +1 -1
  92. package/dist/member/index.js +49 -0
  93. package/dist/member/index.js.map +1 -1
  94. package/dist/member/types.js +25 -0
  95. package/dist/member/types.js.map +1 -0
  96. package/dist/member/util.js +121 -25
  97. package/dist/member/util.js.map +1 -1
  98. package/dist/members/collection.js +10 -0
  99. package/dist/members/collection.js.map +1 -1
  100. package/dist/members/index.js +86 -5
  101. package/dist/members/index.js.map +1 -1
  102. package/dist/members/request.js +106 -38
  103. package/dist/members/request.js.map +1 -1
  104. package/dist/members/types.js +15 -0
  105. package/dist/members/types.js.map +1 -0
  106. package/dist/members/util.js +316 -233
  107. package/dist/members/util.js.map +1 -1
  108. package/dist/metrics/constants.js +10 -5
  109. package/dist/metrics/constants.js.map +1 -1
  110. package/dist/metrics/index.js +1 -468
  111. package/dist/metrics/index.js.map +1 -1
  112. package/dist/multistream/mediaRequestManager.js +238 -49
  113. package/dist/multistream/mediaRequestManager.js.map +1 -1
  114. package/dist/multistream/receiveSlot.js +49 -16
  115. package/dist/multistream/receiveSlot.js.map +1 -1
  116. package/dist/multistream/receiveSlotManager.js +52 -34
  117. package/dist/multistream/receiveSlotManager.js.map +1 -1
  118. package/dist/multistream/remoteMedia.js +44 -18
  119. package/dist/multistream/remoteMedia.js.map +1 -1
  120. package/dist/multistream/remoteMediaGroup.js +60 -3
  121. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  122. package/dist/multistream/remoteMediaManager.js +209 -59
  123. package/dist/multistream/remoteMediaManager.js.map +1 -1
  124. package/dist/multistream/sendSlotManager.js +233 -0
  125. package/dist/multistream/sendSlotManager.js.map +1 -0
  126. package/dist/reachability/index.js +161 -57
  127. package/dist/reachability/index.js.map +1 -1
  128. package/dist/reachability/request.js +17 -8
  129. package/dist/reachability/request.js.map +1 -1
  130. package/dist/reconnection-manager/index.js +199 -154
  131. package/dist/reconnection-manager/index.js.map +1 -1
  132. package/dist/recording-controller/index.js +21 -2
  133. package/dist/recording-controller/index.js.map +1 -1
  134. package/dist/recording-controller/util.js +9 -8
  135. package/dist/recording-controller/util.js.map +1 -1
  136. package/dist/roap/index.js +23 -29
  137. package/dist/roap/index.js.map +1 -1
  138. package/dist/roap/request.js +112 -97
  139. package/dist/roap/request.js.map +1 -1
  140. package/dist/roap/turnDiscovery.js +96 -36
  141. package/dist/roap/turnDiscovery.js.map +1 -1
  142. package/dist/rtcMetrics/constants.js +12 -0
  143. package/dist/rtcMetrics/constants.js.map +1 -0
  144. package/dist/rtcMetrics/index.js +117 -0
  145. package/dist/rtcMetrics/index.js.map +1 -0
  146. package/dist/statsAnalyzer/index.js +51 -34
  147. package/dist/statsAnalyzer/index.js.map +1 -1
  148. package/dist/statsAnalyzer/mqaUtil.js +6 -6
  149. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  150. package/dist/types/annotation/annotation.types.d.ts +42 -0
  151. package/dist/types/annotation/constants.d.ts +31 -0
  152. package/dist/types/annotation/index.d.ts +117 -0
  153. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  154. package/dist/types/breakouts/events.d.ts +8 -0
  155. package/dist/types/breakouts/request.d.ts +22 -0
  156. package/dist/types/breakouts/utils.d.ts +15 -0
  157. package/dist/types/common/errors/webex-errors.d.ts +13 -1
  158. package/dist/types/common/queue.d.ts +9 -7
  159. package/dist/types/config.d.ts +1 -6
  160. package/dist/types/constants.d.ts +155 -21
  161. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  162. package/dist/types/controls-options-manager/index.d.ts +17 -1
  163. package/dist/types/controls-options-manager/types.d.ts +43 -0
  164. package/dist/types/controls-options-manager/util.d.ts +1 -7
  165. package/dist/types/index.d.ts +6 -4
  166. package/dist/types/interpretation/collection.d.ts +5 -0
  167. package/dist/types/interpretation/index.d.ts +5 -0
  168. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  169. package/dist/types/locus-info/index.d.ts +57 -4
  170. package/dist/types/locus-info/parser.d.ts +65 -6
  171. package/dist/types/media/index.d.ts +2 -0
  172. package/dist/types/media/properties.d.ts +34 -48
  173. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  174. package/dist/types/meeting/index.d.ts +344 -506
  175. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  176. package/dist/types/meeting/muteState.d.ts +99 -23
  177. package/dist/types/meeting/request.d.ts +72 -43
  178. package/dist/types/meeting/util.d.ts +101 -1
  179. package/dist/types/meeting-info/index.d.ts +13 -1
  180. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  181. package/dist/types/meetings/collection.d.ts +8 -0
  182. package/dist/types/meetings/index.d.ts +86 -12
  183. package/dist/types/meetings/meetings.types.d.ts +4 -0
  184. package/dist/types/member/index.d.ts +13 -0
  185. package/dist/types/member/types.d.ts +32 -0
  186. package/dist/types/members/collection.d.ts +5 -0
  187. package/dist/types/members/index.d.ts +35 -2
  188. package/dist/types/members/request.d.ts +73 -9
  189. package/dist/types/members/types.d.ts +24 -0
  190. package/dist/types/members/util.d.ts +209 -1
  191. package/dist/types/metrics/constants.d.ts +9 -4
  192. package/dist/types/metrics/index.d.ts +4 -119
  193. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  194. package/dist/types/multistream/receiveSlot.d.ts +16 -12
  195. package/dist/types/multistream/receiveSlotManager.d.ts +19 -4
  196. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  197. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  198. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  199. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  200. package/dist/types/reachability/index.d.ts +44 -7
  201. package/dist/types/reachability/request.d.ts +7 -3
  202. package/dist/types/reconnection-manager/index.d.ts +9 -0
  203. package/dist/types/recording-controller/index.d.ts +15 -1
  204. package/dist/types/recording-controller/util.d.ts +5 -4
  205. package/dist/types/roap/request.d.ts +15 -11
  206. package/dist/types/roap/turnDiscovery.d.ts +18 -1
  207. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  208. package/dist/types/rtcMetrics/index.d.ts +47 -0
  209. package/dist/types/statsAnalyzer/index.d.ts +6 -1
  210. package/package.json +23 -20
  211. package/src/annotation/annotation.types.ts +50 -0
  212. package/src/annotation/constants.ts +36 -0
  213. package/src/annotation/index.ts +328 -0
  214. package/src/breakouts/README.md +44 -14
  215. package/src/breakouts/breakout.ts +87 -9
  216. package/src/breakouts/edit-lock-error.ts +25 -0
  217. package/src/breakouts/events.ts +56 -0
  218. package/src/breakouts/index.ts +710 -10
  219. package/src/breakouts/request.ts +55 -0
  220. package/src/breakouts/utils.ts +57 -0
  221. package/src/common/errors/webex-errors.ts +27 -2
  222. package/src/common/logs/logger-proxy.ts +1 -1
  223. package/src/common/queue.ts +22 -8
  224. package/src/config.ts +4 -9
  225. package/src/constants.ts +178 -18
  226. package/src/controls-options-manager/enums.ts +12 -0
  227. package/src/controls-options-manager/index.ts +116 -21
  228. package/src/controls-options-manager/types.ts +59 -0
  229. package/src/controls-options-manager/util.ts +294 -14
  230. package/src/index.ts +40 -0
  231. package/src/interpretation/README.md +60 -0
  232. package/src/interpretation/collection.ts +19 -0
  233. package/src/interpretation/index.ts +332 -0
  234. package/src/interpretation/siLanguage.ts +18 -0
  235. package/src/locus-info/controlsUtils.ts +108 -0
  236. package/src/locus-info/index.ts +412 -59
  237. package/src/locus-info/infoUtils.ts +10 -2
  238. package/src/locus-info/mediaSharesUtils.ts +48 -0
  239. package/src/locus-info/parser.ts +231 -39
  240. package/src/locus-info/selfUtils.ts +81 -5
  241. package/src/media/index.ts +100 -122
  242. package/src/media/properties.ts +70 -108
  243. package/src/meeting/in-meeting-actions.ts +163 -3
  244. package/src/meeting/index.ts +2471 -2306
  245. package/src/meeting/locusMediaRequest.ts +313 -0
  246. package/src/meeting/muteState.ts +229 -131
  247. package/src/meeting/request.ts +172 -121
  248. package/src/meeting/util.ts +588 -394
  249. package/src/meeting-info/index.ts +79 -8
  250. package/src/meeting-info/meeting-info-v2.ts +168 -14
  251. package/src/meeting-info/util.ts +1 -1
  252. package/src/meeting-info/utilv2.ts +23 -23
  253. package/src/meetings/collection.ts +20 -0
  254. package/src/meetings/index.ts +414 -108
  255. package/src/meetings/meetings.types.ts +12 -0
  256. package/src/meetings/request.ts +2 -0
  257. package/src/meetings/util.ts +103 -4
  258. package/src/member/index.ts +49 -0
  259. package/src/member/types.ts +38 -0
  260. package/src/member/util.ts +127 -25
  261. package/src/members/collection.ts +8 -0
  262. package/src/members/index.ts +107 -6
  263. package/src/members/request.ts +97 -17
  264. package/src/members/types.ts +28 -0
  265. package/src/members/util.ts +319 -240
  266. package/src/metrics/constants.ts +9 -4
  267. package/src/metrics/index.ts +1 -490
  268. package/src/multistream/mediaRequestManager.ts +289 -79
  269. package/src/multistream/receiveSlot.ts +55 -18
  270. package/src/multistream/receiveSlotManager.ts +46 -24
  271. package/src/multistream/remoteMedia.ts +27 -2
  272. package/src/multistream/remoteMediaGroup.ts +59 -0
  273. package/src/multistream/remoteMediaManager.ts +148 -30
  274. package/src/multistream/sendSlotManager.ts +170 -0
  275. package/src/reachability/index.ts +165 -37
  276. package/src/reachability/request.ts +17 -8
  277. package/src/reconnection-manager/index.ts +81 -54
  278. package/src/recording-controller/index.ts +20 -3
  279. package/src/recording-controller/util.ts +26 -9
  280. package/src/roap/index.ts +23 -30
  281. package/src/roap/request.ts +100 -104
  282. package/src/roap/turnDiscovery.ts +51 -25
  283. package/src/rtcMetrics/constants.ts +3 -0
  284. package/src/rtcMetrics/index.ts +100 -0
  285. package/src/statsAnalyzer/index.ts +73 -35
  286. package/src/statsAnalyzer/mqaUtil.ts +8 -10
  287. package/test/integration/spec/converged-space-meetings.js +233 -0
  288. package/test/integration/spec/journey.js +320 -261
  289. package/test/integration/spec/space-meeting.js +76 -3
  290. package/test/unit/spec/annotation/index.ts +418 -0
  291. package/test/unit/spec/breakouts/breakout.ts +142 -24
  292. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  293. package/test/unit/spec/breakouts/events.ts +89 -0
  294. package/test/unit/spec/breakouts/index.ts +1545 -48
  295. package/test/unit/spec/breakouts/request.ts +104 -0
  296. package/test/unit/spec/breakouts/utils.js +72 -0
  297. package/test/unit/spec/common/queue.js +31 -2
  298. package/test/unit/spec/controls-options-manager/index.js +163 -0
  299. package/test/unit/spec/controls-options-manager/util.js +576 -60
  300. package/test/unit/spec/fixture/locus.js +1 -0
  301. package/test/unit/spec/interpretation/collection.ts +15 -0
  302. package/test/unit/spec/interpretation/index.ts +589 -0
  303. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  304. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  305. package/test/unit/spec/locus-info/index.js +1283 -33
  306. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  307. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  308. package/test/unit/spec/locus-info/parser.js +62 -22
  309. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  310. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  311. package/test/unit/spec/media/index.ts +104 -37
  312. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  313. package/test/unit/spec/meeting/index.js +4095 -1913
  314. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  315. package/test/unit/spec/meeting/muteState.js +408 -208
  316. package/test/unit/spec/meeting/request.js +440 -45
  317. package/test/unit/spec/meeting/utils.js +679 -64
  318. package/test/unit/spec/meeting-info/index.js +293 -0
  319. package/test/unit/spec/meeting-info/meetinginfov2.js +517 -5
  320. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  321. package/test/unit/spec/meetings/collection.js +14 -0
  322. package/test/unit/spec/meetings/index.js +941 -151
  323. package/test/unit/spec/meetings/utils.js +206 -2
  324. package/test/unit/spec/member/index.js +58 -4
  325. package/test/unit/spec/member/util.js +479 -35
  326. package/test/unit/spec/members/index.js +319 -1
  327. package/test/unit/spec/members/request.js +206 -27
  328. package/test/unit/spec/members/utils.js +184 -0
  329. package/test/unit/spec/metrics/index.js +1 -50
  330. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  331. package/test/unit/spec/multistream/receiveSlot.ts +72 -13
  332. package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
  333. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  334. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  335. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  336. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  337. package/test/unit/spec/reachability/index.ts +343 -9
  338. package/test/unit/spec/reachability/request.js +68 -0
  339. package/test/unit/spec/reconnection-manager/index.js +84 -9
  340. package/test/unit/spec/recording-controller/index.js +294 -218
  341. package/test/unit/spec/recording-controller/util.js +223 -96
  342. package/test/unit/spec/roap/index.ts +31 -51
  343. package/test/unit/spec/roap/request.ts +203 -85
  344. package/test/unit/spec/roap/turnDiscovery.ts +48 -13
  345. package/test/unit/spec/rtcMetrics/index.ts +68 -0
  346. package/test/unit/spec/stats-analyzer/index.js +29 -2
  347. package/test/utils/constants.js +9 -0
  348. package/test/utils/integrationTestUtils.js +46 -0
  349. package/test/utils/testUtils.js +0 -45
  350. package/test/utils/webex-config.js +4 -0
  351. package/test/utils/webex-test-users.js +6 -3
  352. package/dist/meeting/effectsState.js +0 -262
  353. package/dist/meeting/effectsState.js.map +0 -1
  354. package/dist/metrics/config.js +0 -299
  355. package/dist/metrics/config.js.map +0 -1
  356. package/dist/types/meeting/effectsState.d.ts +0 -42
  357. package/dist/types/metrics/config.d.ts +0 -178
  358. package/src/index.js +0 -16
  359. package/src/meeting/effectsState.ts +0 -211
  360. package/src/metrics/config.ts +0 -495
  361. package/test/unit/spec/meeting/effectsState.js +0 -285
@@ -1 +1 @@
1
- {"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","children","currentBreakoutSession","Breakout","derived","isInMainSession","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","initialize","listenTo","STATUS","CLOSING","trigger","EVENTS","BREAKOUTS_CLOSING","debouncedQueryRosters","queryRosters","leading","trailing","listenToBroadcastMessages","listenToBreakoutRosters","cleanUp","stopListening","locusUrlUpdate","set","webex","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","breakout","session","get","parseRoster","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED_CURRENT","REQUESTED","updateBreakoutSessions","payload","breakoutSessions","state","ASSIGNED"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n },\n\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:status', () => {\n if (this.status === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', () => {\n this.debouncedQueryRosters();\n });\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n });\n });\n }\n\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n});\n\nexport default Breakouts;\n"],"mappings":";;;;;;;;;;;;AAGA;AAEA;AAEA;AAEA;AACA;AAVA;AACA;AACA;;AAUA;AACA;AACA;AACA,IAAMA,SAAS,GAAGC,sBAAW,CAACC,MAAM,CAAC;EACnCC,SAAS,EAAEC,mBAAQ;EAEnBC,WAAW,EAAE;IACXC,SAAS,EAAEC;EACb,CAAC;EAEDC,KAAK,EAAE;IACLC,eAAe,EAAE,SAAS;IAAE;IAC5BC,cAAc,EAAE,QAAQ;IAAE;IAC1BC,qBAAqB,EAAE,SAAS;IAAE;IAClCC,OAAO,EAAE,QAAQ;IAAE;IACnBC,IAAI,EAAE,QAAQ;IAAE;IAChBC,SAAS,EAAE,QAAQ;IAAE;IACrBC,WAAW,EAAE,QAAQ;IAAE;IACvBC,SAAS,EAAE,QAAQ;IAAE;IACrBC,MAAM,EAAE,QAAQ;IAAE;IAClBC,GAAG,EAAE,QAAQ;IAAE;IACfC,QAAQ,EAAE,QAAQ,CAAE;EACtB,CAAC;;EAEDC,QAAQ,EAAE;IACRC,sBAAsB,EAAEC;EAC1B,CAAC;EAEDC,OAAO,EAAE;IACPC,eAAe,EAAE;MACfC,IAAI,EAAE,CAAC,aAAa,CAAC;MACrB;AACN;AACA;AACA;MACMC,EAAE,gBAAG;QACH,OAAO,IAAI,CAACX,WAAW,KAAKY,oBAAS,CAACC,aAAa,CAACC,IAAI;MAC1D;IACF;EACF,CAAC;EAED;AACF;AACA;AACA;EACEC,UAAU,wBAAG;IAAA;IACX,IAAI,CAACC,QAAQ,CAAC,IAAI,EAAE,eAAe,EAAE,YAAM;MACzC,IAAI,KAAI,CAACd,MAAM,KAAKU,oBAAS,CAACK,MAAM,CAACC,OAAO,EAAE;QAC5C,KAAI,CAACC,OAAO,CAACP,oBAAS,CAACQ,MAAM,CAACC,iBAAiB,CAAC;MAClD;IACF,CAAC,CAAC;IACF,IAAI,CAACC,qBAAqB,GAAG,wBAAS,IAAI,CAACC,YAAY,EAAE,EAAE,EAAE;MAC3DC,OAAO,EAAE,IAAI;MACbC,QAAQ,EAAE;IACZ,CAAC,CAAC;IACF,IAAI,CAACT,QAAQ,CAAC,IAAI,CAACzB,SAAS,EAAE,KAAK,EAAE,YAAM;MACzC,KAAI,CAAC+B,qBAAqB,EAAE;IAC9B,CAAC,CAAC;IACF,IAAI,CAACI,yBAAyB,EAAE;IAChC,IAAI,CAACC,uBAAuB,EAAE;EAChC,CAAC;EAED;AACF;AACA;AACA;EACEC,OAAO,qBAAG;IACR,IAAI,CAACC,aAAa,EAAE;EACtB,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,cAAc,0BAAC1B,QAAQ,EAAE;IACvB,IAAI,CAAC2B,GAAG,CAAC,UAAU,EAAE3B,QAAQ,CAAC;EAChC,CAAC;EAED;AACF;AACA;AACA;AACA;EACEmB,YAAY,0BAAG;IAAA;IACb,IAAI,CAACS,KAAK,CACPC,OAAO,CAAC;MAACC,GAAG,YAAK,IAAI,CAAC/B,GAAG,YAAS;MAAEgC,EAAE,EAAE;QAAC/B,QAAQ,EAAEgC,IAAI,CAAC,IAAI,CAAChC,QAAQ;MAAC;IAAC,CAAC,CAAC,CACzEiC,IAAI,CAAC,UAACC,MAAM,EAAK;MAChB,IACSC,OAAO,GACZD,MAAM,CADRE,IAAI,CAAGD,OAAO;MAGhBA,OAAO,CAACE,OAAO,CAAC,gBAAa;QAAA,IAAXC,KAAK,QAALA,KAAK;QACrB,MAAI,CAACC,kBAAkB,CAACD,KAAK,CAAC;MAChC,CAAC,CAAC;MAEF,MAAI,CAACvB,OAAO,CAACP,oBAAS,CAACQ,MAAM,CAACwB,cAAc,CAAC;IAC/C,CAAC,CAAC,CACDC,KAAK,CAAC,UAACC,KAAK,EAAK;MAChBC,oBAAW,CAACC,MAAM,CAACF,KAAK,CAAC,uCAAuC,EAAEA,KAAK,CAAC;IAC1E,CAAC,CAAC;EACN,CAAC;EAED;AACF;AACA;AACA;AACA;EACEH,kBAAkB,8BAACD,KAAK,EAAE;IAAA;IACxB,IAAM3C,SAAS,sBAAG2C,KAAK,CAACO,QAAQ,6EAAd,gBAAgBC,QAAQ,0DAAxB,sBAA0BnD,SAAS;IAErD,IAAMoD,OAAO,GAAG,IAAI,CAAC5D,SAAS,CAAC6D,GAAG,CAACrD,SAAS,CAAC;IAE7C,IAAI,CAACoD,OAAO,EAAE;MACZ;IACF;IAEAA,OAAO,CAACE,WAAW,CAACX,KAAK,CAAC;EAC5B,CAAC;EAED;AACF;AACA;AACA;EACEhB,yBAAyB,uCAAG;IAAA;IAC1B,IAAI,CAACV,QAAQ,CAAC,IAAI,CAACgB,KAAK,CAACsB,QAAQ,CAACC,GAAG,EAAE,wBAAwB,EAAE,UAACC,KAAK,EAAK;MAC1E,kBAEIA,KAAK,CADPC,IAAI;QAAGC,YAAY,eAAZA,YAAY;QAAEC,QAAQ,eAARA,QAAQ;QAAEC,OAAO,eAAPA,OAAO;MAGxC,MAAI,CAACzC,OAAO,CAACP,oBAAS,CAACQ,MAAM,CAACyC,OAAO,EAAE;QACrCH,YAAY,EAAZA,YAAY;QACZC,QAAQ,EAARA,QAAQ;QACRC,OAAO,EAAPA,OAAO;QACP;QACA;QACA;QACA7D,SAAS,EAAE,MAAI,CAACO,sBAAsB,CAACP;MACzC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;EACE4B,uBAAuB,qCAAG;IAAA;IACxB,IAAI,CAACX,QAAQ,CAAC,IAAI,CAACgB,KAAK,CAACsB,QAAQ,CAACQ,OAAO,EAAE,uBAAuB,EAAE,UAACN,KAAK,EAAK;MAC7E,MAAI,CAACb,kBAAkB,CAACa,KAAK,CAACC,IAAI,CAACf,KAAK,CAAC;MACzC,MAAI,CAACvB,OAAO,CAACP,oBAAS,CAACQ,MAAM,CAACwB,cAAc,CAAC;IAC/C,CAAC,CAAC;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEmB,cAAc,0BAACC,MAAM,EAAE;IAAA;IACrB,IAAI,CAACjC,GAAG,CAACiC,MAAM,CAAC;IAEhB,IAAI,CAACjC,GAAG,CAAC,wBAAwB;MAC/BhC,SAAS,EAAEiE,MAAM,CAACjE,SAAS;MAC3BF,OAAO,EAAEmE,MAAM,CAACnE,OAAO;MACvBC,IAAI,EAAEkE,MAAM,CAAClE,IAAI;MACjBmE,OAAO,EAAE,IAAI;MACbjE,WAAW,EAAEgE,MAAM,CAAChE,WAAW;MAC/BG,GAAG,EAAE6D,MAAM,CAAC7D;IAAG,4CACdS,oBAAS,CAACsD,cAAc,CAACC,MAAM,EAAG,KAAK,4CACvCvD,oBAAS,CAACsD,cAAc,CAACE,OAAO,EAAG,KAAK,4CACxCxD,oBAAS,CAACsD,cAAc,CAACE,OAAO,EAAG,KAAK,4CACxCxD,oBAAS,CAACsD,cAAc,CAACG,gBAAgB,EAAG,KAAK,4CACjDzD,oBAAS,CAACsD,cAAc,CAACI,SAAS,EAAG,KAAK,cAC3C;EACJ,CAAC;EAED;AACF;AACA;AACA;AACA;EACEC,sBAAsB,kCAACC,OAAO,EAAE;IAAA;IAC9B,IAAMjF,SAAS,GAAG,CAAC,CAAC;IAEpB,IAAIiF,OAAO,CAACC,gBAAgB,EAAE;MAC5B,uBAAQ7D,oBAAS,CAACsD,cAAc,EAAE,UAACQ,KAAK,EAAK;QAC3C,uBAAQF,OAAO,CAACC,gBAAgB,CAACC,KAAK,CAAC,EAAE,UAACxB,QAAQ,EAAK;UACrD,IAAOnD,SAAS,GAAImD,QAAQ,CAArBnD,SAAS;UAEhB,IAAI,CAACR,SAAS,CAACQ,SAAS,CAAC,EAAE;YACzBR,SAAS,CAACQ,SAAS,CAAC,GAAGmD,QAAQ;YAC/B3D,SAAS,CAACQ,SAAS,CAAC,CAACa,oBAAS,CAACsD,cAAc,CAACC,MAAM,CAAC,GAAG,KAAK;YAC7D5E,SAAS,CAACQ,SAAS,CAAC,CAACa,oBAAS,CAACsD,cAAc,CAACS,QAAQ,CAAC,GAAG,KAAK;YAC/DpF,SAAS,CAACQ,SAAS,CAAC,CAACa,oBAAS,CAACsD,cAAc,CAACE,OAAO,CAAC,GAAG,KAAK;YAC9D7E,SAAS,CAACQ,SAAS,CAAC,CAACa,oBAAS,CAACsD,cAAc,CAACG,gBAAgB,CAAC,GAAG,KAAK;YACvE9E,SAAS,CAACQ,SAAS,CAAC,CAACa,oBAAS,CAACsD,cAAc,CAACI,SAAS,CAAC,GAAG,KAAK;UAClE;UAEA/E,SAAS,CAACQ,SAAS,CAAC,CAAC2E,KAAK,CAAC,GAAG,IAAI;QACpC,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ;IAEA,uBAAQnF,SAAS,EAAE,UAAC2D,QAAyB,EAAK;MAChD;MACAA,QAAQ,CAAC/C,GAAG,GAAG,MAAI,CAACA,GAAG;IACzB,CAAC,CAAC;IAEF,IAAI,CAACZ,SAAS,CAACwC,GAAG,CAAC,qBAAcxC,SAAS,CAAC,CAAC;EAC9C,CAAC;EAAA;AACH,CAAC,CAAC;AAAC,eAEYN,SAAS;AAAA"}
1
+ {"version":3,"names":["Breakouts","WebexPlugin","extend","namespace","MEETINGS","breakoutRequest","BreakoutRequest","collections","breakouts","BreakoutCollection","props","allowBackToMain","delayCloseTime","enableBreakoutSession","hasBreakoutPreAssignments","groupId","name","sessionId","sessionType","startTime","status","url","locusUrl","breakoutServiceUrl","mainLocusUrl","groups","manageGroups","preAssignments","editLock","intervalID","meetingId","canManageBreakouts","children","currentBreakoutSession","Breakout","derived","isInMainSession","cache","deps","fn","BREAKOUTS","SESSION_TYPES","MAIN","isActiveBreakout","BREAKOUT","STATUS","OPEN","CLOSING","breakoutGroupId","length","CLOSED","id","breakoutStatus","shouldQueryPreAssignments","initialize","listenTo","trigger","EVENTS","BREAKOUTS_CLOSING","queryPreAssignments","debouncedQueryRosters","queryRosters","leading","trailing","breakout","triggerReturnToMainEvent","listenToCurrentSessionTypeChange","listenToBroadcastMessages","listenToBreakoutRosters","listenToBreakoutHelp","webex","cleanUp","stopListening","locusUrlUpdate","set","updateCanManageBreakouts","breakoutServiceUrlUpdate","request","uri","qs","btoa","then","result","rosters","body","forEach","locus","handleRosterUpdate","MEMBERS_UPDATE","catch","error","LoggerProxy","logger","controls","session","get","parseRoster","isSessionTypeChangedFromSessionToMain","LEAVE_BREAKOUT","internal","llm","event","data","senderUserId","sentTime","message","MESSAGE","mercury","participant","ASK_FOR_HELP","isBreakoutInProgress","currentStatus","isBreakoutIClosing","updateBreakout","params","current","SESSION_STATES","ACTIVE","ALLOWED","ASSIGNED","ASSIGNED_CURRENT","REQUESTED","clearBreakouts","previous","meeting","meetings","getMeetingByType","_ID_","breakoutEvent","onBreakoutJoinResponse","currentSession","breakoutMoveId","newMetrics","submitClientEvent","bind","updateBreakoutSessions","payload","breakoutSessions","state","requestedLastModifiedTime","modifiedAt","reset","getMainSession","mainSession","filter","isMain","Error","askAllToReturn","method","HTTP_VERBS","POST","broadcast","options","enableBreakouts","err","reject","toggleBreakout","enable","undefined","info","doToggleBreakout","token","editlock","PUT","_setManageGroups","breakoutInfo","create","boServiceErrorHandler","_clearEditLockInfo","clearSessions","action","ACTION","DELETE","start","START","allowToJoinLater","refresh","end","CLOSE","update","unlockEdit","getBreakout","GET","keepEditLockAlive","enableAndLockBreakout","lockBreakout","hasBreakoutLocked","EDIT_LOCK_STATUS","LOCKED","ttl","DEFAULT_TTL","window","clearInterval","setInterval","unLockEditBreakout","assign","sessions","internalSessions","map","item","assigned","memberIds","assignedEmails","emails","anyoneCanJoin","anyone","PRE_ASSIGNMENTS_UPDATE","dynamicAssign","updatedSessions","participants","targetState","requested","ASK_RETURN_TO_MAIN"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.\n */\nimport {WebexPlugin} from '@webex/webex-core';\nimport {debounce, forEach} from 'lodash';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\nimport {BREAKOUTS, MEETINGS, HTTP_VERBS, _ID_} from '../constants';\n\nimport Breakout from './breakout';\nimport BreakoutCollection from './collection';\nimport BreakoutRequest from './request';\nimport breakoutEvent from './events';\nimport {boServiceErrorHandler, isSessionTypeChangedFromSessionToMain} from './utils';\n\n/**\n * @class Breakouts\n */\nconst Breakouts = WebexPlugin.extend({\n namespace: MEETINGS,\n breakoutRequest: BreakoutRequest,\n collections: {\n breakouts: BreakoutCollection,\n },\n\n props: {\n allowBackToMain: 'boolean', // only present when in a breakout session\n delayCloseTime: 'number', // appears once breakouts start\n enableBreakoutSession: 'boolean', // appears from the moment you enable breakouts\n hasBreakoutPreAssignments: 'boolean', // appears from the moment you enable breakouts\n groupId: 'string', // appears from the moment you enable breakouts\n name: 'string', // only present when in a breakout session\n sessionId: 'string', // appears from the moment you enable breakouts\n sessionType: 'string', // appears from the moment you enable breakouts\n startTime: 'string', // appears once breakouts start\n status: 'string', // only present when in a breakout session\n url: 'string', // appears from the moment you enable breakouts\n locusUrl: 'string', // the current locus url\n breakoutServiceUrl: 'string', // the current breakout resource url\n mainLocusUrl: 'string', // the locus url of the main session\n groups: 'array', // appears when create breakouts\n manageGroups: 'array', // appears when manage breakouts\n preAssignments: 'array', // appears when getPreAssignments info hasBreakoutPreAssignments = true\n editLock: 'object', // appears when getBreakout info editlock = true\n intervalID: 'number',\n meetingId: 'string',\n canManageBreakouts: 'boolean', // appear the ability to manage breakouts\n },\n children: {\n currentBreakoutSession: Breakout,\n },\n\n derived: {\n isInMainSession: {\n cache: false,\n deps: ['sessionType'],\n /**\n * Returns true if the user is in the main session\n * @returns {boolean}\n */\n fn() {\n return this.sessionType === BREAKOUTS.SESSION_TYPES.MAIN;\n },\n },\n isActiveBreakout: {\n cache: false, // fix issue: sometimes the derived will not change even if the deps changed\n deps: ['sessionType', 'status'],\n /**\n * Returns true if the breakout status is active\n * @returns {boolean}\n */\n fn() {\n return (\n this.sessionType === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n (this.status === BREAKOUTS.STATUS.OPEN || this.status === BREAKOUTS.STATUS.CLOSING)\n );\n },\n },\n breakoutGroupId: {\n cache: false,\n deps: ['manageGroups'],\n /**\n * Returns the active group id\n * @returns {boolean}\n */\n fn() {\n if (this.manageGroups?.length) {\n return this.manageGroups[0].status !== BREAKOUTS.STATUS.CLOSED\n ? this.manageGroups[0].id\n : '';\n }\n\n return '';\n },\n },\n breakoutStatus: {\n cache: true,\n deps: ['isInMainSession', 'status', 'groups'],\n /**\n * Returns the breakout status\n * @returns {boolean}\n */\n fn() {\n return this.isInMainSession ? this.groups?.[0]?.status : this.status;\n },\n },\n shouldQueryPreAssignments: {\n cache: false,\n deps: ['canManageBreakouts', 'enableBreakoutSession', 'hasBreakoutPreAssignments'],\n /**\n * Returns should query preAssignments or not\n * @returns {boolean}\n */\n fn() {\n return !!(\n this.canManageBreakouts &&\n this.enableBreakoutSession &&\n this.hasBreakoutPreAssignments\n );\n },\n },\n },\n\n /**\n * initialize for the breakouts\n * @returns {void}\n */\n initialize() {\n this.listenTo(this, 'change:breakoutStatus', () => {\n if (this.breakoutStatus === BREAKOUTS.STATUS.CLOSING) {\n this.trigger(BREAKOUTS.EVENTS.BREAKOUTS_CLOSING);\n }\n });\n this.listenTo(this, 'change:shouldQueryPreAssignments', () => {\n if (this.shouldQueryPreAssignments && !this.preAssignments) {\n this.queryPreAssignments();\n }\n });\n this.debouncedQueryRosters = debounce(this.queryRosters, 10, {\n leading: true,\n trailing: false,\n });\n this.listenTo(this.breakouts, 'add', (breakout) => {\n this.debouncedQueryRosters();\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenTo(this.breakouts, 'change:requestedLastModifiedTime', (breakout) => {\n this.triggerReturnToMainEvent(breakout);\n });\n this.listenToCurrentSessionTypeChange();\n this.listenToBroadcastMessages();\n this.listenToBreakoutRosters();\n this.listenToBreakoutHelp();\n // @ts-ignore\n this.breakoutRequest = new BreakoutRequest({webex: this.webex});\n },\n\n /**\n * Calls this to clean up listeners\n * @returns {void}\n */\n cleanUp() {\n this.stopListening();\n },\n\n /**\n * Update the current locus url of the meeting\n * @param {string} locusUrl // locus url\n * @returns {void}\n */\n locusUrlUpdate(locusUrl) {\n this.set('locusUrl', locusUrl);\n const {isInMainSession, mainLocusUrl} = this;\n if (isInMainSession || !mainLocusUrl) {\n this.set('mainLocusUrl', locusUrl);\n }\n },\n\n /**\n * Update whether self is moderator/cohost or not\n * @param {boolean} canManageBreakouts\n * @returns {void}\n */\n updateCanManageBreakouts(canManageBreakouts) {\n this.set('canManageBreakouts', canManageBreakouts);\n },\n\n /**\n * Update the current breakout resource url\n * @param {string} breakoutServiceUrl\n * @returns {void}\n */\n breakoutServiceUrlUpdate(breakoutServiceUrl) {\n this.set('breakoutServiceUrl', `${breakoutServiceUrl}/breakout/`);\n },\n\n /**\n * The initial roster lists need to be queried because you don't\n * get a breakout.roster event when you join the meeting\n * @returns {void}\n */\n queryRosters() {\n this.webex\n .request({uri: `${this.url}/roster`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n const {\n body: {rosters},\n } = result;\n\n rosters?.forEach(({locus}) => {\n this.handleRosterUpdate(locus);\n });\n\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryRosters failed', error);\n });\n },\n\n /**\n *\n * @param {Object} locus // locus object\n * @returns {void}\n */\n handleRosterUpdate(locus) {\n const sessionId = locus.controls?.breakout?.sessionId;\n\n const session = this.breakouts.get(sessionId);\n\n if (!session) {\n return;\n }\n\n session.parseRoster(locus);\n },\n /**\n *Sets up listener for currentBreakoutSession sessionType changed\n * @returns {void}\n */\n listenToCurrentSessionTypeChange(): void {\n this.listenTo(\n this.currentBreakoutSession,\n 'change:sessionType',\n (currentBreakoutSession, sessionType) => {\n if (isSessionTypeChangedFromSessionToMain(currentBreakoutSession, sessionType)) {\n this.trigger(BREAKOUTS.EVENTS.LEAVE_BREAKOUT);\n }\n }\n );\n },\n\n /**\n * Sets up listener for broadcast messages sent to the breakout session\n * @returns {void}\n */\n listenToBroadcastMessages() {\n this.listenTo(this.webex.internal.llm, 'event:breakout.message', (event) => {\n const {\n data: {senderUserId, sentTime, message},\n } = event;\n\n this.trigger(BREAKOUTS.EVENTS.MESSAGE, {\n senderUserId,\n sentTime,\n message,\n // FIXME: This is only the current sessionId\n // We'd need to check that the dataChannelUrl is still the same\n // to guarantee that this message was sent to this session\n sessionId: this.currentBreakoutSession.sessionId,\n });\n });\n },\n\n /**\n * Sets up a listener for roster messags from mecury\n * @returns {void}\n */\n listenToBreakoutRosters() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.roster', (event) => {\n this.handleRosterUpdate(event.data.locus);\n this.trigger(BREAKOUTS.EVENTS.MEMBERS_UPDATE);\n });\n },\n\n /**\n * Sets up a listener for ask help notify from mecury\n * @returns {void}\n */\n listenToBreakoutHelp() {\n this.listenTo(this.webex.internal.mercury, 'event:breakout.help', (event) => {\n const {\n data: {participant, sessionId},\n } = event;\n this.trigger(BREAKOUTS.EVENTS.ASK_FOR_HELP, {participant, sessionId});\n });\n },\n\n /**\n * get current breakout is in progress or not\n * @returns {boolean}\n */\n isBreakoutInProgress() {\n const currentStatus = this.groups?.[0]?.status || this.status;\n\n return currentStatus === BREAKOUTS.STATUS.OPEN || currentStatus === BREAKOUTS.STATUS.CLOSING;\n },\n\n /**\n * get current breakout is in closing or not\n * @returns {boolean}\n */\n isBreakoutIClosing() {\n return (this.groups?.[0]?.status || this.status) === BREAKOUTS.STATUS.CLOSING;\n },\n /**\n * Updates the information about the current breakout\n * @param {Object} params\n * @returns {void}\n */\n updateBreakout(params) {\n this.set(params);\n // These values are set manually so they are unset when they are not included in params\n this.set('groups', params.groups);\n this.set('startTime', params.startTime);\n this.set('status', params.status);\n\n this.set('currentBreakoutSession', {\n sessionId: params.sessionId,\n groupId: params.groupId,\n name: params.name,\n current: true,\n sessionType: params.sessionType,\n url: params.url,\n [BREAKOUTS.SESSION_STATES.ACTIVE]: false,\n [BREAKOUTS.SESSION_STATES.ALLOWED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED]: false,\n [BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT]: false,\n [BREAKOUTS.SESSION_STATES.REQUESTED]: false,\n });\n\n if (!this.isBreakoutInProgress()) {\n this.clearBreakouts();\n }\n\n if (\n this.currentBreakoutSession.previous('sessionId') !== this.currentBreakoutSession.sessionId ||\n this.currentBreakoutSession.previous('groupId') !== this.currentBreakoutSession.groupId\n ) {\n // should report joined session changed\n const meeting = this.webex.meetings.getMeetingByType(_ID_, this.meetingId);\n breakoutEvent.onBreakoutJoinResponse(\n {\n currentSession: this.currentBreakoutSession,\n meeting,\n breakoutMoveId: params.breakoutMoveId,\n },\n // @ts-ignore\n this.webex.internal.newMetrics.submitClientEvent.bind(this.webex.internal.newMetrics)\n );\n }\n },\n\n /**\n * Updates the information about available breakouts\n * @param {Object} payload\n * @returns {void}\n */\n updateBreakoutSessions(payload) {\n const breakouts = {};\n if (this.isBreakoutIClosing()) {\n // fix issue: don't clear/update breakouts collection when in closing since locus DTO will send undefined or\n // only the MAIN session info here, if just update it, will miss the breakout roster info during\n // count down to end breakouts\n return;\n }\n if (payload.breakoutSessions) {\n forEach(BREAKOUTS.SESSION_STATES, (state) => {\n forEach(payload.breakoutSessions[state], (breakout) => {\n const {sessionId} = breakout;\n\n if (!breakouts[sessionId]) {\n breakouts[sessionId] = breakout;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ACTIVE] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ALLOWED] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.ASSIGNED_CURRENT] = false;\n breakouts[sessionId][BREAKOUTS.SESSION_STATES.REQUESTED] = false;\n }\n\n breakouts[sessionId][state] = true;\n\n if (state === BREAKOUTS.SESSION_STATES.REQUESTED) {\n breakouts[sessionId].requestedLastModifiedTime = breakout.modifiedAt;\n }\n });\n });\n }\n forEach(breakouts, (breakout: typeof Breakout) => {\n // eslint-disable-next-line no-param-reassign\n breakout.url = this.url;\n });\n\n this.breakouts.set(Object.values(breakouts));\n },\n /**\n * clear breakouts collection\n * @returns {void}\n */\n clearBreakouts() {\n if (this.breakouts.length > 0) {\n this.breakouts.reset();\n }\n },\n /**\n * get main session\n * @returns {Breakout}\n */\n getMainSession() {\n if (this.isInMainSession) {\n return this.currentBreakoutSession;\n }\n\n const mainSession = this.breakouts.filter((breakout) => breakout.isMain)[0];\n if (!mainSession) {\n throw new Error('no main session found');\n }\n\n return mainSession;\n },\n /**\n * Host/CoHost ask all participants return to main session\n * @returns {Promise}\n */\n askAllToReturn() {\n const mainSession = this.getMainSession();\n\n return this.webex.request({\n method: HTTP_VERBS.POST,\n uri: `${this.url}/requestMove`,\n body: {\n groupId: mainSession.groupId,\n sessionId: mainSession.sessionId,\n },\n });\n },\n\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} message\n * @param {Object} options\n * @returns {Promise}\n */\n broadcast(message, options) {\n const {breakoutGroupId} = this;\n if (!breakoutGroupId) {\n throw new Error('Cannot broadcast, no breakout session found');\n }\n\n return this.breakoutRequest.broadcast({\n url: this.url,\n message,\n options,\n groupId: breakoutGroupId,\n });\n },\n /**\n * Make enable breakout resource\n * @returns {Promise}\n */\n enableBreakouts() {\n if (this.breakoutServiceUrl) {\n // @ts-ignore\n return this.webex\n .request({\n method: HTTP_VERBS.POST,\n uri: this.breakoutServiceUrl,\n body: {\n locusUrl: this.locusUrl,\n },\n })\n .catch((err) => {\n LoggerProxy.logger.error(\n `Meeting:request#touchBreakout --> Error provisioning error ${err}`\n );\n throw err;\n });\n }\n\n return Promise.reject(new Error(`enableBreakouts: the breakoutServiceUrl is empty`));\n },\n\n /**\n * Make the meeting enable or disable breakout session\n * @param {boolean} enable\n * @returns {Promise}\n */\n async toggleBreakout(enable) {\n if (this.enableBreakoutSession === undefined) {\n const info = await this.enableBreakouts();\n // first time enable, set the initial data\n this.updateBreakout(info?.body);\n if (!enable) {\n await this.doToggleBreakout(enable);\n }\n } else {\n await this.doToggleBreakout(enable);\n }\n },\n\n /**\n * do toggle meeting breakout session enable or disable\n * @param {boolean} enable\n * @returns {Promise}\n */\n doToggleBreakout(enable) {\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{enableBreakoutSession: enable},\n };\n\n // @ts-ignore\n return this.webex.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n });\n },\n\n /**\n * set groups to manageGroups prop\n * @param {Object} breakoutInfo -- breakout groups\n * @returns {void}\n */\n _setManageGroups(breakoutInfo) {\n if (breakoutInfo?.body?.groups) {\n this.set('manageGroups', breakoutInfo.body.groups);\n }\n },\n\n /**\n * Create new breakout sessions\n * @param {object} params -- breakout session group\n * @returns {Promise}\n */\n async create(params) {\n const payload = {...params};\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [payload]},\n };\n // @ts-ignore\n const breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#create'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n // clear edit lock info after save breakout session info\n this._clearEditLockInfo();\n\n return breakoutInfo;\n },\n\n /**\n * Delete all breakout sessions\n * @returns {Promise}\n */\n async clearSessions() {\n const body = {\n ...(this.editLock && !!this.editLock.token ? {editlock: {token: this.editLock.token}} : {}),\n ...{groups: [{action: BREAKOUTS.ACTION.DELETE}]},\n };\n // @ts-ignore\n const breakoutInfo = await this.webex\n .request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#clearSessions'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost starts breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async start(params = {}) {\n const action = BREAKOUTS.ACTION.START;\n const payload = {\n id: this.breakoutGroupId,\n action,\n allowBackToMain: false,\n allowToJoinLater: false,\n ...params,\n };\n\n const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{groups: [payload]},\n };\n\n const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#start'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost ends breakout sessions\n * @param {object} params\n * @returns {Promise}\n */\n async end(params = {}) {\n const {delayCloseTime, breakoutGroupId: id} = this;\n const action = BREAKOUTS.ACTION.CLOSE;\n const payload = {\n id,\n action,\n delayCloseTime,\n ...params,\n };\n\n const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{groups: [payload]},\n };\n\n const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#end'));\n });\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * Host or cohost update breakout sessions\n * @param {Object} params\n * @param {String} params.id\n * @param {Boolean} unlockEdit\n * @returns {Promise}\n */\n async update(params: {id: string}, unlockEdit?: boolean) {\n if (!params.id) {\n return Promise.reject(new Error('Missing breakout group id'));\n }\n const payload = {...params};\n\n const body = {\n ...(this.editLock?.token\n ? {editlock: {token: this.editLock.token, refresh: !unlockEdit}}\n : {}),\n ...{groups: [payload]},\n };\n\n const breakoutInfo = await this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n }).catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#update'));\n });\n\n if (unlockEdit) {\n this._clearEditLockInfo();\n }\n\n this._setManageGroups(breakoutInfo);\n\n return breakoutInfo;\n },\n\n /**\n * get existed breakout sessions\n * @param {boolean} editlock -- lock operations of the breakout sessions\n * @returns {Promise}\n */\n async getBreakout(editlock) {\n const breakout = await this.request({\n method: HTTP_VERBS.GET,\n uri: this.url + (editlock ? `?editlock=${editlock}` : ''),\n });\n\n this._setManageGroups(breakout);\n if (editlock && breakout.body?.editlock?.token) {\n this.set('editLock', breakout.body.editlock);\n this.keepEditLockAlive();\n }\n\n return breakout;\n },\n\n /**\n * enable and edit lock breakout\n * @returns {void}\n */\n async enableAndLockBreakout() {\n if (this.enableBreakoutSession) {\n this.lockBreakout();\n } else {\n const info = await this.enableBreakouts();\n\n if (info.body) {\n this.lockBreakout();\n }\n }\n },\n\n /**\n * breakout edit locked by yourself or not\n * @returns {boolean}\n */\n hasBreakoutLocked() {\n return (\n this.editLock &&\n this.editLock.token &&\n this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED\n );\n },\n\n /**\n * send breakout edit lock\n * @returns {void}\n */\n async lockBreakout() {\n if (this.editLock && !!this.editLock.token) {\n if (this.editLock.state === BREAKOUTS.EDIT_LOCK_STATUS.LOCKED) {\n throw new Error('Breakout already locked');\n } else {\n this.keepEditLockAlive();\n }\n } else {\n const breakout = await this.getBreakout(true);\n if (breakout.body?.editlock) {\n this.keepEditLockAlive();\n }\n }\n },\n\n /**\n * keep edit lock alive\n * @returns {void}\n */\n keepEditLockAlive() {\n if (this.editLock && !!this.editLock.token) {\n const ttl = this.editLock.ttl < 30 ? BREAKOUTS.DEFAULT_TTL : this.editLock.ttl;\n if (this.intervalID) {\n window.clearInterval(this.intervalID);\n }\n\n this.intervalID = window.setInterval(() => {\n this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n }).catch((error) => {\n this._clearEditLockInfo();\n\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#keepEditLockAlive'));\n });\n }, (ttl / 2) * 1000);\n }\n },\n\n /**\n * unlock edit breakout\n * @returns {void}\n */\n unLockEditBreakout() {\n if (this.editLock && !!this.editLock.token) {\n this.request({\n method: HTTP_VERBS.DELETE,\n uri: `${this.url}/editlock/${this.editLock.token}`,\n })\n .then(() => {\n this._clearEditLockInfo();\n })\n .catch((error) => {\n return Promise.reject(boServiceErrorHandler(error, 'Breakouts#unLockEditBreakout'));\n });\n }\n },\n\n /**\n * clear interval and edit lock info\n * @private\n * @returns {void}\n */\n _clearEditLockInfo() {\n if (this.intervalID) {\n clearInterval(this.intervalID);\n }\n this.set('editLock', {});\n },\n\n /**\n * assign participants to breakout session\n * @param {Array} sessions\n * @returns {void}\n */\n assign(sessions: any[]) {\n const internalSessions = sessions.map((item) => {\n return {\n id: item.id,\n assigned: item.memberIds,\n assignedEmails: item.emails,\n anyoneCanJoin: !!item.anyone,\n };\n });\n\n const body = {\n ...(this.editLock && !!this.editLock.token\n ? {editlock: {token: this.editLock.token, refresh: true}}\n : {}),\n ...{\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: internalSessions,\n },\n ],\n },\n };\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: this.url,\n body,\n });\n },\n\n /**\n * query preAssignments\n * @returns {void}\n */\n queryPreAssignments() {\n this.webex\n .request({uri: `${this.url}/preassignments`, qs: {locusUrl: btoa(this.locusUrl)}})\n .then((result) => {\n if (result.body?.groups) {\n this.set('preAssignments', result.body.groups);\n this.trigger(BREAKOUTS.EVENTS.PRE_ASSIGNMENTS_UPDATE);\n }\n })\n .catch((error) => {\n LoggerProxy.logger.error('Meeting:breakouts#queryPreAssignments failed', error);\n });\n },\n /**\n * assign participants dynamically after breakout sessions started,\n * but currently it only used for admitting participants from lobby into breakout directly\n * @param {Array} sessions\n * @returns {void}\n */\n dynamicAssign(sessions: any[]) {\n const updatedSessions = sessions.map((item) => {\n return {\n id: item.id,\n participants: item.participants,\n targetState: item.targetState,\n };\n });\n\n const body = {\n groups: [\n {\n id: this.breakoutGroupId,\n sessions: updatedSessions,\n },\n ],\n editlock: null,\n };\n\n if (this.editLock && this.editLock.token) {\n body.editlock = this.editLock;\n }\n\n return this.request({\n method: HTTP_VERBS.PUT,\n uri: `${this.url}/dynamicAssign`,\n body,\n });\n },\n /**\n * trigger ASK_RETURN_TO_MAIN event when main session requested\n * @param {Object} breakout\n * @returns {void}\n */\n triggerReturnToMainEvent(breakout) {\n if (breakout.isMain && breakout.requested) {\n this.trigger(BREAKOUTS.EVENTS.ASK_RETURN_TO_MAIN);\n }\n },\n});\n\nexport default Breakouts;\n"],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ var _Reflect$construct = require("@babel/runtime-corejs2/core-js/reflect/construct");
4
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
5
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
+ _Object$defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.default = void 0;
10
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inherits"));
13
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/possibleConstructorReturn"));
14
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/getPrototypeOf"));
15
+ var _webexCore = require("@webex/webex-core");
16
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
17
+ var _utils = require("./utils");
18
+ var _constants = require("../constants");
19
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = _Reflect$construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
20
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !_Reflect$construct) return false; if (_Reflect$construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(_Reflect$construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
21
+ /**
22
+ * @class BreakoutRequest
23
+ */
24
+ var BreakoutRequest = /*#__PURE__*/function (_StatelessWebexPlugin) {
25
+ (0, _inherits2.default)(BreakoutRequest, _StatelessWebexPlugin);
26
+ var _super = _createSuper(BreakoutRequest);
27
+ function BreakoutRequest() {
28
+ (0, _classCallCheck2.default)(this, BreakoutRequest);
29
+ return _super.apply(this, arguments);
30
+ }
31
+ (0, _createClass2.default)(BreakoutRequest, [{
32
+ key: "broadcast",
33
+ value:
34
+ /**
35
+ * Broadcast message to all breakout session's participants
36
+ * @param {String} url
37
+ * @param {String} message
38
+ * @param {Object} options
39
+ * @param {string} groupId
40
+ * @param {string} sessionId
41
+ * @returns {Promise}
42
+ */
43
+ function broadcast(_ref) {
44
+ var url = _ref.url,
45
+ message = _ref.message,
46
+ options = _ref.options,
47
+ groupId = _ref.groupId,
48
+ sessionId = _ref.sessionId;
49
+ var roles = (0, _utils.getBroadcastRoles)(options);
50
+ var params = {
51
+ id: groupId,
52
+ recipientRoles: roles.length ? roles : undefined,
53
+ sessions: sessionId ? [{
54
+ id: sessionId
55
+ }] : undefined
56
+ };
57
+
58
+ // @ts-ignore
59
+ return this.request({
60
+ method: _constants.HTTP_VERBS.POST,
61
+ uri: "".concat(url, "/message"),
62
+ body: {
63
+ message: message,
64
+ groups: [params]
65
+ }
66
+ }).catch(function (error) {
67
+ if (error.body && error.body.errorCode === 201409036 && error.statusCode === 409) {
68
+ _loggerProxy.default.logger.info("Breakouts#broadcast --> no joined participants");
69
+ } else {
70
+ throw error;
71
+ }
72
+ });
73
+ }
74
+ }]);
75
+ return BreakoutRequest;
76
+ }(_webexCore.StatelessWebexPlugin);
77
+ exports.default = BreakoutRequest;
78
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["BreakoutRequest","url","message","options","groupId","sessionId","roles","getBroadcastRoles","params","id","recipientRoles","length","undefined","sessions","request","method","HTTP_VERBS","POST","uri","body","groups","catch","error","errorCode","statusCode","LoggerProxy","logger","info","StatelessWebexPlugin"],"sources":["request.ts"],"sourcesContent":["import {StatelessWebexPlugin} from '@webex/webex-core';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {getBroadcastRoles} from './utils';\nimport {HTTP_VERBS} from '../constants';\n\n/**\n * @class BreakoutRequest\n */\nexport default class BreakoutRequest extends StatelessWebexPlugin {\n /**\n * Broadcast message to all breakout session's participants\n * @param {String} url\n * @param {String} message\n * @param {Object} options\n * @param {string} groupId\n * @param {string} sessionId\n * @returns {Promise}\n */\n broadcast({\n url,\n message,\n options,\n groupId,\n sessionId,\n }: {\n url: string;\n message: string;\n options?: object;\n groupId: string;\n sessionId?: string;\n }) {\n const roles = getBroadcastRoles(options);\n const params = {\n id: groupId,\n recipientRoles: roles.length ? roles : undefined,\n sessions: sessionId ? [{id: sessionId}] : undefined,\n };\n\n // @ts-ignore\n return this.request({\n method: HTTP_VERBS.POST,\n uri: `${url}/message`,\n body: {\n message,\n groups: [params],\n },\n }).catch((error) => {\n if (error.body && error.body.errorCode === 201409036 && error.statusCode === 409) {\n LoggerProxy.logger.info(`Breakouts#broadcast --> no joined participants`);\n } else {\n throw error;\n }\n });\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAAwC;AAAA;AAExC;AACA;AACA;AAFA,IAGqBA,eAAe;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;IAClC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACE,yBAYG;MAAA,IAXDC,GAAG,QAAHA,GAAG;QACHC,OAAO,QAAPA,OAAO;QACPC,OAAO,QAAPA,OAAO;QACPC,OAAO,QAAPA,OAAO;QACPC,SAAS,QAATA,SAAS;MAQT,IAAMC,KAAK,GAAG,IAAAC,wBAAiB,EAACJ,OAAO,CAAC;MACxC,IAAMK,MAAM,GAAG;QACbC,EAAE,EAAEL,OAAO;QACXM,cAAc,EAAEJ,KAAK,CAACK,MAAM,GAAGL,KAAK,GAAGM,SAAS;QAChDC,QAAQ,EAAER,SAAS,GAAG,CAAC;UAACI,EAAE,EAAEJ;QAAS,CAAC,CAAC,GAAGO;MAC5C,CAAC;;MAED;MACA,OAAO,IAAI,CAACE,OAAO,CAAC;QAClBC,MAAM,EAAEC,qBAAU,CAACC,IAAI;QACvBC,GAAG,YAAKjB,GAAG,aAAU;QACrBkB,IAAI,EAAE;UACJjB,OAAO,EAAPA,OAAO;UACPkB,MAAM,EAAE,CAACZ,MAAM;QACjB;MACF,CAAC,CAAC,CAACa,KAAK,CAAC,UAACC,KAAK,EAAK;QAClB,IAAIA,KAAK,CAACH,IAAI,IAAIG,KAAK,CAACH,IAAI,CAACI,SAAS,KAAK,SAAS,IAAID,KAAK,CAACE,UAAU,KAAK,GAAG,EAAE;UAChFC,oBAAW,CAACC,MAAM,CAACC,IAAI,kDAAkD;QAC3E,CAAC,MAAM;UACL,MAAML,KAAK;QACb;MACF,CAAC,CAAC;IACJ;EAAC;EAAA;AAAA,EA7C0CM,+BAAoB;AAAA"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.isSessionTypeChangedFromSessionToMain = exports.getBroadcastRoles = exports.boServiceErrorHandler = void 0;
9
+ var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
10
+ var _editLockError = _interopRequireDefault(require("./edit-lock-error"));
11
+ var _constants = require("../constants");
12
+ // eslint-disable-next-line import/prefer-default-export
13
+
14
+ var getBroadcastRoles = function getBroadcastRoles(options) {
15
+ var recipientRoles = [];
16
+ if (!options || !options.cohosts && !options.presenters) {
17
+ return recipientRoles;
18
+ }
19
+ if (options.cohosts) {
20
+ recipientRoles.push('COHOST');
21
+ }
22
+ if (options.presenters) {
23
+ recipientRoles.push('PRESENTER');
24
+ }
25
+ return recipientRoles;
26
+ };
27
+
28
+ /**
29
+ * Deals with all kinds of errors of breakout service
30
+ * @param {object} error // one of the breakout service error
31
+ * @param {string} position // position of the error occur
32
+ * @returns {object}
33
+ */
34
+ exports.getBroadcastRoles = getBroadcastRoles;
35
+ var boServiceErrorHandler = function boServiceErrorHandler(error, position) {
36
+ var _error$body, _throwError;
37
+ var errorCode = error === null || error === void 0 ? void 0 : (_error$body = error.body) === null || _error$body === void 0 ? void 0 : _error$body.errorCode;
38
+ var _BREAKOUTS$ERROR_CODE = _constants.BREAKOUTS.ERROR_CODE,
39
+ EDIT_LOCK_TOKEN_MISMATCH = _BREAKOUTS$ERROR_CODE.EDIT_LOCK_TOKEN_MISMATCH,
40
+ EDIT_NOT_AUTHORIZED = _BREAKOUTS$ERROR_CODE.EDIT_NOT_AUTHORIZED;
41
+ var throwError;
42
+ switch (errorCode) {
43
+ case EDIT_LOCK_TOKEN_MISMATCH:
44
+ throwError = new _editLockError.default('Edit lock token mismatch', error);
45
+ break;
46
+ case EDIT_NOT_AUTHORIZED:
47
+ throwError = new _editLockError.default('Not authorized to interact with edit lock', error);
48
+ break;
49
+ default:
50
+ throwError = error;
51
+ }
52
+ _loggerProxy.default.logger.info("".concat(position, " --> ").concat((_throwError = throwError) === null || _throwError === void 0 ? void 0 : _throwError.message));
53
+ return throwError;
54
+ };
55
+
56
+ /**
57
+ *
58
+ * @param {object} breakout
59
+ * @param {string} newSessionType
60
+ * @returns {boolean}
61
+ */
62
+ exports.boServiceErrorHandler = boServiceErrorHandler;
63
+ var isSessionTypeChangedFromSessionToMain = function isSessionTypeChangedFromSessionToMain(breakout, newSessionType) {
64
+ return breakout.previous('sessionType') === _constants.BREAKOUTS.SESSION_TYPES.BREAKOUT && newSessionType === _constants.BREAKOUTS.SESSION_TYPES.MAIN;
65
+ };
66
+ exports.isSessionTypeChangedFromSessionToMain = isSessionTypeChangedFromSessionToMain;
67
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getBroadcastRoles","options","recipientRoles","cohosts","presenters","push","boServiceErrorHandler","error","position","errorCode","body","BREAKOUTS","ERROR_CODE","EDIT_LOCK_TOKEN_MISMATCH","EDIT_NOT_AUTHORIZED","throwError","BreakoutEditLockedError","LoggerProxy","logger","info","message","isSessionTypeChangedFromSessionToMain","breakout","newSessionType","previous","SESSION_TYPES","BREAKOUT","MAIN"],"sources":["utils.ts"],"sourcesContent":["// eslint-disable-next-line import/prefer-default-export\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport BreakoutEditLockedError from './edit-lock-error';\nimport {BREAKOUTS} from '../constants';\n\nexport const getBroadcastRoles = (options): string[] => {\n const recipientRoles = [];\n if (!options || (!options.cohosts && !options.presenters)) {\n return recipientRoles;\n }\n if (options.cohosts) {\n recipientRoles.push('COHOST');\n }\n if (options.presenters) {\n recipientRoles.push('PRESENTER');\n }\n\n return recipientRoles;\n};\n\n/**\n * Deals with all kinds of errors of breakout service\n * @param {object} error // one of the breakout service error\n * @param {string} position // position of the error occur\n * @returns {object}\n */\nexport const boServiceErrorHandler = (error: any, position: string): any => {\n const errorCode = error?.body?.errorCode;\n const {EDIT_LOCK_TOKEN_MISMATCH, EDIT_NOT_AUTHORIZED} = BREAKOUTS.ERROR_CODE;\n let throwError;\n switch (errorCode) {\n case EDIT_LOCK_TOKEN_MISMATCH:\n throwError = new BreakoutEditLockedError('Edit lock token mismatch', error);\n break;\n case EDIT_NOT_AUTHORIZED:\n throwError = new BreakoutEditLockedError('Not authorized to interact with edit lock', error);\n break;\n default:\n throwError = error;\n }\n LoggerProxy.logger.info(`${position} --> ${throwError?.message}`);\n\n return throwError;\n};\n\n/**\n *\n * @param {object} breakout\n * @param {string} newSessionType\n * @returns {boolean}\n */\nexport const isSessionTypeChangedFromSessionToMain = (breakout, newSessionType) => {\n return (\n breakout.previous('sessionType') === BREAKOUTS.SESSION_TYPES.BREAKOUT &&\n newSessionType === BREAKOUTS.SESSION_TYPES.MAIN\n );\n};\n"],"mappings":";;;;;;;;AACA;AACA;AACA;AAHA;;AAKO,IAAMA,iBAAiB,GAAG,SAApBA,iBAAiB,CAAIC,OAAO,EAAe;EACtD,IAAMC,cAAc,GAAG,EAAE;EACzB,IAAI,CAACD,OAAO,IAAK,CAACA,OAAO,CAACE,OAAO,IAAI,CAACF,OAAO,CAACG,UAAW,EAAE;IACzD,OAAOF,cAAc;EACvB;EACA,IAAID,OAAO,CAACE,OAAO,EAAE;IACnBD,cAAc,CAACG,IAAI,CAAC,QAAQ,CAAC;EAC/B;EACA,IAAIJ,OAAO,CAACG,UAAU,EAAE;IACtBF,cAAc,CAACG,IAAI,CAAC,WAAW,CAAC;EAClC;EAEA,OAAOH,cAAc;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMO,IAAMI,qBAAqB,GAAG,SAAxBA,qBAAqB,CAAIC,KAAU,EAAEC,QAAgB,EAAU;EAAA;EAC1E,IAAMC,SAAS,GAAGF,KAAK,aAALA,KAAK,sCAALA,KAAK,CAAEG,IAAI,gDAAX,YAAaD,SAAS;EACxC,4BAAwDE,oBAAS,CAACC,UAAU;IAArEC,wBAAwB,yBAAxBA,wBAAwB;IAAEC,mBAAmB,yBAAnBA,mBAAmB;EACpD,IAAIC,UAAU;EACd,QAAQN,SAAS;IACf,KAAKI,wBAAwB;MAC3BE,UAAU,GAAG,IAAIC,sBAAuB,CAAC,0BAA0B,EAAET,KAAK,CAAC;MAC3E;IACF,KAAKO,mBAAmB;MACtBC,UAAU,GAAG,IAAIC,sBAAuB,CAAC,2CAA2C,EAAET,KAAK,CAAC;MAC5F;IACF;MACEQ,UAAU,GAAGR,KAAK;EAAC;EAEvBU,oBAAW,CAACC,MAAM,CAACC,IAAI,WAAIX,QAAQ,iCAAQO,UAAU,gDAAV,YAAYK,OAAO,EAAG;EAEjE,OAAOL,UAAU;AACnB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AALA;AAMO,IAAMM,qCAAqC,GAAG,SAAxCA,qCAAqC,CAAIC,QAAQ,EAAEC,cAAc,EAAK;EACjF,OACED,QAAQ,CAACE,QAAQ,CAAC,aAAa,CAAC,KAAKb,oBAAS,CAACc,aAAa,CAACC,QAAQ,IACrEH,cAAc,KAAKZ,oBAAS,CAACc,aAAa,CAACE,IAAI;AAEnD,CAAC;AAAC"}
@@ -6,7 +6,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequ
6
6
  _Object$defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.UserNotJoinedError = exports.UserInLobbyError = exports.NoMediaEstablishedYetError = exports.MeetingNotActiveError = exports.IceGatheringFailed = void 0;
9
+ exports.UserNotJoinedError = exports.UserInLobbyError = exports.SpaceIDDeprecatedError = exports.NoMediaEstablishedYetError = exports.MeetingNotActiveError = exports.IceGatheringFailed = void 0;
10
10
  exports.createMeetingsError = createMeetingsError;
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
@@ -77,14 +77,15 @@ WebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;
77
77
  * @classdesc Raised whenever the user has not established media yet.
78
78
  * @extends WebexMeetingsError
79
79
  * @property {number} code - 30103
80
- * @property {string} message - 'User has not established media yet'
80
+ * @property {string} message - error message
81
81
  */
82
82
  var NoMediaEstablishedYetError = /*#__PURE__*/function (_WebexMeetingsError3) {
83
83
  (0, _inherits2.default)(NoMediaEstablishedYetError, _WebexMeetingsError3);
84
84
  var _super3 = _createSuper(NoMediaEstablishedYetError);
85
+ // eslint-disable-next-line require-jsdoc
85
86
  function NoMediaEstablishedYetError() {
86
87
  (0, _classCallCheck2.default)(this, NoMediaEstablishedYetError);
87
- return _super3.call(this, NoMediaEstablishedYetError.CODE, 'User has not established media yet');
88
+ return _super3.call(this, NoMediaEstablishedYetError.CODE, 'Webrtc media connection is missing, call addMedia() first');
88
89
  }
89
90
  return (0, _createClass2.default)(NoMediaEstablishedYetError);
90
91
  }(_webexMeetingsError.default);
@@ -112,6 +113,26 @@ exports.UserInLobbyError = UserInLobbyError;
112
113
  (0, _defineProperty2.default)(UserInLobbyError, "CODE", 30104);
113
114
  WebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;
114
115
 
116
+ /**
117
+ * @class SpaceIDDeprecatedError
118
+ * @classdesc Raised whenever the user passes Space ID as destination for create meeting.
119
+ * @extends WebexMeetingsError
120
+ * @property {number} code - 30105
121
+ * @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'
122
+ */
123
+ var SpaceIDDeprecatedError = /*#__PURE__*/function (_WebexMeetingsError5) {
124
+ (0, _inherits2.default)(SpaceIDDeprecatedError, _WebexMeetingsError5);
125
+ var _super5 = _createSuper(SpaceIDDeprecatedError);
126
+ function SpaceIDDeprecatedError() {
127
+ (0, _classCallCheck2.default)(this, SpaceIDDeprecatedError);
128
+ return _super5.call(this, SpaceIDDeprecatedError.CODE, 'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.');
129
+ }
130
+ return (0, _createClass2.default)(SpaceIDDeprecatedError);
131
+ }(_webexMeetingsError.default);
132
+ exports.SpaceIDDeprecatedError = SpaceIDDeprecatedError;
133
+ (0, _defineProperty2.default)(SpaceIDDeprecatedError, "CODE", 30105);
134
+ WebExMeetingsErrors[SpaceIDDeprecatedError.CODE] = SpaceIDDeprecatedError;
135
+
115
136
  /**
116
137
  * @class IceGatheringFailed
117
138
  * @classdesc Raised whenever ice gathering fails.
@@ -119,12 +140,12 @@ WebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;
119
140
  * @property {number} code - 30202
120
141
  * @property {string} message - 'user failed ice gathering check network/firewall'
121
142
  */
122
- var IceGatheringFailed = /*#__PURE__*/function (_WebexMeetingsError5) {
123
- (0, _inherits2.default)(IceGatheringFailed, _WebexMeetingsError5);
124
- var _super5 = _createSuper(IceGatheringFailed);
143
+ var IceGatheringFailed = /*#__PURE__*/function (_WebexMeetingsError6) {
144
+ (0, _inherits2.default)(IceGatheringFailed, _WebexMeetingsError6);
145
+ var _super6 = _createSuper(IceGatheringFailed);
125
146
  function IceGatheringFailed() {
126
147
  (0, _classCallCheck2.default)(this, IceGatheringFailed);
127
- return _super5.call(this, IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');
148
+ return _super6.call(this, IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');
128
149
  }
129
150
  return (0, _createClass2.default)(IceGatheringFailed);
130
151
  }(_webexMeetingsError.default);
@@ -1 +1 @@
1
- {"version":3,"names":["WebExMeetingsErrors","createMeetingsError","code","message","WebexMeetingsError","MeetingNotActiveError","CODE","UserNotJoinedError","NoMediaEstablishedYetError","UserInLobbyError","IceGatheringFailed"],"sources":["webex-errors.ts"],"sourcesContent":["// The document would auto generate the doc for errors\n\n// 1) Error codes for Oauth, login, mercury should be separated out (Code range)\n// 2) Errors from the actual locus server or other server in case, we can use the same error code as locus and redirect it\n// 3) Any errors we generate from the SDK can be split into various categories\n// Parameter validation, user action, connection, media specific(They can have different range)\n\n// TODO: all the errors from the server need to be captured\n\n// add a way to log and send metrics if needed\nimport WebexMeetingsError from './webex-meetings-error';\n\nconst WebExMeetingsErrors = {};\n\n/**\n * Create a {@link WebexMeetingsError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {WebexMeetingsError}\n */\nexport function createMeetingsError(code?: number, message?: string) {\n code = typeof code === 'number' ? code : 0;\n message = typeof message === 'string' && message ? message : 'Unknown error';\n\n return WebExMeetingsErrors[code]\n ? new WebExMeetingsErrors[code]()\n : new WebexMeetingsError(code, message);\n}\n\n/**\n * @class MeetingNotActiveError\n * @classdesc Raised whenever Meeting has already ended and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30101\n * @property {string} message - 'Meeting has already Ended or not Active'\n */\nclass MeetingNotActiveError extends WebexMeetingsError {\n static CODE = 30101;\n\n constructor() {\n super(MeetingNotActiveError.CODE, 'Meeting has already Ended or not Active');\n }\n}\n\nexport {MeetingNotActiveError};\nWebExMeetingsErrors[MeetingNotActiveError.CODE] = MeetingNotActiveError;\n\n/**\n * @class UserNotJoinedError\n * @classdesc Raised whenever the user has already left the meeting and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30102\n * @property {string} message - 'User has already left the meeting'\n */\nclass UserNotJoinedError extends WebexMeetingsError {\n static CODE = 30102;\n\n constructor() {\n super(\n UserNotJoinedError.CODE,\n 'User currently not in meeting. Please join a meeting before adding media.'\n );\n }\n}\n\nexport {UserNotJoinedError};\nWebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;\n\n/**\n * @class NoMediaEstablishedYetError\n * @classdesc Raised whenever the user has not established media yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30103\n * @property {string} message - 'User has not established media yet'\n */\nclass NoMediaEstablishedYetError extends WebexMeetingsError {\n static CODE = 30103;\n\n constructor() {\n super(NoMediaEstablishedYetError.CODE, 'User has not established media yet');\n }\n}\n\nexport {NoMediaEstablishedYetError};\nWebExMeetingsErrors[NoMediaEstablishedYetError.CODE] = NoMediaEstablishedYetError;\n\n/**\n * @class UserInLobbyError\n * @classdesc Raised whenever the user is in lobby and not joined yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30104\n * @property {string} message - 'user is still in the lobby or not joined'\n */\nclass UserInLobbyError extends WebexMeetingsError {\n static CODE = 30104;\n\n constructor() {\n super(UserInLobbyError.CODE, 'user is still in the lobby or not joined');\n }\n}\n\nexport {UserInLobbyError};\nWebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;\n\n/**\n * @class IceGatheringFailed\n * @classdesc Raised whenever ice gathering fails.\n * @extends WebexMeetingsError\n * @property {number} code - 30202\n * @property {string} message - 'user failed ice gathering check network/firewall'\n */\nclass IceGatheringFailed extends WebexMeetingsError {\n static CODE = 30202;\n\n constructor() {\n super(IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');\n }\n}\n\nexport {IceGatheringFailed};\nWebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;\n"],"mappings":";;;;;;;;;;;;;;;;AAUA;AAAwD;AAAA;AAExD,IAAMA,mBAAmB,GAAG,CAAC,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmB,CAACC,IAAa,EAAEC,OAAgB,EAAE;EACnED,IAAI,GAAG,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAG,CAAC;EAC1CC,OAAO,GAAG,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,GAAGA,OAAO,GAAG,eAAe;EAE5E,OAAOH,mBAAmB,CAACE,IAAI,CAAC,GAC5B,IAAIF,mBAAmB,CAACE,IAAI,CAAC,EAAE,GAC/B,IAAIE,2BAAkB,CAACF,IAAI,EAAEC,OAAO,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOME,qBAAqB;EAAA;EAAA;EAGzB,iCAAc;IAAA;IAAA,yBACNA,qBAAqB,CAACC,IAAI,EAAE,yCAAyC;EAC7E;EAAC;AAAA,EALiCF,2BAAkB;AAAA;AAAA,8BAAhDC,qBAAqB,UACX,KAAK;AAQrBL,mBAAmB,CAACK,qBAAqB,CAACC,IAAI,CAAC,GAAGD,qBAAqB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOME,kBAAkB;EAAA;EAAA;EAGtB,8BAAc;IAAA;IAAA,0BAEVA,kBAAkB,CAACD,IAAI,EACvB,2EAA2E;EAE/E;EAAC;AAAA,EAR8BF,2BAAkB;AAAA;AAAA,8BAA7CG,kBAAkB,UACR,KAAK;AAWrBP,mBAAmB,CAACO,kBAAkB,CAACD,IAAI,CAAC,GAAGC,kBAAkB;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,0BAA0B;EAAA;EAAA;EAG9B,sCAAc;IAAA;IAAA,0BACNA,0BAA0B,CAACF,IAAI,EAAE,oCAAoC;EAC7E;EAAC;AAAA,EALsCF,2BAAkB;AAAA;AAAA,8BAArDI,0BAA0B,UAChB,KAAK;AAQrBR,mBAAmB,CAACQ,0BAA0B,CAACF,IAAI,CAAC,GAAGE,0BAA0B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,gBAAgB;EAAA;EAAA;EAGpB,4BAAc;IAAA;IAAA,0BACNA,gBAAgB,CAACH,IAAI,EAAE,0CAA0C;EACzE;EAAC;AAAA,EAL4BF,2BAAkB;AAAA;AAAA,8BAA3CK,gBAAgB,UACN,KAAK;AAQrBT,mBAAmB,CAACS,gBAAgB,CAACH,IAAI,CAAC,GAAGG,gBAAgB;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,kBAAkB;EAAA;EAAA;EAGtB,8BAAc;IAAA;IAAA,0BACNA,kBAAkB,CAACJ,IAAI,EAAE,+CAA+C;EAChF;EAAC;AAAA,EAL8BF,2BAAkB;AAAA;AAAA,8BAA7CM,kBAAkB,UACR,KAAK;AAQrBV,mBAAmB,CAACU,kBAAkB,CAACJ,IAAI,CAAC,GAAGI,kBAAkB"}
1
+ {"version":3,"names":["WebExMeetingsErrors","createMeetingsError","code","message","WebexMeetingsError","MeetingNotActiveError","CODE","UserNotJoinedError","NoMediaEstablishedYetError","UserInLobbyError","SpaceIDDeprecatedError","IceGatheringFailed"],"sources":["webex-errors.ts"],"sourcesContent":["// The document would auto generate the doc for errors\n\n// 1) Error codes for Oauth, login, mercury should be separated out (Code range)\n// 2) Errors from the actual locus server or other server in case, we can use the same error code as locus and redirect it\n// 3) Any errors we generate from the SDK can be split into various categories\n// Parameter validation, user action, connection, media specific(They can have different range)\n\n// TODO: all the errors from the server need to be captured\n\n// add a way to log and send metrics if needed\nimport WebexMeetingsError from './webex-meetings-error';\n\nconst WebExMeetingsErrors = {};\n\n/**\n * Create a {@link WebexMeetingsError} for a given code and message.\n * @private\n * @param {number} [code] - Error code\n * @param {string} [message] - Error message\n * @returns {WebexMeetingsError}\n */\nexport function createMeetingsError(code?: number, message?: string) {\n code = typeof code === 'number' ? code : 0;\n message = typeof message === 'string' && message ? message : 'Unknown error';\n\n return WebExMeetingsErrors[code]\n ? new WebExMeetingsErrors[code]()\n : new WebexMeetingsError(code, message);\n}\n\n/**\n * @class MeetingNotActiveError\n * @classdesc Raised whenever Meeting has already ended and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30101\n * @property {string} message - 'Meeting has already Ended or not Active'\n */\nclass MeetingNotActiveError extends WebexMeetingsError {\n static CODE = 30101;\n\n constructor() {\n super(MeetingNotActiveError.CODE, 'Meeting has already Ended or not Active');\n }\n}\n\nexport {MeetingNotActiveError};\nWebExMeetingsErrors[MeetingNotActiveError.CODE] = MeetingNotActiveError;\n\n/**\n * @class UserNotJoinedError\n * @classdesc Raised whenever the user has already left the meeting and user tries to do a action.\n * @extends WebexMeetingsError\n * @property {number} code - 30102\n * @property {string} message - 'User has already left the meeting'\n */\nclass UserNotJoinedError extends WebexMeetingsError {\n static CODE = 30102;\n\n constructor() {\n super(\n UserNotJoinedError.CODE,\n 'User currently not in meeting. Please join a meeting before adding media.'\n );\n }\n}\n\nexport {UserNotJoinedError};\nWebExMeetingsErrors[UserNotJoinedError.CODE] = UserNotJoinedError;\n\n/**\n * @class NoMediaEstablishedYetError\n * @classdesc Raised whenever the user has not established media yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30103\n * @property {string} message - error message\n */\nclass NoMediaEstablishedYetError extends WebexMeetingsError {\n static CODE = 30103;\n\n // eslint-disable-next-line require-jsdoc\n constructor() {\n super(\n NoMediaEstablishedYetError.CODE,\n 'Webrtc media connection is missing, call addMedia() first'\n );\n }\n}\n\nexport {NoMediaEstablishedYetError};\nWebExMeetingsErrors[NoMediaEstablishedYetError.CODE] = NoMediaEstablishedYetError;\n\n/**\n * @class UserInLobbyError\n * @classdesc Raised whenever the user is in lobby and not joined yet.\n * @extends WebexMeetingsError\n * @property {number} code - 30104\n * @property {string} message - 'user is still in the lobby or not joined'\n */\nclass UserInLobbyError extends WebexMeetingsError {\n static CODE = 30104;\n\n constructor() {\n super(UserInLobbyError.CODE, 'user is still in the lobby or not joined');\n }\n}\n\nexport {UserInLobbyError};\nWebExMeetingsErrors[UserInLobbyError.CODE] = UserInLobbyError;\n\n/**\n * @class SpaceIDDeprecatedError\n * @classdesc Raised whenever the user passes Space ID as destination for create meeting.\n * @extends WebexMeetingsError\n * @property {number} code - 30105\n * @property {string} message - Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n */\nclass SpaceIDDeprecatedError extends WebexMeetingsError {\n static CODE = 30105;\n\n constructor() {\n super(\n SpaceIDDeprecatedError.CODE,\n 'Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.'\n );\n }\n}\n\nexport {SpaceIDDeprecatedError};\nWebExMeetingsErrors[SpaceIDDeprecatedError.CODE] = SpaceIDDeprecatedError;\n\n/**\n * @class IceGatheringFailed\n * @classdesc Raised whenever ice gathering fails.\n * @extends WebexMeetingsError\n * @property {number} code - 30202\n * @property {string} message - 'user failed ice gathering check network/firewall'\n */\nclass IceGatheringFailed extends WebexMeetingsError {\n static CODE = 30202;\n\n constructor() {\n super(IceGatheringFailed.CODE, 'iceConnection: gethering ice candidate failed');\n }\n}\n\nexport {IceGatheringFailed};\nWebExMeetingsErrors[IceGatheringFailed.CODE] = IceGatheringFailed;\n"],"mappings":";;;;;;;;;;;;;;;;AAUA;AAAwD;AAAA;AAExD,IAAMA,mBAAmB,GAAG,CAAC,CAAC;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,mBAAmB,CAACC,IAAa,EAAEC,OAAgB,EAAE;EACnED,IAAI,GAAG,OAAOA,IAAI,KAAK,QAAQ,GAAGA,IAAI,GAAG,CAAC;EAC1CC,OAAO,GAAG,OAAOA,OAAO,KAAK,QAAQ,IAAIA,OAAO,GAAGA,OAAO,GAAG,eAAe;EAE5E,OAAOH,mBAAmB,CAACE,IAAI,CAAC,GAC5B,IAAIF,mBAAmB,CAACE,IAAI,CAAC,EAAE,GAC/B,IAAIE,2BAAkB,CAACF,IAAI,EAAEC,OAAO,CAAC;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOME,qBAAqB;EAAA;EAAA;EAGzB,iCAAc;IAAA;IAAA,yBACNA,qBAAqB,CAACC,IAAI,EAAE,yCAAyC;EAC7E;EAAC;AAAA,EALiCF,2BAAkB;AAAA;AAAA,8BAAhDC,qBAAqB,UACX,KAAK;AAQrBL,mBAAmB,CAACK,qBAAqB,CAACC,IAAI,CAAC,GAAGD,qBAAqB;;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOME,kBAAkB;EAAA;EAAA;EAGtB,8BAAc;IAAA;IAAA,0BAEVA,kBAAkB,CAACD,IAAI,EACvB,2EAA2E;EAE/E;EAAC;AAAA,EAR8BF,2BAAkB;AAAA;AAAA,8BAA7CG,kBAAkB,UACR,KAAK;AAWrBP,mBAAmB,CAACO,kBAAkB,CAACD,IAAI,CAAC,GAAGC,kBAAkB;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,0BAA0B;EAAA;EAAA;EAG9B;EACA,sCAAc;IAAA;IAAA,0BAEVA,0BAA0B,CAACF,IAAI,EAC/B,2DAA2D;EAE/D;EAAC;AAAA,EATsCF,2BAAkB;AAAA;AAAA,8BAArDI,0BAA0B,UAChB,KAAK;AAYrBR,mBAAmB,CAACQ,0BAA0B,CAACF,IAAI,CAAC,GAAGE,0BAA0B;;AAEjF;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,gBAAgB;EAAA;EAAA;EAGpB,4BAAc;IAAA;IAAA,0BACNA,gBAAgB,CAACH,IAAI,EAAE,0CAA0C;EACzE;EAAC;AAAA,EAL4BF,2BAAkB;AAAA;AAAA,8BAA3CK,gBAAgB,UACN,KAAK;AAQrBT,mBAAmB,CAACS,gBAAgB,CAACH,IAAI,CAAC,GAAGG,gBAAgB;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,sBAAsB;EAAA;EAAA;EAG1B,kCAAc;IAAA;IAAA,0BAEVA,sBAAsB,CAACJ,IAAI,EAC3B,oOAAoO;EAExO;EAAC;AAAA,EARkCF,2BAAkB;AAAA;AAAA,8BAAjDM,sBAAsB,UACZ,KAAK;AAWrBV,mBAAmB,CAACU,sBAAsB,CAACJ,IAAI,CAAC,GAAGI,sBAAsB;;AAEzE;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOMC,kBAAkB;EAAA;EAAA;EAGtB,8BAAc;IAAA;IAAA,0BACNA,kBAAkB,CAACL,IAAI,EAAE,+CAA+C;EAChF;EAAC;AAAA,EAL8BF,2BAAkB;AAAA;AAAA,8BAA7CO,kBAAkB,UACR,KAAK;AAQrBX,mBAAmB,CAACW,kBAAkB,CAACL,IAAI,CAAC,GAAGK,kBAAkB"}
@@ -7,7 +7,7 @@ _Object$defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _loggerConfig = _interopRequireDefault(require("./logger-config"));
10
- /* eslint-disable no-unused-vars */
10
+ /* eslint-disable @typescript-eslint/no-unused-vars */
11
11
 
12
12
  var LoggerProxy = {
13
13
  logger: {
@@ -1 +1 @@
1
- {"version":3,"names":["LoggerProxy","logger","info","args","console","error","log","warn","trace","debug","set","LoggerConfig","enable","get"],"sources":["logger-proxy.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\nimport LoggerConfig from './logger-config';\n\nconst LoggerProxy: any = {\n logger: {\n info: (args) => {\n console.error('LoggerProxy->info#NO LOGGER DEFINED');\n },\n log: (args) => {\n console.error('LoggerProxy->log#NO LOGGER DEFINED');\n },\n error: (args) => {\n console.error('LoggerProxy->error#NO LOGGER DEFINED');\n },\n warn: (args) => {\n console.error('LoggerProxy->warn#NO LOGGER DEFINED');\n },\n trace: (args) => {\n console.error('LoggerProxy->trace#NO LOGGER DEFINED');\n },\n debug: (args) => {\n console.error('LoggerProxy->debug#NO LOGGER DEFINED');\n },\n },\n};\n\nLoggerProxy.set = (logger) => {\n if (!LoggerConfig.enable) {\n LoggerProxy.logger = {\n info: () => {},\n log: () => {},\n error: () => {},\n warn: () => {},\n trace: () => {},\n debug: () => {},\n };\n } else {\n LoggerProxy.logger = logger;\n }\n};\n\nLoggerProxy.get = () => LoggerProxy.logger;\n\nexport default LoggerProxy;\n"],"mappings":";;;;;;;;AACA;AADA;;AAGA,IAAMA,WAAgB,GAAG;EACvBC,MAAM,EAAE;IACNC,IAAI,EAAE,cAACC,IAAI,EAAK;MACdC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;IACtD,CAAC;IACDC,GAAG,EAAE,aAACH,IAAI,EAAK;MACbC,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC;IACrD,CAAC;IACDA,KAAK,EAAE,eAACF,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD,CAAC;IACDE,IAAI,EAAE,cAACJ,IAAI,EAAK;MACdC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;IACtD,CAAC;IACDG,KAAK,EAAE,eAACL,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD,CAAC;IACDI,KAAK,EAAE,eAACN,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD;EACF;AACF,CAAC;AAEDL,WAAW,CAACU,GAAG,GAAG,UAACT,MAAM,EAAK;EAC5B,IAAI,CAACU,qBAAY,CAACC,MAAM,EAAE;IACxBZ,WAAW,CAACC,MAAM,GAAG;MACnBC,IAAI,EAAE,gBAAM,CAAC,CAAC;MACdI,GAAG,EAAE,eAAM,CAAC,CAAC;MACbD,KAAK,EAAE,iBAAM,CAAC,CAAC;MACfE,IAAI,EAAE,gBAAM,CAAC,CAAC;MACdC,KAAK,EAAE,iBAAM,CAAC,CAAC;MACfC,KAAK,EAAE,iBAAM,CAAC;IAChB,CAAC;EACH,CAAC,MAAM;IACLT,WAAW,CAACC,MAAM,GAAGA,MAAM;EAC7B;AACF,CAAC;AAEDD,WAAW,CAACa,GAAG,GAAG;EAAA,OAAMb,WAAW,CAACC,MAAM;AAAA;AAAC,eAE5BD,WAAW;AAAA"}
1
+ {"version":3,"names":["LoggerProxy","logger","info","args","console","error","log","warn","trace","debug","set","LoggerConfig","enable","get"],"sources":["logger-proxy.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport LoggerConfig from './logger-config';\n\nconst LoggerProxy: any = {\n logger: {\n info: (args) => {\n console.error('LoggerProxy->info#NO LOGGER DEFINED');\n },\n log: (args) => {\n console.error('LoggerProxy->log#NO LOGGER DEFINED');\n },\n error: (args) => {\n console.error('LoggerProxy->error#NO LOGGER DEFINED');\n },\n warn: (args) => {\n console.error('LoggerProxy->warn#NO LOGGER DEFINED');\n },\n trace: (args) => {\n console.error('LoggerProxy->trace#NO LOGGER DEFINED');\n },\n debug: (args) => {\n console.error('LoggerProxy->debug#NO LOGGER DEFINED');\n },\n },\n};\n\nLoggerProxy.set = (logger) => {\n if (!LoggerConfig.enable) {\n LoggerProxy.logger = {\n info: () => {},\n log: () => {},\n error: () => {},\n warn: () => {},\n trace: () => {},\n debug: () => {},\n };\n } else {\n LoggerProxy.logger = logger;\n }\n};\n\nLoggerProxy.get = () => LoggerProxy.logger;\n\nexport default LoggerProxy;\n"],"mappings":";;;;;;;;AACA;AADA;;AAGA,IAAMA,WAAgB,GAAG;EACvBC,MAAM,EAAE;IACNC,IAAI,EAAE,cAACC,IAAI,EAAK;MACdC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;IACtD,CAAC;IACDC,GAAG,EAAE,aAACH,IAAI,EAAK;MACbC,OAAO,CAACC,KAAK,CAAC,oCAAoC,CAAC;IACrD,CAAC;IACDA,KAAK,EAAE,eAACF,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD,CAAC;IACDE,IAAI,EAAE,cAACJ,IAAI,EAAK;MACdC,OAAO,CAACC,KAAK,CAAC,qCAAqC,CAAC;IACtD,CAAC;IACDG,KAAK,EAAE,eAACL,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD,CAAC;IACDI,KAAK,EAAE,eAACN,IAAI,EAAK;MACfC,OAAO,CAACC,KAAK,CAAC,sCAAsC,CAAC;IACvD;EACF;AACF,CAAC;AAEDL,WAAW,CAACU,GAAG,GAAG,UAACT,MAAM,EAAK;EAC5B,IAAI,CAACU,qBAAY,CAACC,MAAM,EAAE;IACxBZ,WAAW,CAACC,MAAM,GAAG;MACnBC,IAAI,EAAE,gBAAM,CAAC,CAAC;MACdI,GAAG,EAAE,eAAM,CAAC,CAAC;MACbD,KAAK,EAAE,iBAAM,CAAC,CAAC;MACfE,IAAI,EAAE,gBAAM,CAAC,CAAC;MACdC,KAAK,EAAE,iBAAM,CAAC,CAAC;MACfC,KAAK,EAAE,iBAAM,CAAC;IAChB,CAAC;EACH,CAAC,MAAM;IACLT,WAAW,CAACC,MAAM,GAAGA,MAAM;EAC7B;AACF,CAAC;AAEDD,WAAW,CAACa,GAAG,GAAG;EAAA,OAAMb,WAAW,CAACC,MAAM;AAAA;AAAC,eAE5BD,WAAW;AAAA"}
@@ -10,23 +10,28 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/he
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
11
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
12
12
  /**
13
- * Simple queue
13
+ * Simple queue in which the elements are always sorted
14
14
  */
15
- var SimpleQueue = /*#__PURE__*/function () {
15
+ var SortedQueue = /*#__PURE__*/function () {
16
+ // returns -1 if left < right, 0 if left === right, +1 if left > right
17
+
16
18
  /**
17
- * @constructs SimpleQueue
19
+ * @constructs SortedQueue
20
+ * @param {Function} compareFunc comparison function used for sorting the elements of the queue
18
21
  */
19
- function SimpleQueue() {
20
- (0, _classCallCheck2.default)(this, SimpleQueue);
22
+ function SortedQueue(compareFunc) {
23
+ (0, _classCallCheck2.default)(this, SortedQueue);
21
24
  (0, _defineProperty2.default)(this, "queue", void 0);
25
+ (0, _defineProperty2.default)(this, "compareFunc", void 0);
22
26
  this.queue = [];
27
+ this.compareFunc = compareFunc;
23
28
  }
24
29
 
25
30
  /**
26
31
  * Removes all of the elements from queue.
27
32
  * @returns {undefined}
28
33
  */
29
- (0, _createClass2.default)(SimpleQueue, [{
34
+ (0, _createClass2.default)(SortedQueue, [{
30
35
  key: "clear",
31
36
  value: function clear() {
32
37
  this.queue = [];
@@ -40,7 +45,17 @@ var SimpleQueue = /*#__PURE__*/function () {
40
45
  }, {
41
46
  key: "enqueue",
42
47
  value: function enqueue(item) {
43
- this.queue.push(item);
48
+ var _this = this;
49
+ // Find the index of the first item in the queue that's greater or equal to the new item.
50
+ // That's where we want to insert the new item.
51
+ var idx = this.queue.findIndex(function (existingItem) {
52
+ return _this.compareFunc(existingItem, item) >= 0;
53
+ });
54
+ if (idx >= 0) {
55
+ this.queue.splice(idx, 0, item);
56
+ } else {
57
+ this.queue.push(item);
58
+ }
44
59
  }
45
60
 
46
61
  /**
@@ -67,7 +82,7 @@ var SimpleQueue = /*#__PURE__*/function () {
67
82
  return this.queue.length;
68
83
  }
69
84
  }]);
70
- return SimpleQueue;
85
+ return SortedQueue;
71
86
  }();
72
- exports.default = SimpleQueue;
87
+ exports.default = SortedQueue;
73
88
  //# sourceMappingURL=queue.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["SimpleQueue","queue","item","push","length","shift"],"sources":["queue.ts"],"sourcesContent":["/**\n * Simple queue\n */\nexport default class SimpleQueue {\n queue: any[];\n /**\n * @constructs SimpleQueue\n */\n constructor() {\n this.queue = [];\n }\n\n /**\n * Removes all of the elements from queue.\n * @returns {undefined}\n */\n clear() {\n this.queue = [];\n }\n\n /**\n * Inserts the specified element into the queue.\n * @param {object} item\n * @returns {undefined}\n */\n enqueue(item: object) {\n this.queue.push(item);\n }\n\n /**\n * Returns and removes the head of the queue.\n * Returns null if the queue is empty.\n * @returns {(object|null)} Queue item or null.\n */\n dequeue() {\n if (this.queue.length === 0) {\n return null;\n }\n\n return this.queue.shift();\n }\n\n /**\n * Returns the number of items in queue.\n * @returns {number}\n */\n size() {\n return this.queue.length;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AAFA,IAGqBA,WAAW;EAE9B;AACF;AACA;EACE,uBAAc;IAAA;IAAA;IACZ,IAAI,CAACC,KAAK,GAAG,EAAE;EACjB;;EAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,iBAAQ;MACN,IAAI,CAACA,KAAK,GAAG,EAAE;IACjB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,iBAAQC,IAAY,EAAE;MACpB,IAAI,CAACD,KAAK,CAACE,IAAI,CAACD,IAAI,CAAC;IACvB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,mBAAU;MACR,IAAI,IAAI,CAACD,KAAK,CAACG,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI;MACb;MAEA,OAAO,IAAI,CAACH,KAAK,CAACI,KAAK,EAAE;IAC3B;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,gBAAO;MACL,OAAO,IAAI,CAACJ,KAAK,CAACG,MAAM;IAC1B;EAAC;EAAA;AAAA;AAAA"}
1
+ {"version":3,"names":["SortedQueue","compareFunc","queue","item","idx","findIndex","existingItem","splice","push","length","shift"],"sources":["queue.ts"],"sourcesContent":["/**\n * Simple queue in which the elements are always sorted\n */\nexport default class SortedQueue<ItemType> {\n queue: ItemType[];\n // returns -1 if left < right, 0 if left === right, +1 if left > right\n compareFunc: (left: ItemType, right: ItemType) => number;\n\n /**\n * @constructs SortedQueue\n * @param {Function} compareFunc comparison function used for sorting the elements of the queue\n */\n constructor(compareFunc: (left: ItemType, right: ItemType) => number) {\n this.queue = [];\n this.compareFunc = compareFunc;\n }\n\n /**\n * Removes all of the elements from queue.\n * @returns {undefined}\n */\n clear() {\n this.queue = [];\n }\n\n /**\n * Inserts the specified element into the queue.\n * @param {object} item\n * @returns {undefined}\n */\n enqueue(item: ItemType) {\n // Find the index of the first item in the queue that's greater or equal to the new item.\n // That's where we want to insert the new item.\n const idx = this.queue.findIndex((existingItem) => {\n return this.compareFunc(existingItem, item) >= 0;\n });\n if (idx >= 0) {\n this.queue.splice(idx, 0, item);\n } else {\n this.queue.push(item);\n }\n }\n\n /**\n * Returns and removes the head of the queue.\n * Returns null if the queue is empty.\n * @returns {(object|null)} Queue item or null.\n */\n dequeue(): ItemType {\n if (this.queue.length === 0) {\n return null;\n }\n\n return this.queue.shift();\n }\n\n /**\n * Returns the number of items in queue.\n * @returns {number}\n */\n size() {\n return this.queue.length;\n }\n}\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AAFA,IAGqBA,WAAW;EAE9B;;EAGA;AACF;AACA;AACA;EACE,qBAAYC,WAAwD,EAAE;IAAA;IAAA;IAAA;IACpE,IAAI,CAACC,KAAK,GAAG,EAAE;IACf,IAAI,CAACD,WAAW,GAAGA,WAAW;EAChC;;EAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,iBAAQ;MACN,IAAI,CAACC,KAAK,GAAG,EAAE;IACjB;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,iBAAQC,IAAc,EAAE;MAAA;MACtB;MACA;MACA,IAAMC,GAAG,GAAG,IAAI,CAACF,KAAK,CAACG,SAAS,CAAC,UAACC,YAAY,EAAK;QACjD,OAAO,KAAI,CAACL,WAAW,CAACK,YAAY,EAAEH,IAAI,CAAC,IAAI,CAAC;MAClD,CAAC,CAAC;MACF,IAAIC,GAAG,IAAI,CAAC,EAAE;QACZ,IAAI,CAACF,KAAK,CAACK,MAAM,CAACH,GAAG,EAAE,CAAC,EAAED,IAAI,CAAC;MACjC,CAAC,MAAM;QACL,IAAI,CAACD,KAAK,CAACM,IAAI,CAACL,IAAI,CAAC;MACvB;IACF;;IAEA;AACF;AACA;AACA;AACA;EAJE;IAAA;IAAA,OAKA,mBAAoB;MAClB,IAAI,IAAI,CAACD,KAAK,CAACO,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI;MACb;MAEA,OAAO,IAAI,CAACP,KAAK,CAACQ,KAAK,EAAE;IAC3B;;IAEA;AACF;AACA;AACA;EAHE;IAAA;IAAA,OAIA,gBAAO;MACL,OAAO,IAAI,CAACR,KAAK,CAACO,MAAM;IAC1B;EAAC;EAAA;AAAA;AAAA"}
package/dist/config.js CHANGED
@@ -13,13 +13,7 @@ var _default = {
13
13
  meetings: {
14
14
  deviceType: _common.deviceType.WEB,
15
15
  mediaSettings: {
16
- sendAudio: true,
17
- sendVideo: true,
18
- receiveAudio: true,
19
- receiveVideo: true,
20
- pstn: false,
21
- sendShare: false,
22
- receiveShare: false
16
+ pstn: false
23
17
  },
24
18
  reconnection: {
25
19
  enabled: false,
@@ -95,14 +89,15 @@ var _default = {
95
89
  receiveTranscription: false,
96
90
  enableExtmap: false,
97
91
  enableAutomaticLLM: false,
92
+ installedOrgID: undefined,
98
93
  experimental: {
99
94
  enableMediaNegotiatedEvent: false,
100
- enableUnifiedMeetings: false,
101
- enableAdhocMeetings: false,
95
+ enableUnifiedMeetings: true,
96
+ enableAdhocMeetings: true,
102
97
  enableTurnDiscovery: true
103
98
  },
104
99
  degradationPreferences: {
105
- maxMacroblocksLimit: 32400
100
+ maxMacroblocksLimit: 8192
106
101
  }
107
102
  }
108
103
  };
@@ -1 +1 @@
1
- {"version":3,"names":["meetings","deviceType","WEB","mediaSettings","sendAudio","sendVideo","receiveAudio","receiveVideo","pstn","sendShare","receiveShare","reconnection","enabled","autoRejoin","detection","iceReconnectionTimeout","maxRejoinAttempts","stats","enableStatsAnalyzer","autoDowngradeEnabled","interval","analyzerInterval","historyMax","videoPacketLossRatioThreshold","rttThreshold","jitterThreshold","metrics","clientName","clientType","subClientType","mqaMetricsInterval","autoSendMQA","logging","enable","verboseEvents","resolution","maxWidth","maxHeight","idealWidth","idealHeight","screenResolution","bandwidth","audio","video","startBitrate","screenFrameRate","videoShareFrameRate","aspectRatio","autoUploadLogs","enableRtx","receiveTranscription","enableExtmap","enableAutomaticLLM","experimental","enableMediaNegotiatedEvent","enableUnifiedMeetings","enableAdhocMeetings","enableTurnDiscovery","degradationPreferences","maxMacroblocksLimit"],"sources":["config.ts"],"sourcesContent":["import {\n // @ts-ignore\n deviceType,\n} from '@webex/common';\n\nexport default {\n // TODO: this needs to be defaulted\n // to JS_SDK and clients set it to WEB or others\n // see https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-73167\n meetings: {\n deviceType: deviceType.WEB,\n mediaSettings: {\n sendAudio: true,\n sendVideo: true,\n receiveAudio: true,\n receiveVideo: true,\n pstn: false,\n sendShare: false,\n receiveShare: false,\n },\n reconnection: {\n enabled: false,\n autoRejoin: true,\n detection: true,\n // Timeout duration to wait for ICE to reconnect if a disconnect is received.\n iceReconnectionTimeout: 10000,\n // Amount of times attempting to rejoin a meeting during reconnect\n maxRejoinAttempts: 3,\n },\n stats: {\n // Enable the webrtc stats analyzer that emits quality degradation events\n enableStatsAnalyzer: true,\n // Enable the auto downgrade video quality feature\n autoDowngradeEnabled: false,\n // 1 second intervals to collect stats data\n interval: 1000,\n // we just want to analyze data every 5 sec interval\n analyzerInterval: 5000,\n // hold the last 2 minute of a calls data\n historyMax: 120,\n // Once packet loss hits this ratio, the video will downgrade\n videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received\n rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n },\n metrics: {\n // change to your client name else data will be muddled\n // you do not need a specific format, and you do not need to register it\n clientName: 'WEBEX_JS_SDK',\n // TODO: for now this line has to be whitelisted, which is problematic for third party\n clientType: 'WEBEX_SDK',\n // Stores the sub client type used when sending metrics\n subClientType: 'WEB_APP',\n // send average values MQA in 60 second intervals\n mqaMetricsInterval: 60000,\n // send to cisco internal MQA data automatically\n // we already send CA\n autoSendMQA: true,\n },\n logging: {\n enable: true,\n verboseEvents: true,\n },\n resolution: {\n maxWidth: 1280,\n maxHeight: 720,\n idealWidth: 1280,\n idealHeight: 720,\n },\n screenResolution: {\n maxWidth: 1920,\n maxHeight: 1080,\n idealWidth: 1920,\n idealHeight: 1080,\n },\n bandwidth: {\n // please note, these are the maximum bandwidth values\n // the server supports, minimums have to be tested\n audio: 64000,\n video: 4000000,\n startBitrate: 2000,\n },\n screenFrameRate: 10,\n videoShareFrameRate: 30,\n aspectRatio: 1.7695852534562213,\n // When enabled, as calls are ended, it will upload the SDK logs and correlate them\n autoUploadLogs: true,\n enableRtx: true,\n receiveTranscription: false,\n enableExtmap: false,\n enableAutomaticLLM: false,\n experimental: {\n enableMediaNegotiatedEvent: false,\n enableUnifiedMeetings: false,\n enableAdhocMeetings: false,\n enableTurnDiscovery: true,\n },\n degradationPreferences: {\n maxMacroblocksLimit: 32400,\n },\n },\n};\n"],"mappings":";;;;;;;AAAA;AAGuB,eAER;EACb;EACA;EACA;EACAA,QAAQ,EAAE;IACRC,UAAU,EAAEA,kBAAU,CAACC,GAAG;IAC1BC,aAAa,EAAE;MACbC,SAAS,EAAE,IAAI;MACfC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,IAAI;MAClBC,YAAY,EAAE,IAAI;MAClBC,IAAI,EAAE,KAAK;MACXC,SAAS,EAAE,KAAK;MAChBC,YAAY,EAAE;IAChB,CAAC;IACDC,YAAY,EAAE;MACZC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,IAAI;MAChBC,SAAS,EAAE,IAAI;MACf;MACAC,sBAAsB,EAAE,KAAK;MAC7B;MACAC,iBAAiB,EAAE;IACrB,CAAC;IACDC,KAAK,EAAE;MACL;MACAC,mBAAmB,EAAE,IAAI;MACzB;MACAC,oBAAoB,EAAE,KAAK;MAC3B;MACAC,QAAQ,EAAE,IAAI;MACd;MACAC,gBAAgB,EAAE,IAAI;MACtB;MACAC,UAAU,EAAE,GAAG;MACf;MACAC,6BAA6B,EAAE,CAAC;MAAE;MAClCC,YAAY,EAAE,GAAG;MAAE;MACnBC,eAAe,EAAE,GAAG,CAAE;IACxB,CAAC;;IACDC,OAAO,EAAE;MACP;MACA;MACAC,UAAU,EAAE,cAAc;MAC1B;MACAC,UAAU,EAAE,WAAW;MACvB;MACAC,aAAa,EAAE,SAAS;MACxB;MACAC,kBAAkB,EAAE,KAAK;MACzB;MACA;MACAC,WAAW,EAAE;IACf,CAAC;IACDC,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZC,aAAa,EAAE;IACjB,CAAC;IACDC,UAAU,EAAE;MACVC,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,GAAG;MACdC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDC,gBAAgB,EAAE;MAChBJ,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDE,SAAS,EAAE;MACT;MACA;MACAC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,OAAO;MACdC,YAAY,EAAE;IAChB,CAAC;IACDC,eAAe,EAAE,EAAE;IACnBC,mBAAmB,EAAE,EAAE;IACvBC,WAAW,EAAE,kBAAkB;IAC/B;IACAC,cAAc,EAAE,IAAI;IACpBC,SAAS,EAAE,IAAI;IACfC,oBAAoB,EAAE,KAAK;IAC3BC,YAAY,EAAE,KAAK;IACnBC,kBAAkB,EAAE,KAAK;IACzBC,YAAY,EAAE;MACZC,0BAA0B,EAAE,KAAK;MACjCC,qBAAqB,EAAE,KAAK;MAC5BC,mBAAmB,EAAE,KAAK;MAC1BC,mBAAmB,EAAE;IACvB,CAAC;IACDC,sBAAsB,EAAE;MACtBC,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC;AAAA"}
1
+ {"version":3,"names":["meetings","deviceType","WEB","mediaSettings","pstn","reconnection","enabled","autoRejoin","detection","iceReconnectionTimeout","maxRejoinAttempts","stats","enableStatsAnalyzer","autoDowngradeEnabled","interval","analyzerInterval","historyMax","videoPacketLossRatioThreshold","rttThreshold","jitterThreshold","metrics","clientName","clientType","subClientType","mqaMetricsInterval","autoSendMQA","logging","enable","verboseEvents","resolution","maxWidth","maxHeight","idealWidth","idealHeight","screenResolution","bandwidth","audio","video","startBitrate","screenFrameRate","videoShareFrameRate","aspectRatio","autoUploadLogs","enableRtx","receiveTranscription","enableExtmap","enableAutomaticLLM","installedOrgID","undefined","experimental","enableMediaNegotiatedEvent","enableUnifiedMeetings","enableAdhocMeetings","enableTurnDiscovery","degradationPreferences","maxMacroblocksLimit"],"sources":["config.ts"],"sourcesContent":["import {\n // @ts-ignore\n deviceType,\n} from '@webex/common';\n\nexport default {\n // TODO: this needs to be defaulted\n // to JS_SDK and clients set it to WEB or others\n // see https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-73167\n meetings: {\n deviceType: deviceType.WEB,\n mediaSettings: {\n pstn: false,\n },\n reconnection: {\n enabled: false,\n autoRejoin: true,\n detection: true,\n // Timeout duration to wait for ICE to reconnect if a disconnect is received.\n iceReconnectionTimeout: 10000,\n // Amount of times attempting to rejoin a meeting during reconnect\n maxRejoinAttempts: 3,\n },\n stats: {\n // Enable the webrtc stats analyzer that emits quality degradation events\n enableStatsAnalyzer: true,\n // Enable the auto downgrade video quality feature\n autoDowngradeEnabled: false,\n // 1 second intervals to collect stats data\n interval: 1000,\n // we just want to analyze data every 5 sec interval\n analyzerInterval: 5000,\n // hold the last 2 minute of a calls data\n historyMax: 120,\n // Once packet loss hits this ratio, the video will downgrade\n videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received\n rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user\n },\n metrics: {\n // change to your client name else data will be muddled\n // you do not need a specific format, and you do not need to register it\n clientName: 'WEBEX_JS_SDK',\n // TODO: for now this line has to be whitelisted, which is problematic for third party\n clientType: 'WEBEX_SDK',\n // Stores the sub client type used when sending metrics\n subClientType: 'WEB_APP',\n // send average values MQA in 60 second intervals\n mqaMetricsInterval: 60000,\n // send to cisco internal MQA data automatically\n // we already send CA\n autoSendMQA: true,\n },\n logging: {\n enable: true,\n verboseEvents: true,\n },\n resolution: {\n maxWidth: 1280,\n maxHeight: 720,\n idealWidth: 1280,\n idealHeight: 720,\n },\n screenResolution: {\n maxWidth: 1920,\n maxHeight: 1080,\n idealWidth: 1920,\n idealHeight: 1080,\n },\n bandwidth: {\n // please note, these are the maximum bandwidth values\n // the server supports, minimums have to be tested\n audio: 64000,\n video: 4000000,\n startBitrate: 2000,\n },\n screenFrameRate: 10,\n videoShareFrameRate: 30,\n aspectRatio: 1.7695852534562213,\n // When enabled, as calls are ended, it will upload the SDK logs and correlate them\n autoUploadLogs: true,\n enableRtx: true,\n receiveTranscription: false,\n enableExtmap: false,\n enableAutomaticLLM: false,\n installedOrgID: undefined,\n experimental: {\n enableMediaNegotiatedEvent: false,\n enableUnifiedMeetings: true,\n enableAdhocMeetings: true,\n enableTurnDiscovery: true,\n },\n degradationPreferences: {\n maxMacroblocksLimit: 8192,\n },\n },\n};\n"],"mappings":";;;;;;;AAAA;AAGuB,eAER;EACb;EACA;EACA;EACAA,QAAQ,EAAE;IACRC,UAAU,EAAEA,kBAAU,CAACC,GAAG;IAC1BC,aAAa,EAAE;MACbC,IAAI,EAAE;IACR,CAAC;IACDC,YAAY,EAAE;MACZC,OAAO,EAAE,KAAK;MACdC,UAAU,EAAE,IAAI;MAChBC,SAAS,EAAE,IAAI;MACf;MACAC,sBAAsB,EAAE,KAAK;MAC7B;MACAC,iBAAiB,EAAE;IACrB,CAAC;IACDC,KAAK,EAAE;MACL;MACAC,mBAAmB,EAAE,IAAI;MACzB;MACAC,oBAAoB,EAAE,KAAK;MAC3B;MACAC,QAAQ,EAAE,IAAI;MACd;MACAC,gBAAgB,EAAE,IAAI;MACtB;MACAC,UAAU,EAAE,GAAG;MACf;MACAC,6BAA6B,EAAE,CAAC;MAAE;MAClCC,YAAY,EAAE,GAAG;MAAE;MACnBC,eAAe,EAAE,GAAG,CAAE;IACxB,CAAC;;IACDC,OAAO,EAAE;MACP;MACA;MACAC,UAAU,EAAE,cAAc;MAC1B;MACAC,UAAU,EAAE,WAAW;MACvB;MACAC,aAAa,EAAE,SAAS;MACxB;MACAC,kBAAkB,EAAE,KAAK;MACzB;MACA;MACAC,WAAW,EAAE;IACf,CAAC;IACDC,OAAO,EAAE;MACPC,MAAM,EAAE,IAAI;MACZC,aAAa,EAAE;IACjB,CAAC;IACDC,UAAU,EAAE;MACVC,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,GAAG;MACdC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDC,gBAAgB,EAAE;MAChBJ,QAAQ,EAAE,IAAI;MACdC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAE,IAAI;MAChBC,WAAW,EAAE;IACf,CAAC;IACDE,SAAS,EAAE;MACT;MACA;MACAC,KAAK,EAAE,KAAK;MACZC,KAAK,EAAE,OAAO;MACdC,YAAY,EAAE;IAChB,CAAC;IACDC,eAAe,EAAE,EAAE;IACnBC,mBAAmB,EAAE,EAAE;IACvBC,WAAW,EAAE,kBAAkB;IAC/B;IACAC,cAAc,EAAE,IAAI;IACpBC,SAAS,EAAE,IAAI;IACfC,oBAAoB,EAAE,KAAK;IAC3BC,YAAY,EAAE,KAAK;IACnBC,kBAAkB,EAAE,KAAK;IACzBC,cAAc,EAAEC,SAAS;IACzBC,YAAY,EAAE;MACZC,0BAA0B,EAAE,KAAK;MACjCC,qBAAqB,EAAE,IAAI;MAC3BC,mBAAmB,EAAE,IAAI;MACzBC,mBAAmB,EAAE;IACvB,CAAC;IACDC,sBAAsB,EAAE;MACtBC,mBAAmB,EAAE;IACvB;EACF;AACF,CAAC;AAAA"}