@webex/plugin-meetings 3.0.0-beta.7 → 3.0.0-beta.71

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 (506) hide show
  1. package/UPGRADING.md +9 -9
  2. package/browsers.js +19 -24
  3. package/dist/breakouts/breakout.js +178 -0
  4. package/dist/breakouts/breakout.js.map +1 -0
  5. package/dist/breakouts/collection.js +23 -0
  6. package/dist/breakouts/collection.js.map +1 -0
  7. package/dist/breakouts/edit-lock-error.js +52 -0
  8. package/dist/breakouts/edit-lock-error.js.map +1 -0
  9. package/dist/breakouts/index.js +843 -0
  10. package/dist/breakouts/index.js.map +1 -0
  11. package/dist/breakouts/request.js +78 -0
  12. package/dist/breakouts/request.js.map +1 -0
  13. package/dist/breakouts/utils.js +56 -0
  14. package/dist/breakouts/utils.js.map +1 -0
  15. package/dist/common/browser-detection.js +1 -20
  16. package/dist/common/browser-detection.js.map +1 -1
  17. package/dist/common/collection.js +5 -20
  18. package/dist/common/collection.js.map +1 -1
  19. package/dist/common/config.js +0 -7
  20. package/dist/common/config.js.map +1 -1
  21. package/dist/common/errors/captcha-error.js +10 -24
  22. package/dist/common/errors/captcha-error.js.map +1 -1
  23. package/dist/common/errors/intent-to-join.js +11 -24
  24. package/dist/common/errors/intent-to-join.js.map +1 -1
  25. package/dist/common/errors/join-meeting.js +12 -25
  26. package/dist/common/errors/join-meeting.js.map +1 -1
  27. package/dist/common/errors/media.js +10 -24
  28. package/dist/common/errors/media.js.map +1 -1
  29. package/dist/common/errors/parameter.js +5 -33
  30. package/dist/common/errors/parameter.js.map +1 -1
  31. package/dist/common/errors/password-error.js +10 -24
  32. package/dist/common/errors/password-error.js.map +1 -1
  33. package/dist/common/errors/permission.js +9 -23
  34. package/dist/common/errors/permission.js.map +1 -1
  35. package/dist/common/errors/reconnection-in-progress.js +0 -17
  36. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  37. package/dist/common/errors/reconnection.js +10 -24
  38. package/dist/common/errors/reconnection.js.map +1 -1
  39. package/dist/common/errors/stats.js +10 -24
  40. package/dist/common/errors/stats.js.map +1 -1
  41. package/dist/common/errors/webex-errors.js +6 -41
  42. package/dist/common/errors/webex-errors.js.map +1 -1
  43. package/dist/common/errors/webex-meetings-error.js +5 -25
  44. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  45. package/dist/common/events/events-scope.js +0 -22
  46. package/dist/common/events/events-scope.js.map +1 -1
  47. package/dist/common/events/events.js +0 -23
  48. package/dist/common/events/events.js.map +1 -1
  49. package/dist/common/events/trigger-proxy.js +0 -12
  50. package/dist/common/events/trigger-proxy.js.map +1 -1
  51. package/dist/common/events/util.js +0 -15
  52. package/dist/common/events/util.js.map +1 -1
  53. package/dist/common/logs/logger-config.js +0 -4
  54. package/dist/common/logs/logger-config.js.map +1 -1
  55. package/dist/common/logs/logger-proxy.js +1 -8
  56. package/dist/common/logs/logger-proxy.js.map +1 -1
  57. package/dist/common/logs/request.js +37 -60
  58. package/dist/common/logs/request.js.map +1 -1
  59. package/dist/common/queue.js +4 -14
  60. package/dist/common/queue.js.map +1 -1
  61. package/dist/config.js +6 -6
  62. package/dist/config.js.map +1 -1
  63. package/dist/constants.js +143 -52
  64. package/dist/constants.js.map +1 -1
  65. package/dist/controls-options-manager/constants.js +14 -0
  66. package/dist/controls-options-manager/constants.js.map +1 -0
  67. package/dist/controls-options-manager/enums.js +16 -0
  68. package/dist/controls-options-manager/enums.js.map +1 -0
  69. package/dist/controls-options-manager/index.js +261 -0
  70. package/dist/controls-options-manager/index.js.map +1 -0
  71. package/dist/controls-options-manager/util.js +39 -0
  72. package/dist/controls-options-manager/util.js.map +1 -0
  73. package/dist/index.js +11 -18
  74. package/dist/index.js.map +1 -1
  75. package/dist/locus-info/controlsUtils.js +31 -29
  76. package/dist/locus-info/controlsUtils.js.map +1 -1
  77. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  78. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  79. package/dist/locus-info/fullState.js +0 -15
  80. package/dist/locus-info/fullState.js.map +1 -1
  81. package/dist/locus-info/hostUtils.js +4 -12
  82. package/dist/locus-info/hostUtils.js.map +1 -1
  83. package/dist/locus-info/index.js +237 -198
  84. package/dist/locus-info/index.js.map +1 -1
  85. package/dist/locus-info/infoUtils.js +3 -37
  86. package/dist/locus-info/infoUtils.js.map +1 -1
  87. package/dist/locus-info/mediaSharesUtils.js +12 -38
  88. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  89. package/dist/locus-info/parser.js +92 -118
  90. package/dist/locus-info/parser.js.map +1 -1
  91. package/dist/locus-info/selfUtils.js +80 -89
  92. package/dist/locus-info/selfUtils.js.map +1 -1
  93. package/dist/media/index.js +56 -146
  94. package/dist/media/index.js.map +1 -1
  95. package/dist/media/properties.js +83 -117
  96. package/dist/media/properties.js.map +1 -1
  97. package/dist/media/util.js +2 -9
  98. package/dist/media/util.js.map +1 -1
  99. package/dist/mediaQualityMetrics/config.js +505 -495
  100. package/dist/mediaQualityMetrics/config.js.map +1 -1
  101. package/dist/meeting/in-meeting-actions.js +31 -14
  102. package/dist/meeting/in-meeting-actions.js.map +1 -1
  103. package/dist/meeting/index.js +2225 -2244
  104. package/dist/meeting/index.js.map +1 -1
  105. package/dist/meeting/muteState.js +102 -100
  106. package/dist/meeting/muteState.js.map +1 -1
  107. package/dist/meeting/request.js +308 -264
  108. package/dist/meeting/request.js.map +1 -1
  109. package/dist/meeting/request.type.js +7 -0
  110. package/dist/meeting/request.type.js.map +1 -0
  111. package/dist/meeting/state.js +21 -31
  112. package/dist/meeting/state.js.map +1 -1
  113. package/dist/meeting/util.js +63 -217
  114. package/dist/meeting/util.js.map +1 -1
  115. package/dist/meeting-info/collection.js +6 -25
  116. package/dist/meeting-info/collection.js.map +1 -1
  117. package/dist/meeting-info/index.js +14 -32
  118. package/dist/meeting-info/index.js.map +1 -1
  119. package/dist/meeting-info/meeting-info-v2.js +193 -268
  120. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  121. package/dist/meeting-info/request.js +3 -15
  122. package/dist/meeting-info/request.js.map +1 -1
  123. package/dist/meeting-info/util.js +98 -183
  124. package/dist/meeting-info/util.js.map +1 -1
  125. package/dist/meeting-info/utilv2.js +137 -228
  126. package/dist/meeting-info/utilv2.js.map +1 -1
  127. package/dist/meetings/collection.js +26 -19
  128. package/dist/meetings/collection.js.map +1 -1
  129. package/dist/meetings/index.js +565 -552
  130. package/dist/meetings/index.js.map +1 -1
  131. package/dist/meetings/request.js +26 -41
  132. package/dist/meetings/request.js.map +1 -1
  133. package/dist/meetings/util.js +151 -155
  134. package/dist/meetings/util.js.map +1 -1
  135. package/dist/member/index.js +100 -85
  136. package/dist/member/index.js.map +1 -1
  137. package/dist/member/types.js +15 -0
  138. package/dist/member/types.js.map +1 -0
  139. package/dist/member/util.js +90 -68
  140. package/dist/member/util.js.map +1 -1
  141. package/dist/members/collection.js +13 -12
  142. package/dist/members/collection.js.map +1 -1
  143. package/dist/members/index.js +152 -204
  144. package/dist/members/index.js.map +1 -1
  145. package/dist/members/request.js +35 -39
  146. package/dist/members/request.js.map +1 -1
  147. package/dist/members/types.js +15 -0
  148. package/dist/members/types.js.map +1 -0
  149. package/dist/members/util.js +76 -46
  150. package/dist/members/util.js.map +1 -1
  151. package/dist/metrics/config.js +4 -14
  152. package/dist/metrics/config.js.map +1 -1
  153. package/dist/metrics/constants.js +1 -6
  154. package/dist/metrics/constants.js.map +1 -1
  155. package/dist/metrics/index.js +59 -156
  156. package/dist/metrics/index.js.map +1 -1
  157. package/dist/multistream/mediaRequestManager.js +116 -52
  158. package/dist/multistream/mediaRequestManager.js.map +1 -1
  159. package/dist/multistream/receiveSlot.js +58 -65
  160. package/dist/multistream/receiveSlot.js.map +1 -1
  161. package/dist/multistream/receiveSlotManager.js +58 -93
  162. package/dist/multistream/receiveSlotManager.js.map +1 -1
  163. package/dist/multistream/remoteMedia.js +55 -74
  164. package/dist/multistream/remoteMedia.js.map +1 -1
  165. package/dist/multistream/remoteMediaGroup.js +6 -40
  166. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  167. package/dist/multistream/remoteMediaManager.js +466 -442
  168. package/dist/multistream/remoteMediaManager.js.map +1 -1
  169. package/dist/networkQualityMonitor/index.js +40 -59
  170. package/dist/networkQualityMonitor/index.js.map +1 -1
  171. package/dist/personal-meeting-room/index.js +21 -45
  172. package/dist/personal-meeting-room/index.js.map +1 -1
  173. package/dist/personal-meeting-room/request.js +1 -31
  174. package/dist/personal-meeting-room/request.js.map +1 -1
  175. package/dist/personal-meeting-room/util.js +0 -13
  176. package/dist/personal-meeting-room/util.js.map +1 -1
  177. package/dist/reachability/index.js +192 -191
  178. package/dist/reachability/index.js.map +1 -1
  179. package/dist/reachability/request.js +15 -23
  180. package/dist/reachability/request.js.map +1 -1
  181. package/dist/reactions/constants.js +13 -0
  182. package/dist/reactions/constants.js.map +1 -0
  183. package/dist/reactions/reactions.js +109 -0
  184. package/dist/reactions/reactions.js.map +1 -0
  185. package/dist/reactions/reactions.type.js +36 -0
  186. package/dist/reactions/reactions.type.js.map +1 -0
  187. package/dist/reconnection-manager/index.js +342 -460
  188. package/dist/reconnection-manager/index.js.map +1 -1
  189. package/dist/recording-controller/enums.js +17 -0
  190. package/dist/recording-controller/enums.js.map +1 -0
  191. package/dist/recording-controller/index.js +343 -0
  192. package/dist/recording-controller/index.js.map +1 -0
  193. package/dist/recording-controller/util.js +63 -0
  194. package/dist/recording-controller/util.js.map +1 -0
  195. package/dist/roap/index.js +48 -70
  196. package/dist/roap/index.js.map +1 -1
  197. package/dist/roap/request.js +143 -131
  198. package/dist/roap/request.js.map +1 -1
  199. package/dist/roap/turnDiscovery.js +91 -98
  200. package/dist/roap/turnDiscovery.js.map +1 -1
  201. package/dist/statsAnalyzer/global.js +1 -95
  202. package/dist/statsAnalyzer/global.js.map +1 -1
  203. package/dist/statsAnalyzer/index.js +372 -455
  204. package/dist/statsAnalyzer/index.js.map +1 -1
  205. package/dist/statsAnalyzer/mqaUtil.js +143 -87
  206. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  207. package/dist/transcription/index.js +22 -47
  208. package/dist/transcription/index.js.map +1 -1
  209. package/dist/types/breakouts/breakout.d.ts +8 -0
  210. package/dist/types/breakouts/collection.d.ts +5 -0
  211. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  212. package/dist/types/breakouts/index.d.ts +5 -0
  213. package/dist/types/breakouts/request.d.ts +22 -0
  214. package/dist/types/breakouts/utils.d.ts +8 -0
  215. package/dist/types/common/browser-detection.d.ts +9 -0
  216. package/dist/types/common/collection.d.ts +48 -0
  217. package/dist/types/common/config.d.ts +2 -0
  218. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  219. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  220. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  221. package/dist/types/common/errors/media.d.ts +15 -0
  222. package/dist/types/common/errors/parameter.d.ts +15 -0
  223. package/dist/types/common/errors/password-error.d.ts +15 -0
  224. package/dist/types/common/errors/permission.d.ts +14 -0
  225. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  226. package/dist/types/common/errors/reconnection.d.ts +15 -0
  227. package/dist/types/common/errors/stats.d.ts +15 -0
  228. package/dist/types/common/errors/webex-errors.d.ts +69 -0
  229. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  230. package/dist/types/common/events/events-scope.d.ts +17 -0
  231. package/dist/types/common/events/events.d.ts +12 -0
  232. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  233. package/dist/types/common/events/util.d.ts +2 -0
  234. package/dist/types/common/logs/logger-config.d.ts +2 -0
  235. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  236. package/dist/types/common/logs/request.d.ts +34 -0
  237. package/dist/types/common/queue.d.ts +32 -0
  238. package/dist/types/config.d.ts +77 -0
  239. package/dist/types/constants.d.ts +944 -0
  240. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  241. package/dist/types/controls-options-manager/enums.d.ts +6 -0
  242. package/dist/types/controls-options-manager/index.d.ts +128 -0
  243. package/dist/types/controls-options-manager/util.d.ts +9 -0
  244. package/dist/types/index.d.ts +6 -0
  245. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  246. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  247. package/dist/types/locus-info/fullState.d.ts +2 -0
  248. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  249. package/dist/types/locus-info/index.d.ts +276 -0
  250. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  251. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  252. package/dist/types/locus-info/parser.d.ts +212 -0
  253. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  254. package/dist/types/media/index.d.ts +32 -0
  255. package/dist/types/media/properties.d.ts +108 -0
  256. package/dist/types/media/util.d.ts +2 -0
  257. package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
  258. package/dist/types/meeting/in-meeting-actions.d.ts +101 -0
  259. package/dist/types/meeting/index.d.ts +1720 -0
  260. package/dist/types/meeting/muteState.d.ts +132 -0
  261. package/dist/types/meeting/request.d.ts +271 -0
  262. package/dist/types/meeting/request.type.d.ts +11 -0
  263. package/dist/types/meeting/state.d.ts +9 -0
  264. package/dist/types/meeting/util.d.ts +2 -0
  265. package/dist/types/meeting-info/collection.d.ts +20 -0
  266. package/dist/types/meeting-info/index.d.ts +57 -0
  267. package/dist/types/meeting-info/meeting-info-v2.d.ts +93 -0
  268. package/dist/types/meeting-info/request.d.ts +22 -0
  269. package/dist/types/meeting-info/util.d.ts +2 -0
  270. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  271. package/dist/types/meetings/collection.d.ts +31 -0
  272. package/dist/types/meetings/index.d.ts +315 -0
  273. package/dist/types/meetings/request.d.ts +27 -0
  274. package/dist/types/meetings/util.d.ts +18 -0
  275. package/dist/types/member/index.d.ts +156 -0
  276. package/dist/types/member/types.d.ts +21 -0
  277. package/dist/types/member/util.d.ts +2 -0
  278. package/dist/types/members/collection.d.ts +29 -0
  279. package/dist/types/members/index.d.ts +343 -0
  280. package/dist/types/members/request.d.ts +58 -0
  281. package/dist/types/members/types.d.ts +24 -0
  282. package/dist/types/members/util.d.ts +2 -0
  283. package/dist/types/metrics/config.d.ts +171 -0
  284. package/dist/types/metrics/constants.d.ts +53 -0
  285. package/dist/types/metrics/index.d.ts +152 -0
  286. package/dist/types/multistream/mediaRequestManager.d.ts +68 -0
  287. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  288. package/dist/types/multistream/receiveSlotManager.d.ts +49 -0
  289. package/dist/types/multistream/remoteMedia.d.ts +100 -0
  290. package/dist/types/multistream/remoteMediaGroup.d.ts +56 -0
  291. package/dist/types/multistream/remoteMediaManager.d.ts +263 -0
  292. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  293. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  294. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  295. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  296. package/dist/types/reachability/index.d.ts +152 -0
  297. package/dist/types/reachability/request.d.ts +37 -0
  298. package/dist/types/reactions/constants.d.ts +3 -0
  299. package/dist/types/reactions/reactions.d.ts +4 -0
  300. package/dist/types/reactions/reactions.type.d.ts +52 -0
  301. package/dist/types/reconnection-manager/index.d.ts +126 -0
  302. package/dist/types/recording-controller/enums.d.ts +7 -0
  303. package/dist/types/recording-controller/index.d.ts +193 -0
  304. package/dist/types/recording-controller/util.d.ts +13 -0
  305. package/dist/types/roap/index.d.ts +77 -0
  306. package/dist/types/roap/request.d.ts +38 -0
  307. package/dist/types/roap/turnDiscovery.d.ts +74 -0
  308. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  309. package/dist/types/statsAnalyzer/index.d.ts +195 -0
  310. package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
  311. package/dist/types/transcription/index.d.ts +64 -0
  312. package/internal-README.md +7 -6
  313. package/package.json +27 -21
  314. package/src/breakouts/README.md +219 -0
  315. package/src/breakouts/breakout.ts +153 -0
  316. package/src/breakouts/collection.ts +19 -0
  317. package/src/breakouts/edit-lock-error.ts +25 -0
  318. package/src/breakouts/index.ts +745 -0
  319. package/src/breakouts/request.ts +55 -0
  320. package/src/breakouts/utils.ts +44 -0
  321. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  322. package/src/common/collection.ts +9 -7
  323. package/src/common/{config.js → config.ts} +1 -1
  324. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  325. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  326. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  327. package/src/common/errors/{media.js → media.ts} +11 -7
  328. package/src/common/errors/parameter.ts +11 -7
  329. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  330. package/src/common/errors/{permission.js → permission.ts} +10 -6
  331. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  332. package/src/common/errors/{stats.js → stats.ts} +11 -7
  333. package/src/common/errors/{webex-errors.js → webex-errors.ts} +8 -7
  334. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  335. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  336. package/src/common/events/{events.js → events.ts} +5 -1
  337. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  338. package/src/common/events/{util.js → util.ts} +2 -3
  339. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  340. package/src/common/logs/logger-proxy.ts +44 -0
  341. package/src/common/logs/{request.js → request.ts} +22 -9
  342. package/src/common/queue.ts +1 -2
  343. package/src/{config.js → config.ts} +17 -12
  344. package/src/constants.ts +92 -5
  345. package/src/controls-options-manager/constants.ts +5 -0
  346. package/src/controls-options-manager/enums.ts +7 -0
  347. package/src/controls-options-manager/index.ts +240 -0
  348. package/src/controls-options-manager/util.ts +30 -0
  349. package/src/index.js +4 -1
  350. package/src/locus-info/controlsUtils.ts +141 -0
  351. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  352. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  353. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  354. package/src/locus-info/{index.js → index.ts} +211 -71
  355. package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
  356. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
  357. package/src/locus-info/{parser.js → parser.ts} +67 -79
  358. package/src/locus-info/{selfUtils.js → selfUtils.ts} +183 -67
  359. package/src/media/{index.js → index.ts} +179 -176
  360. package/src/media/{properties.js → properties.ts} +60 -37
  361. package/src/media/{util.js → util.ts} +2 -2
  362. package/src/mediaQualityMetrics/config.ts +384 -0
  363. package/src/meeting/in-meeting-actions.ts +67 -3
  364. package/src/meeting/{index.js → index.ts} +2605 -1605
  365. package/src/meeting/{muteState.js → muteState.ts} +138 -73
  366. package/src/meeting/{request.js → request.ts} +326 -142
  367. package/src/meeting/request.type.ts +13 -0
  368. package/src/meeting/{state.js → state.ts} +50 -35
  369. package/src/meeting/{util.js → util.ts} +131 -115
  370. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  371. package/src/meeting-info/{index.js → index.ts} +42 -36
  372. package/src/meeting-info/meeting-info-v2.ts +273 -0
  373. package/src/meeting-info/{request.js → request.ts} +14 -4
  374. package/src/meeting-info/{util.js → util.ts} +60 -51
  375. package/src/meeting-info/{utilv2.js → utilv2.ts} +65 -58
  376. package/src/meetings/{collection.js → collection.ts} +26 -3
  377. package/src/meetings/index.ts +1275 -0
  378. package/src/meetings/{request.js → request.ts} +34 -25
  379. package/src/meetings/{util.js → util.ts} +99 -33
  380. package/src/member/{index.js → index.ts} +124 -56
  381. package/src/member/types.ts +24 -0
  382. package/src/member/{util.js → util.ts} +105 -25
  383. package/src/members/{collection.js → collection.ts} +10 -2
  384. package/src/members/{index.js → index.ts} +281 -144
  385. package/src/members/{request.js → request.ts} +80 -16
  386. package/src/members/types.ts +28 -0
  387. package/src/members/{util.js → util.ts} +108 -55
  388. package/src/metrics/{config.js → config.ts} +255 -92
  389. package/src/metrics/{constants.js → constants.ts} +0 -6
  390. package/src/metrics/{index.js → index.ts} +110 -94
  391. package/src/multistream/mediaRequestManager.ts +144 -40
  392. package/src/multistream/receiveSlot.ts +69 -26
  393. package/src/multistream/receiveSlotManager.ts +50 -38
  394. package/src/multistream/remoteMedia.ts +30 -4
  395. package/src/multistream/remoteMediaGroup.ts +4 -3
  396. package/src/multistream/remoteMediaManager.ts +230 -66
  397. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  398. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  399. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  400. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  401. package/src/reachability/{index.js → index.ts} +157 -94
  402. package/src/reachability/request.ts +46 -35
  403. package/src/reactions/constants.ts +4 -0
  404. package/src/reactions/reactions.ts +104 -0
  405. package/src/reactions/reactions.type.ts +62 -0
  406. package/src/reconnection-manager/{index.js → index.ts} +228 -120
  407. package/src/recording-controller/enums.ts +8 -0
  408. package/src/recording-controller/index.ts +315 -0
  409. package/src/recording-controller/util.ts +58 -0
  410. package/src/roap/{index.js → index.ts} +77 -60
  411. package/src/roap/request.ts +172 -0
  412. package/src/roap/turnDiscovery.ts +81 -41
  413. package/src/statsAnalyzer/global.ts +37 -0
  414. package/src/statsAnalyzer/index.ts +1242 -0
  415. package/src/statsAnalyzer/mqaUtil.ts +291 -0
  416. package/src/transcription/{index.js → index.ts} +46 -39
  417. package/test/integration/spec/converged-space-meetings.js +176 -0
  418. package/test/integration/spec/journey.js +665 -464
  419. package/test/integration/spec/space-meeting.js +320 -206
  420. package/test/integration/spec/transcription.js +7 -8
  421. package/test/unit/spec/breakouts/breakout.ts +178 -0
  422. package/test/unit/spec/breakouts/collection.ts +15 -0
  423. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  424. package/test/unit/spec/breakouts/index.ts +1252 -0
  425. package/test/unit/spec/breakouts/request.ts +104 -0
  426. package/test/unit/spec/breakouts/utils.js +54 -0
  427. package/test/unit/spec/common/browser-detection.js +9 -28
  428. package/test/unit/spec/controls-options-manager/index.js +204 -0
  429. package/test/unit/spec/controls-options-manager/util.js +86 -0
  430. package/test/unit/spec/fixture/locus.js +92 -90
  431. package/test/unit/spec/locus-info/controlsUtils.js +133 -34
  432. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  433. package/test/unit/spec/locus-info/index.js +303 -2
  434. package/test/unit/spec/locus-info/infoUtils.js +41 -32
  435. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  436. package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
  437. package/test/unit/spec/locus-info/parser.js +3 -9
  438. package/test/unit/spec/locus-info/selfConstant.js +101 -103
  439. package/test/unit/spec/locus-info/selfUtils.js +165 -12
  440. package/test/unit/spec/media/index.ts +72 -8
  441. package/test/unit/spec/media/properties.ts +9 -9
  442. package/test/unit/spec/meeting/in-meeting-actions.ts +29 -2
  443. package/test/unit/spec/meeting/index.js +2503 -802
  444. package/test/unit/spec/meeting/muteState.js +146 -61
  445. package/test/unit/spec/meeting/request.js +141 -43
  446. package/test/unit/spec/meeting/utils.js +135 -164
  447. package/test/unit/spec/meeting-info/meetinginfov2.js +100 -73
  448. package/test/unit/spec/meeting-info/request.js +7 -9
  449. package/test/unit/spec/meeting-info/util.js +11 -12
  450. package/test/unit/spec/meeting-info/utilv2.js +110 -74
  451. package/test/unit/spec/meetings/collection.js +15 -1
  452. package/test/unit/spec/meetings/index.js +622 -263
  453. package/test/unit/spec/meetings/utils.js +65 -14
  454. package/test/unit/spec/member/index.js +24 -1
  455. package/test/unit/spec/member/util.js +359 -32
  456. package/test/unit/spec/members/index.js +294 -54
  457. package/test/unit/spec/members/request.js +50 -20
  458. package/test/unit/spec/members/utils.js +147 -4
  459. package/test/unit/spec/metrics/index.js +16 -21
  460. package/test/unit/spec/multistream/mediaRequestManager.ts +369 -68
  461. package/test/unit/spec/multistream/receiveSlot.ts +76 -17
  462. package/test/unit/spec/multistream/receiveSlotManager.ts +60 -38
  463. package/test/unit/spec/multistream/remoteMedia.ts +32 -2
  464. package/test/unit/spec/multistream/remoteMediaGroup.ts +5 -5
  465. package/test/unit/spec/multistream/remoteMediaManager.ts +549 -65
  466. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  467. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  468. package/test/unit/spec/reachability/index.ts +176 -27
  469. package/test/unit/spec/reachability/request.js +66 -0
  470. package/test/unit/spec/reconnection-manager/index.js +58 -30
  471. package/test/unit/spec/recording-controller/index.js +231 -0
  472. package/test/unit/spec/recording-controller/util.js +102 -0
  473. package/test/unit/spec/roap/index.ts +12 -8
  474. package/test/unit/spec/roap/request.ts +217 -0
  475. package/test/unit/spec/roap/turnDiscovery.ts +72 -49
  476. package/test/unit/spec/stats-analyzer/index.js +108 -57
  477. package/test/utils/cmr.js +44 -42
  478. package/test/utils/constants.js +9 -0
  479. package/test/utils/testUtils.js +98 -77
  480. package/test/utils/webex-config.js +22 -18
  481. package/test/utils/webex-test-users.js +57 -50
  482. package/tsconfig.json +6 -0
  483. package/dist/media/internal-media-core-wrapper.js +0 -22
  484. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  485. package/dist/meeting/effectsState.js +0 -327
  486. package/dist/meeting/effectsState.js.map +0 -1
  487. package/dist/multistream/multistreamMedia.js +0 -116
  488. package/dist/multistream/multistreamMedia.js.map +0 -1
  489. package/dist/peer-connection-manager/util.js +0 -124
  490. package/dist/peer-connection-manager/util.js.map +0 -1
  491. package/src/common/logs/logger-proxy.js +0 -33
  492. package/src/locus-info/controlsUtils.js +0 -102
  493. package/src/media/internal-media-core-wrapper.ts +0 -9
  494. package/src/mediaQualityMetrics/config.js +0 -382
  495. package/src/meeting/effectsState.js +0 -205
  496. package/src/meeting-info/meeting-info-v2.js +0 -255
  497. package/src/meetings/index.js +0 -1015
  498. package/src/multistream/multistreamMedia.ts +0 -92
  499. package/src/peer-connection-manager/util.ts +0 -117
  500. package/src/roap/request.js +0 -127
  501. package/src/statsAnalyzer/global.js +0 -133
  502. package/src/statsAnalyzer/index.js +0 -1006
  503. package/src/statsAnalyzer/mqaUtil.js +0 -173
  504. package/test/unit/spec/meeting/effectsState.js +0 -291
  505. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  506. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -2,7 +2,8 @@ import url from 'url';
