@webex/plugin-meetings 3.0.0-beta.8 → 3.0.0-beta.80

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 (503) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +7 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +154 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +242 -201
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +87 -91
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +35 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2264 -2242
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +69 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +268 -279
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +154 -232
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +566 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +175 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +54 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +107 -44
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +3 -7
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +167 -50
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +74 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +340 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +385 -459
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +78 -0
  239. package/dist/types/constants.d.ts +952 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +277 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +105 -0
  259. package/dist/types/meeting/index.d.ts +1721 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +111 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +353 -0
  280. package/dist/types/members/request.d.ts +69 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +54 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -20
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +18 -12
  344. package/src/constants.ts +101 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +218 -73
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +187 -68
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +75 -3
  364. package/src/meeting/{index.js → index.ts} +2658 -1598
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +136 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +342 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +74 -61
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1280 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +316 -144
  385. package/src/members/request.ts +215 -0
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +145 -54
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +1 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +201 -43
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +62 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +231 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1273 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +333 -3
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +191 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +34 -3
  443. package/test/unit/spec/meeting/index.js +2547 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +166 -163
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +241 -74
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +682 -262
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +402 -54
  457. package/test/unit/spec/members/request.js +76 -20
  458. package/test/unit/spec/members/utils.js +191 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +62 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +116 -60
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/src/common/logs/logger-proxy.js +0 -33
  490. package/src/locus-info/controlsUtils.js +0 -102
  491. package/src/media/internal-media-core-wrapper.ts +0 -9
  492. package/src/mediaQualityMetrics/config.js +0 -382
  493. package/src/meeting/effectsState.js +0 -205
  494. package/src/meeting-info/meeting-info-v2.js +0 -255
  495. package/src/meetings/index.js +0 -1015
  496. package/src/members/request.js +0 -131
  497. package/src/multistream/multistreamMedia.ts +0 -92
  498. package/src/roap/request.js +0 -127
  499. package/src/statsAnalyzer/global.js +0 -133
  500. package/src/statsAnalyzer/index.js +0 -1006
  501. package/src/statsAnalyzer/mqaUtil.js +0 -173
  502. package/test/unit/spec/meeting/effectsState.js +0 -291
  503. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -0,0 +1,200 @@
