@webex/plugin-meetings 3.0.0-stream-classes.5 → 3.0.0

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 (465) hide show
  1. package/.eslintrc.js +6 -0
  2. package/README.md +12 -0
  3. package/babel.config.js +3 -0
  4. package/dist/annotation/constants.js +12 -20
  5. package/dist/annotation/constants.js.map +1 -1
  6. package/dist/annotation/index.js +25 -10
  7. package/dist/annotation/index.js.map +1 -1
  8. package/dist/breakouts/breakout.js +2 -3
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/collection.js +1 -2
  11. package/dist/breakouts/collection.js.map +1 -1
  12. package/dist/breakouts/edit-lock-error.js +1 -2
  13. package/dist/breakouts/edit-lock-error.js.map +1 -1
  14. package/dist/breakouts/events.js +1 -2
  15. package/dist/breakouts/events.js.map +1 -1
  16. package/dist/breakouts/index.js +13 -14
  17. package/dist/breakouts/index.js.map +1 -1
  18. package/dist/breakouts/request.js +1 -2
  19. package/dist/breakouts/request.js.map +1 -1
  20. package/dist/breakouts/utils.js +3 -6
  21. package/dist/breakouts/utils.js.map +1 -1
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  37. package/dist/common/errors/no-meeting-info.js +50 -0
  38. package/dist/common/errors/no-meeting-info.js.map +1 -0
  39. package/dist/common/errors/parameter.js +3 -4
  40. package/dist/common/errors/parameter.js.map +1 -1
  41. package/dist/common/errors/password-error.js +1 -2
  42. package/dist/common/errors/password-error.js.map +1 -1
  43. package/dist/common/errors/permission.js +1 -2
  44. package/dist/common/errors/permission.js.map +1 -1
  45. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  46. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +1 -2
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +1 -2
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +1 -2
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
  55. package/dist/common/errors/webex-errors.js +35 -16
  56. package/dist/common/errors/webex-errors.js.map +1 -1
  57. package/dist/common/errors/webex-meetings-error.js +1 -2
  58. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  59. package/dist/common/events/events-scope.js +1 -2
  60. package/dist/common/events/events-scope.js.map +1 -1
  61. package/dist/common/events/events.js +1 -2
  62. package/dist/common/events/events.js.map +1 -1
  63. package/dist/common/events/trigger-proxy.js +1 -2
  64. package/dist/common/events/trigger-proxy.js.map +1 -1
  65. package/dist/common/events/util.js +1 -2
  66. package/dist/common/events/util.js.map +1 -1
  67. package/dist/common/logs/logger-config.js +1 -2
  68. package/dist/common/logs/logger-config.js.map +1 -1
  69. package/dist/common/logs/logger-proxy.js +1 -2
  70. package/dist/common/logs/logger-proxy.js.map +1 -1
  71. package/dist/{types/common → common}/logs/request.d.ts +3 -1
  72. package/dist/common/logs/request.js +8 -5
  73. package/dist/common/logs/request.js.map +1 -1
  74. package/dist/common/queue.js +2 -4
  75. package/dist/common/queue.js.map +1 -1
  76. package/dist/{types/config.d.ts → config.d.ts} +1 -1
  77. package/dist/config.js +3 -3
  78. package/dist/config.js.map +1 -1
  79. package/dist/{types/constants.d.ts → constants.d.ts} +71 -15
  80. package/dist/constants.js +252 -371
  81. package/dist/constants.js.map +1 -1
  82. package/dist/controls-options-manager/constants.js +3 -6
  83. package/dist/controls-options-manager/constants.js.map +1 -1
  84. package/dist/controls-options-manager/enums.js +7 -10
  85. package/dist/controls-options-manager/enums.js.map +1 -1
  86. package/dist/controls-options-manager/index.js +27 -32
  87. package/dist/controls-options-manager/index.js.map +1 -1
  88. package/dist/controls-options-manager/util.js +1 -2
  89. package/dist/controls-options-manager/util.js.map +1 -1
  90. package/dist/index.js +8 -5
  91. package/dist/index.js.map +1 -1
  92. package/dist/interceptors/index.d.ts +2 -0
  93. package/dist/interceptors/index.js +15 -0
  94. package/dist/interceptors/index.js.map +1 -0
  95. package/dist/interceptors/locusRetry.d.ts +27 -0
  96. package/dist/interceptors/locusRetry.js +94 -0
  97. package/dist/interceptors/locusRetry.js.map +1 -0
  98. package/dist/interpretation/collection.js +1 -2
  99. package/dist/interpretation/collection.js.map +1 -1
  100. package/dist/interpretation/index.js +2 -3
  101. package/dist/interpretation/index.js.map +1 -1
  102. package/dist/interpretation/siLanguage.js +2 -3
  103. package/dist/interpretation/siLanguage.js.map +1 -1
  104. package/dist/locus-info/controlsUtils.js +12 -13
  105. package/dist/locus-info/controlsUtils.js.map +1 -1
  106. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  107. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  108. package/dist/locus-info/fullState.js +1 -2
  109. package/dist/locus-info/fullState.js.map +1 -1
  110. package/dist/locus-info/hostUtils.js +1 -2
  111. package/dist/locus-info/hostUtils.js.map +1 -1
  112. package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
  113. package/dist/locus-info/index.js +38 -37
  114. package/dist/locus-info/index.js.map +1 -1
  115. package/dist/locus-info/infoUtils.js +3 -4
  116. package/dist/locus-info/infoUtils.js.map +1 -1
  117. package/dist/locus-info/mediaSharesUtils.js +16 -3
  118. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  119. package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
  120. package/dist/locus-info/parser.js +43 -31
  121. package/dist/locus-info/parser.js.map +1 -1
  122. package/dist/locus-info/selfUtils.js +7 -6
  123. package/dist/locus-info/selfUtils.js.map +1 -1
  124. package/dist/media/index.js +15 -10
  125. package/dist/media/index.js.map +1 -1
  126. package/dist/media/properties.js +16 -7
  127. package/dist/media/properties.js.map +1 -1
  128. package/dist/media/util.js +1 -2
  129. package/dist/media/util.js.map +1 -1
  130. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  131. package/dist/mediaQualityMetrics/config.js +135 -339
  132. package/dist/mediaQualityMetrics/config.js.map +1 -1
  133. package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
  134. package/dist/meeting/in-meeting-actions.js +18 -2
  135. package/dist/meeting/in-meeting-actions.js.map +1 -1
  136. package/dist/{types/meeting → meeting}/index.d.ts +318 -45
  137. package/dist/meeting/index.js +2620 -1405
  138. package/dist/meeting/index.js.map +1 -1
  139. package/dist/meeting/locusMediaRequest.js +4 -5
  140. package/dist/meeting/locusMediaRequest.js.map +1 -1
  141. package/dist/meeting/muteState.js +2 -4
  142. package/dist/meeting/muteState.js.map +1 -1
  143. package/dist/{types/meeting → meeting}/request.d.ts +2 -0
  144. package/dist/meeting/request.js +46 -31
  145. package/dist/meeting/request.js.map +1 -1
  146. package/dist/meeting/state.js +1 -2
  147. package/dist/meeting/state.js.map +1 -1
  148. package/dist/{types/meeting → meeting}/util.d.ts +17 -0
  149. package/dist/meeting/util.js +83 -10
  150. package/dist/meeting/util.js.map +1 -1
  151. package/dist/meeting/voicea-meeting.d.ts +16 -0
  152. package/dist/meeting/voicea-meeting.js +169 -0
  153. package/dist/meeting/voicea-meeting.js.map +1 -0
  154. package/dist/meeting-info/collection.js +3 -4
  155. package/dist/meeting-info/collection.js.map +1 -1
  156. package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
  157. package/dist/meeting-info/index.js +53 -27
  158. package/dist/meeting-info/index.js.map +1 -1
  159. package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
  160. package/dist/meeting-info/meeting-info-v2.js +52 -33
  161. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  162. package/dist/meeting-info/request.js +1 -2
  163. package/dist/meeting-info/request.js.map +1 -1
  164. package/dist/meeting-info/util.js +8 -8
  165. package/dist/meeting-info/util.js.map +1 -1
  166. package/dist/meeting-info/utilv2.js +12 -9
  167. package/dist/meeting-info/utilv2.js.map +1 -1
  168. package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
  169. package/dist/meetings/collection.js +21 -5
  170. package/dist/meetings/collection.js.map +1 -1
  171. package/dist/{types/meetings → meetings}/index.d.ts +45 -16
  172. package/dist/meetings/index.js +166 -74
  173. package/dist/meetings/index.js.map +1 -1
  174. package/dist/meetings/request.js +2 -3
  175. package/dist/meetings/request.js.map +1 -1
  176. package/dist/meetings/util.js +3 -10
  177. package/dist/meetings/util.js.map +1 -1
  178. package/dist/{types/member → member}/index.d.ts +1 -0
  179. package/dist/member/index.js +10 -3
  180. package/dist/member/index.js.map +1 -1
  181. package/dist/member/member.types.d.ts +11 -0
  182. package/dist/member/member.types.js +17 -0
  183. package/dist/member/member.types.js.map +1 -0
  184. package/dist/member/types.js +6 -8
  185. package/dist/member/types.js.map +1 -1
  186. package/dist/member/util.js +12 -2
  187. package/dist/member/util.js.map +1 -1
  188. package/dist/members/collection.js +1 -2
  189. package/dist/members/collection.js.map +1 -1
  190. package/dist/members/index.js +25 -8
  191. package/dist/members/index.js.map +1 -1
  192. package/dist/members/request.js +2 -3
  193. package/dist/members/request.js.map +1 -1
  194. package/dist/{types/members → members}/types.d.ts +1 -0
  195. package/dist/members/types.js +3 -4
  196. package/dist/members/types.js.map +1 -1
  197. package/dist/{types/members → members}/util.d.ts +6 -1
  198. package/dist/members/util.js +18 -8
  199. package/dist/members/util.js.map +1 -1
  200. package/dist/{types/metrics → metrics}/constants.d.ts +12 -0
  201. package/dist/metrics/constants.js +14 -3
  202. package/dist/metrics/constants.js.map +1 -1
  203. package/dist/metrics/index.js +3 -2
  204. package/dist/metrics/index.js.map +1 -1
  205. package/dist/multistream/mediaRequestManager.js +9 -11
  206. package/dist/multistream/mediaRequestManager.js.map +1 -1
  207. package/dist/multistream/receiveSlot.js +3 -5
  208. package/dist/multistream/receiveSlot.js.map +1 -1
  209. package/dist/multistream/receiveSlotManager.js +7 -9
  210. package/dist/multistream/receiveSlotManager.js.map +1 -1
  211. package/dist/multistream/remoteMedia.js +3 -5
  212. package/dist/multistream/remoteMedia.js.map +1 -1
  213. package/dist/multistream/remoteMediaGroup.js +7 -6
  214. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  215. package/dist/multistream/remoteMediaManager.js +28 -27
  216. package/dist/multistream/remoteMediaManager.js.map +1 -1
  217. package/dist/multistream/sendSlotManager.js +9 -6
  218. package/dist/multistream/sendSlotManager.js.map +1 -1
  219. package/dist/networkQualityMonitor/index.js +1 -2
  220. package/dist/networkQualityMonitor/index.js.map +1 -1
  221. package/dist/personal-meeting-room/index.js +2 -3
  222. package/dist/personal-meeting-room/index.js.map +1 -1
  223. package/dist/personal-meeting-room/request.js +2 -3
  224. package/dist/personal-meeting-room/request.js.map +1 -1
  225. package/dist/personal-meeting-room/util.js +1 -2
  226. package/dist/personal-meeting-room/util.js.map +1 -1
  227. package/dist/reachability/clusterReachability.d.ts +109 -0
  228. package/dist/reachability/clusterReachability.js +357 -0
  229. package/dist/reachability/clusterReachability.js.map +1 -0
  230. package/dist/reachability/index.d.ts +105 -0
  231. package/dist/reachability/index.js +279 -436
  232. package/dist/reachability/index.js.map +1 -1
  233. package/dist/reachability/request.js +14 -11
  234. package/dist/reachability/request.js.map +1 -1
  235. package/dist/reachability/util.d.ts +8 -0
  236. package/dist/reachability/util.js +29 -0
  237. package/dist/reachability/util.js.map +1 -0
  238. package/dist/reactions/constants.js +1 -2
  239. package/dist/reactions/constants.js.map +1 -1
  240. package/dist/reactions/reactions.js +2 -4
  241. package/dist/reactions/reactions.js.map +1 -1
  242. package/dist/reactions/reactions.type.js +6 -8
  243. package/dist/reactions/reactions.type.js.map +1 -1
  244. package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
  245. package/dist/reconnection-manager/index.js +129 -106
  246. package/dist/reconnection-manager/index.js.map +1 -1
  247. package/dist/recording-controller/enums.js +4 -5
  248. package/dist/recording-controller/enums.js.map +1 -1
  249. package/dist/recording-controller/index.js +43 -51
  250. package/dist/recording-controller/index.js.map +1 -1
  251. package/dist/recording-controller/util.js +1 -2
  252. package/dist/recording-controller/util.js.map +1 -1
  253. package/dist/{types/roap → roap}/index.d.ts +2 -1
  254. package/dist/roap/index.js +59 -28
  255. package/dist/roap/index.js.map +1 -1
  256. package/dist/roap/request.js +14 -22
  257. package/dist/roap/request.js.map +1 -1
  258. package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
  259. package/dist/roap/turnDiscovery.js +182 -89
  260. package/dist/roap/turnDiscovery.js.map +1 -1
  261. package/dist/rtcMetrics/constants.js +1 -2
  262. package/dist/rtcMetrics/constants.js.map +1 -1
  263. package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
  264. package/dist/rtcMetrics/index.js +72 -12
  265. package/dist/rtcMetrics/index.js.map +1 -1
  266. package/dist/statsAnalyzer/global.js +1 -2
  267. package/dist/statsAnalyzer/global.js.map +1 -1
  268. package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
  269. package/dist/statsAnalyzer/index.js +371 -318
  270. package/dist/statsAnalyzer/index.js.map +1 -1
  271. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  272. package/dist/statsAnalyzer/mqaUtil.js +295 -162
  273. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  274. package/dist/transcription/index.js +1 -2
  275. package/dist/transcription/index.js.map +1 -1
  276. package/dist/webinar/collection.d.ts +16 -0
  277. package/dist/webinar/collection.js +43 -0
  278. package/dist/webinar/collection.js.map +1 -0
  279. package/dist/webinar/index.d.ts +5 -0
  280. package/dist/webinar/index.js +68 -0
  281. package/dist/webinar/index.js.map +1 -0
  282. package/jest.config.js +3 -0
  283. package/package.json +44 -24
  284. package/process +1 -0
  285. package/src/common/errors/no-meeting-info.ts +24 -0
  286. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  287. package/src/common/errors/webex-errors.ts +19 -2
  288. package/src/common/logs/request.ts +5 -1
  289. package/src/config.ts +3 -5
  290. package/src/constants.ts +77 -8
  291. package/src/index.ts +4 -0
  292. package/src/interceptors/index.ts +3 -0
  293. package/src/interceptors/locusRetry.ts +67 -0
  294. package/src/locus-info/index.ts +19 -14
  295. package/src/locus-info/mediaSharesUtils.ts +16 -0
  296. package/src/locus-info/parser.ts +40 -21
  297. package/src/media/index.ts +8 -6
  298. package/src/media/properties.ts +17 -2
  299. package/src/mediaQualityMetrics/config.ts +103 -238
  300. package/src/meeting/in-meeting-actions.ts +8 -0
  301. package/src/meeting/index.ts +1664 -642
  302. package/src/meeting/request.ts +18 -0
  303. package/src/meeting/util.ts +102 -1
  304. package/src/meeting/voicea-meeting.ts +122 -0
  305. package/src/meeting-info/index.ts +47 -20
  306. package/src/meeting-info/meeting-info-v2.ts +32 -16
  307. package/src/meeting-info/util.ts +12 -9
  308. package/src/meeting-info/utilv2.ts +25 -15
  309. package/src/meetings/collection.ts +13 -0
  310. package/src/meetings/index.ts +112 -31
  311. package/src/meetings/util.ts +2 -8
  312. package/src/member/index.ts +9 -1
  313. package/src/member/member.types.ts +13 -0
  314. package/src/member/util.ts +14 -0
  315. package/src/members/index.ts +29 -2
  316. package/src/members/types.ts +1 -0
  317. package/src/members/util.ts +15 -1
  318. package/src/metrics/constants.ts +12 -0
  319. package/src/reachability/clusterReachability.ts +320 -0
  320. package/src/reachability/index.ts +221 -382
  321. package/src/reachability/request.ts +1 -1
  322. package/src/reachability/util.ts +24 -0
  323. package/src/reconnection-manager/index.ts +87 -83
  324. package/src/roap/index.ts +60 -24
  325. package/src/roap/request.ts +4 -17
  326. package/src/roap/turnDiscovery.ts +112 -39
  327. package/src/rtcMetrics/index.ts +71 -5
  328. package/src/statsAnalyzer/index.ts +430 -427
  329. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  330. package/src/webinar/collection.ts +31 -0
  331. package/src/webinar/index.ts +62 -0
  332. package/test/integration/spec/journey.js +12 -12
  333. package/test/integration/spec/space-meeting.js +1 -1
  334. package/test/unit/spec/breakouts/breakout.ts +2 -1
  335. package/test/unit/spec/breakouts/index.ts +7 -4
  336. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  337. package/test/unit/spec/locus-info/index.js +88 -12
  338. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  339. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  340. package/test/unit/spec/locus-info/parser.js +54 -13
  341. package/test/unit/spec/locus-info/selfUtils.js +1 -1
  342. package/test/unit/spec/media/index.ts +25 -4
  343. package/test/unit/spec/media/properties.ts +2 -2
  344. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  345. package/test/unit/spec/meeting/index.js +4388 -1382
  346. package/test/unit/spec/meeting/request.js +63 -12
  347. package/test/unit/spec/meeting/utils.js +145 -10
  348. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  349. package/test/unit/spec/meeting-info/index.js +180 -61
  350. package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
  351. package/test/unit/spec/meetings/collection.js +12 -0
  352. package/test/unit/spec/meetings/index.js +674 -193
  353. package/test/unit/spec/meetings/utils.js +35 -12
  354. package/test/unit/spec/member/index.js +8 -7
  355. package/test/unit/spec/member/util.js +32 -0
  356. package/test/unit/spec/members/index.js +130 -17
  357. package/test/unit/spec/members/utils.js +26 -0
  358. package/test/unit/spec/metrics/index.js +1 -2
  359. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  360. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  361. package/test/unit/spec/reachability/index.ts +505 -135
  362. package/test/unit/spec/reachability/util.ts +40 -0
  363. package/test/unit/spec/reconnection-manager/index.js +74 -17
  364. package/test/unit/spec/recording-controller/index.js +0 -1
  365. package/test/unit/spec/roap/index.ts +181 -61
  366. package/test/unit/spec/roap/request.ts +27 -3
  367. package/test/unit/spec/roap/turnDiscovery.ts +363 -102
  368. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  369. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  370. package/test/unit/spec/webinar/collection.ts +13 -0
  371. package/test/unit/spec/webinar/index.ts +60 -0
  372. package/test/utils/webex-test-users.js +12 -4
  373. package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
  374. package/dist/types/reachability/index.d.ts +0 -152
  375. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
  376. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  377. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  378. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  379. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  380. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  381. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  382. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  383. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  384. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  385. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  386. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  387. /package/dist/{types/common → common}/collection.d.ts +0 -0
  388. /package/dist/{types/common → common}/config.d.ts +0 -0
  389. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  390. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  391. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  392. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  393. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  394. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  395. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  396. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  397. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  398. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  399. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  400. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  401. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  402. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  403. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  404. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  405. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  406. /package/dist/{types/common → common}/queue.d.ts +0 -0
  407. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  408. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  409. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  410. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  411. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  412. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  413. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  414. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  415. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  416. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  417. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  418. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  419. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  420. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  421. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  422. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  423. /package/dist/{types/media → media}/index.d.ts +0 -0
  424. /package/dist/{types/media → media}/properties.d.ts +0 -0
  425. /package/dist/{types/media → media}/util.d.ts +0 -0
  426. /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
  427. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  428. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  429. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  430. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  431. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  432. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  433. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  434. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  435. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  436. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  437. /package/dist/{types/member → member}/types.d.ts +0 -0
  438. /package/dist/{types/member → member}/util.d.ts +0 -0
  439. /package/dist/{types/members → members}/collection.d.ts +0 -0
  440. /package/dist/{types/members → members}/index.d.ts +0 -0
  441. /package/dist/{types/members → members}/request.d.ts +0 -0
  442. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  443. /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
  444. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  445. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  446. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  447. /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
  448. /package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +0 -0
  449. /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
  450. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  451. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  452. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  453. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  454. /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
  455. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  456. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  457. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  458. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  459. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  460. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  461. /package/dist/{types/roap → roap}/request.d.ts +0 -0
  462. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  463. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  464. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  465. /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
