@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
@@ -264,7 +264,7 @@ export class StatsAnalyzer extends EventsScope {
264
264
 
265
265
  // Add stats for individual streams
266
266
  Object.keys(this.statsResults).forEach((mediaType) => {
267
- if (mediaType.includes('audio-send')) {
267
+ if (mediaType.startsWith('audio-send')) {
268
268
  const audioSenderStream = cloneDeep(emptyAudioTransmitStream);
269
269
 
270
270
  getAudioSenderStreamMqa({
@@ -276,7 +276,7 @@ export class StatsAnalyzer extends EventsScope {
276
276
  newMqa.audioTransmit[0].streams.push(audioSenderStream);
277
277
 
278
278
  this.lastMqaDataSent[mediaType].send = cloneDeep(this.statsResults[mediaType].send);
279
- } else if (mediaType.includes('audio-share-send')) {
279
+ } else if (mediaType.startsWith('audio-share-send')) {
280
280
  const audioSenderStream = cloneDeep(emptyAudioTransmitStream);
281
281
 
282
282
  getAudioSenderStreamMqa({
@@ -288,7 +288,7 @@ export class StatsAnalyzer extends EventsScope {
288
288
  newMqa.audioTransmit[1].streams.push(audioSenderStream);
289
289
 
290
290
  this.lastMqaDataSent[mediaType].send = cloneDeep(this.statsResults[mediaType].send);
291
- } else if (mediaType.includes('audio-recv')) {
291
+ } else if (mediaType.startsWith('audio-recv')) {
292
292
  const audioReceiverStream = cloneDeep(emptyAudioReceiveStream);
293
293
 
294
294
  getAudioReceiverStreamMqa({
@@ -300,7 +300,7 @@ export class StatsAnalyzer extends EventsScope {
300
300
  newMqa.audioReceive[0].streams.push(audioReceiverStream);
301
301
 
302
302
  this.lastMqaDataSent[mediaType].recv = cloneDeep(this.statsResults[mediaType].recv);
303
- } else if (mediaType.includes('audio-share-recv')) {
303
+ } else if (mediaType.startsWith('audio-share-recv')) {
304
304
  const audioReceiverStream = cloneDeep(emptyAudioReceiveStream);
305
305
 
306
306
  getAudioReceiverStreamMqa({
@@ -312,7 +312,8 @@ export class StatsAnalyzer extends EventsScope {
312
312
  newMqa.audioReceive[1].streams.push(audioReceiverStream);
313
313
 
314
314
  this.lastMqaDataSent[mediaType].recv = cloneDeep(this.statsResults[mediaType].recv);
315
- } else if (mediaType.includes('video-send')) {
315
+ } else if (mediaType.startsWith('video-send-layer')) {
316
+ // We only want the stream-specific stats we get with video-send-layer-0, video-send-layer-1, etc.
316
317
  const videoSenderStream = cloneDeep(emptyVideoTransmitStream);
317
318
 
318
319
  getVideoSenderStreamMqa({
@@ -324,7 +325,7 @@ export class StatsAnalyzer extends EventsScope {
324
325
  newMqa.videoTransmit[0].streams.push(videoSenderStream);
325
326
 
326
327
  this.lastMqaDataSent[mediaType].send = cloneDeep(this.statsResults[mediaType].send);
327
- } else if (mediaType.includes('video-share-send')) {
328
+ } else if (mediaType.startsWith('video-share-send')) {
328
329
  const videoSenderStream = cloneDeep(emptyVideoTransmitStream);
329
330
 
330
331
  getVideoSenderStreamMqa({
@@ -336,7 +337,7 @@ export class StatsAnalyzer extends EventsScope {
336
337
  newMqa.videoTransmit[1].streams.push(videoSenderStream);
337
338
 
338
339
  this.lastMqaDataSent[mediaType].send = cloneDeep(this.statsResults[mediaType].send);
339
- } else if (mediaType.includes('video-recv')) {
340
+ } else if (mediaType.startsWith('video-recv')) {
340
341
  const videoReceiverStream = cloneDeep(emptyVideoReceiveStream);
341
342
 
342
343
  getVideoReceiverStreamMqa({
@@ -348,7 +349,7 @@ export class StatsAnalyzer extends EventsScope {
348
349
  newMqa.videoReceive[0].streams.push(videoReceiverStream);
349
350
 
350
351
  this.lastMqaDataSent[mediaType].recv = cloneDeep(this.statsResults[mediaType].recv);
351
- } else if (mediaType.includes('video-share-recv')) {
352
+ } else if (mediaType.startsWith('video-share-recv')) {
352
353
  const videoReceiverStream = cloneDeep(emptyVideoReceiveStream);
353
354
 
354
355
  getVideoReceiverStreamMqa({
@@ -373,9 +374,14 @@ export class StatsAnalyzer extends EventsScope {
373
374
  name: MEDIA_DEVICES.MICROPHONE,
374
375
  });
375
376
  }
376
- if (this.statsResults['video-send']) {
377
+
378
+ const existingVideoSender = Object.keys(this.statsResults).find((item) =>
379
+ item.includes('video-send')
380
+ );
381
+
382
+ if (existingVideoSender) {
377
383
  newMqa.intervalMetadata.peripherals.push({
378
- information: this.statsResults['video-send'].trackLabel || _UNKNOWN_,
384
+ information: this.statsResults[existingVideoSender].trackLabel || _UNKNOWN_,
379
385
  name: MEDIA_DEVICES.CAMERA,
380
386
  });
381
387
  }
@@ -552,9 +558,21 @@ export class StatsAnalyzer extends EventsScope {
552
558
  }
553
559
  });
554
560
 
561
+ let videoSenderIndex = 0;
555
562
  statsItem.report.forEach((result) => {
556
563
  if (types.includes(result.type)) {
557
- this.parseGetStatsResult(result, type, isSender);
564
+ // if the video sender has multiple streams in the report, it is a new stream object.
565
+ if (type === 'video-send' && result.type === 'outbound-rtp') {
566
+ const newType = `video-send-layer-${videoSenderIndex}`;
567
+ this.parseGetStatsResult(result, newType, isSender);
568
+ videoSenderIndex += 1;
569
+
570
+ this.statsResults[newType].direction = statsItem.currentDirection;
571
+ this.statsResults[newType].trackLabel = statsItem.localTrackLabel;
572
+ this.statsResults[newType].csi = statsItem.csi;
573
+ } else {
574
+ this.parseGetStatsResult(result, type, isSender);
575
+ }
558
576
  }
559
577
  });
560
578
 
@@ -664,12 +682,23 @@ export class StatsAnalyzer extends EventsScope {
664
682
  const getCurrentStatsTotals = (keyPrefix: string, value: string): number =>
665
683
  Object.keys(this.statsResults)
666
684
  .filter((key) => key.startsWith(keyPrefix))
667
- .reduce((prev, cur) => prev + (this.statsResults[cur]?.recv[value] || 0), 0);
685
+ .reduce(
686
+ (prev, cur) =>
687
+ prev +
688
+ (this.statsResults[cur]?.[keyPrefix.includes('send') ? 'send' : 'recv'][value] || 0),
689
+ 0
690
+ );
668
691
 
669
692
  const getPreviousStatsTotals = (keyPrefix: string, value: string): number =>
670
693
  Object.keys(this.statsResults)
671
694
  .filter((key) => key.startsWith(keyPrefix))
672
- .reduce((prev, cur) => prev + (this.lastStatsResults[cur]?.recv[value] || 0), 0);
695
+ .reduce(
696
+ (prev, cur) =>
697
+ prev +
698
+ (this.lastStatsResults[cur]?.[keyPrefix.includes('send') ? 'send' : 'recv'][value] ||
699
+ 0),
700
+ 0
701
+ );
673
702
 
674
703
  // Audio Transmit
675
704
  if (this.lastStatsResults['audio-send']) {
@@ -731,47 +760,54 @@ export class StatsAnalyzer extends EventsScope {
731
760
  false
732
761
  );
733
762
 
763
+ const currentTotalPacketsSent = getCurrentStatsTotals('video-send', 'totalPacketsSent');
764
+ const previousTotalPacketsSent = getPreviousStatsTotals('video-send', 'totalPacketsSent');
765
+
766
+ const currentFramesEncoded = getCurrentStatsTotals('video-send', 'framesEncoded');
767
+ const previousFramesEncoded = getPreviousStatsTotals('video-send', 'framesEncoded');
768
+
769
+ const currentFramesSent = getCurrentStatsTotals('video-send', 'framesSent');
770
+ const previousFramesSent = getPreviousStatsTotals('video-send', 'framesSent');
771
+
772
+ const doesVideoSendExist = Object.keys(this.lastStatsResults).some((item) =>
773
+ item.includes('video-send')
774
+ );
775
+
734
776
  // Video Transmit
735
- if (this.lastStatsResults['video-send']) {
777
+ if (doesVideoSendExist) {
736
778
  // compare video stats sent
737
- const currentStats = this.statsResults['video-send'].send;
738
- const previousStats = this.lastStatsResults['video-send'].send;
739
779
 
740
780
  if (
741
781
  this.meetingMediaStatus.expected.sendVideo &&
742
- (currentStats.totalPacketsSent === previousStats.totalPacketsSent ||
743
- currentStats.totalPacketsSent === 0)
782
+ (currentTotalPacketsSent === previousTotalPacketsSent || currentTotalPacketsSent === 0)
744
783
  ) {
745
784
  LoggerProxy.logger.info(
746
785
  `StatsAnalyzer:index#compareLastStatsResult --> No video RTP packets sent`,
747
- currentStats.totalPacketsSent
786
+ currentTotalPacketsSent
748
787
  );
749
788
  } else {
750
789
  if (
751
790
  this.meetingMediaStatus.expected.sendVideo &&
752
- (currentStats.framesEncoded === previousStats.framesEncoded ||
753
- currentStats.framesEncoded === 0)
791
+ (currentFramesEncoded === previousFramesEncoded || currentFramesEncoded === 0)
754
792
  ) {
755
793
  LoggerProxy.logger.info(
756
794
  `StatsAnalyzer:index#compareLastStatsResult --> No video Frames Encoded`,
757
- currentStats.framesEncoded
795
+ currentFramesEncoded
758
796
  );
759
797
  }
760
798
 
761
799
  if (
762
800
  this.meetingMediaStatus.expected.sendVideo &&
763
- (this.statsResults['video-send'].send.framesSent ===
764
- this.lastStatsResults['video-send'].send.framesSent ||
765
- this.statsResults['video-send'].send.framesSent === 0)
801
+ (currentFramesSent === previousFramesSent || currentFramesSent === 0)
766
802
  ) {
767
803
  LoggerProxy.logger.info(
768
804
  `StatsAnalyzer:index#compareLastStatsResult --> No video Frames sent`,
769
- this.statsResults['video-send'].send.framesSent
805
+ currentFramesSent
770
806
  );
771
807
  }
772
808
  }
773
809
 
774
- this.emitStartStopEvents('video', previousStats.framesSent, currentStats.framesSent, true);
810
+ this.emitStartStopEvents('video', previousFramesSent, currentFramesSent, true);
775
811
  }
776
812
 
777
813
  // Video Receive
@@ -10,7 +10,7 @@ import {createCameraStream, createDisplayStream, createMicrophoneStream, LocalTr
10
10
 
11
11
  import testUtils from '../../utils/testUtils';
12
12
  import integrationTestUtils from '../../utils/integrationTestUtils';
13
- import {EVENT_TRIGGERS} from '../../../src/constants';
13
+ import {EVENT_TRIGGERS} from '../../../dist/constants';
14
14
 
15
15
  require('dotenv').config();
16
16
 
@@ -239,7 +239,7 @@ skipInNode(describe)('plugin-meetings', () => {
239
239
 
240
240
  // Enabled when config.enableUnifiedMeetings = true
241
241
  xdescribe('Conversation URL', () => {
242
- describe('Successful 1:1 meeting', () => {
242
+ describe('Successful 1:1 meeting', () => {
243
243
  it('Fetch meeting information with a conversation URL for a 1:1 space', async () => {
244
244
  assert.equal(Object.keys(bob.webex.meetings.getAllMeetings()), 0);
245
245
  assert.equal(Object.keys(chris.webex.meetings.getAllMeetings()), 0);
@@ -89,7 +89,7 @@ describe('plugin-meetings', () => {
89
89
  })
90
90
  };
91
91
 
92
- sinon.stub(webex.internal.newMetrics.submitClientEvent, 'bind').returns(webex.internal.newMetrics.submitClientEvent);
92
+ const submitClientEventStub = sinon.stub(webex.internal.newMetrics.submitClientEvent, 'bind').returns(webex.internal.newMetrics.submitClientEvent);
93
93
 
94
94
  let onBreakoutMoveRequestStub = sinon.stub(breakoutEvent, 'onBreakoutMoveRequest');
95
95
  let onBreakoutMoveResponseStub = sinon.stub(breakoutEvent, 'onBreakoutMoveResponse');
@@ -105,6 +105,7 @@ describe('plugin-meetings', () => {
105
105
 
106
106
  onBreakoutMoveRequestStub.restore();
107
107
  onBreakoutMoveResponseStub.restore();
108
+ submitClientEventStub.restore()
108
109
  });
109
110
  });
110
111
 
@@ -381,7 +381,7 @@ describe('plugin-meetings', () => {
381
381
  id: 'meeting-id'
382
382
  })
383
383
  };
384
- breakoutEvent.onBreakoutJoinResponse = sinon.stub();
384
+ const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent,'onBreakoutJoinResponse')
385
385
  breakouts.currentBreakoutSession.sessionId = "sessionId-old";
386
386
  breakouts.updateBreakout({
387
387
  sessionId: 'sessionId-new',
@@ -398,7 +398,9 @@ describe('plugin-meetings', () => {
398
398
  breakoutMoveId: 'breakoutMoveId',
399
399
  });
400
400
 
401
- assert.calledOnce(breakoutEvent.onBreakoutJoinResponse);
401
+ assert.calledOnce(onBreakoutJoinResponseSpy);
402
+
403
+ onBreakoutJoinResponseSpy.restore()
402
404
 
403
405
  });
404
406
 
@@ -408,7 +410,7 @@ describe('plugin-meetings', () => {
408
410
  id: 'meeting-id'
409
411
  })
410
412
  };
411
- breakoutEvent.onBreakoutJoinResponse = sinon.stub();
413
+ const onBreakoutJoinResponseSpy = sinon.stub(breakoutEvent, 'onBreakoutJoinResponse');
412
414
  breakouts.currentBreakoutSession.sessionId = "sessionId";
413
415
  breakouts.currentBreakoutSession.groupId = "groupId";
414
416
  breakouts.updateBreakout({
@@ -426,7 +428,8 @@ describe('plugin-meetings', () => {
426
428
  breakoutMoveId: 'breakoutMoveId',
427
429
  });
428
430
 
429
- assert.notCalled(breakoutEvent.onBreakoutJoinResponse);
431
+ assert.notCalled(onBreakoutJoinResponseSpy);
432
+ onBreakoutJoinResponseSpy.restore()
430
433
 
431
434
  });
432
435
  });
@@ -131,6 +131,7 @@ describe('plugin-meetings', () => {
131
131
  assert.equal(interpretation.receiveLanguage, 'en');
132
132
  assert.equal(interpretation.isActive, true);
133
133
  assert.equal(interpretation.order, 0);
134
+ assert.equal(interpretation.selfIsInterpreter, true);
134
135
 
135
136
  sampleData.interpretation = {
136
137
  originalLanguage: 'en',
@@ -141,13 +142,15 @@ describe('plugin-meetings', () => {
141
142
  assert.equal(interpretation.sourceLanguage, undefined);
142
143
  assert.equal(interpretation.targetLanguage, 'zh');
143
144
  assert.equal(interpretation.receiveLanguage, undefined);
145
+ assert.equal(interpretation.selfIsInterpreter, true);
144
146
 
145
147
  sampleData.interpretation = {
146
148
  order: 0,
147
149
  };
148
- assert.equal(interpretation.updateSelfInterpretation(sampleData), false);
150
+ assert.equal(interpretation.updateSelfInterpretation(sampleData), true);
149
151
  assert.equal(interpretation.originalLanguage, undefined);
150
152
  assert.equal(interpretation.targetLanguage, undefined);
153
+ assert.equal(interpretation.selfIsInterpreter, false);
151
154
  });
152
155
  });
153
156
 
@@ -1385,7 +1385,7 @@ describe('plugin-meetings', () => {
1385
1385
  function: 'updateMeetingInfo',
1386
1386
  },
1387
1387
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1388
- payload
1388
+ payload,
1389
1389
  ];
1390
1390
 
1391
1391
  if (expected) {
@@ -1404,7 +1404,7 @@ describe('plugin-meetings', () => {
1404
1404
  function: 'updateMeetingInfo',
1405
1405
  },
1406
1406
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1407
- payload
1407
+ payload,
1408
1408
  ];
1409
1409
 
1410
1410
  if (expected) {
@@ -1426,8 +1426,7 @@ describe('plugin-meetings', () => {
1426
1426
  */
1427
1427
  sinon.stub(locusInfo, 'emitScoped').callsFake(() => {
1428
1428
  assert.deepEqual(mockMeeting, expectedMeeting);
1429
- })
1430
-
1429
+ });
1431
1430
 
1432
1431
  // set the info initially as locusInfo.info starts as undefined
1433
1432
  expectedMeeting = {
@@ -1907,7 +1906,7 @@ describe('plugin-meetings', () => {
1907
1906
  locusInfo.locusParser.workingCopy = {
1908
1907
  syncUrl: 'current sync url',
1909
1908
  };
1910
-
1909
+
1911
1910
  locusInfo.applyLocusDeltaData(LOCUS_URL_CHANGED, fakeLocus, meeting);
1912
1911
  assert.calledOnceWithExactly(meeting.meetingRequest.getLocusDTO, {url: 'current sync url'});
1913
1912
  });
@@ -1970,8 +1969,12 @@ describe('plugin-meetings', () => {
1970
1969
  }).then(() => {
1971
1970
  assert.calledTwice(meeting.meetingRequest.getLocusDTO);
1972
1971
 
1973
- assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[0].args, [{url: 'deltaSyncUrl'}]);
1974
- assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[1].args, [{url: 'fullSyncUrl'}]);
1972
+ assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[0].args, [
1973
+ {url: 'deltaSyncUrl'},
1974
+ ]);
1975
+ assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[1].args, [
1976
+ {url: 'fullSyncUrl'},
1977
+ ]);
1975
1978
 
1976
1979
  assert.calledWith(sendBehavioralMetricStub, 'js_sdk_locus_delta_sync_failed', {
1977
1980
  correlationId: meeting.correlationId,
@@ -1999,8 +2002,12 @@ describe('plugin-meetings', () => {
1999
2002
  }).then(() => {
2000
2003
  assert.calledTwice(meeting.meetingRequest.getLocusDTO);
2001
2004
 
2002
- assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[0].args, [{url: 'deltaSyncUrl'}]);
2003
- assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[1].args, [{url: 'fullSyncUrl'}]);
2005
+ assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[0].args, [
2006
+ {url: 'deltaSyncUrl'},
2007
+ ]);
2008
+ assert.deepEqual(meeting.meetingRequest.getLocusDTO.getCalls()[1].args, [
2009
+ {url: 'fullSyncUrl'},
2010
+ ]);
2004
2011
 
2005
2012
  assert.calledWith(sendBehavioralMetricStub, 'js_sdk_locus_delta_sync_failed', {
2006
2013
  correlationId: meeting.correlationId,
@@ -2084,7 +2091,7 @@ describe('plugin-meetings', () => {
2084
2091
 
2085
2092
  locusInfo.clearMainSessionLocusCache = sinon.stub();
2086
2093
  locusInfo.getTheLocusToUpdate(newLocus);
2087
- assert.notCalled(locusInfo.clearMainSessionLocusCache)
2094
+ assert.notCalled(locusInfo.clearMainSessionLocusCache);
2088
2095
  });
2089
2096
 
2090
2097
  it('return the new locus if return to main session but no cache and do not clear main session cache', () => {
@@ -2106,7 +2113,7 @@ describe('plugin-meetings', () => {
2106
2113
 
2107
2114
  locusInfo.clearMainSessionLocusCache = sinon.stub();
2108
2115
  locusInfo.getTheLocusToUpdate(newLocus);
2109
- assert.notCalled(locusInfo.clearMainSessionLocusCache)
2116
+ assert.notCalled(locusInfo.clearMainSessionLocusCache);
2110
2117
  });
2111
2118
 
2112
2119
  it('return the new locus if not return to main session and clear main session cache', () => {
@@ -2116,9 +2123,9 @@ describe('plugin-meetings', () => {
2116
2123
  sessionType: 'MAIN',
2117
2124
  },
2118
2125
  },
2119
- self: {removed: true}
2126
+ self: {removed: true},
2120
2127
  };
2121
- locusInfo.fullState = {state: 'ACTIVE'}
2128
+ locusInfo.fullState = {state: 'ACTIVE'};
2122
2129
  locusInfo.controls = {
2123
2130
  breakout: {
2124
2131
  sessionType: 'MAIN',
@@ -2134,7 +2141,7 @@ describe('plugin-meetings', () => {
2134
2141
 
2135
2142
  locusInfo.clearMainSessionLocusCache = sinon.stub();
2136
2143
  const result = locusInfo.getTheLocusToUpdate(newLocus);
2137
- assert.calledOnce(locusInfo.clearMainSessionLocusCache)
2144
+ assert.calledOnce(locusInfo.clearMainSessionLocusCache);
2138
2145
 
2139
2146
  assert.deepEqual(result, newLocus);
2140
2147
  });
@@ -2146,9 +2153,9 @@ describe('plugin-meetings', () => {
2146
2153
  sessionType: 'MAIN',
2147
2154
  },
2148
2155
  },
2149
- self: {removed: undefined}
2156
+ self: {removed: undefined},
2150
2157
  };
2151
- locusInfo.fullState = {state: 'ACTIVE'}
2158
+ locusInfo.fullState = {state: 'ACTIVE'};
2152
2159
  locusInfo.controls = {
2153
2160
  breakout: {
2154
2161
  sessionType: 'MAIN',
@@ -2164,7 +2171,7 @@ describe('plugin-meetings', () => {
2164
2171
 
2165
2172
  locusInfo.clearMainSessionLocusCache = sinon.stub();
2166
2173
  locusInfo.getTheLocusToUpdate(newLocus);
2167
- assert.notCalled(locusInfo.clearMainSessionLocusCache)
2174
+ assert.notCalled(locusInfo.clearMainSessionLocusCache);
2168
2175
  });
2169
2176
  });
2170
2177
 
@@ -2611,7 +2618,9 @@ describe('plugin-meetings', () => {
2611
2618
  // send an out-of-order delta
2612
2619
  locusInfo.handleLocusDelta(oooDelta, mockMeeting);
2613
2620
 
2614
- assert.calledOnceWithExactly(sendBehavioralMetricStub, 'js_sdk_locus_delta_ooo', { stack: sinon.match.any})
2621
+ assert.calledOnceWithExactly(sendBehavioralMetricStub, 'js_sdk_locus_delta_ooo', {
2622
+ stack: sinon.match.any,
2623
+ });
2615
2624
 
2616
2625
  await clock.tickAsync(12499);
2617
2626
  await testUtils.flushPromises();
@@ -20,6 +20,15 @@ describe('getContentUrl', () => {
20
20
  });
21
21
  });
22
22
 
23
+ describe('getContentResourceType', () => {
24
+ it('getContentResourceType return correct resourceType value', () => {
25
+ const stub = Sinon.stub(MediaSharesUtils, 'extractContent').returns({resourceType:'resourceType'});
26
+ const resourceType = MediaSharesUtils.getContentResourceType();
27
+ assert.equal(resourceType,'resourceType');
28
+ stub.restore();
29
+ });
30
+ });
31
+
23
32
  describe('getContentBeneficiaryDeviceUrl', () => {
24
33
  it('getContentBeneficiaryDeviceUrl return correct deviceUrl value', () => {
25
34
  const mockContentBeneficiaryDeviceUrl = "https://wdm-a.wbx2.com/wdm/api/v1/devices/e9ffd8a1-1fae-42d1-afbe-013e951f93ab"
@@ -150,8 +150,7 @@ describe('plugin-meetings', () => {
150
150
 
151
151
  it('should return false if no breakouts in current', () => {
152
152
  const current = {
153
- breakoutSessions: {
154
- },
153
+ breakoutSessions: {},
155
154
  };
156
155
  const previous = {
157
156
  breakoutSessions: {
@@ -293,7 +292,7 @@ describe('plugin-meetings', () => {
293
292
  const clonedSelf = cloneDeep(self);
294
293
 
295
294
  clonedSelf.controls.audio.requestedToUnmute = true;
296
- clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z'
295
+ clonedSelf.controls.audio.lastModifiedRequestedToUnmute = '2023-06-16T18:25:04.369Z';
297
296
 
298
297
  const {updates} = SelfUtils.getSelves(self, clonedSelf);
299
298
 
@@ -345,6 +344,41 @@ describe('plugin-meetings', () => {
345
344
  });
346
345
  });
347
346
 
347
+ describe('mutedByOthersChanged', () => {
348
+ it('throws an error if changedSelf is not provided', function() {
349
+ assert.throws(() => SelfUtils.mutedByOthersChanged({}, null), 'New self must be defined to determine if self was muted by others.');
350
+ });
351
+
352
+ it('return false when oldSelf is not defined', function() {
353
+ assert.equal(SelfUtils.mutedByOthersChanged(null, { remoteMuted: false }), false);
354
+ });
355
+
356
+ it('should return true when remoteMuted is true on entry', function() {
357
+ assert.equal(SelfUtils.mutedByOthersChanged(null, { remoteMuted: true }), true);
358
+ });
359
+
360
+ it('should return false when selfIdentity and modifiedBy are the same', function() {
361
+ assert.equal(SelfUtils.mutedByOthersChanged(
362
+ { remoteMuted: false },
363
+ { remoteMuted: true, selfIdentity: 'user1', modifiedBy: 'user1' }
364
+ ), false);
365
+ });
366
+
367
+ it('should return true when remoteMuted values are different', function() {
368
+ assert.equal(SelfUtils.mutedByOthersChanged(
369
+ { remoteMuted: false },
370
+ { remoteMuted: true, selfIdentity: 'user1', modifiedBy: 'user2' }
371
+ ), true);
372
+ });
373
+
374
+ it('should return true when remoteMuted is true and unmuteAllowed has changed', function() {
375
+ assert.equal(SelfUtils.mutedByOthersChanged(
376
+ { remoteMuted: true, unmuteAllowed: false },
377
+ { remoteMuted: true, unmuteAllowed: true, selfIdentity: 'user1', modifiedBy: 'user2' }
378
+ ), true);
379
+ });
380
+ });
381
+
348
382
  describe('videoMutedByOthersChanged', () => {
349
383
  it('returns true if changed', () => {
350
384
  assert.equal(
@@ -371,23 +405,18 @@ describe('plugin-meetings', () => {
371
405
  const clonedSelf = cloneDeep(self);
372
406
 
373
407
  it('get breakoutMoveId works', () => {
374
-
375
408
  assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(self, deviceId), breakoutMoveId);
376
-
377
409
  });
378
410
 
379
411
  it('replaces is empty', () => {
380
-
381
412
  clonedSelf.devices[0].replaces = undefined;
382
413
  assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(clonedSelf, deviceId), null);
383
-
384
414
  });
385
415
 
386
416
  it('no self or self.devices is not array', () => {
387
-
388
417
  assert.deepEqual(SelfUtils.getReplacedBreakoutMoveId(undefined, deviceId), null);
389
418
 
390
- clonedSelf.devices = {
419
+ clonedSelf.devices = {
391
420
  url: 'https://wdm-a.wbx2.com/wdm/api/v1/devices/20eabde3-4254-48da-9a24',
392
421
  deviceType: 'WEB',
393
422
  mediaSessionsExternal: false,
@@ -395,10 +424,11 @@ describe('plugin-meetings', () => {
395
424
  {
396
425
  breakoutMoveId: 'e5caeb2c-ffcc-4e06-a08a-1122e7710398',
397
426
  lastActive: '2023-05-04T07:14:32.068Z',
398
- locusUrl: 'https://locus-alpha-apdx.prod.meetapi.webex.com/locus/api/v1/loci/495061ca-7b3c-3b77-85ff-4e1bd58600d1',
427
+ locusUrl:
428
+ 'https://locus-alpha-apdx.prod.meetapi.webex.com/locus/api/v1/loci/495061ca-7b3c-3b77-85ff-4e1bd58600d1',
399
429
  replacedAt: '2023-05-04T07:16:04.905Z',
400
430
  sessionId: 'be3147d4-c318-86d8-7611-8d24beaaca8d',
401
- }
431
+ },
402
432
  ],
403
433
  state: 'JOINED',
404
434
  };