1
+ /// <reference types="node" />
2
+ import EventsScope from '../common/events/events-scope';
3
+ import { ReceiveSlot } from '../multistream/receiveSlot';
4
+ export declare const EVENTS: {
5
+ MEDIA_QUALITY: string;
6
+ LOCAL_MEDIA_STARTED: string;
7
+ LOCAL_MEDIA_STOPPED: string;
8
+ REMOTE_MEDIA_STARTED: string;
9
+ REMOTE_MEDIA_STOPPED: string;
10
+ };
11
+ type ReceiveSlotCallback = (csi: number) => ReceiveSlot | undefined;
12
+ /**
13
+ * Stats Analyzer class that will emit events based on detected quality
14
+ *
15
+ * @export
16
+ * @class StatsAnalyzer
17
+ * @extends {EventsScope}
18
+ */
19
+ export declare class StatsAnalyzer extends EventsScope {
20
+ config: any;
21
+ correlationId: any;
22
+ lastEmittedStartStopEvent: any;
23
+ lastMqaDataSent: any;
24
+ lastStatsResults: any;
25
+ meetingMediaStatus: any;
26
+ mqaInterval: NodeJS.Timeout;
27
+ mqaSentCount: any;
28
+ networkQualityMonitor: any;
29
+ mediaConnection: any;
30
+ statsInterval: NodeJS.Timeout;
31
+ statsResults: any;
32
+ statsStarted: any;
33
+ receiveSlotCallback: ReceiveSlotCallback;
34
+ /**
35
+ * Creates a new instance of StatsAnalyzer
36
+ * @constructor
37
+ * @public
38
+ * @param {Object} config SDK Configuration Object
39
+ * @param {Function} receiveSlotCallback Callback used to access receive slots.
40
+ * @param {Object} networkQualityMonitor class for assessing network characteristics (jitter, packetLoss, latency)
41
+ * @param {Object} statsResults Default properties for stats
42
+ */
43
+ constructor(config: any, receiveSlotCallback?: ReceiveSlotCallback, networkQualityMonitor?: object, statsResults?: object);
44
+ /**
45
+ * Resets cumulative stats arrays.
46
+ *
47
+ * @public
48
+ * @memberof StatsAnalyzer
49
+ * @returns {void}
50
+ */
51
+ resetStatsResults(): void;
52
+ /**
53
+ * sets mediaStatus status for analyzing metrics
54
+ *
55
+ * @public
56
+ * @param {Object} status for the audio and video
57
+ * @memberof StatsAnalyzer
58
+ * @returns {void}
59
+ */
60
+ updateMediaStatus(status: object): void;
61
+ /**
62
+ * captures MQA data from media connection
63
+ *
64
+ * @public
65
+ * @memberof StatsAnalyzer
66
+ * @returns {void}
67
+ */
68
+ sendMqaData(): void;
69
+ /**
70
+ * updated the media connection when changed
71
+ *
72
+ * @private
73
+ * @memberof StatsAnalyzer
74
+ * @param {RoapMediaConnection} mediaConnection
75
+ * @returns {void}
76
+ */
77
+ updateMediaConnection(mediaConnection: any): void;
78
+ /**
79
+ * Starts the stats analyzer on interval
80
+ *
81
+ * @public
82
+ * @memberof StatsAnalyzer
83
+ * @param {RoapMediaConnection} mediaConnection
84
+ * @returns {Promise}
85
+ */
86
+ startAnalyzer(mediaConnection: any): any;
87
+ /**
88
+ * Cleans up the analyzer when done
89
+ *
90
+ * @public
91
+ * @memberof StatsAnalyzer
92
+ * @returns {void}
93
+ */
94
+ stopAnalyzer(): any;
95
+ /**
96
+ * Parse a single result of get stats
97
+ *
98
+ * @private
99
+ * @param {*} getStatsResult
100
+ * @param {String} type
101
+ * @param {boolean} isSender
102
+ * @returns {void}
103
+ * @memberof StatsAnalyzer
104
+ */
105
+ private parseGetStatsResult;
106
+ /**
107
+ * Filters the get stats results for types
108
+ * @private
109
+ * @param {Array} statsItem
110
+ * @param {String} type
111
+ * @param {boolean} isSender
112
+ * @returns {void}
113
+ */
114
+ filterAndParseGetStatsResults(statsItem: any, type: string, isSender: boolean): void;
115
+ /**
116
+ * parse the audio
117
+ * @param {String} result
118
+ * @param {boolean} type
119
+ * @returns {void}
120
+ */
121
+ parseAudioSource(result: any, type: any): void;
122
+ /**
123
+ * emits started/stopped events for local/remote media by checking
124
+ * if given values are increasing or not. The previousValue, currentValue
125
+ * params can be any numerical value like number of receive packets or
126
+ * decoded frames, etc.
127
+ *
128
+ * @private
129
+ * @param {string} mediaType
130
+ * @param {number} previousValue - value to compare
131
+ * @param {number} currentValue - value to compare (must be same type of value as previousValue)
132
+ * @param {boolean} isLocal - true if stats are for local media being sent out, false for remote media being received
133
+ * @memberof StatsAnalyzer
134
+ * @returns {void}
135
+ */
136
+ emitStartStopEvents: (mediaType: string, previousValue: number, currentValue: number, isLocal: boolean) => void;
137
+ /**
138
+ * compares current and previous stats to check if packets are not sent
139
+ *
140
+ * @private
141
+ * @memberof StatsAnalyzer
142
+ * @returns {void}
143
+ */
144
+ private compareLastStatsResult;
145
+ /**
146
+ * Does a `getStats` on all the transceivers and parses the results
147
+ *
148
+ * @private
149
+ * @memberof StatsAnalyzer
150
+ * @returns {Promise}
151
+ */
152
+ private getStatsAndParse;
153
+ /**
154
+ * Processes OutboundRTP stats result and stores
155
+ * @private
156
+ * @param {*} result
157
+ * @param {*} mediaType
158
+ * @returns {void}
159
+ */
160
+ private processOutboundRTPResult;
161
+ /**
162
+ * Processes InboundRTP stats result and stores
163
+ * @private
164
+ * @param {*} result
165
+ * @param {*} mediaType
166
+ * @returns {void}
167
+ */
168
+ private processInboundRTPResult;
169
+ /**
170
+ * Processes remote and local candidate result and stores
171
+ * @private
172
+ * @param {*} result
173
+ * @param {*} type
174
+ * @param {boolean} isSender
175
+ * @param {boolean} isRemote
176
+ *
177
+ * @returns {void}
178
+ */
179
+ parseCandidate: (result: any, type: any, isSender: boolean, isRemote: boolean) => void;
180
+ /**
181
+ * Process Track results
182
+ *
183
+ * @private
184
+ * @param {*} result
185
+ * @param {*} mediaType
186
+ * @returns {void}
187
+ * @memberof StatsAnalyzer
188
+ */
189
+ private processTrackResult;
190
+ /**
191
+ *
192
+ * @private
193
+ * @param {*} result
194
+ * @param {*} type
195
+ * @returns {void}
196
+ * @memberof StatsAnalyzer
197
+ */
198
+ compareSentAndReceived(result: any, type: any): void;
199
+ }
200
+ export {};
@@ -0,0 +1,24 @@
1
+ export declare const getAudioReceiverMqa: ({ audioReceiver, statsResults, lastMqaDataSent, mediaType }: {
2
+ audioReceiver: any;
3
+ statsResults: any;
4
+ lastMqaDataSent: any;
5
+ mediaType: any;
6
+ }) => void;
7
+ export declare const getAudioSenderMqa: ({ audioSender, statsResults, lastMqaDataSent, mediaType }: {
8
+ audioSender: any;
9
+ statsResults: any;
10
+ lastMqaDataSent: any;
11
+ mediaType: any;
12
+ }) => void;
13
+ export declare const getVideoReceiverMqa: ({ videoReceiver, statsResults, lastMqaDataSent, mediaType }: {
14
+ videoReceiver: any;
15
+ statsResults: any;
16
+ lastMqaDataSent: any;
17
+ mediaType: any;
18
+ }) => void;
19
+ export declare const getVideoSenderMqa: ({ videoSender, statsResults, lastMqaDataSent, mediaType }: {
20
+ videoSender: any;
21
+ statsResults: any;
22
+ lastMqaDataSent: any;
23
+ mediaType: any;
24
+ }) => void;
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @description Meeting Webex assistance transcription feature.
3
+ * @exports
4
+ * @class Transcription
5
+ */
6
+ export default class Transcription {
7
+ webSocketUrl: any;
8
+ sessionID: any;
9
+ members: any;
10
+ memberCSIs: any;
11
+ webSocket: any;
12
+ /**
13
+ * @param {string} webSocketUrl
14
+ * @param {sessionID} sessionId
15
+ * @param {object} members
16
+ * @constructor
17
+ * @memberof Transcription
18
+ */
19
+ constructor(webSocketUrl: string, sessionId: any, members: object);
20
+ /**
21
+ * open the Low Latency Mercury connection
22
+ * An event parameter will be send to the callback.
23
+ *
24
+ * @param {string} token
25
+ * @param {string} sessionID
26
+ * @returns {void}
27
+ */
28
+ connect(token: string): void;
29
+ /**
30
+ * Sets callback to invoke when the web socket connection is closed.
31
+ *
32
+ * @param {Function} callback
33
+ * @returns {void}
34
+ */
35
+ onCloseSocket(callback: any): void;
36
+ /**
37
+ * Sets callback to invoke when a web socket connection error occurs.
38
+ * An event parameter will be send to the callback.
39
+ *
40
+ * @param {Function} callback
41
+ * @returns {void}
42
+ */
43
+ onErrorSocket(callback: any): void;
44
+ /**
45
+ * Get current speaker from the given csis payload and update the global csis map
46
+ *
47
+ * @private
48
+ * @param {object} csis
49
+ * @returns {object}
50
+ */
51
+ private getSpeaker;
52
+ /**
53
+ * Sends transcription data to given callback as it arrives.
54
+ *
55
+ * @param {Function} callback
56
+ * @returns {void}
57
+ */
58
+ subscribe(callback: any): void;
59
+ /**
60
+ * Close the LLM web socket connection
61
+ * @returns {void}
62
+ */
63
+ closeSocket(): void;
64
+ }
@@ -48,7 +48,7 @@ Install tooling dependencies.
48
48
  npm install