@@ -4,6 +4,7 @@ import {debounce} from 'lodash';
4
4
  import {StatelessWebexPlugin} from '@webex/webex-core';
5
5
  // @ts-ignore
6
6
  import {deviceType} from '@webex/common';
7
+ import {CallDiagnosticUtils} from '@webex/internal-plugin-metrics';
7
8
 
8
9
  import LoggerProxy from '../common/logs/logger-proxy';
9
10
  import {
@@ -184,6 +185,13 @@ export default class MeetingRequest extends StatelessWebexPlugin {
184
185
  deviceCapabilities.push(ANNOTATION.ANNOTATION_ON_SHARE_SUPPORTED);
185
186
  }
186
187
 
188
+ // append installationId to device config if it exists
189
+ // @ts-ignore
190
+ if (this.webex.internal.device.config.installationId) {
191
+ // @ts-ignore
192
+ body.device.installationId = this.webex.internal.device.config.installationId;
193
+ }
194
+
187
195
  if (locale) {
188
196
  body.locale = locale;
189
197
  }
@@ -198,6 +206,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
198
206
  body.device.countryCode = this.webex.meetings.geoHintInfo.countryCode;
199
207
  // @ts-ignore
200
208
  body.device.regionCode = this.webex.meetings.geoHintInfo.regionCode;
209
+ body.device.localIp =
210
+ // @ts-ignore
211
+ CallDiagnosticUtils.anonymizeIPAddress(this.webex.meetings.geoHintInfo.clientAddress) ||
212
+ undefined;
201
213
  }
