@webex/plugin-meetings 3.0.0-beta.2 → 3.0.0-beta.200

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 (576) hide show
  1. package/README.md +45 -7
  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/parameter.js +5 -33
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +10 -24
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +9 -23
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reconnection-in-progress.js +0 -17
  45. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  46. package/dist/common/errors/reconnection.js +10 -24
  47. package/dist/common/errors/reconnection.js.map +1 -1
  48. package/dist/common/errors/stats.js +10 -24
  49. package/dist/common/errors/stats.js.map +1 -1
  50. package/dist/common/errors/webex-errors.js +9 -43
  51. package/dist/common/errors/webex-errors.js.map +1 -1
  52. package/dist/common/errors/webex-meetings-error.js +5 -25
  53. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  54. package/dist/common/events/events-scope.js +0 -22
  55. package/dist/common/events/events-scope.js.map +1 -1
  56. package/dist/common/events/events.js +0 -23
  57. package/dist/common/events/events.js.map +1 -1
  58. package/dist/common/events/trigger-proxy.js +0 -12
  59. package/dist/common/events/trigger-proxy.js.map +1 -1
  60. package/dist/common/events/util.js +0 -15
  61. package/dist/common/events/util.js.map +1 -1
  62. package/dist/common/logs/logger-config.js +0 -4
  63. package/dist/common/logs/logger-config.js.map +1 -1
  64. package/dist/common/logs/logger-proxy.js +1 -8
  65. package/dist/common/logs/logger-proxy.js.map +1 -1
  66. package/dist/common/logs/request.js +37 -60
  67. package/dist/common/logs/request.js.map +1 -1
  68. package/dist/common/queue.js +28 -23
  69. package/dist/common/queue.js.map +1 -1
  70. package/dist/config.js +8 -13
  71. package/dist/config.js.map +1 -1
  72. package/dist/constants.js +250 -66
  73. package/dist/constants.js.map +1 -1
  74. package/dist/controls-options-manager/constants.js +14 -0
  75. package/dist/controls-options-manager/constants.js.map +1 -0
  76. package/dist/controls-options-manager/enums.js +27 -0
  77. package/dist/controls-options-manager/enums.js.map +1 -0
  78. package/dist/controls-options-manager/index.js +297 -0
  79. package/dist/controls-options-manager/index.js.map +1 -0
  80. package/dist/controls-options-manager/types.js +7 -0
  81. package/dist/controls-options-manager/types.js.map +1 -0
  82. package/dist/controls-options-manager/util.js +319 -0
  83. package/dist/controls-options-manager/util.js.map +1 -0
  84. package/dist/index.js +108 -17
  85. package/dist/index.js.map +1 -1
  86. package/dist/interpretation/collection.js +23 -0
  87. package/dist/interpretation/collection.js.map +1 -0
  88. package/dist/interpretation/index.js +366 -0
  89. package/dist/interpretation/index.js.map +1 -0
  90. package/dist/interpretation/siLanguage.js +25 -0
  91. package/dist/interpretation/siLanguage.js.map +1 -0
  92. package/dist/locus-info/controlsUtils.js +101 -29
  93. package/dist/locus-info/controlsUtils.js.map +1 -1
  94. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  95. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  96. package/dist/locus-info/fullState.js +0 -15
  97. package/dist/locus-info/fullState.js.map +1 -1
  98. package/dist/locus-info/hostUtils.js +4 -12
  99. package/dist/locus-info/hostUtils.js.map +1 -1
  100. package/dist/locus-info/index.js +532 -240
  101. package/dist/locus-info/index.js.map +1 -1
  102. package/dist/locus-info/infoUtils.js +3 -37
  103. package/dist/locus-info/infoUtils.js.map +1 -1
  104. package/dist/locus-info/mediaSharesUtils.js +54 -38
  105. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  106. package/dist/locus-info/parser.js +284 -154
  107. package/dist/locus-info/parser.js.map +1 -1
  108. package/dist/locus-info/selfUtils.js +110 -92
  109. package/dist/locus-info/selfUtils.js.map +1 -1
  110. package/dist/media/index.js +95 -226
  111. package/dist/media/index.js.map +1 -1
  112. package/dist/media/properties.js +99 -194
  113. package/dist/media/properties.js.map +1 -1
  114. package/dist/media/util.js +2 -9
  115. package/dist/media/util.js.map +1 -1
  116. package/dist/mediaQualityMetrics/config.js +505 -495
  117. package/dist/mediaQualityMetrics/config.js.map +1 -1
  118. package/dist/meeting/in-meeting-actions.js +83 -14
  119. package/dist/meeting/in-meeting-actions.js.map +1 -1
  120. package/dist/meeting/index.js +3478 -3563
  121. package/dist/meeting/index.js.map +1 -1
  122. package/dist/meeting/locusMediaRequest.js +291 -0
  123. package/dist/meeting/locusMediaRequest.js.map +1 -0
  124. package/dist/meeting/muteState.js +247 -183
  125. package/dist/meeting/muteState.js.map +1 -1
  126. package/dist/meeting/request.js +344 -344
  127. package/dist/meeting/request.js.map +1 -1
  128. package/dist/meeting/request.type.js +7 -0
  129. package/dist/meeting/request.type.js.map +1 -0
  130. package/dist/meeting/state.js +21 -31
  131. package/dist/meeting/state.js.map +1 -1
  132. package/dist/meeting/util.js +529 -588
  133. package/dist/meeting/util.js.map +1 -1
  134. package/dist/meeting-info/collection.js +6 -25
  135. package/dist/meeting-info/collection.js.map +1 -1
  136. package/dist/meeting-info/index.js +62 -39
  137. package/dist/meeting-info/index.js.map +1 -1
  138. package/dist/meeting-info/meeting-info-v2.js +328 -283
  139. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  140. package/dist/meeting-info/request.js +3 -15
  141. package/dist/meeting-info/request.js.map +1 -1
  142. package/dist/meeting-info/util.js +98 -183
  143. package/dist/meeting-info/util.js.map +1 -1
  144. package/dist/meeting-info/utilv2.js +156 -232
  145. package/dist/meeting-info/utilv2.js.map +1 -1
  146. package/dist/meetings/collection.js +26 -19
  147. package/dist/meetings/collection.js.map +1 -1
  148. package/dist/meetings/index.js +795 -574
  149. package/dist/meetings/index.js.map +1 -1
  150. package/dist/meetings/meetings.types.js +7 -0
  151. package/dist/meetings/meetings.types.js.map +1 -0
  152. package/dist/meetings/request.js +26 -41
  153. package/dist/meetings/request.js.map +1 -1
  154. package/dist/meetings/util.js +186 -155
  155. package/dist/meetings/util.js.map +1 -1
  156. package/dist/member/index.js +126 -85
  157. package/dist/member/index.js.map +1 -1
  158. package/dist/member/types.js +25 -0
  159. package/dist/member/types.js.map +1 -0
  160. package/dist/member/util.js +147 -88
  161. package/dist/member/util.js.map +1 -1
  162. package/dist/members/collection.js +13 -12
  163. package/dist/members/collection.js.map +1 -1
  164. package/dist/members/index.js +178 -204
  165. package/dist/members/index.js.map +1 -1
  166. package/dist/members/request.js +113 -68
  167. package/dist/members/request.js.map +1 -1
  168. package/dist/members/types.js +15 -0
  169. package/dist/members/types.js.map +1 -0
  170. package/dist/members/util.js +314 -260
  171. package/dist/members/util.js.map +1 -1
  172. package/dist/metrics/constants.js +4 -7
  173. package/dist/metrics/constants.js.map +1 -1
  174. package/dist/metrics/index.js +11 -558
  175. package/dist/metrics/index.js.map +1 -1
  176. package/dist/multistream/mediaRequestManager.js +264 -50
  177. package/dist/multistream/mediaRequestManager.js.map +1 -1
  178. package/dist/multistream/receiveSlot.js +58 -65
  179. package/dist/multistream/receiveSlot.js.map +1 -1
  180. package/dist/multistream/receiveSlotManager.js +76 -95
  181. package/dist/multistream/receiveSlotManager.js.map +1 -1
  182. package/dist/multistream/remoteMedia.js +62 -76
  183. package/dist/multistream/remoteMedia.js.map +1 -1
  184. package/dist/multistream/remoteMediaGroup.js +66 -43
  185. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  186. package/dist/multistream/remoteMediaManager.js +502 -442
  187. package/dist/multistream/remoteMediaManager.js.map +1 -1
  188. package/dist/networkQualityMonitor/index.js +40 -59
  189. package/dist/networkQualityMonitor/index.js.map +1 -1
  190. package/dist/personal-meeting-room/index.js +21 -45
  191. package/dist/personal-meeting-room/index.js.map +1 -1
  192. package/dist/personal-meeting-room/request.js +1 -31
  193. package/dist/personal-meeting-room/request.js.map +1 -1
  194. package/dist/personal-meeting-room/util.js +0 -13
  195. package/dist/personal-meeting-room/util.js.map +1 -1
  196. package/dist/reachability/index.js +192 -191
  197. package/dist/reachability/index.js.map +1 -1
  198. package/dist/reachability/request.js +15 -23
  199. package/dist/reachability/request.js.map +1 -1
  200. package/dist/reactions/constants.js +13 -0
  201. package/dist/reactions/constants.js.map +1 -0
  202. package/dist/reactions/reactions.js +109 -0
  203. package/dist/reactions/reactions.js.map +1 -0
  204. package/dist/reactions/reactions.type.js +36 -0
  205. package/dist/reactions/reactions.type.js.map +1 -0
  206. package/dist/reconnection-manager/index.js +384 -476
  207. package/dist/reconnection-manager/index.js.map +1 -1
  208. package/dist/recording-controller/enums.js +17 -0
  209. package/dist/recording-controller/enums.js.map +1 -0
  210. package/dist/recording-controller/index.js +363 -0
  211. package/dist/recording-controller/index.js.map +1 -0
  212. package/dist/recording-controller/util.js +64 -0
  213. package/dist/recording-controller/util.js.map +1 -0
  214. package/dist/roap/index.js +58 -91
  215. package/dist/roap/index.js.map +1 -1
  216. package/dist/roap/request.js +137 -135
  217. package/dist/roap/request.js.map +1 -1
  218. package/dist/roap/turnDiscovery.js +148 -100
  219. package/dist/roap/turnDiscovery.js.map +1 -1
  220. package/dist/rtcMetrics/constants.js +12 -0
  221. package/dist/rtcMetrics/constants.js.map +1 -0
  222. package/dist/rtcMetrics/index.js +115 -0
  223. package/dist/rtcMetrics/index.js.map +1 -0
  224. package/dist/statsAnalyzer/global.js +1 -95
  225. package/dist/statsAnalyzer/global.js.map +1 -1
  226. package/dist/statsAnalyzer/index.js +385 -460
  227. package/dist/statsAnalyzer/index.js.map +1 -1
  228. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  229. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  230. package/dist/transcription/index.js +22 -47
  231. package/dist/transcription/index.js.map +1 -1
  232. package/dist/types/annotation/annotation.types.d.ts +42 -0
  233. package/dist/types/annotation/constants.d.ts +31 -0
  234. package/dist/types/annotation/index.d.ts +117 -0
  235. package/dist/types/breakouts/breakout.d.ts +8 -0
  236. package/dist/types/breakouts/collection.d.ts +5 -0
  237. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  238. package/dist/types/breakouts/events.d.ts +8 -0
  239. package/dist/types/breakouts/index.d.ts +5 -0
  240. package/dist/types/breakouts/request.d.ts +22 -0
  241. package/dist/types/breakouts/utils.d.ts +15 -0
  242. package/dist/types/common/browser-detection.d.ts +9 -0
  243. package/dist/types/common/collection.d.ts +48 -0
  244. package/dist/types/common/config.d.ts +2 -0
  245. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  246. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  247. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  248. package/dist/types/common/errors/media.d.ts +15 -0
  249. package/dist/types/common/errors/parameter.d.ts +15 -0
  250. package/dist/types/common/errors/password-error.d.ts +15 -0
  251. package/dist/types/common/errors/permission.d.ts +14 -0
  252. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  253. package/dist/types/common/errors/reconnection.d.ts +15 -0
  254. package/dist/types/common/errors/stats.d.ts +15 -0
  255. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  256. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  257. package/dist/types/common/events/events-scope.d.ts +17 -0
  258. package/dist/types/common/events/events.d.ts +12 -0
  259. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  260. package/dist/types/common/events/util.d.ts +2 -0
  261. package/dist/types/common/logs/logger-config.d.ts +2 -0
  262. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  263. package/dist/types/common/logs/request.d.ts +34 -0
  264. package/dist/types/common/queue.d.ts +34 -0
  265. package/dist/types/config.d.ts +72 -0
  266. package/dist/types/constants.d.ts +1016 -0
  267. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  268. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  269. package/dist/types/controls-options-manager/index.d.ts +136 -0
  270. package/dist/types/controls-options-manager/types.d.ts +43 -0
  271. package/dist/types/controls-options-manager/util.d.ts +1 -0
  272. package/dist/types/index.d.ts +7 -0
  273. package/dist/types/interpretation/collection.d.ts +5 -0
  274. package/dist/types/interpretation/index.d.ts +5 -0
  275. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  276. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  277. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  278. package/dist/types/locus-info/fullState.d.ts +2 -0
  279. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  280. package/dist/types/locus-info/index.d.ts +322 -0
  281. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  282. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  283. package/dist/types/locus-info/parser.d.ts +271 -0
  284. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  285. package/dist/types/media/index.d.ts +34 -0
  286. package/dist/types/media/properties.d.ts +93 -0
  287. package/dist/types/media/util.d.ts +2 -0
  288. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  289. package/dist/types/meeting/in-meeting-actions.d.ts +153 -0
  290. package/dist/types/meeting/index.d.ts +1471 -0
  291. package/dist/types/meeting/locusMediaRequest.d.ts +70 -0
  292. package/dist/types/meeting/muteState.d.ts +184 -0
  293. package/dist/types/meeting/request.d.ts +257 -0
  294. package/dist/types/meeting/request.type.d.ts +11 -0
  295. package/dist/types/meeting/state.d.ts +9 -0
  296. package/dist/types/meeting/util.d.ts +78 -0
  297. package/dist/types/meeting-info/collection.d.ts +20 -0
  298. package/dist/types/meeting-info/index.d.ts +62 -0
  299. package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -0
  300. package/dist/types/meeting-info/request.d.ts +22 -0
  301. package/dist/types/meeting-info/util.d.ts +2 -0
  302. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  303. package/dist/types/meetings/collection.d.ts +31 -0
  304. package/dist/types/meetings/index.d.ts +367 -0
  305. package/dist/types/meetings/meetings.types.d.ts +4 -0
  306. package/dist/types/meetings/request.d.ts +27 -0
  307. package/dist/types/meetings/util.d.ts +18 -0
  308. package/dist/types/member/index.d.ts +159 -0
  309. package/dist/types/member/types.d.ts +32 -0
  310. package/dist/types/member/util.d.ts +2 -0
  311. package/dist/types/members/collection.d.ts +29 -0
  312. package/dist/types/members/index.d.ts +353 -0
  313. package/dist/types/members/request.d.ts +114 -0
  314. package/dist/types/members/types.d.ts +24 -0
  315. package/dist/types/members/util.d.ts +210 -0
  316. package/dist/types/metrics/constants.d.ts +55 -0
  317. package/dist/types/metrics/index.d.ts +45 -0
  318. package/dist/types/multistream/mediaRequestManager.d.ts +118 -0
  319. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  320. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  321. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  322. package/dist/types/multistream/remoteMediaGroup.d.ts +47 -0
  323. package/dist/types/multistream/remoteMediaManager.d.ts +277 -0
  324. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  325. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  326. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  327. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  328. package/dist/types/reachability/index.d.ts +152 -0
  329. package/dist/types/reachability/request.d.ts +37 -0
  330. package/dist/types/reactions/constants.d.ts +3 -0
  331. package/dist/types/reactions/reactions.d.ts +4 -0
  332. package/dist/types/reactions/reactions.type.d.ts +52 -0
  333. package/dist/types/reconnection-manager/index.d.ts +126 -0
  334. package/dist/types/recording-controller/enums.d.ts +7 -0
  335. package/dist/types/recording-controller/index.d.ts +208 -0
  336. package/dist/types/recording-controller/util.d.ts +14 -0
  337. package/dist/types/roap/index.d.ts +77 -0
  338. package/dist/types/roap/request.d.ts +36 -0
  339. package/dist/types/roap/turnDiscovery.d.ts +91 -0
  340. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  341. package/dist/types/rtcMetrics/index.d.ts +46 -0
  342. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  343. package/dist/types/statsAnalyzer/index.d.ts +200 -0
  344. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  345. package/dist/types/transcription/index.d.ts +64 -0
  346. package/internal-README.md +7 -6
  347. package/package.json +29 -21
  348. package/src/annotation/annotation.types.ts +50 -0
  349. package/src/annotation/constants.ts +36 -0
  350. package/src/annotation/index.ts +328 -0
  351. package/src/breakouts/README.md +220 -0
  352. package/src/breakouts/breakout.ts +188 -0
  353. package/src/breakouts/collection.ts +19 -0
  354. package/src/breakouts/edit-lock-error.ts +25 -0
  355. package/src/breakouts/events.ts +56 -0
  356. package/src/breakouts/index.ts +925 -0
  357. package/src/breakouts/request.ts +55 -0
  358. package/src/breakouts/utils.ts +57 -0
  359. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  360. package/src/common/collection.ts +9 -7
  361. package/src/common/{config.js → config.ts} +1 -1
  362. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  363. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  364. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  365. package/src/common/errors/{media.js → media.ts} +11 -7
  366. package/src/common/errors/parameter.ts +11 -7
  367. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  368. package/src/common/errors/{permission.js → permission.ts} +10 -6
  369. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  370. package/src/common/errors/{stats.js → stats.ts} +11 -7
  371. package/src/common/errors/{webex-errors.js → webex-errors.ts} +14 -9
  372. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  373. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  374. package/src/common/events/{events.js → events.ts} +5 -1
  375. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  376. package/src/common/events/{util.js → util.ts} +2 -3
  377. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  378. package/src/common/logs/logger-proxy.ts +44 -0
  379. package/src/common/logs/{request.js → request.ts} +22 -9
  380. package/src/common/queue.ts +22 -9
  381. package/src/{config.js → config.ts} +17 -17
  382. package/src/constants.ts +197 -22
  383. package/src/controls-options-manager/constants.ts +5 -0
  384. package/src/controls-options-manager/enums.ts +18 -0
  385. package/src/controls-options-manager/index.ts +278 -0
  386. package/src/controls-options-manager/types.ts +59 -0
  387. package/src/controls-options-manager/util.ts +300 -0
  388. package/src/index.ts +39 -0
  389. package/src/interpretation/README.md +60 -0
  390. package/src/interpretation/collection.ts +19 -0
  391. package/src/interpretation/index.ts +332 -0
  392. package/src/interpretation/siLanguage.ts +18 -0
  393. package/src/locus-info/controlsUtils.ts +222 -0
  394. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  395. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  396. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  397. package/src/locus-info/{index.js → index.ts} +518 -111
  398. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  399. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +65 -17
  400. package/src/locus-info/{parser.js → parser.ts} +271 -98
  401. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  402. package/src/media/index.ts +456 -0
  403. package/src/media/{properties.js → properties.ts} +80 -102
  404. package/src/media/{util.js → util.ts} +2 -2
  405. package/src/mediaQualityMetrics/config.ts +384 -0
  406. package/src/meeting/in-meeting-actions.ts +171 -3
  407. package/src/meeting/index.ts +7070 -0
  408. package/src/meeting/locusMediaRequest.ts +309 -0
  409. package/src/meeting/muteState.ts +450 -0
  410. package/src/meeting/{request.js → request.ts} +354 -214
  411. package/src/meeting/request.type.ts +13 -0
  412. package/src/meeting/{state.js → state.ts} +50 -35
  413. package/src/meeting/util.ts +615 -0
  414. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  415. package/src/meeting-info/index.ts +183 -0
  416. package/src/meeting-info/meeting-info-v2.ts +407 -0
  417. package/src/meeting-info/{request.js → request.ts} +14 -4
  418. package/src/meeting-info/{util.js → util.ts} +60 -51
  419. package/src/meeting-info/{utilv2.js → utilv2.ts} +77 -60
  420. package/src/meetings/{collection.js → collection.ts} +26 -3
  421. package/src/meetings/index.ts +1467 -0
  422. package/src/meetings/meetings.types.ts +12 -0
  423. package/src/meetings/{request.js → request.ts} +34 -25
  424. package/src/meetings/{util.js → util.ts} +137 -36
  425. package/src/member/{index.js → index.ts} +151 -56
  426. package/src/member/types.ts +38 -0
  427. package/src/member/util.ts +383 -0
  428. package/src/members/{collection.js → collection.ts} +10 -2
  429. package/src/members/{index.js → index.ts} +323 -145
  430. package/src/members/request.ts +255 -0
  431. package/src/members/types.ts +28 -0
  432. package/src/members/util.ts +339 -0
  433. package/src/metrics/{constants.js → constants.ts} +2 -6
  434. package/src/metrics/index.ts +73 -0
  435. package/src/multistream/mediaRequestManager.ts +337 -61
  436. package/src/multistream/receiveSlot.ts +69 -26
  437. package/src/multistream/receiveSlotManager.ts +66 -42
  438. package/src/multistream/remoteMedia.ts +40 -5
  439. package/src/multistream/remoteMediaGroup.ts +63 -3
  440. package/src/multistream/remoteMediaManager.ts +263 -66
  441. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  442. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  443. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  444. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  445. package/src/reachability/{index.js → index.ts} +157 -94
  446. package/src/reachability/request.ts +46 -35
  447. package/src/reactions/constants.ts +4 -0
  448. package/src/reactions/reactions.ts +104 -0
  449. package/src/reactions/reactions.type.ts +62 -0
  450. package/src/reconnection-manager/{index.js → index.ts} +254 -136
  451. package/src/recording-controller/enums.ts +8 -0
  452. package/src/recording-controller/index.ts +333 -0
  453. package/src/recording-controller/util.ts +75 -0
  454. package/src/roap/{index.js → index.ts} +86 -78
  455. package/src/roap/request.ts +163 -0
  456. package/src/roap/turnDiscovery.ts +111 -49
  457. package/src/rtcMetrics/constants.ts +3 -0
  458. package/src/rtcMetrics/index.ts +96 -0
  459. package/src/statsAnalyzer/global.ts +37 -0
  460. package/src/statsAnalyzer/index.ts +1272 -0
  461. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  462. package/src/transcription/{index.js → index.ts} +46 -39
  463. package/test/integration/spec/converged-space-meetings.js +233 -0
  464. package/test/integration/spec/journey.js +804 -526
  465. package/test/integration/spec/space-meeting.js +391 -204
  466. package/test/integration/spec/transcription.js +7 -8
  467. package/test/unit/spec/annotation/index.ts +418 -0
  468. package/test/unit/spec/breakouts/breakout.ts +237 -0
  469. package/test/unit/spec/breakouts/collection.ts +15 -0
  470. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  471. package/test/unit/spec/breakouts/events.ts +89 -0
  472. package/test/unit/spec/breakouts/index.ts +1790 -0
  473. package/test/unit/spec/breakouts/request.ts +104 -0
  474. package/test/unit/spec/breakouts/utils.js +72 -0
  475. package/test/unit/spec/common/browser-detection.js +9 -28
  476. package/test/unit/spec/common/queue.js +31 -2
  477. package/test/unit/spec/controls-options-manager/index.js +287 -0
  478. package/test/unit/spec/controls-options-manager/util.js +582 -0
  479. package/test/unit/spec/fixture/locus.js +93 -90
  480. package/test/unit/spec/interpretation/collection.ts +15 -0
  481. package/test/unit/spec/interpretation/index.ts +589 -0
  482. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  483. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  484. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  485. package/test/unit/spec/locus-info/index.js +1176 -18
  486. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  487. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  488. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  489. package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
  490. package/test/unit/spec/locus-info/parser.js +65 -31
  491. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  492. package/test/unit/spec/locus-info/selfUtils.js +296 -12
  493. package/test/unit/spec/media/index.ts +162 -68
  494. package/test/unit/spec/media/properties.ts +9 -9
  495. package/test/unit/spec/meeting/in-meeting-actions.ts +82 -3
  496. package/test/unit/spec/meeting/index.js +4569 -1773
  497. package/test/unit/spec/meeting/locusMediaRequest.ts +436 -0
  498. package/test/unit/spec/meeting/muteState.js +382 -211
  499. package/test/unit/spec/meeting/request.js +444 -78
  500. package/test/unit/spec/meeting/utils.js +517 -192
  501. package/test/unit/spec/meeting-info/index.js +181 -0
  502. package/test/unit/spec/meeting-info/meetinginfov2.js +481 -76
  503. package/test/unit/spec/meeting-info/request.js +7 -9
  504. package/test/unit/spec/meeting-info/util.js +11 -12
  505. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  506. package/test/unit/spec/meetings/collection.js +15 -1
  507. package/test/unit/spec/meetings/index.js +1254 -330
  508. package/test/unit/spec/meetings/utils.js +220 -14
  509. package/test/unit/spec/member/index.js +58 -5
  510. package/test/unit/spec/member/util.js +494 -26
  511. package/test/unit/spec/members/index.js +423 -55
  512. package/test/unit/spec/members/request.js +228 -40
  513. package/test/unit/spec/members/utils.js +191 -4
  514. package/test/unit/spec/metrics/index.js +12 -66
  515. package/test/unit/spec/multistream/mediaRequestManager.ts +1013 -106
  516. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  517. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  518. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  519. package/test/unit/spec/multistream/remoteMediaGroup.ts +271 -5
  520. package/test/unit/spec/multistream/remoteMediaManager.ts +730 -65
  521. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  522. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  523. package/test/unit/spec/reachability/index.ts +176 -27
  524. package/test/unit/spec/reachability/request.js +66 -0
  525. package/test/unit/spec/reconnection-manager/index.js +155 -9
  526. package/test/unit/spec/recording-controller/index.js +307 -0
  527. package/test/unit/spec/recording-controller/util.js +229 -0
  528. package/test/unit/spec/roap/index.ts +28 -52
  529. package/test/unit/spec/roap/request.ts +225 -0
  530. package/test/unit/spec/roap/turnDiscovery.ts +92 -50
  531. package/test/unit/spec/rtcMetrics/index.ts +60 -0
  532. package/test/unit/spec/stats-analyzer/index.js +116 -60
  533. package/test/utils/cmr.js +44 -42
  534. package/test/utils/constants.js +9 -0
  535. package/test/utils/integrationTestUtils.js +46 -0
  536. package/test/utils/testUtils.js +63 -99
  537. package/test/utils/webex-config.js +22 -18
  538. package/test/utils/webex-test-users.js +57 -50
  539. package/tsconfig.json +6 -0
  540. package/dist/media/internal-media-core-wrapper.js +0 -22
  541. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  542. package/dist/meeting/effectsState.js +0 -327
  543. package/dist/meeting/effectsState.js.map +0 -1
  544. package/dist/metrics/config.js +0 -301
  545. package/dist/metrics/config.js.map +0 -1
  546. package/dist/multistream/multistreamMedia.js +0 -116
  547. package/dist/multistream/multistreamMedia.js.map +0 -1
  548. package/dist/peer-connection-manager/util.js +0 -124
  549. package/dist/peer-connection-manager/util.js.map +0 -1
  550. package/src/common/logs/logger-proxy.js +0 -33
  551. package/src/index.js +0 -15
  552. package/src/locus-info/controlsUtils.js +0 -102
  553. package/src/media/index.js +0 -459
  554. package/src/media/internal-media-core-wrapper.ts +0 -9
  555. package/src/mediaQualityMetrics/config.js +0 -382
  556. package/src/meeting/effectsState.js +0 -205
  557. package/src/meeting/index.js +0 -6284
  558. package/src/meeting/muteState.js +0 -318
  559. package/src/meeting/util.js +0 -506
  560. package/src/meeting-info/index.js +0 -131
  561. package/src/meeting-info/meeting-info-v2.js +0 -255
  562. package/src/meetings/index.js +0 -1015
  563. package/src/member/util.js +0 -254
  564. package/src/members/request.js +0 -131
  565. package/src/members/util.js +0 -258
  566. package/src/metrics/config.js +0 -324
  567. package/src/metrics/index.js +0 -530
  568. package/src/multistream/multistreamMedia.ts +0 -92
  569. package/src/peer-connection-manager/util.ts +0 -117
  570. package/src/roap/request.js +0 -127
  571. package/src/statsAnalyzer/global.js +0 -133
  572. package/src/statsAnalyzer/index.js +0 -1006
  573. package/src/statsAnalyzer/mqaUtil.js +0 -173
  574. package/test/unit/spec/meeting/effectsState.js +0 -291
  575. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  576. /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
- }