@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,12 +1,12 @@
1
1
  import url from 'url';
2
2
 
3
3
  import btoa from 'btoa';
4
- import {
5
- deconstructHydraId
6
- } from '@webex/common';
4
+ // @ts-ignore
5
+ import {deconstructHydraId} from '@webex/common';
7
6
 
8
7
  import ParameterError from '../common/errors/parameter';
9
8
  import LoggerProxy from '../common/logs/logger-proxy';
9
+
10
10
  import {
11
11
  _SIP_URI_,
12
12
  _PERSONAL_ROOM_,
@@ -30,10 +30,10 @@ import {
30
30
  MEET,
31
31
  MEET_M,
32
32
  HTTPS_PROTOCOL,
33
- UUID_REG
33
+ UUID_REG,
34
34
  } from '../constants';
35
35
 
36
- const MeetingInfoUtil = {};
36
+ const MeetingInfoUtil: any = {};
37
37
 
38
38
  MeetingInfoUtil.extractDestination = (destination, type) => {
39
39
  let dest = destination;
@@ -61,9 +61,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
61
61
  }
62
62
 
63
63
  return parsedUrl;
64
- }
65
- catch (error) {
66
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
64
+ } catch (error) {
65
+ LoggerProxy.logger.warn(
66
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
67
+ );
67
68
 
68
69
  return null;
69
70
  }
