@webex/plugin-meetings 3.0.0-beta.37 → 3.0.0-beta.370

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 (391) 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 +236 -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 +383 -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 +1 -204
  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 +4021 -2828
  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 +173 -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 +478 -118
  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 +17 -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 -58
  121. package/dist/multistream/mediaRequestManager.js.map +1 -1
  122. package/dist/multistream/receiveSlot.js +29 -16
  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 +267 -200
  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 +179 -215
  159. package/dist/statsAnalyzer/index.js.map +1 -1
  160. package/dist/statsAnalyzer/mqaUtil.js +35 -28
  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 +200 -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 +0 -128
  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 +62 -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 +112 -20
  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 +16 -0
  208. package/dist/types/metrics/index.d.ts +4 -111
  209. package/dist/types/multistream/mediaRequestManager.d.ts +72 -5
  210. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  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 +29 -11
  229. package/dist/types/webinar/collection.d.ts +16 -0
  230. package/dist/types/webinar/index.d.ts +5 -0
  231. package/dist/webinar/collection.js +44 -0
  232. package/dist/webinar/collection.js.map +1 -0
  233. package/dist/webinar/index.js +69 -0
  234. package/dist/webinar/index.js.map +1 -0
  235. package/package.json +22 -19
  236. package/src/annotation/annotation.types.ts +50 -0
  237. package/src/annotation/constants.ts +36 -0
  238. package/src/annotation/index.ts +328 -0
  239. package/src/breakouts/README.md +35 -11
  240. package/src/breakouts/breakout.ts +67 -9
  241. package/src/breakouts/events.ts +56 -0
  242. package/src/breakouts/index.ts +558 -59
  243. package/src/breakouts/utils.ts +42 -0
  244. package/src/common/errors/no-meeting-info.ts +24 -0
  245. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  246. package/src/common/errors/webex-errors.ts +44 -2
  247. package/src/common/logs/logger-proxy.ts +1 -1
  248. package/src/common/logs/request.ts +5 -1
  249. package/src/common/queue.ts +22 -8
  250. package/src/config.ts +4 -9
  251. package/src/constants.ts +224 -21
  252. package/src/controls-options-manager/enums.ts +12 -0
  253. package/src/controls-options-manager/index.ts +116 -21
  254. package/src/controls-options-manager/types.ts +59 -0
  255. package/src/controls-options-manager/util.ts +294 -14
  256. package/src/index.ts +44 -0
  257. package/src/interceptors/index.ts +3 -0
  258. package/src/interceptors/locusRetry.ts +67 -0
  259. package/src/interpretation/README.md +60 -0
  260. package/src/interpretation/collection.ts +19 -0
  261. package/src/interpretation/index.ts +332 -0
  262. package/src/interpretation/siLanguage.ts +18 -0
  263. package/src/locus-info/controlsUtils.ts +108 -0
  264. package/src/locus-info/index.ts +414 -59
  265. package/src/locus-info/infoUtils.ts +10 -2
  266. package/src/locus-info/mediaSharesUtils.ts +64 -0
  267. package/src/locus-info/parser.ts +258 -47
  268. package/src/locus-info/selfUtils.ts +81 -5
  269. package/src/media/index.ts +97 -107
  270. package/src/media/properties.ts +88 -117
  271. package/src/mediaQualityMetrics/config.ts +0 -135
  272. package/src/meeting/in-meeting-actions.ts +171 -3
  273. package/src/meeting/index.ts +3363 -2453
  274. package/src/meeting/locusMediaRequest.ts +313 -0
  275. package/src/meeting/muteState.ts +223 -136
  276. package/src/meeting/request.ts +149 -120
  277. package/src/meeting/util.ts +685 -395
  278. package/src/meeting-info/index.ts +81 -8
  279. package/src/meeting-info/meeting-info-v2.ts +170 -14
  280. package/src/meeting-info/util.ts +1 -1
  281. package/src/meeting-info/utilv2.ts +23 -23
  282. package/src/meetings/collection.ts +33 -0
  283. package/src/meetings/index.ts +497 -126
  284. package/src/meetings/meetings.types.ts +12 -0
  285. package/src/meetings/request.ts +2 -0
  286. package/src/meetings/util.ts +81 -12
  287. package/src/member/index.ts +58 -0
  288. package/src/member/types.ts +38 -0
  289. package/src/member/util.ts +141 -25
  290. package/src/members/collection.ts +8 -0
  291. package/src/members/index.ts +134 -8
  292. package/src/members/request.ts +97 -17
  293. package/src/members/types.ts +29 -0
  294. package/src/members/util.ts +333 -240
  295. package/src/metrics/constants.ts +16 -0
  296. package/src/metrics/index.ts +1 -469
  297. package/src/multistream/mediaRequestManager.ts +277 -82
  298. package/src/multistream/receiveSlot.ts +31 -17
  299. package/src/multistream/receiveSlotManager.ts +34 -24
  300. package/src/multistream/remoteMedia.ts +27 -2
  301. package/src/multistream/remoteMediaGroup.ts +59 -0
  302. package/src/multistream/remoteMediaManager.ts +148 -30
  303. package/src/multistream/sendSlotManager.ts +170 -0
  304. package/src/reachability/clusterReachability.ts +320 -0
  305. package/src/reachability/index.ts +229 -346
  306. package/src/reachability/request.ts +8 -4
  307. package/src/reachability/util.ts +24 -0
  308. package/src/reconnection-manager/index.ts +139 -106
  309. package/src/recording-controller/index.ts +20 -3
  310. package/src/recording-controller/util.ts +26 -9
  311. package/src/roap/index.ts +52 -23
  312. package/src/roap/request.ts +48 -67
  313. package/src/roap/turnDiscovery.ts +147 -49
  314. package/src/rtcMetrics/constants.ts +3 -0
  315. package/src/rtcMetrics/index.ts +166 -0
  316. package/src/statsAnalyzer/index.ts +219 -289
  317. package/src/statsAnalyzer/mqaUtil.ts +43 -44
  318. package/src/webinar/collection.ts +31 -0
  319. package/src/webinar/index.ts +62 -0
  320. package/test/integration/spec/converged-space-meetings.js +60 -3
  321. package/test/integration/spec/journey.js +320 -261
  322. package/test/integration/spec/space-meeting.js +76 -3
  323. package/test/unit/spec/annotation/index.ts +418 -0
  324. package/test/unit/spec/breakouts/breakout.ts +118 -28
  325. package/test/unit/spec/breakouts/events.ts +89 -0
  326. package/test/unit/spec/breakouts/index.ts +1349 -114
  327. package/test/unit/spec/breakouts/utils.js +52 -1
  328. package/test/unit/spec/common/queue.js +31 -2
  329. package/test/unit/spec/controls-options-manager/index.js +163 -0
  330. package/test/unit/spec/controls-options-manager/util.js +576 -60
  331. package/test/unit/spec/fixture/locus.js +1 -0
  332. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  333. package/test/unit/spec/interpretation/collection.ts +15 -0
  334. package/test/unit/spec/interpretation/index.ts +589 -0
  335. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  336. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  337. package/test/unit/spec/locus-info/index.js +1352 -33
  338. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  339. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  340. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  341. package/test/unit/spec/locus-info/parser.js +116 -35
  342. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  343. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  344. package/test/unit/spec/media/index.ts +118 -37
  345. package/test/unit/spec/media/properties.ts +2 -2
  346. package/test/unit/spec/meeting/in-meeting-actions.ts +85 -3
  347. package/test/unit/spec/meeting/index.js +6722 -2200
  348. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  349. package/test/unit/spec/meeting/muteState.js +402 -212
  350. package/test/unit/spec/meeting/request.js +471 -54
  351. package/test/unit/spec/meeting/utils.js +773 -67
  352. package/test/unit/spec/meeting-info/index.js +300 -0
  353. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  354. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  355. package/test/unit/spec/meetings/collection.js +26 -0
  356. package/test/unit/spec/meetings/index.js +1393 -212
  357. package/test/unit/spec/meetings/utils.js +229 -2
  358. package/test/unit/spec/member/index.js +61 -6
  359. package/test/unit/spec/member/util.js +510 -34
  360. package/test/unit/spec/members/index.js +432 -1
  361. package/test/unit/spec/members/request.js +206 -27
  362. package/test/unit/spec/members/utils.js +210 -0
  363. package/test/unit/spec/metrics/index.js +1 -50
  364. package/test/unit/spec/multistream/mediaRequestManager.ts +776 -162
  365. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  366. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  367. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  368. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  369. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  370. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  371. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  372. package/test/unit/spec/reachability/index.ts +551 -14
  373. package/test/unit/spec/reachability/request.js +3 -1
  374. package/test/unit/spec/reachability/util.ts +40 -0
  375. package/test/unit/spec/reconnection-manager/index.js +153 -11
  376. package/test/unit/spec/recording-controller/index.js +294 -218
  377. package/test/unit/spec/recording-controller/util.js +223 -96
  378. package/test/unit/spec/roap/index.ts +180 -83
  379. package/test/unit/spec/roap/request.ts +100 -62
  380. package/test/unit/spec/roap/turnDiscovery.ts +388 -96
  381. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  382. package/test/unit/spec/stats-analyzer/index.js +664 -12
  383. package/test/unit/spec/webinar/collection.ts +13 -0
  384. package/test/unit/spec/webinar/index.ts +60 -0
  385. package/test/utils/integrationTestUtils.js +46 -0
  386. package/test/utils/testUtils.js +0 -57
  387. package/dist/metrics/config.js +0 -289
  388. package/dist/metrics/config.js.map +0 -1
  389. package/dist/types/metrics/config.d.ts +0 -169
  390. package/src/index.js +0 -16
  391. 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',
