@webex/plugin-meetings 2.59.8 → 2.60.0-next.2

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 (528) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.js +7 -0
  3. package/dist/annotation/annotation.types.js.map +1 -0
  4. package/dist/annotation/constants.js +41 -0
  5. package/dist/annotation/constants.js.map +1 -0
  6. package/dist/annotation/index.js +357 -0
  7. package/dist/annotation/index.js.map +1 -0
  8. package/dist/breakouts/breakout.js +215 -0
  9. package/dist/breakouts/breakout.js.map +1 -0
  10. package/dist/breakouts/collection.js +22 -0
  11. package/dist/breakouts/collection.js.map +1 -0
  12. package/dist/breakouts/edit-lock-error.js +51 -0
  13. package/dist/breakouts/edit-lock-error.js.map +1 -0
  14. package/dist/breakouts/events.js +44 -0
  15. package/dist/breakouts/events.js.map +1 -0
  16. package/dist/breakouts/index.js +1047 -0
  17. package/dist/breakouts/index.js.map +1 -0
  18. package/dist/breakouts/request.js +77 -0
  19. package/dist/breakouts/request.js.map +1 -0
  20. package/dist/breakouts/utils.js +64 -0
  21. package/dist/breakouts/utils.js.map +1 -0
  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.js +50 -0
  37. package/dist/common/errors/no-meeting-info.js.map +1 -0
  38. package/dist/common/errors/parameter.js +3 -4
  39. package/dist/common/errors/parameter.js.map +1 -1
  40. package/dist/common/errors/password-error.js +1 -2
  41. package/dist/common/errors/password-error.js.map +1 -1
  42. package/dist/common/errors/permission.js +1 -2
  43. package/dist/common/errors/permission.js.map +1 -1
  44. package/dist/common/errors/reclaim-host-role-errors.js +154 -0
  45. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  46. package/dist/common/errors/reconnection-in-progress.js +1 -2
  47. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  48. package/dist/common/errors/reconnection.js +1 -2
  49. package/dist/common/errors/reconnection.js.map +1 -1
  50. package/dist/common/errors/stats.js +1 -2
  51. package/dist/common/errors/stats.js.map +1 -1
  52. package/dist/common/errors/webex-errors.js +48 -28
  53. package/dist/common/errors/webex-errors.js.map +1 -1
  54. package/dist/common/errors/webex-meetings-error.js +1 -2
  55. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  56. package/dist/common/events/events-scope.js +1 -2
  57. package/dist/common/events/events-scope.js.map +1 -1
  58. package/dist/common/events/events.js +1 -2
  59. package/dist/common/events/events.js.map +1 -1
  60. package/dist/common/events/trigger-proxy.js +1 -2
  61. package/dist/common/events/trigger-proxy.js.map +1 -1
  62. package/dist/common/events/util.js +1 -2
  63. package/dist/common/events/util.js.map +1 -1
  64. package/dist/common/logs/logger-config.js +1 -2
  65. package/dist/common/logs/logger-config.js.map +1 -1
  66. package/dist/common/logs/logger-proxy.js +2 -3
  67. package/dist/common/logs/logger-proxy.js.map +1 -1
  68. package/dist/common/logs/request.js +8 -5
  69. package/dist/common/logs/request.js.map +1 -1
  70. package/dist/common/queue.js +22 -9
  71. package/dist/common/queue.js.map +1 -1
  72. package/dist/config.js +8 -11
  73. package/dist/config.js.map +1 -1
  74. package/dist/constants.js +437 -435
  75. package/dist/constants.js.map +1 -1
  76. package/dist/controls-options-manager/constants.js +3 -6
  77. package/dist/controls-options-manager/constants.js.map +1 -1
  78. package/dist/controls-options-manager/enums.js +15 -6
  79. package/dist/controls-options-manager/enums.js.map +1 -1
  80. package/dist/controls-options-manager/index.js +127 -38
  81. package/dist/controls-options-manager/index.js.map +1 -1
  82. package/dist/controls-options-manager/types.js +7 -0
  83. package/dist/controls-options-manager/types.js.map +1 -0
  84. package/dist/controls-options-manager/util.js +309 -19
  85. package/dist/controls-options-manager/util.js.map +1 -1
  86. package/dist/index.js +116 -4
  87. package/dist/index.js.map +1 -1
  88. package/dist/interpretation/collection.js +22 -0
  89. package/dist/interpretation/collection.js.map +1 -0
  90. package/dist/interpretation/index.js +365 -0
  91. package/dist/interpretation/index.js.map +1 -0
  92. package/dist/interpretation/siLanguage.js +24 -0
  93. package/dist/interpretation/siLanguage.js.map +1 -0
  94. package/dist/locus-info/controlsUtils.js +100 -11
  95. package/dist/locus-info/controlsUtils.js.map +1 -1
  96. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  97. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  98. package/dist/locus-info/fullState.js +1 -2
  99. package/dist/locus-info/fullState.js.map +1 -1
  100. package/dist/locus-info/hostUtils.js +1 -2
  101. package/dist/locus-info/hostUtils.js.map +1 -1
  102. package/dist/locus-info/index.js +425 -84
  103. package/dist/locus-info/index.js.map +1 -1
  104. package/dist/locus-info/infoUtils.js +13 -5
  105. package/dist/locus-info/infoUtils.js.map +1 -1
  106. package/dist/locus-info/mediaSharesUtils.js +58 -3
  107. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  108. package/dist/locus-info/parser.js +253 -80
  109. package/dist/locus-info/parser.js.map +1 -1
  110. package/dist/locus-info/selfUtils.js +97 -13
  111. package/dist/locus-info/selfUtils.js.map +1 -1
  112. package/dist/media/index.js +106 -319
  113. package/dist/media/index.js.map +1 -1
  114. package/dist/media/properties.js +96 -153
  115. package/dist/media/properties.js.map +1 -1
  116. package/dist/media/util.js +1 -22
  117. package/dist/media/util.js.map +1 -1
  118. package/dist/mediaQualityMetrics/config.js +498 -493
  119. package/dist/mediaQualityMetrics/config.js.map +1 -1
  120. package/dist/meeting/in-meeting-actions.js +92 -3
  121. package/dist/meeting/in-meeting-actions.js.map +1 -1
  122. package/dist/meeting/index.js +4628 -2971
  123. package/dist/meeting/index.js.map +1 -1
  124. package/dist/meeting/locusMediaRequest.js +291 -0
  125. package/dist/meeting/locusMediaRequest.js.map +1 -0
  126. package/dist/meeting/muteState.js +224 -133
  127. package/dist/meeting/muteState.js.map +1 -1
  128. package/dist/meeting/request.js +297 -199
  129. package/dist/meeting/request.js.map +1 -1
  130. package/dist/meeting/request.type.js +7 -0
  131. package/dist/meeting/request.type.js.map +1 -0
  132. package/dist/meeting/state.js +1 -2
  133. package/dist/meeting/state.js.map +1 -1
  134. package/dist/meeting/util.js +605 -435
  135. package/dist/meeting/util.js.map +1 -1
  136. package/dist/meeting-info/collection.js +3 -4
  137. package/dist/meeting-info/collection.js.map +1 -1
  138. package/dist/meeting-info/index.js +74 -7
  139. package/dist/meeting-info/index.js.map +1 -1
  140. package/dist/meeting-info/meeting-info-v2.js +200 -63
  141. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  142. package/dist/meeting-info/request.js +1 -2
  143. package/dist/meeting-info/request.js.map +1 -1
  144. package/dist/meeting-info/util.js +2 -3
  145. package/dist/meeting-info/util.js.map +1 -1
  146. package/dist/meeting-info/utilv2.js +39 -41
  147. package/dist/meeting-info/utilv2.js.map +1 -1
  148. package/dist/meetings/collection.js +42 -4
  149. package/dist/meetings/collection.js.map +1 -1
  150. package/dist/meetings/index.js +477 -123
  151. package/dist/meetings/index.js.map +1 -1
  152. package/dist/meetings/meetings.types.js +7 -0
  153. package/dist/meetings/meetings.types.js.map +1 -0
  154. package/dist/meetings/request.js +4 -3
  155. package/dist/meetings/request.js.map +1 -1
  156. package/dist/meetings/util.js +107 -6
  157. package/dist/meetings/util.js.map +1 -1
  158. package/dist/member/index.js +54 -2
  159. package/dist/member/index.js.map +1 -1
  160. package/dist/member/member.types.js +3 -4
  161. package/dist/member/member.types.js.map +1 -1
  162. package/dist/member/types.js +23 -0
  163. package/dist/member/types.js.map +1 -0
  164. package/dist/member/util.js +131 -29
  165. package/dist/member/util.js.map +1 -1
  166. package/dist/members/collection.js +11 -2
  167. package/dist/members/collection.js.map +1 -1
  168. package/dist/members/index.js +174 -10
  169. package/dist/members/index.js.map +1 -1
  170. package/dist/members/request.js +108 -41
  171. package/dist/members/request.js.map +1 -1
  172. package/dist/members/types.js +14 -0
  173. package/dist/members/types.js.map +1 -0
  174. package/dist/members/util.js +327 -234
  175. package/dist/members/util.js.map +1 -1
  176. package/dist/metrics/constants.js +15 -9
  177. package/dist/metrics/constants.js.map +1 -1
  178. package/dist/metrics/index.js +4 -452
  179. package/dist/metrics/index.js.map +1 -1
  180. package/dist/multistream/mediaRequestManager.js +344 -0
  181. package/dist/multistream/mediaRequestManager.js.map +1 -0
  182. package/dist/multistream/receiveSlot.js +200 -0
  183. package/dist/multistream/receiveSlot.js.map +1 -0
  184. package/dist/multistream/receiveSlotManager.js +174 -0
  185. package/dist/multistream/receiveSlotManager.js.map +1 -0
  186. package/dist/multistream/remoteMedia.js +268 -0
  187. package/dist/multistream/remoteMedia.js.map +1 -0
  188. package/dist/multistream/remoteMediaGroup.js +267 -0
  189. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  190. package/dist/multistream/remoteMediaManager.js +1211 -0
  191. package/dist/multistream/remoteMediaManager.js.map +1 -0
  192. package/dist/multistream/sendSlotManager.js +236 -0
  193. package/dist/multistream/sendSlotManager.js.map +1 -0
  194. package/dist/networkQualityMonitor/index.js +5 -4
  195. package/dist/networkQualityMonitor/index.js.map +1 -1
  196. package/dist/personal-meeting-room/index.js +2 -3
  197. package/dist/personal-meeting-room/index.js.map +1 -1
  198. package/dist/personal-meeting-room/request.js +2 -3
  199. package/dist/personal-meeting-room/request.js.map +1 -1
  200. package/dist/personal-meeting-room/util.js +1 -2
  201. package/dist/personal-meeting-room/util.js.map +1 -1
  202. package/dist/reachability/index.js +265 -72
  203. package/dist/reachability/index.js.map +1 -1
  204. package/dist/reachability/request.js +18 -10
  205. package/dist/reachability/request.js.map +1 -1
  206. package/dist/reactions/constants.js +12 -0
  207. package/dist/reactions/constants.js.map +1 -0
  208. package/dist/reactions/reactions.js +4 -6
  209. package/dist/reactions/reactions.js.map +1 -1
  210. package/dist/reactions/reactions.type.js +21 -23
  211. package/dist/reactions/reactions.type.js.map +1 -1
  212. package/dist/reconnection-manager/index.js +281 -229
  213. package/dist/reconnection-manager/index.js.map +1 -1
  214. package/dist/recording-controller/enums.js +4 -5
  215. package/dist/recording-controller/enums.js.map +1 -1
  216. package/dist/recording-controller/index.js +57 -46
  217. package/dist/recording-controller/index.js.map +1 -1
  218. package/dist/recording-controller/util.js +10 -10
  219. package/dist/recording-controller/util.js.map +1 -1
  220. package/dist/roap/index.js +101 -235
  221. package/dist/roap/index.js.map +1 -1
  222. package/dist/roap/request.js +126 -180
  223. package/dist/roap/request.js.map +1 -1
  224. package/dist/roap/turnDiscovery.js +115 -105
  225. package/dist/roap/turnDiscovery.js.map +1 -1
  226. package/dist/rtcMetrics/constants.js +11 -0
  227. package/dist/rtcMetrics/constants.js.map +1 -0
  228. package/dist/rtcMetrics/index.js +140 -0
  229. package/dist/rtcMetrics/index.js.map +1 -0
  230. package/dist/statsAnalyzer/global.js +2 -85
  231. package/dist/statsAnalyzer/global.js.map +1 -1
  232. package/dist/statsAnalyzer/index.js +402 -424
  233. package/dist/statsAnalyzer/index.js.map +1 -1
  234. package/dist/statsAnalyzer/mqaUtil.js +117 -83
  235. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  236. package/dist/transcription/index.js +1 -2
  237. package/dist/transcription/index.js.map +1 -1
  238. package/dist/webinar/collection.js +43 -0
  239. package/dist/webinar/collection.js.map +1 -0
  240. package/dist/webinar/index.js +68 -0
  241. package/dist/webinar/index.js.map +1 -0
  242. package/package.json +34 -25
  243. package/src/annotation/annotation.types.ts +50 -0
  244. package/src/annotation/constants.ts +36 -0
  245. package/src/annotation/index.ts +328 -0
  246. package/src/breakouts/README.md +220 -0
  247. package/src/breakouts/breakout.ts +188 -0
  248. package/src/breakouts/collection.ts +19 -0
  249. package/src/breakouts/edit-lock-error.ts +25 -0
  250. package/src/breakouts/events.ts +56 -0
  251. package/src/breakouts/index.ts +925 -0
  252. package/src/breakouts/request.ts +55 -0
  253. package/src/breakouts/utils.ts +57 -0
  254. package/src/common/errors/no-meeting-info.ts +24 -0
  255. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  256. package/src/common/errors/webex-errors.ts +36 -12
  257. package/src/common/logs/logger-proxy.ts +1 -1
  258. package/src/common/logs/request.ts +5 -1
  259. package/src/common/queue.ts +22 -8
  260. package/src/config.ts +5 -7
  261. package/src/constants.ts +271 -93
  262. package/src/controls-options-manager/enums.ts +12 -0
  263. package/src/controls-options-manager/index.ts +116 -21
  264. package/src/controls-options-manager/types.ts +59 -0
  265. package/src/controls-options-manager/util.ts +294 -14
  266. package/src/index.ts +40 -0
  267. package/src/interpretation/README.md +60 -0
  268. package/src/interpretation/collection.ts +19 -0
  269. package/src/interpretation/index.ts +332 -0
  270. package/src/interpretation/siLanguage.ts +18 -0
  271. package/src/locus-info/controlsUtils.ts +110 -0
  272. package/src/locus-info/index.ts +449 -61
  273. package/src/locus-info/infoUtils.ts +14 -2
  274. package/src/locus-info/mediaSharesUtils.ts +64 -0
  275. package/src/locus-info/parser.ts +258 -47
  276. package/src/locus-info/selfUtils.ts +85 -2
  277. package/src/media/index.ts +153 -370
  278. package/src/media/properties.ts +106 -136
  279. package/src/media/util.ts +0 -21
  280. package/src/mediaQualityMetrics/config.ts +379 -377
  281. package/src/meeting/in-meeting-actions.ts +172 -0
  282. package/src/meeting/index.ts +3861 -2504
  283. package/src/meeting/locusMediaRequest.ts +313 -0
  284. package/src/meeting/muteState.ts +224 -138
  285. package/src/meeting/request.ts +207 -127
  286. package/src/meeting/request.type.ts +13 -0
  287. package/src/meeting/util.ts +590 -423
  288. package/src/meeting-info/index.ts +81 -8
  289. package/src/meeting-info/meeting-info-v2.ts +163 -13
  290. package/src/meeting-info/util.ts +1 -1
  291. package/src/meeting-info/utilv2.ts +28 -28
  292. package/src/meetings/collection.ts +33 -0
  293. package/src/meetings/index.ts +477 -124
  294. package/src/meetings/meetings.types.ts +12 -0
  295. package/src/meetings/request.ts +2 -0
  296. package/src/meetings/util.ts +116 -5
  297. package/src/member/index.ts +52 -1
  298. package/src/member/types.ts +38 -0
  299. package/src/member/util.ts +139 -28
  300. package/src/members/collection.ts +8 -0
  301. package/src/members/index.ts +196 -7
  302. package/src/members/request.ts +97 -17
  303. package/src/members/types.ts +29 -0
  304. package/src/members/util.ts +333 -240
  305. package/src/metrics/constants.ts +13 -6
  306. package/src/metrics/index.ts +1 -471
  307. package/src/multistream/mediaRequestManager.ts +440 -0
  308. package/src/multistream/receiveSlot.ts +184 -0
  309. package/src/multistream/receiveSlotManager.ts +166 -0
  310. package/src/multistream/remoteMedia.ts +254 -0
  311. package/src/multistream/remoteMediaGroup.ts +284 -0
  312. package/src/multistream/remoteMediaManager.ts +1145 -0
  313. package/src/multistream/sendSlotManager.ts +170 -0
  314. package/src/networkQualityMonitor/index.ts +6 -6
  315. package/src/reachability/index.ts +238 -45
  316. package/src/reachability/request.ts +17 -8
  317. package/src/reactions/constants.ts +4 -0
  318. package/src/reactions/reactions.ts +4 -4
  319. package/src/reactions/reactions.type.ts +30 -4
  320. package/src/reconnection-manager/index.ts +167 -154
  321. package/src/recording-controller/index.ts +20 -3
  322. package/src/recording-controller/util.ts +26 -9
  323. package/src/roap/index.ts +98 -241
  324. package/src/roap/request.ts +74 -148
  325. package/src/roap/turnDiscovery.ts +62 -56
  326. package/src/rtcMetrics/constants.ts +3 -0
  327. package/src/rtcMetrics/index.ts +124 -0
  328. package/src/statsAnalyzer/global.ts +1 -84
  329. package/src/statsAnalyzer/index.ts +470 -522
  330. package/src/statsAnalyzer/mqaUtil.ts +117 -112
  331. package/src/webinar/collection.ts +31 -0
  332. package/src/webinar/index.ts +62 -0
  333. package/test/integration/spec/converged-space-meetings.js +233 -0
  334. package/test/integration/spec/journey.js +320 -264
  335. package/test/integration/spec/space-meeting.js +77 -4
  336. package/test/unit/spec/annotation/index.ts +418 -0
  337. package/test/unit/spec/breakouts/breakout.ts +237 -0
  338. package/test/unit/spec/breakouts/collection.ts +15 -0
  339. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  340. package/test/unit/spec/breakouts/events.ts +89 -0
  341. package/test/unit/spec/breakouts/index.ts +1790 -0
  342. package/test/unit/spec/breakouts/request.ts +104 -0
  343. package/test/unit/spec/breakouts/utils.js +72 -0
  344. package/test/unit/spec/common/queue.js +31 -2
  345. package/test/unit/spec/controls-options-manager/index.js +163 -0
  346. package/test/unit/spec/controls-options-manager/util.js +576 -60
  347. package/test/unit/spec/fixture/locus.js +1 -0
  348. package/test/unit/spec/interpretation/collection.ts +15 -0
  349. package/test/unit/spec/interpretation/index.ts +589 -0
  350. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  351. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  352. package/test/unit/spec/locus-info/index.js +1390 -16
  353. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  354. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  355. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  356. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  357. package/test/unit/spec/locus-info/parser.js +116 -35
  358. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  359. package/test/unit/spec/media/index.ts +274 -0
  360. package/test/unit/spec/media/properties.ts +75 -84
  361. package/test/unit/spec/meeting/in-meeting-actions.ts +84 -0
  362. package/test/unit/spec/meeting/index.js +8269 -3145
  363. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  364. package/test/unit/spec/meeting/muteState.js +409 -213
  365. package/test/unit/spec/meeting/request.js +512 -42
  366. package/test/unit/spec/meeting/utils.js +741 -24
  367. package/test/unit/spec/meeting-info/index.js +300 -0
  368. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  369. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  370. package/test/unit/spec/meetings/collection.js +26 -0
  371. package/test/unit/spec/meetings/index.js +1201 -210
  372. package/test/unit/spec/meetings/utils.js +202 -2
  373. package/test/unit/spec/member/index.js +38 -8
  374. package/test/unit/spec/member/util.js +499 -29
  375. package/test/unit/spec/members/index.js +597 -3
  376. package/test/unit/spec/members/request.js +206 -27
  377. package/test/unit/spec/members/utils.js +210 -0
  378. package/test/unit/spec/metrics/index.js +1 -50
  379. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  380. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  381. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  382. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  383. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  384. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  385. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  386. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  387. package/test/unit/spec/reachability/index.ts +598 -24
  388. package/test/unit/spec/reachability/request.js +68 -0
  389. package/test/unit/spec/reconnection-manager/index.js +145 -22
  390. package/test/unit/spec/recording-controller/index.js +293 -218
  391. package/test/unit/spec/recording-controller/util.js +223 -96
  392. package/test/unit/spec/roap/index.ts +200 -76
  393. package/test/unit/spec/roap/request.ts +232 -0
  394. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  395. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  396. package/test/unit/spec/stats-analyzer/index.js +188 -174
  397. package/test/unit/spec/webinar/collection.ts +13 -0
  398. package/test/unit/spec/webinar/index.ts +60 -0
  399. package/test/utils/constants.js +9 -0
  400. package/test/utils/integrationTestUtils.js +46 -0
  401. package/test/utils/testUtils.js +0 -45
  402. package/test/utils/webex-config.js +4 -0
  403. package/test/utils/webex-test-users.js +7 -3
  404. package/dist/common/browser-detection.d.ts +0 -9
  405. package/dist/common/collection.d.ts +0 -48
  406. package/dist/common/config.d.ts +0 -2
  407. package/dist/common/errors/captcha-error.d.ts +0 -15
  408. package/dist/common/errors/intent-to-join.d.ts +0 -16
  409. package/dist/common/errors/join-meeting.d.ts +0 -17
  410. package/dist/common/errors/media.d.ts +0 -15
  411. package/dist/common/errors/parameter.d.ts +0 -15
  412. package/dist/common/errors/password-error.d.ts +0 -15
  413. package/dist/common/errors/permission.d.ts +0 -14
  414. package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
  415. package/dist/common/errors/reconnection.d.ts +0 -15
  416. package/dist/common/errors/stats.d.ts +0 -15
  417. package/dist/common/errors/webex-errors.d.ts +0 -81
  418. package/dist/common/errors/webex-meetings-error.d.ts +0 -20
  419. package/dist/common/events/events-scope.d.ts +0 -17
  420. package/dist/common/events/events.d.ts +0 -12
  421. package/dist/common/events/trigger-proxy.d.ts +0 -2
  422. package/dist/common/events/util.d.ts +0 -2
  423. package/dist/common/logs/logger-config.d.ts +0 -2
  424. package/dist/common/logs/logger-proxy.d.ts +0 -2
  425. package/dist/common/logs/request.d.ts +0 -34
  426. package/dist/common/queue.d.ts +0 -32
  427. package/dist/config.d.ts +0 -73
  428. package/dist/constants.d.ts +0 -926
  429. package/dist/controls-options-manager/constants.d.ts +0 -4
  430. package/dist/controls-options-manager/enums.d.ts +0 -5
  431. package/dist/controls-options-manager/index.d.ts +0 -120
  432. package/dist/controls-options-manager/util.d.ts +0 -7
  433. package/dist/index.d.ts +0 -4
  434. package/dist/locus-info/controlsUtils.d.ts +0 -2
  435. package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
  436. package/dist/locus-info/fullState.d.ts +0 -2
  437. package/dist/locus-info/hostUtils.d.ts +0 -2
  438. package/dist/locus-info/index.d.ts +0 -269
  439. package/dist/locus-info/infoUtils.d.ts +0 -2
  440. package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
  441. package/dist/locus-info/parser.d.ts +0 -212
  442. package/dist/locus-info/selfUtils.d.ts +0 -2
  443. package/dist/media/index.d.ts +0 -32
  444. package/dist/media/properties.d.ts +0 -108
  445. package/dist/media/util.d.ts +0 -2
  446. package/dist/mediaQualityMetrics/config.d.ts +0 -233
  447. package/dist/meeting/effectsState.d.ts +0 -42
  448. package/dist/meeting/effectsState.js +0 -260
  449. package/dist/meeting/effectsState.js.map +0 -1
  450. package/dist/meeting/in-meeting-actions.d.ts +0 -79
  451. package/dist/meeting/index.d.ts +0 -1622
  452. package/dist/meeting/muteState.d.ts +0 -116
  453. package/dist/meeting/request.d.ts +0 -255
  454. package/dist/meeting/state.d.ts +0 -9
  455. package/dist/meeting/util.d.ts +0 -2
  456. package/dist/meeting-info/collection.d.ts +0 -20
  457. package/dist/meeting-info/index.d.ts +0 -57
  458. package/dist/meeting-info/meeting-info-v2.d.ts +0 -93
  459. package/dist/meeting-info/request.d.ts +0 -22
  460. package/dist/meeting-info/util.d.ts +0 -2
  461. package/dist/meeting-info/utilv2.d.ts +0 -2
  462. package/dist/meetings/collection.d.ts +0 -23
  463. package/dist/meetings/index.d.ts +0 -296
  464. package/dist/meetings/request.d.ts +0 -27
  465. package/dist/meetings/util.d.ts +0 -18
  466. package/dist/member/index.d.ts +0 -147
  467. package/dist/member/member.types.d.ts +0 -11
  468. package/dist/member/util.d.ts +0 -2
  469. package/dist/members/collection.d.ts +0 -24
  470. package/dist/members/index.d.ts +0 -298
  471. package/dist/members/request.d.ts +0 -50
  472. package/dist/members/util.d.ts +0 -2
  473. package/dist/metrics/config.d.ts +0 -169
  474. package/dist/metrics/config.js +0 -289
  475. package/dist/metrics/config.js.map +0 -1
  476. package/dist/metrics/constants.d.ts +0 -59
  477. package/dist/metrics/index.d.ts +0 -152
  478. package/dist/networkQualityMonitor/index.d.ts +0 -70
  479. package/dist/peer-connection-manager/index.d.ts +0 -6
  480. package/dist/peer-connection-manager/index.js +0 -671
  481. package/dist/peer-connection-manager/index.js.map +0 -1
  482. package/dist/peer-connection-manager/util.d.ts +0 -6
  483. package/dist/peer-connection-manager/util.js +0 -110
  484. package/dist/peer-connection-manager/util.js.map +0 -1
  485. package/dist/personal-meeting-room/index.d.ts +0 -47
  486. package/dist/personal-meeting-room/request.d.ts +0 -14
  487. package/dist/personal-meeting-room/util.d.ts +0 -2
  488. package/dist/reachability/index.d.ts +0 -139
  489. package/dist/reachability/request.d.ts +0 -35
  490. package/dist/reactions/reactions.d.ts +0 -4
  491. package/dist/reactions/reactions.type.d.ts +0 -32
  492. package/dist/reconnection-manager/index.d.ts +0 -112
  493. package/dist/recording-controller/enums.d.ts +0 -7
  494. package/dist/recording-controller/index.d.ts +0 -193
  495. package/dist/recording-controller/util.d.ts +0 -13
  496. package/dist/roap/collection.d.ts +0 -10
  497. package/dist/roap/collection.js +0 -63
  498. package/dist/roap/collection.js.map +0 -1
  499. package/dist/roap/handler.d.ts +0 -47
  500. package/dist/roap/handler.js +0 -279
  501. package/dist/roap/handler.js.map +0 -1
  502. package/dist/roap/index.d.ts +0 -116
  503. package/dist/roap/request.d.ts +0 -35
  504. package/dist/roap/state.d.ts +0 -9
  505. package/dist/roap/state.js +0 -127
  506. package/dist/roap/state.js.map +0 -1
  507. package/dist/roap/turnDiscovery.d.ts +0 -81
  508. package/dist/roap/util.d.ts +0 -2
  509. package/dist/roap/util.js +0 -76
  510. package/dist/roap/util.js.map +0 -1
  511. package/dist/statsAnalyzer/global.d.ts +0 -118
  512. package/dist/statsAnalyzer/index.d.ts +0 -193
  513. package/dist/statsAnalyzer/mqaUtil.d.ts +0 -22
  514. package/dist/transcription/index.d.ts +0 -64
  515. package/src/index.js +0 -15
  516. package/src/meeting/effectsState.ts +0 -209
  517. package/src/metrics/config.ts +0 -485
  518. package/src/peer-connection-manager/index.ts +0 -847
  519. package/src/peer-connection-manager/util.ts +0 -119
  520. package/src/roap/collection.ts +0 -62
  521. package/src/roap/handler.ts +0 -294
  522. package/src/roap/state.ts +0 -156
  523. package/src/roap/util.ts +0 -100
  524. package/test/unit/spec/meeting/effectsState.js +0 -281
  525. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  526. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  527. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  528. package/test/unit/spec/roap/util.js +0 -30
