@webex/plugin-meetings 3.0.0-beta.3 → 3.0.0-beta.300

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 (601) hide show
  1. package/README.md +46 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +9 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +315 -68
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +114 -17
  89. package/dist/index.js.map +1 -1
  90. package/dist/interpretation/collection.js +23 -0
  91. package/dist/interpretation/collection.js.map +1 -0
  92. package/dist/interpretation/index.js +366 -0
  93. package/dist/interpretation/index.js.map +1 -0
  94. package/dist/interpretation/siLanguage.js +25 -0
  95. package/dist/interpretation/siLanguage.js.map +1 -0
  96. package/dist/locus-info/controlsUtils.js +101 -29
  97. package/dist/locus-info/controlsUtils.js.map +1 -1
  98. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  99. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  100. package/dist/locus-info/fullState.js +0 -15
  101. package/dist/locus-info/fullState.js.map +1 -1
  102. package/dist/locus-info/hostUtils.js +4 -12
  103. package/dist/locus-info/hostUtils.js.map +1 -1
  104. package/dist/locus-info/index.js +561 -246
  105. package/dist/locus-info/index.js.map +1 -1
  106. package/dist/locus-info/infoUtils.js +10 -38
  107. package/dist/locus-info/infoUtils.js.map +1 -1
  108. package/dist/locus-info/mediaSharesUtils.js +68 -38
  109. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  110. package/dist/locus-info/parser.js +314 -163
  111. package/dist/locus-info/parser.js.map +1 -1
  112. package/dist/locus-info/selfUtils.js +110 -92
  113. package/dist/locus-info/selfUtils.js.map +1 -1
  114. package/dist/media/index.js +103 -231
  115. package/dist/media/index.js.map +1 -1
  116. package/dist/media/properties.js +137 -222
  117. package/dist/media/properties.js.map +1 -1
  118. package/dist/media/util.js +2 -9
  119. package/dist/media/util.js.map +1 -1
  120. package/dist/mediaQualityMetrics/config.js +505 -495
  121. package/dist/mediaQualityMetrics/config.js.map +1 -1
  122. package/dist/meeting/in-meeting-actions.js +93 -14
  123. package/dist/meeting/in-meeting-actions.js.map +1 -1
  124. package/dist/meeting/index.js +4624 -3740
  125. package/dist/meeting/index.js.map +1 -1
  126. package/dist/meeting/locusMediaRequest.js +292 -0
  127. package/dist/meeting/locusMediaRequest.js.map +1 -0
  128. package/dist/meeting/muteState.js +249 -184
  129. package/dist/meeting/muteState.js.map +1 -1
  130. package/dist/meeting/request.js +400 -346
  131. package/dist/meeting/request.js.map +1 -1
  132. package/dist/meeting/request.type.js +7 -0
  133. package/dist/meeting/request.type.js.map +1 -0
  134. package/dist/meeting/state.js +21 -31
  135. package/dist/meeting/state.js.map +1 -1
  136. package/dist/meeting/util.js +598 -586
  137. package/dist/meeting/util.js.map +1 -1
  138. package/dist/meeting-info/collection.js +6 -25
  139. package/dist/meeting-info/collection.js.map +1 -1
  140. package/dist/meeting-info/index.js +87 -39
  141. package/dist/meeting-info/index.js.map +1 -1
  142. package/dist/meeting-info/meeting-info-v2.js +349 -283
  143. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  144. package/dist/meeting-info/request.js +3 -15
  145. package/dist/meeting-info/request.js.map +1 -1
  146. package/dist/meeting-info/util.js +98 -183
  147. package/dist/meeting-info/util.js.map +1 -1
  148. package/dist/meeting-info/utilv2.js +143 -234
  149. package/dist/meeting-info/utilv2.js.map +1 -1
  150. package/dist/meetings/collection.js +26 -19
  151. package/dist/meetings/collection.js.map +1 -1
  152. package/dist/meetings/index.js +813 -596
  153. package/dist/meetings/index.js.map +1 -1
  154. package/dist/meetings/meetings.types.js +7 -0
  155. package/dist/meetings/meetings.types.js.map +1 -0
  156. package/dist/meetings/request.js +26 -41
  157. package/dist/meetings/request.js.map +1 -1
  158. package/dist/meetings/util.js +183 -156
  159. package/dist/meetings/util.js.map +1 -1
  160. package/dist/member/index.js +135 -85
  161. package/dist/member/index.js.map +1 -1
  162. package/dist/member/types.js +25 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +158 -88
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +13 -12
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +194 -204
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +113 -68
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +15 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +324 -259
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +14 -7
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +11 -558
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +263 -50
  181. package/dist/multistream/mediaRequestManager.js.map +1 -1
  182. package/dist/multistream/receiveSlot.js +58 -65
  183. package/dist/multistream/receiveSlot.js.map +1 -1
  184. package/dist/multistream/receiveSlotManager.js +76 -95
  185. package/dist/multistream/receiveSlotManager.js.map +1 -1
  186. package/dist/multistream/remoteMedia.js +62 -76
  187. package/dist/multistream/remoteMedia.js.map +1 -1
  188. package/dist/multistream/remoteMediaGroup.js +66 -43
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  190. package/dist/multistream/remoteMediaManager.js +536 -439
  191. package/dist/multistream/remoteMediaManager.js.map +1 -1
  192. package/dist/multistream/sendSlotManager.js +233 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +40 -59
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +21 -45
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +1 -31
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +0 -13
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +322 -200
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +20 -26
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +13 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +109 -0
  209. package/dist/reactions/reactions.js.map +1 -0
  210. package/dist/reactions/reactions.type.js +36 -0
  211. package/dist/reactions/reactions.type.js.map +1 -0
  212. package/dist/reconnection-manager/index.js +388 -476
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +17 -0
  215. package/dist/recording-controller/enums.js.map +1 -0
  216. package/dist/recording-controller/index.js +362 -0
  217. package/dist/recording-controller/index.js.map +1 -0
  218. package/dist/recording-controller/util.js +64 -0
  219. package/dist/recording-controller/util.js.map +1 -0
  220. package/dist/roap/index.js +99 -94
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +131 -135
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +151 -101
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +12 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +117 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +1 -95
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +416 -497
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +145 -88
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +22 -47
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/types/annotation/annotation.types.d.ts +42 -0
  239. package/dist/types/annotation/constants.d.ts +31 -0
  240. package/dist/types/annotation/index.d.ts +117 -0
  241. package/dist/types/breakouts/breakout.d.ts +8 -0
  242. package/dist/types/breakouts/collection.d.ts +5 -0
  243. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  244. package/dist/types/breakouts/events.d.ts +8 -0
  245. package/dist/types/breakouts/index.d.ts +5 -0
  246. package/dist/types/breakouts/request.d.ts +22 -0
  247. package/dist/types/breakouts/utils.d.ts +15 -0
  248. package/dist/types/common/browser-detection.d.ts +9 -0
  249. package/dist/types/common/collection.d.ts +48 -0
  250. package/dist/types/common/config.d.ts +2 -0
  251. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  252. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  253. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  254. package/dist/types/common/errors/media.d.ts +15 -0
  255. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  256. package/dist/types/common/errors/parameter.d.ts +15 -0
  257. package/dist/types/common/errors/password-error.d.ts +15 -0
  258. package/dist/types/common/errors/permission.d.ts +14 -0
  259. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  260. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  261. package/dist/types/common/errors/reconnection.d.ts +15 -0
  262. package/dist/types/common/errors/stats.d.ts +15 -0
  263. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  264. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  265. package/dist/types/common/events/events-scope.d.ts +17 -0
  266. package/dist/types/common/events/events.d.ts +12 -0
  267. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  268. package/dist/types/common/events/util.d.ts +2 -0
  269. package/dist/types/common/logs/logger-config.d.ts +2 -0
  270. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  271. package/dist/types/common/logs/request.d.ts +36 -0
  272. package/dist/types/common/queue.d.ts +34 -0
  273. package/dist/types/config.d.ts +71 -0
  274. package/dist/types/constants.d.ts +1066 -0
  275. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  276. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  277. package/dist/types/controls-options-manager/index.d.ts +136 -0
  278. package/dist/types/controls-options-manager/types.d.ts +43 -0
  279. package/dist/types/controls-options-manager/util.d.ts +1 -0
  280. package/dist/types/index.d.ts +7 -0
  281. package/dist/types/interpretation/collection.d.ts +5 -0
  282. package/dist/types/interpretation/index.d.ts +5 -0
  283. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  284. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  285. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  286. package/dist/types/locus-info/fullState.d.ts +2 -0
  287. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  288. package/dist/types/locus-info/index.d.ts +322 -0
  289. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  290. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  291. package/dist/types/locus-info/parser.d.ts +273 -0
  292. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  293. package/dist/types/media/index.d.ts +34 -0
  294. package/dist/types/media/properties.d.ts +93 -0
  295. package/dist/types/media/util.d.ts +2 -0
  296. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  297. package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
  298. package/dist/types/meeting/index.d.ts +1676 -0
  299. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  300. package/dist/types/meeting/muteState.d.ts +184 -0
  301. package/dist/types/meeting/request.d.ts +290 -0
  302. package/dist/types/meeting/request.type.d.ts +11 -0
  303. package/dist/types/meeting/state.d.ts +9 -0
  304. package/dist/types/meeting/util.d.ts +102 -0
  305. package/dist/types/meeting-info/collection.d.ts +20 -0
  306. package/dist/types/meeting-info/index.d.ts +69 -0
  307. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  308. package/dist/types/meeting-info/request.d.ts +22 -0
  309. package/dist/types/meeting-info/util.d.ts +2 -0
  310. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  311. package/dist/types/meetings/collection.d.ts +31 -0
  312. package/dist/types/meetings/index.d.ts +367 -0
  313. package/dist/types/meetings/meetings.types.d.ts +4 -0
  314. package/dist/types/meetings/request.d.ts +27 -0
  315. package/dist/types/meetings/util.d.ts +18 -0
  316. package/dist/types/member/index.d.ts +160 -0
  317. package/dist/types/member/types.d.ts +32 -0
  318. package/dist/types/member/util.d.ts +2 -0
  319. package/dist/types/members/collection.d.ts +29 -0
  320. package/dist/types/members/index.d.ts +353 -0
  321. package/dist/types/members/request.d.ts +114 -0
  322. package/dist/types/members/types.d.ts +25 -0
  323. package/dist/types/members/util.d.ts +215 -0
  324. package/dist/types/metrics/constants.d.ts +65 -0
  325. package/dist/types/metrics/index.d.ts +45 -0
  326. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  327. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  328. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  329. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  330. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  331. package/dist/types/multistream/remoteMediaManager.d.ts +285 -0
  332. package/dist/types/multistream/sendSlotManager.d.ts +61 -0
  333. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  334. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  335. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  336. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  337. package/dist/types/reachability/index.d.ts +194 -0
  338. package/dist/types/reachability/request.d.ts +39 -0
  339. package/dist/types/reactions/constants.d.ts +3 -0
  340. package/dist/types/reactions/reactions.d.ts +4 -0
  341. package/dist/types/reactions/reactions.type.d.ts +52 -0
  342. package/dist/types/reconnection-manager/index.d.ts +126 -0
  343. package/dist/types/recording-controller/enums.d.ts +7 -0
  344. package/dist/types/recording-controller/index.d.ts +207 -0
  345. package/dist/types/recording-controller/util.d.ts +14 -0
  346. package/dist/types/roap/index.d.ts +78 -0
  347. package/dist/types/roap/request.d.ts +39 -0
  348. package/dist/types/roap/turnDiscovery.d.ts +92 -0
  349. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  350. package/dist/types/rtcMetrics/index.d.ts +47 -0
  351. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  352. package/dist/types/statsAnalyzer/index.d.ts +201 -0
  353. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  354. package/dist/types/transcription/index.d.ts +64 -0
  355. package/dist/types/webinar/collection.d.ts +16 -0
  356. package/dist/types/webinar/index.d.ts +5 -0
  357. package/dist/webinar/collection.js +44 -0
  358. package/dist/webinar/collection.js.map +1 -0
  359. package/dist/webinar/index.js +69 -0
  360. package/dist/webinar/index.js.map +1 -0
  361. package/internal-README.md +7 -6
  362. package/package.json +29 -21
  363. package/src/annotation/annotation.types.ts +50 -0
  364. package/src/annotation/constants.ts +36 -0
  365. package/src/annotation/index.ts +328 -0
  366. package/src/breakouts/README.md +220 -0
  367. package/src/breakouts/breakout.ts +188 -0
  368. package/src/breakouts/collection.ts +19 -0
  369. package/src/breakouts/edit-lock-error.ts +25 -0
  370. package/src/breakouts/events.ts +56 -0
  371. package/src/breakouts/index.ts +925 -0
  372. package/src/breakouts/request.ts +55 -0
  373. package/src/breakouts/utils.ts +57 -0
  374. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  375. package/src/common/collection.ts +9 -7
  376. package/src/common/{config.js → config.ts} +1 -1
  377. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  378. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  379. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  380. package/src/common/errors/{media.js → media.ts} +11 -7
  381. package/src/common/errors/no-meeting-info.ts +24 -0
  382. package/src/common/errors/parameter.ts +11 -7
  383. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  384. package/src/common/errors/{permission.js → permission.ts} +10 -6
  385. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  386. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  387. package/src/common/errors/{stats.js → stats.ts} +11 -7
  388. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  389. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  390. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  391. package/src/common/events/{events.js → events.ts} +5 -1
  392. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  393. package/src/common/events/{util.js → util.ts} +2 -3
  394. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  395. package/src/common/logs/logger-proxy.ts +44 -0
  396. package/src/common/logs/{request.js → request.ts} +26 -9
  397. package/src/common/queue.ts +22 -9
  398. package/src/{config.js → config.ts} +18 -19
  399. package/src/constants.ts +260 -22
  400. package/src/controls-options-manager/constants.ts +5 -0
  401. package/src/controls-options-manager/enums.ts +18 -0
  402. package/src/controls-options-manager/index.ts +278 -0
  403. package/src/controls-options-manager/types.ts +59 -0
  404. package/src/controls-options-manager/util.ts +300 -0
  405. package/src/index.ts +40 -0
  406. package/src/interpretation/README.md +60 -0
  407. package/src/interpretation/collection.ts +19 -0
  408. package/src/interpretation/index.ts +332 -0
  409. package/src/interpretation/siLanguage.ts +18 -0
  410. package/src/locus-info/controlsUtils.ts +222 -0
  411. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  412. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  413. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  414. package/src/locus-info/{index.js → index.ts} +557 -119
  415. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  416. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +81 -17
  417. package/src/locus-info/{parser.js → parser.ts} +303 -104
  418. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  419. package/src/media/index.ts +458 -0
  420. package/src/media/properties.ts +283 -0
  421. package/src/media/{util.js → util.ts} +2 -2
  422. package/src/mediaQualityMetrics/config.ts +384 -0
  423. package/src/meeting/in-meeting-actions.ts +191 -3
  424. package/src/meeting/index.ts +7882 -0
  425. package/src/meeting/locusMediaRequest.ts +313 -0
  426. package/src/meeting/muteState.ts +451 -0
  427. package/src/meeting/{request.js → request.ts} +421 -220
  428. package/src/meeting/request.type.ts +13 -0
  429. package/src/meeting/{state.js → state.ts} +50 -35
  430. package/src/meeting/util.ts +697 -0
  431. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  432. package/src/meeting-info/index.ts +210 -0
  433. package/src/meeting-info/meeting-info-v2.ts +429 -0
  434. package/src/meeting-info/{request.js → request.ts} +14 -4
  435. package/src/meeting-info/{util.js → util.ts} +60 -51
  436. package/src/meeting-info/{utilv2.js → utilv2.ts} +78 -71
  437. package/src/meetings/{collection.js → collection.ts} +26 -3
  438. package/src/meetings/index.ts +1470 -0
  439. package/src/meetings/meetings.types.ts +12 -0
  440. package/src/meetings/{request.js → request.ts} +34 -25
  441. package/src/meetings/{util.js → util.ts} +132 -37
  442. package/src/member/{index.js → index.ts} +160 -56
  443. package/src/member/types.ts +38 -0
  444. package/src/member/util.ts +397 -0
  445. package/src/members/{collection.js → collection.ts} +10 -2
  446. package/src/members/{index.js → index.ts} +351 -146
  447. package/src/members/request.ts +255 -0
  448. package/src/members/types.ts +29 -0
  449. package/src/members/util.ts +353 -0
  450. package/src/metrics/{constants.js → constants.ts} +12 -6
  451. package/src/metrics/index.ts +73 -0
  452. package/src/multistream/mediaRequestManager.ts +337 -63
  453. package/src/multistream/receiveSlot.ts +69 -26
  454. package/src/multistream/receiveSlotManager.ts +66 -42
  455. package/src/multistream/remoteMedia.ts +40 -5
  456. package/src/multistream/remoteMediaGroup.ts +63 -3
  457. package/src/multistream/remoteMediaManager.ts +300 -66
  458. package/src/multistream/sendSlotManager.ts +170 -0
  459. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  460. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  461. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  462. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  463. package/src/reachability/index.ts +671 -0
  464. package/src/reachability/request.ts +50 -35
  465. package/src/reactions/constants.ts +4 -0
  466. package/src/reactions/reactions.ts +104 -0
  467. package/src/reactions/reactions.type.ts +62 -0
  468. package/src/reconnection-manager/{index.js → index.ts} +258 -138
  469. package/src/recording-controller/enums.ts +8 -0
  470. package/src/recording-controller/index.ts +332 -0
  471. package/src/recording-controller/util.ts +75 -0
  472. package/src/roap/{index.js → index.ts} +127 -79
  473. package/src/roap/request.ts +153 -0
  474. package/src/roap/turnDiscovery.ts +109 -47
  475. package/src/rtcMetrics/constants.ts +3 -0
  476. package/src/rtcMetrics/index.ts +100 -0
  477. package/src/statsAnalyzer/global.ts +37 -0
  478. package/src/statsAnalyzer/index.ts +1250 -0
  479. package/src/statsAnalyzer/mqaUtil.ts +292 -0
  480. package/src/transcription/{index.js → index.ts} +46 -39
  481. package/src/webinar/collection.ts +31 -0
  482. package/src/webinar/index.ts +62 -0
  483. package/test/integration/spec/converged-space-meetings.js +233 -0
  484. package/test/integration/spec/journey.js +790 -530
  485. package/test/integration/spec/space-meeting.js +391 -204
  486. package/test/integration/spec/transcription.js +7 -8
  487. package/test/unit/spec/annotation/index.ts +418 -0
  488. package/test/unit/spec/breakouts/breakout.ts +237 -0
  489. package/test/unit/spec/breakouts/collection.ts +15 -0
  490. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  491. package/test/unit/spec/breakouts/events.ts +89 -0
  492. package/test/unit/spec/breakouts/index.ts +1790 -0
  493. package/test/unit/spec/breakouts/request.ts +104 -0
  494. package/test/unit/spec/breakouts/utils.js +72 -0
  495. package/test/unit/spec/common/browser-detection.js +9 -28
  496. package/test/unit/spec/common/queue.js +31 -2
  497. package/test/unit/spec/controls-options-manager/index.js +287 -0
  498. package/test/unit/spec/controls-options-manager/util.js +582 -0
  499. package/test/unit/spec/fixture/locus.js +93 -90
  500. package/test/unit/spec/interpretation/collection.ts +15 -0
  501. package/test/unit/spec/interpretation/index.ts +589 -0
  502. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  503. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  504. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  505. package/test/unit/spec/locus-info/index.js +1390 -17
  506. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  507. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  508. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  509. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  510. package/test/unit/spec/locus-info/parser.js +119 -44
  511. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  512. package/test/unit/spec/locus-info/selfUtils.js +296 -12
  513. package/test/unit/spec/media/index.ts +128 -77
  514. package/test/unit/spec/media/properties.ts +11 -11
  515. package/test/unit/spec/meeting/in-meeting-actions.ts +92 -3
  516. package/test/unit/spec/meeting/index.js +7433 -2752
  517. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  518. package/test/unit/spec/meeting/muteState.js +420 -211
  519. package/test/unit/spec/meeting/request.js +545 -79
  520. package/test/unit/spec/meeting/utils.js +722 -174
  521. package/test/unit/spec/meeting-info/index.js +300 -0
  522. package/test/unit/spec/meeting-info/meetinginfov2.js +624 -76
  523. package/test/unit/spec/meeting-info/request.js +7 -9
  524. package/test/unit/spec/meeting-info/util.js +11 -12
  525. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  526. package/test/unit/spec/meetings/collection.js +15 -1
  527. package/test/unit/spec/meetings/index.js +1365 -377
  528. package/test/unit/spec/meetings/utils.js +216 -14
  529. package/test/unit/spec/member/index.js +61 -7
  530. package/test/unit/spec/member/util.js +526 -26
  531. package/test/unit/spec/members/index.js +536 -55
  532. package/test/unit/spec/members/request.js +228 -40
  533. package/test/unit/spec/members/utils.js +217 -4
  534. package/test/unit/spec/metrics/index.js +12 -66
  535. package/test/unit/spec/multistream/mediaRequestManager.ts +1012 -109
  536. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  537. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  538. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  539. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  540. package/test/unit/spec/multistream/remoteMediaManager.ts +738 -65
  541. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  542. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  543. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  544. package/test/unit/spec/reachability/index.ts +598 -26
  545. package/test/unit/spec/reachability/request.js +68 -0
  546. package/test/unit/spec/reconnection-manager/index.js +181 -12
  547. package/test/unit/spec/recording-controller/index.js +307 -0
  548. package/test/unit/spec/recording-controller/util.js +229 -0
  549. package/test/unit/spec/roap/index.ts +179 -64
  550. package/test/unit/spec/roap/request.ts +232 -0
  551. package/test/unit/spec/roap/turnDiscovery.ts +123 -58
  552. package/test/unit/spec/rtcMetrics/index.ts +73 -0
  553. package/test/unit/spec/stats-analyzer/index.js +199 -60
  554. package/test/unit/spec/webinar/collection.ts +13 -0
  555. package/test/unit/spec/webinar/index.ts +60 -0
  556. package/test/utils/cmr.js +44 -42
  557. package/test/utils/constants.js +9 -0
  558. package/test/utils/integrationTestUtils.js +46 -0
  559. package/test/utils/testUtils.js +63 -99
  560. package/test/utils/webex-config.js +22 -18
  561. package/test/utils/webex-test-users.js +57 -50
  562. package/tsconfig.json +6 -0
  563. package/dist/media/internal-media-core-wrapper.js +0 -22
  564. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  565. package/dist/meeting/effectsState.js +0 -327
  566. package/dist/meeting/effectsState.js.map +0 -1
  567. package/dist/metrics/config.js +0 -301
  568. package/dist/metrics/config.js.map +0 -1
  569. package/dist/multistream/multistreamMedia.js +0 -116
  570. package/dist/multistream/multistreamMedia.js.map +0 -1
  571. package/dist/peer-connection-manager/util.js +0 -124
  572. package/dist/peer-connection-manager/util.js.map +0 -1
  573. package/src/common/logs/logger-proxy.js +0 -33
  574. package/src/index.js +0 -15
  575. package/src/locus-info/controlsUtils.js +0 -102
  576. package/src/media/index.js +0 -459
  577. package/src/media/internal-media-core-wrapper.ts +0 -9
  578. package/src/media/properties.js +0 -289
  579. package/src/mediaQualityMetrics/config.js +0 -382
  580. package/src/meeting/effectsState.js +0 -205
  581. package/src/meeting/index.js +0 -6284
  582. package/src/meeting/muteState.js +0 -318
  583. package/src/meeting/util.js +0 -506
  584. package/src/meeting-info/index.js +0 -131
  585. package/src/meeting-info/meeting-info-v2.js +0 -255
  586. package/src/meetings/index.js +0 -1015
  587. package/src/member/util.js +0 -254
  588. package/src/members/request.js +0 -131
  589. package/src/members/util.js +0 -258
  590. package/src/metrics/config.js +0 -324
  591. package/src/metrics/index.js +0 -530
  592. package/src/multistream/multistreamMedia.ts +0 -92
  593. package/src/peer-connection-manager/util.ts +0 -117
  594. package/src/reachability/index.js +0 -464
  595. package/src/roap/request.js +0 -127
  596. package/src/statsAnalyzer/global.js +0 -133
  597. package/src/statsAnalyzer/index.js +0 -1006
  598. package/src/statsAnalyzer/mqaUtil.js +0 -173
  599. package/test/unit/spec/meeting/effectsState.js +0 -291
  600. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  601. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,506 +0,0 @@