202
214
 
203
215
  if (moderator !== undefined) {
@@ -641,6 +653,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
641
653
  * @param {String} options.deviceUrl Url of a device
642
654
  * @param {String} options.resourceId Populated if you are paired to a device
643
655
  * @param {String} options.uri floor grant uri
656
+ * @param {String} options.shareInstanceId id for current share
644
657
  * @returns {Promise}
645
658
  */
646
659
  changeMeetingFloor(
@@ -652,6 +665,7 @@ export default class MeetingRequest extends StatelessWebexPlugin {
652
665
  resourceId: string;
653
666
  uri: string;
654
667
  annotationInfo: AnnotationInfo;
668
+ shareInstanceId: string;
655
669
  }
656
670
  | any
657
671
  ) {
@@ -682,6 +696,10 @@ export default class MeetingRequest extends StatelessWebexPlugin {
682
696
  resourceUrl: options.resourceUrl,
683
697
  };
684
698
 
699
+ if (options?.shareInstanceId) {
700
+ body.floor.shareInstanceId = options.shareInstanceId;
701
+ }
702
+
685
703
  if (options?.resourceToken) {
686
704
  body.resourceToken = options?.resourceToken;
687
705
  }
@@ -13,6 +13,7 @@ import {
13
13
  FULL_STATE,
14
14
  SELF_POLICY,
15
15
  EVENT_TRIGGERS,
16
+ LOCAL_SHARE_ERRORS,
16
17
  IP_VERSION,
17
18
  } from '../constants';
18
19
  import BrowserDetection from '../common/browser-detection';
@@ -201,7 +202,11 @@ const MeetingUtil = {
201
202
  meeting.reconnectionManager.cleanUp();
202
203
  })
203
204
  .then(() => meeting.stopKeepAlive())
204
- .then(() => meeting.updateLLMConnection());
205
+ .then(() => {
206
+ if (meeting.config?.enableAutomaticLLM) {
207
+ meeting.updateLLMConnection();
208
+ }
209
+ });
205
210
  },