49
49
  ```
50
50
 
51
- *Build issues?* See [BUILD-ISSUES.md](https://github.com/webex/webex-js-sdk/blob/master/BUILD-ISSUES.md) for help.
51
+ _Build issues?_ See [BUILD-ISSUES.md](https://github.com/webex/webex-js-sdk/blob/master/BUILD-ISSUES.md) for help.
52
52
 
53
53
  ## Contribute to the `plugin-meetings` branch
54
54
 
@@ -93,12 +93,14 @@ yarn run build
93
93
  ```
94
94
 
95
95
  > Individual packages containing samples can usually be run this way:
96
+ >
96
97
  > ```
97
98
  > yarn run serve:package --env.package @webex/plugin-meetings
99
+ > ```
98
100
 
99
101
  > ```
100
102
  > However, `webex` does not get compiled properly for `plugin-meetings` using this method, so do the following instead.
101
-
103
+ > ```
102
104
 
103
105
  ```bash
104
106
  # Run the "sample app" sample.
@@ -107,8 +109,8 @@ yarn run samples:meetings
107
109
  ```
108
110
 
109
111
  - Visit https://localhost:8000/
110
- - Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click *connect*.
111
- - Use the **Dialer** to *create* a Meeting object, *join* it, and *addMedia*, like video and audio.
112
+ - Copy/paste **Your Personal Access Token** from [Cisco Webex for Developers](https://developer.webex.com/docs/api/getting-started) and click _connect_.
113
+ - Use the **Dialer** to _create_ a Meeting object, _join_ it, and _addMedia_, like video and audio.
112
114
 
113
115
  > This sample does not join a meeting in one click on purpose. It is meant to demonstrate the different commands available, and their sequence, to developers. Other samples will be created in the future.
114
116
  >
@@ -124,7 +126,6 @@ yarn run samples:meetings
124
126
 
125
127
  Use `yarn run distsrc` to point each package's `main` entry at the raw src and let `babel` compile on the fly.
126
128
 
127
-
128
129
  ```bash
129
130
  # Point all package.json files to the src directory instead of the dist directory.
130
131
  yarn run distsrc
@@ -156,7 +157,7 @@ yarn run srcdist
156
157
 
157
158
  The SDK enforces relatively strict commit messages to version its packages and keep language similar.
158
159
 
159
- Here is an example committing a new feature. Notice the *package name* in parentheses.
160
+ Here is an example committing a new feature. Notice the _package name_ in parentheses.
160
161
 
161
162
  ```bash
162
163
  git commit -a -m 'feat(plugin-meetings): add ability to join a meeting'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/plugin-meetings",
3
- "version": "3.0.0-beta.8",
3
+ "version": "3.0.0-beta.80",
4
4
  "description": "",
5
5
  "license": "Cisco EULA (https://www.cisco.com/c/en/us/products/end-user-license-agreement.html)",
6
6
  "contributors": [
@@ -12,6 +12,7 @@
12
12
  "Taymoor Khan <taykhan@cisco.com>"
13
13
  ],
14
14
  "main": "dist/index.js",
15
+ "types": "dist/types/index.d.ts",
15
16
  "devMain": "src/index.js",
16
17
  "repository": {
17
18
  "type": "git",
@@ -27,31 +28,37 @@
27
28
  "envify"
28
29
  ]
29
30
  },
