@webex/plugin-meetings 3.0.0-beta.31 → 3.0.0-beta.310

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 (378) hide show
  1. package/README.md +46 -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/edit-lock-error.js +52 -0
  11. package/dist/breakouts/edit-lock-error.js.map +1 -0
  12. package/dist/breakouts/events.js +45 -0
  13. package/dist/breakouts/events.js.map +1 -0
  14. package/dist/breakouts/index.js +709 -35
  15. package/dist/breakouts/index.js.map +1 -1
  16. package/dist/breakouts/utils.js +45 -1
  17. package/dist/breakouts/utils.js.map +1 -1
  18. package/dist/common/errors/no-meeting-info.js +51 -0
  19. package/dist/common/errors/no-meeting-info.js.map +1 -0
  20. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  21. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  22. package/dist/common/errors/webex-errors.js +48 -7
  23. package/dist/common/errors/webex-errors.js.map +1 -1
  24. package/dist/common/logs/logger-proxy.js +1 -1
  25. package/dist/common/logs/logger-proxy.js.map +1 -1
  26. package/dist/common/logs/request.js +5 -1
  27. package/dist/common/logs/request.js.map +1 -1
  28. package/dist/common/queue.js +24 -9
  29. package/dist/common/queue.js.map +1 -1
  30. package/dist/config.js +5 -11
  31. package/dist/config.js.map +1 -1
  32. package/dist/constants.js +233 -29
  33. package/dist/constants.js.map +1 -1
  34. package/dist/controls-options-manager/enums.js +14 -2
  35. package/dist/controls-options-manager/enums.js.map +1 -1
  36. package/dist/controls-options-manager/index.js +109 -15
  37. package/dist/controls-options-manager/index.js.map +1 -1
  38. package/dist/controls-options-manager/types.js +7 -0
  39. package/dist/controls-options-manager/types.js.map +1 -0
  40. package/dist/controls-options-manager/util.js +309 -18
  41. package/dist/controls-options-manager/util.js.map +1 -1
  42. package/dist/index.js +112 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/interpretation/collection.js +23 -0
  45. package/dist/interpretation/collection.js.map +1 -0
  46. package/dist/interpretation/index.js +366 -0
  47. package/dist/interpretation/index.js.map +1 -0
  48. package/dist/interpretation/siLanguage.js +25 -0
  49. package/dist/interpretation/siLanguage.js.map +1 -0
  50. package/dist/locus-info/controlsUtils.js +91 -2
  51. package/dist/locus-info/controlsUtils.js.map +1 -1
  52. package/dist/locus-info/index.js +383 -62
  53. package/dist/locus-info/index.js.map +1 -1
  54. package/dist/locus-info/infoUtils.js +7 -1
  55. package/dist/locus-info/infoUtils.js.map +1 -1
  56. package/dist/locus-info/mediaSharesUtils.js +57 -1
  57. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  58. package/dist/locus-info/parser.js +249 -72
  59. package/dist/locus-info/parser.js.map +1 -1
  60. package/dist/locus-info/selfUtils.js +89 -14
  61. package/dist/locus-info/selfUtils.js.map +1 -1
  62. package/dist/media/index.js +61 -116
  63. package/dist/media/index.js.map +1 -1
  64. package/dist/media/properties.js +73 -124
  65. package/dist/media/properties.js.map +1 -1
  66. package/dist/meeting/in-meeting-actions.js +82 -2
  67. package/dist/meeting/in-meeting-actions.js.map +1 -1
  68. package/dist/meeting/index.js +3777 -2929
  69. package/dist/meeting/index.js.map +1 -1
  70. package/dist/meeting/locusMediaRequest.js +292 -0
  71. package/dist/meeting/locusMediaRequest.js.map +1 -0
  72. package/dist/meeting/muteState.js +230 -124
  73. package/dist/meeting/muteState.js.map +1 -1
  74. package/dist/meeting/request.js +260 -196
  75. package/dist/meeting/request.js.map +1 -1
  76. package/dist/meeting/util.js +601 -417
  77. package/dist/meeting/util.js.map +1 -1
  78. package/dist/meeting-info/index.js +73 -7
  79. package/dist/meeting-info/index.js.map +1 -1
  80. package/dist/meeting-info/meeting-info-v2.js +192 -51
  81. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  82. package/dist/meeting-info/util.js +1 -1
  83. package/dist/meeting-info/util.js.map +1 -1
  84. package/dist/meeting-info/utilv2.js +36 -36
  85. package/dist/meeting-info/utilv2.js.map +1 -1
  86. package/dist/meetings/collection.js +39 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +415 -115
  89. package/dist/meetings/index.js.map +1 -1
  90. package/dist/meetings/meetings.types.js +7 -0
  91. package/dist/meetings/meetings.types.js.map +1 -0
  92. package/dist/meetings/request.js +2 -0
  93. package/dist/meetings/request.js.map +1 -1
  94. package/dist/meetings/util.js +72 -6
  95. package/dist/meetings/util.js.map +1 -1
  96. package/dist/member/index.js +58 -0
  97. package/dist/member/index.js.map +1 -1
  98. package/dist/member/types.js +25 -0
  99. package/dist/member/types.js.map +1 -0
  100. package/dist/member/util.js +132 -25
  101. package/dist/member/util.js.map +1 -1
  102. package/dist/members/collection.js +10 -0
  103. package/dist/members/collection.js.map +1 -1
  104. package/dist/members/index.js +102 -6
  105. package/dist/members/index.js.map +1 -1
  106. package/dist/members/request.js +106 -38
  107. package/dist/members/request.js.map +1 -1
  108. package/dist/members/types.js +15 -0
  109. package/dist/members/types.js.map +1 -0
  110. package/dist/members/util.js +326 -232
  111. package/dist/members/util.js.map +1 -1
  112. package/dist/metrics/constants.js +13 -5
  113. package/dist/metrics/constants.js.map +1 -1
  114. package/dist/metrics/index.js +1 -468
  115. package/dist/metrics/index.js.map +1 -1
  116. package/dist/multistream/mediaRequestManager.js +238 -49
  117. package/dist/multistream/mediaRequestManager.js.map +1 -1
  118. package/dist/multistream/receiveSlot.js +29 -16
  119. package/dist/multistream/receiveSlot.js.map +1 -1
  120. package/dist/multistream/receiveSlotManager.js +39 -36
  121. package/dist/multistream/receiveSlotManager.js.map +1 -1
  122. package/dist/multistream/remoteMedia.js +44 -18
  123. package/dist/multistream/remoteMedia.js.map +1 -1
  124. package/dist/multistream/remoteMediaGroup.js +60 -3
  125. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  126. package/dist/multistream/remoteMediaManager.js +209 -59
  127. package/dist/multistream/remoteMediaManager.js.map +1 -1
  128. package/dist/multistream/sendSlotManager.js +233 -0
  129. package/dist/multistream/sendSlotManager.js.map +1 -0
  130. package/dist/reachability/index.js +225 -59
  131. package/dist/reachability/index.js.map +1 -1
  132. package/dist/reachability/request.js +17 -8
  133. package/dist/reachability/request.js.map +1 -1
  134. package/dist/reconnection-manager/index.js +201 -156
  135. package/dist/reconnection-manager/index.js.map +1 -1
  136. package/dist/recording-controller/index.js +21 -2
  137. package/dist/recording-controller/index.js.map +1 -1
  138. package/dist/recording-controller/util.js +9 -8
  139. package/dist/recording-controller/util.js.map +1 -1
  140. package/dist/roap/index.js +62 -32
  141. package/dist/roap/index.js.map +1 -1
  142. package/dist/roap/request.js +112 -97
  143. package/dist/roap/request.js.map +1 -1
  144. package/dist/roap/turnDiscovery.js +95 -36
  145. package/dist/roap/turnDiscovery.js.map +1 -1
  146. package/dist/rtcMetrics/constants.js +12 -0
  147. package/dist/rtcMetrics/constants.js.map +1 -0
  148. package/dist/rtcMetrics/index.js +117 -0
  149. package/dist/rtcMetrics/index.js.map +1 -0
  150. package/dist/statsAnalyzer/index.js +86 -78
  151. package/dist/statsAnalyzer/index.js.map +1 -1
  152. package/dist/statsAnalyzer/mqaUtil.js +11 -10
  153. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  154. package/dist/types/annotation/annotation.types.d.ts +42 -0
  155. package/dist/types/annotation/constants.d.ts +31 -0
  156. package/dist/types/annotation/index.d.ts +117 -0
  157. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  158. package/dist/types/breakouts/events.d.ts +8 -0
  159. package/dist/types/breakouts/utils.d.ts +14 -0
  160. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  161. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  162. package/dist/types/common/errors/webex-errors.d.ts +25 -1
  163. package/dist/types/common/logs/request.d.ts +2 -0
  164. package/dist/types/common/queue.d.ts +9 -7
  165. package/dist/types/config.d.ts +1 -7
  166. package/dist/types/constants.d.ts +194 -24
  167. package/dist/types/controls-options-manager/enums.d.ts +11 -1
  168. package/dist/types/controls-options-manager/index.d.ts +17 -1
  169. package/dist/types/controls-options-manager/types.d.ts +43 -0
  170. package/dist/types/controls-options-manager/util.d.ts +1 -7
  171. package/dist/types/index.d.ts +6 -4
  172. package/dist/types/interpretation/collection.d.ts +5 -0
  173. package/dist/types/interpretation/index.d.ts +5 -0
  174. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  175. package/dist/types/locus-info/index.d.ts +57 -4
  176. package/dist/types/locus-info/parser.d.ts +67 -6
  177. package/dist/types/media/index.d.ts +2 -0
  178. package/dist/types/media/properties.d.ts +34 -48
  179. package/dist/types/meeting/in-meeting-actions.d.ts +82 -2
  180. package/dist/types/meeting/index.d.ts +463 -510
  181. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  182. package/dist/types/meeting/muteState.d.ts +99 -23
  183. package/dist/types/meeting/request.d.ts +72 -43
  184. package/dist/types/meeting/util.d.ts +101 -1
  185. package/dist/types/meeting-info/index.d.ts +13 -1
  186. package/dist/types/meeting-info/meeting-info-v2.d.ts +31 -1
  187. package/dist/types/meetings/collection.d.ts +17 -0
  188. package/dist/types/meetings/index.d.ts +98 -20
  189. package/dist/types/meetings/meetings.types.d.ts +4 -0
  190. package/dist/types/member/index.d.ts +14 -0
  191. package/dist/types/member/types.d.ts +32 -0
  192. package/dist/types/members/collection.d.ts +5 -0
  193. package/dist/types/members/index.d.ts +35 -2
  194. package/dist/types/members/request.d.ts +73 -9
  195. package/dist/types/members/types.d.ts +25 -0
  196. package/dist/types/members/util.d.ts +214 -1
  197. package/dist/types/metrics/constants.d.ts +12 -4
  198. package/dist/types/metrics/index.d.ts +4 -119
  199. package/dist/types/multistream/mediaRequestManager.d.ts +73 -5
  200. package/dist/types/multistream/receiveSlot.d.ts +13 -11
  201. package/dist/types/multistream/receiveSlotManager.d.ts +14 -4
  202. package/dist/types/multistream/remoteMedia.d.ts +8 -29
  203. package/dist/types/multistream/remoteMediaGroup.d.ts +0 -9
  204. package/dist/types/multistream/remoteMediaManager.d.ts +46 -2
  205. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  206. package/dist/types/reachability/index.d.ts +61 -7
  207. package/dist/types/reachability/request.d.ts +7 -3
  208. package/dist/types/reconnection-manager/index.d.ts +9 -0
  209. package/dist/types/recording-controller/index.d.ts +15 -1
  210. package/dist/types/recording-controller/util.d.ts +5 -4
  211. package/dist/types/roap/index.d.ts +2 -1
  212. package/dist/types/roap/request.d.ts +15 -11
  213. package/dist/types/roap/turnDiscovery.d.ts +21 -3
  214. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  215. package/dist/types/rtcMetrics/index.d.ts +47 -0
  216. package/dist/types/statsAnalyzer/index.d.ts +7 -1
  217. package/dist/types/webinar/collection.d.ts +16 -0
  218. package/dist/types/webinar/index.d.ts +5 -0
  219. package/dist/webinar/collection.js +44 -0
  220. package/dist/webinar/collection.js.map +1 -0
  221. package/dist/webinar/index.js +69 -0
  222. package/dist/webinar/index.js.map +1 -0
  223. package/package.json +23 -20
  224. package/src/annotation/annotation.types.ts +50 -0
  225. package/src/annotation/constants.ts +36 -0
  226. package/src/annotation/index.ts +328 -0
  227. package/src/breakouts/README.md +42 -12
  228. package/src/breakouts/breakout.ts +67 -9
  229. package/src/breakouts/edit-lock-error.ts +25 -0
  230. package/src/breakouts/events.ts +56 -0
  231. package/src/breakouts/index.ts +592 -20
  232. package/src/breakouts/utils.ts +42 -0
  233. package/src/common/errors/no-meeting-info.ts +24 -0
  234. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  235. package/src/common/errors/webex-errors.ts +44 -2
  236. package/src/common/logs/logger-proxy.ts +1 -1
  237. package/src/common/logs/request.ts +5 -1
  238. package/src/common/queue.ts +22 -8
  239. package/src/config.ts +4 -10
  240. package/src/constants.ts +221 -19
  241. package/src/controls-options-manager/enums.ts +12 -0
  242. package/src/controls-options-manager/index.ts +116 -21
  243. package/src/controls-options-manager/types.ts +59 -0
  244. package/src/controls-options-manager/util.ts +294 -14
  245. package/src/index.ts +40 -0
  246. package/src/interpretation/README.md +60 -0
  247. package/src/interpretation/collection.ts +19 -0
  248. package/src/interpretation/index.ts +332 -0
  249. package/src/interpretation/siLanguage.ts +18 -0
  250. package/src/locus-info/controlsUtils.ts +108 -0
  251. package/src/locus-info/index.ts +413 -59
  252. package/src/locus-info/infoUtils.ts +10 -2
  253. package/src/locus-info/mediaSharesUtils.ts +64 -0
  254. package/src/locus-info/parser.ts +258 -47
  255. package/src/locus-info/selfUtils.ts +81 -5
  256. package/src/media/index.ts +102 -122
  257. package/src/media/properties.ts +87 -110
  258. package/src/meeting/in-meeting-actions.ts +163 -3
  259. package/src/meeting/index.ts +3132 -2541
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +177 -121
  263. package/src/meeting/util.ts +588 -394
  264. package/src/meeting-info/index.ts +81 -8
  265. package/src/meeting-info/meeting-info-v2.ts +170 -14
  266. package/src/meeting-info/util.ts +1 -1
  267. package/src/meeting-info/utilv2.ts +23 -23
  268. package/src/meetings/collection.ts +33 -0
  269. package/src/meetings/index.ts +445 -123
  270. package/src/meetings/meetings.types.ts +12 -0
  271. package/src/meetings/request.ts +2 -0
  272. package/src/meetings/util.ts +80 -11
  273. package/src/member/index.ts +58 -0
  274. package/src/member/types.ts +38 -0
  275. package/src/member/util.ts +141 -25
  276. package/src/members/collection.ts +8 -0
  277. package/src/members/index.ts +134 -8
  278. package/src/members/request.ts +97 -17
  279. package/src/members/types.ts +29 -0
  280. package/src/members/util.ts +333 -240
  281. package/src/metrics/constants.ts +12 -4
  282. package/src/metrics/index.ts +1 -490
  283. package/src/multistream/mediaRequestManager.ts +289 -79
  284. package/src/multistream/receiveSlot.ts +31 -17
  285. package/src/multistream/receiveSlotManager.ts +34 -24
  286. package/src/multistream/remoteMedia.ts +27 -2
  287. package/src/multistream/remoteMediaGroup.ts +59 -0
  288. package/src/multistream/remoteMediaManager.ts +148 -30
  289. package/src/multistream/sendSlotManager.ts +170 -0
  290. package/src/reachability/index.ts +228 -37
  291. package/src/reachability/request.ts +17 -8
  292. package/src/reconnection-manager/index.ts +83 -56
  293. package/src/recording-controller/index.ts +20 -3
  294. package/src/recording-controller/util.ts +26 -9
  295. package/src/roap/index.ts +63 -32
  296. package/src/roap/request.ts +100 -104
  297. package/src/roap/turnDiscovery.ts +48 -26
  298. package/src/rtcMetrics/constants.ts +3 -0
  299. package/src/rtcMetrics/index.ts +100 -0
  300. package/src/statsAnalyzer/index.ts +105 -91
  301. package/src/statsAnalyzer/mqaUtil.ts +13 -14
  302. package/src/webinar/collection.ts +31 -0
  303. package/src/webinar/index.ts +62 -0
  304. package/test/integration/spec/converged-space-meetings.js +60 -3
  305. package/test/integration/spec/journey.js +320 -261
  306. package/test/integration/spec/space-meeting.js +76 -3
  307. package/test/unit/spec/annotation/index.ts +418 -0
  308. package/test/unit/spec/breakouts/breakout.ts +118 -28
  309. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  310. package/test/unit/spec/breakouts/events.ts +89 -0
  311. package/test/unit/spec/breakouts/index.ts +1395 -69
  312. package/test/unit/spec/breakouts/utils.js +52 -1
  313. package/test/unit/spec/common/queue.js +31 -2
  314. package/test/unit/spec/controls-options-manager/index.js +163 -0
  315. package/test/unit/spec/controls-options-manager/util.js +576 -60
  316. package/test/unit/spec/fixture/locus.js +1 -0
  317. package/test/unit/spec/interpretation/collection.ts +15 -0
  318. package/test/unit/spec/interpretation/index.ts +589 -0
  319. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  320. package/test/unit/spec/locus-info/controlsUtils.js +316 -43
  321. package/test/unit/spec/locus-info/index.js +1304 -33
  322. package/test/unit/spec/locus-info/infoUtils.js +37 -15
  323. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  324. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  325. package/test/unit/spec/locus-info/parser.js +116 -35
  326. package/test/unit/spec/locus-info/selfConstant.js +27 -4
  327. package/test/unit/spec/locus-info/selfUtils.js +208 -17
  328. package/test/unit/spec/media/index.ts +104 -37
  329. package/test/unit/spec/media/properties.ts +2 -2
  330. package/test/unit/spec/meeting/in-meeting-actions.ts +81 -3
  331. package/test/unit/spec/meeting/index.js +5216 -1956
  332. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  333. package/test/unit/spec/meeting/muteState.js +408 -208
  334. package/test/unit/spec/meeting/request.js +483 -49
  335. package/test/unit/spec/meeting/utils.js +679 -64
  336. package/test/unit/spec/meeting-info/index.js +300 -0
  337. package/test/unit/spec/meeting-info/meetinginfov2.js +526 -5
  338. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  339. package/test/unit/spec/meetings/collection.js +26 -0
  340. package/test/unit/spec/meetings/index.js +1011 -205
  341. package/test/unit/spec/meetings/utils.js +202 -2
  342. package/test/unit/spec/member/index.js +61 -6
  343. package/test/unit/spec/member/util.js +510 -34
  344. package/test/unit/spec/members/index.js +432 -1
  345. package/test/unit/spec/members/request.js +206 -27
  346. package/test/unit/spec/members/utils.js +210 -0
  347. package/test/unit/spec/metrics/index.js +1 -50
  348. package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
  349. package/test/unit/spec/multistream/receiveSlot.ts +28 -20
  350. package/test/unit/spec/multistream/receiveSlotManager.ts +32 -30
  351. package/test/unit/spec/multistream/remoteMedia.ts +30 -0
  352. package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
  353. package/test/unit/spec/multistream/remoteMediaManager.ts +326 -0
  354. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  355. package/test/unit/spec/reachability/index.ts +549 -9
  356. package/test/unit/spec/reachability/request.js +68 -0
  357. package/test/unit/spec/reconnection-manager/index.js +85 -9
  358. package/test/unit/spec/recording-controller/index.js +294 -218
  359. package/test/unit/spec/recording-controller/util.js +223 -96
  360. package/test/unit/spec/roap/index.ts +178 -64
  361. package/test/unit/spec/roap/request.ts +203 -85
  362. package/test/unit/spec/roap/turnDiscovery.ts +82 -36
  363. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  364. package/test/unit/spec/stats-analyzer/index.js +136 -2
  365. package/test/unit/spec/webinar/collection.ts +13 -0
  366. package/test/unit/spec/webinar/index.ts +60 -0
  367. package/test/utils/integrationTestUtils.js +46 -0
  368. package/test/utils/testUtils.js +0 -52
  369. package/dist/meeting/effectsState.js +0 -262
  370. package/dist/meeting/effectsState.js.map +0 -1
  371. package/dist/metrics/config.js +0 -299
  372. package/dist/metrics/config.js.map +0 -1
  373. package/dist/types/meeting/effectsState.d.ts +0 -42
  374. package/dist/types/metrics/config.d.ts +0 -178
  375. package/src/index.js +0 -16
  376. package/src/meeting/effectsState.ts +0 -211
  377. package/src/metrics/config.ts +0 -495
  378. package/test/unit/spec/meeting/effectsState.js +0 -285
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 = {
@@ -452,6 +491,40 @@ export const ERROR_DICTIONARY = {
452
491
  MESSAGE: 'Captcha is required.',
453
492
  CODE: 8,
454
493
  },
494
+ BREAKOUT_EDIT: {
495
+ NAME: 'BreakoutEditLockedError',
496
+ MESSAGE: 'Edit lock token mismatch',
497
+ CODE: 9,
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
+ },
455
528
  };
