@webex/plugin-meetings 3.0.0-beta.30 → 3.0.0-beta.301

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 +3767 -2924
  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 +256 -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 +22 -0
  87. package/dist/meetings/collection.js.map +1 -1
  88. package/dist/meetings/index.js +402 -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 +84 -73
  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 +188 -21
  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 +460 -508
  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 +8 -0
  188. package/dist/types/meetings/index.d.ts +90 -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 +216 -18
  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 +3112 -2527
  260. package/src/meeting/locusMediaRequest.ts +313 -0
  261. package/src/meeting/muteState.ts +229 -131
  262. package/src/meeting/request.ts +172 -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 +20 -0
  269. package/src/meetings/index.ts +434 -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 +103 -87
  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 +5146 -1933
  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 +440 -45
  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 +14 -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 +112 -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
@@ -4,13 +4,14 @@ import {hydraTypes} from '@webex/common';
4
4
  // *********** LOWERCASE / CAMELCASE STRINGS ************
5
5
 
6
6
  export const AUDIO = 'audio';
7
- export const AUDIO_INPUT = 'audioinput';
8
7
  export const AUDIO_STATUS = 'audioStatus';
9
8
  export const ALERT = 'alert';
9
+ export const ALIAS = 'alias';
10
10
  export const ANSWER = 'answer';
11
11
 
12
12
  export const CALL = 'call';
13
13
  export const CORRELATION_ID = 'correlationId';
14
+ export const MEETINGNUMBER = 'meetingNumber';
14
15
  export const CONVERSATION_URL = 'conversationUrl';
15
16
  export const CALENDAR = 'calendar';
16
17
  export const CALENDAR_EVENTS_API = 'calendarEvents';
@@ -65,7 +66,6 @@ export const SHARE = 'share';
65
66
  export const TYPE = 'type';
66
67
 
67
68
  export const VIDEO = 'video';
68
- export const VIDEO_INPUT = 'videoinput';
69
69
  export const VIDEO_STATUS = 'videoStatus';
70
70
 
71
71
  // *********** UPPERCASE ONLY STRINGS ************
@@ -93,6 +93,7 @@ export const _JOINED_ = 'JOINED';
93
93
 
94
94
  export const _LOCUS_ID_ = 'LOCUS_ID';
95
95
  export const _LEFT_ = 'LEFT';
96
+ export const _MOVED_ = 'MOVED';
96
97
 
97
98
  export const _MEETING_LINK_ = 'MEETING_LINK';
98
99
  export const _MEETING_UUID_ = 'MEETING_UUID';
@@ -189,7 +190,8 @@ export const ICE_FAIL_TIMEOUT = 3000;
189
190
 
190
191
  export const RETRY_TIMEOUT = 3000;
191
192
 
192
- export const PC_BAIL_TIMEOUT = 8000;
193
+ export const ICE_AND_DTLS_CONNECTION_TIMEOUT = 10000;
194
+ export const ROAP_OFFER_ANSWER_EXCHANGE_TIMEOUT = 10000;
193
195
 
194
196
  // ******************** REGEX **********************
195
197
  // Please alphabetize
@@ -235,6 +237,13 @@ export const CALENDAR_EVENTS = {
235
237
  DELETE: 'event:calendar.meeting.delete',
236
238
  };
237
239
 