206
211
 
207
212
  disconnectPhoneAudio: (meeting, phoneUrl) => {
@@ -692,6 +697,102 @@ const MeetingUtil = {
692
697
  EVENT_TRIGGERS.MEETING_INTERPRETATION_UPDATE
693
698
  );
694
699
  },
700
+
701
+ /**
702
+ * Returns a CA-recognized error payload for the specified raw error message/reason.
703
+ *
704
+ * New errors can be added to this function for handling in the future
705
+ *
706
+ * @param {String} reason the raw error message
707
+ * @returns {Array<object>} an array of payload objects
708
+ */
709
+ getChangeMeetingFloorErrorPayload: (reason: string) => {
710
+ const errorPayload = {
711
+ errorDescription: reason,
712
+ name: 'locus.response',
713
+ shownToUser: false,
714
+ };
715
+ if (reason.includes(LOCAL_SHARE_ERRORS.UNDEFINED)) {
716
+ return [
717
+ {
718
+ ...errorPayload,
719
+ fatal: true,
720
+ category: 'signaling',
721
+ errorCode: 1100,
722
+ },
723
+ ];
724
+ }
725
+ if (reason.includes(LOCAL_SHARE_ERRORS.DEVICE_NOT_JOINED)) {
726
+ return [
727
+ {
728
+ ...errorPayload,
729
+ fatal: true,
730
+ category: 'signaling',
731
+ errorCode: 4050,
732
+ },
733
+ ];
734
+ }
735
+ if (reason.includes(LOCAL_SHARE_ERRORS.NO_MEDIA_FOR_DEVICE)) {
736
+ return [
737
+ {
738
+ ...errorPayload,
739
+ fatal: true,
740
+ category: 'media',
741
+ errorCode: 2048,
742
+ },
743
+ ];
744
+ }
745
+ if (reason.includes(LOCAL_SHARE_ERRORS.NO_CONFLUENCE_ID)) {
746
+ return [
747
+ {
748
+ ...errorPayload,
749
+ fatal: true,
750
+ category: 'signaling',
751
+ errorCode: 4064,
752
+ },
753
+ ];
754
+ }
755
+ if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_SHARING_DISABLED)) {
756
+ return [
757
+ {
758
+ ...errorPayload,
759
+ fatal: true,
760
+ category: 'expected',
761
+ errorCode: 4065,
762
+ },
763
+ ];
764
+ }
765
+ if (reason.includes(LOCAL_SHARE_ERRORS.LOCUS_PARTICIPANT_DNE)) {
766
+ return [
767
+ {
768
+ ...errorPayload,
769
+ fatal: true,
770
+ category: 'signaling',
771
+ errorCode: 4066,
772
+ },
773
+ ];
774
+ }
775
+ if (reason.includes(LOCAL_SHARE_ERRORS.CONTENT_REQUEST_WHILE_PENDING_WHITEBOARD)) {
776
+ return [
777
+ {
778
+ ...errorPayload,
779
+ fatal: true,
780
+ category: 'expected',
781
+ errorCode: 4067,
782
+ },
783
+ ];
784
+ }
785
+
786
+ // return unknown error
787
+ return [
788
+ {
789
+ ...errorPayload,
790
+ fatal: true,
791
+ category: 'signaling',
792
+ errorCode: 1100,
793
+ },
794
+ ];
795
+ },
695
796
  };
