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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (512) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.js +48 -0
  6. package/dist/annotation/constants.js.map +1 -0
  7. package/dist/annotation/index.js +357 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +176 -0
  10. package/dist/breakouts/breakout.js.map +1 -0
  11. package/dist/breakouts/collection.js +23 -0
  12. package/dist/breakouts/collection.js.map +1 -0
  13. package/dist/breakouts/edit-lock-error.js +52 -0
  14. package/dist/breakouts/edit-lock-error.js.map +1 -0
  15. package/dist/breakouts/events.js +43 -0
  16. package/dist/breakouts/events.js.map +1 -0
  17. package/dist/breakouts/index.js +944 -0
  18. package/dist/breakouts/index.js.map +1 -0
  19. package/dist/breakouts/request.js +78 -0
  20. package/dist/breakouts/request.js.map +1 -0
  21. package/dist/breakouts/utils.js +67 -0
  22. package/dist/breakouts/utils.js.map +1 -0
  23. package/dist/common/browser-detection.js +1 -20
  24. package/dist/common/browser-detection.js.map +1 -1
  25. package/dist/common/collection.js +5 -20
  26. package/dist/common/collection.js.map +1 -1
  27. package/dist/common/config.js +0 -7
  28. package/dist/common/config.js.map +1 -1
  29. package/dist/common/errors/captcha-error.js +5 -26
  30. package/dist/common/errors/captcha-error.js.map +1 -1
  31. package/dist/common/errors/intent-to-join.js +5 -26
  32. package/dist/common/errors/intent-to-join.js.map +1 -1
  33. package/dist/common/errors/join-meeting.js +6 -27
  34. package/dist/common/errors/join-meeting.js.map +1 -1
  35. package/dist/common/errors/media.js +5 -26
  36. package/dist/common/errors/media.js.map +1 -1
  37. package/dist/common/errors/parameter.js +5 -33
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +5 -26
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +4 -25
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reconnection-in-progress.js +0 -17
  44. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  45. package/dist/common/errors/reconnection.js +5 -26
  46. package/dist/common/errors/reconnection.js.map +1 -1
  47. package/dist/common/errors/stats.js +5 -26
  48. package/dist/common/errors/stats.js.map +1 -1
  49. package/dist/common/errors/webex-errors.js +6 -41
  50. package/dist/common/errors/webex-errors.js.map +1 -1
  51. package/dist/common/errors/webex-meetings-error.js +1 -24
  52. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  53. package/dist/common/events/events-scope.js +0 -22
  54. package/dist/common/events/events-scope.js.map +1 -1
  55. package/dist/common/events/events.js +0 -23
  56. package/dist/common/events/events.js.map +1 -1
  57. package/dist/common/events/trigger-proxy.js +0 -12
  58. package/dist/common/events/trigger-proxy.js.map +1 -1
  59. package/dist/common/events/util.js +0 -15
  60. package/dist/common/events/util.js.map +1 -1
  61. package/dist/common/logs/logger-config.js +0 -4
  62. package/dist/common/logs/logger-config.js.map +1 -1
  63. package/dist/common/logs/logger-proxy.js +1 -8
  64. package/dist/common/logs/logger-proxy.js.map +1 -1
  65. package/dist/common/logs/request.js +35 -61
  66. package/dist/common/logs/request.js.map +1 -1
  67. package/dist/common/queue.js +4 -14
  68. package/dist/common/queue.js.map +1 -1
  69. package/dist/config.js +6 -6
  70. package/dist/config.js.map +1 -1
  71. package/dist/constants.js +193 -53
  72. package/dist/constants.js.map +1 -1
  73. package/dist/controls-options-manager/constants.js +14 -0
  74. package/dist/controls-options-manager/constants.js.map +1 -0
  75. package/dist/controls-options-manager/enums.js +27 -0
  76. package/dist/controls-options-manager/enums.js.map +1 -0
  77. package/dist/controls-options-manager/index.js +297 -0
  78. package/dist/controls-options-manager/index.js.map +1 -0
  79. package/dist/controls-options-manager/types.js +7 -0
  80. package/dist/controls-options-manager/types.js.map +1 -0
  81. package/dist/controls-options-manager/util.js +286 -0
  82. package/dist/controls-options-manager/util.js.map +1 -0
  83. package/dist/index.js +72 -17
  84. package/dist/index.js.map +1 -1
  85. package/dist/locus-info/controlsUtils.js +94 -29
  86. package/dist/locus-info/controlsUtils.js.map +1 -1
  87. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  88. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  89. package/dist/locus-info/fullState.js +0 -15
  90. package/dist/locus-info/fullState.js.map +1 -1
  91. package/dist/locus-info/hostUtils.js +4 -12
  92. package/dist/locus-info/hostUtils.js.map +1 -1
  93. package/dist/locus-info/index.js +383 -212
  94. package/dist/locus-info/index.js.map +1 -1
  95. package/dist/locus-info/infoUtils.js +0 -38
  96. package/dist/locus-info/infoUtils.js.map +1 -1
  97. package/dist/locus-info/mediaSharesUtils.js +12 -38
  98. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  99. package/dist/locus-info/parser.js +88 -123
  100. package/dist/locus-info/parser.js.map +1 -1
  101. package/dist/locus-info/selfUtils.js +99 -91
  102. package/dist/locus-info/selfUtils.js.map +1 -1
  103. package/dist/media/index.js +62 -147
  104. package/dist/media/index.js.map +1 -1
  105. package/dist/media/properties.js +71 -117
  106. package/dist/media/properties.js.map +1 -1
  107. package/dist/media/util.js +2 -9
  108. package/dist/media/util.js.map +1 -1
  109. package/dist/mediaQualityMetrics/config.js +505 -495
  110. package/dist/mediaQualityMetrics/config.js.map +1 -1
  111. package/dist/meeting/in-meeting-actions.js +67 -14
  112. package/dist/meeting/in-meeting-actions.js.map +1 -1
  113. package/dist/meeting/index.js +2477 -2417
  114. package/dist/meeting/index.js.map +1 -1
  115. package/dist/meeting/muteState.js +252 -113
  116. package/dist/meeting/muteState.js.map +1 -1
  117. package/dist/meeting/request.js +296 -289
  118. package/dist/meeting/request.js.map +1 -1
  119. package/dist/meeting/request.type.js +7 -0
  120. package/dist/meeting/request.type.js.map +1 -0
  121. package/dist/meeting/state.js +21 -31
  122. package/dist/meeting/state.js.map +1 -1
  123. package/dist/meeting/util.js +58 -217
  124. package/dist/meeting/util.js.map +1 -1
  125. package/dist/meeting-info/collection.js +3 -25
  126. package/dist/meeting-info/collection.js.map +1 -1
  127. package/dist/meeting-info/index.js +10 -33
  128. package/dist/meeting-info/index.js.map +1 -1
  129. package/dist/meeting-info/meeting-info-v2.js +278 -281
  130. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  131. package/dist/meeting-info/request.js +1 -16
  132. package/dist/meeting-info/request.js.map +1 -1
  133. package/dist/meeting-info/util.js +98 -183
  134. package/dist/meeting-info/util.js.map +1 -1
  135. package/dist/meeting-info/utilv2.js +155 -232
  136. package/dist/meeting-info/utilv2.js.map +1 -1
  137. package/dist/meetings/collection.js +24 -20
  138. package/dist/meetings/collection.js.map +1 -1
  139. package/dist/meetings/index.js +675 -593
  140. package/dist/meetings/index.js.map +1 -1
  141. package/dist/meetings/request.js +23 -42
  142. package/dist/meetings/request.js.map +1 -1
  143. package/dist/meetings/util.js +177 -155
  144. package/dist/meetings/util.js.map +1 -1
  145. package/dist/member/index.js +89 -88
  146. package/dist/member/index.js.map +1 -1
  147. package/dist/member/types.js +15 -0
  148. package/dist/member/types.js.map +1 -0
  149. package/dist/member/util.js +101 -69
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.js +12 -12
  152. package/dist/members/collection.js.map +1 -1
  153. package/dist/members/index.js +162 -204
  154. package/dist/members/index.js.map +1 -1
  155. package/dist/members/request.js +58 -53
  156. package/dist/members/request.js.map +1 -1
  157. package/dist/members/types.js +15 -0
  158. package/dist/members/types.js.map +1 -0
  159. package/dist/members/util.js +107 -44
  160. package/dist/members/util.js.map +1 -1
  161. package/dist/metrics/config.js +50 -16
  162. package/dist/metrics/config.js.map +1 -1
  163. package/dist/metrics/constants.js +3 -7
  164. package/dist/metrics/constants.js.map +1 -1
  165. package/dist/metrics/index.js +93 -162
  166. package/dist/metrics/index.js.map +1 -1
  167. package/dist/multistream/mediaRequestManager.js +167 -50
  168. package/dist/multistream/mediaRequestManager.js.map +1 -1
  169. package/dist/multistream/receiveSlot.js +58 -65
  170. package/dist/multistream/receiveSlot.js.map +1 -1
  171. package/dist/multistream/receiveSlotManager.js +74 -93
  172. package/dist/multistream/receiveSlotManager.js.map +1 -1
  173. package/dist/multistream/remoteMedia.js +55 -74
  174. package/dist/multistream/remoteMedia.js.map +1 -1
  175. package/dist/multistream/remoteMediaGroup.js +6 -40
  176. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  177. package/dist/multistream/remoteMediaManager.js +466 -442
  178. package/dist/multistream/remoteMediaManager.js.map +1 -1
  179. package/dist/networkQualityMonitor/index.js +32 -59
  180. package/dist/networkQualityMonitor/index.js.map +1 -1
  181. package/dist/personal-meeting-room/index.js +10 -45
  182. package/dist/personal-meeting-room/index.js.map +1 -1
  183. package/dist/personal-meeting-room/request.js +2 -33
  184. package/dist/personal-meeting-room/request.js.map +1 -1
  185. package/dist/personal-meeting-room/util.js +0 -13
  186. package/dist/personal-meeting-room/util.js.map +1 -1
  187. package/dist/reachability/index.js +190 -199
  188. package/dist/reachability/index.js.map +1 -1
  189. package/dist/reachability/request.js +14 -23
  190. package/dist/reachability/request.js.map +1 -1
  191. package/dist/reactions/constants.js +13 -0
  192. package/dist/reactions/constants.js.map +1 -0
  193. package/dist/reactions/reactions.js +2 -4
  194. package/dist/reactions/reactions.js.map +1 -1
  195. package/dist/reactions/reactions.type.js +19 -23
  196. package/dist/reactions/reactions.type.js.map +1 -1
  197. package/dist/reconnection-manager/index.js +326 -465
  198. package/dist/reconnection-manager/index.js.map +1 -1
  199. package/dist/recording-controller/enums.js +17 -0
  200. package/dist/recording-controller/enums.js.map +1 -0
  201. package/dist/recording-controller/index.js +343 -0
  202. package/dist/recording-controller/index.js.map +1 -0
  203. package/dist/recording-controller/util.js +63 -0
  204. package/dist/recording-controller/util.js.map +1 -0
  205. package/dist/roap/index.js +38 -67
  206. package/dist/roap/index.js.map +1 -1
  207. package/dist/roap/request.js +143 -134
  208. package/dist/roap/request.js.map +1 -1
  209. package/dist/roap/turnDiscovery.js +149 -101
  210. package/dist/roap/turnDiscovery.js.map +1 -1
  211. package/dist/statsAnalyzer/global.js +1 -95
  212. package/dist/statsAnalyzer/global.js.map +1 -1
  213. package/dist/statsAnalyzer/index.js +369 -461
  214. package/dist/statsAnalyzer/index.js.map +1 -1
  215. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  216. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  217. package/dist/transcription/index.js +13 -45
  218. package/dist/transcription/index.js.map +1 -1
  219. package/dist/types/annotation/annotation.types.d.ts +34 -0
  220. package/dist/types/annotation/constants.d.ts +31 -0
  221. package/dist/types/annotation/index.d.ts +124 -0
  222. package/dist/types/breakouts/breakout.d.ts +8 -0
  223. package/dist/types/breakouts/collection.d.ts +5 -0
  224. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  225. package/dist/types/breakouts/events.d.ts +2 -0
  226. package/dist/types/breakouts/index.d.ts +5 -0
  227. package/dist/types/breakouts/request.d.ts +22 -0
  228. package/dist/types/breakouts/utils.d.ts +15 -0
  229. package/dist/types/common/browser-detection.d.ts +9 -0
  230. package/dist/types/common/collection.d.ts +48 -0
  231. package/dist/types/common/config.d.ts +2 -0
  232. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  233. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  234. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  235. package/dist/types/common/errors/media.d.ts +15 -0
  236. package/dist/types/common/errors/parameter.d.ts +15 -0
  237. package/dist/types/common/errors/password-error.d.ts +15 -0
  238. package/dist/types/common/errors/permission.d.ts +14 -0
  239. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  240. package/dist/types/common/errors/reconnection.d.ts +15 -0
  241. package/dist/types/common/errors/stats.d.ts +15 -0
  242. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  243. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  244. package/dist/types/common/events/events-scope.d.ts +17 -0
  245. package/dist/types/common/events/events.d.ts +12 -0
  246. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  247. package/dist/types/common/events/util.d.ts +2 -0
  248. package/dist/types/common/logs/logger-config.d.ts +2 -0
  249. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  250. package/dist/types/common/logs/request.d.ts +34 -0
  251. package/dist/types/common/queue.d.ts +32 -0
  252. package/dist/types/config.d.ts +78 -0
  253. package/dist/types/constants.d.ts +984 -0
  254. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  255. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  256. package/dist/types/controls-options-manager/index.d.ts +136 -0
  257. package/dist/types/controls-options-manager/types.d.ts +43 -0
  258. package/dist/types/controls-options-manager/util.d.ts +1 -0
  259. package/dist/types/index.d.ts +7 -0
  260. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  261. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  262. package/dist/types/locus-info/fullState.d.ts +2 -0
  263. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  264. package/dist/types/locus-info/index.d.ts +315 -0
  265. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  266. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  267. package/dist/types/locus-info/parser.d.ts +212 -0
  268. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  269. package/dist/types/media/index.d.ts +34 -0
  270. package/dist/types/media/properties.d.ts +108 -0
  271. package/dist/types/media/util.d.ts +2 -0
  272. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  273. package/dist/types/meeting/in-meeting-actions.d.ts +137 -0
  274. package/dist/types/meeting/index.d.ts +1753 -0
  275. package/dist/types/meeting/muteState.d.ts +185 -0
  276. package/dist/types/meeting/request.d.ts +275 -0
  277. package/dist/types/meeting/request.type.d.ts +11 -0
  278. package/dist/types/meeting/state.d.ts +9 -0
  279. package/dist/types/meeting/util.d.ts +2 -0
  280. package/dist/types/meeting-info/collection.d.ts +20 -0
  281. package/dist/types/meeting-info/index.d.ts +57 -0
  282. package/dist/types/meeting-info/meeting-info-v2.d.ts +115 -0
  283. package/dist/types/meeting-info/request.d.ts +22 -0
  284. package/dist/types/meeting-info/util.d.ts +2 -0
  285. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  286. package/dist/types/meetings/collection.d.ts +31 -0
  287. package/dist/types/meetings/index.d.ts +345 -0
  288. package/dist/types/meetings/request.d.ts +27 -0
  289. package/dist/types/meetings/util.d.ts +18 -0
  290. package/dist/types/member/index.d.ts +157 -0
  291. package/dist/types/member/types.d.ts +21 -0
  292. package/dist/types/member/util.d.ts +2 -0
  293. package/dist/types/members/collection.d.ts +29 -0
  294. package/dist/types/members/index.d.ts +353 -0
  295. package/dist/types/members/request.d.ts +69 -0
  296. package/dist/types/members/types.d.ts +24 -0
  297. package/dist/types/members/util.d.ts +2 -0
  298. package/dist/types/metrics/config.d.ts +195 -0
  299. package/dist/types/metrics/constants.d.ts +54 -0
  300. package/dist/types/metrics/index.d.ts +169 -0
  301. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  302. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  303. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  304. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  305. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  306. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  307. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  308. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  309. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  310. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  311. package/dist/types/reachability/index.d.ts +152 -0
  312. package/dist/types/reachability/request.d.ts +37 -0
  313. package/dist/types/reactions/constants.d.ts +3 -0
  314. package/dist/types/reactions/reactions.d.ts +4 -0
  315. package/dist/types/reactions/reactions.type.d.ts +52 -0
  316. package/dist/types/reconnection-manager/index.d.ts +126 -0
  317. package/dist/types/recording-controller/enums.d.ts +7 -0
  318. package/dist/types/recording-controller/index.d.ts +193 -0
  319. package/dist/types/recording-controller/util.d.ts +13 -0
  320. package/dist/types/roap/index.d.ts +77 -0
  321. package/dist/types/roap/request.d.ts +38 -0
  322. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  323. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  324. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  325. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  326. package/dist/types/transcription/index.d.ts +64 -0
  327. package/internal-README.md +7 -6
  328. package/package.json +28 -21
  329. package/src/annotation/annotation.types.ts +41 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +339 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +141 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +37 -0
  337. package/src/breakouts/index.ts +835 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/browser-detection.ts +9 -6
  341. package/src/common/collection.ts +3 -1
  342. package/src/common/errors/captcha-error.ts +6 -6
  343. package/src/common/errors/intent-to-join.ts +6 -6
  344. package/src/common/errors/join-meeting.ts +12 -8
  345. package/src/common/errors/media.ts +6 -6
  346. package/src/common/errors/parameter.ts +9 -6
  347. package/src/common/errors/password-error.ts +6 -6
  348. package/src/common/errors/permission.ts +5 -5
  349. package/src/common/errors/reconnection.ts +6 -6
  350. package/src/common/errors/stats.ts +6 -6
  351. package/src/common/errors/webex-errors.ts +7 -5
  352. package/src/common/errors/webex-meetings-error.ts +1 -1
  353. package/src/common/events/events-scope.ts +5 -1
  354. package/src/common/events/events.ts +5 -1
  355. package/src/common/events/trigger-proxy.ts +8 -3
  356. package/src/common/events/util.ts +1 -2
  357. package/src/common/logs/logger-proxy.ts +21 -10
  358. package/src/common/logs/request.ts +11 -8
  359. package/src/config.ts +16 -12
  360. package/src/constants.ts +141 -6
  361. package/src/controls-options-manager/constants.ts +5 -0
  362. package/src/controls-options-manager/enums.ts +18 -0
  363. package/src/controls-options-manager/index.ts +278 -0
  364. package/src/controls-options-manager/types.ts +59 -0
  365. package/src/controls-options-manager/util.ts +274 -0
  366. package/src/index.ts +33 -0
  367. package/src/locus-info/controlsUtils.ts +145 -24
  368. package/src/locus-info/fullState.ts +15 -11
  369. package/src/locus-info/hostUtils.ts +4 -3
  370. package/src/locus-info/index.ts +326 -55
  371. package/src/locus-info/infoUtils.ts +12 -4
  372. package/src/locus-info/mediaSharesUtils.ts +4 -4
  373. package/src/locus-info/parser.ts +46 -68
  374. package/src/locus-info/selfUtils.ts +187 -56
  375. package/src/media/index.ts +142 -172
  376. package/src/media/properties.ts +43 -36
  377. package/src/media/util.ts +1 -1
  378. package/src/mediaQualityMetrics/config.ts +380 -378
  379. package/src/meeting/in-meeting-actions.ts +139 -3
  380. package/src/meeting/index.ts +2674 -1543
  381. package/src/meeting/muteState.ts +271 -68
  382. package/src/meeting/request.ts +231 -135
  383. package/src/meeting/request.type.ts +13 -0
  384. package/src/meeting/state.ts +45 -30
  385. package/src/meeting/util.ts +119 -110
  386. package/src/meeting-info/collection.ts +2 -1
  387. package/src/meeting-info/index.ts +32 -30
  388. package/src/meeting-info/meeting-info-v2.ts +201 -113
  389. package/src/meeting-info/request.ts +9 -3
  390. package/src/meeting-info/util.ts +54 -46
  391. package/src/meeting-info/utilv2.ts +70 -55
  392. package/src/meetings/collection.ts +21 -1
  393. package/src/meetings/index.ts +749 -437
  394. package/src/meetings/request.ts +29 -25
  395. package/src/meetings/util.ts +122 -33
  396. package/src/member/index.ts +95 -49
  397. package/src/member/types.ts +24 -0
  398. package/src/member/util.ts +106 -13
  399. package/src/members/collection.ts +8 -1
  400. package/src/members/index.ts +281 -129
  401. package/src/members/request.ts +87 -14
  402. package/src/members/types.ts +28 -0
  403. package/src/members/util.ts +140 -49
  404. package/src/metrics/config.ts +302 -90
  405. package/src/metrics/constants.ts +1 -6
  406. package/src/metrics/index.ts +124 -95
  407. package/src/multistream/mediaRequestManager.ts +203 -45
  408. package/src/multistream/receiveSlot.ts +69 -26
  409. package/src/multistream/receiveSlotManager.ts +62 -38
  410. package/src/multistream/remoteMedia.ts +30 -4
  411. package/src/multistream/remoteMediaGroup.ts +4 -3
  412. package/src/multistream/remoteMediaManager.ts +230 -66
  413. package/src/networkQualityMonitor/index.ts +24 -27
  414. package/src/personal-meeting-room/index.ts +12 -16
  415. package/src/personal-meeting-room/request.ts +10 -3
  416. package/src/personal-meeting-room/util.ts +3 -3
  417. package/src/reachability/index.ts +131 -79
  418. package/src/reachability/request.ts +43 -34
  419. package/src/reactions/constants.ts +4 -0
  420. package/src/reactions/reactions.ts +8 -8
  421. package/src/reactions/reactions.type.ts +31 -5
  422. package/src/reconnection-manager/index.ts +193 -111
  423. package/src/recording-controller/enums.ts +8 -0
  424. package/src/recording-controller/index.ts +315 -0
  425. package/src/recording-controller/util.ts +58 -0
  426. package/src/roap/index.ts +63 -51
  427. package/src/roap/request.ts +86 -53
  428. package/src/roap/turnDiscovery.ts +105 -46
  429. package/src/statsAnalyzer/global.ts +8 -104
  430. package/src/statsAnalyzer/index.ts +624 -376
  431. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  432. package/src/transcription/index.ts +34 -32
  433. package/test/integration/spec/converged-space-meetings.js +177 -0
  434. package/test/integration/spec/journey.js +670 -466
  435. package/test/integration/spec/space-meeting.js +320 -204
  436. package/test/integration/spec/transcription.js +7 -8
  437. package/test/unit/spec/annotation/index.ts +435 -0
  438. package/test/unit/spec/breakouts/breakout.ts +184 -0
  439. package/test/unit/spec/breakouts/collection.ts +15 -0
  440. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  441. package/test/unit/spec/breakouts/events.ts +77 -0
  442. package/test/unit/spec/breakouts/index.ts +1542 -0
  443. package/test/unit/spec/breakouts/request.ts +104 -0
  444. package/test/unit/spec/breakouts/utils.js +72 -0
  445. package/test/unit/spec/common/browser-detection.js +9 -28
  446. package/test/unit/spec/controls-options-manager/index.js +287 -0
  447. package/test/unit/spec/controls-options-manager/util.js +504 -0
  448. package/test/unit/spec/fixture/locus.js +93 -90
  449. package/test/unit/spec/locus-info/controlsUtils.js +289 -32
  450. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  451. package/test/unit/spec/locus-info/index.js +585 -5
  452. package/test/unit/spec/locus-info/infoUtils.js +26 -33
  453. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  454. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  455. package/test/unit/spec/locus-info/parser.js +3 -9
  456. package/test/unit/spec/locus-info/selfConstant.js +110 -103
  457. package/test/unit/spec/locus-info/selfUtils.js +236 -12
  458. package/test/unit/spec/media/index.ts +104 -8
  459. package/test/unit/spec/media/properties.ts +9 -9
  460. package/test/unit/spec/meeting/in-meeting-actions.ts +66 -3
  461. package/test/unit/spec/meeting/index.js +2934 -946
  462. package/test/unit/spec/meeting/muteState.js +368 -70
  463. package/test/unit/spec/meeting/request.js +194 -44
  464. package/test/unit/spec/meeting/utils.js +146 -165
  465. package/test/unit/spec/meeting-info/meetinginfov2.js +333 -74
  466. package/test/unit/spec/meeting-info/request.js +7 -9
  467. package/test/unit/spec/meeting-info/util.js +11 -12
  468. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  469. package/test/unit/spec/meetings/collection.js +15 -1
  470. package/test/unit/spec/meetings/index.js +1052 -329
  471. package/test/unit/spec/meetings/utils.js +163 -14
  472. package/test/unit/spec/member/index.js +24 -1
  473. package/test/unit/spec/member/util.js +383 -32
  474. package/test/unit/spec/members/index.js +402 -54
  475. package/test/unit/spec/members/request.js +76 -20
  476. package/test/unit/spec/members/utils.js +191 -4
  477. package/test/unit/spec/metrics/index.js +104 -20
  478. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  479. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  480. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  481. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  482. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  483. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  484. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  485. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  486. package/test/unit/spec/reachability/index.ts +176 -27
  487. package/test/unit/spec/reachability/request.js +66 -0
  488. package/test/unit/spec/reconnection-manager/index.js +62 -31
  489. package/test/unit/spec/recording-controller/index.js +231 -0
  490. package/test/unit/spec/recording-controller/util.js +102 -0
  491. package/test/unit/spec/roap/index.ts +21 -16
  492. package/test/unit/spec/roap/request.ts +217 -0
  493. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  494. package/test/unit/spec/stats-analyzer/index.js +116 -60
  495. package/test/utils/cmr.js +44 -42
  496. package/test/utils/constants.js +9 -0
  497. package/test/utils/integrationTestUtils.js +64 -0
  498. package/test/utils/testUtils.js +63 -99
  499. package/test/utils/webex-config.js +22 -18
  500. package/test/utils/webex-test-users.js +57 -50
  501. package/tsconfig.json +6 -0
  502. package/dist/media/internal-media-core-wrapper.js +0 -22
  503. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  504. package/dist/meeting/effectsState.js +0 -334
  505. package/dist/meeting/effectsState.js.map +0 -1
  506. package/dist/multistream/multistreamMedia.js +0 -116
  507. package/dist/multistream/multistreamMedia.js.map +0 -1
  508. package/src/index.js +0 -15
  509. package/src/media/internal-media-core-wrapper.ts +0 -9
  510. package/src/meeting/effectsState.ts +0 -211
  511. package/src/multistream/multistreamMedia.ts +0 -92
  512. package/test/unit/spec/meeting/effectsState.js +0 -291
