@webex/plugin-meetings 3.0.0-beta.39 → 3.0.0-beta.391

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 (393) hide show
  1. package/README.md +58 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +49 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +342 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +94 -15
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/events.js +45 -0
  11. package/dist/breakouts/events.js.map +1 -0
  12. package/dist/breakouts/index.js +671 -81
  13. package/dist/breakouts/index.js.map +1 -1
  14. package/dist/breakouts/utils.js +45 -1
  15. package/dist/breakouts/utils.js.map +1 -1
  16. package/dist/common/errors/no-meeting-info.js +51 -0
  17. package/dist/common/errors/no-meeting-info.js.map +1 -0
  18. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  19. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  20. package/dist/common/errors/webex-errors.js +48 -7
  21. package/dist/common/errors/webex-errors.js.map +1 -1
  22. package/dist/common/logs/logger-proxy.js +1 -1
  23. package/dist/common/logs/logger-proxy.js.map +1 -1
  24. package/dist/common/logs/request.js +5 -1
  25. package/dist/common/logs/request.js.map +1 -1
  26. package/dist/common/queue.js +24 -9
  27. package/dist/common/queue.js.map +1 -1
  28. package/dist/config.js +5 -10
  29. package/dist/config.js.map +1 -1
  30. package/dist/constants.js +242 -33
  31. package/dist/constants.js.map +1 -1
  32. package/dist/controls-options-manager/enums.js +14 -2
  33. package/dist/controls-options-manager/enums.js.map +1 -1
  34. package/dist/controls-options-manager/index.js +109 -15
  35. package/dist/controls-options-manager/index.js.map +1 -1
  36. package/dist/controls-options-manager/types.js +7 -0
  37. package/dist/controls-options-manager/types.js.map +1 -0
  38. package/dist/controls-options-manager/util.js +309 -18
  39. package/dist/controls-options-manager/util.js.map +1 -1
  40. package/dist/index.js +110 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/interceptors/index.js +15 -0
  43. package/dist/interceptors/index.js.map +1 -0
  44. package/dist/interceptors/locusRetry.js +93 -0
  45. package/dist/interceptors/locusRetry.js.map +1 -0
  46. package/dist/interpretation/collection.js +23 -0
  47. package/dist/interpretation/collection.js.map +1 -0
  48. package/dist/interpretation/index.js +380 -0
  49. package/dist/interpretation/index.js.map +1 -0
  50. package/dist/interpretation/siLanguage.js +25 -0
  51. package/dist/interpretation/siLanguage.js.map +1 -0
  52. package/dist/locus-info/controlsUtils.js +91 -2
  53. package/dist/locus-info/controlsUtils.js.map +1 -1
  54. package/dist/locus-info/index.js +386 -62
  55. package/dist/locus-info/index.js.map +1 -1
  56. package/dist/locus-info/infoUtils.js +7 -1
  57. package/dist/locus-info/infoUtils.js.map +1 -1
  58. package/dist/locus-info/mediaSharesUtils.js +71 -1
  59. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  60. package/dist/locus-info/parser.js +249 -72
  61. package/dist/locus-info/parser.js.map +1 -1
  62. package/dist/locus-info/selfUtils.js +89 -14
  63. package/dist/locus-info/selfUtils.js.map +1 -1
  64. package/dist/media/index.js +65 -102
  65. package/dist/media/index.js.map +1 -1
  66. package/dist/media/properties.js +73 -124
  67. package/dist/media/properties.js.map +1 -1
  68. package/dist/mediaQualityMetrics/config.js +135 -330
  69. package/dist/mediaQualityMetrics/config.js.map +1 -1
  70. package/dist/meeting/in-meeting-actions.js +86 -2
  71. package/dist/meeting/in-meeting-actions.js.map +1 -1
  72. package/dist/meeting/index.js +4075 -2827
  73. package/dist/meeting/index.js.map +1 -1
  74. package/dist/meeting/locusMediaRequest.js +292 -0
  75. package/dist/meeting/locusMediaRequest.js.map +1 -0
  76. package/dist/meeting/muteState.js +224 -136
  77. package/dist/meeting/muteState.js.map +1 -1
  78. package/dist/meeting/request.js +177 -152
  79. package/dist/meeting/request.js.map +1 -1
  80. package/dist/meeting/util.js +672 -417
  81. package/dist/meeting/util.js.map +1 -1
  82. package/dist/meeting-info/index.js +73 -7
  83. package/dist/meeting-info/index.js.map +1 -1
  84. package/dist/meeting-info/meeting-info-v2.js +192 -51
  85. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  86. package/dist/meeting-info/util.js +1 -1
  87. package/dist/meeting-info/util.js.map +1 -1
  88. package/dist/meeting-info/utilv2.js +36 -36
  89. package/dist/meeting-info/utilv2.js.map +1 -1
  90. package/dist/meetings/collection.js +39 -0
  91. package/dist/meetings/collection.js.map +1 -1
  92. package/dist/meetings/index.js +484 -119
  93. package/dist/meetings/index.js.map +1 -1
  94. package/dist/meetings/meetings.types.js +7 -0
  95. package/dist/meetings/meetings.types.js.map +1 -0
  96. package/dist/meetings/request.js +2 -0
  97. package/dist/meetings/request.js.map +1 -1
  98. package/dist/meetings/util.js +73 -7
  99. package/dist/meetings/util.js.map +1 -1
  100. package/dist/member/index.js +58 -0
  101. package/dist/member/index.js.map +1 -1
  102. package/dist/member/types.js +25 -0
  103. package/dist/member/types.js.map +1 -0
  104. package/dist/member/util.js +132 -25
  105. package/dist/member/util.js.map +1 -1
  106. package/dist/members/collection.js +10 -0
  107. package/dist/members/collection.js.map +1 -1
  108. package/dist/members/index.js +102 -6
  109. package/dist/members/index.js.map +1 -1
  110. package/dist/members/request.js +106 -38
  111. package/dist/members/request.js.map +1 -1
  112. package/dist/members/types.js +15 -0
  113. package/dist/members/types.js.map +1 -0
  114. package/dist/members/util.js +326 -232
  115. package/dist/members/util.js.map +1 -1
  116. package/dist/metrics/constants.js +18 -1
  117. package/dist/metrics/constants.js.map +1 -1
  118. package/dist/metrics/index.js +1 -446
  119. package/dist/metrics/index.js.map +1 -1
  120. package/dist/multistream/mediaRequestManager.js +223 -32
  121. package/dist/multistream/mediaRequestManager.js.map +1 -1
  122. package/dist/multistream/receiveSlot.js +10 -0
  123. package/dist/multistream/receiveSlot.js.map +1 -1
  124. package/dist/multistream/receiveSlotManager.js +39 -36
  125. package/dist/multistream/receiveSlotManager.js.map +1 -1
  126. package/dist/multistream/remoteMedia.js +3 -1
  127. package/dist/multistream/remoteMedia.js.map +1 -1
  128. package/dist/multistream/remoteMediaGroup.js +76 -5
  129. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  130. package/dist/multistream/remoteMediaManager.js +366 -104
  131. package/dist/multistream/remoteMediaManager.js.map +1 -1
  132. package/dist/multistream/sendSlotManager.js +255 -0
  133. package/dist/multistream/sendSlotManager.js.map +1 -0
  134. package/dist/reachability/clusterReachability.js +356 -0
  135. package/dist/reachability/clusterReachability.js.map +1 -0
  136. package/dist/reachability/index.js +263 -390
  137. package/dist/reachability/index.js.map +1 -1
  138. package/dist/reachability/request.js +6 -4
  139. package/dist/reachability/request.js.map +1 -1
  140. package/dist/reachability/util.js +29 -0
  141. package/dist/reachability/util.js.map +1 -0
  142. package/dist/reconnection-manager/index.js +266 -202
  143. package/dist/reconnection-manager/index.js.map +1 -1
  144. package/dist/recording-controller/index.js +21 -2
  145. package/dist/recording-controller/index.js.map +1 -1
  146. package/dist/recording-controller/util.js +9 -8
  147. package/dist/recording-controller/util.js.map +1 -1
  148. package/dist/roap/index.js +51 -28
  149. package/dist/roap/index.js.map +1 -1
  150. package/dist/roap/request.js +48 -64
  151. package/dist/roap/request.js.map +1 -1
  152. package/dist/roap/turnDiscovery.js +220 -70
  153. package/dist/roap/turnDiscovery.js.map +1 -1
  154. package/dist/rtcMetrics/constants.js +12 -0
  155. package/dist/rtcMetrics/constants.js.map +1 -0
  156. package/dist/rtcMetrics/index.js +179 -0
  157. package/dist/rtcMetrics/index.js.map +1 -0
  158. package/dist/statsAnalyzer/index.js +357 -295
  159. package/dist/statsAnalyzer/index.js.map +1 -1
  160. package/dist/statsAnalyzer/mqaUtil.js +296 -156
  161. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  162. package/dist/types/annotation/annotation.types.d.ts +42 -0
  163. package/dist/types/annotation/constants.d.ts +31 -0
  164. package/dist/types/annotation/index.d.ts +117 -0
  165. package/dist/types/breakouts/events.d.ts +8 -0
  166. package/dist/types/breakouts/utils.d.ts +14 -0
  167. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  168. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  169. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  170. package/dist/types/common/logs/request.d.ts +2 -0
  171. package/dist/types/common/queue.d.ts +9 -7
  172. package/dist/types/config.d.ts +2 -7
  173. package/dist/types/constants.d.ts +203 -31
  174. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  175. package/dist/types/controls-options-manager/index.d.ts +17 -1
  176. package/dist/types/controls-options-manager/types.d.ts +43 -0
  177. package/dist/types/controls-options-manager/util.d.ts +1 -7
  178. package/dist/types/index.d.ts +6 -5
  179. package/dist/types/interceptors/index.d.ts +2 -0
  180. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  181. package/dist/types/interpretation/collection.d.ts +5 -0
  182. package/dist/types/interpretation/index.d.ts +5 -0
  183. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  184. package/dist/types/locus-info/index.d.ts +57 -4
  185. package/dist/types/locus-info/parser.d.ts +66 -6
  186. package/dist/types/media/index.d.ts +2 -0
  187. package/dist/types/media/properties.d.ts +34 -49
  188. package/dist/types/mediaQualityMetrics/config.d.ts +99 -223
  189. package/dist/types/meeting/in-meeting-actions.d.ts +86 -2
  190. package/dist/types/meeting/index.d.ts +567 -496
  191. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  192. package/dist/types/meeting/muteState.d.ts +93 -25
  193. package/dist/types/meeting/request.d.ts +64 -43
  194. package/dist/types/meeting/util.d.ts +117 -1
  195. package/dist/types/meeting-info/index.d.ts +13 -1
  196. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  197. package/dist/types/meetings/collection.d.ts +17 -0
  198. package/dist/types/meetings/index.d.ts +113 -21
  199. package/dist/types/meetings/meetings.types.d.ts +4 -0
  200. package/dist/types/member/index.d.ts +14 -0
  201. package/dist/types/member/types.d.ts +32 -0
  202. package/dist/types/members/collection.d.ts +5 -0
  203. package/dist/types/members/index.d.ts +35 -2
  204. package/dist/types/members/request.d.ts +73 -9
  205. package/dist/types/members/types.d.ts +25 -0
  206. package/dist/types/members/util.d.ts +214 -1
  207. package/dist/types/metrics/constants.d.ts +17 -0
  208. package/dist/types/metrics/index.d.ts +4 -111
  209. package/dist/types/multistream/mediaRequestManager.d.ts +72 -3
  210. package/dist/types/multistream/receiveSlot.d.ts +7 -3
  211. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  212. package/dist/types/multistream/remoteMedia.d.ts +3 -31
  213. package/dist/types/multistream/remoteMediaGroup.d.ts +2 -9
  214. package/dist/types/multistream/remoteMediaManager.d.ts +62 -2
  215. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  216. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  217. package/dist/types/reachability/index.d.ts +60 -95
  218. package/dist/types/reachability/request.d.ts +3 -1
  219. package/dist/types/reachability/util.d.ts +8 -0
  220. package/dist/types/reconnection-manager/index.d.ts +19 -0
  221. package/dist/types/recording-controller/index.d.ts +15 -1
  222. package/dist/types/recording-controller/util.d.ts +5 -4
  223. package/dist/types/roap/index.d.ts +2 -1
  224. package/dist/types/roap/request.d.ts +9 -8
  225. package/dist/types/roap/turnDiscovery.d.ts +39 -5
  226. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  227. package/dist/types/rtcMetrics/index.d.ts +61 -0
  228. package/dist/types/statsAnalyzer/index.d.ts +34 -12
  229. package/dist/types/statsAnalyzer/mqaUtil.d.ts +28 -4
  230. package/dist/types/webinar/collection.d.ts +16 -0
  231. package/dist/types/webinar/index.d.ts +5 -0
  232. package/dist/webinar/collection.js +44 -0
  233. package/dist/webinar/collection.js.map +1 -0
  234. package/dist/webinar/index.js +69 -0
  235. package/dist/webinar/index.js.map +1 -0
  236. package/package.json +22 -19
  237. package/src/annotation/annotation.types.ts +50 -0
  238. package/src/annotation/constants.ts +36 -0
  239. package/src/annotation/index.ts +328 -0
  240. package/src/breakouts/README.md +35 -11
  241. package/src/breakouts/breakout.ts +67 -9
  242. package/src/breakouts/events.ts +56 -0
  243. package/src/breakouts/index.ts +558 -59
  244. package/src/breakouts/utils.ts +42 -0
  245. package/src/common/errors/no-meeting-info.ts +24 -0
  246. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  247. package/src/common/errors/webex-errors.ts +44 -2
  248. package/src/common/logs/logger-proxy.ts +1 -1
  249. package/src/common/logs/request.ts +5 -1
  250. package/src/common/queue.ts +22 -8
  251. package/src/config.ts +4 -9
  252. package/src/constants.ts +229 -21
  253. package/src/controls-options-manager/enums.ts +12 -0
  254. package/src/controls-options-manager/index.ts +116 -21
  255. package/src/controls-options-manager/types.ts +59 -0
  256. package/src/controls-options-manager/util.ts +294 -14
  257. package/src/index.ts +44 -0
  258. package/src/interceptors/index.ts +3 -0
  259. package/src/interceptors/locusRetry.ts +67 -0
  260. package/src/interpretation/README.md +60 -0
  261. package/src/interpretation/collection.ts +19 -0
  262. package/src/interpretation/index.ts +349 -0
  263. package/src/interpretation/siLanguage.ts +18 -0
  264. package/src/locus-info/controlsUtils.ts +108 -0
  265. package/src/locus-info/index.ts +417 -59
  266. package/src/locus-info/infoUtils.ts +10 -2
  267. package/src/locus-info/mediaSharesUtils.ts +80 -0
  268. package/src/locus-info/parser.ts +258 -47
  269. package/src/locus-info/selfUtils.ts +81 -5
  270. package/src/media/index.ts +100 -108
  271. package/src/media/properties.ts +88 -117
  272. package/src/mediaQualityMetrics/config.ts +103 -238
  273. package/src/meeting/in-meeting-actions.ts +171 -3
  274. package/src/meeting/index.ts +3411 -2435
  275. package/src/meeting/locusMediaRequest.ts +313 -0
  276. package/src/meeting/muteState.ts +223 -136
  277. package/src/meeting/request.ts +155 -120
  278. package/src/meeting/util.ts +685 -395
  279. package/src/meeting-info/index.ts +81 -8
  280. package/src/meeting-info/meeting-info-v2.ts +170 -14
  281. package/src/meeting-info/util.ts +1 -1
  282. package/src/meeting-info/utilv2.ts +23 -23
  283. package/src/meetings/collection.ts +33 -0
  284. package/src/meetings/index.ts +507 -127
  285. package/src/meetings/meetings.types.ts +12 -0
  286. package/src/meetings/request.ts +2 -0
  287. package/src/meetings/util.ts +81 -12
  288. package/src/member/index.ts +58 -0
  289. package/src/member/types.ts +38 -0
  290. package/src/member/util.ts +141 -25
  291. package/src/members/collection.ts +8 -0
  292. package/src/members/index.ts +134 -8
  293. package/src/members/request.ts +97 -17
  294. package/src/members/types.ts +29 -0
  295. package/src/members/util.ts +333 -240
  296. package/src/metrics/constants.ts +17 -0
  297. package/src/metrics/index.ts +1 -469
  298. package/src/multistream/mediaRequestManager.ts +271 -56
  299. package/src/multistream/receiveSlot.ts +11 -4
  300. package/src/multistream/receiveSlotManager.ts +34 -24
  301. package/src/multistream/remoteMedia.ts +5 -3
  302. package/src/multistream/remoteMediaGroup.ts +78 -0
  303. package/src/multistream/remoteMediaManager.ts +248 -44
  304. package/src/multistream/sendSlotManager.ts +199 -0
  305. package/src/reachability/clusterReachability.ts +320 -0
  306. package/src/reachability/index.ts +229 -346
  307. package/src/reachability/request.ts +8 -4
  308. package/src/reachability/util.ts +24 -0
  309. package/src/reconnection-manager/index.ts +128 -97
  310. package/src/recording-controller/index.ts +20 -3
  311. package/src/recording-controller/util.ts +26 -9
  312. package/src/roap/index.ts +52 -23
  313. package/src/roap/request.ts +48 -67
  314. package/src/roap/turnDiscovery.ts +147 -49
  315. package/src/rtcMetrics/constants.ts +3 -0
  316. package/src/rtcMetrics/index.ts +166 -0
  317. package/src/statsAnalyzer/index.ts +457 -416
  318. package/src/statsAnalyzer/mqaUtil.ts +317 -170
  319. package/src/webinar/collection.ts +31 -0
  320. package/src/webinar/index.ts +62 -0
  321. package/test/integration/spec/converged-space-meetings.js +60 -3
  322. package/test/integration/spec/journey.js +320 -261
  323. package/test/integration/spec/space-meeting.js +76 -3
  324. package/test/unit/spec/annotation/index.ts +418 -0
  325. package/test/unit/spec/breakouts/breakout.ts +118 -28
  326. package/test/unit/spec/breakouts/events.ts +89 -0
  327. package/test/unit/spec/breakouts/index.ts +1349 -114
  328. package/test/unit/spec/breakouts/utils.js +52 -1
  329. package/test/unit/spec/common/queue.js +31 -2
  330. package/test/unit/spec/controls-options-manager/index.js +163 -0
  331. package/test/unit/spec/controls-options-manager/util.js +576 -60
  332. package/test/unit/spec/fixture/locus.js +1 -0
  333. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  334. package/test/unit/spec/interpretation/collection.ts +15 -0
  335. package/test/unit/spec/interpretation/index.ts +625 -0
  336. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  337. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  338. package/test/unit/spec/locus-info/index.js +1363 -37
  339. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  340. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  341. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  342. package/test/unit/spec/locus-info/parser.js +116 -35
  343. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  344. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  345. package/test/unit/spec/media/index.ts +173 -81
  346. package/test/unit/spec/media/properties.ts +2 -2
  347. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  348. package/test/unit/spec/meeting/index.js +6821 -2172
  349. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  350. package/test/unit/spec/meeting/muteState.js +402 -212
  351. package/test/unit/spec/meeting/request.js +473 -54
  352. package/test/unit/spec/meeting/utils.js +773 -67
  353. package/test/unit/spec/meeting-info/index.js +300 -0
  354. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  355. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  356. package/test/unit/spec/meetings/collection.js +26 -0
  357. package/test/unit/spec/meetings/index.js +1415 -213
  358. package/test/unit/spec/meetings/utils.js +229 -2
  359. package/test/unit/spec/member/index.js +61 -6
  360. package/test/unit/spec/member/util.js +510 -34
  361. package/test/unit/spec/members/index.js +432 -1
  362. package/test/unit/spec/members/request.js +206 -27
  363. package/test/unit/spec/members/utils.js +210 -0
  364. package/test/unit/spec/metrics/index.js +1 -50
  365. package/test/unit/spec/multistream/mediaRequestManager.ts +781 -114
  366. package/test/unit/spec/multistream/receiveSlot.ts +9 -1
  367. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  368. package/test/unit/spec/multistream/remoteMedia.ts +2 -0
  369. package/test/unit/spec/multistream/remoteMediaGroup.ts +345 -0
  370. package/test/unit/spec/multistream/remoteMediaManager.ts +525 -0
  371. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  372. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  373. package/test/unit/spec/reachability/index.ts +551 -14
  374. package/test/unit/spec/reachability/request.js +3 -1
  375. package/test/unit/spec/reachability/util.ts +40 -0
  376. package/test/unit/spec/reconnection-manager/index.js +171 -11
  377. package/test/unit/spec/recording-controller/index.js +294 -218
  378. package/test/unit/spec/recording-controller/util.js +223 -96
  379. package/test/unit/spec/roap/index.ts +180 -83
  380. package/test/unit/spec/roap/request.ts +100 -62
  381. package/test/unit/spec/roap/turnDiscovery.ts +388 -96
  382. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  383. package/test/unit/spec/stats-analyzer/index.js +1252 -12
  384. package/test/unit/spec/webinar/collection.ts +13 -0
  385. package/test/unit/spec/webinar/index.ts +60 -0
  386. package/test/utils/integrationTestUtils.js +46 -0
  387. package/test/utils/testUtils.js +0 -57
  388. package/test/utils/webex-test-users.js +12 -4
  389. package/dist/metrics/config.js +0 -289
  390. package/dist/metrics/config.js.map +0 -1
  391. package/dist/types/metrics/config.d.ts +0 -169
  392. package/src/index.js +0 -18
  393. package/src/metrics/config.ts +0 -485
