@webex/plugin-meetings 3.0.0-test.1 → 3.1.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 (431) hide show
  1. package/.eslintrc.js +6 -0
  2. package/babel.config.js +3 -0
  3. package/dist/annotation/constants.js +12 -20
  4. package/dist/annotation/constants.js.map +1 -1
  5. package/dist/annotation/index.js +25 -10
  6. package/dist/annotation/index.js.map +1 -1
  7. package/dist/breakouts/breakout.js +2 -3
  8. package/dist/breakouts/breakout.js.map +1 -1
  9. package/dist/breakouts/collection.js +1 -2
  10. package/dist/breakouts/collection.js.map +1 -1
  11. package/dist/breakouts/edit-lock-error.js +1 -2
  12. package/dist/breakouts/edit-lock-error.js.map +1 -1
  13. package/dist/breakouts/events.js +1 -2
  14. package/dist/breakouts/events.js.map +1 -1
  15. package/dist/breakouts/index.js +13 -14
  16. package/dist/breakouts/index.js.map +1 -1
  17. package/dist/breakouts/request.js +1 -2
  18. package/dist/breakouts/request.js.map +1 -1
  19. package/dist/breakouts/utils.js +3 -6
  20. package/dist/breakouts/utils.js.map +1 -1
  21. package/dist/common/browser-detection.js +2 -3
  22. package/dist/common/browser-detection.js.map +1 -1
  23. package/dist/common/collection.js +3 -4
  24. package/dist/common/collection.js.map +1 -1
  25. package/dist/common/config.js +1 -2
  26. package/dist/common/config.js.map +1 -1
  27. package/dist/common/errors/captcha-error.js +1 -2
  28. package/dist/common/errors/captcha-error.js.map +1 -1
  29. package/dist/common/errors/intent-to-join.js +1 -2
  30. package/dist/common/errors/intent-to-join.js.map +1 -1
  31. package/dist/common/errors/join-meeting.js +1 -2
  32. package/dist/common/errors/join-meeting.js.map +1 -1
  33. package/dist/common/errors/media.js +1 -2
  34. package/dist/common/errors/media.js.map +1 -1
  35. package/dist/common/errors/no-meeting-info.js +1 -2
  36. package/dist/common/errors/no-meeting-info.js.map +1 -1
  37. package/dist/common/errors/parameter.js +3 -4
  38. package/dist/common/errors/parameter.js.map +1 -1
  39. package/dist/common/errors/password-error.js +1 -2
  40. package/dist/common/errors/password-error.js.map +1 -1
  41. package/dist/common/errors/permission.js +1 -2
  42. package/dist/common/errors/permission.js.map +1 -1
  43. package/dist/common/errors/reclaim-host-role-errors.js +6 -10
  44. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -1
  45. package/dist/common/errors/reconnection-in-progress.js +1 -2
  46. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  47. package/dist/common/errors/reconnection.js +1 -2
  48. package/dist/common/errors/reconnection.js.map +1 -1
  49. package/dist/common/errors/stats.js +1 -2
  50. package/dist/common/errors/stats.js.map +1 -1
  51. package/dist/common/errors/webex-errors.js +14 -15
  52. package/dist/common/errors/webex-errors.js.map +1 -1
  53. package/dist/common/errors/webex-meetings-error.js +1 -2
  54. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  55. package/dist/common/events/events-scope.js +1 -2
  56. package/dist/common/events/events-scope.js.map +1 -1
  57. package/dist/common/events/events.js +1 -2
  58. package/dist/common/events/events.js.map +1 -1
  59. package/dist/common/events/trigger-proxy.js +1 -2
  60. package/dist/common/events/trigger-proxy.js.map +1 -1
  61. package/dist/common/events/util.js +1 -2
  62. package/dist/common/events/util.js.map +1 -1
  63. package/dist/common/logs/logger-config.js +1 -2
  64. package/dist/common/logs/logger-config.js.map +1 -1
  65. package/dist/common/logs/logger-proxy.js +1 -2
  66. package/dist/common/logs/logger-proxy.js.map +1 -1
  67. package/dist/{types/common → common}/logs/request.d.ts +1 -1
  68. package/dist/common/logs/request.js +3 -4
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +2 -4
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/{types/config.d.ts → config.d.ts} +1 -0
  73. package/dist/config.js +4 -3
  74. package/dist/config.js.map +1 -1
  75. package/dist/{types/constants.d.ts → constants.d.ts} +10 -5
  76. package/dist/constants.js +207 -380
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +3 -6
  79. package/dist/controls-options-manager/constants.js.map +1 -1
  80. package/dist/controls-options-manager/enums.js +7 -10
  81. package/dist/controls-options-manager/enums.js.map +1 -1
  82. package/dist/controls-options-manager/index.js +27 -32
  83. package/dist/controls-options-manager/index.js.map +1 -1
  84. package/dist/controls-options-manager/util.js +1 -2
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +3 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interceptors/index.js.map +1 -1
  89. package/dist/interceptors/locusRetry.js +4 -3
  90. package/dist/interceptors/locusRetry.js.map +1 -1
  91. package/dist/interpretation/collection.js +1 -2
  92. package/dist/interpretation/collection.js.map +1 -1
  93. package/dist/interpretation/index.js +4 -5
  94. package/dist/interpretation/index.js.map +1 -1
  95. package/dist/interpretation/siLanguage.js +2 -3
  96. package/dist/interpretation/siLanguage.js.map +1 -1
  97. package/dist/locus-info/controlsUtils.js +12 -13
  98. package/dist/locus-info/controlsUtils.js.map +1 -1
  99. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  100. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  101. package/dist/locus-info/fullState.js +1 -2
  102. package/dist/locus-info/fullState.js.map +1 -1
  103. package/dist/locus-info/hostUtils.js +1 -2
  104. package/dist/locus-info/hostUtils.js.map +1 -1
  105. package/dist/locus-info/index.js +23 -27
  106. package/dist/locus-info/index.js.map +1 -1
  107. package/dist/locus-info/infoUtils.js +3 -4
  108. package/dist/locus-info/infoUtils.js.map +1 -1
  109. package/dist/locus-info/mediaSharesUtils.js +16 -3
  110. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  111. package/dist/locus-info/parser.js +6 -10
  112. package/dist/locus-info/parser.js.map +1 -1
  113. package/dist/locus-info/selfUtils.js +12 -6
  114. package/dist/locus-info/selfUtils.js.map +1 -1
  115. package/dist/media/MediaConnectionAwaiter.d.ts +61 -0
  116. package/dist/media/MediaConnectionAwaiter.js +163 -0
  117. package/dist/media/MediaConnectionAwaiter.js.map +1 -0
  118. package/dist/media/index.js +9 -5
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +7 -28
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +1 -2
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +9 -18
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +14 -2
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/{types/meeting → meeting}/index.d.ts +71 -16
  129. package/dist/meeting/index.js +1411 -1036
  130. package/dist/meeting/index.js.map +1 -1
  131. package/dist/meeting/locusMediaRequest.js +4 -5
  132. package/dist/meeting/locusMediaRequest.js.map +1 -1
  133. package/dist/meeting/muteState.js +2 -4
  134. package/dist/meeting/muteState.js.map +1 -1
  135. package/dist/{types/meeting → meeting}/request.d.ts +3 -0
  136. package/dist/meeting/request.js +45 -36
  137. package/dist/meeting/request.js.map +1 -1
  138. package/dist/meeting/state.js +1 -2
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/{types/meeting → meeting}/util.d.ts +1 -0
  141. package/dist/meeting/util.js +13 -10
  142. package/dist/meeting/util.js.map +1 -1
  143. package/dist/meeting/voicea-meeting.d.ts +16 -0
  144. package/dist/meeting/voicea-meeting.js +169 -0
  145. package/dist/meeting/voicea-meeting.js.map +1 -0
  146. package/dist/meeting-info/collection.js +3 -4
  147. package/dist/meeting-info/collection.js.map +1 -1
  148. package/dist/meeting-info/index.js +5 -4
  149. package/dist/meeting-info/index.js.map +1 -1
  150. package/dist/meeting-info/meeting-info-v2.js +27 -29
  151. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  152. package/dist/meeting-info/request.js +1 -2
  153. package/dist/meeting-info/request.js.map +1 -1
  154. package/dist/meeting-info/util.js +8 -8
  155. package/dist/meeting-info/util.js.map +1 -1
  156. package/dist/meeting-info/utilv2.js +15 -9
  157. package/dist/meeting-info/utilv2.js.map +1 -1
  158. package/dist/meetings/collection.js +5 -6
  159. package/dist/meetings/collection.js.map +1 -1
  160. package/dist/{types/meetings → meetings}/index.d.ts +11 -2
  161. package/dist/meetings/index.js +44 -17
  162. package/dist/meetings/index.js.map +1 -1
  163. package/dist/meetings/request.js +2 -3
  164. package/dist/meetings/request.js.map +1 -1
  165. package/dist/meetings/util.js +1 -4
  166. package/dist/meetings/util.js.map +1 -1
  167. package/dist/member/index.js +1 -3
  168. package/dist/member/index.js.map +1 -1
  169. package/dist/member/types.js +6 -8
  170. package/dist/member/types.js.map +1 -1
  171. package/dist/member/util.js +1 -2
  172. package/dist/member/util.js.map +1 -1
  173. package/dist/members/collection.js +1 -2
  174. package/dist/members/collection.js.map +1 -1
  175. package/dist/members/index.js +8 -7
  176. package/dist/members/index.js.map +1 -1
  177. package/dist/members/request.js +2 -3
  178. package/dist/members/request.js.map +1 -1
  179. package/dist/members/types.js +3 -4
  180. package/dist/members/types.js.map +1 -1
  181. package/dist/{types/members → members}/util.d.ts +1 -1
  182. package/dist/members/util.js +3 -4
  183. package/dist/members/util.js.map +1 -1
  184. package/dist/metrics/constants.js +1 -2
  185. package/dist/metrics/constants.js.map +1 -1
  186. package/dist/metrics/index.js +3 -2
  187. package/dist/metrics/index.js.map +1 -1
  188. package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +1 -2
  189. package/dist/multistream/mediaRequestManager.js +9 -11
  190. package/dist/multistream/mediaRequestManager.js.map +1 -1
  191. package/dist/multistream/receiveSlot.js +3 -5
  192. package/dist/multistream/receiveSlot.js.map +1 -1
  193. package/dist/multistream/receiveSlotManager.js +7 -9
  194. package/dist/multistream/receiveSlotManager.js.map +1 -1
  195. package/dist/multistream/remoteMedia.js +3 -5
  196. package/dist/multistream/remoteMedia.js.map +1 -1
  197. package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +1 -1
  198. package/dist/multistream/remoteMediaGroup.js +7 -6
  199. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  200. package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +1 -2
  201. package/dist/multistream/remoteMediaManager.js +32 -29
  202. package/dist/multistream/remoteMediaManager.js.map +1 -1
  203. package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +1 -2
  204. package/dist/multistream/sendSlotManager.js +9 -6
  205. package/dist/multistream/sendSlotManager.js.map +1 -1
  206. package/dist/networkQualityMonitor/index.js +1 -2
  207. package/dist/networkQualityMonitor/index.js.map +1 -1
  208. package/dist/personal-meeting-room/index.js +2 -3
  209. package/dist/personal-meeting-room/index.js.map +1 -1
  210. package/dist/personal-meeting-room/request.js +2 -3
  211. package/dist/personal-meeting-room/request.js.map +1 -1
  212. package/dist/personal-meeting-room/util.js +1 -2
  213. package/dist/personal-meeting-room/util.js.map +1 -1
  214. package/dist/{types/reachability → reachability}/clusterReachability.d.ts +1 -0
  215. package/dist/reachability/clusterReachability.js +35 -20
  216. package/dist/reachability/clusterReachability.js.map +1 -1
  217. package/dist/{types/reachability → reachability}/index.d.ts +4 -0
  218. package/dist/reachability/index.js +41 -12
  219. package/dist/reachability/index.js.map +1 -1
  220. package/dist/reachability/request.js +25 -20
  221. package/dist/reachability/request.js.map +1 -1
  222. package/dist/{types/reachability → reachability}/util.d.ts +7 -0
  223. package/dist/reachability/util.js +19 -0
  224. package/dist/reachability/util.js.map +1 -1
  225. package/dist/reactions/constants.js +1 -2
  226. package/dist/reactions/constants.js.map +1 -1
  227. package/dist/reactions/reactions.js +2 -4
  228. package/dist/reactions/reactions.js.map +1 -1
  229. package/dist/reactions/reactions.type.js +6 -8
  230. package/dist/reactions/reactions.type.js.map +1 -1
  231. package/dist/reconnection-manager/index.js +18 -11
  232. package/dist/reconnection-manager/index.js.map +1 -1
  233. package/dist/recording-controller/enums.js +4 -5
  234. package/dist/recording-controller/enums.js.map +1 -1
  235. package/dist/recording-controller/index.js +43 -51
  236. package/dist/recording-controller/index.js.map +1 -1
  237. package/dist/recording-controller/util.js +1 -2
  238. package/dist/recording-controller/util.js.map +1 -1
  239. package/dist/{types/roap → roap}/index.d.ts +10 -2
  240. package/dist/roap/index.js +17 -3
  241. package/dist/roap/index.js.map +1 -1
  242. package/dist/roap/request.js +10 -10
  243. package/dist/roap/request.js.map +1 -1
  244. package/dist/{types/roap → roap}/turnDiscovery.d.ts +64 -17
  245. package/dist/roap/turnDiscovery.js +316 -134
  246. package/dist/roap/turnDiscovery.js.map +1 -1
  247. package/dist/rtcMetrics/constants.js +1 -2
  248. package/dist/rtcMetrics/constants.js.map +1 -1
  249. package/dist/rtcMetrics/index.js +4 -6
  250. package/dist/rtcMetrics/index.js.map +1 -1
  251. package/dist/statsAnalyzer/global.js +1 -2
  252. package/dist/statsAnalyzer/global.js.map +1 -1
  253. package/dist/statsAnalyzer/index.js +123 -96
  254. package/dist/statsAnalyzer/index.js.map +1 -1
  255. package/dist/statsAnalyzer/mqaUtil.js +24 -31
  256. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  257. package/dist/transcription/index.js +1 -2
  258. package/dist/transcription/index.js.map +1 -1
  259. package/dist/webinar/collection.js +1 -2
  260. package/dist/webinar/collection.js.map +1 -1
  261. package/dist/webinar/index.js +2 -3
  262. package/dist/webinar/index.js.map +1 -1
  263. package/jest.config.js +3 -0
  264. package/package.json +44 -25
  265. package/process +1 -0
  266. package/src/config.ts +3 -4
  267. package/src/constants.ts +13 -4
  268. package/src/interpretation/index.ts +2 -2
  269. package/src/locus-info/mediaSharesUtils.ts +16 -0
  270. package/src/locus-info/selfUtils.ts +5 -0
  271. package/src/media/MediaConnectionAwaiter.ts +174 -0
  272. package/src/media/index.ts +3 -1
  273. package/src/media/properties.ts +6 -31
  274. package/src/meeting/index.ts +526 -227
  275. package/src/meeting/request.ts +18 -2
  276. package/src/meeting/util.ts +6 -1
  277. package/src/meeting/voicea-meeting.ts +122 -0
  278. package/src/meeting-info/meeting-info-v2.ts +5 -11
  279. package/src/meeting-info/util.ts +12 -9
  280. package/src/meeting-info/utilv2.ts +26 -15
  281. package/src/meetings/index.ts +18 -0
  282. package/src/member/index.ts +0 -1
  283. package/src/multistream/mediaRequestManager.ts +1 -1
  284. package/src/multistream/remoteMediaGroup.ts +1 -1
  285. package/src/multistream/remoteMediaManager.ts +1 -2
  286. package/src/multistream/sendSlotManager.ts +1 -2
  287. package/src/reachability/clusterReachability.ts +20 -5
  288. package/src/reachability/index.ts +24 -1
  289. package/src/reachability/request.ts +15 -11
  290. package/src/reachability/util.ts +21 -0
  291. package/src/reconnection-manager/index.ts +1 -1
  292. package/src/roap/index.ts +25 -3
  293. package/src/roap/request.ts +2 -2
  294. package/src/roap/turnDiscovery.ts +244 -78
  295. package/src/statsAnalyzer/index.ts +63 -27
  296. package/test/integration/spec/journey.js +2 -2
  297. package/test/unit/spec/breakouts/breakout.ts +2 -1
  298. package/test/unit/spec/breakouts/index.ts +7 -4
  299. package/test/unit/spec/interpretation/index.ts +4 -1
  300. package/test/unit/spec/locus-info/index.js +27 -18
  301. package/test/unit/spec/locus-info/mediaSharesUtils.ts +9 -0
  302. package/test/unit/spec/locus-info/selfUtils.js +41 -11
  303. package/test/unit/spec/media/MediaConnectionAwaiter.ts +344 -0
  304. package/test/unit/spec/media/index.ts +94 -78
  305. package/test/unit/spec/media/properties.ts +16 -70
  306. package/test/unit/spec/meeting/index.js +757 -141
  307. package/test/unit/spec/meeting/request.js +21 -0
  308. package/test/unit/spec/meeting/utils.js +58 -11
  309. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  310. package/test/unit/spec/meeting-info/meetinginfov2.js +20 -15
  311. package/test/unit/spec/meeting-info/utilv2.js +6 -0
  312. package/test/unit/spec/meetings/index.js +101 -13
  313. package/test/unit/spec/metrics/index.js +1 -2
  314. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  315. package/test/unit/spec/multistream/remoteMediaGroup.ts +0 -1
  316. package/test/unit/spec/multistream/remoteMediaManager.ts +0 -1
  317. package/test/unit/spec/reachability/clusterReachability.ts +86 -22
  318. package/test/unit/spec/reachability/index.ts +197 -60
  319. package/test/unit/spec/reachability/request.js +15 -7
  320. package/test/unit/spec/reachability/util.ts +32 -2
  321. package/test/unit/spec/reconnection-manager/index.js +28 -0
  322. package/test/unit/spec/recording-controller/index.js +0 -1
  323. package/test/unit/spec/roap/index.ts +61 -6
  324. package/test/unit/spec/roap/turnDiscovery.ts +299 -17
  325. package/test/unit/spec/stats-analyzer/index.js +179 -0
  326. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  327. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  328. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  329. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  330. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  331. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  332. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  333. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  334. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  335. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  336. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  337. /package/dist/{types/common → common}/collection.d.ts +0 -0
  338. /package/dist/{types/common → common}/config.d.ts +0 -0
  339. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  340. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  341. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  342. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  343. /package/dist/{types/common → common}/errors/no-meeting-info.d.ts +0 -0
  344. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  345. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  346. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  347. /package/dist/{types/common → common}/errors/reclaim-host-role-errors.d.ts +0 -0
  348. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  349. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  350. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  351. /package/dist/{types/common → common}/errors/webex-errors.d.ts +0 -0
  352. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  353. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  354. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  355. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  356. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  357. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  358. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  359. /package/dist/{types/common → common}/queue.d.ts +0 -0
  360. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  361. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  362. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  363. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  364. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  365. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  366. /package/dist/{types/interceptors → interceptors}/index.d.ts +0 -0
  367. /package/dist/{types/interceptors → interceptors}/locusRetry.d.ts +0 -0
  368. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  369. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  370. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  371. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  372. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  373. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  374. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  375. /package/dist/{types/locus-info → locus-info}/index.d.ts +0 -0
  376. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  377. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  378. /package/dist/{types/locus-info → locus-info}/parser.d.ts +0 -0
  379. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  380. /package/dist/{types/media → media}/index.d.ts +0 -0
  381. /package/dist/{types/media → media}/properties.d.ts +0 -0
  382. /package/dist/{types/media → media}/util.d.ts +0 -0
  383. /package/dist/{types/mediaQualityMetrics → mediaQualityMetrics}/config.d.ts +0 -0
  384. /package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +0 -0
  385. /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
  386. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  387. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  388. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  389. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  390. /package/dist/{types/meeting-info → meeting-info}/index.d.ts +0 -0
  391. /package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +0 -0
  392. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  393. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  394. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  395. /package/dist/{types/meetings → meetings}/collection.d.ts +0 -0
  396. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  397. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  398. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  399. /package/dist/{types/member → member}/index.d.ts +0 -0
  400. /package/dist/{types/member → member}/types.d.ts +0 -0
  401. /package/dist/{types/member → member}/util.d.ts +0 -0
  402. /package/dist/{types/members → members}/collection.d.ts +0 -0
  403. /package/dist/{types/members → members}/index.d.ts +0 -0
  404. /package/dist/{types/members → members}/request.d.ts +0 -0
  405. /package/dist/{types/members → members}/types.d.ts +0 -0
  406. /package/dist/{types/metrics → metrics}/constants.d.ts +0 -0
  407. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  408. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  409. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  410. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  411. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  412. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  413. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  414. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  415. /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
  416. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  417. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  418. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  419. /package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +0 -0
  420. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  421. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  422. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  423. /package/dist/{types/roap → roap}/request.d.ts +0 -0
  424. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  425. /package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +0 -0
  426. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  427. /package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +0 -0
  428. /package/dist/{types/statsAnalyzer → statsAnalyzer}/mqaUtil.d.ts +0 -0
  429. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  430. /package/dist/{types/webinar → webinar}/collection.d.ts +0 -0
  431. /package/dist/{types/webinar → webinar}/index.d.ts +0 -0