31
+ "scripts": {
32
+ "build": "yarn run -T tsc --declaration true --declarationDir ./dist/types"
33
+ },
30
34
  "devDependencies": {
31
- "@webex/plugin-meetings": "3.0.0-beta.8",
32
- "@webex/test-helper-chai": "3.0.0-beta.8",
33
- "@webex/test-helper-mocha": "3.0.0-beta.8",
34
- "@webex/test-helper-mock-webex": "3.0.0-beta.8",
35
- "@webex/test-helper-retry": "3.0.0-beta.8",
36
- "@webex/test-helper-test-users": "3.0.0-beta.8",
35
+ "@webex/plugin-meetings": "3.0.0-beta.80",
36
+ "@webex/test-helper-chai": "3.0.0-beta.80",
37
+ "@webex/test-helper-mocha": "3.0.0-beta.80",
38
+ "@webex/test-helper-mock-webex": "3.0.0-beta.80",
39
+ "@webex/test-helper-retry": "3.0.0-beta.80",
40
+ "@webex/test-helper-test-users": "3.0.0-beta.80",
37
41
  "chai": "^4.3.4",
38
42
  "chai-as-promised": "^7.1.1",
39
43
  "jsdom-global": "3.0.2",
40
44
  "sinon": "^9.2.4",
41
- "typed-emitter": "^2.1.0"
45
+ "typed-emitter": "^2.1.0",
46
+ "typescript": "^4.7.4"
42
47
  },
