@webex/plugin-meetings 2.60.0-next.9 → 2.60.1

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 (516) hide show
  1. package/README.md +8 -46
  2. package/dist/common/browser-detection.js +3 -2
  3. package/dist/common/browser-detection.js.map +1 -1
  4. package/dist/common/collection.js +4 -3
  5. package/dist/common/collection.js.map +1 -1
  6. package/dist/common/config.js +2 -1
  7. package/dist/common/config.js.map +1 -1
  8. package/dist/common/errors/captcha-error.js +2 -1
  9. package/dist/common/errors/captcha-error.js.map +1 -1
  10. package/dist/common/errors/intent-to-join.js +2 -1
  11. package/dist/common/errors/intent-to-join.js.map +1 -1
  12. package/dist/common/errors/join-meeting.js +2 -1
  13. package/dist/common/errors/join-meeting.js.map +1 -1
  14. package/dist/common/errors/media.js +2 -1
  15. package/dist/common/errors/media.js.map +1 -1
  16. package/dist/common/errors/parameter.js +4 -3
  17. package/dist/common/errors/parameter.js.map +1 -1
  18. package/dist/common/errors/password-error.js +2 -1
  19. package/dist/common/errors/password-error.js.map +1 -1
  20. package/dist/common/errors/permission.js +2 -1
  21. package/dist/common/errors/permission.js.map +1 -1
  22. package/dist/common/errors/{reclaim-host-role-errors.js → reclaim-host-role-error.js} +11 -7
  23. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  24. package/dist/common/errors/reconnection-in-progress.js +2 -1
  25. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  26. package/dist/common/errors/reconnection.js +2 -1
  27. package/dist/common/errors/reconnection.js.map +1 -1
  28. package/dist/common/errors/stats.js +2 -1
  29. package/dist/common/errors/stats.js.map +1 -1
  30. package/dist/common/errors/webex-errors.d.ts +8 -20
  31. package/dist/common/errors/webex-errors.js +28 -48
  32. package/dist/common/errors/webex-errors.js.map +1 -1
  33. package/dist/common/errors/webex-meetings-error.js +2 -1
  34. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  35. package/dist/common/events/events-scope.js +2 -1
  36. package/dist/common/events/events-scope.js.map +1 -1
  37. package/dist/common/events/events.js +2 -1
  38. package/dist/common/events/events.js.map +1 -1
  39. package/dist/common/events/trigger-proxy.js +2 -1
  40. package/dist/common/events/trigger-proxy.js.map +1 -1
  41. package/dist/common/events/util.js +2 -1
  42. package/dist/common/events/util.js.map +1 -1
  43. package/dist/common/logs/logger-config.js +2 -1
  44. package/dist/common/logs/logger-config.js.map +1 -1
  45. package/dist/common/logs/logger-proxy.js +3 -2
  46. package/dist/common/logs/logger-proxy.js.map +1 -1
  47. package/dist/common/logs/request.d.ts +1 -3
  48. package/dist/common/logs/request.js +5 -8
  49. package/dist/common/logs/request.js.map +1 -1
  50. package/dist/common/queue.d.ts +7 -9
  51. package/dist/common/queue.js +9 -22
  52. package/dist/common/queue.js.map +1 -1
  53. package/dist/config.d.ts +7 -5
  54. package/dist/config.js +11 -8
  55. package/dist/config.js.map +1 -1
  56. package/dist/constants.d.ts +97 -217
  57. package/dist/constants.js +441 -416
  58. package/dist/constants.js.map +1 -1
  59. package/dist/controls-options-manager/constants.js +6 -3
  60. package/dist/controls-options-manager/constants.js.map +1 -1
  61. package/dist/controls-options-manager/enums.d.ts +1 -11
  62. package/dist/controls-options-manager/enums.js +6 -15
  63. package/dist/controls-options-manager/enums.js.map +1 -1
  64. package/dist/controls-options-manager/index.d.ts +1 -17
  65. package/dist/controls-options-manager/index.js +38 -127
  66. package/dist/controls-options-manager/index.js.map +1 -1
  67. package/dist/controls-options-manager/util.d.ts +7 -1
  68. package/dist/controls-options-manager/util.js +19 -309
  69. package/dist/controls-options-manager/util.js.map +1 -1
  70. package/dist/index.d.ts +3 -6
  71. package/dist/index.js +4 -116
  72. package/dist/index.js.map +1 -1
  73. package/dist/locus-info/controlsUtils.js +11 -100
  74. package/dist/locus-info/controlsUtils.js.map +1 -1
  75. package/dist/locus-info/embeddedAppsUtils.js +4 -3
  76. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  77. package/dist/locus-info/fullState.js +2 -1
  78. package/dist/locus-info/fullState.js.map +1 -1
  79. package/dist/locus-info/hostUtils.js +2 -1
  80. package/dist/locus-info/hostUtils.js.map +1 -1
  81. package/dist/locus-info/index.d.ts +4 -57
  82. package/dist/locus-info/index.js +84 -425
  83. package/dist/locus-info/index.js.map +1 -1
  84. package/dist/locus-info/infoUtils.js +5 -13
  85. package/dist/locus-info/infoUtils.js.map +1 -1
  86. package/dist/locus-info/mediaSharesUtils.js +3 -58
  87. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  88. package/dist/locus-info/parser.d.ts +6 -66
  89. package/dist/locus-info/parser.js +80 -253
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +13 -97
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.d.ts +0 -2
  94. package/dist/media/index.js +319 -107
  95. package/dist/media/index.js.map +1 -1
  96. package/dist/media/properties.d.ts +53 -38
  97. package/dist/media/properties.js +153 -96
  98. package/dist/media/properties.js.map +1 -1
  99. package/dist/media/util.js +22 -1
  100. package/dist/media/util.js.map +1 -1
  101. package/dist/mediaQualityMetrics/config.d.ts +230 -234
  102. package/dist/mediaQualityMetrics/config.js +498 -302
  103. package/dist/mediaQualityMetrics/config.js.map +1 -1
  104. package/dist/meeting/effectsState.d.ts +42 -0
  105. package/dist/meeting/effectsState.js +260 -0
  106. package/dist/meeting/effectsState.js.map +1 -0
  107. package/dist/meeting/in-meeting-actions.d.ts +0 -88
  108. package/dist/meeting/in-meeting-actions.js +3 -94
  109. package/dist/meeting/in-meeting-actions.js.map +1 -1
  110. package/dist/meeting/index.d.ts +494 -591
  111. package/dist/meeting/index.js +2969 -4707
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.d.ts +25 -93
  114. package/dist/meeting/muteState.js +133 -224
  115. package/dist/meeting/muteState.js.map +1 -1
  116. package/dist/meeting/request.d.ts +47 -82
  117. package/dist/meeting/request.js +199 -297
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/state.js +2 -1
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.d.ts +1 -102
  122. package/dist/meeting/util.js +435 -605
  123. package/dist/meeting/util.js.map +1 -1
  124. package/dist/meeting-info/collection.js +4 -3
  125. package/dist/meeting-info/collection.js.map +1 -1
  126. package/dist/meeting-info/index.d.ts +1 -13
  127. package/dist/meeting-info/index.js +7 -74
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.d.ts +1 -31
  130. package/dist/meeting-info/meeting-info-v2.js +63 -200
  131. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  132. package/dist/meeting-info/request.js +2 -1
  133. package/dist/meeting-info/request.js.map +1 -1
  134. package/dist/meeting-info/util.js +3 -2
  135. package/dist/meeting-info/util.js.map +1 -1
  136. package/dist/meeting-info/utilv2.js +41 -39
  137. package/dist/meeting-info/utilv2.js.map +1 -1
  138. package/dist/meetings/collection.d.ts +0 -17
  139. package/dist/meetings/collection.js +4 -42
  140. package/dist/meetings/collection.js.map +1 -1
  141. package/dist/meetings/index.d.ts +21 -103
  142. package/dist/meetings/index.js +124 -486
  143. package/dist/meetings/index.js.map +1 -1
  144. package/dist/meetings/request.js +3 -4
  145. package/dist/meetings/request.js.map +1 -1
  146. package/dist/meetings/util.js +6 -107
  147. package/dist/meetings/util.js.map +1 -1
  148. package/dist/member/index.d.ts +1 -13
  149. package/dist/member/index.js +2 -45
  150. package/dist/member/index.js.map +1 -1
  151. package/dist/member/member.types.js +4 -3
  152. package/dist/member/member.types.js.map +1 -1
  153. package/dist/member/util.js +29 -120
  154. package/dist/member/util.js.map +1 -1
  155. package/dist/members/collection.d.ts +0 -5
  156. package/dist/members/collection.js +2 -11
  157. package/dist/members/collection.js.map +1 -1
  158. package/dist/members/index.d.ts +11 -56
  159. package/dist/members/index.js +47 -174
  160. package/dist/members/index.js.map +1 -1
  161. package/dist/members/request.d.ts +11 -67
  162. package/dist/members/request.js +54 -102
  163. package/dist/members/request.js.map +1 -1
  164. package/dist/members/types.js +4 -3
  165. package/dist/members/types.js.map +1 -1
  166. package/dist/members/util.d.ts +1 -214
  167. package/dist/members/util.js +284 -327
  168. package/dist/members/util.js.map +1 -1
  169. package/dist/metrics/config.d.ts +169 -0
  170. package/dist/metrics/config.js +289 -0
  171. package/dist/metrics/config.js.map +1 -0
  172. package/dist/metrics/constants.d.ts +6 -15
  173. package/dist/metrics/constants.js +9 -17
  174. package/dist/metrics/constants.js.map +1 -1
  175. package/dist/metrics/index.d.ts +111 -4
  176. package/dist/metrics/index.js +452 -4
  177. package/dist/metrics/index.js.map +1 -1
  178. package/dist/networkQualityMonitor/index.js +4 -5
  179. package/dist/networkQualityMonitor/index.js.map +1 -1
  180. package/dist/peer-connection-manager/index.d.ts +6 -0
  181. package/dist/peer-connection-manager/index.js +671 -0
  182. package/dist/peer-connection-manager/index.js.map +1 -0
  183. package/dist/peer-connection-manager/util.d.ts +6 -0
  184. package/dist/peer-connection-manager/util.js +110 -0
  185. package/dist/peer-connection-manager/util.js.map +1 -0
  186. package/dist/personal-meeting-room/index.js +3 -2
  187. package/dist/personal-meeting-room/index.js.map +1 -1
  188. package/dist/personal-meeting-room/request.js +3 -2
  189. package/dist/personal-meeting-room/request.js.map +1 -1
  190. package/dist/personal-meeting-room/util.js +2 -1
  191. package/dist/personal-meeting-room/util.js.map +1 -1
  192. package/dist/reachability/index.d.ts +7 -62
  193. package/dist/reachability/index.js +72 -265
  194. package/dist/reachability/index.js.map +1 -1
  195. package/dist/reachability/request.d.ts +3 -7
  196. package/dist/reachability/request.js +10 -18
  197. package/dist/reachability/request.js.map +1 -1
  198. package/dist/reactions/reactions.d.ts +2 -2
  199. package/dist/reactions/reactions.js +6 -4
  200. package/dist/reactions/reactions.js.map +1 -1
  201. package/dist/reactions/reactions.type.d.ts +3 -23
  202. package/dist/reactions/reactions.type.js +23 -21
  203. package/dist/reactions/reactions.type.js.map +1 -1
  204. package/dist/reconnection-manager/index.d.ts +8 -32
  205. package/dist/reconnection-manager/index.js +231 -282
  206. package/dist/reconnection-manager/index.js.map +1 -1
  207. package/dist/recording-controller/enums.js +5 -4
  208. package/dist/recording-controller/enums.js.map +1 -1
  209. package/dist/recording-controller/index.d.ts +1 -15
  210. package/dist/recording-controller/index.js +46 -57
  211. package/dist/recording-controller/index.js.map +1 -1
  212. package/dist/recording-controller/util.d.ts +4 -5
  213. package/dist/recording-controller/util.js +10 -10
  214. package/dist/recording-controller/util.js.map +1 -1
  215. package/dist/roap/collection.d.ts +10 -0
  216. package/dist/roap/collection.js +63 -0
  217. package/dist/roap/collection.js.map +1 -0
  218. package/dist/roap/handler.d.ts +47 -0
  219. package/dist/roap/handler.js +279 -0
  220. package/dist/roap/handler.js.map +1 -0
  221. package/dist/roap/index.d.ts +47 -9
  222. package/dist/roap/index.js +235 -101
  223. package/dist/roap/index.js.map +1 -1
  224. package/dist/roap/request.d.ts +12 -18
  225. package/dist/roap/request.js +180 -126
  226. package/dist/roap/request.js.map +1 -1
  227. package/dist/roap/state.d.ts +9 -0
  228. package/dist/roap/state.js +127 -0
  229. package/dist/roap/state.js.map +1 -0
  230. package/dist/roap/turnDiscovery.d.ts +16 -27
  231. package/dist/roap/turnDiscovery.js +105 -115
  232. package/dist/roap/turnDiscovery.js.map +1 -1
  233. package/dist/roap/util.d.ts +2 -0
  234. package/dist/roap/util.js +76 -0
  235. package/dist/roap/util.js.map +1 -0
  236. package/dist/statsAnalyzer/global.d.ts +83 -1
  237. package/dist/statsAnalyzer/global.js +85 -2
  238. package/dist/statsAnalyzer/global.js.map +1 -1
  239. package/dist/statsAnalyzer/index.d.ts +30 -28
  240. package/dist/statsAnalyzer/index.js +509 -374
  241. package/dist/statsAnalyzer/index.js.map +1 -1
  242. package/dist/statsAnalyzer/mqaUtil.d.ts +6 -8
  243. package/dist/statsAnalyzer/mqaUtil.js +83 -116
  244. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  245. package/dist/transcription/index.js +2 -1
  246. package/dist/transcription/index.js.map +1 -1
  247. package/package.json +26 -35
  248. package/src/common/errors/webex-errors.ts +12 -36
  249. package/src/common/logs/logger-proxy.ts +1 -1
  250. package/src/common/logs/request.ts +1 -5
  251. package/src/common/queue.ts +8 -22
  252. package/src/config.ts +7 -5
  253. package/src/constants.ts +97 -244
  254. package/src/controls-options-manager/enums.ts +0 -12
  255. package/src/controls-options-manager/index.ts +21 -116
  256. package/src/controls-options-manager/util.ts +14 -294
  257. package/src/index.js +15 -0
  258. package/src/locus-info/controlsUtils.ts +0 -110
  259. package/src/locus-info/index.ts +61 -449
  260. package/src/locus-info/infoUtils.ts +2 -14
  261. package/src/locus-info/mediaSharesUtils.ts +0 -64
  262. package/src/locus-info/parser.ts +47 -258
  263. package/src/locus-info/selfUtils.ts +2 -85
  264. package/src/media/index.ts +370 -153
  265. package/src/media/properties.ts +136 -106
  266. package/src/media/util.ts +21 -0
  267. package/src/mediaQualityMetrics/config.ts +377 -244
  268. package/src/meeting/effectsState.ts +209 -0
  269. package/src/meeting/in-meeting-actions.ts +0 -176
  270. package/src/meeting/index.ts +2482 -3929
  271. package/src/meeting/muteState.ts +138 -224
  272. package/src/meeting/request.ts +127 -207
  273. package/src/meeting/util.ts +423 -590
  274. package/src/meeting-info/index.ts +8 -81
  275. package/src/meeting-info/meeting-info-v2.ts +13 -163
  276. package/src/meeting-info/util.ts +1 -1
  277. package/src/meeting-info/utilv2.ts +28 -28
  278. package/src/meetings/collection.ts +0 -33
  279. package/src/meetings/index.ts +126 -486
  280. package/src/meetings/request.ts +0 -2
  281. package/src/meetings/util.ts +5 -116
  282. package/src/member/index.ts +1 -43
  283. package/src/member/util.ts +28 -125
  284. package/src/members/collection.ts +0 -8
  285. package/src/members/index.ts +52 -187
  286. package/src/members/request.ts +27 -87
  287. package/src/members/util.ts +291 -332
  288. package/src/metrics/config.ts +485 -0
  289. package/src/metrics/constants.ts +6 -15
  290. package/src/metrics/index.ts +471 -1
  291. package/src/networkQualityMonitor/index.ts +6 -6
  292. package/src/peer-connection-manager/index.ts +847 -0
  293. package/src/peer-connection-manager/util.ts +119 -0
  294. package/src/reachability/index.ts +45 -238
  295. package/src/reachability/request.ts +8 -17
  296. package/src/reactions/reactions.ts +4 -4
  297. package/src/reactions/reactions.type.ts +4 -30
  298. package/src/reconnection-manager/index.ts +156 -168
  299. package/src/recording-controller/index.ts +3 -20
  300. package/src/recording-controller/util.ts +9 -26
  301. package/src/roap/collection.ts +62 -0
  302. package/src/roap/handler.ts +294 -0
  303. package/src/roap/index.ts +241 -98
  304. package/src/roap/request.ts +148 -74
  305. package/src/roap/state.ts +156 -0
  306. package/src/roap/turnDiscovery.ts +56 -62
  307. package/src/roap/util.ts +100 -0
  308. package/src/statsAnalyzer/global.ts +84 -1
  309. package/src/statsAnalyzer/index.ts +642 -413
  310. package/src/statsAnalyzer/mqaUtil.ts +114 -111
  311. package/test/integration/spec/journey.js +264 -320
  312. package/test/integration/spec/space-meeting.js +4 -77
  313. package/test/unit/spec/common/queue.js +2 -31
  314. package/test/unit/spec/controls-options-manager/index.js +0 -163
  315. package/test/unit/spec/controls-options-manager/util.js +60 -576
  316. package/test/unit/spec/fixture/locus.js +0 -1
  317. package/test/unit/spec/locus-info/controlsUtils.js +30 -323
  318. package/test/unit/spec/locus-info/index.js +15 -1389
  319. package/test/unit/spec/locus-info/infoUtils.js +16 -54
  320. package/test/unit/spec/locus-info/lib/SeqCmp.json +0 -16
  321. package/test/unit/spec/locus-info/lib/selfConstant.js +0 -48
  322. package/test/unit/spec/locus-info/parser.js +35 -116
  323. package/test/unit/spec/locus-info/selfUtils.js +0 -275
  324. package/test/unit/spec/media/properties.ts +84 -75
  325. package/test/unit/spec/meeting/effectsState.js +281 -0
  326. package/test/unit/spec/meeting/in-meeting-actions.ts +0 -86
  327. package/test/unit/spec/meeting/index.js +3136 -8547
  328. package/test/unit/spec/meeting/muteState.js +213 -409
  329. package/test/unit/spec/meeting/request.js +42 -512
  330. package/test/unit/spec/meeting/utils.js +24 -741
  331. package/test/unit/spec/meeting-info/meetinginfov2.js +5 -527
  332. package/test/unit/spec/meeting-info/utilv2.js +0 -21
  333. package/test/unit/spec/meetings/collection.js +0 -26
  334. package/test/unit/spec/meetings/index.js +211 -1278
  335. package/test/unit/spec/meetings/utils.js +2 -202
  336. package/test/unit/spec/member/index.js +9 -32
  337. package/test/unit/spec/member/util.js +61 -499
  338. package/test/unit/spec/members/index.js +5 -394
  339. package/test/unit/spec/members/request.js +27 -206
  340. package/test/unit/spec/members/utils.js +38 -173
  341. package/test/unit/spec/metrics/index.js +50 -1
  342. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  343. package/test/unit/spec/peerconnection-manager/index.js +218 -0
  344. package/test/unit/spec/peerconnection-manager/utils.js +49 -0
  345. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +388 -0
  346. package/test/unit/spec/reachability/index.ts +24 -598
  347. package/test/unit/spec/reconnection-manager/index.js +24 -162
  348. package/test/unit/spec/recording-controller/index.js +218 -293
  349. package/test/unit/spec/recording-controller/util.js +96 -223
  350. package/test/unit/spec/roap/index.ts +76 -200
  351. package/test/unit/spec/roap/turnDiscovery.ts +48 -86
  352. package/test/unit/spec/roap/util.js +30 -0
  353. package/test/unit/spec/stats-analyzer/index.js +174 -188
  354. package/test/utils/testUtils.js +45 -0
  355. package/test/utils/webex-config.js +0 -4
  356. package/test/utils/webex-test-users.js +3 -7
  357. package/dist/annotation/annotation.types.d.ts +0 -42
  358. package/dist/annotation/annotation.types.js +0 -7
  359. package/dist/annotation/annotation.types.js.map +0 -1
  360. package/dist/annotation/constants.d.ts +0 -31
  361. package/dist/annotation/constants.js +0 -41
  362. package/dist/annotation/constants.js.map +0 -1
  363. package/dist/annotation/index.d.ts +0 -117
  364. package/dist/annotation/index.js +0 -357
  365. package/dist/annotation/index.js.map +0 -1
  366. package/dist/breakouts/breakout.d.ts +0 -8
  367. package/dist/breakouts/breakout.js +0 -215
  368. package/dist/breakouts/breakout.js.map +0 -1
  369. package/dist/breakouts/collection.d.ts +0 -5
  370. package/dist/breakouts/collection.js +0 -22
  371. package/dist/breakouts/collection.js.map +0 -1
  372. package/dist/breakouts/edit-lock-error.d.ts +0 -15
  373. package/dist/breakouts/edit-lock-error.js +0 -51
  374. package/dist/breakouts/edit-lock-error.js.map +0 -1
  375. package/dist/breakouts/events.d.ts +0 -8
  376. package/dist/breakouts/events.js +0 -44
  377. package/dist/breakouts/events.js.map +0 -1
  378. package/dist/breakouts/index.d.ts +0 -5
  379. package/dist/breakouts/index.js +0 -1047
  380. package/dist/breakouts/index.js.map +0 -1
  381. package/dist/breakouts/request.d.ts +0 -22
  382. package/dist/breakouts/request.js +0 -77
  383. package/dist/breakouts/request.js.map +0 -1
  384. package/dist/breakouts/utils.d.ts +0 -15
  385. package/dist/breakouts/utils.js +0 -64
  386. package/dist/breakouts/utils.js.map +0 -1
  387. package/dist/common/errors/no-meeting-info.d.ts +0 -14
  388. package/dist/common/errors/no-meeting-info.js +0 -50
  389. package/dist/common/errors/no-meeting-info.js.map +0 -1
  390. package/dist/common/errors/reclaim-host-role-errors.js.map +0 -1
  391. package/dist/controls-options-manager/types.d.ts +0 -43
  392. package/dist/controls-options-manager/types.js +0 -7
  393. package/dist/controls-options-manager/types.js.map +0 -1
  394. package/dist/interpretation/collection.d.ts +0 -5
  395. package/dist/interpretation/collection.js +0 -22
  396. package/dist/interpretation/collection.js.map +0 -1
  397. package/dist/interpretation/index.d.ts +0 -5
  398. package/dist/interpretation/index.js +0 -365
  399. package/dist/interpretation/index.js.map +0 -1
  400. package/dist/interpretation/siLanguage.d.ts +0 -5
  401. package/dist/interpretation/siLanguage.js +0 -24
  402. package/dist/interpretation/siLanguage.js.map +0 -1
  403. package/dist/meeting/locusMediaRequest.d.ts +0 -74
  404. package/dist/meeting/locusMediaRequest.js +0 -291
  405. package/dist/meeting/locusMediaRequest.js.map +0 -1
  406. package/dist/meeting/request.type.d.ts +0 -11
  407. package/dist/meeting/request.type.js +0 -7
  408. package/dist/meeting/request.type.js.map +0 -1
  409. package/dist/meetings/meetings.types.d.ts +0 -4
  410. package/dist/meetings/meetings.types.js +0 -7
  411. package/dist/meetings/meetings.types.js.map +0 -1
  412. package/dist/member/types.d.ts +0 -32
  413. package/dist/member/types.js +0 -23
  414. package/dist/member/types.js.map +0 -1
  415. package/dist/multistream/mediaRequestManager.d.ts +0 -118
  416. package/dist/multistream/mediaRequestManager.js +0 -344
  417. package/dist/multistream/mediaRequestManager.js.map +0 -1
  418. package/dist/multistream/receiveSlot.d.ts +0 -68
  419. package/dist/multistream/receiveSlot.js +0 -200
  420. package/dist/multistream/receiveSlot.js.map +0 -1
  421. package/dist/multistream/receiveSlotManager.d.ts +0 -56
  422. package/dist/multistream/receiveSlotManager.js +0 -174
  423. package/dist/multistream/receiveSlotManager.js.map +0 -1
  424. package/dist/multistream/remoteMedia.d.ts +0 -72
  425. package/dist/multistream/remoteMedia.js +0 -268
  426. package/dist/multistream/remoteMedia.js.map +0 -1
  427. package/dist/multistream/remoteMediaGroup.d.ts +0 -47
  428. package/dist/multistream/remoteMediaGroup.js +0 -267
  429. package/dist/multistream/remoteMediaGroup.js.map +0 -1
  430. package/dist/multistream/remoteMediaManager.d.ts +0 -285
  431. package/dist/multistream/remoteMediaManager.js +0 -1211
  432. package/dist/multistream/remoteMediaManager.js.map +0 -1
  433. package/dist/multistream/sendSlotManager.d.ts +0 -61
  434. package/dist/multistream/sendSlotManager.js +0 -236
  435. package/dist/multistream/sendSlotManager.js.map +0 -1
  436. package/dist/reactions/constants.d.ts +0 -3
  437. package/dist/reactions/constants.js +0 -12
  438. package/dist/reactions/constants.js.map +0 -1
  439. package/dist/rtcMetrics/constants.d.ts +0 -4
  440. package/dist/rtcMetrics/constants.js +0 -11
  441. package/dist/rtcMetrics/constants.js.map +0 -1
  442. package/dist/rtcMetrics/index.d.ts +0 -54
  443. package/dist/rtcMetrics/index.js +0 -140
  444. package/dist/rtcMetrics/index.js.map +0 -1
  445. package/dist/webinar/collection.d.ts +0 -16
  446. package/dist/webinar/collection.js +0 -43
  447. package/dist/webinar/collection.js.map +0 -1
  448. package/dist/webinar/index.d.ts +0 -5
  449. package/dist/webinar/index.js +0 -68
  450. package/dist/webinar/index.js.map +0 -1
  451. package/src/annotation/annotation.types.ts +0 -50
  452. package/src/annotation/constants.ts +0 -36
  453. package/src/annotation/index.ts +0 -328
  454. package/src/breakouts/README.md +0 -220
  455. package/src/breakouts/breakout.ts +0 -188
  456. package/src/breakouts/collection.ts +0 -19
  457. package/src/breakouts/edit-lock-error.ts +0 -25
  458. package/src/breakouts/events.ts +0 -56
  459. package/src/breakouts/index.ts +0 -925
  460. package/src/breakouts/request.ts +0 -55
  461. package/src/breakouts/utils.ts +0 -57
  462. package/src/common/errors/no-meeting-info.ts +0 -24
  463. package/src/controls-options-manager/types.ts +0 -59
  464. package/src/index.ts +0 -40
  465. package/src/interpretation/README.md +0 -60
  466. package/src/interpretation/collection.ts +0 -19
  467. package/src/interpretation/index.ts +0 -332
  468. package/src/interpretation/siLanguage.ts +0 -18
  469. package/src/meeting/locusMediaRequest.ts +0 -313
  470. package/src/meeting/request.type.ts +0 -13
  471. package/src/meetings/meetings.types.ts +0 -12
  472. package/src/member/types.ts +0 -38
  473. package/src/multistream/mediaRequestManager.ts +0 -440
  474. package/src/multistream/receiveSlot.ts +0 -184
  475. package/src/multistream/receiveSlotManager.ts +0 -166
  476. package/src/multistream/remoteMedia.ts +0 -254
  477. package/src/multistream/remoteMediaGroup.ts +0 -284
  478. package/src/multistream/remoteMediaManager.ts +0 -1145
  479. package/src/multistream/sendSlotManager.ts +0 -170
  480. package/src/reactions/constants.ts +0 -4
  481. package/src/rtcMetrics/constants.ts +0 -3
  482. package/src/rtcMetrics/index.ts +0 -124
  483. package/src/webinar/collection.ts +0 -31
  484. package/src/webinar/index.ts +0 -62
  485. package/test/integration/spec/converged-space-meetings.js +0 -233
  486. package/test/unit/spec/annotation/index.ts +0 -418
  487. package/test/unit/spec/breakouts/breakout.ts +0 -237
  488. package/test/unit/spec/breakouts/collection.ts +0 -15
  489. package/test/unit/spec/breakouts/edit-lock-error.ts +0 -30
  490. package/test/unit/spec/breakouts/events.ts +0 -89
  491. package/test/unit/spec/breakouts/index.ts +0 -1790
  492. package/test/unit/spec/breakouts/request.ts +0 -104
  493. package/test/unit/spec/breakouts/utils.js +0 -72
  494. package/test/unit/spec/interpretation/collection.ts +0 -15
  495. package/test/unit/spec/interpretation/index.ts +0 -589
  496. package/test/unit/spec/interpretation/siLanguage.ts +0 -28
  497. package/test/unit/spec/locus-info/mediaSharesUtils.ts +0 -32
  498. package/test/unit/spec/media/index.ts +0 -290
  499. package/test/unit/spec/meeting/locusMediaRequest.ts +0 -442
  500. package/test/unit/spec/meeting-info/index.js +0 -300
  501. package/test/unit/spec/multistream/mediaRequestManager.ts +0 -1418
  502. package/test/unit/spec/multistream/receiveSlot.ts +0 -163
  503. package/test/unit/spec/multistream/receiveSlotManager.ts +0 -203
  504. package/test/unit/spec/multistream/remoteMedia.ts +0 -255
  505. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -662
  506. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1924
  507. package/test/unit/spec/multistream/sendSlotManager.ts +0 -242
  508. package/test/unit/spec/reachability/request.js +0 -68
  509. package/test/unit/spec/roap/request.ts +0 -232
  510. package/test/unit/spec/rtcMetrics/index.ts +0 -93
  511. package/test/unit/spec/webinar/collection.ts +0 -13
  512. package/test/unit/spec/webinar/index.ts +0 -60
  513. package/test/utils/constants.js +0 -9
  514. package/test/utils/integrationTestUtils.js +0 -46
  515. /package/dist/common/errors/{reclaim-host-role-errors.d.ts → reclaim-host-role-error.d.ts} +0 -0
  516. /package/src/common/errors/{reclaim-host-role-errors.ts → reclaim-host-role-error.ts} +0 -0