696
797
 
697
798
  export default MeetingUtil;
@@ -0,0 +1,122 @@
1
+ export const getSpeaker = (members, csis = []) =>
2
+ Object.values(members).find((member: any) => {
3
+ const memberCSIs = member.participant.status.csis ?? [];
4
+
5
+ return csis.some((csi) => memberCSIs.includes(csi));
6
+ });
7
+
8
+ export const getSpeakerFromProxyOrStore = ({csisKey, meetingMembers, transcriptData}) => {
9
+ let speaker = {
10
+ speakerId: '',
11
+ name: '',
12
+ };
13
+
14
+ let needsCaching = false;
15
+
16
+ if (csisKey && transcriptData.speakerProxy[csisKey]) {
17
+ speaker = transcriptData.speakerProxy[csisKey];
18
+
19
+ return {speaker, needsCaching};
20
+ }
21
+
22
+ const meetingMember: any = getSpeaker(meetingMembers, [csisKey]);
23
+
24
+ speaker = {
25
+ speakerId: meetingMember?.participant.person.id ?? '',
26
+ name: meetingMember?.participant.person.name ?? '',
27
+ };
28
+
29
+ needsCaching = true;
30
+
31
+ return {speaker, needsCaching};
32
+ };
33
+
34
+ export const processNewCaptions = ({data, meeting}) => {
35
+ const {transcriptId} = data;
36
+ const transcriptData = meeting.transcription;
37
+
38
+ if (data.isFinal) {
39
+ transcriptData.interimCaptions[transcriptId].forEach((interimId) => {
40
+ const interimTranscriptIndex = transcriptData.captions.findIndex(
41
+ (transcript) => transcript.id === interimId
42
+ );
43
+
44
+ if (interimTranscriptIndex !== -1) {
45
+ transcriptData.captions.splice(interimTranscriptIndex, 1);
46
+ }
47
+ });
48
+ delete transcriptData.interimCaptions[transcriptId];
49
+ const csisKey = data.transcript?.csis[0];
50
+
51
+ const {needsCaching, speaker} = getSpeakerFromProxyOrStore({
52
+ meetingMembers: meeting.members.membersCollection.members,
53
+ transcriptData,
54
+ csisKey,
55
+ });
56
+
57
+ if (needsCaching) {
58
+ transcriptData.speakerProxy[csisKey] = speaker;
59
+ }
60
+ const captionData = {
61
+ id: transcriptId,
62
+ isFinal: data.isFinal,
63
+ translations: data.translations,
64
+ text: data.transcript?.text,
65
+ currentSpokenLanguage: data.transcript?.transcript_language_code,
66
+ timestamp: data.timestamp,
67
+ speaker,
68
+ };
69
+ transcriptData.captions.push(captionData);
70
+ }
71
+ const {transcripts = []} = data;
72
+ const transcriptsPerCsis = new Map();
73
+
74
+ for (const transcript of transcripts) {
75
+ const {
76
+ text,
77
+ transcript_language_code: currentSpokenLanguage,
78
+ csis: [csisMember],
79
+ } = transcript;
80
+
81
+ const newCaption = `${transcriptsPerCsis.get(csisMember)?.text ?? ''} ${text}`.trim();
82
+
83
+ // eslint-disable-next-line camelcase
84
+ transcriptsPerCsis.set(csisMember, {text: newCaption, currentSpokenLanguage});
85
+ }
86
+ const interimTranscriptionIds = [];
87
+
88
+ for (const [key, value] of transcriptsPerCsis) {
89
+ const {needsCaching, speaker} = getSpeakerFromProxyOrStore({
90
+ meetingMembers: meeting.members.membersCollection.members,
91
+ transcriptData,
92
+ csisKey: key,
93
+ });
94
+
95
+ if (needsCaching) {
96
+ transcriptData.speakerProxy[key] = speaker;
97
+ }
98
+ const {speakerId} = speaker;
99
+ const interimId = `${transcriptId}_${speakerId}`;
100
+ const captionData = {
101
+ id: interimId,
102
+ isFinal: data.isFinal,
103
+ translations: value.translations,
104
+ text: value.text,
105
+ currentCaptionLanguage: value.currentSpokenLanguage,
106
+ timestamp: value?.timestamp,
107
+ speaker,
108
+ };
109
+
110
+ const interimTranscriptIndex = transcriptData.captions.findIndex(
111
+ (transcript) => transcript.id === interimId
112
+ );
113
+
114
+ if (interimTranscriptIndex !== -1) {
115
+ transcriptData.captions.splice(interimTranscriptIndex, 1);
116
+ }
117
+
118
+ interimTranscriptionIds.push(interimId);
119
+ transcriptData.captions.push(captionData);
120
+ }
121
+ transcriptData.interimCaptions[transcriptId] = interimTranscriptionIds;
122
+ };
@@ -71,20 +71,39 @@ export default class MeetingInfo {
71
71
  * @memberof MeetingInfo
72
72
  */
73
73
  private requestFetchInfo(options: any) {
74
- const {meetingId} = options;
75
- if (meetingId) {
74
+ const {meetingId, sendCAevents} = options;
75
+ if (meetingId && sendCAevents) {
76
76
  this.webex.internal.newMetrics.submitInternalEvent({
77
77
  name: 'internal.client.meetinginfo.request',
78
78
  });
79
+ this.webex.internal.newMetrics.submitClientEvent({
80
+ name: 'client.meetinginfo.request',
81
+ options: {
82
+ meetingId,
83
+ },
84
+ });
79
85
  }
80
86
 
81
87
  return this.meetingInfoRequest
82
88
  .fetchMeetingInfo(options)
83
89
  .then((info) => {
84
- if (meetingId) {
90
+ if (meetingId && sendCAevents) {
85
91
  this.webex.internal.newMetrics.submitInternalEvent({
86
92
  name: 'internal.client.meetinginfo.response',
87
93
  });
94
+ this.webex.internal.newMetrics.submitClientEvent({
95
+ name: 'client.meetinginfo.response',
96
+ payload: {
97
+ identifiers: {
98
+ meetingLookupUrl: info?.url,
99
+ },
100
+ },
101
+ options: {
102
+ meetingId,
103
+ webexConferenceIdStr: info?.body?.confIdStr || info?.body?.confID,
104
+ globalMeetingId: info?.body?.meetingId,
105
+ },
106
+ });
88
107
  }
89
108
  if (info && info.body) {
90
109
  this.setMeetingInfo(info.body.sipMeetingUri || info.body.meetingLink, info.body);
@@ -96,21 +115,23 @@ export default class MeetingInfo {
96
115
  LoggerProxy.logger.error(
97
116
  `Meeting-info:index#requestFetchInfo --> ${error} fetch meetingInfo`
98
117
  );
99
- this.webex.internal.newMetrics.submitInternalEvent({
100
- name: 'internal.client.meetinginfo.response',
101
- });
102
- this.webex.internal.newMetrics.submitClientEvent({
103
- name: 'client.meetinginfo.response',
104
- payload: {
105
- identifiers: {
106
- meetingLookupUrl: error?.url,
118
+ if (meetingId && sendCAevents) {
119
+ this.webex.internal.newMetrics.submitInternalEvent({
120
+ name: 'internal.client.meetinginfo.response',
121
+ });
122
+ this.webex.internal.newMetrics.submitClientEvent({
123
+ name: 'client.meetinginfo.response',
124
+ payload: {
125
+ identifiers: {
126
+ meetingLookupUrl: error?.url,
127
+ },
128
+ },
129
+ options: {
130
+ meetingId,
131
+ rawError: error,
107
132
  },
108
- },
109
- options: {
110
- meetingId,
111
- rawError: error,
112
- },
113
- });
133
+ });
134
+ }
114
135
 
115
136
  return Promise.reject(error);
116
137
  });
@@ -137,6 +158,12 @@ export default class MeetingInfo {
137
158
  * Fetches meeting info from the server
138
159
  * @param {String} destination one of many different types of destinations to look up info for
139
160
  * @param {String} [type] to match up with the destination value
161
+ * @param {String} [password] meeting password
162
+ * @param {Object} [captchaInfo] captcha code and id
163
+ * @param {String} [installedOrgID]
164
+ * @param {String} [locusId]
165
+ * @param {Object} [extraParams]
166
+ * @param {Boolean} [options] meeting Id and whether Call Analyzer events should be sent
140
167
  * @returns {Promise} returns a meeting info object
141
168
  * @public
142
169
  * @memberof MeetingInfo
@@ -157,7 +184,7 @@ export default class MeetingInfo {
157
184
  locusId = null,
158
185
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
159
186
  extraParams: object = {},
160
- options: {meetingId?: string} = {}
187
+ options: {meetingId?: string; sendCAevents?: boolean} = {}
161
188
  ) {
162
189
  if (type === _PERSONAL_ROOM_ && !destination) {
163
190
  destination = this.webex.internal.device.userId;
@@ -166,13 +193,13 @@ export default class MeetingInfo {
166
193
  return this.fetchInfoOptions(MeetingInfoUtil.extractDestination(destination, type), type).then(
167
194
  (infoOptions) =>
168
195
  // fetch meeting info
169
- this.requestFetchInfo({...infoOptions, meetingId: options.meetingId}).catch((error) => {
196
+ this.requestFetchInfo({...infoOptions, ...options}).catch((error) => {
170
197
  // if it failed the first time as meeting link
171
198
  if (infoOptions.type === _MEETING_LINK_) {
172
199
  // convert the meeting link to sip URI and retry
173
200
  return this.requestFetchInfo({
174
201
  ...this.fetchInfoOptions(MeetingInfoUtil.convertLinkToSip(destination), _SIP_URI_),
175
- meetingId: options.meetingId,
202
+ ...options,
176
203
  });
177
204
  }
178
205
 
@@ -204,22 +204,16 @@ export default class MeetingInfoV2 {
204
204
  return invitees;
205
205
  };
206
206
 
207
- return this.webex.internal.conversation
208
- .get({url: conversationUrl}, {includeParticipants: true, disableTransform: true})
209
- .then((conversation) => {
210
- const body: {
211
- title: string;
212
- spaceUrl: string;
213
- keyUrl: string;
214
- kroUrl: string;
215
- invitees: any[];
216
- installedOrgID?: string;
217
- } = {
207
+ return this.webex
208
+ .request({uri: conversationUrl, qs: {includeParticipants: true}, disableTransform: true})
209
+ .then(({body: conversation}) => {
210
+ const body = {
218
211
  title: conversation.displayName,
219
212
  spaceUrl: conversation.url,
220
213
  keyUrl: conversation.encryptionKeyUrl,
221
214
  kroUrl: conversation.kmsResourceObjectUrl,
222
215
  invitees: getInvitees(conversation.participants?.items),
216
+ installedOrgID,
223
217
  };
224
218
 
225
219
  if (installedOrgID) {
@@ -279,9 +273,9 @@ export default class MeetingInfoV2 {
279
273
  installedOrgID = null,
280
274
  locusId = null,
281
275
  extraParams: object = {},
282
- options: {meetingId?: string} = {}
276
+ options: {meetingId?: string; sendCAevents?: boolean} = {}
283
277
  ) {
284
- const {meetingId} = options;
278
+ const {meetingId, sendCAevents} = options;
285
279
 
286
280
  const destinationType = await MeetingInfoUtil.getDestinationType({
287
281
  destination,
@@ -336,29 +330,51 @@ export default class MeetingInfoV2 {
336
330
  requestOptions.resource = 'meetingInfo';
337
331
  }
338
332
 
339
- if (meetingId) {
333
+ if (meetingId && sendCAevents) {
340
334
  this.webex.internal.newMetrics.submitInternalEvent({
341
335
  name: 'internal.client.meetinginfo.request',
342
336
  });
337
+
338
+ this.webex.internal.newMetrics.submitClientEvent({
339
+ name: 'client.meetinginfo.request',
340
+ options: {
341
+ meetingId,
342
+ },
343
+ });
343
344
  }
344
345
 
345
346
  return this.webex
346
347
  .request(requestOptions)
347
348
  .then((response) => {
348
- if (meetingId) {
349
+ if (meetingId && sendCAevents) {
349
350
  this.webex.internal.newMetrics.submitInternalEvent({
350
351
  name: 'internal.client.meetinginfo.response',
351
352
  });
353
+
354
+ this.webex.internal.newMetrics.submitClientEvent({
355
+ name: 'client.meetinginfo.response',
356
+ payload: {
357
+ identifiers: {
358
+ meetingLookupUrl: response?.url,
359
+ },
360
+ },
361
+ options: {
362
+ meetingId,
363
+ webexConferenceIdStr: response?.body?.confIdStr || response?.body?.confID,
364
+ globalMeetingId: response?.body?.meetingId,
365
+ },
366
+ });
352
367
  }
353
368
  Metrics.sendBehavioralMetric(BEHAVIORAL_METRICS.FETCH_MEETING_INFO_V1_SUCCESS);
354
369
 
355
370
  return response;
356
371
  })
357
372
  .catch((err) => {
358
- if (meetingId) {
373
+ if (meetingId && sendCAevents) {
359
374
  this.webex.internal.newMetrics.submitInternalEvent({
360
375
  name: 'internal.client.meetinginfo.response',
361
376
  });
377
+
362
378
  this.webex.internal.newMetrics.submitClientEvent({
363
379
  name: 'client.meetinginfo.response',
364
380
  payload: {
@@ -1,13 +1,12 @@
1
1
  import url from 'url';
2
2
 
3
3
  import btoa from 'btoa';
4
- import {
5
- // @ts-ignore
6
- deconstructHydraId,
7
- } from '@webex/common';
4
+ // @ts-ignore
5
+ import {deconstructHydraId} from '@webex/common';
8
6
 
9
7
  import ParameterError from '../common/errors/parameter';
10
8
  import LoggerProxy from '../common/logs/logger-proxy';
9
+
11
10
  import {
12
11
  _SIP_URI_,
13
12
  _PERSONAL_ROOM_,
@@ -221,12 +220,16 @@ MeetingInfoUtil.generateOptions = async (from) => {
221
220
  try {
222
221
  await webex.internal.services.waitForCatalog('postauth');
223
222
 
224
- const conversationUrl = webex.internal.conversation.getUrlFromClusterId({
225
- cluster: hydraId.cluster,
226
- id: hydraId.destination,
227
- });
223
+ const serviceUrl = webex.internal.services.getServiceUrlFromClusterId(
224
+ {
225
+ cluster: hydraId.cluster,
226
+ },
227
+ webex
228
+ );
228
229
 
229
- options.destination = conversationUrl;
230
+ options.destination = hydraId.destination
231
+ ? `${serviceUrl}/conversations/${hydraId.destination}`
232
+ : serviceUrl;
230
233
  } catch (e) {
231
234
  LoggerProxy.logger.error(`Meeting-info:util#generateOptions --> ${e}`);
232
235
  throw e;
@@ -1,9 +1,7 @@
1
1
  import url from 'url';
2
2
 
3
- import {
4
- // @ts-ignore
5
- deconstructHydraId,
6
- } from '@webex/common';
3
+ // @ts-ignore
4
+ import {deconstructHydraId} from '@webex/common';
7
5
 
8
6
  import {
9
7
  _SIP_URI_,
@@ -21,6 +19,8 @@ import {
21
19
  JOIN,
22
20
  MEET,
23
21
  MEET_M,
22
+ MEET_CISCO,
23
+ MEET_CO,
24
24
  HTTPS_PROTOCOL,
25
25
  UUID_REG,
26
26
  VALID_EMAIL_ADDRESS,
@@ -68,6 +68,8 @@ MeetingInfoUtil.isMeetingLink = (value: string) => {
68
68
  parsedUrl.pathname &&
69
69
  (parsedUrl.pathname.includes(`/${MEET}`) ||
70
70
  parsedUrl.pathname.includes(`/${MEET_M}`) ||
71
+ parsedUrl.pathname.includes(`/${MEET_CISCO}`) ||
72
+ parsedUrl.pathname.includes(`/${MEET_CO}`) ||
71
73
  parsedUrl.pathname.includes(`/${JOIN}`));
72
74
 
73
75
  return hostNameBool && pathNameBool;
@@ -162,7 +164,13 @@ MeetingInfoUtil.getDestinationType = async (from) => {
162
164
  };
163
165
  }
164
166
  const options: any = {};
165
- const hydraId = MeetingInfoUtil.getHydraId(destination);
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
+ }
166
174
 
167
175
  if (MeetingInfoUtil.isMeetingLink(destination)) {
168
176
  LoggerProxy.logger.warn(
@@ -180,22 +188,24 @@ MeetingInfoUtil.getDestinationType = async (from) => {
180
188
  } else if (MeetingInfoUtil.isConversationUrl(destination, webex)) {
181
189
  options.type = _CONVERSATION_URL_;
182
190
  options.destination = destination;
183
- } else if (hydraId.people) {
191
+ } else if (hydraId && hydraId.people) {
184
192
  options.type = _SIP_URI_;
185
193
 
186
- return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId.destination, webex).then((res) => {
187
- options.destination = res;
194
+ return MeetingInfoUtil.getSipUriFromHydraPersonId(hydraId && hydraId.destination, webex).then(
195
+ (res) => {
196
+ options.destination = res;
188
197
 
189
- // Since hydra person ids require a unique case in which they are
190
- // entirely converted to a SIP URI, we need to set a flag for detecting
191
- // this type of destination.
192
- 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;
193
202
 
194
- return Promise.resolve(options);
195
- });
203
+ return Promise.resolve(options);
204
+ }
205
+ );
196
206
  } else if (hydraId.room) {
197
207
  LoggerProxy.logger.error(
198
- `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-guide-for-USM-meeting) to migrate to use the meeting ID or SIP address.`
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.`
199
209
  );
200
210
  // Error code 30105 added as Space ID deprecated as of beta, Please refer migration guide.
201
211
  throw new SpaceIDDeprecatedError();
@@ -60,4 +60,17 @@ export default class MeetingCollection extends Collection {
60
60
 
61
61
  return null;
62
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
+ }
63
76
  }