package/src/config.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  // @ts-ignore
3
- deviceType
3
+ deviceType,
4
4
  } from '@webex/common';
5
5
 
6
6
  export default {
@@ -16,7 +16,7 @@ export default {
16
16
  receiveVideo: true,
17
17
  pstn: false,
18
18
  sendShare: false,
19
- receiveShare: false
19
+ receiveShare: false,
20
20
  },
21
21
  reconnection: {
22
22
  enabled: false,
@@ -25,7 +25,7 @@ export default {
25
25
  // Timeout duration to wait for ICE to reconnect if a disconnect is received.
26
26
  iceReconnectionTimeout: 10000,
27
27
  // Amount of times attempting to rejoin a meeting during reconnect
28
- maxRejoinAttempts: 3
28
+ maxRejoinAttempts: 3,
29
29
  },
30
30
  stats: {
31
31
  // Enable the webrtc stats analyzer that emits quality degradation events
@@ -41,7 +41,7 @@ export default {
41
41
  // Once packet loss hits this ratio, the video will downgrade
42
42
  videoPacketLossRatioThreshold: 9, // comparison of packets lost / packets received
43
43
  rttThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
44
- jitterThreshold: 500 // 500 ms noticeable quality lag begins based on bandwidth of user
44
+ jitterThreshold: 500, // 500 ms noticeable quality lag begins based on bandwidth of user
45
45
  },
46
46
  metrics: {
47
47
  // change to your client name else data will be muddled
@@ -55,30 +55,30 @@ export default {
55
55
  mqaMetricsInterval: 60000,
56
56
  // send to cisco internal MQA data automatically
57
57
  // we already send CA
58
- autoSendMQA: true
58
+ autoSendMQA: true,
59
59
  },
60
60
  logging: {
61
61
  enable: true,
62
- verboseEvents: true
62
+ verboseEvents: true,
63
63
  },
64
64
  resolution: {
65
65
  maxWidth: 1280,
66
66
  maxHeight: 720,
67
67
  idealWidth: 1280,
68
- idealHeight: 720
68
+ idealHeight: 720,
69
69
  },
70
70
  screenResolution: {
71
71
  maxWidth: 1920,
72
72
  maxHeight: 1080,
73
73
  idealWidth: 1920,
74
- idealHeight: 1080
74
+ idealHeight: 1080,
75
75
  },
76
76
  bandwidth: {
77
77
  // please note, these are the maximum bandwidth values
78
78
  // the server supports, minimums have to be tested
79
79
  audio: 64000,
80
80
  video: 4000000,
81
- startBitrate: 2000
81
+ startBitrate: 2000,
82
82
  },
83
83
  screenFrameRate: 10,
84
84
  videoShareFrameRate: 30,
@@ -89,11 +89,15 @@ export default {
89
89
  receiveTranscription: false,
90
90
  enableExtmap: false,
91
91
  enableAutomaticLLM: false,
92
+ installedOrgID: undefined,
92
93
  experimental: {
93
94
  enableMediaNegotiatedEvent: false,
94
95
  enableUnifiedMeetings: false,
95
96
  enableAdhocMeetings: false,
96
- enableTurnDiscovery: false,
97
- }
98
- }
97
+ enableTurnDiscovery: true,
98
+ },
99
+ degradationPreferences: {
100
+ maxMacroblocksLimit: 8192,
101
+ },
102
+ },
99
103
  };
package/src/constants.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  // @ts-ignore
2
- import { hydraTypes } from '@webex/common';
2
+ import {hydraTypes} from '@webex/common';
3
3
 
4
4
  // *********** LOWERCASE / CAMELCASE STRINGS ************
5
5
 
@@ -7,10 +7,12 @@ export const AUDIO = 'audio';
7
7
  export const AUDIO_INPUT = 'audioinput';
8
8
  export const AUDIO_STATUS = 'audioStatus';
9
9
  export const ALERT = 'alert';
10
+ export const ALIAS = 'alias';
10
11
  export const ANSWER = 'answer';
11
12
 
12
13
  export const CALL = 'call';
13
14
  export const CORRELATION_ID = 'correlationId';
15
+ export const MEETINGNUMBER = 'meetingNumber';
14
16
  export const CONVERSATION_URL = 'conversationUrl';
15
17
  export const CALENDAR = 'calendar';
16
18
  export const CALENDAR_EVENTS_API = 'calendarEvents';
@@ -93,6 +95,7 @@ export const _JOINED_ = 'JOINED';
93
95
 
94
96
  export const _LOCUS_ID_ = 'LOCUS_ID';
95
97
  export const _LEFT_ = 'LEFT';
98
+ export const _MOVED_ = 'MOVED';
96
99
 
97
100
  export const _MEETING_LINK_ = 'MEETING_LINK';
98
101
  export const _MEETING_UUID_ = 'MEETING_UUID';
@@ -288,6 +291,7 @@ export const EVENT_TRIGGERS = {
288
291
  MEETING_STOPPED_RECORDING: 'meeting:recording:stopped',
289
292
  MEETING_STARTED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:started',
290
293
  MEETING_STOPPED_RECEIVING_TRANSCRIPTION: 'meeting:receiveTranscription:stopped',
294
+ MEETING_RECEIVE_REACTIONS: 'meeting:receiveReactions',
291
295
  MEETING_PAUSED_RECORDING: 'meeting:recording:paused',
292
296
  MEETING_RESUMED_RECORDING: 'meeting:recording:resumed',
293
297
  MEETING_ADDED: 'meeting:added',
@@ -296,6 +300,8 @@ export const EVENT_TRIGGERS = {
296
300
  MEETING_RINGING_STOP: 'meeting:ringingStop',
297
301
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
298
302
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
303
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
304
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
299
305
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
300
306
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
301
307
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
@@ -304,7 +310,14 @@ export const EVENT_TRIGGERS = {
304
310
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
305
311
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
306
312
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
313
+ MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
314
+ MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
315
+ MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
316
+ MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
317
+ MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
318
+ MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
307
319
  MEMBERS_UPDATE: 'members:update',
320
+ MEMBERS_CLEAR: 'members:clear',
308
321
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
309
322
  MEMBERS_HOST_UPDATE: 'members:host:update',
310
323
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -331,8 +344,16 @@ export const EVENT_TRIGGERS = {
331
344
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
332
345
  REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
333
346
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
334
- REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScrenShareAudio:created',
347
+ REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
335
348
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
349
+ // Controls
350
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
351
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
352
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
353
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
354
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
355
+ 'meeting:controls:view-the-participants-list:updated',
356
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
336
357
  };
337
358
 
338
359
  export const EVENT_TYPES = {
@@ -356,6 +377,7 @@ export const MEETING_REMOVED_REASON = {
356
377
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
357
378
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
358
379
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
380
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
359
381
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
360
382
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
361
383
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
@@ -373,6 +395,7 @@ export const CALL_REMOVED_REASON = {
373
395
  export const SHARE_STOPPED_REASON = {
374
396
  SELF_STOPPED: 'SELF_STOPPED',
375
397
  MEETING_REJOIN: 'MEETING_REJOIN',
398
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
376
399
  };
377
400
 
378
401
  export const EVENTS = {
@@ -448,6 +471,11 @@ export const ERROR_DICTIONARY = {
448
471
  MESSAGE: 'Captcha is required.',
449
472
  CODE: 8,
450
473
  },
474
+ BREAKOUT_EDIT: {
475
+ NAME: 'BreakoutEditLockedError',
476
+ MESSAGE: 'Edit lock token mismatch',
477
+ CODE: 9,
478
+ },
451
479
  };
452
480
 
453
481
  export const FLOOR_ACTION = {
@@ -469,6 +497,7 @@ export const HTTP_VERBS = {
469
497
  POST: 'POST',
470
498
  GET: 'GET',
471
499
  PATCH: 'PATCH',
500
+ DELETE: 'DELETE',
472
501
  };
473
502
 
474
503
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -514,15 +543,72 @@ export const LOCUS = {
514
543
  SYNCDEBUG: 'sync_debug',
515
544
  };
516
545
 
546
+ export const ANNOTATION = {
547
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
548
+ };
549
+ export const BREAKOUTS = {
550
+ STATUS: {
551
+ CLOSING: 'CLOSING',
552
+ CLOSED: 'CLOSED',
553
+ PENDING: 'PENDING',
554
+ OPEN: 'OPEN',
555
+ },
556
+ EVENTS: {
557
+ BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
558
+ MESSAGE: 'MESSAGE',
559
+ MEMBERS_UPDATE: 'MEMBERS_UPDATE',
560
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
561
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
562
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
563
+ },
564
+ SESSION_TYPES: {
565
+ MAIN: 'MAIN',
566
+ BREAKOUT: 'BREAKOUT',
567
+ },
568
+ SESSION_STATES: {
569
+ ACTIVE: 'active',
570
+ ASSIGNED: 'assigned',
571
+ ALLOWED: 'allowed',
572
+ ASSIGNED_CURRENT: 'assignedCurrent',
573
+ REQUESTED: 'requested',
574
+ },
575
+ BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
576
+ ACTION: {
577
+ START: 'START',
578
+ CLOSE: 'CLOSE',
579
+ DELETE: 'DELETE',
580
+ },
581
+ ERROR_CODE: {
582
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
583
+ EDIT_NOT_AUTHORIZED: 201403007,
584
+ },
585
+ DEFAULT_DURATION: 60000,
586
+ EDIT_LOCK_STATUS: {
587
+ LOCKED: 'LOCKED',
588
+ NOT_LOCKED: 'NOT_LOCKED',
589
+ UNKNOWN: 'UNKNOWN',
590
+ },
591
+ DEFAULT_TTL: 30,
592
+ };
593
+
517
594
  export const LOCUSINFO = {
518
595
  EVENTS: {
519
596
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
520
597
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
521
598
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
599
+ CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
522
600
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
523
601
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
602
+ CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
603
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
604
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
605
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
606
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
607
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
608
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
524
609
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
525
610
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
611
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
526
612
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
527
613
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
528
614
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
@@ -540,6 +626,10 @@ export const LOCUSINFO = {
540
626
  EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
541
627
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
542
628
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
629
+ SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
630
+ MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
631
+ LINKS_SERVICES: 'LINKS_SERVICES',
632
+ SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
543
633
  },
544
634
  };
545
635
 
@@ -552,6 +642,9 @@ export const LOCUSEVENT = {
552
642
  // delta events
553
643
  DIFFERENCE: 'locus.difference',
554
644
 
645
+ // Breakout sessions
646
+ BREAKOUT_ROSTER: 'breakout.roster',
647
+
555
648
  // screen sharing
556
649
  FLOOR_GRANTED: 'locus.floor_granted',
557
650
  FLOOR_RELEASED: 'locus.floor_released',
@@ -722,13 +815,50 @@ export const DISPLAY_HINTS = {
722
815
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
723
816
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
724
817
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
818
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
725
819
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
726
820
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
821
+ ENABLE_REACTIONS: 'ENABLE_REACTIONS',
822
+ DISABLE_REACTIONS: 'DISABLE_REACTIONS',
823
+ REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
824
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
825
+ SHARE_CONTROL: 'SHARE_CONTROL',
826
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
827
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
828
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
829
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
830
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
831
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
832
+ MUTE_ALL: 'MUTE_ALL',
833
+ UNMUTE_ALL: 'UNMUTE_ALL',
834
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
835
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
836
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
837
+
838
+ // breakout session
839
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
840
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
841
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
842
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
843
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
844
+
845
+ // participants list
846
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
847
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
848
+
849
+ // raise hand
850
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
851
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
852
+
853
+ // video
854
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
855
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
727
856
  };
728
857
 
729
858
  export const SELF_ROLES = {
730
859
  COHOST: 'COHOST',
731
860
  MODERATOR: 'MODERATOR',
861
+ ATTENDEE: 'ATTENDEE',
732
862
  };
733
863
 
734
864
  export const MEETING_STATE = {
@@ -813,7 +943,9 @@ export const RESOURCE = {
813
943
  };
814
944
 
815
945
  export const REACHABILITY = {
816
- localStorage: 'reachability.result',
946
+ localStorageResult: 'reachability.result',
947
+ localStorageJoinCookie: 'reachability.joinCookie',
948
+ namespace: 'Reachability',
817
949
  };
818
950
 
819
951
  export const ROAP = {
@@ -848,9 +980,6 @@ export const NETWORK_TYPE = {
848
980
  };
849
981
 
850
982
  export const STATS = {
851
- AUDIO_CORRELATE: 'audio',
852
- VIDEO_CORRELATE: 'video',
853
- SHARE_CORRELATE: 'share',
854
983
  SEND_DIRECTION: 'send',
855
984
  RECEIVE_DIRECTION: 'recv',
856
985
  REMOTE: 'remote',
@@ -1040,6 +1169,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1040
1169
  NONE: 'NONE', // meeting info was retrieved succesfully
1041
1170
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1042
1171
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1172
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1043
1173
  OTHER: 'OTHER', // any other error (network, etc)
1044
1174
  };
1045
1175
 
@@ -1054,3 +1184,8 @@ export const EMBEDDED_APP_TYPES = {
1054
1184
  SLIDO: 'SLIDO',
1055
1185
  OTHER: 'OTHER',
1056
1186
  };
1187
+
1188
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1189
+ supportHostKey: true,
1190
+ supportCountryList: true,
1191
+ };
@@ -0,0 +1,5 @@
1
+ const ENABLED = 'enabled';
2
+ const CAN_SET = 'canSet';
3
+ const CAN_UNSET = 'canUnset';
4
+
5
+ export {ENABLED, CAN_SET, CAN_UNSET};
@@ -0,0 +1,18 @@
1
+ enum Setting {
2
+ disallowUnmute = 'DisallowUnmute',
3
+ muteOnEntry = 'MuteOnEntry',
4
+ muted = 'Muted',
5
+ }
6
+
7
+ enum Control {
8
+ audio = 'audio',
9
+ raiseHand = 'raiseHand',
10
+ reactions = 'reactions',
11
+ shareControl = 'shareControl',
12
+ video = 'video',
13
+ viewTheParticipantList = 'viewTheParticipantList',
14
+ }
15
+
16
+ export {Control, Setting};
17
+
18
+ export default Setting;
@@ -0,0 +1,278 @@
1
+ import {camelCase} from 'lodash';
2
+ import PermissionError from '../common/errors/permission';
3
+ import {CONTROLS, HTTP_VERBS} from '../constants';
4
+ import MeetingRequest from '../meeting/request';
5
+ import LoggerProxy from '../common/logs/logger-proxy';
6
+ import {Control, Setting} from './enums';
7
+ import {ControlConfig} from './types';
8
+ import Util from './util';
9
+ import {CAN_SET, CAN_UNSET, ENABLED} from './constants';
10
+
11
+ /**
12
+ * docs
13
+ * https://sqbu-github.cisco.com/pages/WebExSquared/locus/guides/mute.html
14
+ * https://confluence-eng-gpk2.cisco.com/conf/display/LOCUS/Hard+Mute+and+Audio+Privacy#HardMuteandAudioPrivacy-SelfMuteonEntry
15
+ * https://confluence-eng-gpk2.cisco.com/conf/pages/viewpage.action?spaceKey=UC&title=WEBEX-124454%3A+UCF%3A+Hard+mute+support+for+Teams+joining+Webex+meeting
16
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-180867
17
+ * https://jira-eng-gpk2.cisco.com/jira/browse/SPARK-393351
18
+ */
19
+
20
+ /**
21
+ * @description ControlsOptionsManager is responsible for handling the behavior of participant controls when somebody joins a meeting
22
+ * @export
23
+ * @private
24
+ * @class Recording
25
+ */
26
+ export default class ControlsOptionsManager {
27
+ /**
28
+ * @instance
29
+ * @type {MeetingRequest}
30
+ * @private
31
+ * @memberof ControlsOptionsManager
32
+ */
33
+ private request: MeetingRequest;
34
+
35
+ /**
36
+ * @instance
37
+ * @type {Array}
38
+ * @private
39
+ * @memberof ControlsOptionsManager
40
+ */
41
+ private displayHints: Array<string> = [];
42
+
43
+ /**
44
+ * @instance
45
+ * @type {string}
46
+ * @private
47
+ * @memberof ControlsOptionsManager
48
+ */
49
+ private locusUrl: string;
50
+
51
+ /**
52
+ * @param {MeetingRequest} request
53
+ * @param {Object} options
54
+ * @constructor
55
+ * @memberof ControlsOptionsManager
56
+ */
57
+ constructor(
58
+ request: MeetingRequest,
59
+ options?: {
60
+ locusUrl: string;
61
+ displayHints?: Array<string>;
62
+ }
63
+ ) {
64
+ this.initialize(request);
65
+ this.set(options);
66
+ }
67
+
68
+ /**
69
+ * @param {MeetingRequest} request
70
+ * @returns {void}
71
+ * @private
72
+ * @memberof ControlsOptionsManager
73
+ */
74
+ private initialize(request: MeetingRequest) {
75
+ this.request = request;
76
+ }
77
+
78
+ /**
79
+ * @param {Object} options
80
+ * @returns {void}
81
+ * @public
82
+ * @memberof ControlsOptionsManager
83
+ */
84
+ public set(options?: {locusUrl: string; displayHints?: Array<string>}) {
85
+ this.extract(options);
86
+ }
87
+
88
+ /**
89
+ * @param {string} url
90
+ * @returns {void}
91
+ * @public
92
+ * @memberof ControlsOptionsManager
93
+ */
94
+ public setLocusUrl(url: string) {
95
+ this.locusUrl = url;
96
+ }
97
+
98
+ /**
99
+ * @param {Array} hints
100
+ * @returns {void}
101
+ * @public
102
+ * @memberof ControlsOptionsManager
103
+ */
104
+ public setDisplayHints(hints: Array<string>) {
105
+ this.displayHints = hints;
106
+ }
107
+
108
+ /**
109
+ * @returns {string}
110
+ * @public
111
+ * @memberof ControlsOptionsManager
112
+ */
113
+ public getLocusUrl() {
114
+ return this.locusUrl;
115
+ }
116
+
117
+ /**
118
+ * @returns {Array}
119
+ * @public
120
+ * @memberof ControlsOptionsManager
121
+ */
122
+ public getDisplayHints() {
123
+ return this.displayHints;
124
+ }
125
+
126
+ /**
127
+ * @param {Object} options
128
+ * @returns {void}
129
+ * @private
130
+ * @memberof ControlsOptionsManager
131
+ */
132
+ private extract(options?: {locusUrl: string; displayHints?: Array<string>}) {
133
+ this.setDisplayHints(options?.displayHints);
134
+ this.setLocusUrl(options?.locusUrl);
135
+ }
136
+
137
+ /**
138
+ * Set controls for this meeting.
139
+ *
140
+ * @param {Array<ControlConfig>} controls - Spread Array of ControlConfigs
141
+ * @returns {Promise<Array<any>>}- Promise resolving if the request was successful.
142
+ */
143
+ public update(...controls: Array<ControlConfig>) {
144
+ const payloads = controls.map((control) => {
145
+ if (!Object.keys(Control).includes(control.scope)) {
146
+ throw new Error(
147
+ `updating meeting control scope "${control.scope}" is not a supported scope`
148
+ );
149
+ }
150
+
151
+ if (!Util.canUpdate(control, this.displayHints)) {
152
+ throw new PermissionError(
153
+ `updating meeting control scope "${control.scope}" not allowed, due to moderator property.`
154
+ );
155
+ }
156
+
157
+ return {
158
+ [control.scope]: control.properties,
159
+ };
160
+ });
161
+
162
+ return payloads.reduce((previous, payload) => {
163
+ return previous.then(() =>
164
+ // @ts-ignore
165
+ this.request.request({
166
+ uri: `${this.locusUrl}/${CONTROLS}`,
167
+ body: payload,
168
+ method: HTTP_VERBS.PATCH,
169
+ })
170
+ );
171
+ }, Promise.resolve());
172
+ }
173
+
174
+ /**
175
+ * @param {Setting} setting
176
+ * @private
177
+ * @memberof ControlsOptionsManager
178
+ * @returns {Promise}
179
+ */
180
+ private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
181
+ LoggerProxy.logger.log(
182
+ `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
183
+ );
184
+
185
+ const body: Record<string, any> = {};
186
+ let error: PermissionError;
187
+
188
+ let shouldSkipCheckToMergeBody = false;
189
+
190
+ Object.entries(setting).forEach(([key, value]) => {
191
+ if (
192
+ !shouldSkipCheckToMergeBody &&
193
+ !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
194
+ ) {
195
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
196
+ }
197
+
198
+ if (error) {
199
+ return;
200
+ }
201
+
202
+ switch (key) {
203
+ case Setting.muted:
204
+ shouldSkipCheckToMergeBody = true;
205
+ body.audio = body.audio
206
+ ? {...body.audio, [camelCase(key)]: value}
207
+ : {[camelCase(key)]: value};
208
+ break;
209
+
210
+ case Setting.disallowUnmute:
211
+ case Setting.muteOnEntry:
212
+ if (Object.keys(setting).includes(Setting.muted)) {
213
+ body.audio = body.audio
214
+ ? {...body.audio, [camelCase(key)]: value}
215
+ : {[camelCase(key)]: value};
216
+ body.audio[camelCase(key)] = value;
217
+ } else {
218
+ body[camelCase(key)] = {[ENABLED]: value};
219
+ }
220
+ break;
221
+
222
+ default:
223
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
224
+ }
225
+ });
226
+
227
+ if (error) {
228
+ return Promise.reject(error);
229
+ }
230
+
231
+ // @ts-ignore
232
+ return this.request.request({
233
+ uri: `${this.locusUrl}/${CONTROLS}`,
234
+ body,
235
+ method: HTTP_VERBS.PATCH,
236
+ });
237
+ }
238
+
239
+ /**
240
+ * @public
241
+ * @param {boolean} enabled
242
+ * @memberof ControlsOptionsManager
243
+ * @returns {Promise}
244
+ */
245
+ public setMuteOnEntry(enabled: boolean): Promise<any> {
246
+ return this.setControls({[Setting.muteOnEntry]: enabled});
247
+ }
248
+
249
+ /**
250
+ * @public
251
+ * @param {boolean} enabled
252
+ * @memberof ControlsOptionsManager
253
+ * @returns {Promise}
254
+ */
255
+ public setDisallowUnmute(enabled: boolean): Promise<any> {
256
+ return this.setControls({[Setting.disallowUnmute]: enabled});
257
+ }
258
+
259
+ /**
260
+ * @public
261
+ * @param {boolean} mutedEnabled
262
+ * @param {boolean} disallowUnmuteEnabled
263
+ * @param {boolean} muteOnEntryEnabled
264
+ * @memberof ControlsOptionsManager
265
+ * @returns {Promise}
266
+ */
267
+ public setMuteAll(
268
+ mutedEnabled: boolean,
269
+ disallowUnmuteEnabled: boolean,
270
+ muteOnEntryEnabled: boolean
271
+ ): Promise<any> {
272
+ return this.setControls({
273
+ [Setting.muted]: mutedEnabled,
274
+ [Setting.disallowUnmute]: disallowUnmuteEnabled,
275
+ [Setting.muteOnEntry]: muteOnEntryEnabled,
276
+ });
277
+ }
278
+ }