@@ -337,17 +360,28 @@ export const EVENT_TRIGGERS = {
337
360
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
338
361
  REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
339
362
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
363
+ // Controls
364
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
365
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
366
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
367
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
368
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
369
+ 'meeting:controls:view-the-participants-list:updated',
370
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
371
+ MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
372
+ // Locus URL changed
373
+ MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
374
+ MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
340
375
  };
341
376
 
342
377
  export const EVENT_TYPES = {
343
378
  SELF: 'self',
344
379
  OTHER: 'other',
345
- LOCAL: 'local',
346
380
  REMOTE: 'remote',
347
381
  REMOTE_AUDIO: 'remoteAudio',
348
382
  REMOTE_VIDEO: 'remoteVideo',
349
383
  REMOTE_SHARE: 'remoteShare',
350
- LOCAL_SHARE: 'localShare',
384
+ REMOTE_SHARE_AUDIO: 'remoteShareAudio',
351
385
  ERROR: 'error',
352
386
  };
353
387
 
@@ -360,9 +394,12 @@ export const MEETING_REMOVED_REASON = {
360
394
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
361
395
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
362
396
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
397
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
363
398
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
364
399
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
365
400
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
401
+ LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
402
+ MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
366
403
  };
367
404
 
368
405
  // One one one calls ends for the following reasons
