@webex/plugin-meetings 3.0.0-beta.9 → 3.0.0-beta.91

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 (507) 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 +325 -0
  8. package/dist/annotation/index.js.map +1 -0
  9. package/dist/breakouts/breakout.js +180 -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/index.js +868 -0
  16. package/dist/breakouts/index.js.map +1 -0
  17. package/dist/breakouts/request.js +78 -0
  18. package/dist/breakouts/request.js.map +1 -0
  19. package/dist/breakouts/utils.js +67 -0
  20. package/dist/breakouts/utils.js.map +1 -0
  21. package/dist/common/browser-detection.js +1 -20
  22. package/dist/common/browser-detection.js.map +1 -1
  23. package/dist/common/collection.js +5 -20
  24. package/dist/common/collection.js.map +1 -1
  25. package/dist/common/config.js +0 -7
  26. package/dist/common/config.js.map +1 -1
  27. package/dist/common/errors/captcha-error.js +5 -26
  28. package/dist/common/errors/captcha-error.js.map +1 -1
  29. package/dist/common/errors/intent-to-join.js +5 -26
  30. package/dist/common/errors/intent-to-join.js.map +1 -1
  31. package/dist/common/errors/join-meeting.js +6 -27
  32. package/dist/common/errors/join-meeting.js.map +1 -1
  33. package/dist/common/errors/media.js +5 -26
  34. package/dist/common/errors/media.js.map +1 -1
  35. package/dist/common/errors/parameter.js +5 -33
  36. package/dist/common/errors/parameter.js.map +1 -1
  37. package/dist/common/errors/password-error.js +5 -26
  38. package/dist/common/errors/password-error.js.map +1 -1
  39. package/dist/common/errors/permission.js +4 -25
  40. package/dist/common/errors/permission.js.map +1 -1
  41. package/dist/common/errors/reconnection-in-progress.js +0 -17
  42. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  43. package/dist/common/errors/reconnection.js +5 -26
  44. package/dist/common/errors/reconnection.js.map +1 -1
  45. package/dist/common/errors/stats.js +5 -26
  46. package/dist/common/errors/stats.js.map +1 -1
  47. package/dist/common/errors/webex-errors.js +6 -41
  48. package/dist/common/errors/webex-errors.js.map +1 -1
  49. package/dist/common/errors/webex-meetings-error.js +1 -24
  50. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  51. package/dist/common/events/events-scope.js +0 -22
  52. package/dist/common/events/events-scope.js.map +1 -1
  53. package/dist/common/events/events.js +0 -23
  54. package/dist/common/events/events.js.map +1 -1
  55. package/dist/common/events/trigger-proxy.js +0 -12
  56. package/dist/common/events/trigger-proxy.js.map +1 -1
  57. package/dist/common/events/util.js +0 -15
  58. package/dist/common/events/util.js.map +1 -1
  59. package/dist/common/logs/logger-config.js +0 -4
  60. package/dist/common/logs/logger-config.js.map +1 -1
  61. package/dist/common/logs/logger-proxy.js +1 -8
  62. package/dist/common/logs/logger-proxy.js.map +1 -1
  63. package/dist/common/logs/request.js +35 -61
  64. package/dist/common/logs/request.js.map +1 -1
  65. package/dist/common/queue.js +4 -14
  66. package/dist/common/queue.js.map +1 -1
  67. package/dist/config.js +7 -6
  68. package/dist/config.js.map +1 -1
  69. package/dist/constants.js +169 -52
  70. package/dist/constants.js.map +1 -1
  71. package/dist/controls-options-manager/constants.js +14 -0
  72. package/dist/controls-options-manager/constants.js.map +1 -0
  73. package/dist/controls-options-manager/enums.js +25 -0
  74. package/dist/controls-options-manager/enums.js.map +1 -0
  75. package/dist/controls-options-manager/index.js +292 -0
  76. package/dist/controls-options-manager/index.js.map +1 -0
  77. package/dist/controls-options-manager/types.js +7 -0
  78. package/dist/controls-options-manager/types.js.map +1 -0
  79. package/dist/controls-options-manager/util.js +250 -0
  80. package/dist/controls-options-manager/util.js.map +1 -0
  81. package/dist/index.js +72 -17
  82. package/dist/index.js.map +1 -1
  83. package/dist/locus-info/controlsUtils.js +56 -29
  84. package/dist/locus-info/controlsUtils.js.map +1 -1
  85. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  86. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  87. package/dist/locus-info/fullState.js +0 -15
  88. package/dist/locus-info/fullState.js.map +1 -1
  89. package/dist/locus-info/hostUtils.js +4 -12
  90. package/dist/locus-info/hostUtils.js.map +1 -1
  91. package/dist/locus-info/index.js +325 -208
  92. package/dist/locus-info/index.js.map +1 -1
  93. package/dist/locus-info/infoUtils.js +3 -37
  94. package/dist/locus-info/infoUtils.js.map +1 -1
  95. package/dist/locus-info/mediaSharesUtils.js +12 -38
  96. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  97. package/dist/locus-info/parser.js +88 -123
  98. package/dist/locus-info/parser.js.map +1 -1
  99. package/dist/locus-info/selfUtils.js +87 -91
  100. package/dist/locus-info/selfUtils.js.map +1 -1
  101. package/dist/media/index.js +62 -147
  102. package/dist/media/index.js.map +1 -1
  103. package/dist/media/properties.js +71 -117
  104. package/dist/media/properties.js.map +1 -1
  105. package/dist/media/util.js +2 -9
  106. package/dist/media/util.js.map +1 -1
  107. package/dist/mediaQualityMetrics/config.js +505 -495
  108. package/dist/mediaQualityMetrics/config.js.map +1 -1
  109. package/dist/meeting/in-meeting-actions.js +35 -14
  110. package/dist/meeting/in-meeting-actions.js.map +1 -1
  111. package/dist/meeting/index.js +2261 -2269
  112. package/dist/meeting/index.js.map +1 -1
  113. package/dist/meeting/muteState.js +252 -113
  114. package/dist/meeting/muteState.js.map +1 -1
  115. package/dist/meeting/request.js +318 -283
  116. package/dist/meeting/request.js.map +1 -1
  117. package/dist/meeting/request.type.js +7 -0
  118. package/dist/meeting/request.type.js.map +1 -0
  119. package/dist/meeting/state.js +21 -31
  120. package/dist/meeting/state.js.map +1 -1
  121. package/dist/meeting/util.js +69 -217
  122. package/dist/meeting/util.js.map +1 -1
  123. package/dist/meeting-info/collection.js +3 -25
  124. package/dist/meeting-info/collection.js.map +1 -1
  125. package/dist/meeting-info/index.js +10 -33
  126. package/dist/meeting-info/index.js.map +1 -1
  127. package/dist/meeting-info/meeting-info-v2.js +258 -281
  128. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  129. package/dist/meeting-info/request.js +1 -16
  130. package/dist/meeting-info/request.js.map +1 -1
  131. package/dist/meeting-info/util.js +98 -183
  132. package/dist/meeting-info/util.js.map +1 -1
  133. package/dist/meeting-info/utilv2.js +154 -232
  134. package/dist/meeting-info/utilv2.js.map +1 -1
  135. package/dist/meetings/collection.js +24 -20
  136. package/dist/meetings/collection.js.map +1 -1
  137. package/dist/meetings/index.js +573 -587
  138. package/dist/meetings/index.js.map +1 -1
  139. package/dist/meetings/request.js +23 -42
  140. package/dist/meetings/request.js.map +1 -1
  141. package/dist/meetings/util.js +164 -155
  142. package/dist/meetings/util.js.map +1 -1
  143. package/dist/member/index.js +80 -88
  144. package/dist/member/index.js.map +1 -1
  145. package/dist/member/types.js +15 -0
  146. package/dist/member/types.js.map +1 -0
  147. package/dist/member/util.js +90 -69
  148. package/dist/member/util.js.map +1 -1
  149. package/dist/members/collection.js +12 -12
  150. package/dist/members/collection.js.map +1 -1
  151. package/dist/members/index.js +162 -204
  152. package/dist/members/index.js.map +1 -1
  153. package/dist/members/request.js +58 -53
  154. package/dist/members/request.js.map +1 -1
  155. package/dist/members/types.js +15 -0
  156. package/dist/members/types.js.map +1 -0
  157. package/dist/members/util.js +107 -44
  158. package/dist/members/util.js.map +1 -1
  159. package/dist/metrics/config.js +4 -14
  160. package/dist/metrics/config.js.map +1 -1
  161. package/dist/metrics/constants.js +3 -7
  162. package/dist/metrics/constants.js.map +1 -1
  163. package/dist/metrics/index.js +56 -159
  164. package/dist/metrics/index.js.map +1 -1
  165. package/dist/multistream/mediaRequestManager.js +167 -50
  166. package/dist/multistream/mediaRequestManager.js.map +1 -1
  167. package/dist/multistream/receiveSlot.js +58 -65
  168. package/dist/multistream/receiveSlot.js.map +1 -1
  169. package/dist/multistream/receiveSlotManager.js +74 -93
  170. package/dist/multistream/receiveSlotManager.js.map +1 -1
  171. package/dist/multistream/remoteMedia.js +55 -74
  172. package/dist/multistream/remoteMedia.js.map +1 -1
  173. package/dist/multistream/remoteMediaGroup.js +6 -40
  174. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  175. package/dist/multistream/remoteMediaManager.js +466 -442
  176. package/dist/multistream/remoteMediaManager.js.map +1 -1
  177. package/dist/networkQualityMonitor/index.js +32 -59
  178. package/dist/networkQualityMonitor/index.js.map +1 -1
  179. package/dist/personal-meeting-room/index.js +10 -45
  180. package/dist/personal-meeting-room/index.js.map +1 -1
  181. package/dist/personal-meeting-room/request.js +2 -33
  182. package/dist/personal-meeting-room/request.js.map +1 -1
  183. package/dist/personal-meeting-room/util.js +0 -13
  184. package/dist/personal-meeting-room/util.js.map +1 -1
  185. package/dist/reachability/index.js +190 -199
  186. package/dist/reachability/index.js.map +1 -1
  187. package/dist/reachability/request.js +14 -23
  188. package/dist/reachability/request.js.map +1 -1
  189. package/dist/reactions/constants.js +13 -0
  190. package/dist/reactions/constants.js.map +1 -0
  191. package/dist/reactions/reactions.js +109 -0
  192. package/dist/reactions/reactions.js.map +1 -0
  193. package/dist/reactions/reactions.type.js +36 -0
  194. package/dist/reactions/reactions.type.js.map +1 -0
  195. package/dist/reconnection-manager/index.js +326 -465
  196. package/dist/reconnection-manager/index.js.map +1 -1
  197. package/dist/recording-controller/enums.js +17 -0
  198. package/dist/recording-controller/enums.js.map +1 -0
  199. package/dist/recording-controller/index.js +343 -0
  200. package/dist/recording-controller/index.js.map +1 -0
  201. package/dist/recording-controller/util.js +63 -0
  202. package/dist/recording-controller/util.js.map +1 -0
  203. package/dist/roap/index.js +38 -67
  204. package/dist/roap/index.js.map +1 -1
  205. package/dist/roap/request.js +143 -134
  206. package/dist/roap/request.js.map +1 -1
  207. package/dist/roap/turnDiscovery.js +149 -101
  208. package/dist/roap/turnDiscovery.js.map +1 -1
  209. package/dist/statsAnalyzer/global.js +1 -95
  210. package/dist/statsAnalyzer/global.js.map +1 -1
  211. package/dist/statsAnalyzer/index.js +369 -461
  212. package/dist/statsAnalyzer/index.js.map +1 -1
  213. package/dist/statsAnalyzer/mqaUtil.js +144 -94
  214. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  215. package/dist/transcription/index.js +13 -45
  216. package/dist/transcription/index.js.map +1 -1
  217. package/dist/types/annotation/annotation.types.d.ts +33 -0
  218. package/dist/types/annotation/constants.d.ts +31 -0
  219. package/dist/types/annotation/index.d.ts +117 -0
  220. package/dist/types/breakouts/breakout.d.ts +8 -0
  221. package/dist/types/breakouts/collection.d.ts +5 -0
  222. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  223. package/dist/types/breakouts/index.d.ts +5 -0
  224. package/dist/types/breakouts/request.d.ts +22 -0
  225. package/dist/types/breakouts/utils.d.ts +15 -0
  226. package/dist/types/common/browser-detection.d.ts +9 -0
  227. package/dist/types/common/collection.d.ts +48 -0
  228. package/dist/types/common/config.d.ts +2 -0
  229. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  230. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  231. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  232. package/dist/types/common/errors/media.d.ts +15 -0
  233. package/dist/types/common/errors/parameter.d.ts +15 -0
  234. package/dist/types/common/errors/password-error.d.ts +15 -0
  235. package/dist/types/common/errors/permission.d.ts +14 -0
  236. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  237. package/dist/types/common/errors/reconnection.d.ts +15 -0
  238. package/dist/types/common/errors/stats.d.ts +15 -0
  239. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  240. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  241. package/dist/types/common/events/events-scope.d.ts +17 -0
  242. package/dist/types/common/events/events.d.ts +12 -0
  243. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  244. package/dist/types/common/events/util.d.ts +2 -0
  245. package/dist/types/common/logs/logger-config.d.ts +2 -0
  246. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  247. package/dist/types/common/logs/request.d.ts +34 -0
  248. package/dist/types/common/queue.d.ts +32 -0
  249. package/dist/types/config.d.ts +78 -0
  250. package/dist/types/constants.d.ts +965 -0
  251. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  252. package/dist/types/controls-options-manager/enums.d.ts +13 -0
  253. package/dist/types/controls-options-manager/index.d.ts +136 -0
  254. package/dist/types/controls-options-manager/types.d.ts +37 -0
  255. package/dist/types/controls-options-manager/util.d.ts +1 -0
  256. package/dist/types/index.d.ts +7 -0
  257. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  258. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  259. package/dist/types/locus-info/fullState.d.ts +2 -0
  260. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  261. package/dist/types/locus-info/index.d.ts +314 -0
  262. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  263. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  264. package/dist/types/locus-info/parser.d.ts +212 -0
  265. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  266. package/dist/types/media/index.d.ts +34 -0
  267. package/dist/types/media/properties.d.ts +108 -0
  268. package/dist/types/media/util.d.ts +2 -0
  269. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  270. package/dist/types/meeting/in-meeting-actions.d.ts +105 -0
  271. package/dist/types/meeting/index.d.ts +1727 -0
  272. package/dist/types/meeting/muteState.d.ts +185 -0
  273. package/dist/types/meeting/request.d.ts +275 -0
  274. package/dist/types/meeting/request.type.d.ts +11 -0
  275. package/dist/types/meeting/state.d.ts +9 -0
  276. package/dist/types/meeting/util.d.ts +2 -0
  277. package/dist/types/meeting-info/collection.d.ts +20 -0
  278. package/dist/types/meeting-info/index.d.ts +57 -0
  279. package/dist/types/meeting-info/meeting-info-v2.d.ts +111 -0
  280. package/dist/types/meeting-info/request.d.ts +22 -0
  281. package/dist/types/meeting-info/util.d.ts +2 -0
  282. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  283. package/dist/types/meetings/collection.d.ts +31 -0
  284. package/dist/types/meetings/index.d.ts +316 -0
  285. package/dist/types/meetings/request.d.ts +27 -0
  286. package/dist/types/meetings/util.d.ts +18 -0
  287. package/dist/types/member/index.d.ts +156 -0
  288. package/dist/types/member/types.d.ts +21 -0
  289. package/dist/types/member/util.d.ts +2 -0
  290. package/dist/types/members/collection.d.ts +29 -0
  291. package/dist/types/members/index.d.ts +353 -0
  292. package/dist/types/members/request.d.ts +69 -0
  293. package/dist/types/members/types.d.ts +24 -0
  294. package/dist/types/members/util.d.ts +2 -0
  295. package/dist/types/metrics/config.d.ts +171 -0
  296. package/dist/types/metrics/constants.d.ts +54 -0
  297. package/dist/types/metrics/index.d.ts +152 -0
  298. package/dist/types/multistream/mediaRequestManager.d.ts +101 -0
  299. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  300. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  301. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  302. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  303. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  304. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  305. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  306. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  307. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  308. package/dist/types/reachability/index.d.ts +152 -0
  309. package/dist/types/reachability/request.d.ts +37 -0
  310. package/dist/types/reactions/constants.d.ts +3 -0
  311. package/dist/types/reactions/reactions.d.ts +4 -0
  312. package/dist/types/reactions/reactions.type.d.ts +52 -0
  313. package/dist/types/reconnection-manager/index.d.ts +126 -0
  314. package/dist/types/recording-controller/enums.d.ts +7 -0
  315. package/dist/types/recording-controller/index.d.ts +193 -0
  316. package/dist/types/recording-controller/util.d.ts +13 -0
  317. package/dist/types/roap/index.d.ts +77 -0
  318. package/dist/types/roap/request.d.ts +38 -0
  319. package/dist/types/roap/turnDiscovery.d.ts +88 -0
  320. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  321. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  322. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  323. package/dist/types/transcription/index.d.ts +64 -0
  324. package/internal-README.md +7 -6
  325. package/package.json +28 -20
  326. package/src/annotation/annotation.types.ts +37 -0
  327. package/src/annotation/constants.ts +36 -0
  328. package/src/annotation/index.ts +314 -0
  329. package/src/breakouts/README.md +219 -0
  330. package/src/breakouts/breakout.ts +154 -0
  331. package/src/breakouts/collection.ts +19 -0
  332. package/src/breakouts/edit-lock-error.ts +25 -0
  333. package/src/breakouts/index.ts +776 -0
  334. package/src/breakouts/request.ts +55 -0
  335. package/src/breakouts/utils.ts +57 -0
  336. package/src/common/browser-detection.ts +9 -6
  337. package/src/common/collection.ts +3 -1
  338. package/src/common/errors/captcha-error.ts +6 -6
  339. package/src/common/errors/intent-to-join.ts +6 -6
  340. package/src/common/errors/join-meeting.ts +12 -8
  341. package/src/common/errors/media.ts +6 -6
  342. package/src/common/errors/parameter.ts +9 -6
  343. package/src/common/errors/password-error.ts +6 -6
  344. package/src/common/errors/permission.ts +5 -5
  345. package/src/common/errors/reconnection.ts +6 -6
  346. package/src/common/errors/stats.ts +6 -6
  347. package/src/common/errors/webex-errors.ts +7 -5
  348. package/src/common/errors/webex-meetings-error.ts +1 -1
  349. package/src/common/events/events-scope.ts +5 -1
  350. package/src/common/events/events.ts +5 -1
  351. package/src/common/events/trigger-proxy.ts +8 -3
  352. package/src/common/events/util.ts +1 -2
  353. package/src/common/logs/logger-proxy.ts +21 -10
  354. package/src/common/logs/request.ts +11 -8
  355. package/src/config.ts +17 -12
  356. package/src/constants.ts +116 -6
  357. package/src/controls-options-manager/constants.ts +5 -0
  358. package/src/controls-options-manager/enums.ts +16 -0
  359. package/src/controls-options-manager/index.ts +275 -0
  360. package/src/controls-options-manager/types.ts +49 -0
  361. package/src/controls-options-manager/util.ts +229 -0
  362. package/src/index.ts +33 -0
  363. package/src/locus-info/controlsUtils.ts +91 -24
  364. package/src/locus-info/fullState.ts +15 -11
  365. package/src/locus-info/hostUtils.ts +4 -3
  366. package/src/locus-info/index.ts +265 -51
  367. package/src/locus-info/infoUtils.ts +16 -4
  368. package/src/locus-info/mediaSharesUtils.ts +4 -4
  369. package/src/locus-info/parser.ts +46 -68
  370. package/src/locus-info/selfUtils.ts +178 -57
  371. package/src/media/index.ts +142 -172
  372. package/src/media/properties.ts +43 -36
  373. package/src/media/util.ts +1 -1
  374. package/src/mediaQualityMetrics/config.ts +380 -378
  375. package/src/meeting/in-meeting-actions.ts +75 -3
  376. package/src/meeting/index.ts +2504 -1522
  377. package/src/meeting/muteState.ts +271 -68
  378. package/src/meeting/request.ts +251 -132
  379. package/src/meeting/request.type.ts +13 -0
  380. package/src/meeting/state.ts +45 -30
  381. package/src/meeting/util.ts +132 -111
  382. package/src/meeting-info/collection.ts +2 -1
  383. package/src/meeting-info/index.ts +32 -30
  384. package/src/meeting-info/meeting-info-v2.ts +178 -109
  385. package/src/meeting-info/request.ts +9 -3
  386. package/src/meeting-info/util.ts +54 -46
  387. package/src/meeting-info/utilv2.ts +69 -57
  388. package/src/meetings/collection.ts +21 -1
  389. package/src/meetings/index.ts +687 -467
  390. package/src/meetings/request.ts +29 -25
  391. package/src/meetings/util.ts +108 -33
  392. package/src/member/index.ts +86 -49
  393. package/src/member/types.ts +24 -0
  394. package/src/member/util.ts +92 -13
  395. package/src/members/collection.ts +8 -1
  396. package/src/members/index.ts +281 -129
  397. package/src/members/request.ts +87 -14
  398. package/src/members/types.ts +28 -0
  399. package/src/members/util.ts +140 -49
  400. package/src/metrics/config.ts +255 -90
  401. package/src/metrics/constants.ts +1 -6
  402. package/src/metrics/index.ts +91 -94
  403. package/src/multistream/mediaRequestManager.ts +201 -43
  404. package/src/multistream/receiveSlot.ts +69 -26
  405. package/src/multistream/receiveSlotManager.ts +62 -38
  406. package/src/multistream/remoteMedia.ts +30 -4
  407. package/src/multistream/remoteMediaGroup.ts +4 -3
  408. package/src/multistream/remoteMediaManager.ts +230 -66
  409. package/src/networkQualityMonitor/index.ts +24 -27
  410. package/src/personal-meeting-room/index.ts +12 -16
  411. package/src/personal-meeting-room/request.ts +10 -3
  412. package/src/personal-meeting-room/util.ts +3 -3
  413. package/src/reachability/index.ts +131 -79
  414. package/src/reachability/request.ts +43 -34
  415. package/src/reactions/constants.ts +4 -0
  416. package/src/reactions/reactions.ts +104 -0
  417. package/src/reactions/reactions.type.ts +62 -0
  418. package/src/reconnection-manager/index.ts +193 -111
  419. package/src/recording-controller/enums.ts +8 -0
  420. package/src/recording-controller/index.ts +315 -0
  421. package/src/recording-controller/util.ts +58 -0
  422. package/src/roap/index.ts +63 -51
  423. package/src/roap/request.ts +86 -53
  424. package/src/roap/turnDiscovery.ts +105 -46
  425. package/src/statsAnalyzer/global.ts +8 -104
  426. package/src/statsAnalyzer/index.ts +624 -376
  427. package/src/statsAnalyzer/mqaUtil.ts +203 -90
  428. package/src/transcription/index.ts +34 -32
  429. package/test/integration/spec/converged-space-meetings.js +177 -0
  430. package/test/integration/spec/journey.js +666 -464
  431. package/test/integration/spec/space-meeting.js +320 -204
  432. package/test/integration/spec/transcription.js +7 -8
  433. package/test/unit/spec/annotation/index.ts +420 -0
  434. package/test/unit/spec/breakouts/breakout.ts +178 -0
  435. package/test/unit/spec/breakouts/collection.ts +15 -0
  436. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  437. package/test/unit/spec/breakouts/index.ts +1416 -0
  438. package/test/unit/spec/breakouts/request.ts +104 -0
  439. package/test/unit/spec/breakouts/utils.js +72 -0
  440. package/test/unit/spec/common/browser-detection.js +9 -28
  441. package/test/unit/spec/controls-options-manager/index.js +280 -0
  442. package/test/unit/spec/controls-options-manager/util.js +403 -0
  443. package/test/unit/spec/fixture/locus.js +92 -90
  444. package/test/unit/spec/locus-info/controlsUtils.js +177 -32
  445. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  446. package/test/unit/spec/locus-info/index.js +484 -3
  447. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  448. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  449. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  450. package/test/unit/spec/locus-info/parser.js +3 -9
  451. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  452. package/test/unit/spec/locus-info/selfUtils.js +191 -12
  453. package/test/unit/spec/media/index.ts +104 -8
  454. package/test/unit/spec/media/properties.ts +9 -9
  455. package/test/unit/spec/meeting/in-meeting-actions.ts +34 -3
  456. package/test/unit/spec/meeting/index.js +2672 -828
  457. package/test/unit/spec/meeting/muteState.js +368 -70
  458. package/test/unit/spec/meeting/request.js +217 -43
  459. package/test/unit/spec/meeting/utils.js +167 -163
  460. package/test/unit/spec/meeting-info/meetinginfov2.js +241 -74
  461. package/test/unit/spec/meeting-info/request.js +7 -9
  462. package/test/unit/spec/meeting-info/util.js +11 -12
  463. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  464. package/test/unit/spec/meetings/collection.js +15 -1
  465. package/test/unit/spec/meetings/index.js +701 -273
  466. package/test/unit/spec/meetings/utils.js +105 -14
  467. package/test/unit/spec/member/index.js +24 -1
  468. package/test/unit/spec/member/util.js +359 -32
  469. package/test/unit/spec/members/index.js +402 -54
  470. package/test/unit/spec/members/request.js +76 -20
  471. package/test/unit/spec/members/utils.js +191 -4
  472. package/test/unit/spec/metrics/index.js +46 -20
  473. package/test/unit/spec/multistream/mediaRequestManager.ts +650 -105
  474. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  475. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  476. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  477. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  478. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  479. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  480. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  481. package/test/unit/spec/reachability/index.ts +176 -27
  482. package/test/unit/spec/reachability/request.js +66 -0
  483. package/test/unit/spec/reconnection-manager/index.js +62 -31
  484. package/test/unit/spec/recording-controller/index.js +231 -0
  485. package/test/unit/spec/recording-controller/util.js +102 -0
  486. package/test/unit/spec/roap/index.ts +21 -16
  487. package/test/unit/spec/roap/request.ts +217 -0
  488. package/test/unit/spec/roap/turnDiscovery.ts +93 -49
  489. package/test/unit/spec/stats-analyzer/index.js +116 -60
  490. package/test/utils/cmr.js +44 -42
  491. package/test/utils/constants.js +9 -0
  492. package/test/utils/integrationTestUtils.js +64 -0
  493. package/test/utils/testUtils.js +63 -99
  494. package/test/utils/webex-config.js +22 -18
  495. package/test/utils/webex-test-users.js +57 -50
  496. package/tsconfig.json +6 -0
  497. package/dist/media/internal-media-core-wrapper.js +0 -22
  498. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  499. package/dist/meeting/effectsState.js +0 -334
  500. package/dist/meeting/effectsState.js.map +0 -1
  501. package/dist/multistream/multistreamMedia.js +0 -116
  502. package/dist/multistream/multistreamMedia.js.map +0 -1
  503. package/src/index.js +0 -15
  504. package/src/media/internal-media-core-wrapper.ts +0 -9
  505. package/src/meeting/effectsState.ts +0 -211
  506. package/src/multistream/multistreamMedia.ts +0 -92
  507. 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,