@@ -194,12 +194,14 @@ describe('plugin-meetings', () => {
194
194
  const roapMessage = 'roap-message';
195
195
  const permissionToken = 'permission-token';
196
196
  const installationId = 'installationId';
197
+ const reachability = 'reachability';
197
198
 
198
199
  await meetingsRequest.joinMeeting({
199
200
  locusUrl,
200
201
  deviceUrl,
201
202
  correlationId,
202
203
  roapMessage,
204
+ reachability,
203
205
  permissionToken,
204
206
  });
205
207
  const requestParams = meetingsRequest.request.getCall(0).args[0];
@@ -212,6 +214,9 @@ describe('plugin-meetings', () => {
212
214
  assert.equal(requestParams.body.permissionToken, 'permission-token');
213
215
  assert.equal(requestParams.body.device.regionCode, 'WEST-COAST');
214
216
  assert.include(requestParams.body.device.localIp, '127.0.0');
217
+ assert.deepEqual(requestParams.body.localMedias, [
218
+ {localSdp: '{"roapMessage":"roap-message","reachability":"reachability"}'},
219
+ ]);
215
220
 
216
221
  assert.calledOnceWithExactly(anonymizeIpSpy, '127.0.0.1');
217
222
  });
@@ -365,6 +370,22 @@ describe('plugin-meetings', () => {
365
370
  assert.deepEqual(requestParams.body.locale, undefined);
366
371
  });
367
372
 
373
+ it('adds alias to request when they are provided', async () => {
374
+ await meetingsRequest.joinMeeting({
375
+ alias: 'assigned name',
376
+ });
377
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
378
+
379
+ assert.deepEqual(requestParams.body.alias, 'assigned name');
380
+ });
381
+
382
+ it('does not add alias to request when they are not provided', async () => {
383
+ await meetingsRequest.joinMeeting({});
384
+ const requestParams = meetingsRequest.request.getCall(0).args[0];
385
+
386
+ assert.deepEqual(requestParams.body.alias, undefined);
387
+ });
388
+
368
389
  it('includes joinCookie and ipver correctly', async () => {
369
390
  const locusUrl = 'locusURL';
370
391
  const deviceUrl = 'deviceUrl';
@@ -57,7 +57,8 @@ describe('plugin-meetings', () => {
57
57
  });
58
58
 
59
59
  describe('#cleanup', () => {
60
- it('do clean up on meeting object', async () => {
60
+ it('do clean up on meeting object with LLM enabled', async () => {
61
+ meeting.config = {enableAutomaticLLM : true};
61
62
  await MeetingUtil.cleanUp(meeting);
62
63
  assert.calledOnce(meeting.cleanupLocalStreams);
63
64
  assert.calledOnce(meeting.closeRemoteStreams);
@@ -71,6 +72,37 @@ describe('plugin-meetings', () => {
71
72
  assert.calledOnce(meeting.breakouts.cleanUp);
72
73
  assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
73
74
  });
75
+
76
+ it('do clean up on meeting object with LLM disabled', async () => {
77
+ meeting.config = {enableAutomaticLLM : false};
78
+ await MeetingUtil.cleanUp(meeting);
79
+ assert.calledOnce(meeting.cleanupLocalStreams);
80
+ assert.calledOnce(meeting.closeRemoteStreams);
81
+ assert.calledOnce(meeting.closePeerConnections);
82
+
83
+ assert.calledOnce(meeting.unsetRemoteStreams);
84
+ assert.calledOnce(meeting.unsetPeerConnections);
85
+ assert.calledOnce(meeting.reconnectionManager.cleanUp);
86
+ assert.calledOnce(meeting.stopKeepAlive);
87
+ assert.notCalled(meeting.updateLLMConnection);
88
+ assert.calledOnce(meeting.breakouts.cleanUp);
89
+ assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
90
+ });
91
+
92
+ it('do clean up on meeting object with no config', async () => {
93
+ await MeetingUtil.cleanUp(meeting);
94
+ assert.calledOnce(meeting.cleanupLocalStreams);
95
+ assert.calledOnce(meeting.closeRemoteStreams);
96
+ assert.calledOnce(meeting.closePeerConnections);
97
+
98
+ assert.calledOnce(meeting.unsetRemoteStreams);
99
+ assert.calledOnce(meeting.unsetPeerConnections);
100
+ assert.calledOnce(meeting.reconnectionManager.cleanUp);
101
+ assert.calledOnce(meeting.stopKeepAlive);
102
+ assert.notCalled(meeting.updateLLMConnection);
103
+ assert.calledOnce(meeting.breakouts.cleanUp);
104
+ assert.calledOnce(meeting.simultaneousInterpretation.cleanUp);
105
+ });
74
106
  });
75
107
 
76
108
  describe('logging', () => {
@@ -369,14 +401,19 @@ describe('plugin-meetings', () => {
369
401
  getWebexObject: sinon.stub().returns(webex),
370
402
  };
371
403
 
372
- MeetingUtil.parseLocusJoin = sinon.stub();
373
- await MeetingUtil.joinMeeting(meeting, {});
404
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
405
+ await MeetingUtil.joinMeeting(meeting, {
406
+ reachability: 'reachability',
407
+ roapMessage: 'roapMessage',
408
+ });
374
409
 
375
410
  assert.calledOnce(meeting.meetingRequest.joinMeeting);
376
411
  const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
377
412
 
378
413
  assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
379
414
  assert.equal(parameter.preferTranscoding, true);
415
+ assert.equal(parameter.reachability, 'reachability');
416
+ assert.equal(parameter.roapMessage, 'roapMessage');
380
417
 
381
418
  assert.calledWith(webex.internal.newMetrics.submitClientEvent, {
382
419
  name: 'client.locus.join.request',
@@ -396,6 +433,7 @@ describe('plugin-meetings', () => {
396
433
  mediaConnections: 'mediaConnections',
397
434
  },
398
435
  });
436
+ parseLocusJoinSpy.restore();
399
437
  });
400
438
 
401
439
  it('#Should call meetingRequest.joinMeeting with breakoutsSupported=true when passed in as true', async () => {
@@ -406,7 +444,7 @@ describe('plugin-meetings', () => {
406
444
  getWebexObject: sinon.stub().returns(webex),
407
445
  };
408
446
 
409
- MeetingUtil.parseLocusJoin = sinon.stub();
447
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
410
448
  await MeetingUtil.joinMeeting(meeting, {
411
449
  breakoutsSupported: true,
412
450
  });
@@ -415,6 +453,7 @@ describe('plugin-meetings', () => {
415
453
  const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
416
454
 
417
455
  assert.equal(parameter.breakoutsSupported, true);
456
+ parseLocusJoinSpy.restore();
418
457
  });
419
458
 
420
459
  it('#Should call meetingRequest.joinMeeting with liveAnnotationSupported=true when passed in as true', async () => {
@@ -425,7 +464,7 @@ describe('plugin-meetings', () => {
425
464
  getWebexObject: sinon.stub().returns(webex),
426
465
  };
427
466
 
428
- MeetingUtil.parseLocusJoin = sinon.stub();
467
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
429
468
  await MeetingUtil.joinMeeting(meeting, {
430
469
  liveAnnotationSupported: true,
431
470
  });
@@ -434,6 +473,7 @@ describe('plugin-meetings', () => {
434
473
  const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
435
474
 
436
475
  assert.equal(parameter.liveAnnotationSupported, true);
476
+ parseLocusJoinSpy.restore();
437
477
  });
438
478
 
439
479
  it('#Should call meetingRequest.joinMeeting with locale=en_UK, deviceCapabilities=["TEST"] when they are passed in as those values', async () => {
@@ -444,7 +484,7 @@ describe('plugin-meetings', () => {
444
484
  getWebexObject: sinon.stub().returns(webex),
445
485
  };
446
486
 
447
- MeetingUtil.parseLocusJoin = sinon.stub();
487
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
448
488
  await MeetingUtil.joinMeeting(meeting, {
449
489
  locale: 'en_UK',
450
490
  deviceCapabilities: ['TEST'],
@@ -455,6 +495,7 @@ describe('plugin-meetings', () => {
455
495
 
456
496
  assert.equal(parameter.locale, 'en_UK');
457
497
  assert.deepEqual(parameter.deviceCapabilities, ['TEST']);
498
+ parseLocusJoinSpy.restore();
458
499
  });
459
500
 
460
501
  it('#Should call meetingRequest.joinMeeting with preferTranscoding=false when multistream is enabled', async () => {
@@ -468,7 +509,7 @@ describe('plugin-meetings', () => {
468
509
  getWebexObject: sinon.stub().returns(webex),
469
510
  };
470
511
 
471
- MeetingUtil.parseLocusJoin = sinon.stub();
512
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
472
513
  await MeetingUtil.joinMeeting(meeting, {});
473
514
 
474
515
  assert.calledOnce(meeting.meetingRequest.joinMeeting);
@@ -476,6 +517,7 @@ describe('plugin-meetings', () => {
476
517
 
477
518
  assert.equal(parameter.inviteeAddress, 'meetingJoinUrl');
478
519
  assert.equal(parameter.preferTranscoding, false);
520
+ parseLocusJoinSpy.restore();
479
521
  });
480
522
 
481
523
  it('#Should fallback sipUrl if meetingJoinUrl does not exists', async () => {
@@ -488,13 +530,14 @@ describe('plugin-meetings', () => {
488
530
  getWebexObject: sinon.stub().returns(webex),
489
531
  };
490
532
 
491
- MeetingUtil.parseLocusJoin = sinon.stub();
533
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
492
534
  await MeetingUtil.joinMeeting(meeting, {});
493
535
 
494
536
  assert.calledOnce(meeting.meetingRequest.joinMeeting);
495
537
  const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
496
538
 
497
539
  assert.equal(parameter.inviteeAddress, 'sipUri');
540
+ parseLocusJoinSpy.restore();
498
541
  });
499
542
 
500
543
  it('#Should fallback to meetingNumber if meetingJoinUrl/sipUrl does not exists', async () => {
@@ -507,7 +550,7 @@ describe('plugin-meetings', () => {
507
550
  getWebexObject: sinon.stub().returns(webex),
508
551
  };
509
552
 
510
- MeetingUtil.parseLocusJoin = sinon.stub();
553
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
511
554
  await MeetingUtil.joinMeeting(meeting, {});
512
555
 
513
556
  assert.calledOnce(meeting.meetingRequest.joinMeeting);
@@ -515,6 +558,7 @@ describe('plugin-meetings', () => {
515
558
 
516
559
  assert.isUndefined(parameter.inviteeAddress);
517
560
  assert.equal(parameter.meetingNumber, 'meetingNumber');
561
+ parseLocusJoinSpy.restore();
518
562
  });
519
563
 
520
564
  it('should pass in the locusClusterUrl from meetingInfo', async () => {
@@ -528,19 +572,20 @@ describe('plugin-meetings', () => {
528
572
  getWebexObject: sinon.stub().returns(webex),
529
573
  };
530
574
 
531
- MeetingUtil.parseLocusJoin = sinon.stub();
575
+ const parseLocusJoinSpy = sinon.stub(MeetingUtil, 'parseLocusJoin');
532
576
  await MeetingUtil.joinMeeting(meeting, {});
533
577
 
534
578
  assert.calledOnce(meeting.meetingRequest.joinMeeting);
535
579
  const parameter = meeting.meetingRequest.joinMeeting.getCall(0).args[0];
536
580
 
537
581
  assert.equal(parameter.locusClusterUrl, 'locusClusterUrl');
582
+ parseLocusJoinSpy.restore();
538
583
  });
539
584
  });
540
585
 
541
586
  describe('joinMeetingOptions', () => {
542
587
  it('sends client events correctly', async () => {
543
- MeetingUtil.joinMeeting = sinon.stub().rejects({});
588
+ const joinMeetingSpy = sinon.stub(MeetingUtil, 'joinMeeting').rejects({});
544
589
  MeetingUtil.isPinOrGuest = sinon.stub().returns(true);
545
590
  const meeting = {
546
591
  id: 'meeting-id',
@@ -571,6 +616,8 @@ describe('plugin-meetings', () => {
571
616
  meetingId: meeting.id,
572
617
  },
573
618
  });
619
+ } finally {
620
+ joinMeetingSpy.restore();
574
621
  }
575
622
  });
576
623
  });
@@ -0,0 +1,266 @@
1
+ import {
2
+ getSpeakerFromProxyOrStore,
3
+ processNewCaptions,
4
+ } from '@webex/plugin-meetings/src/meeting/voicea-meeting';
5
+ import {assert} from '@webex/test-helper-chai';
6
+ import { expect } from 'chai';
7
+
8
+ describe('plugin-meetings', () => {
9
+ let fakeMeeting, fakeVoiceaPayload;
10
+ const fakeMemberId = "4f35a5ab-f750-3ba7-b309-dea62a512257";
11
+ beforeEach(() => {
12
+ const fakeMemberList = {
13
+ [fakeMemberId]: {
14
+ participant: {
15
+ person: {
16
+ id: "8093d335-9b96-4f9d-a6b2-7293423be88a",
17
+ name: "John Doe",
18
+ isExternal: false,
19
+ orgId: "1eb65fdf-9643-417f-9974-ad72cae0e10f",
20
+ incomingCallProtocols: []
21
+ },
22
+ status: {
23
+ audioStatus: "SENDRECV",
24
+ videoStatus: "INACTIVE",
25
+ videoSlidesStatus: "RECVONLY",
26
+ audioSlidesStatus: "INACTIVE",
27
+ csis: [
28
+ 3060099329,
29
+ 3060099328,
30
+ 1234867712,
31
+ 1234867713
32
+ ]
33
+ },
34
+ },
35
+ id: fakeMemberId
36
+ }
37
+ };
38
+
39
+ const fakeCaptions = {
40
+ captions: [
41
+ {
42
+ id: "6bece1b9-4e50-fafe-fb63-d27d5fb27280",
43
+ isFinal: true,
44
+ text: "Oh it's not update.",
45
+ currentSpokenLanguage: "en",
46
+ timestamp: "1:34",
47
+ speaker: {
48
+ speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
49
+ name: "John Doe"
50
+ }
51
+ },
52
+ {
53
+ id: "c34400a9-cb2b-20c3-d20c-bd7981cc62a9",
54
+ isFinal: true,
55
+ text: "Nice.",
56
+ currentSpokenLanguage: "en",
57
+ timestamp: "1:60",
58
+ speaker: {
59
+ speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
60
+ name: "John Doe"
61
+ }
62
+ },
63
+ {
64
+ id: "311cc182-e657-c077-c078-795f866c4e9b_8093d335-9b96-4f9d-a6b2-7293423be88a",
65
+ isFinal: false,
66
+ text: " Don't bother me talking I'm just going to get the transcript data that is interim and I",
67
+ currentCaptionLanguage: "en",
68
+ speaker: {
69
+ speakerId: "8093d335-9b96-4f9d-a6b2-7293423be88a",
70
+ name: "John Doe"
71
+ }
72
+ }
73
+ ],
74
+ interimCaptions: {
75
+ "6bece1b9-4e50-fafe-fb63-d27d5fb27280": [],
76
+ "c34400a9-cb2b-20c3-d20c-bd7981cc62a9": [],
77
+ "311cc182-e657-c077-c078-795f866c4e9b": [
78
+ "311cc182-e657-c077-c078-795f866c4e9b_8093d335-9b96-4f9d-a6b2-7293423be88a"
79
+ ]
80
+ },
81
+ speakerProxy: {},
82
+ };
83
+
84
+ fakeMeeting = {
85
+ members: {
86
+ membersCollection: {
87
+ members: fakeMemberList
88
+ }
89
+ },
90
+ transcription: fakeCaptions
91
+ }
92
+
93
+ fakeVoiceaPayload = {
94
+ isFinal: true,
95
+ transcriptId: "311cc182-e657-c077-c078-795f866c4e9b",
96
+ transcripts: [
97
+ {
98
+ text: "Don't bother me talking I'm just going to get the transcript data that is interim and I needed if I keep talking, I get the interim data",
99
+ csis: [
100
+ 1234867712
101
+ ],
102
+ transcript_language_code: "en"
103
+ }
104
+ ],
105
+ transcript: {
106
+ text: "Don't bother me talking I'm just going to get the transcript data that is interim and I needed if I keep talking, I get the interim data",
107
+ csis: [
108
+ 1234867712
109
+ ],
110
+ transcript_language_code: "en"
111
+ }
112
+ };
113
+ });
114
+
115
+ describe('voicea-meeting', () => {
116
+ it('should export the correct members', () => {
117
+ assert.isFunction(getSpeakerFromProxyOrStore);
118
+ assert.isFunction(processNewCaptions);
119
+ });
120
+
121
+ describe('getSpeakerFromProxyOrStore', () => {
122
+ it('should return a cached speaker if csisKey is in speakerProxy', () => {
123
+ // Add a speaker to the speakerProxy
124
+ const csisKey = 1234867712;
125
+ const cachedSpeaker = {
126
+ speakerId: 'cached-speaker-id',
127
+ name: 'Cached Speaker'
128
+ };
129
+ fakeMeeting.transcription.speakerProxy[csisKey] = cachedSpeaker;
130
+
131
+ const { speaker, needsCaching } = getSpeakerFromProxyOrStore({
132
+ csisKey,
133
+ meetingMembers: fakeMeeting.members.membersCollection.members,
134
+ transcriptData: fakeMeeting.transcription
135
+ });
136
+
137
+ expect(speaker).to.deep.equal(cachedSpeaker);
138
+ expect(needsCaching).to.be.false;
139
+ });
140
+
141
+ it('should find and cache a speaker if not already in speakerProxy', () => {
142
+ const csisKey = 1234867712; // This csis exists in the fakeMemberList
143
+
144
+ // Ensure speakerProxy is empty
145
+ fakeMeeting.transcription.speakerProxy = {};
146
+
147
+ const { speaker, needsCaching } = getSpeakerFromProxyOrStore({
148
+ csisKey,
149
+ meetingMembers: fakeMeeting.members.membersCollection.members,
150
+ transcriptData: fakeMeeting.transcription
151
+ });
152
+
153
+ expect(speaker.speakerId).to.equal(fakeMeeting.members.membersCollection.members[fakeMemberId].participant.person.id);
154
+ expect(speaker.name).to.equal(fakeMeeting.members.membersCollection.members[fakeMemberId].participant.person.name);
155
+ expect(needsCaching).to.be.true;
156
+ });
157
+ });
158
+
159
+ describe('processNewCaptions', () => {
160
+ it('should process new final captions correctly', () => {
161
+ let transcriptData = fakeMeeting.transcription;
162
+ let transcriptId = fakeVoiceaPayload.transcriptId;
163
+ delete fakeVoiceaPayload.transcripts;
164
+
165
+ // Assuming that processNewCaptions is a pure function that doesn't mutate the input but returns a new state
166
+ processNewCaptions({
167
+ data: fakeVoiceaPayload,
168
+ meeting: fakeMeeting
169
+ });
170
+
171
+ // Check if speaker details are cached if needed
172
+ const csisKey = fakeVoiceaPayload.transcript.csis[0];
173
+ const speaker = transcriptData.speakerProxy[csisKey];
174
+ expect(speaker).to.exist;
175
+
176
+ // Check if interim captions are removed
177
+ expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([]);
178
+
179
+ //check if the interim caption is removed
180
+ const oldInterimCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
181
+ expect(oldInterimCaption).to.not.exist;
182
+
183
+ // Check the final caption data
184
+ const newCaption = transcriptData.captions.find(caption => caption.id === transcriptId);
185
+ expect(newCaption).to.exist;
186
+ expect(newCaption).to.include({
187
+ id: transcriptId,
188
+ isFinal: fakeVoiceaPayload.isFinal,
189
+ text: fakeVoiceaPayload.transcript.text,
190
+ currentSpokenLanguage: fakeVoiceaPayload.transcript.transcript_language_code,
191
+ });
192
+
193
+ // Check the speaker data in the new caption
194
+ expect(newCaption.speaker).to.deep.equal(speaker);
195
+ });
196
+
197
+ it('should process new interim captions correctly', () => {
198
+ let transcriptData = fakeMeeting.transcription;
199
+ let transcriptId = fakeVoiceaPayload.transcriptId;
200
+ delete fakeVoiceaPayload.transcript;
201
+
202
+ transcriptData.captions.splice(transcriptData.length - 1, 1);
203
+ fakeVoiceaPayload.isFinal = false;
204
+
205
+ processNewCaptions({
206
+ data: fakeVoiceaPayload,
207
+ meeting: fakeMeeting
208
+ });
209
+
210
+ // Check if speaker details are cached if needed
211
+ const csisKey = fakeVoiceaPayload.transcripts[0].csis[0];
212
+ const speaker = transcriptData.speakerProxy[csisKey];
213
+ expect(speaker).to.exist;
214
+
215
+ // Check the final caption data
216
+ const newCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
217
+ expect(newCaption).to.exist;
218
+ expect(newCaption).to.include({
219
+ id: `${transcriptId}_${speaker.speakerId}`,
220
+ isFinal: fakeVoiceaPayload.isFinal,
221
+ text: fakeVoiceaPayload.transcripts[0].text,
222
+ currentCaptionLanguage: fakeVoiceaPayload.transcripts[0].transcript_language_code,
223
+ });
224
+
225
+ // Check if interim captions has the right caption id
226
+ expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([newCaption.id]);
227
+
228
+ // Check the speaker data in the new caption
229
+ expect(newCaption.speaker).to.deep.equal(speaker);
230
+ });
231
+
232
+ it('should process interim captions with an existing one correctly', () => {
233
+ let transcriptData = fakeMeeting.transcription;
234
+ let transcriptId = fakeVoiceaPayload.transcriptId;
235
+ delete fakeVoiceaPayload.transcript;
236
+ fakeVoiceaPayload.isFinal = false;
237
+
238
+ processNewCaptions({
239
+ data: fakeVoiceaPayload,
240
+ meeting: fakeMeeting
241
+ });
242
+
243
+ // Check if speaker details are cached if needed
244
+ const csisKey = fakeVoiceaPayload.transcripts[0].csis[0];
245
+ const speaker = transcriptData.speakerProxy[csisKey];
246
+ expect(speaker).to.exist;
247
+
248
+ // Check the final caption data
249
+ const newCaption = transcriptData.captions.find(caption => caption.id === `${transcriptId}_${speaker.speakerId}`);
250
+ expect(newCaption).to.exist;
251
+ expect(newCaption).to.include({
252
+ id: `${transcriptId}_${speaker.speakerId}`,
253
+ isFinal: fakeVoiceaPayload.isFinal,
254
+ text: fakeVoiceaPayload.transcripts[0].text,
255
+ currentCaptionLanguage: fakeVoiceaPayload.transcripts[0].transcript_language_code,
256
+ });
257
+
258
+ // Check if interim captions has the right caption id
259
+ expect(transcriptData.interimCaptions[transcriptId]).to.deep.equal([newCaption.id]);
260
+
261
+ // Check the speaker data in the new caption
262
+ expect(newCaption.speaker).to.deep.equal(speaker);
263
+ });
264
+ });
265
+ });
266
+ });
@@ -795,13 +795,17 @@ describe('plugin-meetings', () => {
795
795
  it('Make a request to /spaceInstant when conversationUrl', async () => {
796
796
  const {invitee} = setup();
797
797
 
798
- const result = await meetingInfo.createAdhocSpaceMeeting(conversationUrl);
798
+ webex.request.resolves({
799
+ statusCode: 200,
800
+ body: conversation
801
+ });
802
+
803
+ const result = await meetingInfo.createAdhocSpaceMeeting(conversationUrl,installedOrgID);
799
804
 
800
805
  assert.calledWith(
801
- webex.internal.conversation.get,
802
- {url: conversationUrl},
803
- {includeParticipants: true, disableTransform: true}
804
- );
806
+ webex.request,
807
+ {uri:conversationUrl, qs: {includeParticipants: true}, disableTransform: true}
808
+ )
805
809
 
806
810
  assert.calledWith(webex.request, {
807
811
  method: 'POST',
@@ -812,27 +816,28 @@ describe('plugin-meetings', () => {
812
816
  keyUrl: conversation.encryptionKeyUrl,
813
817
  kroUrl: conversation.kmsResourceObjectUrl,
814
818
  invitees: invitee,
819
+ installedOrgID: installedOrgID
815
820
  },
816
821
  });
817
- assert(Metrics.sendBehavioralMetric.calledOnce);
822
+ assert.calledOnce(Metrics.sendBehavioralMetric);
818
823
  assert.calledWith(Metrics.sendBehavioralMetric, BEHAVIORAL_METRICS.ADHOC_MEETING_SUCCESS);
819
824
  assert.deepEqual(result, {
820
- body: {},
825
+ body: conversation,
821
826
  statusCode: 200
822
827
  });
823
828
  });
824
-
825
829
  it('Make a request to /spaceInstant when conversationUrl with installed org ID', async () => {
826
830
  const {invitee} = setup();
827
-
831
+ webex.request = sinon.stub().resolves({
832
+ body: conversation,
833
+ });
828
834
  await meetingInfo.createAdhocSpaceMeeting(conversationUrl, installedOrgID);
829
835
 
830
- assert.calledWith(
831
- webex.internal.conversation.get,
832
- {url: conversationUrl},
833
- {includeParticipants: true, disableTransform: true}
834
- );
835
-
836
+ assert.calledWith(webex.request, {
837
+ uri: conversationUrl,
838
+ qs: {includeParticipants: true},
839
+ disableTransform: true,
840
+ });
836
841
  assert.calledWith(webex.request, {
837
842
  method: 'POST',
838
843
  uri: 'https://go.webex.com/wbxappapi/v2/meetings/spaceInstant',
@@ -252,6 +252,12 @@ describe('plugin-meetings', () => {
252
252
  it('SIP meeting address from excepted domain', () => {
253
253
  assert.equal(MeetingInfoUtil.getWebexSite('10019857020@meet.webex.com'), null);
254
254
  });
255
+ it('SIP meeting address from excepted domain for IC', () => {
256
+ assert.equal(MeetingInfoUtil.getWebexSite('10019857020@meet-intb.ciscospark.com'), null);
257
+ });
258
+ it('SIP meeting address from webex domain', () => {
259
+ assert.equal(MeetingInfoUtil.getWebexSite('10019857020@webex.com'), null);
260
+ });
255
261
  it('invalid domain', () => {
256
262
  assert.equal(MeetingInfoUtil.getWebexSite('invaliddomain'), null);
257
263
  });