@webex/plugin-meetings 3.0.0-beta.13 → 3.0.0-beta.131

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