@webex/plugin-meetings 3.0.0-beta.38 → 3.0.0-beta.381

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 +237 -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 +117 -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 +366 -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 +57 -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 +61 -101
  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 +4050 -2836
  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 +228 -28
  121. package/dist/multistream/mediaRequestManager.js.map +1 -1
  122. package/dist/multistream/receiveSlot.js +29 -1
  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 +44 -18
  127. package/dist/multistream/remoteMedia.js.map +1 -1
  128. package/dist/multistream/remoteMediaGroup.js +60 -3
  129. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  130. package/dist/multistream/remoteMediaManager.js +209 -59
  131. package/dist/multistream/remoteMediaManager.js.map +1 -1
  132. package/dist/multistream/sendSlotManager.js +233 -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 +264 -201
  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 +201 -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 -4
  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 +559 -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 +13 -3
  211. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  212. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  213. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  214. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  215. package/dist/types/multistream/sendSlotManager.d.ts +61 -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 +225 -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 +332 -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 +64 -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 +97 -107
  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 +3371 -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 +278 -52
  299. package/src/multistream/receiveSlot.ts +31 -4
  300. package/src/multistream/receiveSlotManager.ts +34 -24
  301. package/src/multistream/remoteMedia.ts +27 -2
  302. package/src/multistream/remoteMediaGroup.ts +59 -0
  303. package/src/multistream/remoteMediaManager.ts +148 -30
  304. package/src/multistream/sendSlotManager.ts +170 -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 +127 -96
  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 +589 -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 +32 -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 +118 -37
  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 +6792 -2176
  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 +799 -112
  366. package/test/unit/spec/multistream/receiveSlot.ts +28 -1
  367. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  368. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  369. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  370. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  371. package/test/unit/spec/multistream/sendSlotManager.ts +242 -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 +143 -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 -16
  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',
@@ -337,17 +361,28 @@ export const EVENT_TRIGGERS = {
337
361
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
338
362
  REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
339
363
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
364
+ // Controls
365
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
366
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
367
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
368
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
369
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
370
+ 'meeting:controls:view-the-participants-list:updated',
371
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
372
+ MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
373
+ // Locus URL changed
374
+ MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
375
+ MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
340
376
  };
341
377
 
342
378
  export const EVENT_TYPES = {
343
379
  SELF: 'self',
344
380
  OTHER: 'other',
345
- LOCAL: 'local',
346
381
  REMOTE: 'remote',
347
382
  REMOTE_AUDIO: 'remoteAudio',
348
383
  REMOTE_VIDEO: 'remoteVideo',
349
384
  REMOTE_SHARE: 'remoteShare',
350
- LOCAL_SHARE: 'localShare',
385
+ REMOTE_SHARE_AUDIO: 'remoteShareAudio',
351
386
  ERROR: 'error',
352
387
  };
353
388
 
@@ -360,9 +395,12 @@ export const MEETING_REMOVED_REASON = {
360
395
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
361
396
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
362
397
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
398
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
363
399
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
364
400
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
365
401
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
402
+ LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
403
+ MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
366
404
  };
367
405
 
368
406
  // One one one calls ends for the following reasons
