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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/.eslintrc.js +6 -0
  2. package/README.md +12 -0
  3. package/babel.config.js +3 -0
  4. package/dist/annotation/constants.js +12 -20
  5. package/dist/annotation/constants.js.map +1 -1
  6. package/dist/annotation/index.js +25 -10
  7. package/dist/annotation/index.js.map +1 -1
  8. package/dist/breakouts/breakout.js +2 -3
  9. package/dist/breakouts/breakout.js.map +1 -1
  10. package/dist/breakouts/collection.js +1 -2
  11. package/dist/breakouts/collection.js.map +1 -1
  12. package/dist/breakouts/edit-lock-error.js +1 -2
  13. package/dist/breakouts/edit-lock-error.js.map +1 -1
  14. package/dist/breakouts/events.js +1 -2
  15. package/dist/breakouts/events.js.map +1 -1
  16. package/dist/breakouts/index.js +13 -14
  17. package/dist/breakouts/index.js.map +1 -1
  18. package/dist/breakouts/request.js +1 -2
  19. package/dist/breakouts/request.js.map +1 -1
  20. package/dist/breakouts/utils.js +3 -6
  21. package/dist/breakouts/utils.js.map +1 -1
  22. package/dist/common/browser-detection.js +2 -3
  23. package/dist/common/browser-detection.js.map +1 -1
  24. package/dist/common/collection.js +3 -4
  25. package/dist/common/collection.js.map +1 -1
  26. package/dist/common/config.js +1 -2
  27. package/dist/common/config.js.map +1 -1
  28. package/dist/common/errors/captcha-error.js +1 -2
  29. package/dist/common/errors/captcha-error.js.map +1 -1
  30. package/dist/common/errors/intent-to-join.js +1 -2
  31. package/dist/common/errors/intent-to-join.js.map +1 -1
  32. package/dist/common/errors/join-meeting.js +1 -2
  33. package/dist/common/errors/join-meeting.js.map +1 -1
  34. package/dist/common/errors/media.js +1 -2
  35. package/dist/common/errors/media.js.map +1 -1
  36. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  37. package/dist/common/errors/no-meeting-info.js +50 -0
  38. package/dist/common/errors/no-meeting-info.js.map +1 -0
  39. package/dist/common/errors/parameter.js +3 -4
  40. package/dist/common/errors/parameter.js.map +1 -1
  41. package/dist/common/errors/password-error.js +1 -2
  42. package/dist/common/errors/password-error.js.map +1 -1
  43. package/dist/common/errors/permission.js +1 -2
  44. package/dist/common/errors/permission.js.map +1 -1
  45. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  46. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +1 -2
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +1 -2
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +1 -2
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/{types/common → common}/errors/webex-errors.d.ts +13 -1
  55. package/dist/common/errors/webex-errors.js +35 -16
  56. package/dist/common/errors/webex-errors.js.map +1 -1
  57. package/dist/common/errors/webex-meetings-error.js +1 -2
  58. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  59. package/dist/common/events/events-scope.js +1 -2
  60. package/dist/common/events/events-scope.js.map +1 -1
  61. package/dist/common/events/events.js +1 -2
  62. package/dist/common/events/events.js.map +1 -1
  63. package/dist/common/events/trigger-proxy.js +1 -2
  64. package/dist/common/events/trigger-proxy.js.map +1 -1
  65. package/dist/common/events/util.js +1 -2
  66. package/dist/common/events/util.js.map +1 -1
  67. package/dist/common/logs/logger-config.js +1 -2
  68. package/dist/common/logs/logger-config.js.map +1 -1
  69. package/dist/common/logs/logger-proxy.js +1 -2
  70. package/dist/common/logs/logger-proxy.js.map +1 -1
  71. package/dist/{types/common → common}/logs/request.d.ts +3 -1
  72. package/dist/common/logs/request.js +8 -5
  73. package/dist/common/logs/request.js.map +1 -1
  74. package/dist/common/queue.js +2 -4
  75. package/dist/common/queue.js.map +1 -1
  76. package/dist/{types/config.d.ts → config.d.ts} +1 -1
  77. package/dist/config.js +3 -3
  78. package/dist/config.js.map +1 -1
  79. package/dist/{types/constants.d.ts → constants.d.ts} +71 -15
  80. package/dist/constants.js +252 -371
  81. package/dist/constants.js.map +1 -1
  82. package/dist/controls-options-manager/constants.js +3 -6
  83. package/dist/controls-options-manager/constants.js.map +1 -1
  84. package/dist/controls-options-manager/enums.js +7 -10
  85. package/dist/controls-options-manager/enums.js.map +1 -1
  86. package/dist/controls-options-manager/index.js +27 -32
  87. package/dist/controls-options-manager/index.js.map +1 -1
  88. package/dist/controls-options-manager/util.js +1 -2
  89. package/dist/controls-options-manager/util.js.map +1 -1
  90. package/dist/index.js +8 -5
  91. package/dist/index.js.map +1 -1
  92. package/dist/interceptors/index.d.ts +2 -0
  93. package/dist/interceptors/index.js +15 -0
  94. package/dist/interceptors/index.js.map +1 -0
  95. package/dist/interceptors/locusRetry.d.ts +27 -0
  96. package/dist/interceptors/locusRetry.js +94 -0
  97. package/dist/interceptors/locusRetry.js.map +1 -0
  98. package/dist/interpretation/collection.js +1 -2
  99. package/dist/interpretation/collection.js.map +1 -1
  100. package/dist/interpretation/index.js +2 -3
  101. package/dist/interpretation/index.js.map +1 -1
  102. package/dist/interpretation/siLanguage.js +2 -3
  103. package/dist/interpretation/siLanguage.js.map +1 -1
  104. package/dist/locus-info/controlsUtils.js +12 -13
  105. package/dist/locus-info/controlsUtils.js.map +1 -1
  106. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  107. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  108. package/dist/locus-info/fullState.js +1 -2
  109. package/dist/locus-info/fullState.js.map +1 -1
  110. package/dist/locus-info/hostUtils.js +1 -2
  111. package/dist/locus-info/hostUtils.js.map +1 -1
  112. package/dist/{types/locus-info → locus-info}/index.d.ts +1 -1
  113. package/dist/locus-info/index.js +38 -37
  114. package/dist/locus-info/index.js.map +1 -1
  115. package/dist/locus-info/infoUtils.js +3 -4
  116. package/dist/locus-info/infoUtils.js.map +1 -1
  117. package/dist/locus-info/mediaSharesUtils.js +16 -3
  118. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  119. package/dist/{types/locus-info → locus-info}/parser.d.ts +3 -2
  120. package/dist/locus-info/parser.js +43 -31
  121. package/dist/locus-info/parser.js.map +1 -1
  122. package/dist/locus-info/selfUtils.js +7 -6
  123. package/dist/locus-info/selfUtils.js.map +1 -1
  124. package/dist/media/index.js +15 -10
  125. package/dist/media/index.js.map +1 -1
  126. package/dist/media/properties.js +16 -7
  127. package/dist/media/properties.js.map +1 -1
  128. package/dist/media/util.js +1 -2
  129. package/dist/media/util.js.map +1 -1
  130. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  131. package/dist/mediaQualityMetrics/config.js +135 -339
  132. package/dist/mediaQualityMetrics/config.js.map +1 -1
  133. package/dist/{types/meeting → meeting}/in-meeting-actions.d.ts +4 -0
  134. package/dist/meeting/in-meeting-actions.js +18 -2
  135. package/dist/meeting/in-meeting-actions.js.map +1 -1
  136. package/dist/{types/meeting → meeting}/index.d.ts +318 -45
  137. package/dist/meeting/index.js +2620 -1405
  138. package/dist/meeting/index.js.map +1 -1
  139. package/dist/meeting/locusMediaRequest.js +4 -5
  140. package/dist/meeting/locusMediaRequest.js.map +1 -1
  141. package/dist/meeting/muteState.js +2 -4
  142. package/dist/meeting/muteState.js.map +1 -1
  143. package/dist/{types/meeting → meeting}/request.d.ts +2 -0
  144. package/dist/meeting/request.js +46 -31
  145. package/dist/meeting/request.js.map +1 -1
  146. package/dist/meeting/state.js +1 -2
  147. package/dist/meeting/state.js.map +1 -1
  148. package/dist/{types/meeting → meeting}/util.d.ts +17 -0
  149. package/dist/meeting/util.js +83 -10
  150. package/dist/meeting/util.js.map +1 -1
  151. package/dist/meeting/voicea-meeting.d.ts +16 -0
  152. package/dist/meeting/voicea-meeting.js +169 -0
  153. package/dist/meeting/voicea-meeting.js.map +1 -0
  154. package/dist/meeting-info/collection.js +3 -4
  155. package/dist/meeting-info/collection.js.map +1 -1
  156. package/dist/{types/meeting-info → meeting-info}/index.d.ts +7 -0
  157. package/dist/meeting-info/index.js +53 -27
  158. package/dist/meeting-info/index.js.map +1 -1
  159. package/dist/{types/meeting-info → meeting-info}/meeting-info-v2.d.ts +1 -0
  160. package/dist/meeting-info/meeting-info-v2.js +52 -33
  161. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  162. package/dist/meeting-info/request.js +1 -2
  163. package/dist/meeting-info/request.js.map +1 -1
  164. package/dist/meeting-info/util.js +8 -8
  165. package/dist/meeting-info/util.js.map +1 -1
  166. package/dist/meeting-info/utilv2.js +12 -9
  167. package/dist/meeting-info/utilv2.js.map +1 -1
  168. package/dist/{types/meetings → meetings}/collection.d.ts +9 -0
  169. package/dist/meetings/collection.js +21 -5
  170. package/dist/meetings/collection.js.map +1 -1
  171. package/dist/{types/meetings → meetings}/index.d.ts +45 -16
  172. package/dist/meetings/index.js +166 -74
  173. package/dist/meetings/index.js.map +1 -1
  174. package/dist/meetings/request.js +2 -3
  175. package/dist/meetings/request.js.map +1 -1
  176. package/dist/meetings/util.js +3 -10
  177. package/dist/meetings/util.js.map +1 -1
  178. package/dist/{types/member → member}/index.d.ts +1 -0
  179. package/dist/member/index.js +10 -3
  180. package/dist/member/index.js.map +1 -1
  181. package/dist/member/member.types.d.ts +11 -0
  182. package/dist/member/member.types.js +17 -0
  183. package/dist/member/member.types.js.map +1 -0
  184. package/dist/member/types.js +6 -8
  185. package/dist/member/types.js.map +1 -1
  186. package/dist/member/util.js +12 -2
  187. package/dist/member/util.js.map +1 -1
  188. package/dist/members/collection.js +1 -2
  189. package/dist/members/collection.js.map +1 -1
  190. package/dist/members/index.js +25 -8
  191. package/dist/members/index.js.map +1 -1
  192. package/dist/members/request.js +2 -3
  193. package/dist/members/request.js.map +1 -1
  194. package/dist/{types/members → members}/types.d.ts +1 -0
  195. package/dist/members/types.js +3 -4
  196. package/dist/members/types.js.map +1 -1
  197. package/dist/{types/members → members}/util.d.ts +6 -1
  198. package/dist/members/util.js +18 -8
  199. package/dist/members/util.js.map +1 -1
  200. package/dist/{types/metrics → metrics}/constants.d.ts +12 -0
  201. package/dist/metrics/constants.js +14 -3
  202. package/dist/metrics/constants.js.map +1 -1
  203. package/dist/metrics/index.js +3 -2
  204. package/dist/metrics/index.js.map +1 -1
  205. package/dist/multistream/mediaRequestManager.js +9 -11
  206. package/dist/multistream/mediaRequestManager.js.map +1 -1
  207. package/dist/multistream/receiveSlot.js +3 -5
  208. package/dist/multistream/receiveSlot.js.map +1 -1
  209. package/dist/multistream/receiveSlotManager.js +7 -9
  210. package/dist/multistream/receiveSlotManager.js.map +1 -1
  211. package/dist/multistream/remoteMedia.js +3 -5
  212. package/dist/multistream/remoteMedia.js.map +1 -1
  213. package/dist/multistream/remoteMediaGroup.js +7 -6
  214. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  215. package/dist/multistream/remoteMediaManager.js +28 -27
  216. package/dist/multistream/remoteMediaManager.js.map +1 -1
  217. package/dist/multistream/sendSlotManager.js +9 -6
  218. package/dist/multistream/sendSlotManager.js.map +1 -1
  219. package/dist/networkQualityMonitor/index.js +1 -2
  220. package/dist/networkQualityMonitor/index.js.map +1 -1
  221. package/dist/personal-meeting-room/index.js +2 -3
  222. package/dist/personal-meeting-room/index.js.map +1 -1
  223. package/dist/personal-meeting-room/request.js +2 -3
  224. package/dist/personal-meeting-room/request.js.map +1 -1
  225. package/dist/personal-meeting-room/util.js +1 -2
  226. package/dist/personal-meeting-room/util.js.map +1 -1
  227. package/dist/reachability/clusterReachability.d.ts +109 -0
  228. package/dist/reachability/clusterReachability.js +357 -0
  229. package/dist/reachability/clusterReachability.js.map +1 -0
  230. package/dist/reachability/index.d.ts +105 -0
  231. package/dist/reachability/index.js +279 -436
  232. package/dist/reachability/index.js.map +1 -1
  233. package/dist/reachability/request.js +14 -11
  234. package/dist/reachability/request.js.map +1 -1
  235. package/dist/reachability/util.d.ts +8 -0
  236. package/dist/reachability/util.js +29 -0
  237. package/dist/reachability/util.js.map +1 -0
  238. package/dist/reactions/constants.js +1 -2
  239. package/dist/reactions/constants.js.map +1 -1
  240. package/dist/reactions/reactions.js +2 -4
  241. package/dist/reactions/reactions.js.map +1 -1
  242. package/dist/reactions/reactions.type.js +6 -8
  243. package/dist/reactions/reactions.type.js.map +1 -1
  244. package/dist/{types/reconnection-manager → reconnection-manager}/index.d.ts +10 -0
  245. package/dist/reconnection-manager/index.js +129 -106
  246. package/dist/reconnection-manager/index.js.map +1 -1
  247. package/dist/recording-controller/enums.js +4 -5
  248. package/dist/recording-controller/enums.js.map +1 -1
  249. package/dist/recording-controller/index.js +43 -51
  250. package/dist/recording-controller/index.js.map +1 -1
  251. package/dist/recording-controller/util.js +1 -2
  252. package/dist/recording-controller/util.js.map +1 -1
  253. package/dist/{types/roap → roap}/index.d.ts +2 -1
  254. package/dist/roap/index.js +59 -28
  255. package/dist/roap/index.js.map +1 -1
  256. package/dist/roap/request.js +14 -22
  257. package/dist/roap/request.js.map +1 -1
  258. package/dist/{types/roap → roap}/turnDiscovery.d.ts +21 -4
  259. package/dist/roap/turnDiscovery.js +182 -89
  260. package/dist/roap/turnDiscovery.js.map +1 -1
  261. package/dist/rtcMetrics/constants.js +1 -2
  262. package/dist/rtcMetrics/constants.js.map +1 -1
  263. package/dist/{types/rtcMetrics → rtcMetrics}/index.d.ts +15 -1
  264. package/dist/rtcMetrics/index.js +72 -12
  265. package/dist/rtcMetrics/index.js.map +1 -1
  266. package/dist/statsAnalyzer/global.js +1 -2
  267. package/dist/statsAnalyzer/global.js.map +1 -1
  268. package/dist/{types/statsAnalyzer → statsAnalyzer}/index.d.ts +28 -11
  269. package/dist/statsAnalyzer/index.js +371 -318
  270. package/dist/statsAnalyzer/index.js.map +1 -1
  271. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  272. package/dist/statsAnalyzer/mqaUtil.js +295 -162
  273. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  274. package/dist/transcription/index.js +1 -2
  275. package/dist/transcription/index.js.map +1 -1
  276. package/dist/webinar/collection.d.ts +16 -0
  277. package/dist/webinar/collection.js +43 -0
  278. package/dist/webinar/collection.js.map +1 -0
  279. package/dist/webinar/index.d.ts +5 -0
  280. package/dist/webinar/index.js +68 -0
  281. package/dist/webinar/index.js.map +1 -0
  282. package/jest.config.js +3 -0
  283. package/package.json +44 -24
  284. package/process +1 -0
  285. package/src/common/errors/no-meeting-info.ts +24 -0
  286. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  287. package/src/common/errors/webex-errors.ts +19 -2
  288. package/src/common/logs/request.ts +5 -1
  289. package/src/config.ts +3 -5
  290. package/src/constants.ts +77 -8
  291. package/src/index.ts +4 -0
  292. package/src/interceptors/index.ts +3 -0
  293. package/src/interceptors/locusRetry.ts +67 -0
  294. package/src/locus-info/index.ts +19 -14
  295. package/src/locus-info/mediaSharesUtils.ts +16 -0
  296. package/src/locus-info/parser.ts +40 -21
  297. package/src/media/index.ts +8 -6
  298. package/src/media/properties.ts +17 -2
  299. package/src/mediaQualityMetrics/config.ts +103 -238
  300. package/src/meeting/in-meeting-actions.ts +8 -0
  301. package/src/meeting/index.ts +1664 -642
  302. package/src/meeting/request.ts +18 -0
  303. package/src/meeting/util.ts +102 -1
  304. package/src/meeting/voicea-meeting.ts +122 -0
  305. package/src/meeting-info/index.ts +47 -20
  306. package/src/meeting-info/meeting-info-v2.ts +32 -16
  307. package/src/meeting-info/util.ts +12 -9
  308. package/src/meeting-info/utilv2.ts +25 -15
  309. package/src/meetings/collection.ts +13 -0
  310. package/src/meetings/index.ts +112 -31
  311. package/src/meetings/util.ts +2 -8
  312. package/src/member/index.ts +9 -1
  313. package/src/member/member.types.ts +13 -0
  314. package/src/member/util.ts +14 -0
  315. package/src/members/index.ts +29 -2
  316. package/src/members/types.ts +1 -0
  317. package/src/members/util.ts +15 -1
  318. package/src/metrics/constants.ts +12 -0
  319. package/src/reachability/clusterReachability.ts +320 -0
  320. package/src/reachability/index.ts +221 -382
  321. package/src/reachability/request.ts +1 -1
  322. package/src/reachability/util.ts +24 -0
  323. package/src/reconnection-manager/index.ts +87 -83
  324. package/src/roap/index.ts +60 -24
  325. package/src/roap/request.ts +4 -17
  326. package/src/roap/turnDiscovery.ts +112 -39
  327. package/src/rtcMetrics/index.ts +71 -5
  328. package/src/statsAnalyzer/index.ts +430 -427
  329. package/src/statsAnalyzer/mqaUtil.ts +317 -168
  330. package/src/webinar/collection.ts +31 -0
  331. package/src/webinar/index.ts +62 -0
  332. package/test/integration/spec/journey.js +12 -12
  333. package/test/integration/spec/space-meeting.js +1 -1
  334. package/test/unit/spec/breakouts/breakout.ts +2 -1
  335. package/test/unit/spec/breakouts/index.ts +7 -4
  336. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  337. package/test/unit/spec/locus-info/index.js +88 -12
  338. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  339. package/test/unit/spec/locus-info/mediaSharesUtils.ts +10 -0
  340. package/test/unit/spec/locus-info/parser.js +54 -13
  341. package/test/unit/spec/locus-info/selfUtils.js +1 -1
  342. package/test/unit/spec/media/index.ts +25 -4
  343. package/test/unit/spec/media/properties.ts +2 -2
  344. package/test/unit/spec/meeting/in-meeting-actions.ts +4 -0
  345. package/test/unit/spec/meeting/index.js +4388 -1382
  346. package/test/unit/spec/meeting/request.js +63 -12
  347. package/test/unit/spec/meeting/utils.js +145 -10
  348. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  349. package/test/unit/spec/meeting-info/index.js +180 -61
  350. package/test/unit/spec/meeting-info/meetinginfov2.js +216 -68
  351. package/test/unit/spec/meetings/collection.js +12 -0
  352. package/test/unit/spec/meetings/index.js +674 -193
  353. package/test/unit/spec/meetings/utils.js +35 -12
  354. package/test/unit/spec/member/index.js +8 -7
  355. package/test/unit/spec/member/util.js +32 -0
  356. package/test/unit/spec/members/index.js +130 -17
  357. package/test/unit/spec/members/utils.js +26 -0
  358. package/test/unit/spec/metrics/index.js +1 -2
  359. package/test/unit/spec/multistream/mediaRequestManager.ts +1 -0
  360. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  361. package/test/unit/spec/reachability/index.ts +505 -135
  362. package/test/unit/spec/reachability/util.ts +40 -0
  363. package/test/unit/spec/reconnection-manager/index.js +74 -17
  364. package/test/unit/spec/recording-controller/index.js +0 -1
  365. package/test/unit/spec/roap/index.ts +181 -61
  366. package/test/unit/spec/roap/request.ts +27 -3
  367. package/test/unit/spec/roap/turnDiscovery.ts +363 -102
  368. package/test/unit/spec/rtcMetrics/index.ts +57 -3
  369. package/test/unit/spec/stats-analyzer/index.js +1225 -12
  370. package/test/unit/spec/webinar/collection.ts +13 -0
  371. package/test/unit/spec/webinar/index.ts +60 -0
  372. package/test/utils/webex-test-users.js +12 -4
  373. package/dist/types/mediaQualityMetrics/config.d.ts +0 -365
  374. package/dist/types/reachability/index.d.ts +0 -152
  375. package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -24
  376. /package/dist/{types/annotation → annotation}/annotation.types.d.ts +0 -0
  377. /package/dist/{types/annotation → annotation}/constants.d.ts +0 -0
  378. /package/dist/{types/annotation → annotation}/index.d.ts +0 -0
  379. /package/dist/{types/breakouts → breakouts}/breakout.d.ts +0 -0
  380. /package/dist/{types/breakouts → breakouts}/collection.d.ts +0 -0
  381. /package/dist/{types/breakouts → breakouts}/edit-lock-error.d.ts +0 -0
  382. /package/dist/{types/breakouts → breakouts}/events.d.ts +0 -0
  383. /package/dist/{types/breakouts → breakouts}/index.d.ts +0 -0
  384. /package/dist/{types/breakouts → breakouts}/request.d.ts +0 -0
  385. /package/dist/{types/breakouts → breakouts}/utils.d.ts +0 -0
  386. /package/dist/{types/common → common}/browser-detection.d.ts +0 -0
  387. /package/dist/{types/common → common}/collection.d.ts +0 -0
  388. /package/dist/{types/common → common}/config.d.ts +0 -0
  389. /package/dist/{types/common → common}/errors/captcha-error.d.ts +0 -0
  390. /package/dist/{types/common → common}/errors/intent-to-join.d.ts +0 -0
  391. /package/dist/{types/common → common}/errors/join-meeting.d.ts +0 -0
  392. /package/dist/{types/common → common}/errors/media.d.ts +0 -0
  393. /package/dist/{types/common → common}/errors/parameter.d.ts +0 -0
  394. /package/dist/{types/common → common}/errors/password-error.d.ts +0 -0
  395. /package/dist/{types/common → common}/errors/permission.d.ts +0 -0
  396. /package/dist/{types/common → common}/errors/reconnection-in-progress.d.ts +0 -0
  397. /package/dist/{types/common → common}/errors/reconnection.d.ts +0 -0
  398. /package/dist/{types/common → common}/errors/stats.d.ts +0 -0
  399. /package/dist/{types/common → common}/errors/webex-meetings-error.d.ts +0 -0
  400. /package/dist/{types/common → common}/events/events-scope.d.ts +0 -0
  401. /package/dist/{types/common → common}/events/events.d.ts +0 -0
  402. /package/dist/{types/common → common}/events/trigger-proxy.d.ts +0 -0
  403. /package/dist/{types/common → common}/events/util.d.ts +0 -0
  404. /package/dist/{types/common → common}/logs/logger-config.d.ts +0 -0
  405. /package/dist/{types/common → common}/logs/logger-proxy.d.ts +0 -0
  406. /package/dist/{types/common → common}/queue.d.ts +0 -0
  407. /package/dist/{types/controls-options-manager → controls-options-manager}/constants.d.ts +0 -0
  408. /package/dist/{types/controls-options-manager → controls-options-manager}/enums.d.ts +0 -0
  409. /package/dist/{types/controls-options-manager → controls-options-manager}/index.d.ts +0 -0
  410. /package/dist/{types/controls-options-manager → controls-options-manager}/types.d.ts +0 -0
  411. /package/dist/{types/controls-options-manager → controls-options-manager}/util.d.ts +0 -0
  412. /package/dist/{types/index.d.ts → index.d.ts} +0 -0
  413. /package/dist/{types/interpretation → interpretation}/collection.d.ts +0 -0
  414. /package/dist/{types/interpretation → interpretation}/index.d.ts +0 -0
  415. /package/dist/{types/interpretation → interpretation}/siLanguage.d.ts +0 -0
  416. /package/dist/{types/locus-info → locus-info}/controlsUtils.d.ts +0 -0
  417. /package/dist/{types/locus-info → locus-info}/embeddedAppsUtils.d.ts +0 -0
  418. /package/dist/{types/locus-info → locus-info}/fullState.d.ts +0 -0
  419. /package/dist/{types/locus-info → locus-info}/hostUtils.d.ts +0 -0
  420. /package/dist/{types/locus-info → locus-info}/infoUtils.d.ts +0 -0
  421. /package/dist/{types/locus-info → locus-info}/mediaSharesUtils.d.ts +0 -0
  422. /package/dist/{types/locus-info → locus-info}/selfUtils.d.ts +0 -0
  423. /package/dist/{types/media → media}/index.d.ts +0 -0
  424. /package/dist/{types/media → media}/properties.d.ts +0 -0
  425. /package/dist/{types/media → media}/util.d.ts +0 -0
  426. /package/dist/{types/meeting → meeting}/locusMediaRequest.d.ts +0 -0
  427. /package/dist/{types/meeting → meeting}/muteState.d.ts +0 -0
  428. /package/dist/{types/meeting → meeting}/request.type.d.ts +0 -0
  429. /package/dist/{types/meeting → meeting}/state.d.ts +0 -0
  430. /package/dist/{types/meeting-info → meeting-info}/collection.d.ts +0 -0
  431. /package/dist/{types/meeting-info → meeting-info}/request.d.ts +0 -0
  432. /package/dist/{types/meeting-info → meeting-info}/util.d.ts +0 -0
  433. /package/dist/{types/meeting-info → meeting-info}/utilv2.d.ts +0 -0
  434. /package/dist/{types/meetings → meetings}/meetings.types.d.ts +0 -0
  435. /package/dist/{types/meetings → meetings}/request.d.ts +0 -0
  436. /package/dist/{types/meetings → meetings}/util.d.ts +0 -0
  437. /package/dist/{types/member → member}/types.d.ts +0 -0
  438. /package/dist/{types/member → member}/util.d.ts +0 -0
  439. /package/dist/{types/members → members}/collection.d.ts +0 -0
  440. /package/dist/{types/members → members}/index.d.ts +0 -0
  441. /package/dist/{types/members → members}/request.d.ts +0 -0
  442. /package/dist/{types/metrics → metrics}/index.d.ts +0 -0
  443. /package/dist/{types/multistream → multistream}/mediaRequestManager.d.ts +0 -0
  444. /package/dist/{types/multistream → multistream}/receiveSlot.d.ts +0 -0
  445. /package/dist/{types/multistream → multistream}/receiveSlotManager.d.ts +0 -0
  446. /package/dist/{types/multistream → multistream}/remoteMedia.d.ts +0 -0
  447. /package/dist/{types/multistream → multistream}/remoteMediaGroup.d.ts +0 -0
  448. /package/dist/{types/multistream → multistream}/remoteMediaManager.d.ts +0 -0
  449. /package/dist/{types/multistream → multistream}/sendSlotManager.d.ts +0 -0
  450. /package/dist/{types/networkQualityMonitor → networkQualityMonitor}/index.d.ts +0 -0
  451. /package/dist/{types/personal-meeting-room → personal-meeting-room}/index.d.ts +0 -0
  452. /package/dist/{types/personal-meeting-room → personal-meeting-room}/request.d.ts +0 -0
  453. /package/dist/{types/personal-meeting-room → personal-meeting-room}/util.d.ts +0 -0
  454. /package/dist/{types/reachability → reachability}/request.d.ts +0 -0
  455. /package/dist/{types/reactions → reactions}/constants.d.ts +0 -0
  456. /package/dist/{types/reactions → reactions}/reactions.d.ts +0 -0
  457. /package/dist/{types/reactions → reactions}/reactions.type.d.ts +0 -0
  458. /package/dist/{types/recording-controller → recording-controller}/enums.d.ts +0 -0
  459. /package/dist/{types/recording-controller → recording-controller}/index.d.ts +0 -0
  460. /package/dist/{types/recording-controller → recording-controller}/util.d.ts +0 -0
  461. /package/dist/{types/roap → roap}/request.d.ts +0 -0
  462. /package/dist/{types/rtcMetrics → rtcMetrics}/constants.d.ts +0 -0
  463. /package/dist/{types/statsAnalyzer → statsAnalyzer}/global.d.ts +0 -0
  464. /package/dist/{types/transcription → transcription}/index.d.ts +0 -0
  465. /package/test/unit/spec/locus-info/{selfConstant.js → lib/selfConstant.js} +0 -0