@@ -1,170 +0,0 @@
1
- import {
2
- SendSlot,
3
- MediaType,
4
- LocalStream,
5
- MultistreamRoapMediaConnection,
6
- } from '@webex/internal-media-core';
7
-
8
- export default class SendSlotManager {
9
- private readonly slots: Map<MediaType, SendSlot> = new Map();
10
- private readonly LoggerProxy: any;
11
-
12
- constructor(LoggerProxy: any) {
13
- this.LoggerProxy = LoggerProxy;
14
- }
15
-
16
- /**
17
- * This method is used to create a sendSlot for the given mediaType and returns the created sendSlot
18
- * @param {MultistreamRoapMediaConnection} mediaConnection MultistreamRoapMediaConnection for which a sendSlot needs to be created
19
- * @param {MediaType} mediaType MediaType for which a sendSlot needs to be created (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
20
- * @param {boolean} active This is optional boolean to set the active state of the sendSlot. Default is true
21
- * @returns {SendSlot} slot The created sendSlot
22
- */
23
- public createSlot(
24
- mediaConnection: MultistreamRoapMediaConnection,
25
- mediaType: MediaType,
26
- active = true
27
- ): SendSlot {
28
- if (this.slots.has(mediaType)) {
29
- throw new Error(`Slot for ${mediaType} already exists`);
30
- }
31
-
32
- const slot: SendSlot = mediaConnection.createSendSlot(mediaType, active);
33
-
34
- this.slots.set(mediaType, slot);
35
-
36
- this.LoggerProxy.logger.info(
37
- `SendSlotsManager->createSlot#Created slot for ${mediaType} with active ${active}`
38
- );
39
-
40
- return slot;
41
- }
42
-
43
- /**
44
- * This method is used to retrieve the sendSlot for the given mediaType
45
- * @param {MediaType} mediaType of which the slot needs to be retrieved
46
- * @returns {SendSlot}
47
- */
48
- public getSlot(mediaType: MediaType): SendSlot {
49
- const slot = this.slots.get(mediaType);
50
-
51
- if (!slot) {
52
- throw new Error(`Slot for ${mediaType} does not exist`);
53
- }
54
-
55
- return slot;
56
- }
57
-
58
- /**
59
- * This method publishes the given stream to the sendSlot for the given mediaType
60
- * @param {MediaType} mediaType MediaType of the sendSlot to which a stream needs to be published (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
61
- * @param {LocalStream} stream LocalStream to be published
62
- * @returns {Promise<void>}
63
- */
64
- public async publishStream(mediaType: MediaType, stream: LocalStream): Promise<void> {
65
- const slot = this.slots.get(mediaType);
66
-
67
- if (!slot) {
68
- throw new Error(`Slot for ${mediaType} does not exist`);
69
- }
70
-
71
- await slot.publishStream(stream);
72
-
73
- this.LoggerProxy.logger.info(
74
- `SendSlotsManager->publishStream#Published stream for ${mediaType} and stream with label ${stream.label} and muted ${stream.muted}`
75
- );
76
- }
77
-
78
- /**
79
- * This method unpublishes the stream from the sendSlot of the given mediaType
80
- * @param {MediaType} mediaType MediaType of the sendSlot from which a stream needs to be unpublished (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
81
- * @returns {Promise<void>}
82
- */
83
- public async unpublishStream(mediaType: MediaType): Promise<void> {
84
- const slot = this.slots.get(mediaType);
85
-
86
- if (!slot) {
87
- throw new Error(`Slot for ${mediaType} does not exist`);
88
- }
89
-
90
- await slot.unpublishStream();
91
-
92
- this.LoggerProxy.logger.info(
93
- `SendSlotsManager->unpublishStream#Unpublished stream for ${mediaType}`
94
- );
95
- }
96
-
97
- /**
98
- * This method is used to set the active state of the sendSlot for the given mediaType
99
- * @param {MediaType} mediaType The MediaType of the sendSlot for which the active state needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
100
- * @param {boolean} active The boolean to set the active state of the sendSlot. Default is true
101
- * @returns {void}
102
- */
103
- public setActive(mediaType: MediaType, active = true): void {
104
- const slot = this.slots.get(mediaType);
105
-
106
- if (!slot) {
107
- throw new Error(`Slot for ${mediaType} does not exist`);
108
- }
109
-
110
- slot.active = active;
111
-
112
- this.LoggerProxy.logger.info(
113
- `SendSlotsManager->setActive#Set active for ${mediaType} to ${active}`
114
- );
115
- }
116
-
117
- /**
118
- * This method is used to set the codec parameters for the sendSlot of the given mediaType
119
- * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be set (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
120
- * @param {Object} codecParameters
121
- * @returns {Promise<void>}
122
- */
123
- public async setCodecParameters(
124
- mediaType: MediaType,
125
- codecParameters: {
126
- [key: string]: string | undefined; // As per ts-sdp undefined is considered as a valid value to be used for codec parameters
127
- }
128
- ): Promise<void> {
129
- // These codec parameter changes underneath are SDP value changes that are taken care by WCME automatically. So no need for any change in streams from the web sdk side
130
- const slot = this.slots.get(mediaType);
131
-
132
- if (!slot) {
133
- throw new Error(`Slot for ${mediaType} does not exist`);
134
- }
135
-
136
- await slot.setCodecParameters(codecParameters);
137
-
138
- this.LoggerProxy.logger.info(
139
- `SendSlotsManager->setCodecParameters#Set codec parameters for ${mediaType} to ${codecParameters}`
140
- );
141
- }
142
-
143
- /**
144
- * This method is used to delete the codec parameters for the sendSlot of the given mediaType
145
- * @param {MediaType} mediaType MediaType of the sendSlot for which the codec parameters needs to be deleted (AUDIO_MAIN/VIDEO_MAIN/AUDIO_SLIDES/VIDEO_SLIDES)
146
- * @param {Array<String>} parameters Array of keys of the codec parameters to be deleted
147
- * @returns {Promise<void>}
148
- */
149
- public async deleteCodecParameters(mediaType: MediaType, parameters: string[]): Promise<void> {
150
- const slot = this.slots.get(mediaType);
151
-
152
- if (!slot) {
153
- throw new Error(`Slot for ${mediaType} does not exist`);
154
- }
155
-
156
- await slot.deleteCodecParameters(parameters);
157
-
158
- this.LoggerProxy.logger.info(
159
- `SendSlotsManager->deleteCodecParameters#Deleted the following codec parameters -> ${parameters} for ${mediaType}`
160
- );
161
- }
162
-
163
- /**
164
- * This method is used to reset the SendSlotsManager by deleting all the sendSlots
165
- * @returns {undefined}
166
- */
167
- public reset(): void {
168
- this.slots.clear();
169
- }
170
- }
@@ -1,4 +0,0 @@
1
- // eslint-disable-next-line import/prefer-default-export
2
- export const REACTION_RELAY_TYPES = {
3
- REACTION: 'react',
4
- } as const;
@@ -1,3 +0,0 @@
1
- const RTC_METRICS = {APP_ID: 'FFB51ED5-4319-4C55-8303-B1F2FCCDE231'};
2
-
3
- export {RTC_METRICS as default};
@@ -1,124 +0,0 @@
1
- /* eslint-disable class-methods-use-this */
2
- import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
3
- import RTC_METRICS from './constants';
4
-
5
- /**
6
- * Rtc Metrics
7
- */
8
- export default class RtcMetrics {
9
- /**
10
- * Array of MetricData items to be sent to the metrics service.
11
- */
12
- metricsQueue = [];
13
-
14
- intervalId: number;
15
-
16
- webex: any;
17
-
18
- meetingId: string;
19
-
20
- correlationId: string;
21
-
22
- /**
23
- * Initialize the interval.
24
- *
25
- * @param {object} webex - The main `webex` object.
26
- * @param {string} meetingId - The meeting id.
27
- * @param {string} correlationId - The correlation id.
28
- */
29
- constructor(webex, meetingId, correlationId) {
30
- // `window` is used to prevent typescript from returning a NodeJS.Timer.
31
- this.intervalId = window.setInterval(this.sendMetricsInQueue.bind(this), 30 * 1000);
32
- this.meetingId = meetingId;
33
- this.webex = webex;
34
- this.correlationId = correlationId;
35
- // Send the first set of metrics at 5 seconds in the case of a user leaving the call shortly after joining.
36
- setTimeout(this.sendMetricsInQueue.bind(this), 5 * 1000);
37
- }
38
-
39
- /**
40
- * Check to see if the metrics queue has any items.
41
- *
42
- * @returns {void}
43
- */
44
- public sendMetricsInQueue() {
45
- if (this.metricsQueue.length) {
46
- this.sendMetrics();
47
- this.metricsQueue = [];
48
- }
49
- }
50
-
51
- /**
52
- * Add metrics items to the metrics queue.
53
- *
54
- * @param {object} data - An object with a payload array of metrics items.
55
- *
56
- * @returns {void}
57
- */
58
- addMetrics(data) {
59
- if (data.payload.length) {
60
- if (data.name === 'stats-report') {
61
- data.payload = data.payload.map(this.anonymizeIp);
62
- }
63
- this.metricsQueue.push(data);
64
- }
65
- }
66
-
67
- /**
68
- * Clear the metrics interval.
69
- *
70
- * @returns {void}
71
- */
72
- closeMetrics() {
73
- this.sendMetricsInQueue();
74
- clearInterval(this.intervalId);
75
- }
76
-
77
- /**
78
- * Anonymize IP addresses.
79
- *
80
- * @param {array} stats - An RTCStatsReport organized into an array of strings.
81
- * @returns {string}
82
- */
83
- anonymizeIp(stats: string): string {
84
- const data = JSON.parse(stats);
85
- // on local and remote candidates, anonymize the last 4 bits.
86
- if (data.type === 'local-candidate' || data.type === 'remote-candidate') {
87
- data.ip = CallDiagnosticUtils.anonymizeIPAddress(data.ip) || undefined;
88
- data.address = CallDiagnosticUtils.anonymizeIPAddress(data.address) || undefined;
89
- data.relatedAddress =
90
- CallDiagnosticUtils.anonymizeIPAddress(data.relatedAddress) || undefined;
91
- }
92
-
93
- return JSON.stringify(data);
94
- }
95
-
96
- /**
97
- * Send metrics to the metrics service.
98
- *
99
- * @returns {void}
100
- */
101
- private sendMetrics() {
102
- this.webex.request({
103
- method: 'POST',
104
- service: 'unifiedTelemetry',
105
- resource: 'metric/v2',
106
- headers: {
107
- type: 'webrtcMedia',
108
- appId: RTC_METRICS.APP_ID,
109
- },
110
- body: {
111
- metrics: [
112
- {
113
- type: 'webrtc',
114
- version: '1.0.1',
115
- userId: this.webex.internal.device.userId,
116
- meetingId: this.meetingId,
117
- correlationId: this.correlationId,
118
- data: this.metricsQueue,
119
- },
120
- ],
121
- },
122
- });
123
- }
124
- }
@@ -1,31 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import {MEETINGS} from '../constants';
6
-
7
- class WebinarCollection {
8
- webinarInfo: any;
9
-
10
- namespace = MEETINGS;
11
-
12
- mainIndex = 'sessionId';
13
-
14
- constructor() {
15
- this.webinarInfo = {};
16
- }
17
-
18
- set(id, info) {
19
- this.webinarInfo[id] = info;
20
- }
21
-
22
- /**
23
- * @param {String} id
24
- * @returns {Member}
25
- */
26
- get(id: string) {
27
- return this.webinarInfo[id];
28
- }
29
- }
30
-
31
- export default WebinarCollection;
@@ -1,62 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
- */
4
- import {WebexPlugin} from '@webex/webex-core';
5
- import {MEETINGS} from '../constants';
6
-
7
- import WebinarCollection from './collection';
8
-
9
- /**
10
- * @class Webinar
11
- */
12
- const Webinar = WebexPlugin.extend({
13
- namespace: MEETINGS,
14
- collections: {
15
- webinar: WebinarCollection,
16
- },
17
-
18
- props: {
19
- locusUrl: 'string', // appears current webinar's locus url
20
- webcastUrl: 'string', // current webinar's webcast url
21
- webinarAttendeesSearchingUrl: 'string', // current webinarAttendeesSearching url
22
- canManageWebcast: 'boolean', // appears the ability to manage webcast
23
- },
24
-
25
- /**
26
- * Update the current locus url of the webinar
27
- * @param {string} locusUrl // locus url
28
- * @returns {void}
29
- */
30
- locusUrlUpdate(locusUrl) {
31
- this.set('locusUrl', locusUrl);
32
- },
33
-
34
- /**
35
- * Update the current webcast url of the meeting
36
- * @param {string} webcastUrl // webcast url
37
- * @returns {void}
38
- */
39
- webcastUrlUpdate(webcastUrl) {
40
- this.set('webcastUrl', webcastUrl);
41
- },
42
-
43
- /**
44
- * Update the current webinarAttendeesSearching url of the meeting
45
- * @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
46
- * @returns {void}
47
- */
48
- webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
49
- this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
50
- },
51
-
52
- /**
53
- * Update whether self has capability to manage start/stop webcast (only host can manage it)
54
- * @param {boolean} canManageWebcast
55
- * @returns {void}
56
- */
57
- updateCanManageWebcast(canManageWebcast) {
58
- this.set('canManageWebcast', canManageWebcast);
59
- },
60
- });
61
-
62
- export default Webinar;
@@ -1,233 +0,0 @@
1
- import { config } from 'dotenv';
2
- import 'jsdom-global/register';
3
- import {assert} from '@webex/test-helper-chai';
4
- import {skipInNode} from '@webex/test-helper-mocha';
5
- import BrowserDetection from '@webex/plugin-meetings/dist/common/browser-detection';
6
- import {createCameraStream, createMicrophoneStream} from '@webex/plugin-meetings';
7
-
8
- import {MEDIA_SERVERS} from '../../utils/constants';
9
- import testUtils from '../../utils/testUtils';
10
- import integrationTestUtils from '../../utils/integrationTestUtils';
11
- import webexTestUsers from '../../utils/webex-test-users';
12
-
13
- config();
14
-
15
- const localTracks = {
16
- alice: {
17
- microphone: undefined,
18
- camera: undefined,
19
- },
20
- bob: {
21
- microphone: undefined,
22
- camera: undefined,
23
- },
24
- chris: {
25
- microphone: undefined,
26
- camera: undefined,
27
- },
28
- };
29
-
30
- skipInNode(describe)('plugin-meetings', () => {
31
- const {isBrowser} = BrowserDetection();
32
-
33
- // `addMedia()` fails on FF, this needs to be debuged and fixed in a later change
34
- if (!isBrowser('firefox')) {
35
- describe('converged-space-meeting', () => {
36
- let shouldSkip = false;
37
- let users, alice, bob, chris;
38
- let meeting = null;
39
- let space = null;
40
- let mediaReadyListener = null;
41
-
42
- before('setup users', async () => {
43
- const userSet = await webexTestUsers.generateTestUsers({
44
- count: 3,
45
- whistler: process.env.WHISTLER || process.env.JENKINS,
46
- config
47
- });
48
-
49
- users = userSet;
50
- alice = users[0];
51
- bob = users[1];
52
- chris = users[2];
53
- alice.name = 'alice';
54
- bob.name = 'bob';
55
- chris.name = 'chris';
56
-
57
- const aliceSync = testUtils.syncAndEndMeeting(alice);
58
- const bobSync = testUtils.syncAndEndMeeting(bob);
59
- const chrisSync = testUtils.syncAndEndMeeting(chris);
60
-
61
- await aliceSync;
62
- await bobSync;
63
- await chrisSync;
64
- });
65
-
66
- // Skip a test in this series if one failed.
67
- // This beforeEach() instance function must use the `function` declaration to preserve the
68
- // `this` context. `() => {}` will not generate the correct `this` context
69
- beforeEach('check if should skip test', function() {
70
- if (shouldSkip) {
71
- this.skip();
72
- }
73
- });
74
-
75
- // Store to the describe scope if a test has failed for skipping.
76
- // This beforeEach() instance function must use the `function` declaration to preserve the
77
- // `this` context. `() => {}` will not generate the correct `this` context
78
- afterEach('check if test failed', function() {
79
- if (this.currentTest.state === 'failed') {
80
- shouldSkip = true;
81
- }
82
- });
83
-
84
- it('user "alice" starts a space', async () => {
85
- const conversation = await alice.webex.internal.conversation.create({
86
- participants: [bob, chris],
87
- });
88
-
89
- assert.lengthOf(conversation.participants.items, 3);
90
- assert.lengthOf(conversation.activities.items, 1);
91
-
92
- space = conversation;
93
-
94
- const destinationWithType = await alice.webex.meetings.meetingInfo.fetchMeetingInfo(space.url, 'CONVERSATION_URL');
95
- const destinationWithoutType = await alice.webex.meetings.meetingInfo.fetchMeetingInfo(space.url);
96
-
97
- assert.exists(destinationWithoutType);
98
- assert.exists(destinationWithType);
99
- assert.exists(destinationWithoutType.body.meetingNumber);
100
- assert.exists(destinationWithType.body.meetingNumber);
101
- });
102
-
103
- it('user "alice" starts a meeting', async () => {
104
- const wait = testUtils.waitForEvents([{
105
- scope: alice.webex.meetings,
106
- event: 'meeting:added',
107
- user: alice,
108
- }]);
109
-
110
- const createdMeeting = await testUtils.delayedPromise(alice.webex.meetings.create(space.url));
111
-
112
- await wait;
113
-
114
- assert.exists(createdMeeting);
115
-
116
- meeting = createdMeeting;
117
- });
118
-
119
- it('user "alice" joins the meeting', async () => {
120
- const wait = testUtils.waitForEvents([
121
- {scope: bob.webex.meetings, event: 'meeting:added', user: bob},
122
- {scope: chris.webex.meetings, event: 'meeting:added', user: chris},
123
- ]);
124
-
125
- await testUtils.delayedPromise(alice.meeting.join({enableMultistream: true}));
126
-
127
- await wait;
128
-
129
- assert.isTrue(!!alice.webex.meetings.meetingCollection.meetings[meeting.id].joinedWith);
130
- });
131
-
132
- it('users "bob" and "chris" join the meeting', async () => {
133
- await testUtils.waitForStateChange(alice.meeting, 'JOINED');
134
-
135
- const bobIdle = testUtils.waitForStateChange(bob.meeting, 'IDLE');
136
- const chrisIdle = testUtils.waitForStateChange(chris.meeting, 'IDLE');
137
-
138
- await bobIdle;
139
- await chrisIdle;
140
-
141
- const bobJoined = testUtils.waitForStateChange(bob.meeting, 'JOINED');
142
- const chrisJoined = testUtils.waitForStateChange(chris.meeting, 'JOINED');
143
- const bobJoin = bob.meeting.join({enableMultistream: true});
144
- const chrisJoin = chris.meeting.join({enableMultistream: true});
145
-
146
- await bobJoin;
147
- await chrisJoin;
148
- await bobJoined;
149
- await chrisJoined;
150
-
151
- assert.exists(bob.meeting.joinedWith);
152
- assert.exists(chris.meeting.joinedWith);
153
- });
154
-
155
- it('users "alice", "bob", and "chris" create local tracks', async () => {
156
- localTracks.alice.microphone = await createMicrophoneStream();
157
- localTracks.alice.camera = await createCameraStream();
158
-
159
- localTracks.bob.microphone = await createMicrophoneStream();
160
- localTracks.bob.camera = await createCameraStream();
161
-
162
- localTracks.chris.microphone = await createMicrophoneStream();
163
- localTracks.chris.camera = await createCameraStream();
164
- });
165
-
166
- it('users "alice", "bob", and "chris" add media', async () => {
167
- mediaReadyListener = testUtils.waitForEvents([
168
- {scope: alice.meeting, event: 'media:negotiated'},
169
- {scope: bob.meeting, event: 'media:negotiated'},
170
- {scope: chris.meeting, event: 'media:negotiated'},
171
- ]);
172
-
173
- const addMediaAlice = integrationTestUtils.addMedia(alice, {multistream: true, microphone: localTracks.alice.microphone, camera: localTracks.alice.camera});
174
- const addMediaBob = integrationTestUtils.addMedia(bob, {multistream: true, microphone: localTracks.bob.microphone, camera: localTracks.bob.camera});
175
- const addMediaChris = integrationTestUtils.addMedia(chris, {multistream: true, microphone: localTracks.chris.microphone, camera: localTracks.chris.camera});
176
-
177
- await addMediaAlice;
178
- await addMediaBob;
179
- await addMediaChris;
180
-
181
- assert.isTrue(alice.meeting.mediaProperties.mediaDirection.sendAudio);
182
- assert.isTrue(alice.meeting.mediaProperties.mediaDirection.sendVideo);
183
- assert.isTrue(alice.meeting.mediaProperties.mediaDirection.receiveAudio);
184
- assert.isTrue(alice.meeting.mediaProperties.mediaDirection.receiveVideo);
185
- assert.isTrue(bob.meeting.mediaProperties.mediaDirection.sendAudio);
186
- assert.isTrue(bob.meeting.mediaProperties.mediaDirection.sendVideo);
187
- assert.isTrue(bob.meeting.mediaProperties.mediaDirection.receiveAudio);
188
- assert.isTrue(bob.meeting.mediaProperties.mediaDirection.receiveVideo);
189
- assert.isTrue(chris.meeting.mediaProperties.mediaDirection.sendAudio);
190
- assert.isTrue(chris.meeting.mediaProperties.mediaDirection.sendVideo);
191
- assert.isTrue(chris.meeting.mediaProperties.mediaDirection.receiveAudio);
192
- assert.isTrue(chris.meeting.mediaProperties.mediaDirection.receiveVideo);
193
- });
194
-
195
- it(`users "alice", "bob", and "chris" should be using the "${MEDIA_SERVERS.HOMER}" media server`, async () => {
196
- await mediaReadyListener;
197
-
198
- assert.equal(alice.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
199
- assert.equal(bob.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
200
- assert.equal(chris.meeting.mediaProperties.webrtcMediaConnection.mediaServer, MEDIA_SERVERS.HOMER);
201
- });
202
-
203
- it('users "alice", "bob", and "chris" stop their local tracks', () => {
204
- if (localTracks.alice.microphone) {
205
- localTracks.alice.microphone.stop();
206
- localTracks.alice.microphone = undefined;
207
- }
208
- if (localTracks.alice.camera) {
209
- localTracks.alice.camera.stop();
210
- localTracks.alice.camera = undefined;
211
- }
212
-
213
- if (localTracks.bob.microphone) {
214
- localTracks.bob.microphone.stop();
215
- localTracks.bob.microphone = undefined;
216
- }
217
- if (localTracks.bob.camera) {
218
- localTracks.bob.camera.stop();
219
- localTracks.bob.camera = undefined;
220
- }
221
-
222
- if (localTracks.chris.microphone) {
223
- localTracks.chris.microphone.stop();
224
- localTracks.chris.microphone = undefined;
225
- }
226
- if (localTracks.chris.camera) {
227
- localTracks.chris.camera.stop();
228
- localTracks.chris.camera = undefined;
229
- }
230
- });
231
- });
232
- }
233
- });