package/src/constants.ts CHANGED
@@ -1,16 +1,19 @@
1
1
  // @ts-ignore
2
2
  import {hydraTypes} from '@webex/common';
3
3
 
4
+ type Enum<T extends Record<string, unknown>> = T[keyof T];
5
+
4
6
  // *********** LOWERCASE / CAMELCASE STRINGS ************
5
7
 
6
8
  export const AUDIO = 'audio';
7
- export const AUDIO_INPUT = 'audioinput';
8
9
  export const AUDIO_STATUS = 'audioStatus';
9
10
  export const ALERT = 'alert';
11
+ export const ALIAS = 'alias';
10
12
  export const ANSWER = 'answer';
11
13
 
12
14
  export const CALL = 'call';
13
15
  export const CORRELATION_ID = 'correlationId';
16
+ export const MEETINGNUMBER = 'meetingNumber';
14
17
  export const CONVERSATION_URL = 'conversationUrl';
15
18
  export const CALENDAR = 'calendar';
16
19
  export const CALENDAR_EVENTS_API = 'calendarEvents';
@@ -65,7 +68,6 @@ export const SHARE = 'share';
65
68
  export const TYPE = 'type';
66
69
 
67
70
  export const VIDEO = 'video';
68
- export const VIDEO_INPUT = 'videoinput';
69
71
  export const VIDEO_STATUS = 'videoStatus';
