@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
@@ -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,13 @@ import {
22
23
  MEET_M,
23
24
  HTTPS_PROTOCOL,
24
25
  UUID_REG,
25
- VALID_EMAIL_ADDRESS
26
+ VALID_EMAIL_ADDRESS,
27
+ DEFAULT_MEETING_INFO_REQUEST_BODY,
26
28
  } from '../constants';
27
29
  import ParameterError from '../common/errors/parameter';
28
30
  import LoggerProxy from '../common/logs/logger-proxy';
29
31
 
30
- const MeetingInfoUtil = {};
32
+ const MeetingInfoUtil: any = {};
31
33
 
32
34
  MeetingInfoUtil.getParsedUrl = (link) => {
33
35
  try {
@@ -42,9 +44,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
42
44
  }
43
45
 
44
46
  return parsedUrl;
45
- }
46
- catch (error) {
47
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
47
+ } catch (error) {
48
+ LoggerProxy.logger.warn(
49
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
50
+ );
48
51
 
49
52
  return null;
50
53
  }
@@ -55,10 +58,14 @@ MeetingInfoUtil.getParsedUrl = (link) => {
55
58
  * @param {String} value string to parse and see if it matches a meeting link
56
59
  * @returns {Boolean}
57
60
  */
58
- MeetingInfoUtil.isMeetingLink = (value) => {
61
+ MeetingInfoUtil.isMeetingLink = (value: string) => {
59
62
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
60
63
  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}`));
64
+ const pathNameBool =
65
+ parsedUrl.pathname &&
66
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
67
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
68
+ parsedUrl.pathname.includes(`/${JOIN}`));
62
69
 
63
70
  return hostNameBool && pathNameBool;
64
71
  };
@@ -73,7 +80,6 @@ MeetingInfoUtil.isConversationUrl = (value, webex) => {
73
80
  return false;
74
81
  };
75
82
 
76
-
77
83
  MeetingInfoUtil.isSipUri = (sipString) => {
78
84
  // TODO: lets remove regex from this equation and user URI matchers and such
79
85
  // have not found a great sip uri parser library as of now
@@ -105,30 +111,38 @@ MeetingInfoUtil.getHydraId = (destination) => {
105
111
  return {};
106
112
  };
107
113
 
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
-
114
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
115
+ webex.people
116
+ .get(destination)
117
+ .then((res) => {
118
+ if (res.emails && res.emails.length) {
119
+ return res.emails[0];
120
+ }
121
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
122
+ })
123
+ .catch((err) => {
124
+ LoggerProxy.logger.error(
125
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
126
+ );
127
+ throw err;
128
+ });
118
129
 
119
130
  MeetingInfoUtil.getDestinationType = async (from) => {
120
131
  const {type, webex} = from;
121
132
  let {destination} = from;
122
133
 
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
134
+ if (type === _PERSONAL_ROOM_) {
135
+ // this case checks if your type is personal room
136
+ if (!destination) {
137
+ // if we are not getting anything in desination we fetch org and user ids from webex instance
125
138
  destination = {
126
139
  userId: webex.internal.device.userId,
127
- orgId: webex.internal.device.orgId
140
+ orgId: webex.internal.device.orgId,
128
141
  };
129
- }
130
- else {
131
- const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default
142
+ } else {
143
+ const options = VALID_EMAIL_ADDRESS.test(destination)
144
+ ? {email: destination}
145
+ : {id: destination}; // we are assuming userId as default
132
146
  const res = await webex.people.list(options);
133
147
 
134
148
  let {orgId, id: userId} = res.items[0];
@@ -141,31 +155,29 @@ MeetingInfoUtil.getDestinationType = async (from) => {
141
155
  if (type) {
142
156
  return {
143
157
  destination,
144
- type
158
+ type,
145
159
  };
146
160
  }
147
- const options = {};
161
+ const options: any = {};
148
162
  const hydraId = MeetingInfoUtil.getHydraId(destination);
149
163
 
150
164
  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');
165
+ LoggerProxy.logger.warn(
166
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
167
+ );
152
168
 
153
169
  options.type = _MEETING_LINK_;
154
170
  options.destination = destination;
155
- }
156
- else if (MeetingInfoUtil.isSipUri(destination)) {
171
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
157
172
  options.type = _SIP_URI_;
158
173
  options.destination = destination;
159
- }
160
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
174
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
161
175
  options.type = _SIP_URI_;
162
176
  options.destination = destination;
163
- }
164
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
177
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
165
178
  options.type = _CONVERSATION_URL_;
166
179
  options.destination = destination;
167
- }
168
- else if (hydraId.people) {
180
+ } else if (hydraId.people) {
169
181
  options.type = _SIP_URI_;
170
182
 
171
183
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -178,27 +190,28 @@ MeetingInfoUtil.getDestinationType = async (from) => {
178
190
 
179
191
  return Promise.resolve(options);
180
192
  });
181
- }
182
- else if (hydraId.room) {
193
+ } else if (hydraId.room) {
183
194
  options.type = _CONVERSATION_URL_;
184
195
  try {
185
196
  await webex.internal.services.waitForCatalog('postauth');
186
197
 
187
198
  const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
188
199
  cluster: hydraId.cluster,
189
- id: hydraId.destination
200
+ id: hydraId.destination,
190
201
  });
191
202
 
192
203
  options.destination = conversationUrl;
193
- }
194
- catch (e) {
204
+ } catch (e) {
195
205
  LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
196
- throw (e);
206
+ throw e;
197
207
  }
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.');
208
+ } else {
209
+ LoggerProxy.logger.warn(
210
+ "Meeting-info:util#getDestinationType --> ('MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url."
211
+ );
212
+ throw new ParameterError(
213
+ 'MeetingInfo is fetched with meeting link, sip uri, phone number, hydra room id, hydra people id, or a conversation url.'
214
+ );
202
215
  }
203
216
 
204
217
  return Promise.resolve(options);
@@ -208,16 +221,15 @@ MeetingInfoUtil.getDestinationType = async (from) => {
208
221
  * Helper function to build up a correct locus url depending on the value passed
209
222
  * @param {Object} options type and value to fetch meeting info
210
223
  * @param {String} options.type One of [SIP_URI, PERSONAL_ROOM, MEETING_ID, CONVERSATION_URL, LOCUS_ID, MEETING_LINK]
224
+ * @param {String} options.installedOrgID org ID of user's machine
211
225
  * @param {Object} options.destination ?? value.value
212
226
  * @returns {Object} returns an object with {resource, method}
213
227
  */
214
- MeetingInfoUtil.getRequestBody = (options) => {
215
- const {
216
- type, destination, password, captchaInfo
217
- } = options;
218
- const body = {
219
- supportHostKey: true,
220
- supportCountryList: true,
228
+ MeetingInfoUtil.getRequestBody = (options: {type: string; destination: object} | any) => {
229
+ const {type, destination, password, captchaInfo, installedOrgID, locusId, extraParams} = options;
230
+ const body: any = {
231
+ ...DEFAULT_MEETING_INFO_REQUEST_BODY,
232
+ ...extraParams,
221
233
  };
222
234
 
223
235
  switch (type) {
@@ -238,8 +250,7 @@ MeetingInfoUtil.getRequestBody = (options) => {
238
250
  // use meetingID for the completer meeting info for the already started meeting
239
251
  if (destination.info?.webExMeetingId) {
240
252
  body.meetingKey = destination.info.webExMeetingId;
241
- }
242
- else if (destination.info?.sipUri) {
253
+ } else if (destination.info?.sipUri) {
243
254
  body.sipUrl = destination.info.sipUri;
244
255
  }
245
256
  break;
@@ -262,6 +273,14 @@ MeetingInfoUtil.getRequestBody = (options) => {
262
273
  body.captchaVerifyCode = captchaInfo.code;
263
274
  }
264
275
 
276
+ if (installedOrgID) {
277
+ body.installedOrgID = installedOrgID;
278
+ }
279
+
280
+ if (locusId) {
281
+ body.locusId = locusId;
282
+ }
283
+
265
284
  return body;
266
285
  };
267
286
 
@@ -270,7 +289,7 @@ MeetingInfoUtil.getRequestBody = (options) => {
270
289
  * @param {String} uri string (e.g. '10019857020@convergedats.webex.com')
271
290
  * @returns {String} the site/host part of the URI string (e.g. 'convergedats.webex.com')
272
291
  */
273
- MeetingInfoUtil.getWebexSite = (uri) => {
292
+ MeetingInfoUtil.getWebexSite = (uri: string) => {
274
293
  const exceptedDomains = ['meet.webex.com', 'meetup.webex.com', 'ciscospark.com'];
275
294
  const site = uri?.match(/.+@([^.]+\.[^.]+\.[^.]+)$/)?.[1];
276
295
 
@@ -284,10 +303,8 @@ MeetingInfoUtil.getWebexSite = (uri) => {
284
303
  * @param {Object} options.destination ?? value.value
285
304
  * @returns {String} returns a URI string or null of there is no direct URI
286
305
  */
287
- MeetingInfoUtil.getDirectMeetingInfoURI = (options) => {
288
- const {
289
- type, destination
290
- } = options;
306
+ MeetingInfoUtil.getDirectMeetingInfoURI = (options: {type: string; destination: any}) => {
307
+ const {type, destination} = options;
291
308
 
292
309
  let preferredWebexSite = null;
293
310
 
@@ -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;