240
+ export const ASSIGN_ROLES_ERROR_CODES = {
241
+ ReclaimHostNotSupportedErrorCode: 2400127,
242
+ ReclaimHostNotAllowedErrorCode: 2403135,
243
+ ReclaimHostEmptyWrongKeyErrorCode: 2403136,
244
+ ReclaimHostIsHostAlreadyErrorCode: 2409150,
245
+ };
246
+
238
247
  export const DEFAULT_GET_STATS_FILTER = {
239
248
  types: [
240
249
  'track',
@@ -280,6 +289,7 @@ export const EVENT_TRIGGERS = {
280
289
  MEETING_STOPPED_SHARING_LOCAL: 'meeting:stoppedSharingLocal',
281
290
  MEETING_STARTED_SHARING_REMOTE: 'meeting:startedSharingRemote',
282
291
  MEETING_STOPPED_SHARING_REMOTE: 'meeting:stoppedSharingRemote',
292
+ MEETING_UPDATE_ANNOTATION_INFO: 'meeting:updateAnnotationInfo',
283
293
  MEETING_STARTED_SHARING_WHITEBOARD: 'meeting:startedSharingWhiteboard',
284
294
  MEETING_STOPPED_SHARING_WHITEBOARD: 'meeting:stoppedSharingWhiteboard',
285
295
  MEETING_MEDIA_LOCAL_STARTED: 'meeting:media:local:start',
@@ -297,18 +307,29 @@ export const EVENT_TRIGGERS = {
297
307
  MEETING_RINGING_STOP: 'meeting:ringingStop',
298
308
  MEETING_SELF_LOBBY_WAITING: 'meeting:self:lobbyWaiting',
299
309
  MEETING_SELF_GUEST_ADMITTED: 'meeting:self:guestAdmitted',
310
+ MEETING_SELF_VIDEO_MUTED_BY_OTHERS: 'meeting:self:videoMutedByOthers',
311
+ MEETING_SELF_VIDEO_UNMUTED_BY_OTHERS: 'meeting:self:videoUnmutedByOthers',
300
312
  MEETING_SELF_MUTED_BY_OTHERS: 'meeting:self:mutedByOthers',
301
313
  MEETING_SELF_UNMUTED_BY_OTHERS: 'meeting:self:unmutedByOthers',
302
314
  MEETING_SELF_REQUESTED_TO_UNMUTE: 'meeting:self:requestedToUnmute',
303
315
  MEETING_SELF_PHONE_AUDIO_UPDATE: 'meeting:self:phoneAudioUpdate',
304
316
  MEETING_SELF_CANNOT_VIEW_PARTICIPANT_LIST: 'meeting:self:cannotViewParticipantList',
305
317
  MEETING_SELF_IS_SHARING_BLOCKED: 'meeting:self:isSharingBlocked',
318
+ MEETING_SELF_ROLES_CHANGED: 'meeting:self:rolesChanged',
306
319
  MEETING_CONTROLS_LAYOUT_UPDATE: 'meeting:layout:update',
307
320
  MEETING_ENTRY_EXIT_TONE_UPDATE: 'meeting:entryExitTone:update',
308
321
  MEETING_BREAKOUTS_UPDATE: 'meeting:breakouts:update',
309
322
  MEETING_BREAKOUTS_CLOSING: 'meeting:breakouts:closing',
310
323
  MEETING_BREAKOUTS_MESSAGE: 'meeting:breakouts:message',
324
+ MEETING_BREAKOUTS_ASK_RETURN_TO_MAIN: 'meeting:breakouts:askReturnToMain',
325
+ MEETING_BREAKOUTS_LEAVE: 'meeting:breakouts:leave',
326
+ MEETING_BREAKOUTS_ASK_FOR_HELP: 'meeting:breakouts:askForHelp',
327
+ MEETING_BREAKOUTS_PRE_ASSIGNMENTS_UPDATE: 'meeting:breakouts:preAssignmentsUpdate',
328
+ MEETING_INTERPRETATION_UPDATE: 'meeting:interpretation:update',
329
+ MEETING_INTERPRETATION_SUPPORT_LANGUAGES_UPDATE: 'meeting:interpretation:supportLanguagesUpdate',
330
+ MEETING_INTERPRETATION_HANDOFF_REQUESTS_ARRIVED: 'meeting:interpretation:handoffRequestsArrived',
311
331
  MEMBERS_UPDATE: 'members:update',
332
+ MEMBERS_CLEAR: 'members:clear',
312
333
  MEMBERS_CONTENT_UPDATE: 'members:content:update',
313
334
  MEMBERS_HOST_UPDATE: 'members:host:update',
314
335
  MEMBERS_SELF_UPDATE: 'members:self:update',
@@ -337,17 +358,28 @@ export const EVENT_TRIGGERS = {
337
358
  REMOTE_MEDIA_AUDIO_CREATED: 'media:remoteAudio:created',
338
359
  REMOTE_MEDIA_SCREEN_SHARE_AUDIO_CREATED: 'media:remoteScreenShareAudio:created',
339
360
  REMOTE_MEDIA_VIDEO_LAYOUT_CHANGED: 'media:remoteVideo:layoutChanged',
361
+ // Controls
362
+ MEETING_CONTROLS_MUTE_ON_ENTRY_UPDATED: 'meeting:controls:mute-on-entry:updated',
363
+ MEETING_CONTROLS_SHARE_CONTROL_UPDATED: 'meeting:controls:share-control:updated',
364
+ MEETING_CONTROLS_DISALLOW_UNMUTE_UPDATED: 'meeting:controls:disallow-unmute:updated',
365
+ MEETING_CONTROLS_REACTIONS_UPDATED: 'meeting:controls:reactions:updated',
366
+ MEETING_CONTROLS_VIEW_THE_PARTICIPANTS_LIST_UPDATED:
367
+ 'meeting:controls:view-the-participants-list:updated',
368
+ MEETING_CONTROLS_RAISE_HAND_UPDATED: 'meeting:controls:raise-hand:updated',
369
+ MEETING_CONTROLS_VIDEO_UPDATED: 'meeting:controls:video:updated',
370
+ // Locus URL changed
371
+ MEETING_LOCUS_URL_UPDATE: 'meeting:locus:locusUrl:update',
372
+ MEETING_STREAM_PUBLISH_STATE_CHANGED: 'meeting:streamPublishStateChanged',
340
373
  };
341
374
 
342
375
  export const EVENT_TYPES = {
343
376
  SELF: 'self',
344
377
  OTHER: 'other',
345
- LOCAL: 'local',
346
378
  REMOTE: 'remote',
347
379
  REMOTE_AUDIO: 'remoteAudio',
348
380
  REMOTE_VIDEO: 'remoteVideo',
349
381
  REMOTE_SHARE: 'remoteShare',
350
- LOCAL_SHARE: 'localShare',
382
+ REMOTE_SHARE_AUDIO: 'remoteShareAudio',
351
383
  ERROR: 'error',
352
384
  };
353
385
 
@@ -360,9 +392,12 @@ export const MEETING_REMOVED_REASON = {
360
392
  FULLSTATE_REMOVED: 'FULLSTATE_REMOVED', // meeting got dropped ? not sure
361
393
  MEETING_INACTIVE_TERMINATING: 'MEETING_INACTIVE_TERMINATING', // Meeting got ended or everyone left the meeting
362
394
  CLIENT_LEAVE_REQUEST: 'CLIENT_LEAVE_REQUEST', // You triggered leave meeting
395
+ CLIENT_LEAVE_REQUEST_TAB_CLOSED: 'CLIENT_LEAVE_REQUEST_TAB_CLOSED', // You triggered leave meeting, such as closing the browser tab directly
363
396
  USER_ENDED_SHARE_STREAMS: 'USER_ENDED_SHARE_STREAMS', // user triggered stop share
364
397
  NO_MEETINGS_TO_SYNC: 'NO_MEETINGS_TO_SYNC', // After the syncMeeting no meeting exists
365
398
  MEETING_CONNECTION_FAILED: 'MEETING_CONNECTION_FAILED', // meeting failed to connect due to ice failures or firewall issue
399
+ LOCUS_DTO_SYNC_FAILED: 'LOCUS_DTO_SYNC_FAILED', // failed to get any Locus DTO for that meeting
400
+ MISSING_MEETING_INFO: 'MISSING_MEETING_INFO', // meeting info failed to be fetched
366
401
  };
367
402
 
368
403
  // One one one calls ends for the following reasons
@@ -377,6 +412,8 @@ export const CALL_REMOVED_REASON = {
377
412
  export const SHARE_STOPPED_REASON = {
378
413
  SELF_STOPPED: 'SELF_STOPPED',
379
414
  MEETING_REJOIN: 'MEETING_REJOIN',
415
+ MEDIA_RECONNECTION: 'MEDIA_RECONNECTION',
416
+ TRACK_ENDED: 'TRACK_ENDED',
380
417
  };
381
418
 
382
419
  export const EVENTS = {
@@ -452,6 +489,40 @@ export const ERROR_DICTIONARY = {
452
489
  MESSAGE: 'Captcha is required.',
453
490
  CODE: 8,
454
491
  },
492
+ BREAKOUT_EDIT: {
493
+ NAME: 'BreakoutEditLockedError',
494
+ MESSAGE: 'Edit lock token mismatch',
495
+ CODE: 9,
496
+ },
497
+ NO_MEETING_INFO: {
498
+ NAME: 'NoMeetingInfo',
499
+ MESSAGE: 'No meeting info found for the meeting',
500
+ CODE: 10,
501
+ },
502
+ RECLAIM_HOST_ROLE_NOT_SUPPORTED: {
503
+ NAME: 'ReclaimHostRoleNotSupported',
504
+ MESSAGE:
505
+ 'Non converged meetings, PSTN or SIP users in converged meetings are not supported currently.',
506
+ CODE: 11,
507
+ },
508
+ RECLAIM_HOST_ROLE_NOT_ALLOWED: {
509
+ NAME: 'ReclaimHostRoleNotAllowed',
510
+ MESSAGE:
511
+ '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.',
512
+ CODE: 12,
513
+ },
514
+ RECLAIM_HOST_ROLE_EMPTY_OR_WRONG_KEY: {
515
+ NAME: 'ReclaimHostRoleEmptyOrWrongKey',
516
+ MESSAGE:
517
+ '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.',
518
+ CODE: 13,
519
+ },
520
+ RECLAIM_HOST_ROLE_IS_ALREADY_HOST: {
521
+ NAME: 'ReclaimHostRoleIsAlreadyHost',
522
+ MESSAGE:
523
+ 'Participant Having Host Role Already. Participant who sends request to reclaim host role has already a host role.',
524
+ CODE: 14,
525
+ },
455
526
  };
456
527
 
457
528
  export const FLOOR_ACTION = {
@@ -473,6 +544,7 @@ export const HTTP_VERBS = {
473
544
  POST: 'POST',
474
545
  GET: 'GET',
475
546
  PATCH: 'PATCH',
547
+ DELETE: 'DELETE',
476
548
  };
477
549
 
478
550
  // https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/iceGatheringState
@@ -518,17 +590,28 @@ export const LOCUS = {
518
590
  SYNCDEBUG: 'sync_debug',
519
591
  };
520
592
 
593
+ export const ANNOTATION = {
594
+ ANNOTATION_ON_SHARE_SUPPORTED: 'ANNOTATION_ON_SHARE_SUPPORTED',
595
+ };
521
596
  export const BREAKOUTS = {
522
597
  STATUS: {
523
598
  CLOSING: 'CLOSING',
599
+ CLOSED: 'CLOSED',
600
+ PENDING: 'PENDING',
601
+ OPEN: 'OPEN',
524
602
  },
525
603
  EVENTS: {
526
604
  BREAKOUTS_CLOSING: 'BREAKOUTS_CLOSING',
527
605
  MESSAGE: 'MESSAGE',
528
606
  MEMBERS_UPDATE: 'MEMBERS_UPDATE',
607
+ ASK_RETURN_TO_MAIN: 'ASK_RETURN_TO_MAIN',
608
+ LEAVE_BREAKOUT: 'LEAVE_BREAKOUT',
609
+ ASK_FOR_HELP: 'ASK_FOR_HELP',
610
+ PRE_ASSIGNMENTS_UPDATE: 'PRE_ASSIGNMENTS_UPDATE',
529
611
  },
530
612
  SESSION_TYPES: {
531
613
  MAIN: 'MAIN',
614
+ BREAKOUT: 'BREAKOUT',
532
615
  },
533
616
  SESSION_STATES: {
534
617
  ACTIVE: 'active',
@@ -538,6 +621,35 @@ export const BREAKOUTS = {
538
621
  REQUESTED: 'requested',
539
622
  },
540
623
  BREAKOUTS_SUPPORTED: 'BREAKOUTS_SUPPORTED',
624
+ ACTION: {
625
+ START: 'START',
626
+ CLOSE: 'CLOSE',
627
+ DELETE: 'DELETE',
628
+ },
629
+ ERROR_CODE: {
630
+ EDIT_LOCK_TOKEN_MISMATCH: 201409024,
631
+ EDIT_NOT_AUTHORIZED: 201403007,
632
+ },
633
+ EDIT_LOCK_STATUS: {
634
+ LOCKED: 'LOCKED',
635
+ NOT_LOCKED: 'NOT_LOCKED',
636
+ UNKNOWN: 'UNKNOWN',
637
+ },
638
+ DEFAULT_TTL: 30,
639
+ };
640
+
641
+ export const INTERPRETATION = {
642
+ EVENTS: {
643
+ SUPPORT_LANGUAGES_UPDATE: 'SUPPORT_LANGUAGES_UPDATE',
644
+ HANDOFF_REQUESTS_ARRIVED: 'HANDOFF_REQUESTS_ARRIVED',
645
+ },
646
+ ACTION_TYPE: {
647
+ OFFERED: 'OFFERED',
648
+ ACCEPTED: 'ACCEPTED',
649
+ REQUESTED: 'REQUESTED',
650
+ DECLINED: 'DECLINED',
651
+ },
652
+ RESOURCE_TYPE: 'SiHandover',
541
653
  };
542
654
 
543
655
  export const LOCUSINFO = {
@@ -547,13 +659,24 @@ export const LOCUSINFO = {
547
659
  CONTROLS_MEETING_TRANSCRIBE_UPDATED: 'CONTROLS_MEETING_TRANSCRIBE_UPDATED',
548
660
  CONTROLS_MEETING_BREAKOUT_UPDATED: 'CONTROLS_MEETING_BREAKOUT_UPDATED',
549
661
  CONTROLS_MEETING_CONTAINER_UPDATED: 'CONTROLS_MEETING_CONTAINER_UPDATED',
662
+ CONTROLS_MEETING_INTERPRETATION_UPDATED: 'CONTROLS_MEETING_INTERPRETATION_UPDATED',
550
663
  CONTROLS_ENTRY_EXIT_TONE_UPDATED: 'CONTROLS_ENTRY_EXIT_TONE_UPDATED',
664
+ CONTROLS_JOIN_BREAKOUT_FROM_MAIN: 'CONTROLS_JOIN_BREAKOUT_FROM_MAIN',
665
+ CONTROLS_MUTE_ON_ENTRY_CHANGED: 'CONTROLS_MUTE_ON_ENTRY_CHANGED',
666
+ CONTROLS_SHARE_CONTROL_CHANGED: 'CONTROLS_SHARE_CONTROL_CHANGED',
667
+ CONTROLS_DISALLOW_UNMUTE_CHANGED: 'CONTROLS_DISALLOW_UNMUTE_CHANGED',
668
+ CONTROLS_REACTIONS_CHANGED: 'CONTROLS_REACTIONS_CHANGED',
669
+ CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED: 'CONTROLS_VIEW_THE_PARTICIPANTS_LIST_CHANGED',
670
+ CONTROLS_RAISE_HAND_CHANGED: 'CONTROLS_RAISE_HAND_CHANGED',
671
+ CONTROLS_VIDEO_CHANGED: 'CONTROLS_VIDEO_CHANGED',
551
672
  SELF_UNADMITTED_GUEST: 'SELF_UNADMITTED_GUEST',
552
673
  SELF_ADMITTED_GUEST: 'SELF_ADMITTED_GUEST',
674
+ SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED: 'SELF_REMOTE_VIDEO_MUTE_STATUS_UPDATED',
553
675
  SELF_REMOTE_MUTE_STATUS_UPDATED: 'SELF_REMOTE_MUTE_STATUS_UPDATED',
554
676
  LOCAL_UNMUTE_REQUESTED: 'LOCAL_UNMUTE_REQUESTED',
555
677
  LOCAL_UNMUTE_REQUIRED: 'LOCAL_UNMUTE_REQUIRED',
556
678
  SELF_MODERATOR_CHANGED: 'SELF_MODERATOR_CHANGED',
679
+ SELF_ROLES_CHANGED: 'SELF_ROLES_CHANGED',
557
680
  MEETING_UPDATE: 'MEETING_UPDATE',
558
681
  MEDIA_STATUS_CHANGE: 'MEDIA_STATUS_CHANGE',
559
682
  FULL_STATE_TYPE_UPDATE: 'FULL_STATE_TYPE_UPDATE',
@@ -568,6 +691,7 @@ export const LOCUSINFO = {
568
691
  SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE: 'SELF_CANNOT_VIEW_PARTICIPANT_LIST_CHANGE',
569
692
  SELF_IS_SHARING_BLOCKED_CHANGE: 'SELF_IS_SHARING_BLOCKED_CHANGE',
570
693
  SELF_MEETING_BREAKOUTS_CHANGED: 'SELF_MEETING_BREAKOUTS_CHANGED',
694
+ SELF_MEETING_INTERPRETATION_CHANGED: 'SELF_MEETING_INTERPRETATION_CHANGED',
571
695
  MEDIA_INACTIVITY: 'MEDIA_INACTIVITY',
572
696
  LINKS_SERVICES: 'LINKS_SERVICES',
573
697
  },
@@ -732,6 +856,28 @@ export const MEETING_END_REASON = {
732
856
  MEDIA_RELEASED: 'MEDIA_RELEASED',
733
857
  };
734
858
 
859
+ export enum SELF_POLICY {
860
+ ENFORCE_VIRTUAL_BACKGROUND = 'enforceVirtualBackground',
861
+ SUPPORT_LOCAL_RECORD = 'supportLocalRecord',
862
+ SUPPORT_NETWORK_BASED_RECORD = 'supportNetworkBasedRecord',
863
+ SUPPORT_REALTIME_CLOSE_CAPTION = 'supportRealtimeCloseCaption',
864
+ SUPPORT_CHAT = 'supportChat',
865
+ SUPPORT_DESKTOP_SHARE_REMOTE = 'supportDesktopShareRemote',
866
+ SUPPORT_DESKTOP_SHARE = 'supportDesktopShare',
867
+ SUPPORT_WHITEBOARD = 'supportWhiteboard',
868
+ SUPPORT_FILE_TRANSFER = 'supportFileTransfer',
869
+ SUPPORT_APP_SHARE = 'supportAppShare',
870
+ SUPPORT_CAMERA_SHARE = 'supportCameraShare',
871
+ SUPPORT_FILE_SHARE = 'supportFileShare',
872
+ SUPPORT_ANNOTATION = 'supportAnnotation',
873
+ SUPPORT_BROADCAST_MESSAGE = 'supportBroadcastMessage',
874
+ SUPPORT_VIDEO = 'supportVideo',
875
+ SUPPORT_HQV = 'supportHQV',
876
+ SUPPORT_HDV = 'supportHDV',
877
+ SUPPORT_PARTICIPANT_LIST = 'supportParticipantList',
878
+ SUPPORT_VOIP = 'supportVoIP',
879
+ }
880
+
735
881
  export const DISPLAY_HINTS = {
736
882
  ADD_GUEST: 'ADD_GUEST',
737
883
  ROSTER_WAITING_TO_JOIN: 'ROSTER_WAITING_TO_JOIN',
@@ -755,21 +901,64 @@ export const DISPLAY_HINTS = {
755
901
  DISPLAY_NON_ENGLISH_ASR: 'DISPLAY_NON_ENGLISH_ASR',
756
902
  TRANSCRIPTION_CONTROL_START: 'TRANSCRIPTION_CONTROL_START',
757
903
  TRANSCRIPTION_CONTROL_STOP: 'TRANSCRIPTION_CONTROL_STOP',
904
+ SAVE_TRANSCRIPTS_ENABLED: 'SAVE_TRANSCRIPTS_ENABLED',
758
905
  WEBEX_ASSISTANT_STATUS_ACTIVE: 'WEBEX_ASSISTANT_STATUS_ACTIVE',
759
906
  WAITING_FOR_OTHERS: 'WAITING_FOR_OTHERS',
760
907
  ENABLE_REACTIONS: 'ENABLE_REACTIONS',
761
908
  DISABLE_REACTIONS: 'DISABLE_REACTIONS',
762
909
  REACTIONS_ACTIVE: 'REACTIONS_ACTIVE',
763
910
  REACTIONS_INACTIVE: 'REACTIONS_INACTIVE',
911
+ SHARE_CONTROL: 'SHARE_CONTROL',
764
912
  ENABLE_MUTE_ON_ENTRY: 'ENABLE_MUTE_ON_ENTRY',
913
+ ENABLE_SHOW_DISPLAY_NAME: 'ENABLE_SHOW_DISPLAY_NAME',
914
+ DISABLE_SHOW_DISPLAY_NAME: 'DISABLE_SHOW_DISPLAY_NAME',
765
915
  DISABLE_MUTE_ON_ENTRY: 'DISABLE_MUTE_ON_ENTRY',
766
916
  ENABLE_HARD_MUTE: 'ENABLE_HARD_MUTE',
767
917
  DISABLE_HARD_MUTE: 'DISABLE_HARD_MUTE',
918
+ MUTE_ALL: 'MUTE_ALL',
919
+ UNMUTE_ALL: 'UNMUTE_ALL',
920
+ PRESENTER_CONTROL: 'PRESENTER_CONTROL',
921
+ CAN_RENAME_SELF_AND_OBSERVED: 'CAN_RENAME_SELF_AND_OBSERVED',
922
+ CAN_RENAME_OTHERS: 'CAN_RENAME_OTHERS',
923
+
924
+ // breakout session
925
+ BREAKOUT_MANAGEMENT: 'BREAKOUT_MANAGEMENT',
926
+ BROADCAST_MESSAGE_TO_BREAKOUT: 'BROADCAST_MESSAGE_TO_BREAKOUT',
927
+ UCF_SUPPRESS_BREAKOUTS_SUPPORT: 'UCF_SUPPRESS_BREAKOUTS_SUPPORT',
928
+ DISABLE_ASK_FOR_HELP: 'DISABLE_ASK_FOR_HELP',
929
+ DISABLE_BREAKOUT_PREASSIGNMENTS: 'DISABLE_BREAKOUT_PREASSIGNMENTS',
930
+ DISABLE_LOBBY_TO_BREAKOUT: 'DISABLE_LOBBY_TO_BREAKOUT',
931
+
932
+ // participants list
933
+ DISABLE_VIEW_THE_PARTICIPANT_LIST: 'DISABLE_VIEW_THE_PARTICIPANT_LIST',
934
+ ENABLE_VIEW_THE_PARTICIPANT_LIST: 'ENABLE_VIEW_THE_PARTICIPANT_LIST',
935
+
936
+ // raise hand
937
+ DISABLE_RAISE_HAND: 'DISABLE_RAISE_HAND',
938
+ ENABLE_RAISE_HAND: 'ENABLE_RAISE_HAND',
939
+
940
+ // video
941
+ DISABLE_VIDEO: 'DISABLE_VIDEO',
942
+ ENABLE_VIDEO: 'ENABLE_VIDEO',
943
+
944
+ // Sharing
945
+ SHARE_FILE: 'SHARE_FILE',
946
+ SHARE_APPLICATION: 'SHARE_APPLICATION',
947
+ SHARE_CAMERA: 'SHARE_CAMERA',
948
+ SHARE_DESKTOP: 'SHARE_DESKTOP',
949
+ SHARE_CONTENT: 'SHARE_CONTENT',
950
+ SHARE_WHITEBOARD: 'SHARE_WHITEBOARD',
951
+
952
+ // Voip (audio/video)
953
+ VOIP_IS_ENABLED: 'VOIP_IS_ENABLED',
768
954
  };
769
955
 
956
+ export const INTERSTITIAL_DISPLAY_HINTS = [DISPLAY_HINTS.VOIP_IS_ENABLED];
957
+
770
958
  export const SELF_ROLES = {
771
959
  COHOST: 'COHOST',
772
960
  MODERATOR: 'MODERATOR',
961
+ ATTENDEE: 'ATTENDEE',
773
962
  };
774
963
 
775
964
  export const MEETING_STATE = {
@@ -854,7 +1043,8 @@ export const RESOURCE = {
854
1043
  };
855
1044
 
856
1045
  export const REACHABILITY = {
857
- localStorage: 'reachability.result',
1046
+ localStorageResult: 'reachability.result',
1047
+ localStorageJoinCookie: 'reachability.joinCookie',
858
1048
  namespace: 'Reachability',
859
1049
  };
860
1050
 
@@ -1035,16 +1225,6 @@ export const AVAILABLE_RESOLUTIONS = {
1035
1225
  },
1036
1226
  };
1037
1227
 
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
1228
  /*
1049
1229
  * mqa Interval for sending stats metrics
1050
1230
  */
@@ -1057,8 +1237,6 @@ export const MEDIA_DEVICES = {
1057
1237
  CAMERA: 'camera',
1058
1238
  };
1059
1239
 
1060
- export const METRICS_JOIN_TIMES_MAX_DURATION = 1200000;
1061
-
1062
1240
  export const PSTN_STATUS = {
1063
1241
  JOINED: 'JOINED', // we have provisioned a pstn device, which can be used to connect
1064
1242
  CONNECTED: 'CONNECTED', // user is connected to audio with pstn device
@@ -1079,6 +1257,7 @@ export const MEETING_INFO_FAILURE_REASON = {
1079
1257
  NONE: 'NONE', // meeting info was retrieved succesfully
1080
1258
  WRONG_PASSWORD: 'WRONG_PASSWORD', // meeting requires password and no password or wrong one was provided
1081
1259
  WRONG_CAPTCHA: 'WRONG_CAPTCHA', // wbxappapi requires a captcha code or a wrong captcha code was provided
1260
+ POLICY: 'POLICY', // meeting info request violates some meeting policy
1082
1261
  OTHER: 'OTHER', // any other error (network, etc)
1083
1262
  };
1084
1263
 
@@ -1093,3 +1272,22 @@ export const EMBEDDED_APP_TYPES = {
1093
1272
  SLIDO: 'SLIDO',
1094
1273
  OTHER: 'OTHER',
1095
1274
  };
1275
+
1276
+ export const DEFAULT_MEETING_INFO_REQUEST_BODY = {
1277
+ supportHostKey: true,
1278
+ supportCountryList: true,
1279
+ };
1280
+
1281
+ /** the values for IP_VERSION are fixed and defined in Orpheus API */
1282
+ export const IP_VERSION = {
1283
+ unknown: 0,
1284
+ only_ipv4: 4, // we know we have ipv4, we don't know or we don't have ipv6
1285
+ only_ipv6: 6, // we know we have ipv6, we don't know or we don't have ipv4
1286
+ ipv4_and_ipv6: 1,
1287
+ } as const;
1288
+
1289
+ export type IP_VERSION = (typeof IP_VERSION)[keyof typeof IP_VERSION];
1290
+
1291
+ // constant for if the permissionToken is about to expire in the next 30 seconds, refresh it
1292
+ export const MEETING_PERMISSION_TOKEN_REFRESH_THRESHOLD_IN_SEC = 30;
1293
+ 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
  }