@@ -0,0 +1,62 @@
1
+ /*!
2
+ * Copyright (c) 2015-2023 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+ import {WebexPlugin} from '@webex/webex-core';
5
+ import {MEETINGS} from '../constants';
6
+
7
+ import WebinarCollection from './collection';
8
+
9
+ /**
10
+ * @class Webinar
11
+ */
12
+ const Webinar = WebexPlugin.extend({
13
+ namespace: MEETINGS,
14
+ collections: {
15
+ webinar: WebinarCollection,
16
+ },
17
+
18
+ props: {
19
+ locusUrl: 'string', // appears current webinar's locus url
20
+ webcastUrl: 'string', // current webinar's webcast url
21
+ webinarAttendeesSearchingUrl: 'string', // current webinarAttendeesSearching url
22
+ canManageWebcast: 'boolean', // appears the ability to manage webcast
23
+ },
24
+
25
+ /**
26
+ * Update the current locus url of the webinar
27
+ * @param {string} locusUrl // locus url
28
+ * @returns {void}
29
+ */
30
+ locusUrlUpdate(locusUrl) {
31
+ this.set('locusUrl', locusUrl);
32
+ },
33
+
34
+ /**
35
+ * Update the current webcast url of the meeting
36
+ * @param {string} webcastUrl // webcast url
37
+ * @returns {void}
38
+ */
39
+ webcastUrlUpdate(webcastUrl) {
40
+ this.set('webcastUrl', webcastUrl);
41
+ },
42
+
43
+ /**
44
+ * Update the current webinarAttendeesSearching url of the meeting
45
+ * @param {string} webinarAttendeesSearchingUrl // webinarAttendeesSearching url
46
+ * @returns {void}
47
+ */
48
+ webinarAttendeesSearchingUrlUpdate(webinarAttendeesSearchingUrl) {
49
+ this.set('webinarAttendeesSearchingUrl', webinarAttendeesSearchingUrl);
50
+ },
51
+
52
+ /**
53
+ * Update whether self has capability to manage start/stop webcast (only host can manage it)
54
+ * @param {boolean} canManageWebcast
55
+ * @returns {void}
56
+ */
57
+ updateCanManageWebcast(canManageWebcast) {
58
+ this.set('canManageWebcast', canManageWebcast);
59
+ },
60
+ });
61
+
62
+ export default Webinar;
@@ -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
 