@@ -88,11 +88,16 @@ export default {
88
88
  enableRtx: true,
89
89
  receiveTranscription: false,
90
90
  enableExtmap: false,
91
+ enableAutomaticLLM: false,
92
+ installedOrgID: undefined,
91
93
  experimental: {
92
94
  enableMediaNegotiatedEvent: false,
93
95
  enableUnifiedMeetings: false,
94
96
  enableAdhocMeetings: false,
95
- enableTurnDiscovery: false,
96
- }
97
- }
97
+ enableTurnDiscovery: true,
98
+ },
99
+ degradationPreferences: {
100
+ maxMacroblocksLimit: 8192,
101
+ },
102
+ },
98
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,13 @@ 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',
307
318
  MEMBERS_UPDATE: 'members:update',
319
+ MEMBERS_CLEAR: 'members:clear',
308
320
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
309
321
  MEMBERS_HOST_UPDATE: 'members:host:update',
310
322
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -331,7 +343,7 @@ export const EVENT_TRIGGERS = {
331
343
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
332
344
  REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
333
345
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
334
- REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScrenShareAudio:created',
346
+ REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
335
347
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
336
348
  };
337
349
 
@@ -373,6 +385,7 @@ export const CALL_REMOVED_REASON = {
373
385
  export const SHARE_STOPPED_REASON = {
374
386
  SELF_STOPPED: 'SELF_STOPPED',
375
387
  MEETING_REJOIN: 'MEETING_REJOIN',
388
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
376
389
  };
377
390
 
378
391
  export const EVENTS = {
@@ -448,6 +461,11 @@ export const ERROR_DICTIONARY = {
448
461
  MESSAGE: 'Captcha is required.',
449
462
  CODE: 8,
450
463
  },
464
+ BREAKOUT_EDIT: {
465
+ NAME: 'BreakoutEditLockedError',
466
+ MESSAGE: 'Edit lock token mismatch',
467
+ CODE: 9,
468
+ },
451
469
  };
452
470
 
453
471
  export const FLOOR_ACTION = {
@@ -469,6 +487,7 @@ export const HTTP_VERBS = {
469
487
  POST: 'POST',
470
488
  GET: 'GET',
471
489
  PATCH: 'PATCH',
490
+ DELETE: 'DELETE',
472
491
  };
473
492
 
474
493
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -514,15 +533,65 @@ export const LOCUS = {
514
533
  SYNCDEBUG: 'sync_debug',
515
534
  };
516
535
 
536
+ export const ANNOTATION = {
537
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
538
+ };
539
+ export const BREAKOUTS = {
540
+ STATUS: {
541
+ CLOSING: 'CLOSING',
542
+ CLOSED: 'CLOSED',
543
+ PENDING: 'PENDING',
544
+ OPEN: 'OPEN',
545
+ },
546
+ EVENTS: {
547
+ BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
548
+ MESSAGE: 'MESSAGE',
549
+ MEMBERS_UPDATE: 'MEMBERS_UPDATE',
550
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
551
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
552
+ },
553
+ SESSION_TYPES: {
554
+ MAIN: 'MAIN',
555
+ BREAKOUT: 'BREAKOUT',
556
+ },
557
+ SESSION_STATES: {
558
+ ACTIVE: 'active',
559
+ ASSIGNED: 'assigned',
560
+ ALLOWED: 'allowed',
561
+ ASSIGNED_CURRENT: 'assignedCurrent',
562
+ REQUESTED: 'requested',
563
+ },
564
+ BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
565
+ ACTION: {
566
+ START: 'START',
567
+ CLOSE: 'CLOSE',
568
+ DELETE: 'DELETE',
569
+ },
570
+ ERROR_CODE: {
571
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
572
+ EDIT_NOT_AUTHORIZED: 201403007,
573
+ },
574
+ DEFAULT_DURATION: 60000,
575
+ EDIT_LOCK_STATUS: {
576
+ LOCKED: 'LOCKED',
577
+ NOT_LOCKED: 'NOT_LOCKED',
578
+ UNKNOWN: 'UNKNOWN',
579
+ },
580
+ DEFAULT_TTL: 30,
581
+ };
582
+
517
583
  export const LOCUSINFO = {
518
584
  EVENTS: {
519
585
  CONTROLS_MEETING_LAYOUT_UPDATED: 'CONTROLS_MEETING_LAYOUT_UPDATED',
520
586
  CONTROLS_RECORDING_UPDATED: 'CONTROLS_RECORDING_UPDATED',
521
587
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
588
+ CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
522
589
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
523
590
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
591
+ CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
524
592
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
525
593
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
594
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
526
595
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
527
596
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
528
597
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
@@ -540,6 +609,10 @@ export const LOCUSINFO = {
540
609
  EMBEDDED_APPS_UPDATED: 'EMBEDDED_APPS_UPDATED',
541
610
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
542
611
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
612
+ SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
613
+ MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
614
+ LINKS_SERVICES: 'LINKS_SERVICES',
615
+ SELF_MODERATOR_OR_COHOST_UPGRADE: 'SELF_MODERATOR_OR_COHOST_UPGRADE',
543
616
  },
544
617
  };
545
618
 
@@ -552,6 +625,9 @@ export const LOCUSEVENT = {
552
625
  // delta events
553
626
  DIFFERENCE: 'locus.difference',
554
627
 
628
+ // Breakout sessions
629
+ BREAKOUT_ROSTER: 'breakout.roster',
630
+
555
631
  // screen sharing
556
632
  FLOOR_GRANTED: 'locus.floor_granted',
557
633
  FLOOR_RELEASED: 'locus.floor_released',
@@ -722,13 +798,42 @@ export const DISPLAY_HINTS = {
722
798
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
723
799
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
724
800
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
801
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
725
802
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
726
803
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
804
+ ENABLE_REACTIONS: 'ENABLE_REACTIONS',
805
+ DISABLE_REACTIONS: 'DISABLE_REACTIONS',
806
+ REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
807
+ REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
808
+ SHARE_CONTROL: 'SHARE_CONTROL',
809
+ ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
810
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
811
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
812
+ DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
813
+ ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
814
+ DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
815
+ MUTE_ALL: 'MUTE_ALL',
816
+ UNMUTE_ALL: 'UNMUTE_ALL',
817
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
818
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
819
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
820
+
821
+ // breakout session
822
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
823
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
824
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
825
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
826
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
827
+
828
+ // participants list
829
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
830
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
727
831
  };
728
832
 
729
833
  export const SELF_ROLES = {
730
834
  COHOST: 'COHOST',
731
835
  MODERATOR: 'MODERATOR',
836
+ ATTENDEE: 'ATTENDEE',
732
837
  };
733
838
 
734
839
  export const MEETING_STATE = {
@@ -813,7 +918,9 @@ export const RESOURCE = {
813
918
  };
814
919
 
815
920
  export const REACHABILITY = {
816
- localStorage: 'reachability.result',
921
+ localStorageResult: 'reachability.result',
922
+ localStorageJoinCookie: 'reachability.joinCookie',
923
+ namespace: 'Reachability',
817
924
  };
818
925
 
819
926
  export const ROAP = {
@@ -848,9 +955,6 @@ export const NETWORK_TYPE = {
848
955
  };
849
956
 
850
957
  export const STATS = {
851
- AUDIO_CORRELATE: 'audio',
852
- VIDEO_CORRELATE: 'video',
853
- SHARE_CORRELATE: 'share',
854
958
  SEND_DIRECTION: 'send',
855
959
  RECEIVE_DIRECTION: 'recv',
856
960
  REMOTE: 'remote',
@@ -1040,6 +1144,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1040
1144
  NONE: 'NONE', // meeting info was retrieved succesfully
1041
1145
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1042
1146
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1147
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1043
1148
  OTHER: 'OTHER', // any other error (network, etc)
1044
1149
  };
1045
1150
 
@@ -1054,3 +1159,8 @@ export const EMBEDDED_APP_TYPES = {
1054
1159
  SLIDO: 'SLIDO',
1055
1160
  OTHER: 'OTHER',
1056
1161
  };
1162
+
1163
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1164
+ supportHostKey: true,
1165
+ supportCountryList: true,
1166
+ };
@@ -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,16 @@
1
+ enum Setting {
2
+ disallowUnmute = 'DisallowUnmute',
3
+ muteOnEntry = 'MuteOnEntry',
4
+ muted = 'Muted',
5
+ }
6
+
7
+ enum Control {
8
+ audio = 'audio',
9
+ reactions = 'reactions',
10
+ shareControl = 'shareControl',
11
+ viewTheParticipantList = 'viewTheParticipantList',
12
+ }
13
+
14
+ export {Control, Setting};
15
+
16
+ export default Setting;
@@ -0,0 +1,275 @@
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
+ protected update(...controls: Array<ControlConfig>) {
144
+ const payload = controls.reduce((output, 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
+ ...output,
159
+ [control.scope]: control.properties,
160
+ };
161
+ }, {});
162
+
163
+ // @ts-ignore
164
+ return this.request.request({
165
+ uri: `${this.locusUrl}/${CONTROLS}`,
166
+ body: payload,
167
+ method: HTTP_VERBS.PATCH,
168
+ });
169
+ }
170
+
171
+ /**
172
+ * @param {Setting} setting
173
+ * @private
174
+ * @memberof ControlsOptionsManager
175
+ * @returns {Promise}
176
+ */
177
+ private setControls(setting: {[key in Setting]?: boolean}): Promise<any> {
178
+ LoggerProxy.logger.log(
179
+ `ControlsOptionsManager:index#setControls --> ${JSON.stringify(setting)}`
180
+ );
181
+
182
+ const body: Record<string, any> = {};
183
+ let error: PermissionError;
184
+
185
+ let shouldSkipCheckToMergeBody = false;
186
+
187
+ Object.entries(setting).forEach(([key, value]) => {
188
+ if (
189
+ !shouldSkipCheckToMergeBody &&
190
+ !Util?.[`${value ? CAN_SET : CAN_UNSET}${key}`](this.displayHints)
191
+ ) {
192
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
193
+ }
194
+
195
+ if (error) {
196
+ return;
197
+ }
198
+
199
+ switch (key) {
200
+ case Setting.muted:
201
+ shouldSkipCheckToMergeBody = true;
202
+ body.audio = body.audio
203
+ ? {...body.audio, [camelCase(key)]: value}
204
+ : {[camelCase(key)]: value};
205
+ break;
206
+
207
+ case Setting.disallowUnmute:
208
+ case Setting.muteOnEntry:
209
+ if (Object.keys(setting).includes(Setting.muted)) {
210
+ body.audio = body.audio
211
+ ? {...body.audio, [camelCase(key)]: value}
212
+ : {[camelCase(key)]: value};
213
+ body.audio[camelCase(key)] = value;
214
+ } else {
215
+ body[camelCase(key)] = {[ENABLED]: value};
216
+ }
217
+ break;
218
+
219
+ default:
220
+ error = new PermissionError(`${key} [${value}] not allowed, due to moderator property.`);
221
+ }
222
+ });
223
+
224
+ if (error) {
225
+ return Promise.reject(error);
226
+ }
227
+
228
+ // @ts-ignore
229
+ return this.request.request({
230
+ uri: `${this.locusUrl}/${CONTROLS}`,
231
+ body,
232
+ method: HTTP_VERBS.PATCH,
233
+ });
234
+ }
235
+
236
+ /**
237
+ * @public
238
+ * @param {boolean} enabled
239
+ * @memberof ControlsOptionsManager
240
+ * @returns {Promise}
241
+ */
242
+ public setMuteOnEntry(enabled: boolean): Promise<any> {
243
+ return this.setControls({[Setting.muteOnEntry]: enabled});
244
+ }
245
+
246
+ /**
247
+ * @public
248
+ * @param {boolean} enabled
249
+ * @memberof ControlsOptionsManager
250
+ * @returns {Promise}
251
+ */
252
+ public setDisallowUnmute(enabled: boolean): Promise<any> {
253
+ return this.setControls({[Setting.disallowUnmute]: enabled});
254
+ }
255
+
256
+ /**
257
+ * @public
258
+ * @param {boolean} mutedEnabled
259
+ * @param {boolean} disallowUnmuteEnabled
260
+ * @param {boolean} muteOnEntryEnabled
261
+ * @memberof ControlsOptionsManager
262
+ * @returns {Promise}
263
+ */
264
+ public setMuteAll(
265
+ mutedEnabled: boolean,
266
+ disallowUnmuteEnabled: boolean,
267
+ muteOnEntryEnabled: boolean
268
+ ): Promise<any> {
269
+ return this.setControls({
270
+ [Setting.muted]: mutedEnabled,
271
+ [Setting.disallowUnmute]: disallowUnmuteEnabled,
272
+ [Setting.muteOnEntry]: muteOnEntryEnabled,
273
+ });
274
+ }
275
+ }
@@ -0,0 +1,49 @@
1
+ import {Control} from './enums';
2
+
3
+ export interface ControlProperties {
4
+ /**
5
+ * A list of additional properties that apply to various specific settings.
6
+ *
7
+ * @remarks
8
+ * The values stored here, per the service, are fully ambiguous, an can vary
9
+ * depending on which control scope is being configured.
10
+ */
11
+ [key: string]: boolean;
12
+ }
13
+
14
+ export interface AudioProperties {
15
+ muted?: boolean;
16
+ disallowUnmute?: boolean;
17
+ muteOnEntry?: boolean;
18
+ }
19
+
20
+ export interface ReactionsProperties {
21
+ enabled?: boolean;
22
+ showDisplayNameWithReactions?: boolean;
23
+ }
24
+
25
+ export interface ShareControlProperties {
26
+ control?: 'ANYONE' | 'MODERATOR_PRESENTER';
27
+ }
28
+
29
+ export interface ViewTheParticipantListProperties {
30
+ enabled?: boolean;
31
+ }
32
+
33
+ export type Properties =
34
+ | AudioProperties
35
+ | ReactionsProperties
36
+ | ShareControlProperties
37
+ | ViewTheParticipantListProperties;
38
+
39
+ export interface ControlConfig<Props = Properties> {
40
+ /**
41
+ * The scope of the control within this object.
42
+ */
43
+ scope: Control;
44
+
45
+ /**
46
+ * The properties to assign to this control.
47
+ */
48
+ properties: Props;
49
+ }