@@ -74,10 +75,14 @@ MeetingInfoUtil.getParsedUrl = (link) => {
74
75
  * @param {String} value string to parse and see if it matches a meeting link
75
76
  * @returns {Boolean}
76
77
  */
77
- MeetingInfoUtil.isMeetingLink = (value) => {
78
+ MeetingInfoUtil.isMeetingLink = (value: string) => {
78
79
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
79
80
  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}`));
81
+ const pathNameBool =
82
+ parsedUrl.pathname &&
83
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
84
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
85
+ parsedUrl.pathname.includes(`/${JOIN}`));
81
86
 
82
87
  return hostNameBool && pathNameBool;
83
88
  };
@@ -122,7 +127,6 @@ MeetingInfoUtil.convertLinkToSip = (value) => {
122
127
  return `${user}@${company}.${WEBEX_DOT_COM}`;
123
128
  };
124
129
 
125
-
126
130
  MeetingInfoUtil.isSipUri = (sipString) => {
127
131
  // TODO: lets remove regex from this equation and user URI matchers and such
128
132
  // have not found a great sip uri parser library as of now
@@ -154,15 +158,21 @@ MeetingInfoUtil.getHydraId = (destination) => {
154
158
  return {};
155
159
  };
156
160
 
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
- });
161
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
162
+ webex.people
163
+ .get(destination)
164
+ .then((res) => {
165
+ if (res.emails && res.emails.length) {
166
+ return res.emails[0];
167
+ }
168
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
169
+ })
170
+ .catch((err) => {
171
+ LoggerProxy.logger.error(
172
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
173
+ );
174
+ throw err;
175
+ });
166
176
 
167
177
  MeetingInfoUtil.generateOptions = async (from) => {
168
178
  const {destination, type, webex} = from;
@@ -170,31 +180,29 @@ MeetingInfoUtil.generateOptions = async (from) => {
170
180
  if (type) {
171
181
  return {
172
182
  destination,
173
- type
183
+ type,
174
184
  };
175
185
  }
176
- const options = {};
186
+ const options: any = {};
177
187
  const hydraId = MeetingInfoUtil.getHydraId(destination);
178
188
 
179
189
  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');
190
+ LoggerProxy.logger.warn(
191
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
192
+ );
181
193
 
182
194
  options.type = _MEETING_LINK_;
183
195
  options.destination = destination;
184
- }
185
- else if (MeetingInfoUtil.isSipUri(destination)) {
196
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
186
197
  options.type = _SIP_URI_;
187
198
  options.destination = destination;
188
- }
189
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
199
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
190
200
  options.type = _SIP_URI_;
191
201
  options.destination = destination;
192
- }
193
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
202
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
194
203
  options.type = _CONVERSATION_URL_;
195
204
  options.destination = destination;
196
- }
197
- else if (hydraId.people) {
205
+ } else if (hydraId.people) {
198
206
  options.type = _SIP_URI_;
199
207
 
200
208
  return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
@@ -207,26 +215,29 @@ MeetingInfoUtil.generateOptions = async (from) => {
207
215
 
208
216
  return Promise.resolve(options);
209
217
  });
210
- }
211
- else if (hydraId.room) {
218
+ } else if (hydraId.room) {
212
219
  options.type = _CONVERSATION_URL_;
213
220
  try {
214
221
  await webex.internal.services.waitForCatalog('postauth');
215
222
 
216
- const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
217
- cluster: hydraId.cluster,
218
- id: hydraId.destination
219
- });
220
-
221
- options.destination = conversationUrl;
222
- }
223
- catch (e) {
223
+ const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(
224
+ {
225
+ cluster: hydraId.cluster,
226
+ },
227
+ webex
228
+ );
229
+
230
+ options.destination = hydraId.destination
231
+ ? `${serviceUrl}/conversations/${hydraId.destination}`
232
+ : serviceUrl;
233
+ } catch (e) {
224
234
  LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);
225
- throw (e);
235
+ throw e;
226
236
  }
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.');
237
+ } else {
238
+ throw new ParameterError(
239
+ 'MeetingInfo is fetched with the meeting link, SIP URI, phone number, Hydra people ID, or a conversation URL.'
240
+ );
230
241
  }
231
242
 
232
243
  return Promise.resolve(options);
@@ -238,7 +249,7 @@ MeetingInfoUtil.generateOptions = async (from) => {
238
249
  * @param {Object} value ?? value.value
239
250
  * @returns {Object} returns an object with {resource, method}
240
251
  */
241
- MeetingInfoUtil.getResourceUrl = (type, value) => {
252
+ MeetingInfoUtil.getResourceUrl = (type: string, value: any) => {
242
253
  let resource = `/${LOCI}/${MEETINGINFO}`;
243
254
  let method = HTTP_VERBS.GET;
244
255
  let uri = null;
@@ -247,7 +258,9 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
247
258
  case _SIP_URI_:
248
259
  case _PERSONAL_ROOM_:
249
260
  case _MEETING_ID_:
250
- resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(value)}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
261
+ resource = `/${LOCI}/${MEETINGINFO}/${encodeURIComponent(
262
+ value
263
+ )}?${TYPE}=${type}&${USE_URI_LOOKUP_FALSE}`;
251
264
  break;
252
265
  case _CONVERSATION_URL_:
253
266
  method = HTTP_VERBS.PUT;
@@ -257,7 +270,9 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
257
270
  method = HTTP_VERBS.PUT;
258
271
  break;
259
272
  case _MEETING_LINK_:
260
- resource = `$/${LOCI}/${MEETINGINFO}/${btoa(value)}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
273
+ resource = `$/${LOCI}/${MEETINGINFO}/${btoa(
274
+ value
275
+ )}?${TYPE}=${_MEETING_LINK_}&${USE_URI_LOOKUP_FALSE}`;
261
276
  break;
262
277
  default:
263
278
  }
@@ -265,34 +280,31 @@ MeetingInfoUtil.getResourceUrl = (type, value) => {
265
280
  return {
266
281
  uri,
267
282
  resource,
268
- method
283
+ method,
269
284
  };
270
285
  };
271
286
 
272
287
  MeetingInfoUtil.getRequestParams = (resourceOptions, type, value, api) => {
273
- let requestParams = {
288
+ let requestParams: any = {
274
289
  method: resourceOptions.method,
275
290
  api,
276
- resource: resourceOptions.resource
291
+ resource: resourceOptions.resource,
277
292
  };
278
293
 
279
294
  if (resourceOptions.method === HTTP_VERBS.GET) {
280
295
  // for handling URL redirections
281
296
  requestParams.resource = requestParams.resource.concat(`&${ALTERNATE_REDIRECT_TRUE}`);
282
- }
283
- else
284
- if (type !== _LOCUS_ID_) {
297
+ } else if (type !== _LOCUS_ID_) {
285
298
  // locus id check is a PUT not sure why
286
299
  requestParams.resource = requestParams.resource.concat(`?${ALTERNATE_REDIRECT_TRUE}`);
287
300
  requestParams.body = {
288
301
  value,
289
- lookupType: type
302
+ lookupType: type,
290
303
  };
291
- }
292
- else if (type === _LOCUS_ID_) {
304
+ } else if (type === _LOCUS_ID_) {
293
305
  requestParams = {
294
306
  method: resourceOptions.method,
295
- uri: resourceOptions.uri
307
+ uri: resourceOptions.uri,
296
308
  };
297
309
  }
298
310
 
@@ -1,8 +1,7 @@
1
1
  import url from 'url';
2
2
 
3
- import {
4
- deconstructHydraId
5
- } from '@webex/common';
3
+ // @ts-ignore
4
+ import {deconstructHydraId} from '@webex/common';
6
5
 
7
6
  import {
8
7
  _SIP_URI_,
@@ -20,14 +19,20 @@ import {
20
19
  JOIN,
21
20
  MEET,
22
21
  MEET_M,
22
+ MEET_CISCO,
23
+ MEET_CO,
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';
31
+ import {SpaceIDDeprecatedError} from '../common/errors/webex-errors';
29
32
 
30
- const MeetingInfoUtil = {};
33
+ const MeetingInfoUtil: any = {};
34
+ const meetingInfoError =
35
+ 'MeetingInfo is fetched with the meeting link, SIP URI, phone number, Hydra people ID, or a conversation URL.';
31
36
 
32
37
  MeetingInfoUtil.getParsedUrl = (link) => {
33
38
  try {
@@ -42,9 +47,10 @@ MeetingInfoUtil.getParsedUrl = (link) => {
42
47
  }
43
48
 
44
49
  return parsedUrl;
45
- }
46
- catch (error) {
47
- LoggerProxy.logger.warn(`Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`);
50
+ } catch (error) {
51
+ LoggerProxy.logger.warn(
52
+ `Meeting-info:util#getParsedUrl --> unable to parse the URL, error: ${error}`
53
+ );
48
54
 
49
55
  return null;
50
56
  }
@@ -55,10 +61,16 @@ MeetingInfoUtil.getParsedUrl = (link) => {
55
61
  * @param {String} value string to parse and see if it matches a meeting link
56
62
  * @returns {Boolean}
57
63
  */
58
- MeetingInfoUtil.isMeetingLink = (value) => {
64
+ MeetingInfoUtil.isMeetingLink = (value: string) => {
59
65
  const parsedUrl = MeetingInfoUtil.getParsedUrl(value);
60
66
  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}`));
67
+ const pathNameBool =
68
+ parsedUrl.pathname &&
69
+ (parsedUrl.pathname.includes(`/${MEET}`) ||
70
+ parsedUrl.pathname.includes(`/${MEET_M}`) ||
71
+ parsedUrl.pathname.includes(`/${MEET_CISCO}`) ||
72
+ parsedUrl.pathname.includes(`/${MEET_CO}`) ||
73
+ parsedUrl.pathname.includes(`/${JOIN}`));
62
74
 
63
75
  return hostNameBool && pathNameBool;
64
76
  };
@@ -73,7 +85,6 @@ MeetingInfoUtil.isConversationUrl = (value, webex) => {
73
85
  return false;
74
86
  };
75
87
 
76
-
77
88
  MeetingInfoUtil.isSipUri = (sipString) => {
78
89
  // TODO: lets remove regex from this equation and user URI matchers and such
79
90
  // have not found a great sip uri parser library as of now
@@ -105,30 +116,38 @@ MeetingInfoUtil.getHydraId = (destination) => {
105
116
  return {};
106
117
  };
107
118
 
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
-
119
+ MeetingInfoUtil.getSipUriFromHydraPersonId = (destination, webex) =>
120
+ webex.people
121
+ .get(destination)
122
+ .then((res) => {
123
+ if (res.emails && res.emails.length) {
124
+ return res.emails[0];
125
+ }
126
+ throw new ParameterError('Hydra Id Lookup was an invalid hydra person id.');
127
+ })
128
+ .catch((err) => {
129
+ LoggerProxy.logger.error(
130
+ `Meeting-info:util#MeetingInfoUtil.getSipUriFromHydraPersonId --> getSipUriFromHydraPersonId ${err} `
131
+ );
132
+ throw err;
133
+ });
118
134
 
119
135
  MeetingInfoUtil.getDestinationType = async (from) => {
120
136
  const {type, webex} = from;
121
137
  let {destination} = from;
122
138
 
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
139
+ if (type === _PERSONAL_ROOM_) {
140
+ // this case checks if your type is personal room
141
+ if (!destination) {
142
+ // if we are not getting anything in desination we fetch org and user ids from webex instance
125
143
  destination = {
126
144
  userId: webex.internal.device.userId,
127
- orgId: webex.internal.device.orgId
145
+ orgId: webex.internal.device.orgId,
128
146
  };
129
- }
130
- else {
131
- const options = VALID_EMAIL_ADDRESS.test(destination) ? {email: destination} : {id: destination};// we are assuming userId as default
147
+ } else {
148
+ const options = VALID_EMAIL_ADDRESS.test(destination)
149
+ ? {email: destination}
150
+ : {id: destination}; // we are assuming userId as default
132
151
  const res = await webex.people.list(options);
133
152
 
134
153
  let {orgId, id: userId} = res.items[0];
@@ -141,64 +160,58 @@ MeetingInfoUtil.getDestinationType = async (from) => {
141
160
  if (type) {
142
161
  return {
143
162
  destination,
144
- type
163
+ type,
145
164
  };
146
165
  }
147
- const options = {};
148
- const hydraId = MeetingInfoUtil.getHydraId(destination);
166
+ const options: any = {};
167
+ let hydraId;
168
+
169
+ if (webex && webex.config && webex.config.meetings && webex.config.meetings.disableHydraId) {
170
+ hydraId = null;
171
+ } else {
172
+ hydraId = MeetingInfoUtil.getHydraId(destination);
173
+ }
149
174
 
150
175
  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');
176
+ LoggerProxy.logger.warn(
177
+ 'Meeting-info:util#generateOptions --> WARN, use of Meeting Link is deprecated, please use a SIP URI instead'
178
+ );
152
179
 
153
180
  options.type = _MEETING_LINK_;
154
181
  options.destination = destination;
155
- }
156
- else if (MeetingInfoUtil.isSipUri(destination)) {
182
+ } else if (MeetingInfoUtil.isSipUri(destination)) {
157
183
  options.type = _SIP_URI_;
158
184
  options.destination = destination;
159
- }
160
- else if (MeetingInfoUtil.isPhoneNumber(destination)) {
185
+ } else if (MeetingInfoUtil.isPhoneNumber(destination)) {
161
186
  options.type = _SIP_URI_;
162
187
  options.destination = destination;
163
- }
164
- else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
188
+ } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
165
189
  options.type = _CONVERSATION_URL_;
166
190
  options.destination = destination;
167
- }
168
- else if (hydraId.people) {
191
+ } else if (hydraId && hydraId.people) {
169
192
  options.type = _SIP_URI_;
170
193
 
171
- return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
172
- options.destination = res;
194
+ return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId && hydraId.destination, webex).then(
195
+ (res) => {
196
+ options.destination = res;
173
197
 
174
- // Since hydra person ids require a unique case in which they are
175
- // entirely converted to a SIP URI, we need to set a flag for detecting
176
- // this type of destination.
177
- options.wasHydraPerson = true;
198
+ // Since hydra person ids require a unique case in which they are
199
+ // entirely converted to a SIP URI, we need to set a flag for detecting
200
+ // this type of destination.
201
+ options.wasHydraPerson = true;
178
202
 
179
- return Promise.resolve(options);
180
- });
181
- }
182
- else if (hydraId.room) {
183
- options.type = _CONVERSATION_URL_;
184
- try {
185
- await webex.internal.services.waitForCatalog('postauth');
186
-
187
- const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
188
- cluster: hydraId.cluster,
189
- id: hydraId.destination
190
- });
191
-
192
- options.destination = conversationUrl;
193
- }
194
- catch (e) {
195
- LoggerProxy.logger.error(`Meeting-info:util#getDestinationType --> ${e}`);
196
- throw (e);
197
- }
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.');
203
+ return Promise.resolve(options);
204
+ }
205
+ );
206
+ } else if (hydraId.room) {
207
+ LoggerProxy.logger.error(
208
+ `Meeting-info:util#getDestinationType --> Using the space ID as a destination is no longer supported. Please refer to the [migration guide](https://github.com/webex/webex-js-sdk/wiki/Migration-to-Unified-Space-Meetings) to migrate to use the meeting ID or SIP address.`
209
+ );
210
+ // Error code 30105 added as Space ID deprecated as of beta, Please refer migration guide.
211
+ throw new SpaceIDDeprecatedError();
212
+ } else {
213
+ LoggerProxy.logger.warn(`Meeting-info:util#getDestinationType --> ${meetingInfoError}`);
214
+ throw new ParameterError(`${meetingInfoError}`);
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
 
@@ -0,0 +1,76 @@
1
+ import {find} from 'lodash';
2
+
3
+ import Collection from '../common/collection';
4
+
5
+ /**
6
+ * @export
7
+ * @class MeetingCollection
8
+ */
9
+ export default class MeetingCollection extends Collection {
10
+ /**
11
+ * @constructor
12
+ * @public
13
+ * @memberof MeetingCollection
14
+ */
15
+ constructor() {
16
+ super('meetings');
17
+ }
18
+
19
+ set(meeting) {
20
+ // @ts-ignore
21
+ this.meetings[meeting.id] = meeting;
22
+
23
+ // @ts-ignore
24
+ return this.meetings[meeting.id];
25
+ }
26
+
27
+ /**
28
+ * get a specific meeting searching for key
29
+ * @param {String} key
30
+ * @param {Any} value
31
+ * @returns {Meeting} if found, else returns null
32
+ * @public
33
+ * @memberof MeetingCollection
34
+ */
35
+ public getByKey(key: string, value: any) {
36
+ if (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
+ );
59
+ }
60
+
61
+ return null;
62
+ }
63
+
64
+ /**
65
+ * Gets the meeting that has a webrtc media connection
66
+ * NOTE: this function assumes there is no more than 1 such meeting
67
+ *
68
+ * @returns {Meeting} first meeting found, else undefined
69
+ * @public
70
+ * @memberof MeetingCollection
71
+ */
72
+ public getActiveWebrtcMeeting() {
73
+ // @ts-ignore
74
+ return find(this.meetings, (meeting) => meeting.mediaProperties.webrtcMediaConnection);
75
+ }
76
+ }