2
2
 
3
3
  import btoa from 'btoa';
4
4
  import {
5
- deconstructHydraId
5
+ // @ts-ignore
6
+ deconstructHydraId,
6
7
  } from '@webex/common';
7
8
 
8
9
  import ParameterError from '../common/errors/parameter';
@@ -30,10 +31,10 @@ import {
30
31
  MEET,
31
32
  MEET_M,
32
33
  HTTPS_PROTOCOL,
33
- UUID_REG
34
+ UUID_REG,
34
35
  } from '../constants';
35
36
 
36
- const MeetingInfoUtil = {};
37
+ const MeetingInfoUtil: any = {};
37
38
 
38
39
  MeetingInfoUtil.extractDestination = (destination, type) => {
39
40
  let dest = destination;
@@ -61,9 +62,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
61
62
  }
62
63
 
63
64
  return parsedUrl;
64
- }
65
- catch (error) {
66
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
65
+ } catch (error) {
66
+ LoggerProxy.logger.warn(
67
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
68
+ );
67
69
 
68
70
  return null;
69
71
  }
@@ -74,10 +76,14 @@ MeetingInfoUtil.getParsedUrl = (link) => {
74
76
  * @param {String} value string to parse and see if it matches a meeting link
75
77
  * @returns {Boolean}
76
78
  */
77
- MeetingInfoUtil.isMeetingLink = (value) => {
79
+ MeetingInfoUtil.isMeetingLink = (value: string) => {
78
80
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
79
81
  const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);
80
- const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));
82
+ const pathNameBool =
83
+ parsedUrl.pathname &&
84
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
85
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
86
+ parsedUrl.pathname.includes(`/${JOIN}`));
81
87
 