@@ -44,14 +44,14 @@ const localStreams = {
44
44
  },
45
45
  };
46
46
 
47
-
47
+ // Updated expectedPublished from a boolean value to an object containing the stream and status properties
48
48
  const waitForPublished = (meeting, expectedPublished, description) => {
49
49
  return testUtils.waitForEvents([{
50
50
  scope: meeting,
51
51
  event: EVENT_TRIGGERS.MEETING_STREAM_PUBLISH_STATE_CHANGED,
52
52
  match: (event) => {
53
53
  console.log(`${description} is now ${event.isPublished ? 'published': 'not published'}`);
54
- return (event.isPublished === expectedPublished);
54
+ return (event.isPublished === expectedPublished.status && event.stream.id === expectedPublished.stream.id) ;
55
55
  }
56
56
  }]);
57
57
  };
@@ -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);
@@ -498,7 +498,7 @@ skipInNode(describe)('plugin-meetings', () => {
498
498
 
499
499
  it('alice update Audio', async () => {
500
500
  const newMicrophoneStream = await createMicrophoneStream();
501
- const newStreamPublished = waitForPublished(alice.meeting, true, "Alice AUDIO: new microphone stream");
501
+ const newStreamPublished = waitForPublished(alice.meeting, {stream: newMicrophoneStream, status: true}, "Alice AUDIO: new microphone stream");
502
502
 
503
503
  await testUtils.delayedPromise(
504
504
  alice.meeting
@@ -521,7 +521,7 @@ skipInNode(describe)('plugin-meetings', () => {
521
521
 
522
522
  it('alice update video', async () => {
523
523
  const newCameraStream = await createCameraStream();
524
- const newStreamPublished = waitForPublished(alice.meeting, true, "Alice VIDEO: new camera stream");
524
+ const newStreamPublished = waitForPublished(alice.meeting, {stream: newCameraStream, status: true}, "Alice VIDEO: new camera stream");
525
525
 
526
526
  await testUtils.delayedPromise(
527
527
  alice.meeting
@@ -630,7 +630,7 @@ skipInNode(describe)('plugin-meetings', () => {
630
630
  );
631
631
  });
632
632
 
633
- const screenShareVideoPublished = waitForPublished(alice.meeting, true, "alice's screen share video stream");
633
+ const screenShareVideoPublished = waitForPublished(alice.meeting, {stream: localStreams.alice.screenShare.video, status: true}, "alice's screen share video stream");
634
634
 
635
635
  await testUtils.delayedPromise(alice.meeting.publishStreams({screenShare: {video: localStreams.alice.screenShare.video}}));
636
636
 
@@ -666,8 +666,8 @@ skipInNode(describe)('plugin-meetings', () => {
666
666
  JSON.stringify(response, testUtils.getCircularReplacer())
667
667
  );
668
668
  });
669
- const aliceScreenShareVideoUnpublished = waitForPublished(alice.meeting, false, "alice's screen share video stream");
670
- const bobScreenShareVideoPublished = waitForPublished(bob.meeting, true, "bob's screen share video stream");
669
+ const aliceScreenShareVideoUnpublished = waitForPublished(alice.meeting, {stream: localStreams.alice.screenShare.video, status: false}, "alice's screen share video stream");
670
+ const bobScreenShareVideoPublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: true}, "bob's screen share video stream");
671
671
 
672
672
  await testUtils.delayedPromise(bob.meeting.publishStreams({screenShare: {video: localStreams.bob.screenShare.video}}));
673
673
 
@@ -689,7 +689,7 @@ skipInNode(describe)('plugin-meetings', () => {
689
689
  });
690
690
 
691
691
  it('bob stops sharing', async () => {
692
- const screenShareVideoUnpublished = waitForPublished(bob.meeting, false, "bob's screen share video stream");
692
+ const screenShareVideoUnpublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: false}, "bob's screen share video stream");
693
693
  const stoppedSharingLocal = testUtils.waitForEvents([{scope: bob.meeting, event: 'meeting:stoppedSharingLocal'}]);
694
694
  const stoppedSharingRemote = testUtils.waitForEvents([{scope: alice.meeting, event: 'meeting:stoppedSharingRemote'}]);
695
695
 
@@ -826,7 +826,7 @@ skipInNode(describe)('plugin-meetings', () => {
826
826
  JSON.stringify(response, testUtils.getCircularReplacer())
827
827
  );
828
828
  });
829
- const bobScreenShareVideoPublished = waitForPublished(bob.meeting, true, "bob's screen share video stream");
829
+ const bobScreenShareVideoPublished = waitForPublished(bob.meeting, {stream: localStreams.bob.screenShare.video, status: true}, "bob's screen share video stream");
830
830
 
831
831
  await testUtils.delayedPromise(bob.meeting.publishStreams({screenShare: {video: localStreams.bob.screenShare.video}}));
832
832
 
@@ -871,7 +871,7 @@ skipInNode(describe)('plugin-meetings', () => {
871
871
  assert.equal(bob.meeting.shareStatus, 'whiteboard_share_active');
872
872
  }));
873
873
 
874
- it('alice adds chris as guest to 1:1 meeting', () =>
874
+ it('alice adds chris as guest to 1:1 meeting', async() =>
875
875
  Promise.all([
876
876
  testUtils.delayedPromise(alice.meeting.invite({emailAddress: chris.emailAddress})),
877
877
  testUtils.waitForEvents([
@@ -34,7 +34,7 @@ skipInNode(describe)('plugin-meetings', () => {
34
34
  describe('space-meeting', () => {
35
35
  let space = null;
36
36
 
37
- before(() =>
37
+ before(async () =>
38
38
  webexTestUsers
39
39
  .generateTestUsers({
40
40
  count: 4,
@@ -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
  });
@@ -0,0 +1,131 @@
1
+ /*!
2
+ * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.
3
+ */
4
+
5
+ /* eslint-disable camelcase */
6
+ import {assert} from '@webex/test-helper-chai';
7
+ import { expect } from "@webex/test-helper-chai";
8
+ import MockWebex from '@webex/test-helper-mock-webex';
9
+ import {LocusRetryStatusInterceptor} from "@webex/plugin-meetings/src/interceptors";
10
+ import {WebexHttpError} from '@webex/webex-core';
11
+ import Meetings from '@webex/plugin-meetings';
12
+ import sinon from 'sinon';
13
+
14
+ describe('plugin-meetings', () => {
15
+ describe('Interceptors', () => {
16
+ describe('LocusRetryStatusInterceptor', () => {
17
+ let interceptor, webex;
18
+ beforeEach(() => {
19
+ webex = new MockWebex({
20
+ children: {
21
+ meeting: Meetings,
22
+ },
23
+ });
24
+ interceptor = Reflect.apply(LocusRetryStatusInterceptor.create, {
25
+ sessionId: 'mock-webex_uuid',
26
+ }, []);
27
+ });
28
+ describe('#onResponseError', () => {
29
+ const options = {
30
+ method: 'POST',
31
+ headers: {
32
+ trackingid: 'test',
33
+ 'retry-after': 1000,
34
+ },
35
+ uri: `https://locus-test.webex.com/locus/api/v1/loci/call`,
36
+ body: 'foo'
37
+ };
38
+ const reason1 = new WebexHttpError.MethodNotAllowed({
39
+ statusCode: 403,
40
+ options: {
41
+ headers: {
42
+ trackingid: 'test',
43
+ 'retry-after': 1000,
44
+ },
45
+ uri: `https://locus-test.webex.com/locus/api/v1/loci/call`,
46
+ },
47
+ body: {
48
+ error: 'POST not allwed',
49
+ },
50
+ });
51
+ const reason2 = new WebexHttpError.MethodNotAllowed({
52
+ statusCode: 503,
53
+ options: {
54
+ headers: {
55
+ trackingid: 'test',
56
+ 'retry-after': 1000,
57
+ },
58
+ uri: `https://locus-test.webex.com/locus/api/v1/loci/call`,
59
+ },
60
+ body: {
61
+ error: 'Service Unavailable',
62
+ },
63
+ });
64
+
65
+ it('rejects when not locus service unavailable error', () => {
66
+ return assert.isRejected(interceptor.onResponseError(options, reason1));
67
+ });
68
+
69
+ it('calls handleRetryRequestLocusServiceError with correct retry time when locus service unavailable error', () => {
70
+ interceptor.webex.request = sinon.stub().returns(Promise.resolve());
71
+ const handleRetryStub = sinon.stub(interceptor, 'handleRetryRequestLocusServiceError');
72
+ handleRetryStub.returns(Promise.resolve());
73
+
74
+ return interceptor.onResponseError(options, reason2).then(() => {
75
+ expect(handleRetryStub.calledWith(options, 1000)).to.be.true;
76
+
77
+ });
78
+ });
79
+ });
80
+
81
+ describe('#handleRetryRequestLocusServiceError', () => {
82
+ const options = {
83
+ method: 'POST',
84
+ headers: {
85
+ trackingid: 'test',
86
+ },
87
+ uri: `https://locus-test.webex.com/locus/api/v1/loci/call`,
88
+ body: 'foo'
89
+ };
90
+ const retryAfterTime = 2000;
91
+
92
+ it('returns the correct resolved value when the request is successful', () => {
93
+ const mockResponse = 'mock response'
94
+ interceptor.webex.request = sinon.stub().returns(Promise.resolve(mockResponse));
95
+
96
+ return interceptor.handleRetryRequestLocusServiceError(options, retryAfterTime)
97
+ .then((response) => {
98
+ expect(response).to.equal(mockResponse);
99
+ });
100
+ });
101
+
102
+ it('rejects the promise when the request is unsuccessful', () => {
103
+ const rejectionReason = 'Service Unavaialble after retry';
104
+
105
+ interceptor.webex.request = sinon.stub().returns(Promise.reject(rejectionReason));
106
+
107
+ return interceptor.handleRetryRequestLocusServiceError(options, retryAfterTime)
108
+ .catch((error) => {
109
+ expect(error).to.equal(rejectionReason);
110
+ });
111
+ });
112
+
113
+ it('retries the request after the specified time', () => {
114
+ let clock;
115
+ clock = sinon.useFakeTimers();
116
+ const mockResponse = 'mock response'
117
+
118
+ interceptor.webex.request = sinon.stub().returns(Promise.resolve(mockResponse));
119
+ const promise = interceptor.handleRetryRequestLocusServiceError(options, retryAfterTime);
120
+
121
+ clock.tick(retryAfterTime);
122
+
123
+ return promise.then(() => {
124
+ expect(interceptor.webex.request.calledOnce).to.be.true;
125
+ });
126
+ });
127
+ });
128
+ });
129
+ });
130
+ });
131
+
@@ -24,7 +24,7 @@ import {
24
24
  _MEETING_,
25
25
  } from '../../../../src/constants';
26
26
 
27
- import {self, selfWithInactivity} from './selfConstant';
27
+ import {self, selfWithInactivity} from './lib/selfConstant';
28
28
 
29
29
  describe('plugin-meetings', () => {
30
30
  describe('LocusInfo index', () => {
@@ -1377,7 +1377,7 @@ describe('plugin-meetings', () => {
1377
1377
  );
1378
1378
  });
1379
1379
 
1380
- const checkMeetingInfoUpdatedCalled = (expected) => {
1380
+ const checkMeetingInfoUpdatedCalled = (expected, payload) => {
1381
1381
  const expectedArgs = [
1382
1382
  locusInfo.emitScoped,
1383
1383
  {
@@ -1385,6 +1385,7 @@ describe('plugin-meetings', () => {
1385
1385
  function: 'updateMeetingInfo',
1386
1386
  },
1387
1387
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1388
+ payload
1388
1389
  ];
1389
1390
 
1390
1391
  if (expected) {
@@ -1395,7 +1396,7 @@ describe('plugin-meetings', () => {
1395
1396
  locusInfo.emitScoped.resetHistory();
1396
1397
  };
1397
1398
 
1398
- const checkMeetingInfoUpdatedCalledForRoles = (expected) => {
1399
+ const checkMeetingInfoUpdatedCalledForRoles = (expected, payload) => {
1399
1400
  const expectedArgs = [
1400
1401
  locusInfo.emitScoped,
1401
1402
  {
@@ -1403,6 +1404,7 @@ describe('plugin-meetings', () => {
1403
1404
  function: 'updateMeetingInfo',
1404
1405
  },
1405
1406
  LOCUSINFO.EVENTS.MEETING_INFO_UPDATED,
1407
+ payload
1406
1408
  ];
1407
1409
 
1408
1410
  if (expected) {
@@ -1447,7 +1449,7 @@ describe('plugin-meetings', () => {
1447
1449
 
1448
1450
  // since it was initially undefined, this should trigger the event
1449
1451
 
1450
- checkMeetingInfoUpdatedCalled(true);
1452
+ checkMeetingInfoUpdatedCalled(true, {isInitializing: false});
1451
1453
 
1452
1454
  const newInfo = cloneDeep(meetingInfo);
1453
1455
 
@@ -1472,7 +1474,7 @@ describe('plugin-meetings', () => {
1472
1474
  };
1473
1475
  locusInfo.updateMeetingInfo(newInfo, self);
1474
1476
 
1475
- checkMeetingInfoUpdatedCalled(true);
1477
+ checkMeetingInfoUpdatedCalled(true, {isInitializing: false});
1476
1478
 
1477
1479
  // update it with the same info
1478
1480
  expectedMeeting = {
@@ -1494,7 +1496,7 @@ describe('plugin-meetings', () => {
1494
1496
  locusInfo.updateMeetingInfo(newInfo, self);
1495
1497
 
1496
1498
  // since the info is the same it should not call trigger the event
1497
- checkMeetingInfoUpdatedCalled(false);
1499
+ checkMeetingInfoUpdatedCalled(false, {isInitializing: false});
1498
1500
 
1499
1501
  // update it with the same info, but roles changed
1500
1502
  const updateSelf = cloneDeep(self);
@@ -1525,7 +1527,7 @@ describe('plugin-meetings', () => {
1525
1527
  };
1526
1528
  locusInfo.updateMeetingInfo(newInfo, updateSelf);
1527
1529
  // since the info is the same but roles changed, it should call trigger the event
1528
- checkMeetingInfoUpdatedCalledForRoles(true);
1530
+ checkMeetingInfoUpdatedCalledForRoles(true, {isInitializing: false});
1529
1531
  });
1530
1532
 
1531
1533
  it('gets roles from self if available', () => {
@@ -1546,12 +1548,17 @@ describe('plugin-meetings', () => {
1546
1548
  roles: ['MODERATOR', 'COHOST'],
1547
1549
  };
1548
1550
 
1551
+ sinon.stub(locusInfo, 'emitScoped');
1552
+
1549
1553
  const parsedLocusInfo = cloneDeep(locusInfo.parsedLocus.info);
1550
1554
 
1551
1555
  locusInfo.updateMeetingInfo(initialInfo);
1552
1556
  assert.calledWith(isJoinedSpy, locusInfo.parsedLocus.self);
1553
1557
  assert.neverCalledWith(getRolesSpy, self);
1554
1558
  assert.calledWith(getInfosSpy, parsedLocusInfo, initialInfo, ['MODERATOR', 'COHOST']);
1559
+
1560
+ // since self is not passed to updateMeetingInfo, MEETING_INFO_UPDATED should be triggered with isIntializing: true
1561
+ checkMeetingInfoUpdatedCalledForRoles(true, {isInitializing: true});
1555
1562
  });
1556
1563
  });
1557
1564
 
@@ -1884,6 +1891,27 @@ describe('plugin-meetings', () => {
1884
1891
  });
1885
1892
  });
1886
1893
 
1894
+ it('applyLocusDeltaData handles LOCUS_URL_CHANGED action correctly', () => {
1895
+ const {LOCUS_URL_CHANGED} = LocusDeltaParser.loci;
1896
+ const fakeDeltaLocus = {id: 'fake delta locus'};
1897
+ const meeting = {
1898
+ meetingRequest: {
1899
+ getLocusDTO: sandbox.stub().resolves({body: fakeDeltaLocus}),
1900
+ },
1901
+ locusInfo: {
1902
+ handleLocusDelta: sandbox.stub(),
1903
+ },
1904
+ locusUrl: 'current locus url',
1905
+ };
1906
+
1907
+ locusInfo.locusParser.workingCopy = {
1908
+ syncUrl: 'current sync url',
1909
+ };
1910
+
1911
+ locusInfo.applyLocusDeltaData(LOCUS_URL_CHANGED, fakeLocus, meeting);
1912
+ assert.calledOnceWithExactly(meeting.meetingRequest.getLocusDTO, {url: 'current sync url'});
1913
+ });
1914
+
1887
1915
  describe('edge cases for sync failing', () => {
1888
1916
  const {DESYNC} = LocusDeltaParser.loci;
1889
1917
  const fakeFullLocusDto = {id: 'fake full locus dto'};
@@ -2037,7 +2065,7 @@ describe('plugin-meetings', () => {
2037
2065
  });
2038
2066
 
2039
2067
  describe('#getTheLocusToUpdate', () => {
2040
- it('return the cache locus if return to main session', () => {
2068
+ it('return the cache locus if return to main session and do not clear main session cache', () => {
2041
2069
  locusInfo.mainSessionLocusCache = {url: 'url'};
2042
2070
  locusInfo.controls = {
2043
2071
  breakout: {
@@ -2053,9 +2081,13 @@ describe('plugin-meetings', () => {
2053
2081
  };
2054
2082
 
2055
2083
  assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), {url: 'url'});
2084
+
2085
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2086
+ locusInfo.getTheLocusToUpdate(newLocus);
2087
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2056
2088
  });
2057
2089
 
2058
- it('return the new locus if return to main session but no cache', () => {
2090
+ it('return the new locus if return to main session but no cache and do not clear main session cache', () => {
2059
2091
  locusInfo.mainSessionLocusCache = null;
2060
2092
  locusInfo.controls = {
2061
2093
  breakout: {
@@ -2071,10 +2103,22 @@ describe('plugin-meetings', () => {
2071
2103
  };
2072
2104
 
2073
2105
  assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), newLocus);
2106
+
2107
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2108
+ locusInfo.getTheLocusToUpdate(newLocus);
2109
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2074
2110
  });
2075
2111
 
2076
- it('return the new locus if not return to main session', () => {
2077
- locusInfo.mainSessionLocusCache = {url: 'url'};
2112
+ it('return the new locus if not return to main session and clear main session cache', () => {
2113
+ locusInfo.mainSessionLocusCache = {
2114
+ controls: {
2115
+ breakout: {
2116
+ sessionType: 'MAIN',
2117
+ },
2118
+ },
2119
+ self: {removed: true}
2120
+ };
2121
+ locusInfo.fullState = {state: 'ACTIVE'}
2078
2122
  locusInfo.controls = {
2079
2123
  breakout: {
2080
2124
  sessionType: 'MAIN',
@@ -2088,7 +2132,39 @@ describe('plugin-meetings', () => {
2088
2132
  },
2089
2133
  };
2090
2134
 
2091
- assert.deepEqual(locusInfo.getTheLocusToUpdate(newLocus), newLocus);
2135
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2136
+ const result = locusInfo.getTheLocusToUpdate(newLocus);
2137
+ assert.calledOnce(locusInfo.clearMainSessionLocusCache)
2138
+
2139
+ assert.deepEqual(result, newLocus);
2140
+ });
2141
+
2142
+ it('do not clear main session cache when "mainSessionLocusCache?.self?.removed" is not true', () => {
2143
+ locusInfo.mainSessionLocusCache = {
2144
+ controls: {
2145
+ breakout: {
2146
+ sessionType: 'MAIN',
2147
+ },
2148
+ },
2149
+ self: {removed: undefined}
2150
+ };
2151
+ locusInfo.fullState = {state: 'ACTIVE'}
2152
+ locusInfo.controls = {
2153
+ breakout: {
2154
+ sessionType: 'MAIN',
2155
+ },
2156
+ };
2157
+ const newLocus = {
2158
+ controls: {
2159
+ breakout: {
2160
+ sessionType: 'BREAKOUT',
2161
+ },
2162
+ },
2163
+ };
2164
+
2165
+ locusInfo.clearMainSessionLocusCache = sinon.stub();
2166
+ locusInfo.getTheLocusToUpdate(newLocus);
2167
+ assert.notCalled(locusInfo.clearMainSessionLocusCache)
2092
2168
  });
2093
2169
  });
2094
2170
 
@@ -517,6 +517,22 @@
517
517
  "new": "seq4g",
518
518
  "result": "DESYNC",
519
519
  "description": "New seq is greater than current, but both current and new base have some unique entries."
520
+ },
521
+ "updt25": {
522
+ "current": "seq4",
523
+ "newbase": "seq5c",
524
+ "new": "seq5b",
525
+ "result": "WAIT",
526
+ "description": "Both new seq and new base are newer than current but are not equal"
527
+ },
528
+ "updt26": {
529
+ "current": "seq4",
530
+ "currentUrl": "locus url 1",
531
+ "newbase": "seq5c",
532
+ "new": "seq5b",
533
+ "newUrl": "locus url 2",
534
+ "result": "LOCUS_URL_CHANGED",
535
+ "description": "Locus url changes in incoming"
520
536
  }
521
537
  }
522
538
  }
@@ -20,3 +20,13 @@ describe('getContentUrl', () => {
20
20
  });
21
21
  });
22
22
 
23
+ describe('getContentBeneficiaryDeviceUrl', () => {
24
+ it('getContentBeneficiaryDeviceUrl return correct deviceUrl value', () => {
25
+ const mockContentBeneficiaryDeviceUrl = "https://wdm-a.wbx2.com/wdm/api/v1/devices/e9ffd8a1-1fae-42d1-afbe-013e951f93ab"
26
+ const stub = Sinon.stub(MediaSharesUtils, 'extractContentFloor').returns({ beneficiary: {deviceUrl : mockContentBeneficiaryDeviceUrl}});
27
+ const contentBeneficiaryDeviceUrl = MediaSharesUtils.getContentBeneficiaryDeviceUrl();
28
+ assert.equal(contentBeneficiaryDeviceUrl, mockContentBeneficiaryDeviceUrl);
29
+ stub.restore();
30
+ });
31
+ });
32
+