456
529
 
457
530
  export const FLOOR_ACTION = {
@@ -473,6 +546,7 @@ export const HTTP_VERBS = {
473
546
  POST: 'POST',
474
547
  GET: 'GET',
475
548
  PATCH: 'PATCH',
549
+ DELETE: 'DELETE',
476
550
  };
477
551
 
478
552
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -518,17 +592,28 @@ export const LOCUS = {
518
592
  SYNCDEBUG: 'sync_debug',
519
593
  };
520
594
 
595
+ export const ANNOTATION = {
596
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
597
+ };
521
598
  export const BREAKOUTS = {
522
599
  STATUS: {
523
600
  CLOSING: 'CLOSING',
601
+ CLOSED: 'CLOSED',
602
+ PENDING: 'PENDING',
603
+ OPEN: 'OPEN',
524
604
  },
525
605
  EVENTS: {
526
606
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
527
607
  MESSAGE: 'MESSAGE',
528
608
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
609
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
610
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
611
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
612
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
529
613
  },
530
614
  SESSION_TYPES: {
531
615
  MAIN: 'MAIN',
616
+ BREAKOUT: 'BREAKOUT',
532
617
  },
533
618
  SESSION_STATES: {
534
619
  ACTIVE: 'active',
@@ -538,6 +623,35 @@ export const BREAKOUTS = {
538
623
  REQUESTED: 'requested',
539
624
  },
540
625
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
626
+ ACTION: {
627
+ START: 'START',
628
+ CLOSE: 'CLOSE',
629
+ DELETE: 'DELETE',
630
+ },
631
+ ERROR_CODE: {
632
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
633
+ EDIT_NOT_AUTHORIZED: 201403007,
634
+ },
635
+ EDIT_LOCK_STATUS: {
636
+ LOCKED: 'LOCKED',
637
+ NOT_LOCKED: 'NOT_LOCKED',
638
+ UNKNOWN: 'UNKNOWN',
639
+ },
640
+ DEFAULT_TTL: 30,
641
+ };
642
+
643
+ export const INTERPRETATION = {
644
+ EVENTS: {
645
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
646
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
647
+ },
648
+ ACTION_TYPE: {
649
+ OFFERED: 'OFFERED',
650
+ ACCEPTED: 'ACCEPTED',
651
+ REQUESTED: 'REQUESTED',
652
+ DECLINED: 'DECLINED',
653
+ },
654
+ RESOURCE_TYPE: 'SiHandover',
541
655
  };
542
656
 
543
657
  export const LOCUSINFO = {
@@ -547,13 +661,24 @@ export const LOCUSINFO = {
547
661
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
548
662
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
549
663
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
664
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
550
665
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
666
+ CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
667
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
668
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
669
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
670
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
671
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
672
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
673
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
551
674
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
552
675
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
676
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
553
677
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
554
678
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
555
679
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
556
680
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
681
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
557
682
  MEETING_UPDATE: 'MEETING_UPDATE',
558
683
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
559
684
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -568,6 +693,7 @@ export const LOCUSINFO = {
568
693
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
569
694
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
570
695
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
696
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
571
697
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
572
698
  LINKS_SERVICES: 'LINKS_SERVICES',
573
699
  },
@@ -732,6 +858,28 @@ export const MEETING_END_REASON = {
732
858
  MEDIA_RELEASED: 'MEDIA_RELEASED',
733
859
  };
734
860
 
861
+ export enum SELF_POLICY {
862
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
863
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
864
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
865
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
866
+ SUPPORT_CHAT = 'supportChat',
867
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
868
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
869
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
870
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
871
+ SUPPORT_APP_SHARE = 'supportAppShare',
872
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
873
+ SUPPORT_FILE_SHARE = 'supportFileShare',
874
+ SUPPORT_ANNOTATION = 'supportAnnotation',
875
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
876
+ SUPPORT_VIDEO = 'supportVideo',
877
+ SUPPORT_HQV = 'supportHQV',
878
+ SUPPORT_HDV = 'supportHDV',
879
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
880
+ SUPPORT_VOIP = 'supportVoIP',
881
+ }
882
+
735
883
  export const DISPLAY_HINTS = {
736
884
  ADD_GUEST: 'ADD_GUEST',
737
885
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -755,21 +903,64 @@ export const DISPLAY_HINTS = {
755
903
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
756
904
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
757
905
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
906
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
758
907
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
759
908
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
760
909
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
761
910
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
762
911
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
763
912
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
913
+ SHARE_CONTROL: 'SHARE_CONTROL',
764
914
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
915
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
916
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
765
917
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
766
918
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
767
919
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
920
+ MUTE_ALL: 'MUTE_ALL',
921
+ UNMUTE_ALL: 'UNMUTE_ALL',
922
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
923
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
924
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
925
+
926
+ // breakout session
927
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
928
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
929
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
930
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
931
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
932
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
933
+
934
+ // participants list
935
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
936
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
937
+
938
+ // raise hand
939
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
940
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
941
+
942
+ // video
943
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
944
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
945
+
946
+ // Sharing
947
+ SHARE_FILE: 'SHARE_FILE',
948
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
949
+ SHARE_CAMERA: 'SHARE_CAMERA',
950
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
951
+ SHARE_CONTENT: 'SHARE_CONTENT',
952
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
953
+
954
+ // Voip (audio/video)
955
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
768
956
  };
769
957
 
958
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
959
+
770
960
  export const SELF_ROLES = {
771
961
  COHOST: 'COHOST',
772
962
  MODERATOR: 'MODERATOR',
963
+ ATTENDEE: 'ATTENDEE',
773
964
  };
774
965
 
775
966
  export const MEETING_STATE = {
@@ -854,7 +1045,8 @@ export const RESOURCE = {
854
1045
  };
855
1046
 
856
1047
  export const REACHABILITY = {
857
- localStorage: 'reachability.result',
1048
+ localStorageResult: 'reachability.result',
1049
+ localStorageJoinCookie: 'reachability.joinCookie',
858
1050
  namespace: 'Reachability',
859
1051
  };
860
1052
 
@@ -880,7 +1072,9 @@ export const NETWORK_STATUS = {
880
1072
  DISCONNECTED: 'DISCONNECTED',
881
1073
  RECONNECTING: 'RECONNECTING',
882
1074
  CONNECTED: 'CONNECTED',
883
- };
1075
+ } as const;
1076
+
1077
+ export type NETWORK_STATUS = Enum<typeof NETWORK_STATUS>;
884
1078
 
885
1079
  export const NETWORK_TYPE = {
886
1080
  VPN: 'vpn',
@@ -1035,16 +1229,6 @@ export const AVAILABLE_RESOLUTIONS = {
1035
1229
  },
1036
1230
  };
1037
1231
 
1038
- export const VIDEO_RESOLUTIONS = {
1039
- [QUALITY_LEVELS.LOW]: AVAILABLE_RESOLUTIONS['480p'],
1040
- [QUALITY_LEVELS.MEDIUM]: AVAILABLE_RESOLUTIONS['720p'],
1041
- [QUALITY_LEVELS.HIGH]: AVAILABLE_RESOLUTIONS['1080p'],
1042
- [QUALITY_LEVELS['360p']]: AVAILABLE_RESOLUTIONS['360p'],
1043
- [QUALITY_LEVELS['480p']]: AVAILABLE_RESOLUTIONS['480p'],
1044
- [QUALITY_LEVELS['720p']]: AVAILABLE_RESOLUTIONS['720p'],
1045
- [QUALITY_LEVELS['1080p']]: AVAILABLE_RESOLUTIONS['1080p'],
1046
- };
1047
-
1048
1232
  /*
1049
1233
  * mqa Interval for sending stats metrics
1050
1234
  */
@@ -1057,8 +1241,6 @@ export const MEDIA_DEVICES = {
1057
1241
  CAMERA: 'camera',
1058
1242
  };
1059
1243
 
1060
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1061
-
1062
1244
  export const PSTN_STATUS = {
1063
1245
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1064
1246
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1079,6 +1261,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1079
1261
  NONE: 'NONE', // meeting info was retrieved succesfully
1080
1262
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1081
1263
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1264
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1082
1265
  OTHER: 'OTHER', // any other error (network, etc)
1083
1266
  };
1084
1267
 
@@ -1093,3 +1276,22 @@ export const EMBEDDED_APP_TYPES = {
1093
1276
  SLIDO: 'SLIDO',
1094
1277
  OTHER: 'OTHER',
1095
1278
  };
1279
+
1280
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1281
+ supportHostKey: true,
1282
+ supportCountryList: true,
1283
+ };
1284
+
1285
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1286
+ export const IP_VERSION = {
1287
+ unknown: 0,
1288
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1289
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1290
+ ipv4_and_ipv6: 1,
1291
+ } as const;
1292
+
1293
+ export type IP_VERSION = Enum<typeof IP_VERSION>;
1294
+
1295
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1296
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1297
+ 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
  }