82
88
  return hostNameBool && pathNameBool;
83
89
  };
@@ -122,7 +128,6 @@ MeetingInfoUtil.convertLinkToSip = (value) => {
122
128
  return `${user}@${company}.${WEBEX_DOT_COM}`;
123
129
  };
124
130
 
125
-
126
131
  MeetingInfoUtil.isSipUri = (sipString) => {
127
132
  // TODO: lets remove regex from this equation and user URI matchers and such
128
133
  // have not found a great sip uri parser library as of now
@@ -154,15 +159,21 @@ MeetingInfoUtil.getHydraId = (destination) => {
154
159
  return {};
155
160
  };
156
161
 
157
- MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {
158
- if (res.emails && res.emails.length) {
159
- return res.emails[0];
160
- }
161
- throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
162
- }).catch((err) => {
163
- LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);
164
- throw err;
165
- });
162
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
163
+ webex.people
164
+ .get(destination)
165
+ .then((res) => {
166
+ if (res.emails && res.emails.length) {
167
+ return res.emails[0];
168
+ }
169
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
170
+ })
171
+ .catch((err) => {
172
+ LoggerProxy.logger.error(
173
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
174
+ );
175
+ throw err;
176
+ });
166
177
 
167
178
  MeetingInfoUtil.generateOptions = async (from) => {
168
179
  const {destination, type, webex} = from;
@@ -170,31 +181,29 @@ MeetingInfoUtil.generateOptions = async (from) => {
170
181
  if (type) {
171
182
  return {
172
183
  destination,
173
- type
184
+ type,
174
185
  };
175
186
  }
176
- const options = {};
187
+ const options: any = {};
177
188
  const hydraId = MeetingInfoUtil.getHydraId(destination);
178
189
 
179
190
  if (MeetingInfoUtil.isMeetingLink(destination)) {
180
- LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
191
+ LoggerProxy.logger.warn(
192
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
193
+ );
181
194
 
182
195
  options.type = _MEETING_LINK_;
183
196
  options.destination = destination;
184
- }
185
- else if (MeetingInfoUtil.isSipUri(destination)) {
197
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
186
198
  options.type = _SIP_URI_;
187
199
  options.destination = destination;
188
- }
189
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
200
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
190
201
  options.type = _SIP_URI_;
191
202
  options.destination = destination;
192
- }
193
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
203
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
194
204
  options.type = _CONVERSATION_URL_;
195
205
  options.destination = destination;
196
- }
197
- else if (hydraId.people) {
206
+ } else if (hydraId.people) {
198
207
  options.type = _SIP_URI_;
199
208
 
200
209
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -207,26 +216,25 @@ MeetingInfoUtil.generateOptions = async (from) => {
207
216
 
208
217
  return Promise.resolve(options);
209
218
  });