@@ -1,6 +1,5 @@
1
1
  import {assert} from '@webex/test-helper-chai';
2
2
  import Sinon from 'sinon';
3
-
4
3
  import InfoUtils from '@webex/plugin-meetings/src/locus-info/infoUtils';
5
4
 
6
5
  describe('plugin-meetings', () => {
@@ -8,7 +7,7 @@ describe('plugin-meetings', () => {
8
7
  const info = {
9
8
  displayHints: {
10
9
  moderator: ['HINT_1', 'HINT_2'],
11
- joined: ['HINT_3'],
10
+ joined: ['HINT_3', 'VOIP_IS_ENABLED'],
12
11
  coHost: ['HINT_4'],
13
12
  },
14
13
  };
@@ -28,47 +27,83 @@ describe('plugin-meetings', () => {
28
27
  describe('parse', () => {
29
28
  it('only gives includes display hints when user has the correct role', () => {
30
29
  assert.deepEqual(InfoUtils.parse(info, ['MODERATOR']), {
31
- policy: {HINT_3: true},
30
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
32
31
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
33
32
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
34
- userDisplayHints: ['HINT_3', 'HINT_1', 'HINT_2', 'LOWER_SOMEONE_ELSES_HAND'],
33
+ userDisplayHints: [
34
+ 'HINT_3',
35
+ 'VOIP_IS_ENABLED',
36
+ 'HINT_1',
37
+ 'HINT_2',
38
+ 'LOWER_SOMEONE_ELSES_HAND',
39
+ ],
35
40
  });
36
41
 
37
42
  assert.deepEqual(InfoUtils.parse(info, ['MODERATOR', 'COHOST']), {
38
- policy: {HINT_3: true},
43
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
39
44
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
40
45
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
41
- userDisplayHints: ['HINT_3', 'HINT_4', 'LOWER_SOMEONE_ELSES_HAND', 'HINT_1', 'HINT_2'],
46
+ userDisplayHints: [
47
+ 'HINT_3',
48
+ 'VOIP_IS_ENABLED',
49
+ 'HINT_4',
50
+ 'LOWER_SOMEONE_ELSES_HAND',
51
+ 'HINT_1',
52
+ 'HINT_2',
53
+ ],
42
54
  });
43
55
 
44
56
  assert.deepEqual(InfoUtils.parse(info, ['COHOST']), {
45
- policy: {HINT_3: true},
57
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
46
58
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
47
59
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
48
- userDisplayHints: ['HINT_3', 'HINT_4', 'LOWER_SOMEONE_ELSES_HAND'],
60
+ userDisplayHints: ['HINT_3', 'VOIP_IS_ENABLED', 'HINT_4', 'LOWER_SOMEONE_ELSES_HAND'],
49
61
  });
50
62
 
51
63
  assert.deepEqual(InfoUtils.parse(info, []), {
52
- policy: {HINT_3: true},
64
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
53
65
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
54
66
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
55
- userDisplayHints: ['HINT_3'],
67
+ userDisplayHints: ['HINT_3', 'VOIP_IS_ENABLED'],
56
68
  });
57
69
  });
58
70
 
59
- it('only gives includes display hints when user has joined the meeting role', () => {
71
+ it('only includes interstitial display hints when user has not joined the meeting', () => {
60
72
  assert.deepEqual(InfoUtils.parse(info, ['MODERATOR'], false), {
61
- policy: {HINT_3: true},
73
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
62
74
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
63
75
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
64
- userDisplayHints: ['HINT_1', 'HINT_2', 'LOWER_SOMEONE_ELSES_HAND'],
76
+ userDisplayHints: ['VOIP_IS_ENABLED', 'HINT_1', 'HINT_2', 'LOWER_SOMEONE_ELSES_HAND'],
65
77
  });
66
78
 
67
79
  assert.deepEqual(InfoUtils.parse(info, ['MODERATOR'], true), {
68
- policy: {HINT_3: true},
80
+ policy: {HINT_3: true, VOIP_IS_ENABLED: true},
69
81
  moderator: {HINT_1: true, HINT_2: true, LOWER_SOMEONE_ELSES_HAND: true},
70
82
  coHost: {HINT_4: true, LOWER_SOMEONE_ELSES_HAND: true},
71
- userDisplayHints: ['HINT_3', 'HINT_1', 'HINT_2', 'LOWER_SOMEONE_ELSES_HAND'],
83
+ userDisplayHints: [
84
+ 'HINT_3',
85
+ 'VOIP_IS_ENABLED',
86
+ 'HINT_1',
87
+ 'HINT_2',
88
+ 'LOWER_SOMEONE_ELSES_HAND',
89
+ ],
90
+ });
91
+ });
92
+
93
+ it('only adds datachannel url when present', () => {
94
+ assert.deepEqual(InfoUtils.parse({datachannelUrl: 'some url'}, []), {
95
+ coHost: {LOWER_SOMEONE_ELSES_HAND: true},
96
+ moderator: {LOWER_SOMEONE_ELSES_HAND: true},
97
+ datachannelUrl: 'some url',
98
+ policy: {},
99
+ userDisplayHints: [],
100
+ });
101
+
102
+ assert.deepEqual(InfoUtils.parse({}, []), {
103
+ coHost: {LOWER_SOMEONE_ELSES_HAND: true},
104
+ moderator: {LOWER_SOMEONE_ELSES_HAND: true},
105
+ policy: {},
106
+ userDisplayHints: [],
72
107
  });
73
108
  });
74
109
  });
@@ -80,7 +115,10 @@ describe('plugin-meetings', () => {
80
115
  HINT_2: true,
81
116
  });
82
117
 
83
- assert.deepEqual(InfoUtils.parseDisplayHintSection(info, 'joined'), {HINT_3: true});
118
+ assert.deepEqual(InfoUtils.parseDisplayHintSection(info, 'joined'), {
119
+ HINT_3: true,
120
+ VOIP_IS_ENABLED: true,
121
+ });
84
122
 
85
123
  assert.deepEqual(InfoUtils.parseDisplayHintSection({}, 'joined'), {});
86
124
 
@@ -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
  }
@@ -66,6 +66,15 @@ export const self = {
66
66
  },
67
67
  ],
68
68
  mediaSessionsExternal: false,
69
+ replaces: [
70
+ {
71
+ breakoutMoveId: 'e5caeb2c-ffcc-4e06-a08a-1122e7710398',
72
+ lastActive: '2023-05-04T07:14:32.068Z',
73
+ locusUrl: 'https://locus-alpha-apdx.prod.meetapi.webex.com/locus/api/v1/loci/495061ca-7b3c-3b77-85ff-4e1bd58600d1',
74
+ replacedAt: '2023-05-04T07:16:04.905Z',
75
+ sessionId: 'be3147d4-c318-86d8-7611-8d24beaaca8d',
76
+ }
77
+ ],
69
78
  state: 'JOINED',
70
79
  intent: {type: ''},
71
80
  intents: [null],
@@ -109,6 +118,45 @@ export const self = {
109
118
  requestedToUnmute: false,
110
119
  meta: {},
111
120
  },
121
+ video: {
122
+ muted: false,
123
+ meta: {},
124
+ },
125
+ breakout: {
126
+ sessions: {
127
+ active: [
128
+ {
129
+ name: 'Breakout session 2',
130
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
131
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
132
+ sessionType: 'BREAKOUT',
133
+ },
134
+ ],
135
+ allowed: [
136
+ {
137
+ name: 'Breakout session 2',
138
+ groupId: '0e73abb8-5584-49d8-be8d-806d2a8247ca',
139
+ sessionId: '1cf41ab1-2e57-4d95-b7e9-5613acddfb0f',
140
+ sessionType: 'BREAKOUT',
141
+ },
142
+ ],
143
+ },
144
+ meta: {
145
+ modifiedBy: '347ef89e-e1be-40a3-849c-731bdd935e62',
146
+ lastModified: '2023-01-10T10:10:06.813Z',
147
+ readOnly: true,
148
+ },
149
+ },
150
+ interpretation: {
151
+ originalLanguage: 'en',
152
+ sourceLanguage: 'en',
153
+ targetLanguage: 'cn',
154
+ order: 0,
155
+ isActive: true,
156
+ meta: {
157
+ lastModified: '2023-07-11T01:57:31.040Z',
158
+ }
159
+ },
112
160
  localRecord: {
113
161
  recording: false,
114
162
  },
@@ -0,0 +1,32 @@
1
+ import MediaSharesUtils from '@webex/plugin-meetings/src/locus-info/mediaSharesUtils';
2
+ import {assert} from "chai";
3
+ import Sinon from "sinon";
4
+
5
+ describe('getShareInstanceId', () => {
6
+ it('getShareInstanceId return correct shareInstanceId value', () => {
7
+ const stub = Sinon.stub(MediaSharesUtils, 'extractContent').returns({ floor:{shareInstanceId:'shareInstanceId'}});
8
+ const shareInstanceId = MediaSharesUtils.getShareInstanceId();
9
+ assert.equal(shareInstanceId,'shareInstanceId');
10
+ stub.restore();
11
+ });
12
+ });
13
+
14
+ describe('getContentUrl', () => {
15
+ it('getContentUrl return correct url value', () => {
16
+ const stub = Sinon.stub(MediaSharesUtils, 'extractContent').returns({url:'url'});
17
+ const url = MediaSharesUtils.getContentUrl();
18
+ assert.equal(url,'url');
19
+ stub.restore();
20
+ });
21
+ });
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
+
@@ -5,6 +5,7 @@
5
5
  import sinon from 'sinon';
6
6
  import {assert} from '@webex/test-helper-chai';
7
7
  import LocusDeltaParser from '@webex/plugin-meetings/src/locus-info/parser';
8
+ import Metrics from '@webex/plugin-meetings/src/metrics';
8
9
 
9
10
  import basicSequenceComparisons from './lib/BasicSeqCmp.json';
10
11
  import sequenceComparisons from './lib/SeqCmp';
@@ -50,9 +51,11 @@ describe('locus-info/parser', () => {
50
51
  });
51
52
 
52
53
  describe('delta sequence comparisons', () => {
53
- const {DESYNC, USE_CURRENT, USE_INCOMING} = LocusDeltaParser.loci;
54
+ const {DESYNC, USE_CURRENT, USE_INCOMING, WAIT, LOCUS_URL_CHANGED} = LocusDeltaParser.loci;
54
55
  const {extractComparisonState: extract} = LocusDeltaParser;
55
56
 
57
+ sinon.stub(Metrics, 'sendBehavioralMetric');
58
+
56
59
  function translate(action) {
57
60
  switch (action) {
58
61
  case 'ACCEPT_NEW':
@@ -61,6 +64,10 @@ describe('locus-info/parser', () => {
61
64
  return USE_CURRENT;
62
65
  case 'DESYNC':
63
66
  return DESYNC;
67
+ case 'WAIT':
68
+ return WAIT;
69
+ case 'LOCUS_URL_CHANGED':
70
+ return LOCUS_URL_CHANGED;
64
71
  default:
65
72
  throw new Error(`${action} not recognized`);
66
73
  }
@@ -73,10 +80,12 @@ describe('locus-info/parser', () => {
73
80
 
74
81
  const current = {
75
82
  sequence: sequenceComparisons.sequences[currentKey],
83
+ url: sequenceComparisons.update_actions[key].currentUrl,
76
84
  };
77
85
  const incoming = {
78
86
  sequence: sequenceComparisons.sequences[incomingKey],
79
87
  baseSequence: sequenceComparisons.sequences[baseKey],
88
+ url: sequenceComparisons.update_actions[key].incomingUrl,
80
89
  };
81
90
  const comparison = LocusDeltaParser.compare(current, incoming);
82
91
  const action = extract(comparison);
@@ -87,6 +96,8 @@ describe('locus-info/parser', () => {
87
96
  assert.equal(action, translate(result));
88
97
  });
89
98
  });
99
+
100
+ Metrics.sendBehavioralMetric.restore();
90
101
  });
91
102
  });
92
103
 
@@ -106,7 +117,7 @@ describe('locus-info/parser', () => {
106
117
  return burst;
107
118
  })();
108
119
 
109
- parser.onDeltaAction = true;
120
+ parser.onDeltaAction = sinon.stub();
110
121
  parser.processDeltaEvent = function () {
111
122
  const fakeLoci = this.queue.dequeue();
112
123
 
@@ -133,7 +144,11 @@ describe('locus-info/parser', () => {
133
144
  });
134
145
 
135
146
  describe('Processes delta events correctly', () => {
136
- const NEW_LOCI = 'NEW LOCI';
147
+ const CURRENT_LOCI = {sequence: {entries: [100]}, url: 'CURRENT LOCI', baseSequence: {
148
+ "entries": [100], "rangeStart": 100, "rangeEnd": 100}};
149
+ const NEW_LOCI = {sequence: {entries: [200]}, url: 'NEW LOCI', baseSequence: {
150
+ "entries": [200], "rangeStart": 200, "rangeEnd": 200}};
151
+
137
152
  let sandbox = null;
138
153
  let parser;
139
154
 
@@ -142,6 +157,7 @@ describe('locus-info/parser', () => {
142
157
  parser = new LocusDeltaParser();
143
158
  sandbox.stub(parser, 'isValidLocus').returns(true);
144
159
  parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
160
+ parser.onDeltaAction = sandbox.stub();
145
161
  });
146
162
 
147
163
  afterEach(() => {
@@ -153,7 +169,7 @@ describe('locus-info/parser', () => {
153
169
  const {DESYNC} = LocusDeltaParser.loci;
154
170
 
155
171
  parser.pause = sandbox.stub();
156
- LocusDeltaParser.compare = sandbox.stub().returns(DESYNC);
172
+ sandbox.stub(LocusDeltaParser, 'compare').returns(DESYNC);
157
173
 
158
174
  parser.processDeltaEvent();
159
175
 
@@ -164,7 +180,7 @@ describe('locus-info/parser', () => {
164
180
  const {USE_INCOMING} = LocusDeltaParser.loci;
165
181
 
166
182
  parser.workingCopy = null;
167
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
183
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
168
184
 
169
185
  parser.processDeltaEvent();
170
186
 
@@ -175,8 +191,7 @@ describe('locus-info/parser', () => {
175
191
  const {USE_INCOMING} = LocusDeltaParser.loci;
176
192
  const lociComparison = USE_INCOMING;
177
193
 
178
- LocusDeltaParser.compare = sandbox.stub().returns(lociComparison);
179
- parser.onDeltaAction = sandbox.stub();
194
+ sandbox.stub(LocusDeltaParser, 'compare').returns(lociComparison);
180
195
 
181
196
  parser.processDeltaEvent();
182
197
 
@@ -186,7 +201,7 @@ describe('locus-info/parser', () => {
186
201
  it('should call nextEvent()', () => {
187
202
  const {USE_INCOMING} = LocusDeltaParser.loci;
188
203
 
189
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
204
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
190
205
  parser.nextEvent = sandbox.stub();
191
206
 
192
207
  parser.processDeltaEvent();
@@ -197,7 +212,8 @@ describe('locus-info/parser', () => {
197
212
  it('should not call compare() if locus is invalid', () => {
198
213
  const {USE_INCOMING} = LocusDeltaParser.loci;
199
214
 
200
- LocusDeltaParser.compare = sandbox.stub().returns(USE_INCOMING);
215
+ sandbox.stub(LocusDeltaParser, 'compare').returns(USE_INCOMING);
216
+
201
217
  // restore the original method
202
218
  parser.isValidLocus.restore();
203
219
  parser.isValidLocus.bind(parser);
@@ -208,9 +224,8 @@ describe('locus-info/parser', () => {
208
224
  });
209
225
 
210
226
  it('processDeltaEvent() should take next item in queue', () => {
211
- // restore the original method
212
- parser.queue.dequeue = sandbox.stub();
213
-
227
+ parser.workingCopy = CURRENT_LOCI;
228
+
214
229
  parser.processDeltaEvent();
215
230
 
216
231
  assert.calledOnce(parser.queue.dequeue);
@@ -228,7 +243,7 @@ describe('locus-info/parser', () => {
228
243
  assert.equal(comparisonResults, expectedResults);
229
244
  });
230
245
 
231
- it('shoud be able to unpack comparison results', () => {
246
+ it('should be able to unpack comparison results', () => {
232
247
  const {extractComparisonState: extract} = LocusDeltaParser;
233
248
 
234
249
  const comparisonResults = 'value04:value03:value:02:value01';
@@ -236,6 +251,94 @@ describe('locus-info/parser', () => {
236
251
 
237
252
  assert.equal(lastResult, 'value04');
238
253
  });
254
+
255
+ it('replaces current loci when the locus URL changes and incoming sequence is later, even when baseSequence doesn\'t match', () => {
256
+ const {USE_INCOMING} = LocusDeltaParser.loci;
257
+
258
+ parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
259
+ parser.onDeltaAction = sandbox.stub();
260
+ parser.workingCopy = CURRENT_LOCI;
261
+ parser.triggerSync = sandbox.stub();
262
+
263
+ parser.processDeltaEvent();
264
+
265
+ assert.equal(parser.workingCopy, NEW_LOCI);
266
+ });
267
+
268
+ it('does not replace current loci when the locus URL changes but incoming sequence is not later', () => {
269
+ const {USE_INCOMING} = LocusDeltaParser.loci;
270
+ const laterLoci = {...CURRENT_LOCI, sequence: {entries: [300]}};
271
+
272
+ parser.queue.dequeue = sandbox.stub().returns(NEW_LOCI);
273
+ parser.onDeltaAction = sandbox.stub();
274
+ parser.workingCopy = laterLoci;
275
+
276
+ parser.processDeltaEvent();
277
+
278
+ assert.equal(parser.workingCopy, laterLoci);
279
+ });
280
+ });
281
+
282
+ describe('Full Locus handling', () => {
283
+ describe('isNewFullLocus', () => {
284
+ let parser;
285
+
286
+ beforeEach(() => {
287
+ parser = new LocusDeltaParser();
288
+ })
289
+ it('returns false if incoming Locus is not valid', () => {
290
+ const fakeInvalidIncomingLocus = {};
291
+
292
+ parser.workingCopy = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [1]}};
293
+
294
+ assert.isFalse(parser.isNewFullLocus(fakeInvalidIncomingLocus));
295
+ });
296
+
297
+ const runCheck = (incomingSequence, currentSequence, expectedResult) => {
298
+ parser.workingCopy = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [1, 2, currentSequence]}};
299
+
300
+ const fakeIncomingLocus = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [1, 10, incomingSequence]}};
301
+
302
+ assert.strictEqual(parser.isNewFullLocus(fakeIncomingLocus), expectedResult);
303
+ }
304
+ it('returns true if there is no working copy', () => {
305
+ const fakeIncomingLocus = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [10]}};
306
+
307
+ // sanity check that we initially have no working copy
308
+ assert.isNull(parser.workingCopy);
309
+
310
+ assert.isTrue(parser.isNewFullLocus(fakeIncomingLocus));
311
+ });
312
+
313
+ it('returns true if new sequence is higher than existing one', () => {
314
+ runCheck(101, 100, true);
315
+ });
316
+
317
+ it('returns false if new sequence is same than existing one', () => {
318
+ runCheck(100, 100, false);
319
+ });
320
+
321
+ it('returns false if new sequence is older than existing one', () => {
322
+ runCheck(99, 100, false);
323
+ });
324
+
325
+ it('returns true if incoming Locus has empty sequence', () => {
326
+ parser.workingCopy = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [1, 2, 3]}};
327
+
328
+ const fakeIncomingLocus = { sequence: {rangeStart: 0, rangeEnd: 0, entries: []}};
329
+
330
+ assert.isTrue(parser.isNewFullLocus(fakeIncomingLocus));
331
+ });
332
+
333
+ it('returns true if working copy has empty sequence', () => {
334
+ parser.workingCopy = { sequence: {rangeStart: 0, rangeEnd: 0, entries: []}};
335
+
336
+ const fakeIncomingLocus = { sequence: {rangeStart: 0, rangeEnd: 0, entries: [1,2,3]}};
337
+
338
+ assert.isTrue(parser.isNewFullLocus(fakeIncomingLocus));
339
+ });
340
+
341
+ })
239
342
  });
240
343
 
241
344
  describe('Invalid Locus objects', () => {
@@ -272,27 +375,5 @@ describe('locus-info/parser', () => {
272
375
 
273
376
  assert.isFalse(result);
274
377
  });
275
-
276
- it('sets parser status to IDLE if workingCopy is invalid', () => {
277
- const {IDLE, WORKING} = LocusDeltaParser.status;
278
-
279
- parser.workingCopy = null;
280
- parser.status = WORKING;
281
-
282
- parser.isValidLocus(loci);
283
-
284
- assert.equal(parser.status, IDLE);
285
- });
286
-
287
- it('sets parser status to IDLE if new loci is invalid', () => {
288
- const {IDLE, WORKING} = LocusDeltaParser.status;
289
-
290
- parser.workingCopy = loci;
291
- parser.status = WORKING;
292
-
293
- parser.isValidLocus(null);
294
-
295
- assert.equal(parser.status, IDLE);
296
- });
297
378
  });
298
379
  });