1
- import {isEmpty} from 'lodash';
2
-
3
- import {MeetingNotActiveError, UserNotJoinedError} from '../common/errors/webex-errors';
4
- import Metrics from '../metrics';
5
- import {eventType, trigger} from '../metrics/config';
6
- import Media from '../media';
7
- import LoggerProxy from '../common/logs/logger-proxy';
8
- import {INTENT_TO_JOIN,
9
- _LEFT_,
10
- _IDLE_,
11
- _JOINED_,
12
- PASSWORD_STATUS,
13
- DISPLAY_HINTS,
14
- FULL_STATE} from '../constants';
15
- import IntentToJoinError from '../common/errors/intent-to-join';
16
- import JoinMeetingError from '../common/errors/join-meeting';
17
- import ParameterError from '../common/errors/parameter';
18
- import PermissionError from '../common/errors/permission';
19
- import PasswordError from '../common/errors/password-error';
20
- import CaptchaError from '../common/errors/captcha-error';
21
-
22
- const MeetingUtil = {};
23
-
24
- MeetingUtil.parseLocusJoin = (response) => {
25
- const parsed = {};
26
-
27
- // First todo: add check for existance
28
- parsed.locus = response.body.locus;
29
- parsed.mediaConnections = response.body.mediaConnections;
30
- parsed.locusUrl = parsed.locus.url;
31
- parsed.locusId = parsed.locus.url.split('/').pop();
32
- parsed.selfId = parsed.locus.self.id;
33
-
34
- // we need mediaId before making roap calls
35
- parsed.mediaConnections.forEach((mediaConnection) => {
36
- if (mediaConnection.mediaId) {
37
- parsed.mediaId = mediaConnection.mediaId;
38
- }
39
- });
40
-
41
- return parsed;
42
- };
43
-
44
- MeetingUtil.remoteUpdateAudioVideo = (audioMuted, videoMuted, meeting) => {
45
- if (!meeting) {
46
- return Promise.reject(new ParameterError('You need a meeting object.'));
47
- }
48
- const localMedias = Media.generateLocalMedias(meeting.mediaId, audioMuted, videoMuted);
49
-
50
- if (isEmpty(localMedias)) {
51
- return Promise.reject(new ParameterError('You need a media id on the meeting to change remote audio.'));
52
- }
53
-
54
- Metrics.postEvent({event: eventType.MEDIA_REQUEST, meeting});
55
-
56
- return meeting.meetingRequest.remoteAudioVideoToggle({
57
- locusUrl: meeting.locusUrl,
58
- selfId: meeting.selfId,
59
- localMedias,
60
- deviceUrl: meeting.deviceUrl,
61
- correlationId: meeting.correlationId,
62
- preferTranscoding: !meeting.isMultistream,
63
- }).then((response) => {
64
- Metrics.postEvent({event: eventType.MEDIA_RESPONSE, meeting});
65
-
66
- return response.body.locus;
67
- });
68
- };
69
-
70
- MeetingUtil.hasOwner = (info) => info && info.owner;
71
-
72
- MeetingUtil.isOwnerSelf = (owner, selfId) => owner === selfId;
73
-
74
- MeetingUtil.isPinOrGuest = (err) => err?.body?.errorCode && INTENT_TO_JOIN.includes(err.body.errorCode);
75
-
76
- MeetingUtil.joinMeeting = (meeting, options) => {
77
- if (!meeting) {
78
- return Promise.reject(new ParameterError('You need a meeting object.'));
79
- }
80
-
81
- Metrics.postEvent({event: eventType.LOCUS_JOIN_REQUEST, meeting});
82
-
83
- // eslint-disable-next-line no-warning-comments
84
- // TODO: check if the meeting is in JOINING state
85
- // if Joining state termintate the request as user might click multiple times
86
- return meeting.meetingRequest
87
- .joinMeeting({
88
- inviteeAddress: meeting.meetingJoinUrl || meeting.sipUri,
89
- meetingNumber: meeting.meetingNumber,
90
- deviceUrl: meeting.deviceUrl,
91
- locusUrl: meeting.locusUrl,
92
- correlationId: meeting.correlationId,
93
- roapMessage: options.roapMessage,
94
- permissionToken: meeting.permissionToken,
95
- resourceId: options.resourceId || null,
96
- moderator: options.moderator,
97
- pin: options.pin,
98
- moveToResource: options.moveToResource,
99
- preferTranscoding: !meeting.isMultistream,
100
- asResourceOccupant: options.asResourceOccupant
101
- })
102
- .then((res) => {
103
- Metrics.postEvent({
104
- event: eventType.LOCUS_JOIN_RESPONSE,
105
- meeting,
106
- data: {
107
- trigger: trigger.LOCI_UPDATE,
108
- locus: res.body.locus,
109
- mediaConnections: res.body.mediaConnections,
110
- trackingId: res.headers.trackingid
111
- }
112
- });
113
-
114
- return MeetingUtil.parseLocusJoin(res);
115
- });
116
- };
117
-
118
- MeetingUtil.cleanUp = (meeting) => {
119
- // make sure we send last metrics before we close the peerconnection
120
- const stopStatsAnalyzer = (meeting.statsAnalyzer) ? meeting.statsAnalyzer.stopAnalyzer() : Promise.resolve();
121
-
122
- return stopStatsAnalyzer
123
- .then(() => meeting.closeLocalStream())
124
- .then(() => meeting.closeLocalShare())
125
- .then(() => meeting.closeRemoteTracks())
126
- .then(() => meeting.closePeerConnections())
127
- .then(() => {
128
- meeting.unsetLocalVideoTrack();
129
- meeting.unsetLocalShareTrack();
130
- meeting.unsetRemoteTracks();
131
- meeting.unsetPeerConnections();
132
- meeting.reconnectionManager.cleanUp();
133
- })
134
- .then(() => meeting.stopKeepAlive());
135
- };
136
-
137
- MeetingUtil.disconnectPhoneAudio = (meeting, phoneUrl) => {
138
- if (meeting.meetingState === FULL_STATE.INACTIVE) {
139
- return Promise.reject(new MeetingNotActiveError());
140
- }
141
-
142
- const options = {
143
- locusUrl: meeting.locusUrl,
144
- selfId: meeting.selfId,
145
- correlationId: meeting.correlationId,
146
- phoneUrl
147
- };
148
-
149
- return meeting.meetingRequest
150
- .disconnectPhoneAudio(options)
151
- .then((response) => {
152
- if (response?.body?.locus) {
153
- meeting.locusInfo.onFullLocus(response.body.locus);
154
- }
155
- })
156
- .catch((err) => {
157
- LoggerProxy.logger.error(
158
- `Meeting:util#disconnectPhoneAudio --> An error occured while disconnecting phone audio in meeting ${
159
- meeting.id
160
- }, error: ${err}`
161
- );
162
-
163
- return Promise.reject(err);
164
- });
165
- };
166
-
167
- // by default will leave on meeting's resourceId
168
- // if you explicity want it not to leave on resource id, pass
169
- // {resourceId: null}
170
- // TODO: chris, you can modify this however you want
171
- MeetingUtil.leaveMeeting = (meeting, options = {}) => {
172
- if (meeting.meetingState === FULL_STATE.INACTIVE) {
173
- // TODO: clean up if the meeting is already inactive
174
- return Promise.reject(new MeetingNotActiveError());
175
- }
176
-
177
- if (MeetingUtil.isUserInLeftState(meeting.locusInfo)) {
178
- return Promise.reject(new UserNotJoinedError());
179
- }
180
-
181
- const defaultOptions = {
182
- locusUrl: meeting.locusUrl,
183
- selfId: meeting.selfId,
184
- correlationId: meeting.correlationId,
185
- resourceId: meeting.resourceId,
186
- deviceUrl: meeting.deviceUrl
187
- };
188
-
189
- const leaveOptions = {...defaultOptions, ...options};
190
-
191
- return meeting.meetingRequest
192
- .leaveMeeting(leaveOptions)
193
- .then((response) => {
194
- if (response && response.body && response.body.locus) { // && !options.moveMeeting) {
195
- meeting.locusInfo.onFullLocus(response.body.locus);
196
- }
197
-
198
- return Promise.resolve();
199
- })
200
- .then(() => {
201
- if (options.moveMeeting) {
202
- return Promise.resolve();
203
- }
204
-
205
- return MeetingUtil.cleanUp(meeting);
206
- })
207
- .catch((err) => {
208
- // TODO: If the meeting state comes as LEFT or INACTIVE as response then
209
- // 1) on leave clean up the meeting or simply do a sync on the meeting
210
- // 2) If the error says meeting is inactive then destroy the meeting object
211
- LoggerProxy.logger.error(
212
- `Meeting:util#leaveMeeting --> An error occured while trying to leave meeting with an id of ${
213
- meeting.id
214
- }, error: ${err}`
215
- );
216
-
217
- return Promise.reject(err);
218
- });
219
- };
220
- MeetingUtil.declineMeeting = (meeting, reason) =>
221
- meeting.meetingRequest.declineMeeting({
222
- locusUrl: meeting.locusUrl,
223
- deviceUrl: meeting.deviceUrl,
224
- reason
225
- });
226
-
227
- MeetingUtil.isUserInLeftState = (locusInfo) =>
228
- locusInfo.parsedLocus?.self?.state === _LEFT_;
229
-
230
- MeetingUtil.isUserInIdleState = (locusInfo) =>
231
- locusInfo.parsedLocus?.self?.state === _IDLE_;
232
-
233
- MeetingUtil.isUserInJoinedState = (locusInfo) =>
234
- locusInfo.parsedLocus?.self?.state === _JOINED_;
235
-
236
- MeetingUtil.isMediaEstablished = (currentMediaStatus) =>
237
- currentMediaStatus && (currentMediaStatus.audio || currentMediaStatus.video || currentMediaStatus.share);
238
-
239
-
240
- MeetingUtil.joinMeetingOptions = (meeting, options = {}) => {
241
- meeting.resourceId = meeting.resourceId || options.resourceId;
242
-
243
- if (meeting.requiredCaptcha) {
244
- return Promise.reject(new CaptchaError());
245
- }
246
- if (meeting.passwordStatus === PASSWORD_STATUS.REQUIRED) {
247
- return Promise.reject(new PasswordError());
248
- }
249
-
250
- if (options.pin) {
251
- Metrics.postEvent({
252
- event: eventType.PIN_COLLECTED,
253
- meeting
254
- });
255
- }
256
-
257
- // normal join meeting, scenario A, D
258
- return MeetingUtil.joinMeeting(meeting, options)
259
- .then((response) => {
260
- meeting.setLocus(response);
261
-
262
- return Promise.resolve(response);
263
- })
264
- .catch((err) => {
265
- // joining a claimed PMR that is not my own, scenario B
266
- if (MeetingUtil.isPinOrGuest(err)) {
267
- Metrics.postEvent({
268
- event: eventType.PIN_PROMPT,
269
- meeting
270
- });
271
-
272
- // request host pin or non host for unclaimed PMR, start of Scenario C
273
- // see https://sqbu-github.cisco.com/WebExSquared/locus/wiki/Locus-Lobby-and--IVR-Feature
274
- return Promise.reject(new IntentToJoinError('Error Joining Meeting', err));
275
- }
276
- LoggerProxy.logger.error('Meeting:util#joinMeetingOptions --> Error joining the call, ', err);
277
-
278
- return Promise.reject(new JoinMeetingError(options, 'Error Joining Meeting', err));
279
- });
280
- };
281
-
282
- MeetingUtil.validateOptions = (options) => {
283
- const {
284
- sendVideo, sendAudio, sendShare, localStream, localShare
285
- } = options;
286
-
287
- if (sendVideo && !MeetingUtil.getTrack(localStream).videoTrack) {
288
- return Promise.reject(new ParameterError('please pass valid video streams'));
289
- }
290
-
291
- if (sendAudio && !MeetingUtil.getTrack(localStream).audioTrack) {
292
- return Promise.reject(new ParameterError('please pass valid audio streams'));
293
- }
294
-
295
- if (sendShare && !MeetingUtil.getTrack(localShare).videoTrack) {
296
- return Promise.reject(new ParameterError('please pass valid share streams'));
297
- }
298
-
299
- return Promise.resolve();
300
- };
301
-
302
- MeetingUtil.getTrack = (stream) => {
303
- let audioTrack = null;
304
- let videoTrack = null;
305
- let audioTracks = null;
306
- let videoTracks = null;
307
-
308
- if (!stream) {
309
- return {audioTrack: null, videoTrack: null};
310
- }
311
- if (stream.getAudioTracks) {
312
- audioTracks = stream.getAudioTracks();
313
- }
314
- if (stream.getVideoTracks) {
315
- videoTracks = stream.getVideoTracks();
316
- }
317
-
318
- if (audioTracks && audioTracks.length > 0) {
319
- [audioTrack] = audioTracks;
320
- }
321
-
322
- if (videoTracks && videoTracks.length > 0) {
323
- [videoTrack] = videoTracks;
324
- }
325
-
326
- return {audioTrack, videoTrack};
327
- };
328
-
329
- MeetingUtil.getModeratorFromLocusInfo = (locusInfo) =>
330
- locusInfo &&
331
- locusInfo.parsedLocus &&
332
- locusInfo.parsedLocus.info &&
333
- locusInfo.parsedLocus.info &&
334
- locusInfo.parsedLocus.info.moderator;
335
-
336
- MeetingUtil.getPolicyFromLocusInfo = (locusInfo) =>
337
- locusInfo &&
338
- locusInfo.parsedLocus &&
339
- locusInfo.parsedLocus.info &&
340
- locusInfo.parsedLocus.info &&
341
- locusInfo.parsedLocus.info.policy;
342
-
343
- MeetingUtil.getUserDisplayHintsFromLocusInfo = (locusInfo) => locusInfo?.parsedLocus?.info?.userDisplayHints || [];
344
-
345
- MeetingUtil.canInviteNewParticipants = (displayHints) => displayHints.includes(DISPLAY_HINTS.ADD_GUEST);
346
-
347
- MeetingUtil.canAdmitParticipant = (displayHints) => displayHints.includes(DISPLAY_HINTS.ROSTER_WAITING_TO_JOIN);
348
-
349
- MeetingUtil.canUserLock = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_LOCK) && displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_UNLOCKED);
350
-
351
- MeetingUtil.canUserUnlock = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOCK_CONTROL_UNLOCK) && displayHints.includes(DISPLAY_HINTS.LOCK_STATUS_LOCKED);
352
-
353
- MeetingUtil.canUserRecord = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_START);
354
-
355
- MeetingUtil.canUserPause = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_PAUSE);
356
-
357
- MeetingUtil.canUserResume = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_RESUME);
358
-
359
- MeetingUtil.canUserStop = (displayHints) => displayHints.includes(DISPLAY_HINTS.RECORDING_CONTROL_STOP);
360
-
361
- MeetingUtil.startRecording = (request, locusUrl, locusInfo) => {
362
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
363
-
364
- if (MeetingUtil.canUserRecord(displayHints)) {
365
- return request.recordMeeting({locusUrl, recording: true, paused: false});
366
- }
367
-
368
- return Promise.reject(new PermissionError('Start recording not allowed, due to moderator property.'));
369
- };
370
-
371
- MeetingUtil.pauseRecording = (request, locusUrl, locusInfo) => {
372
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
373
-
374
- if (MeetingUtil.canUserPause(displayHints)) {
375
- return request.recordMeeting({locusUrl, recording: true, paused: true});
376
- }
377
-
378
- return Promise.reject(new PermissionError('Pause recording not allowed, due to moderator property.'));
379
- };
380
-
381
- MeetingUtil.resumeRecording = (request, locusUrl, locusInfo) => {
382
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
383
-
384
- if (MeetingUtil.canUserResume(displayHints)) {
385
- return request.recordMeeting({locusUrl, recording: true, paused: false});
386
- }
387
-
388
- return Promise.reject(new PermissionError('Resume recording not allowed, due to moderator property.'));
389
- };
390
-
391
- MeetingUtil.stopRecording = (request, locusUrl, locusInfo) => {
392
- const displayHints = MeetingUtil.getUserDisplayHintsFromLocusInfo(locusInfo);
393
-
394
- if (MeetingUtil.canUserStop(displayHints)) {
395
- return request.recordMeeting({locusUrl, recording: false, paused: false});
396
- }
397
-
398
- return Promise.reject(new PermissionError('Stop recording not allowed, due to moderator property.'));
399
- };
400
-
401
- MeetingUtil.canUserRaiseHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.RAISE_HAND);
402
-
403
- MeetingUtil.canUserLowerAllHands = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_ALL_HANDS);
404
-
405
- MeetingUtil.canUserLowerSomeoneElsesHand = (displayHints) => displayHints.includes(DISPLAY_HINTS.LOWER_SOMEONE_ELSES_HAND);
406
-
407
- MeetingUtil.bothLeaveAndEndMeetingAvailable = (displayHints) => displayHints.includes(DISPLAY_HINTS.LEAVE_TRANSFER_HOST_END_MEETING) || displayHints.includes(DISPLAY_HINTS.LEAVE_END_MEETING);
408
-
409
- MeetingUtil.lockMeeting = (actions, request, locusUrl) => {
410
- if (actions && actions.canLock) {
411
- return request.lockMeeting({locusUrl, lock: true});
412
- }
413
-
414
- return Promise.reject(new PermissionError('Lock not allowed, due to joined property.'));
415
- };
416
-
417
- MeetingUtil.unlockMeeting = (actions, request, locusUrl) => {
418
- if (actions && actions.canUnlock) {
419
- return request.lockMeeting({locusUrl, lock: false});
420
- }
421
-
422
- return Promise.reject(new PermissionError('Unlock not allowed, due to joined property.'));
423
- };
424
-
425
- MeetingUtil.handleAudioLogging = (audioTrack) => {
426
- const LOG_HEADER = 'MeetingUtil#handleAudioLogging -->';
427
-
428
- if (audioTrack) {
429
- const settings = audioTrack.getSettings();
430
- const {deviceId} = settings;
431
-
432
- LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);
433
- LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));
434
- }
435
- };
436
-
437
- MeetingUtil.handleVideoLogging = (videoTrack) => {
438
- const LOG_HEADER = 'MeetingUtil#handleVideoLogging -->';
439
-
440
- if (videoTrack) {
441
- const settings = videoTrack.getSettings();
442
- const {deviceId} = settings;
443
-
444
- LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${deviceId}`);
445
- LoggerProxy.logger.log(LOG_HEADER, 'settings =', JSON.stringify(settings));
446
- }
447
- };
448
-
449
- MeetingUtil.handleDeviceLogging = (devices = []) => {
450
- const LOG_HEADER = 'MeetingUtil#handleDeviceLogging -->';
451
-
452
- devices.forEach((device) => {
453
- LoggerProxy.logger.log(LOG_HEADER, `deviceId = ${device.deviceId}`);
454
- LoggerProxy.logger.log(LOG_HEADER, 'settings', JSON.stringify(device));
455
- });
456
- };
457
-
458
- MeetingUtil.endMeetingForAll = (meeting) => {
459
- if (meeting.meetingState === FULL_STATE.INACTIVE) {
460
- return Promise.reject(new MeetingNotActiveError());
461
- }
462
-
463
- const endOptions = {
464
- locusUrl: meeting.locusUrl,
465
- };
466
-
467
- return meeting.meetingRequest
468
- .endMeetingForAll(endOptions)
469
- .then((response) => {
470
- if (response && response.body && response.body.locus) {
471
- meeting.locusInfo.onFullLocus(response.body.locus);
472
- }
473
-
474
- return Promise.resolve();
475
- })
476
- .then(() => MeetingUtil.cleanUp(meeting))
477
- .catch((err) => {
478
- LoggerProxy.logger.error(
479
- `Meeting:util#endMeetingForAll An error occured while trying to end meeting for all with an id of ${
480
- meeting.id
481
- }, error: ${err}`
482
- );
483
-
484
- return Promise.reject(err);
485
- });
486
- };
487
-
488
- MeetingUtil.canEnableClosedCaption = (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_START);
489
-
490
- MeetingUtil.canStartTranscribing = (displayHints) => displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_START);
491
-
492
- MeetingUtil.canStopTranscribing = (displayHints) => displayHints.includes(DISPLAY_HINTS.TRANSCRIPTION_CONTROL_STOP);
493
-
494
- MeetingUtil.isClosedCaptionActive = (displayHints) => displayHints.includes(DISPLAY_HINTS.CAPTION_STATUS_ACTIVE);
495
-
496
- MeetingUtil.isWebexAssistantActive = (displayHints) => displayHints.includes(DISPLAY_HINTS.WEBEX_ASSISTANT_STATUS_ACTIVE);
497
-
498
- MeetingUtil.canViewCaptionPanel = (displayHints) => displayHints.includes(DISPLAY_HINTS.ENABLE_CAPTION_PANEL);
499
-
500
- MeetingUtil.isRealTimeTranslationEnabled = (displayHints) => displayHints.includes(DISPLAY_HINTS.DISPLAY_REAL_TIME_TRANSLATION);
501
-
502
- MeetingUtil.canSelectSpokenLanguages = (displayHints) => displayHints.includes(DISPLAY_HINTS.DISPLAY_NON_ENGLISH_ASR);
503
-
504
- MeetingUtil.waitingForOthersToJoin = (displayHints) => displayHints.includes(DISPLAY_HINTS.WAITING_FOR_OTHERS);
505
-
506
- export default MeetingUtil;
@@ -1,131 +0,0 @@
1
- /*!
2
- * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
- */
4
-
5
- import {
6
- _MEETING_LINK_,
7
- _SIP_URI_,
8
- _PERSONAL_ROOM_
9
- } from '../constants';
10
- import LoggerProxy from '../common/logs/logger-proxy';
11
-
12
- import MeetingInfoCollection from './collection';
13
- import MeetingInfoRequest from './request';
14
- import MeetingInfoUtil from './util';
15
-
16
- /**
17
- * @class MeetingInfo
18
- */
19
- export default class MeetingInfo {
20
- /**
21
- *
22
- * @param {WebexSDK} webex
23
- */
24
- constructor(webex) {
25
- this.webex = webex;
26
-
27
- /**
28
- * The meeting info request server interface
29
- * @instance
30
- * @type {Object}
31
- * @private
32
- * @memberof MeetingInfo
33
- */
34
- this.meetingInfoRequest = new MeetingInfoRequest(this.webex);
35
- /**
36
- * The meeting information collection interface
37
- * @instance
38
- * @type {Object}
39
- * @private
40
- * @memberof MeetingInfo
41
- */
42
- this.meetingInfoCollection = new MeetingInfoCollection();
43
- }
44
-
45
- /**
46
- * @param {string} id
47
- * @returns {object}
48
- * @public
49
- * @memberof MeetingInfo
50
- */
51
- getMeetingInfo(id) {
52
- return this.meetingInfoCollection.get(id);
53
- }
54
-
55
- /**
56
- * @param {string} id
57
- * @param {object} info
58
- * @returns {null}
59
- * @public
60
- * @memberof MeetingInfo
61
- */
62
- setMeetingInfo(id, info) {
63
- this.meetingInfoCollection.set(id, info);
64
- }
65
-
66
- /**
67
- * Helper to make the actual MeetingInfo request and set the meetingInfo if successful, else reject
68
- * @param {Object} options
69
- * @returns {Promise}
70
- * @private
71
- * @memberof MeetingInfo
72
- */
73
- requestFetchInfo(options) {
74
- return this.meetingInfoRequest.fetchMeetingInfo(options).then((info) => {
75
- if (info && info.body) {
76
- this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
77
- }
78
-
79
- return info;
80
- }).catch((error) => {
81
- LoggerProxy.logger.error(`Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`);
82
-
83
- return Promise.reject(error);
84
- });
85
- }
86
-
87
- /**
88
- * Helper to generate the options for the MeetingInfo request
89
- * @param {String} destination
90
- * @param {String} type
91
- * @returns {Promise}
92
- * @private
93
- * @memberof MeetingInfo
94
- */
95
- fetchInfoOptions(destination, type) {
96
- return MeetingInfoUtil.generateOptions({
97
- destination,
98
- type,
99
- webex: this.webex
100
- });
101
- }
102
-
103
- /**
104
- * Fetches meeting info from the server
105
- * @param {String} destination one of many different types of destinations to look up info for
106
- * @param {String} [type] to match up with the destination value
107
- * @returns {Promise} returns a meeting info object
108
- * @public
109
- * @memberof MeetingInfo
110
- */
111
- fetchMeetingInfo(destination, type = null) {
112
- if (type === _PERSONAL_ROOM_ && !destination) {
113
- destination = this.webex.internal.device.userId;
114
- }
115
-
116
- return this.fetchInfoOptions(
117
- MeetingInfoUtil.extractDestination(destination, type),
118
- type
119
- ).then((options) =>
120
- // fetch meeting info
121
- this.requestFetchInfo(options).catch((error) => {
122
- // if it failed the first time as meeting link
123
- if (options.type === _MEETING_LINK_) {
124
- // convert the meeting link to sip URI and retry
125
- return this.requestFetchInfo(this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_));
126
- }
127
-
128
- return Promise.reject(error);
129
- }));
130
- }
131
- }