43
48
  "dependencies": {
44
- "@webex/common": "3.0.0-beta.8",
45
- "@webex/internal-media-core": "^0.0.17-beta",
46
- "@webex/internal-plugin-conversation": "3.0.0-beta.8",
47
- "@webex/internal-plugin-device": "3.0.0-beta.8",
48
- "@webex/internal-plugin-mercury": "3.0.0-beta.8",
49
- "@webex/internal-plugin-metrics": "3.0.0-beta.8",
50
- "@webex/internal-plugin-support": "3.0.0-beta.8",
51
- "@webex/internal-plugin-user": "3.0.0-beta.8",
52
- "@webex/plugin-people": "3.0.0-beta.8",
53
- "@webex/plugin-rooms": "3.0.0-beta.8",
54
- "@webex/webex-core": "3.0.0-beta.8",
49
+ "@webex/common": "3.0.0-beta.80",
50
+ "@webex/internal-media-core": "1.36.0",
51
+ "@webex/internal-plugin-conversation": "3.0.0-beta.80",
52
+ "@webex/internal-plugin-device": "3.0.0-beta.80",
53
+ "@webex/internal-plugin-llm": "3.0.0-beta.80",
54
+ "@webex/internal-plugin-mercury": "3.0.0-beta.80",
55
+ "@webex/internal-plugin-metrics": "3.0.0-beta.80",
56
+ "@webex/internal-plugin-support": "3.0.0-beta.80",
57
+ "@webex/internal-plugin-user": "3.0.0-beta.80",
58
+ "@webex/plugin-people": "3.0.0-beta.80",
59
+ "@webex/plugin-rooms": "3.0.0-beta.80",
60
+ "@webex/webex-core": "3.0.0-beta.80",
61
+ "ampersand-collection": "^2.0.2",
55
62
  "bowser": "^2.11.0",
56
63
  "btoa": "^1.2.1",
57
64
  "dotenv": "^4.0.0",
@@ -61,6 +68,6 @@
61
68
  "lodash": "^4.17.21",
62
69
  "sdp-transform": "^2.12.0",
63
70
  "uuid": "^3.3.2",
64
- "webrtc-adapter": "^7.7.0"
71
+ "webrtc-adapter": "^8.1.2"
65
72
  }
66
73
  }