210
- }
211
- else if (hydraId.room) {
219
+ } else if (hydraId.room) {
212
220
  options.type = _CONVERSATION_URL_;
213
221
  try {
214
222
  await webex.internal.services.waitForCatalog('postauth');
215
223
 
216
224
  const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
217
225
  cluster: hydraId.cluster,
218
- id: hydraId.destination
226
+ id: hydraId.destination,
219
227
  });
220
228
 
221
229
  options.destination = conversationUrl;
222
- }
223
- catch (e) {
230
+ } catch (e) {
224
231
  LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);
225
- throw (e);
232
+ throw e;
226
233
  }
227
- }
228
- else {
229
- throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
234
+ } else {
235
+ throw new ParameterError(
236
+ 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
237
+ );
230
238
  }
231
239
 
232
240
  return Promise.resolve(options);
@@ -238,7 +246,7 @@ MeetingInfoUtil.generateOptions = async (from) => {
238
246
  * @param {Object} value ?? value.value
239
247
  * @returns {Object} returns an object with {resource, method}
240
248
  */
241
- MeetingInfoUtil.getResourceUrl = (type, value) => {
249
+ MeetingInfoUtil.getResourceUrl = (type: string, value: any) => {
242
250
  let resource = `/${LOCI}/${MEETINGINFO}`;
243
251
  let method = HTTP_VERBS.GET;
244
252
  let uri = null;
@@ -247,7 +255,9 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
247
255
  case _SIP_URI_:
248
256
  case _PERSONAL_ROOM_:
249
257
  case _MEETING_ID_:
250
- resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
258
+ resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(
259
+ value
260
+ )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
251
261
  break;
252
262
  case _CONVERSATION_URL_:
253
263
  method = HTTP_VERBS.PUT;
@@ -257,7 +267,9 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
257
267
  method = HTTP_VERBS.PUT;
258
268
  break;
259
269
  case _MEETING_LINK_:
260
- resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
270
+ resource = `$/${LOCI}/${MEETINGINFO}/${btoa(
271
+ value
272
+ )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
261
273
  break;
262
274
  default:
263
275
  }
@@ -265,34 +277,31 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
265
277
  return {
266
278
  uri,
267
279
  resource,
268
- method
280
+ method,
269
281
  };
270
282
  };
271
283
 
272
284
  MeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {
273
- let requestParams = {
285
+ let requestParams: any = {
274
286
  method: resourceOptions.method,
275
287
  api,
276
- resource: resourceOptions.resource
288
+ resource: resourceOptions.resource,
277
289
  };
278
290
 
279
291
  if (resourceOptions.method === HTTP_VERBS.GET) {
280
292
  // for handling URL redirections
281
293
  requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);
282
- }
283
- else
284
- if (type !== _LOCUS_ID_) {
294
+ } else if (type !== _LOCUS_ID_) {
285
295
  // locus id check is a PUT not sure why
286
296
  requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
287
297
  requestParams.body = {
288
298
  value,
289
- lookupType: type
299
+ lookupType: type,
290
300
  };
291
- }
292
- else if (type === _LOCUS_ID_) {
301
+ } else if (type === _LOCUS_ID_) {
293
302
  requestParams = {
294
303
  method: resourceOptions.method,
295
- uri: resourceOptions.uri
304
+ uri: resourceOptions.uri,
296
305
  };
297
306
  }
298
307
 
@@ -1,7 +1,8 @@
1
1
  import url from 'url';
2
2
 
3
3
  import {
4
- deconstructHydraId
4
+ // @ts-ignore
5
+ deconstructHydraId,
5
6
  } from '@webex/common';
6
7
 
7
8
  import {
@@ -22,12 +23,12 @@ import {
22
23
  MEET_M,
23
24
  HTTPS_PROTOCOL,
24
25
  UUID_REG,
25
- VALID_EMAIL_ADDRESS
26
+ VALID_EMAIL_ADDRESS,
26
27
  } from '../constants';
27
28
  import ParameterError from '../common/errors/parameter';
28
29
  import LoggerProxy from '../common/logs/logger-proxy';
29
30
 
30
- const MeetingInfoUtil = {};
31
+ const MeetingInfoUtil: any = {};
31
32
 
32
33
  MeetingInfoUtil.getParsedUrl = (link) => {
33
34
  try {
@@ -42,9 +43,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
42
43
  }
43
44
 
44
45
  return parsedUrl;
45
- }
46
- catch (error) {
47
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
46
+ } catch (error) {
47
+ LoggerProxy.logger.warn(
48
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
49
+ );
48
50
 
49
51
  return null;
50
52
  }
@@ -55,10 +57,14 @@ MeetingInfoUtil.getParsedUrl = (link) => {
55
57
  * @param {String} value string to parse and see if it matches a meeting link
56
58
  * @returns {Boolean}
57
59
  */
58
- MeetingInfoUtil.isMeetingLink = (value) => {
60
+ MeetingInfoUtil.isMeetingLink = (value: string) => {
59
61
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
60
62
  const hostNameBool = parsedUrl.hostname && parsedUrl.hostname.includes(WEBEX_DOT_COM);
61
- const pathNameBool = parsedUrl.pathname && (parsedUrl.pathname.includes(`/${MEET}`) || parsedUrl.pathname.includes(`/${MEET_M}`) || parsedUrl.pathname.includes(`/${JOIN}`));
63
+ const pathNameBool =
64
+ parsedUrl.pathname &&
65
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
66
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
67
+ parsedUrl.pathname.includes(`/${JOIN}`));
62
68
 
63
69
  return hostNameBool && pathNameBool;
64
70
  };
@@ -73,7 +79,6 @@ MeetingInfoUtil.isConversationUrl = (value, webex) => {
73
79
  return false;
74
80
  };
75
81
 
76
-
77
82
  MeetingInfoUtil.isSipUri = (sipString) => {
78
83
  // TODO: lets remove regex from this equation and user URI matchers and such
79
84
  // have not found a great sip uri parser library as of now
@@ -105,30 +110,38 @@ MeetingInfoUtil.getHydraId = (destination) => {
105
110
  return {};
106
111
  };
107
112
 
108
- MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) => webex.people.get(destination).then((res) => {
109
- if (res.emails && res.emails.length) {
110
- return res.emails[0];
111
- }
112
- throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
113
- }).catch((err) => {
114
- LoggerProxy.logger.error(`Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `);
115
- throw err;
116
- });
117
-
113
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
114
+ webex.people
115
+ .get(destination)
116
+ .then((res) => {
117
+ if (res.emails && res.emails.length) {
118
+ return res.emails[0];
119
+ }
120
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
121
+ })
122
+ .catch((err) => {
123
+ LoggerProxy.logger.error(
124
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
125
+ );
126
+ throw err;
127
+ });
118
128
 
119
129
  MeetingInfoUtil.getDestinationType = async (from) => {
120
130
  const {type, webex} = from;
121
131
  let {destination} = from;
122
132
 
123
- if (type === _PERSONAL_ROOM_) { // this case checks if your type is personal room
124
- if (!destination) { // if we are not getting anything in desination we fetch org and user ids from webex instance
133
+ if (type === _PERSONAL_ROOM_) {
134
+ // this case checks if your type is personal room
135
+ if (!destination) {
136
+ // if we are not getting anything in desination we fetch org and user ids from webex instance
125
137
  destination = {
126
138
  userId: webex.internal.device.userId,
127
- orgId: webex.internal.device.orgId
139
+ orgId: webex.internal.device.orgId,
128
140
  };
129
- }
130
- else {
131
- const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default
141
+ } else {
142
+ const options = VALID_EMAIL_ADDRESS.test(destination)
143
+ ? {email: destination}
144
+ : {id: destination}; // we are assuming userId as default
132
145
  const res = await webex.people.list(options);
133
146
 
134
147
  let {orgId, id: userId} = res.items[0];
@@ -141,31 +154,29 @@ MeetingInfoUtil.getDestinationType = async (from) => {
141
154
  if (type) {
142
155
  return {
143
156
  destination,
144
- type
157
+ type,
145
158
  };
146
159
  }
147
- const options = {};
160
+ const options: any = {};
148
161
  const hydraId = MeetingInfoUtil.getHydraId(destination);
149
162
 
150
163
  if (MeetingInfoUtil.isMeetingLink(destination)) {
151
- LoggerProxy.logger.warn('Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead');
164
+ LoggerProxy.logger.warn(
165
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
166
+ );
152
167
 
153
168
  options.type = _MEETING_LINK_;
154
169
  options.destination = destination;
155
- }
156
- else if (MeetingInfoUtil.isSipUri(destination)) {
170
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
157
171
  options.type = _SIP_URI_;
158
172
  options.destination = destination;
159
- }
160
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
173
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
161
174
  options.type = _SIP_URI_;
162
175
  options.destination = destination;
163
- }
164
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
176
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
165
177
  options.type = _CONVERSATION_URL_;
166
178
  options.destination = destination;
167
- }
168
- else if (hydraId.people) {
179
+ } else if (hydraId.people) {
169
180
  options.type = _SIP_URI_;
170
181
 
171
182
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -178,27 +189,28 @@ MeetingInfoUtil.getDestinationType = async (from) => {
178
189
 
179
190
  return Promise.resolve(options);
180
191
  });
181
- }
182
- else if (hydraId.room) {
192
+ } else if (hydraId.room) {
183
193
  options.type = _CONVERSATION_URL_;
184
194
  try {
185
195
  await webex.internal.services.waitForCatalog('postauth');
186
196
 
187
197
  const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
188
198
  cluster: hydraId.cluster,
189
- id: hydraId.destination
199
+ id: hydraId.destination,
190
200
  });
191
201
 
192
202
  options.destination = conversationUrl;
193
- }
194
- catch (e) {
203
+ } catch (e) {
195
204
  LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
196
- throw (e);
205
+ throw e;
197
206
  }
198
- }
199
- else {
200
- LoggerProxy.logger.warn('Meeting-info:util#getDestinationType --> (\'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
201
- throw new ParameterError('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.');
207
+ } else {
208
+ LoggerProxy.logger.warn(
209
+ "Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url."
210
+ );
211
+ throw new ParameterError(
212
+ 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
213
+ );
202
214
  }
203
215
 
204
216
  return Promise.resolve(options);
@@ -211,11 +223,9 @@ MeetingInfoUtil.getDestinationType = async (from) => {
211
223
  * @param {Object} options.destination ?? value.value
212
224
  * @returns {Object} returns an object with {resource, method}
213
225
  */
214
- MeetingInfoUtil.getRequestBody = (options) => {
215
- const {
216
- type, destination, password, captchaInfo
217
- } = options;
218
- const body = {
226
+ MeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {
227
+ const {type, destination, password, captchaInfo} = options;
228
+ const body: any = {
219
229
  supportHostKey: true,
220
230
  supportCountryList: true,
221
231
  };
@@ -238,8 +248,7 @@ MeetingInfoUtil.getRequestBody = (options) => {
238
248
  // use meetingID for the completer meeting info for the already started meeting
239
249
  if (destination.info?.webExMeetingId) {
240
250
  body.meetingKey = destination.info.webExMeetingId;
241
- }
242
- else if (destination.info?.sipUri) {
251
+ } else if (destination.info?.sipUri) {
243
252
  body.sipUrl = destination.info.sipUri;
244
253
  }
245
254
  break;
@@ -270,7 +279,7 @@ MeetingInfoUtil.getRequestBody = (options) => {
270
279
  * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')
271
280
  * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')
272
281
  */
273
- MeetingInfoUtil.getWebexSite = (uri) => {
282
+ MeetingInfoUtil.getWebexSite = (uri: string) => {
274
283
  const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];
275
284
  const site = uri?.match(/.+@([^.]+\.[^.]+\.[^.]+)$/)?.[1];
276
285
 
@@ -284,10 +293,8 @@ MeetingInfoUtil.getWebexSite = (uri) => {
284
293
  * @param {Object} options.destination ?? value.value
285
294
  * @returns {String} returns a URI string or null of there is no direct URI
286
295
  */
287
- MeetingInfoUtil.getDirectMeetingInfoURI = (options) => {
288
- const {
289
- type, destination
290
- } = options;
296
+ MeetingInfoUtil.getDirectMeetingInfoURI = (options: {type: string; destination: any}) => {
297
+ const {type, destination} = options;
291
298
 
292
299
  let preferredWebexSite = null;
293
300
 
@@ -1,6 +1,7 @@
1
1
  import {find} from 'lodash';
2
2
 
3
3
  import Collection from '../common/collection';
4
+
4
5
  /**
5
6
  * @export
6
7
  * @class MeetingCollection
@@ -16,12 +17,13 @@ export default class MeetingCollection extends Collection {
16
17
  }
17
18
 
18
19
  set(meeting) {
20
+ // @ts-ignore
19
21
  this.meetings[meeting.id] = meeting;
20
22
 
23
+ // @ts-ignore
21
24
  return this.meetings[meeting.id];
22
25
  }
23
26
 
24
-
25
27
  /**
26
28
  * get a specific meeting searching for key
27
29
  * @param {String} key
@@ -30,9 +32,30 @@ export default class MeetingCollection extends Collection {
30
32
  * @public
31
33
  * @memberof MeetingCollection
32
34
  */
33
- getByKey(key, value) {
35
+ public getByKey(key: string, value: any) {
34
36
  if (key && value) {
35
- return find(this.meetings, (meeting) => (meeting[key] === value));
37
+ // @ts-ignore
38
+ return find(this.meetings, (meeting) => meeting[key] === value);
39
+ }
40
+
41
+ return null;
42
+ }
43
+
44
+ /**
45
+ * get a specific meeting searching for key
46
+ * @param {String} breakoutUrl
47
+ * @returns {Meeting} if found, else returns null
48
+ * @public
49
+ * @memberof MeetingCollection
50
+ */
51
+ public getActiveBreakoutLocus(breakoutUrl: string) {
52
+ if (breakoutUrl) {
53
+ // @ts-ignore
54
+ return find(
55
+ // @ts-ignore
56
+ this.meetings,
57
+ (meeting) => meeting.breakouts?.url === breakoutUrl && meeting.breakouts?.isActiveBreakout
58
+ );
36
59
  }
37
60
 
38
61
  return null;