@@ -377,6 +414,8 @@ export const CALL_REMOVED_REASON = {
377
414
  export const SHARE_STOPPED_REASON = {
378
415
  SELF_STOPPED: 'SELF_STOPPED',
379
416
  MEETING_REJOIN: 'MEETING_REJOIN',
417
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
418
+ TRACK_ENDED: 'TRACK_ENDED',
380
419
  };
381
420
 
382
421
  export const EVENTS = {
@@ -457,6 +496,35 @@ export const ERROR_DICTIONARY = {
457
496
  MESSAGE: 'Edit lock token mismatch',
458
497
  CODE: 9,
459
498
  },
499
+ NO_MEETING_INFO: {
500
+ NAME: 'NoMeetingInfo',
501
+ MESSAGE: 'No meeting info found for the meeting',
502
+ CODE: 10,
503
+ },
504
+ RECLAIM_HOST_ROLE_NOT_SUPPORTED: {
505
+ NAME: 'ReclaimHostRoleNotSupported',
506
+ MESSAGE:
507
+ 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
508
+ CODE: 11,
509
+ },
510
+ RECLAIM_HOST_ROLE_NOT_ALLOWED: {
511
+ NAME: 'ReclaimHostRoleNotAllowed',
512
+ MESSAGE:
513
+ '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.',
514
+ CODE: 12,
515
+ },
516
+ RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {
517
+ NAME: 'ReclaimHostRoleEmptyOrWrongKey',
518
+ MESSAGE:
519
+ '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.',
520
+ CODE: 13,
521
+ },
522
+ RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {
523
+ NAME: 'ReclaimHostRoleIsAlreadyHost',
524
+ MESSAGE:
525
+ 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
526
+ CODE: 14,
527
+ },
460
528
  };
461
529
 
462
530
  export const FLOOR_ACTION = {
@@ -478,6 +546,7 @@ export const HTTP_VERBS = {
478
546
  POST: 'POST',
479
547
  GET: 'GET',
480
548
  PATCH: 'PATCH',
549
+ DELETE: 'DELETE',
481
550
  };
482
551
 
483
552
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -511,6 +580,8 @@ export const LOCUS = {
511
580
  INACTIVE: 'INACTIVE',
512
581
  ENDED: 'ENDED',
513
582
  INITIALIZING: 'INITIALIZING',
583
+ ACTIVE: 'ACTIVE',
584
+ TERMINATING: 'TERMINATING',
514
585
  },
515
586
  SEQUENCE: {
516
587
  UN_DEF: 'undef',
@@ -523,17 +594,28 @@ export const LOCUS = {
523
594
  SYNCDEBUG: 'sync_debug',
524
595
  };
525
596
 
597
+ export const ANNOTATION = {
598
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
599
+ };
526
600
  export const BREAKOUTS = {
527
601
  STATUS: {
528
602
  CLOSING: 'CLOSING',
603
+ CLOSED: 'CLOSED',
604
+ PENDING: 'PENDING',
605
+ OPEN: 'OPEN',
529
606
  },
530
607
  EVENTS: {
531
608
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
532
609
  MESSAGE: 'MESSAGE',
533
610
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
611
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
612
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
613
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
614
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
534
615
  },
535
616
  SESSION_TYPES: {
536
617
  MAIN: 'MAIN',
618
+ BREAKOUT: 'BREAKOUT',
537
619
  },
538
620
  SESSION_STATES: {
539
621
  ACTIVE: 'active',
@@ -543,12 +625,35 @@ export const BREAKOUTS = {
543
625
  REQUESTED: 'requested',
544
626
  },
545
627
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
546
- ACTION_TYPES: {
628
+ ACTION: {
629
+ START: 'START',
630
+ CLOSE: 'CLOSE',
547
631
  DELETE: 'DELETE',
548
632
  },
549
633
  ERROR_CODE: {
550
634
  EDIT_LOCK_TOKEN_MISMATCH: 201409024,
635
+ EDIT_NOT_AUTHORIZED: 201403007,
636
+ },
637
+ EDIT_LOCK_STATUS: {
638
+ LOCKED: 'LOCKED',
639
+ NOT_LOCKED: 'NOT_LOCKED',
640
+ UNKNOWN: 'UNKNOWN',
641
+ },
642
+ DEFAULT_TTL: 30,
643
+ };
644
+
645
+ export const INTERPRETATION = {
646
+ EVENTS: {
647
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
648
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
551
649
  },
650
+ ACTION_TYPE: {
651
+ OFFERED: 'OFFERED',
652
+ ACCEPTED: 'ACCEPTED',
653
+ REQUESTED: 'REQUESTED',
654
+ DECLINED: 'DECLINED',
655
+ },
656
+ RESOURCE_TYPE: 'SiHandover',
552
657
  };
553
658
 
554
659
  export const LOCUSINFO = {
@@ -558,13 +663,23 @@ export const LOCUSINFO = {
558
663
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
559
664
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
560
665
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
666
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
561
667
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
668
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
669
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
670
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
671
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
672
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
673
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
674
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
562
675
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
563
676
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
677
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
564
678
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
565
679
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
566
680
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
567
681
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
682
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
568
683
  MEETING_UPDATE: 'MEETING_UPDATE',
569
684
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
570
685
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -579,6 +694,7 @@ export const LOCUSINFO = {
579
694
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
580
695
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
581
696
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
697
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
582
698
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
583
699
  LINKS_SERVICES: 'LINKS_SERVICES',
584
700
  },
@@ -743,6 +859,28 @@ export const MEETING_END_REASON = {
743
859
  MEDIA_RELEASED: 'MEDIA_RELEASED',
744
860
  };
745
861
 
862
+ export enum SELF_POLICY {
863
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
864
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
865
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
866
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
867
+ SUPPORT_CHAT = 'supportChat',
868
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
869
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
870
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
871
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
872
+ SUPPORT_APP_SHARE = 'supportAppShare',
873
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
874
+ SUPPORT_FILE_SHARE = 'supportFileShare',
875
+ SUPPORT_ANNOTATION = 'supportAnnotation',
876
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
877
+ SUPPORT_VIDEO = 'supportVideo',
878
+ SUPPORT_HQV = 'supportHQV',
879
+ SUPPORT_HDV = 'supportHDV',
880
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
881
+ SUPPORT_VOIP = 'supportVoIP',
882
+ }
883
+
746
884
  export const DISPLAY_HINTS = {
747
885
  ADD_GUEST: 'ADD_GUEST',
748
886
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -766,21 +904,64 @@ export const DISPLAY_HINTS = {
766
904
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
767
905
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
768
906
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
907
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
769
908
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
770
909
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
771
910
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
772
911
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
773
912
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
774
913
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
914
+ SHARE_CONTROL: 'SHARE_CONTROL',
775
915
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
916
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
917
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
776
918
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
777
919
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
778
920
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
921
+ MUTE_ALL: 'MUTE_ALL',
922
+ UNMUTE_ALL: 'UNMUTE_ALL',
923
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
924
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
925
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
926
+
927
+ // breakout session
928
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
929
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
930
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
931
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
932
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
933
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
934
+
935
+ // participants list
936
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
937
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
938
+
939
+ // raise hand
940
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
941
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
942
+
943
+ // video
944
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
945
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
946
+
947
+ // Sharing
948
+ SHARE_FILE: 'SHARE_FILE',
949
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
950
+ SHARE_CAMERA: 'SHARE_CAMERA',
951
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
952
+ SHARE_CONTENT: 'SHARE_CONTENT',
953
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
954
+
955
+ // Voip (audio/video)
956
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
779
957
  };
780
958
 
959
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
960
+
781
961
  export const SELF_ROLES = {
782
962
  COHOST: 'COHOST',
783
963
  MODERATOR: 'MODERATOR',
964
+ ATTENDEE: 'ATTENDEE',
784
965
  };
785
966
 
786
967
  export const MEETING_STATE = {
@@ -856,7 +1037,9 @@ export const RECONNECTION = {
856
1037
  DEFAULT_TRY_COUNT: 0,
857
1038
  DEFAULT_STATUS: '',
858
1039
  },
859
- };
1040
+ } as const;
1041
+
1042
+ export type RECONNECTION_STATE = Enum<typeof RECONNECTION.STATE>;
860
1043
 
861
1044
  export const RESOURCE = {
862
1045
  CLUSTERS: 'clusters',
@@ -892,7 +1075,9 @@ export const NETWORK_STATUS = {
892
1075
  DISCONNECTED: 'DISCONNECTED',
893
1076
  RECONNECTING: 'RECONNECTING',
894
1077
  CONNECTED: 'CONNECTED',
895
- };
1078
+ } as const;
1079
+
1080
+ export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
896
1081
 
897
1082
  export const NETWORK_TYPE = {
898
1083
  VPN: 'vpn',
@@ -1047,21 +1232,11 @@ export const AVAILABLE_RESOLUTIONS = {
1047
1232
  },
1048
1233
  };
1049
1234
 
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
1235
  /*
1061
1236
  * mqa Interval for sending stats metrics
1062
1237
  */
1063
1238
 
1064
- export const MQA_INTEVAL = 60000; // mqa analyzer interval its fixed to 60000
1239
+ export const MQA_INTERVAL = 60000; // mqa analyzer interval its fixed to 60000
1065
1240
 
1066
1241
  export const MEDIA_DEVICES = {
1067
1242
  MICROPHONE: 'microphone',
@@ -1069,8 +1244,6 @@ export const MEDIA_DEVICES = {
1069
1244
  CAMERA: 'camera',
1070
1245
  };
1071
1246
 
1072
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1073
-
1074
1247
  export const PSTN_STATUS = {
1075
1248
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1076
1249
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1091,6 +1264,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1091
1264
  NONE: 'NONE', // meeting info was retrieved succesfully
1092
1265
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1093
1266
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1267
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1094
1268
  OTHER: 'OTHER', // any other error (network, etc)
1095
1269
  };
1096
1270
 
@@ -1105,3 +1279,32 @@ export const EMBEDDED_APP_TYPES = {
1105
1279
  SLIDO: 'SLIDO',
1106
1280
  OTHER: 'OTHER',
1107
1281
  };
1282
+
1283
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1284
+ supportHostKey: true,
1285
+ supportCountryList: true,
1286
+ };
1287
+
1288
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1289
+ export const IP_VERSION = {
1290
+ unknown: 0,
1291
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1292
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1293
+ ipv4_and_ipv6: 1,
1294
+ } as const;
1295
+
1296
+ export const LOCAL_SHARE_ERRORS = {
1297
+ DEVICE_NOT_JOINED: 'Floor requested but device not yet joined',
1298
+ UNDEFINED: 'undefined PUT',
1299
+ NO_MEDIA_FOR_DEVICE: 'No media session found for device',
1300
+ NO_CONFLUENCE_ID: 'Failed to request floor: 404 (null) could not find confluence id',
1301
+ CONTENT_SHARING_DISABLED: 'Content share policies are disabled',
1302
+ LOCUS_PARTICIPANT_DNE: 'does not exist in Locus',
1303
+ CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD:
1304
+ 'Content share request is not allowed while whiteboard floor request is pending',
1305
+ };
1306
+ export type IP_VERSION = Enum<typeof IP_VERSION>;
1307
+
1308
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1309
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1310
+ 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
  }