@@ -0,0 +1,219 @@
1
+ # Breakout Sessions
2
+
3
+ Breakout sessions are like meetings within meetings. They have separate roster lists and titles. Participants can move between breakouts and the main session.
4
+
5
+ ### Enabling
6
+
7
+ To enable breakouts the `breakoutsSupported` parameter must be passed to the meeting join method.
8
+
9
+ ### Structure
10
+
11
+ The current breakout session is accessible as follows:
12
+
13
+ ```javascript
14
+ breakouts.currentBreakoutSession;
15
+ ```
16
+
17
+ Other breakout sessions are available in the breakouts collection. These are breakouts that you known about. If you are an attendee, you may not know about all the breakout sessions in the meeting.
18
+
19
+ ```javascript
20
+ breakouts.breakouts;
21
+ ```
22
+
23
+ note: The `currentBreakoutSession` is NOT a member of the `breakouts.breakouts` collection.
24
+
25
+ Some information about the state of breakouts is available on the `meeting.breakouts` object itself
26
+
27
+ ```javascript
28
+ // The number of seconds after ending breakouts before the participants are returned to the main session
29
+ breakouts.delayCloseTime;
30
+
31
+ // Whether the participant is allowed back to the main session
32
+ breakouts.allowBackToMain;
33
+ ```
34
+
35
+ ### Attendee functionality
36
+
37
+ The normal meeting members are updated when you move in and out of a breakout session.
38
+
39
+ The following are methods available to attendees of a meeting:
40
+
41
+ ```javascript
42
+ // Join a breakout
43
+ // This can be used when the participant is in the main session or in a different breakout session
44
+ // when call join function, should send message to metrics
45
+ /* Breakout Sessions created during meetings allow participants to move into smaller breakout sessions and then
46
+ return to the main meeting at a later time. These moves can be initiated by the user or by the meeting
47
+ host/co-host. The goal of this metric is to track these moves in production by instrumenting them for
48
+ analysis from the end user's experience perspective.
49
+ */
50
+ breakout.join();
51
+
52
+ // Leave a breakout
53
+ // This will cause the participant to return to the main session
54
+ breakouts.currentBreakoutSession.leave();
55
+
56
+ // Ask for help when in a breakout session. 10 second cooldown.
57
+ breakout.currentBreakoutSession.askForHelp();
58
+ ```
59
+
60
+ #### Members
61
+
62
+ Each breakout session has members. Members represent other entities within the meeting.
63
+ The current breakout session members are accessed via the meeting object i.e. they will automatically
64
+ be updated when the user moves between sessions.
65
+
66
+ To see which members are in other sessions, you can access them via the breakout model. The Members
67
+ class is the same as that of the main meeting.
68
+
69
+ ```javascript
70
+ breakout = breakouts.breakouts.models[0];
71
+ breakout.members;
72
+ ```
73
+
74
+ #### breakouts events
75
+
76
+ ```javascript
77
+ // When the breakouts in the breakouts collection changes. This includes updates to session members
78
+ on('meeting:breakouts:update', (breakouts) => {});
79
+
80
+ // When the breakout sessions end this event will be fired
81
+ on('meeting:breakouts:closing', () => {});
82
+
83
+ // When the host sends a message to the breakout this event will fire
84
+ on('meeting:breakouts:message', {senderUserId, sentTime, message, sessionId});
85
+ ```
86
+
87
+ When breakouts are started there are several possibilities:
88
+
89
+ 1. The attendee is forced to join a session
90
+ 2. The attendee is assigned to a session, but can join when they feel like it
91
+ 3. The attendee is not assigned to a session, and can choose which session they want to join
92
+
93
+ ```javascript
94
+ breakout.assigned; // Assigned to a session, but not in it yet
95
+ breakout.assignedCurrent; // Forced to join a session
96
+ breakout.active; // The session exists
97
+ breakout.allowed; // The user is allowed to join the session
98
+ breakout.requested; // The user has been requested to join the session
99
+ ```
100
+
101
+ The above attributes of the breakout sessions, combined with the `meeting:breakouts:update` event allow you to determine which situation you are in.
102
+
103
+ A host can signal attendees to move to a particular session. In this case the following is available. Using the same event, and the `requested` attribute of the breakout you can determine which session is to be moved to. Requesting return to the main session is the current use case of this.
104
+
105
+ ### Host functionality
106
+
107
+ The following are methods available to a hosts of a meeting.
108
+
109
+ note: None of these are currently implemented
110
+
111
+ ```javascript
112
+
113
+ // Move a participant to breakout
114
+ breakout.move(participant)
115
+
116
+ // Remove someone from a breakout session
117
+ // This returns them to the main session
118
+ breakout.remove(participant)
119
+
120
+ // Deletes a breakout session
121
+ // This can only be done when breakouts are inactive
122
+ breakout.delete()
123
+
124
+ /*
125
+ Create breakout sessions, Type is array
126
+ Format: [{'name':'session1', "anyoneCanJoin" : true}]
127
+ */
128
+ breakouts.create(sessions)
129
+
130
+ // Delete all breakout sessions
131
+ breakouts.clearSessions()
132
+
133
+ // Rename an existing breakout session
134
+ breakout.rename(newSessionName)
135
+
136
+ // Start breakout sessions with necessary params
137
+ breakouts.start(params)
138
+
139
+ // Assign a particpant/participants to breakouts/a breakout
140
+ // sessions should be like: [{id:'xx',memberIds:['111'],emails:['111@ss.com',anyone: true]},...]
141
+ breakouts.assign(sessions)
142
+
143
+ // Dynammic assign a particpant/participants to breakouts/main (not used by now)
144
+ // Admit lobby waiting participants to a breakout directly
145
+ // sessions should be like: [{id:'xx',participants:['111'],targetState:'JOINED'},...]
146
+ breakouts.dynamicAssign(sessions)
147
+
148
+ // End breakout sessions with necessary params
149
+ breakouts.end(params)
150
+
151
+ // get breakout sessions with/without param editlock
152
+ breakouts.getBreakout(editlock?)
153
+
154
+ // Enable breakout sessions
155
+ breakouts.enable()
156
+
157
+ // Enable and lock breakout
158
+ breakouts.enableAndLockBreakout()
159
+
160
+ // Lock breakout
161
+ breakouts.lockBreakout()
162
+
163
+ // Unlock breakout
164
+ breakouts.unLockEditBreakout()
165
+
166
+ // Disable breakout sessions
167
+ breakouts.disable()
168
+
169
+ // Send message asking all participants to return to the main session
170
+ breakouts.askAllToReturn()
171
+
172
+ // Send a message to a breakout session
173
+ // You can determine which participant types receive the message, if no type set, default is to all participants
174
+ breakout.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
175
+
176
+ // Send a message to All breakout sessions
177
+ // You can determine which participant types receive the message, if no type set, default is to all participants
178
+ breakouts.broadcast(message, {participants: boolean, cohosts: boolean, presenters: boolean})
179
+
180
+ // When breakouts are active you can cancel the automatic end of all sessions by calling this
181
+ // method. It cannot be restarted, only manually ending breakouts is possible after calling this
182
+ breakouts.cancelAutomaticEnd()
183
+
184
+ IBreakoutConfig {
185
+ /*
186
+ Number of sessions to count down before returning users to main session. Seconds. Default 60. 0 means off
187
+ */
188
+ countdownTimer: Number,
189
+ /*
190
+ Whether attendees are allowed to return to the main meeting
191
+ */
192
+ allowReturntoMainMeeting: Boolean,
193
+ /*
194
+ Whether attendees are allowed to join later
195
+ */
196
+ allowJoinLater: Boolean,
197
+ /*
198
+ The timeout after which breakouts are automatically ended. Seconds. Default 1800 (30 minutes) Miniumum 5 minutes.
199
+ */
200
+ automaticallyEndBreakoutsAfter: Number,
201
+ /*
202
+ How participants are assigned to breakouts.
203
+ auto -> participants are automatically placed in sessions
204
+ */
205
+ assignmentMethod: 'auto' | 'manual' | 'choose'
206
+ }
207
+
208
+ // Configure settings on breakouts
209
+ breakouts.configure(config)
210
+
211
+ // set whether anyone can join the breakout or whether it is just assigned participants that can join
212
+ breakout.setOpen(isOpen)
213
+
214
+ // When the members change for a given breakout
215
+ on('meeting:breakout:members:update', ({sessionId, members}) => {
216
+
217
+ })
218
+
219
+ ```