@@ -377,6 +415,8 @@ export const CALL_REMOVED_REASON = {
377
415
  export const SHARE_STOPPED_REASON = {
378
416
  SELF_STOPPED: 'SELF_STOPPED',
379
417
  MEETING_REJOIN: 'MEETING_REJOIN',
418
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
419
+ TRACK_ENDED: 'TRACK_ENDED',
380
420
  };
381
421
 
382
422
  export const EVENTS = {
@@ -457,6 +497,35 @@ export const ERROR_DICTIONARY = {
457
497
  MESSAGE: 'Edit lock token mismatch',
458
498
  CODE: 9,
459
499
  },
500
+ NO_MEETING_INFO: {
501
+ NAME: 'NoMeetingInfo',
502
+ MESSAGE: 'No meeting info found for the meeting',
503
+ CODE: 10,
504
+ },
505
+ RECLAIM_HOST_ROLE_NOT_SUPPORTED: {
506
+ NAME: 'ReclaimHostRoleNotSupported',
507
+ MESSAGE:
508
+ 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
509
+ CODE: 11,
510
+ },
511
+ RECLAIM_HOST_ROLE_NOT_ALLOWED: {
512
+ NAME: 'ReclaimHostRoleNotAllowed',
513
+ MESSAGE:
514
+ '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.',
515
+ CODE: 12,
516
+ },
517
+ RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {
518
+ NAME: 'ReclaimHostRoleEmptyOrWrongKey',
519
+ MESSAGE:
520
+ '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.',
521
+ CODE: 13,
522
+ },
523
+ RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {
524
+ NAME: 'ReclaimHostRoleIsAlreadyHost',
525
+ MESSAGE:
526
+ 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
527
+ CODE: 14,
528
+ },
460
529
  };
461
530
 
462
531
  export const FLOOR_ACTION = {
@@ -478,6 +547,7 @@ export const HTTP_VERBS = {
478
547
  POST: 'POST',
479
548
  GET: 'GET',
480
549
  PATCH: 'PATCH',
550
+ DELETE: 'DELETE',
481
551
  };
482
552
 
483
553
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -511,6 +581,8 @@ export const LOCUS = {
511
581
  INACTIVE: 'INACTIVE',
512
582
  ENDED: 'ENDED',
513
583
  INITIALIZING: 'INITIALIZING',
584
+ ACTIVE: 'ACTIVE',
585
+ TERMINATING: 'TERMINATING',
514
586
  },
515
587
  SEQUENCE: {
516
588
  UN_DEF: 'undef',
@@ -523,17 +595,28 @@ export const LOCUS = {
523
595
  SYNCDEBUG: 'sync_debug',
524
596
  };
525
597
 
598
+ export const ANNOTATION = {
599
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
600
+ };
526
601
  export const BREAKOUTS = {
527
602
  STATUS: {
528
603
  CLOSING: 'CLOSING',
604
+ CLOSED: 'CLOSED',
605
+ PENDING: 'PENDING',
606
+ OPEN: 'OPEN',
529
607
  },
530
608
  EVENTS: {
531
609
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
532
610
  MESSAGE: 'MESSAGE',
533
611
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
612
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
613
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
614
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
615
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
534
616
  },
535
617
  SESSION_TYPES: {
536
618
  MAIN: 'MAIN',
619
+ BREAKOUT: 'BREAKOUT',
537
620
  },
538
621
  SESSION_STATES: {
539
622
  ACTIVE: 'active',
@@ -543,12 +626,35 @@ export const BREAKOUTS = {
543
626
  REQUESTED: 'requested',
544
627
  },
545
628
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
546
- ACTION_TYPES: {
629
+ ACTION: {
630
+ START: 'START',
631
+ CLOSE: 'CLOSE',
547
632
  DELETE: 'DELETE',
548
633
  },
549
634
  ERROR_CODE: {
550
635
  EDIT_LOCK_TOKEN_MISMATCH: 201409024,
636
+ EDIT_NOT_AUTHORIZED: 201403007,
637
+ },
638
+ EDIT_LOCK_STATUS: {
639
+ LOCKED: 'LOCKED',
640
+ NOT_LOCKED: 'NOT_LOCKED',
641
+ UNKNOWN: 'UNKNOWN',
642
+ },
643
+ DEFAULT_TTL: 30,
644
+ };
645
+
646
+ export const INTERPRETATION = {
647
+ EVENTS: {
648
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
649
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
551
650
  },
651
+ ACTION_TYPE: {
652
+ OFFERED: 'OFFERED',
653
+ ACCEPTED: 'ACCEPTED',
654
+ REQUESTED: 'REQUESTED',
655
+ DECLINED: 'DECLINED',
656
+ },
657
+ RESOURCE_TYPE: 'SiHandover',
552
658
  };
553
659
 
554
660
  export const LOCUSINFO = {
@@ -558,13 +664,23 @@ export const LOCUSINFO = {
558
664
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
559
665
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
560
666
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
667
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
561
668
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
669
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
670
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
671
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
672
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
673
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
674
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
675
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
562
676
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
563
677
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
678
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
564
679
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
565
680
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
566
681
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
567
682
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
683
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
568
684
  MEETING_UPDATE: 'MEETING_UPDATE',
569
685
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
570
686
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -579,6 +695,7 @@ export const LOCUSINFO = {
579
695
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
580
696
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
581
697
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
698
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
582
699
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
583
700
  LINKS_SERVICES: 'LINKS_SERVICES',
584
701
  },
@@ -743,6 +860,28 @@ export const MEETING_END_REASON = {
743
860
  MEDIA_RELEASED: 'MEDIA_RELEASED',
744
861
  };
745
862
 
863
+ export enum SELF_POLICY {
864
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
865
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
866
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
867
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
868
+ SUPPORT_CHAT = 'supportChat',
869
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
870
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
871
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
872
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
873
+ SUPPORT_APP_SHARE = 'supportAppShare',
874
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
875
+ SUPPORT_FILE_SHARE = 'supportFileShare',
876
+ SUPPORT_ANNOTATION = 'supportAnnotation',
877
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
878
+ SUPPORT_VIDEO = 'supportVideo',
879
+ SUPPORT_HQV = 'supportHQV',
880
+ SUPPORT_HDV = 'supportHDV',
881
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
882
+ SUPPORT_VOIP = 'supportVoIP',
883
+ }
884
+
746
885
  export const DISPLAY_HINTS = {
747
886
  ADD_GUEST: 'ADD_GUEST',
748
887
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -766,21 +905,64 @@ export const DISPLAY_HINTS = {
766
905
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
767
906
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
768
907
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
908
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
769
909
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
770
910
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
771
911
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
772
912
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
773
913
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
774
914
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
915
+ SHARE_CONTROL: 'SHARE_CONTROL',
775
916
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
917
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
918
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
776
919
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
777
920
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
778
921
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
922
+ MUTE_ALL: 'MUTE_ALL',
923
+ UNMUTE_ALL: 'UNMUTE_ALL',
924
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
925
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
926
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
927
+
928
+ // breakout session
929
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
930
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
931
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
932
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
933
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
934
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
935
+
936
+ // participants list
937
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
938
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
939
+
940
+ // raise hand
941
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
942
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
943
+
944
+ // video
945
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
946
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
947
+
948
+ // Sharing
949
+ SHARE_FILE: 'SHARE_FILE',
950
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
951
+ SHARE_CAMERA: 'SHARE_CAMERA',
952
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
953
+ SHARE_CONTENT: 'SHARE_CONTENT',
954
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
955
+
956
+ // Voip (audio/video)
957
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
779
958
  };
780
959
 
960
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
961
+
781
962
  export const SELF_ROLES = {
782
963
  COHOST: 'COHOST',
783
964
  MODERATOR: 'MODERATOR',
965
+ ATTENDEE: 'ATTENDEE',
784
966
  };
785
967
 
786
968
  export const MEETING_STATE = {
@@ -856,7 +1038,9 @@ export const RECONNECTION = {
856
1038
  DEFAULT_TRY_COUNT: 0,
857
1039
  DEFAULT_STATUS: '',
858
1040
  },
859
- };
1041
+ } as const;
1042
+
1043
+ export type RECONNECTION_STATE = Enum<typeof RECONNECTION.STATE>;
860
1044
 
861
1045
  export const RESOURCE = {
862
1046
  CLUSTERS: 'clusters',
@@ -892,7 +1076,9 @@ export const NETWORK_STATUS = {
892
1076
  DISCONNECTED: 'DISCONNECTED',
893
1077
  RECONNECTING: 'RECONNECTING',
894
1078
  CONNECTED: 'CONNECTED',
895
- };
1079
+ } as const;
1080
+
1081
+ export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
896
1082
 
897
1083
  export const NETWORK_TYPE = {
898
1084
  VPN: 'vpn',
@@ -1047,21 +1233,11 @@ export const AVAILABLE_RESOLUTIONS = {
1047
1233
  },
1048
1234
  };
1049
1235
 
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
1236
  /*
1061
1237
  * mqa Interval for sending stats metrics
1062
1238
  */
1063
1239
 
1064
- export const MQA_INTEVAL = 60000; // mqa analyzer interval its fixed to 60000
1240
+ export const MQA_INTERVAL = 60000; // mqa analyzer interval its fixed to 60000
1065
1241
 
1066
1242
  export const MEDIA_DEVICES = {
1067
1243
  MICROPHONE: 'microphone',
@@ -1069,8 +1245,6 @@ export const MEDIA_DEVICES = {
1069
1245
  CAMERA: 'camera',
1070
1246
  };
1071
1247
 
1072
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1073
-
1074
1248
  export const PSTN_STATUS = {
1075
1249
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1076
1250
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1091,6 +1265,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1091
1265
  NONE: 'NONE', // meeting info was retrieved succesfully
1092
1266
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1093
1267
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1268
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1094
1269
  OTHER: 'OTHER', // any other error (network, etc)
1095
1270
  };
1096
1271
 
@@ -1105,3 +1280,32 @@ export const EMBEDDED_APP_TYPES = {
1105
1280
  SLIDO: 'SLIDO',
1106
1281
  OTHER: 'OTHER',
1107
1282
  };
1283
+
1284
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1285
+ supportHostKey: true,
1286
+ supportCountryList: true,
1287
+ };
1288
+
1289
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1290
+ export const IP_VERSION = {
1291
+ unknown: 0,
1292
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1293
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1294
+ ipv4_and_ipv6: 1,
1295
+ } as const;
1296
+
1297
+ export const LOCAL_SHARE_ERRORS = {
1298
+ DEVICE_NOT_JOINED: 'Floor requested but device not yet joined',
1299
+ UNDEFINED: 'undefined PUT',
1300
+ NO_MEDIA_FOR_DEVICE: 'No media session found for device',
1301
+ NO_CONFLUENCE_ID: 'Failed to request floor: 404 (null) could not find confluence id',
1302
+ CONTENT_SHARING_DISABLED: 'Content share policies are disabled',
1303
+ LOCUS_PARTICIPANT_DNE: 'does not exist in Locus',
1304
+ CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD:
1305
+ 'Content share request is not allowed while whiteboard floor request is pending',
1306
+ };
1307
+ export type IP_VERSION = Enum<typeof IP_VERSION>;
1308
+
1309
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1310
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1311
+ export const MEETING_PERMISSION_TOKEN_REFRESH_REASON = 'ttl-join';
@@ -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
  }