70
72
 
71
73
  // *********** UPPERCASE ONLY STRINGS ************
@@ -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';
@@ -189,7 +192,8 @@ export const ICE_FAIL_TIMEOUT = 3000;
189
192
 
190
193
  export const RETRY_TIMEOUT = 3000;
191
194
 
192
- export const PC_BAIL_TIMEOUT = 8000;
195
+ export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
196
+ export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 35000;
193
197
 
194
198
  // ******************** REGEX **********************
195
199
  // Please alphabetize
@@ -235,6 +239,13 @@ export const CALENDAR_EVENTS = {
235
239
  DELETE: 'event:calendar.meeting.delete',
236
240
  };
237
241
 
242
+ export const ASSIGN_ROLES_ERROR_CODES = {
243
+ ReclaimHostNotSupportedErrorCode: 2400127,
244
+ ReclaimHostNotAllowedErrorCode: 2403135,
245
+ ReclaimHostEmptyWrongKeyErrorCode: 2403136,
246
+ ReclaimHostIsHostAlreadyErrorCode: 2409150,
247
+ };
248
+
238
249
  export const DEFAULT_GET_STATS_FILTER = {
239
250
  types: [
240
251
  'track',
@@ -280,6 +291,7 @@ export const EVENT_TRIGGERS = {
280
291
  MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',
281
292
  MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',
282
293
  MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',
294
+ MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',
283
295
  MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',
284
296
  MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',
285
297
  MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',
@@ -297,18 +309,29 @@ export const EVENT_TRIGGERS = {
297
309
  MEETING_RINGING_STOP: 'meeting:ringingStop',
298
310
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
299
311
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
312
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
313
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
300
314
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
301
315
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
302
316
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
303
317
  MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',
304
318
  MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
305
319
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
320
+ MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
306
321
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
307
322
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
308
323
  MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
309
324
  MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
310
325
  MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
326
+ MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
327
+ MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
328
+ MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
329
+ MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',
330
+ MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',
331
+ MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',
332
+ MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',
311
333
  MEMBERS_UPDATE: 'members:update',
334
+ MEMBERS_CLEAR: 'members:clear',
312
335
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
313
336
  MEMBERS_HOST_UPDATE: 'members:host:update',
314
337
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -318,6 +341,7 @@ export const EVENT_TRIGGERS = {
318
341
  MEETING_UNLOCKED: 'meeting:unlocked',
319
342
  MEETING_LOCKED: 'meeting:locked',
320
343
  MEETING_INFO_AVAILABLE: 'meeting:meetingInfoAvailable',
344
+ MEETING_INFO_UPDATED: 'meeting:meetingInfoUpdated',
321
345
  MEETING_LOG_UPLOAD_SUCCESS: 'meeting:logUpload:success',
322
346
  MEETING_LOG_UPLOAD_FAILURE: 'meeting:logUpload:failure',
323
347
  MEETING_ACTIONS_UPDATE: 'meeting:actionsUpdate',
@@ -335,19 +359,31 @@ export const EVENT_TRIGGERS = {
335
359
  REMOTE_VIDEO_SOURCE_COUNT_CHANGED: 'media:remoteVideoSourceCountChanged',
336
360
  REMOTE_AUDIO_SOURCE_COUNT_CHANGED: 'media:remoteAudioSourceCountChanged',
337
361
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
362
+ REMOTE_MEDIA_INTERPRETATION_AUDIO_CREATED: 'media:remoteInterpretationAudio:created',
338
363
  REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
339
364
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
365
+ // Controls
366
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
367
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
368
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
369
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
370
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
371
+ 'meeting:controls:view-the-participants-list:updated',
372
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
373
+ MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
374
+ // Locus URL changed
375
+ MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
376
+ MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
340
377
  };
341
378
 
342
379
  export const EVENT_TYPES = {
343
380
  SELF: 'self',
344
381
  OTHER: 'other',
345
- LOCAL: 'local',
346
382
  REMOTE: 'remote',
347
383
  REMOTE_AUDIO: 'remoteAudio',
348
384
  REMOTE_VIDEO: 'remoteVideo',
349
385
  REMOTE_SHARE: 'remoteShare',
350
- LOCAL_SHARE: 'localShare',
386
+ REMOTE_SHARE_AUDIO: 'remoteShareAudio',
351
387
  ERROR: 'error',
352
388
  };
353
389
 
@@ -360,9 +396,12 @@ export const MEETING_REMOVED_REASON = {
360
396
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
361
397
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
362
398
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
399
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
363
400
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
364
401
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
365
402
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
403
+ LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
404
+ MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
366
405
  };
367
406
 
368
407
  // One one one calls ends for the following reasons
@@ -377,6 +416,8 @@ export const CALL_REMOVED_REASON = {
377
416
  export const SHARE_STOPPED_REASON = {
378
417
  SELF_STOPPED: 'SELF_STOPPED',
379
418
  MEETING_REJOIN: 'MEETING_REJOIN',
419
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
420
+ TRACK_ENDED: 'TRACK_ENDED',
380
421
  };
381
422
 
382
423
  export const EVENTS = {
@@ -457,6 +498,35 @@ export const ERROR_DICTIONARY = {
457
498
  MESSAGE: 'Edit lock token mismatch',
458
499
  CODE: 9,
459
500
  },
501
+ NO_MEETING_INFO: {
502
+ NAME: 'NoMeetingInfo',
503
+ MESSAGE: 'No meeting info found for the meeting',
504
+ CODE: 10,
505
+ },
506
+ RECLAIM_HOST_ROLE_NOT_SUPPORTED: {
507
+ NAME: 'ReclaimHostRoleNotSupported',
508
+ MESSAGE:
509
+ 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
510
+ CODE: 11,
511
+ },
512
+ RECLAIM_HOST_ROLE_NOT_ALLOWED: {
513
+ NAME: 'ReclaimHostRoleNotAllowed',
514
+ MESSAGE:
515
+ 'Reclaim Host Role Not Allowed For Other Participants. Participants cannot claim host role in PMR meeting, space instant meeting or escalated instant meeting. However, the original host still can reclaim host role when it manually makes another participant to be the host.',
516
+ CODE: 12,
517
+ },
518
+ RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {
519
+ NAME: 'ReclaimHostRoleEmptyOrWrongKey',
520
+ MESSAGE:
521
+ 'Host Key Not Specified Or Matched. The original host can reclaim the host role without entering the host key. However, any other person who claims the host role must enter the host key to get it.',
522
+ CODE: 13,
523
+ },
524
+ RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {
525
+ NAME: 'ReclaimHostRoleIsAlreadyHost',
526
+ MESSAGE:
527
+ 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
528
+ CODE: 14,
529
+ },
460
530
  };
461
531
 
462
532
  export const FLOOR_ACTION = {
@@ -478,6 +548,7 @@ export const HTTP_VERBS = {
478
548
  POST: 'POST',
479
549
  GET: 'GET',
480
550
  PATCH: 'PATCH',
551
+ DELETE: 'DELETE',
481
552
  };
482
553
 
483
554
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -511,6 +582,8 @@ export const LOCUS = {
511
582
  INACTIVE: 'INACTIVE',
512
583
  ENDED: 'ENDED',
513
584
  INITIALIZING: 'INITIALIZING',
585
+ ACTIVE: 'ACTIVE',
586
+ TERMINATING: 'TERMINATING',
514
587
  },
515
588
  SEQUENCE: {
516
589
  UN_DEF: 'undef',
@@ -523,17 +596,28 @@ export const LOCUS = {
523
596
  SYNCDEBUG: 'sync_debug',
524
597
  };
525
598
 
599
+ export const ANNOTATION = {
600
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
601
+ };
526
602
  export const BREAKOUTS = {
527
603
  STATUS: {
528
604
  CLOSING: 'CLOSING',
605
+ CLOSED: 'CLOSED',
606
+ PENDING: 'PENDING',
607
+ OPEN: 'OPEN',
529
608
  },
530
609
  EVENTS: {
531
610
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
532
611
  MESSAGE: 'MESSAGE',
533
612
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
613
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
614
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
615
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
616
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
534
617
  },
535
618
  SESSION_TYPES: {
536
619
  MAIN: 'MAIN',
620
+ BREAKOUT: 'BREAKOUT',
537
621
  },
538
622
  SESSION_STATES: {
539
623
  ACTIVE: 'active',
@@ -543,12 +627,35 @@ export const BREAKOUTS = {
543
627
  REQUESTED: 'requested',
544
628
  },
545
629
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
546
- ACTION_TYPES: {
630
+ ACTION: {
631
+ START: 'START',
632
+ CLOSE: 'CLOSE',
547
633
  DELETE: 'DELETE',
548
634
  },
549
635
  ERROR_CODE: {
550
636
  EDIT_LOCK_TOKEN_MISMATCH: 201409024,
637
+ EDIT_NOT_AUTHORIZED: 201403007,
551
638
  },
639
+ EDIT_LOCK_STATUS: {
640
+ LOCKED: 'LOCKED',
641
+ NOT_LOCKED: 'NOT_LOCKED',
642
+ UNKNOWN: 'UNKNOWN',
643
+ },
644
+ DEFAULT_TTL: 30,
645
+ };
646
+
647
+ export const INTERPRETATION = {
648
+ EVENTS: {
649
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
650
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
651
+ },
652
+ ACTION_TYPE: {
653
+ OFFERED: 'OFFERED',
654
+ ACCEPTED: 'ACCEPTED',
655
+ REQUESTED: 'REQUESTED',
656
+ DECLINED: 'DECLINED',
657
+ },
658
+ RESOURCE_TYPE: 'SiHandover',
552
659
  };
553
660
 
554
661
  export const LOCUSINFO = {
@@ -558,13 +665,23 @@ export const LOCUSINFO = {
558
665
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
559
666
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
560
667
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
668
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
561
669
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
670
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
671
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
672
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
673
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
674
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
675
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
676
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
562
677
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
563
678
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
679
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
564
680
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
565
681
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
566
682
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
567
683
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
684
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
568
685
  MEETING_UPDATE: 'MEETING_UPDATE',
569
686
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
570
687
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -579,6 +696,7 @@ export const LOCUSINFO = {
579
696
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
580
697
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
581
698
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
699
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
582
700
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
583
701
  LINKS_SERVICES: 'LINKS_SERVICES',
584
702
  },
@@ -743,6 +861,28 @@ export const MEETING_END_REASON = {
743
861
  MEDIA_RELEASED: 'MEDIA_RELEASED',
744
862
  };
745
863
 
864
+ export enum SELF_POLICY {
865
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
866
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
867
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
868
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
869
+ SUPPORT_CHAT = 'supportChat',
870
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
871
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
872
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
873
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
874
+ SUPPORT_APP_SHARE = 'supportAppShare',
875
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
876
+ SUPPORT_FILE_SHARE = 'supportFileShare',
877
+ SUPPORT_ANNOTATION = 'supportAnnotation',
878
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
879
+ SUPPORT_VIDEO = 'supportVideo',
880
+ SUPPORT_HQV = 'supportHQV',
881
+ SUPPORT_HDV = 'supportHDV',
882
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
883
+ SUPPORT_VOIP = 'supportVoIP',
884
+ }
885
+
746
886
  export const DISPLAY_HINTS = {
747
887
  ADD_GUEST: 'ADD_GUEST',
748
888
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -766,21 +906,64 @@ export const DISPLAY_HINTS = {
766
906
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
767
907
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
768
908
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
909
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
769
910
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
770
911
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
771
912
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
772
913
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
773
914
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
774
915
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
916
+ SHARE_CONTROL: 'SHARE_CONTROL',
775
917
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
918
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
919
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
776
920
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
777
921
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
778
922
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
923
+ MUTE_ALL: 'MUTE_ALL',
924
+ UNMUTE_ALL: 'UNMUTE_ALL',
925
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
926
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
927
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
928
+
929
+ // breakout session
930
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
931
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
932
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
933
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
934
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
935
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
936
+
937
+ // participants list
938
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
939
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
940
+
941
+ // raise hand
942
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
943
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
944
+
945
+ // video
946
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
947
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
948
+
949
+ // Sharing
950
+ SHARE_FILE: 'SHARE_FILE',
951
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
952
+ SHARE_CAMERA: 'SHARE_CAMERA',
953
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
954
+ SHARE_CONTENT: 'SHARE_CONTENT',
955
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
956
+
957
+ // Voip (audio/video)
958
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
779
959
  };
780
960
 
961
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
962
+
781
963
  export const SELF_ROLES = {
782
964
  COHOST: 'COHOST',
783
965
  MODERATOR: 'MODERATOR',
966
+ ATTENDEE: 'ATTENDEE',
784
967
  };
785
968
 
786
969
  export const MEETING_STATE = {
@@ -856,7 +1039,9 @@ export const RECONNECTION = {
856
1039
  DEFAULT_TRY_COUNT: 0,
857
1040
  DEFAULT_STATUS: '',
858
1041
  },
859
- };
1042
+ } as const;
1043
+
1044
+ export type RECONNECTION_STATE = Enum<typeof RECONNECTION.STATE>;
860
1045
 
861
1046
  export const RESOURCE = {
862
1047
  CLUSTERS: 'clusters',
@@ -892,7 +1077,9 @@ export const NETWORK_STATUS = {
892
1077
  DISCONNECTED: 'DISCONNECTED',
893
1078
  RECONNECTING: 'RECONNECTING',
894
1079
  CONNECTED: 'CONNECTED',
895
- };
1080
+ } as const;
1081
+
1082
+ export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
896
1083
 
897
1084
  export const NETWORK_TYPE = {
898
1085
  VPN: 'vpn',
@@ -1047,21 +1234,11 @@ export const AVAILABLE_RESOLUTIONS = {
1047
1234
  },
1048
1235
  };
1049
1236
 
1050
- export const VIDEO_RESOLUTIONS = {
1051
- [QUALITY_LEVELS.LOW]: AVAILABLE_RESOLUTIONS['480p'],
1052
- [QUALITY_LEVELS.MEDIUM]: AVAILABLE_RESOLUTIONS['720p'],
1053
- [QUALITY_LEVELS.HIGH]: AVAILABLE_RESOLUTIONS['1080p'],
1054
- [QUALITY_LEVELS['360p']]: AVAILABLE_RESOLUTIONS['360p'],
1055
- [QUALITY_LEVELS['480p']]: AVAILABLE_RESOLUTIONS['480p'],
1056
- [QUALITY_LEVELS['720p']]: AVAILABLE_RESOLUTIONS['720p'],
1057
- [QUALITY_LEVELS['1080p']]: AVAILABLE_RESOLUTIONS['1080p'],
1058
- };
1059
-
1060
1237
  /*
1061
1238
  * mqa Interval for sending stats metrics
1062
1239
  */
1063
1240
 
1064
- export const MQA_INTEVAL = 60000; // mqa analyzer interval its fixed to 60000
1241
+ export const MQA_INTERVAL = 60000; // mqa analyzer interval its fixed to 60000
1065
1242
 
1066
1243
  export const MEDIA_DEVICES = {
1067
1244
  MICROPHONE: 'microphone',
@@ -1069,8 +1246,6 @@ export const MEDIA_DEVICES = {
1069
1246
  CAMERA: 'camera',
1070
1247
  };
1071
1248
 
1072
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1073
-
1074
1249
  export const PSTN_STATUS = {
1075
1250
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1076
1251
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1091,6 +1266,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1091
1266
  NONE: 'NONE', // meeting info was retrieved succesfully
1092
1267
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1093
1268
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1269
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1094
1270
  OTHER: 'OTHER', // any other error (network, etc)
1095
1271
  };
1096
1272
 
@@ -1105,3 +1281,35 @@ export const EMBEDDED_APP_TYPES = {
1105
1281
  SLIDO: 'SLIDO',
1106
1282
  OTHER: 'OTHER',
1107
1283
  };
1284
+
1285
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1286
+ supportHostKey: true,
1287
+ supportCountryList: true,
1288
+ };
1289
+
1290
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1291
+ export const IP_VERSION = {
1292
+ unknown: 0,
1293
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1294
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1295
+ ipv4_and_ipv6: 1,
1296
+ } as const;
1297
+
1298
+ export const LOCAL_SHARE_ERRORS = {
1299
+ DEVICE_NOT_JOINED: 'Floor requested but device not yet joined',
1300
+ UNDEFINED: 'undefined PUT',
1301
+ NO_MEDIA_FOR_DEVICE: 'No media session found for device',
1302
+ NO_CONFLUENCE_ID: 'Failed to request floor: 404 (null) could not find confluence id',
1303
+ CONTENT_SHARING_DISABLED: 'Content share policies are disabled',
1304
+ LOCUS_PARTICIPANT_DNE: 'does not exist in Locus',
1305
+ CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD:
1306
+ 'Content share request is not allowed while whiteboard floor request is pending',
1307
+ };
1308
+ export type IP_VERSION = Enum<typeof IP_VERSION>;
1309
+
1310
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1311
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1312
+ export const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';
1313
+
1314
+ // constant for named media group type
1315
+ export const NAMED_MEDIA_GROUP_TYPE_AUDIO = 1;
@@ -1,6 +1,18 @@
1
1
  enum Setting {
2
2
  disallowUnmute = 'DisallowUnmute',
3
3
  muteOnEntry = 'MuteOnEntry',
4
+ muted = 'Muted',
4
5
  }
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
+
6
18
  export default Setting;
@@ -3,7 +3,8 @@ import PermissionError from '../common/errors/permission';
3
3
  import {CONTROLS, HTTP_VERBS} from '../constants';
4
4
  import MeetingRequest from '../meeting/request';
5
5
  import LoggerProxy from '../common/logs/logger-proxy';
6
- import Setting from './enums';
6
+ import {Control, Setting} from './enums';
7
+ import {ControlConfig} from './types';
7
8
  import Util from './util';
8
9
  import {CAN_SET, CAN_UNSET, ENABLED} from './constants';
9
10
 
@@ -133,32 +134,106 @@ export default class ControlsOptionsManager {
133
134
  this.setLocusUrl(options?.locusUrl);
134
135
  }
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
+
136
174
  /**
137
175
  * @param {Setting} setting
138
- * @param {boolean} enabled
139
176
  * @private
140
177
  * @memberof ControlsOptionsManager
141
178
  * @returns {Promise}
142
179
  */
143
- private setControls(setting: Setting, enabled: boolean): Promise<any> {
144
- LoggerProxy.logger.log(`ControlsOptionsManager:index#setControls --> ${setting} [${enabled}]`);
145
-
146
- if (Util?.[`${enabled ? CAN_SET : CAN_UNSET}${setting}`](this.displayHints)) {
147
- // @ts-ignore
148
- return this.request.request({
149
- uri: `${this.locusUrl}/${CONTROLS}`,
150
- body: {
151
- [camelCase(setting)]: {
152
- [ENABLED]: enabled,
153
- },
154
- },
155
- method: HTTP_VERBS.PATCH,
156
- });
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);
157
229
  }
158
230
 
159
- return Promise.reject(
160
- new PermissionError(`${setting} [${enabled}] not allowed, due to moderator property.`)
161
- );
231
+ // @ts-ignore
232
+ return this.request.request({
233
+ uri: `${this.locusUrl}/${CONTROLS}`,
234
+ body,
235
+ method: HTTP_VERBS.PATCH,
236
+ });
162
237
  }
163
238
 
164
239
  /**
@@ -168,7 +243,7 @@ export default class ControlsOptionsManager {
168
243
  * @returns {Promise}
169
244
  */
170
245
  public setMuteOnEntry(enabled: boolean): Promise<any> {
171
- return this.setControls(Setting.muteOnEntry, enabled);
246
+ return this.setControls({[Setting.muteOnEntry]: enabled});
172
247
  }
173
248
 
174
249
  /**
@@ -178,6 +253,26 @@ export default class ControlsOptionsManager {
178
253
  * @returns {Promise}
179
254
  */
180
255
  public setDisallowUnmute(enabled: boolean): Promise<any> {
181
- return this.setControls(Setting.disallowUnmute, enabled);
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
+ });
182
277
  }
183
278
  }