@webex/plugin-meetings 2.60.0 → 2.60.1-next.1

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 (535) hide show
  1. package/README.md +46 -8
  2. package/dist/annotation/annotation.types.d.ts +42 -0
  3. package/dist/annotation/annotation.types.js +7 -0
  4. package/dist/annotation/annotation.types.js.map +1 -0
  5. package/dist/annotation/constants.d.ts +31 -0
  6. package/dist/annotation/constants.js +41 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.d.ts +117 -0
  9. package/dist/annotation/index.js +357 -0
  10. package/dist/annotation/index.js.map +1 -0
  11. package/dist/breakouts/breakout.d.ts +8 -0
  12. package/dist/breakouts/breakout.js +215 -0
  13. package/dist/breakouts/breakout.js.map +1 -0
  14. package/dist/breakouts/collection.d.ts +5 -0
  15. package/dist/breakouts/collection.js +22 -0
  16. package/dist/breakouts/collection.js.map +1 -0
  17. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  18. package/dist/breakouts/edit-lock-error.js +51 -0
  19. package/dist/breakouts/edit-lock-error.js.map +1 -0
  20. package/dist/breakouts/events.d.ts +8 -0
  21. package/dist/breakouts/events.js +44 -0
  22. package/dist/breakouts/events.js.map +1 -0
  23. package/dist/breakouts/index.d.ts +5 -0
  24. package/dist/breakouts/index.js +1047 -0
  25. package/dist/breakouts/index.js.map +1 -0
  26. package/dist/breakouts/request.d.ts +22 -0
  27. package/dist/breakouts/request.js +77 -0
  28. package/dist/breakouts/request.js.map +1 -0
  29. package/dist/breakouts/utils.d.ts +15 -0
  30. package/dist/breakouts/utils.js +64 -0
  31. package/dist/breakouts/utils.js.map +1 -0
  32. package/dist/common/browser-detection.js +2 -3
  33. package/dist/common/browser-detection.js.map +1 -1
  34. package/dist/common/collection.js +3 -4
  35. package/dist/common/collection.js.map +1 -1
  36. package/dist/common/config.js +1 -2
  37. package/dist/common/config.js.map +1 -1
  38. package/dist/common/errors/captcha-error.js +1 -2
  39. package/dist/common/errors/captcha-error.js.map +1 -1
  40. package/dist/common/errors/intent-to-join.js +1 -2
  41. package/dist/common/errors/intent-to-join.js.map +1 -1
  42. package/dist/common/errors/join-meeting.js +1 -2
  43. package/dist/common/errors/join-meeting.js.map +1 -1
  44. package/dist/common/errors/media.js +1 -2
  45. package/dist/common/errors/media.js.map +1 -1
  46. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  47. package/dist/common/errors/no-meeting-info.js +50 -0
  48. package/dist/common/errors/no-meeting-info.js.map +1 -0
  49. package/dist/common/errors/parameter.js +3 -4
  50. package/dist/common/errors/parameter.js.map +1 -1
  51. package/dist/common/errors/password-error.js +1 -2
  52. package/dist/common/errors/password-error.js.map +1 -1
  53. package/dist/common/errors/permission.js +1 -2
  54. package/dist/common/errors/permission.js.map +1 -1
  55. package/dist/common/errors/{reclaim-host-role-error.js → reclaim-host-role-errors.js} +7 -11
  56. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  57. package/dist/common/errors/reconnection-in-progress.js +1 -2
  58. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  59. package/dist/common/errors/reconnection.js +1 -2
  60. package/dist/common/errors/reconnection.js.map +1 -1
  61. package/dist/common/errors/stats.js +1 -2
  62. package/dist/common/errors/stats.js.map +1 -1
  63. package/dist/common/errors/webex-errors.d.ts +20 -8
  64. package/dist/common/errors/webex-errors.js +48 -28
  65. package/dist/common/errors/webex-errors.js.map +1 -1
  66. package/dist/common/errors/webex-meetings-error.js +1 -2
  67. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  68. package/dist/common/events/events-scope.js +1 -2
  69. package/dist/common/events/events-scope.js.map +1 -1
  70. package/dist/common/events/events.js +1 -2
  71. package/dist/common/events/events.js.map +1 -1
  72. package/dist/common/events/trigger-proxy.js +1 -2
  73. package/dist/common/events/trigger-proxy.js.map +1 -1
  74. package/dist/common/events/util.js +1 -2
  75. package/dist/common/events/util.js.map +1 -1
  76. package/dist/common/logs/logger-config.js +1 -2
  77. package/dist/common/logs/logger-config.js.map +1 -1
  78. package/dist/common/logs/logger-proxy.js +2 -3
  79. package/dist/common/logs/logger-proxy.js.map +1 -1
  80. package/dist/common/logs/request.d.ts +3 -1
  81. package/dist/common/logs/request.js +8 -5
  82. package/dist/common/logs/request.js.map +1 -1
  83. package/dist/common/queue.d.ts +9 -7
  84. package/dist/common/queue.js +22 -9
  85. package/dist/common/queue.js.map +1 -1
  86. package/dist/config.d.ts +6 -7
  87. package/dist/config.js +8 -10
  88. package/dist/config.js.map +1 -1
  89. package/dist/constants.d.ts +217 -97
  90. package/dist/constants.js +416 -441
  91. package/dist/constants.js.map +1 -1
  92. package/dist/controls-options-manager/constants.js +3 -6
  93. package/dist/controls-options-manager/constants.js.map +1 -1
  94. package/dist/controls-options-manager/enums.d.ts +11 -1
  95. package/dist/controls-options-manager/enums.js +15 -6
  96. package/dist/controls-options-manager/enums.js.map +1 -1
  97. package/dist/controls-options-manager/index.d.ts +17 -1
  98. package/dist/controls-options-manager/index.js +127 -38
  99. package/dist/controls-options-manager/index.js.map +1 -1
  100. package/dist/controls-options-manager/types.d.ts +43 -0
  101. package/dist/controls-options-manager/types.js +7 -0
  102. package/dist/controls-options-manager/types.js.map +1 -0
  103. package/dist/controls-options-manager/util.d.ts +1 -7
  104. package/dist/controls-options-manager/util.js +309 -19
  105. package/dist/controls-options-manager/util.js.map +1 -1
  106. package/dist/index.d.ts +6 -3
  107. package/dist/index.js +121 -5
  108. package/dist/index.js.map +1 -1
  109. package/dist/interceptors/index.d.ts +2 -0
  110. package/dist/interceptors/index.js +15 -0
  111. package/dist/interceptors/index.js.map +1 -0
  112. package/dist/interceptors/locusRetry.d.ts +27 -0
  113. package/dist/interceptors/locusRetry.js +94 -0
  114. package/dist/interceptors/locusRetry.js.map +1 -0
  115. package/dist/interpretation/collection.d.ts +5 -0
  116. package/dist/interpretation/collection.js +22 -0
  117. package/dist/interpretation/collection.js.map +1 -0
  118. package/dist/interpretation/index.d.ts +5 -0
  119. package/dist/interpretation/index.js +365 -0
  120. package/dist/interpretation/index.js.map +1 -0
  121. package/dist/interpretation/siLanguage.d.ts +5 -0
  122. package/dist/interpretation/siLanguage.js +24 -0
  123. package/dist/interpretation/siLanguage.js.map +1 -0
  124. package/dist/locus-info/controlsUtils.js +100 -11
  125. package/dist/locus-info/controlsUtils.js.map +1 -1
  126. package/dist/locus-info/embeddedAppsUtils.js +3 -4
  127. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  128. package/dist/locus-info/fullState.js +1 -2
  129. package/dist/locus-info/fullState.js.map +1 -1
  130. package/dist/locus-info/hostUtils.js +1 -2
  131. package/dist/locus-info/hostUtils.js.map +1 -1
  132. package/dist/locus-info/index.d.ts +57 -4
  133. package/dist/locus-info/index.js +425 -84
  134. package/dist/locus-info/index.js.map +1 -1
  135. package/dist/locus-info/infoUtils.js +13 -5
  136. package/dist/locus-info/infoUtils.js.map +1 -1
  137. package/dist/locus-info/mediaSharesUtils.js +58 -3
  138. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  139. package/dist/locus-info/parser.d.ts +66 -6
  140. package/dist/locus-info/parser.js +253 -80
  141. package/dist/locus-info/parser.js.map +1 -1
  142. package/dist/locus-info/selfUtils.js +97 -13
  143. package/dist/locus-info/selfUtils.js.map +1 -1
  144. package/dist/media/index.d.ts +2 -0
  145. package/dist/media/index.js +107 -319
  146. package/dist/media/index.js.map +1 -1
  147. package/dist/media/properties.d.ts +38 -53
  148. package/dist/media/properties.js +96 -153
  149. package/dist/media/properties.js.map +1 -1
  150. package/dist/media/util.js +1 -22
  151. package/dist/media/util.js.map +1 -1
  152. package/dist/mediaQualityMetrics/config.d.ts +234 -230
  153. package/dist/mediaQualityMetrics/config.js +302 -498
  154. package/dist/mediaQualityMetrics/config.js.map +1 -1
  155. package/dist/meeting/in-meeting-actions.d.ts +88 -0
  156. package/dist/meeting/in-meeting-actions.js +94 -3
  157. package/dist/meeting/in-meeting-actions.js.map +1 -1
  158. package/dist/meeting/index.d.ts +591 -494
  159. package/dist/meeting/index.js +4732 -2990
  160. package/dist/meeting/index.js.map +1 -1
  161. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  162. package/dist/meeting/locusMediaRequest.js +291 -0
  163. package/dist/meeting/locusMediaRequest.js.map +1 -0
  164. package/dist/meeting/muteState.d.ts +93 -25
  165. package/dist/meeting/muteState.js +224 -133
  166. package/dist/meeting/muteState.js.map +1 -1
  167. package/dist/meeting/request.d.ts +82 -47
  168. package/dist/meeting/request.js +297 -199
  169. package/dist/meeting/request.js.map +1 -1
  170. package/dist/meeting/request.type.d.ts +11 -0
  171. package/dist/meeting/request.type.js +7 -0
  172. package/dist/meeting/request.type.js.map +1 -0
  173. package/dist/meeting/state.js +1 -2
  174. package/dist/meeting/state.js.map +1 -1
  175. package/dist/meeting/util.d.ts +102 -1
  176. package/dist/meeting/util.js +605 -435
  177. package/dist/meeting/util.js.map +1 -1
  178. package/dist/meeting-info/collection.js +3 -4
  179. package/dist/meeting-info/collection.js.map +1 -1
  180. package/dist/meeting-info/index.d.ts +13 -1
  181. package/dist/meeting-info/index.js +74 -7
  182. package/dist/meeting-info/index.js.map +1 -1
  183. package/dist/meeting-info/meeting-info-v2.d.ts +31 -1
  184. package/dist/meeting-info/meeting-info-v2.js +200 -63
  185. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  186. package/dist/meeting-info/request.js +1 -2
  187. package/dist/meeting-info/request.js.map +1 -1
  188. package/dist/meeting-info/util.js +2 -3
  189. package/dist/meeting-info/util.js.map +1 -1
  190. package/dist/meeting-info/utilv2.js +39 -41
  191. package/dist/meeting-info/utilv2.js.map +1 -1
  192. package/dist/meetings/collection.d.ts +17 -0
  193. package/dist/meetings/collection.js +42 -4
  194. package/dist/meetings/collection.js.map +1 -1
  195. package/dist/meetings/index.d.ts +93 -21
  196. package/dist/meetings/index.js +490 -127
  197. package/dist/meetings/index.js.map +1 -1
  198. package/dist/meetings/meetings.types.d.ts +4 -0
  199. package/dist/meetings/meetings.types.js +7 -0
  200. package/dist/meetings/meetings.types.js.map +1 -0
  201. package/dist/meetings/request.js +4 -3
  202. package/dist/meetings/request.js.map +1 -1
  203. package/dist/meetings/util.js +107 -6
  204. package/dist/meetings/util.js.map +1 -1
  205. package/dist/member/index.d.ts +13 -1
  206. package/dist/member/index.js +45 -2
  207. package/dist/member/index.js.map +1 -1
  208. package/dist/member/member.types.js +3 -4
  209. package/dist/member/member.types.js.map +1 -1
  210. package/dist/member/types.d.ts +32 -0
  211. package/dist/member/types.js +23 -0
  212. package/dist/member/types.js.map +1 -0
  213. package/dist/member/util.js +120 -29
  214. package/dist/member/util.js.map +1 -1
  215. package/dist/members/collection.d.ts +5 -0
  216. package/dist/members/collection.js +11 -2
  217. package/dist/members/collection.js.map +1 -1
  218. package/dist/members/index.d.ts +56 -11
  219. package/dist/members/index.js +174 -47
  220. package/dist/members/index.js.map +1 -1
  221. package/dist/members/request.d.ts +67 -11
  222. package/dist/members/request.js +102 -54
  223. package/dist/members/request.js.map +1 -1
  224. package/dist/members/types.js +3 -4
  225. package/dist/members/types.js.map +1 -1
  226. package/dist/members/util.d.ts +214 -1
  227. package/dist/members/util.js +327 -284
  228. package/dist/members/util.js.map +1 -1
  229. package/dist/metrics/constants.d.ts +15 -6
  230. package/dist/metrics/constants.js +17 -9
  231. package/dist/metrics/constants.js.map +1 -1
  232. package/dist/metrics/index.d.ts +4 -111
  233. package/dist/metrics/index.js +4 -452
  234. package/dist/metrics/index.js.map +1 -1
  235. package/dist/multistream/mediaRequestManager.d.ts +118 -0
  236. package/dist/multistream/mediaRequestManager.js +344 -0
  237. package/dist/multistream/mediaRequestManager.js.map +1 -0
  238. package/dist/multistream/receiveSlot.d.ts +68 -0
  239. package/dist/multistream/receiveSlot.js +200 -0
  240. package/dist/multistream/receiveSlot.js.map +1 -0
  241. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  242. package/dist/multistream/receiveSlotManager.js +174 -0
  243. package/dist/multistream/receiveSlotManager.js.map +1 -0
  244. package/dist/multistream/remoteMedia.d.ts +72 -0
  245. package/dist/multistream/remoteMedia.js +268 -0
  246. package/dist/multistream/remoteMedia.js.map +1 -0
  247. package/dist/multistream/remoteMediaGroup.d.ts +47 -0
  248. package/dist/multistream/remoteMediaGroup.js +267 -0
  249. package/dist/multistream/remoteMediaGroup.js.map +1 -0
  250. package/dist/multistream/remoteMediaManager.d.ts +285 -0
  251. package/dist/multistream/remoteMediaManager.js +1211 -0
  252. package/dist/multistream/remoteMediaManager.js.map +1 -0
  253. package/dist/multistream/sendSlotManager.d.ts +61 -0
  254. package/dist/multistream/sendSlotManager.js +236 -0
  255. package/dist/multistream/sendSlotManager.js.map +1 -0
  256. package/dist/networkQualityMonitor/index.js +5 -4
  257. package/dist/networkQualityMonitor/index.js.map +1 -1
  258. package/dist/personal-meeting-room/index.js +2 -3
  259. package/dist/personal-meeting-room/index.js.map +1 -1
  260. package/dist/personal-meeting-room/request.js +2 -3
  261. package/dist/personal-meeting-room/request.js.map +1 -1
  262. package/dist/personal-meeting-room/util.js +1 -2
  263. package/dist/personal-meeting-room/util.js.map +1 -1
  264. package/dist/reachability/clusterReachability.d.ts +109 -0
  265. package/dist/reachability/clusterReachability.js +357 -0
  266. package/dist/reachability/clusterReachability.js.map +1 -0
  267. package/dist/reachability/index.d.ts +61 -95
  268. package/dist/reachability/index.js +300 -393
  269. package/dist/reachability/index.js.map +1 -1
  270. package/dist/reachability/request.d.ts +7 -3
  271. package/dist/reachability/request.js +18 -10
  272. package/dist/reachability/request.js.map +1 -1
  273. package/dist/reachability/util.d.ts +8 -0
  274. package/dist/reachability/util.js +29 -0
  275. package/dist/reachability/util.js.map +1 -0
  276. package/dist/reactions/constants.d.ts +3 -0
  277. package/dist/reactions/constants.js +12 -0
  278. package/dist/reactions/constants.js.map +1 -0
  279. package/dist/reactions/reactions.d.ts +2 -2
  280. package/dist/reactions/reactions.js +4 -6
  281. package/dist/reactions/reactions.js.map +1 -1
  282. package/dist/reactions/reactions.type.d.ts +23 -3
  283. package/dist/reactions/reactions.type.js +21 -23
  284. package/dist/reactions/reactions.type.js.map +1 -1
  285. package/dist/reconnection-manager/index.d.ts +32 -8
  286. package/dist/reconnection-manager/index.js +282 -231
  287. package/dist/reconnection-manager/index.js.map +1 -1
  288. package/dist/recording-controller/enums.js +4 -5
  289. package/dist/recording-controller/enums.js.map +1 -1
  290. package/dist/recording-controller/index.d.ts +15 -1
  291. package/dist/recording-controller/index.js +57 -46
  292. package/dist/recording-controller/index.js.map +1 -1
  293. package/dist/recording-controller/util.d.ts +5 -4
  294. package/dist/recording-controller/util.js +10 -10
  295. package/dist/recording-controller/util.js.map +1 -1
  296. package/dist/roap/index.d.ts +9 -47
  297. package/dist/roap/index.js +101 -235
  298. package/dist/roap/index.js.map +1 -1
  299. package/dist/roap/request.d.ts +18 -12
  300. package/dist/roap/request.js +126 -180
  301. package/dist/roap/request.js.map +1 -1
  302. package/dist/roap/turnDiscovery.d.ts +27 -16
  303. package/dist/roap/turnDiscovery.js +115 -105
  304. package/dist/roap/turnDiscovery.js.map +1 -1
  305. package/dist/rtcMetrics/constants.d.ts +4 -0
  306. package/dist/rtcMetrics/constants.js +11 -0
  307. package/dist/rtcMetrics/constants.js.map +1 -0
  308. package/dist/rtcMetrics/index.d.ts +54 -0
  309. package/dist/rtcMetrics/index.js +140 -0
  310. package/dist/rtcMetrics/index.js.map +1 -0
  311. package/dist/statsAnalyzer/global.d.ts +1 -83
  312. package/dist/statsAnalyzer/global.js +2 -85
  313. package/dist/statsAnalyzer/global.js.map +1 -1
  314. package/dist/statsAnalyzer/index.d.ts +50 -30
  315. package/dist/statsAnalyzer/index.js +435 -510
  316. package/dist/statsAnalyzer/index.js.map +1 -1
  317. package/dist/statsAnalyzer/mqaUtil.d.ts +8 -6
  318. package/dist/statsAnalyzer/mqaUtil.js +120 -83
  319. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  320. package/dist/transcription/index.js +1 -2
  321. package/dist/transcription/index.js.map +1 -1
  322. package/dist/webinar/collection.d.ts +16 -0
  323. package/dist/webinar/collection.js +43 -0
  324. package/dist/webinar/collection.js.map +1 -0
  325. package/dist/webinar/index.d.ts +5 -0
  326. package/dist/webinar/index.js +68 -0
  327. package/dist/webinar/index.js.map +1 -0
  328. package/package.json +38 -26
  329. package/src/annotation/annotation.types.ts +50 -0
  330. package/src/annotation/constants.ts +36 -0
  331. package/src/annotation/index.ts +328 -0
  332. package/src/breakouts/README.md +220 -0
  333. package/src/breakouts/breakout.ts +188 -0
  334. package/src/breakouts/collection.ts +19 -0
  335. package/src/breakouts/edit-lock-error.ts +25 -0
  336. package/src/breakouts/events.ts +56 -0
  337. package/src/breakouts/index.ts +925 -0
  338. package/src/breakouts/request.ts +55 -0
  339. package/src/breakouts/utils.ts +57 -0
  340. package/src/common/errors/no-meeting-info.ts +24 -0
  341. package/src/common/errors/webex-errors.ts +36 -12
  342. package/src/common/logs/logger-proxy.ts +1 -1
  343. package/src/common/logs/request.ts +5 -1
  344. package/src/common/queue.ts +22 -8
  345. package/src/config.ts +6 -7
  346. package/src/constants.ts +244 -97
  347. package/src/controls-options-manager/enums.ts +12 -0
  348. package/src/controls-options-manager/index.ts +116 -21
  349. package/src/controls-options-manager/types.ts +59 -0
  350. package/src/controls-options-manager/util.ts +294 -14
  351. package/src/index.ts +44 -0
  352. package/src/interceptors/index.ts +3 -0
  353. package/src/interceptors/locusRetry.ts +67 -0
  354. package/src/interpretation/README.md +60 -0
  355. package/src/interpretation/collection.ts +19 -0
  356. package/src/interpretation/index.ts +332 -0
  357. package/src/interpretation/siLanguage.ts +18 -0
  358. package/src/locus-info/controlsUtils.ts +110 -0
  359. package/src/locus-info/index.ts +449 -61
  360. package/src/locus-info/infoUtils.ts +14 -2
  361. package/src/locus-info/mediaSharesUtils.ts +64 -0
  362. package/src/locus-info/parser.ts +258 -47
  363. package/src/locus-info/selfUtils.ts +85 -2
  364. package/src/media/index.ts +153 -370
  365. package/src/media/properties.ts +106 -136
  366. package/src/media/util.ts +0 -21
  367. package/src/mediaQualityMetrics/config.ts +244 -377
  368. package/src/meeting/in-meeting-actions.ts +176 -0
  369. package/src/meeting/index.ts +3944 -2489
  370. package/src/meeting/locusMediaRequest.ts +313 -0
  371. package/src/meeting/muteState.ts +224 -138
  372. package/src/meeting/request.ts +207 -127
  373. package/src/meeting/request.type.ts +13 -0
  374. package/src/meeting/util.ts +590 -423
  375. package/src/meeting-info/index.ts +81 -8
  376. package/src/meeting-info/meeting-info-v2.ts +163 -13
  377. package/src/meeting-info/util.ts +1 -1
  378. package/src/meeting-info/utilv2.ts +28 -28
  379. package/src/meetings/collection.ts +33 -0
  380. package/src/meetings/index.ts +487 -126
  381. package/src/meetings/meetings.types.ts +12 -0
  382. package/src/meetings/request.ts +2 -0
  383. package/src/meetings/util.ts +116 -5
  384. package/src/member/index.ts +43 -1
  385. package/src/member/types.ts +38 -0
  386. package/src/member/util.ts +125 -28
  387. package/src/members/collection.ts +8 -0
  388. package/src/members/index.ts +187 -52
  389. package/src/members/request.ts +87 -27
  390. package/src/members/util.ts +332 -291
  391. package/src/metrics/constants.ts +15 -6
  392. package/src/metrics/index.ts +1 -471
  393. package/src/multistream/mediaRequestManager.ts +440 -0
  394. package/src/multistream/receiveSlot.ts +184 -0
  395. package/src/multistream/receiveSlotManager.ts +166 -0
  396. package/src/multistream/remoteMedia.ts +254 -0
  397. package/src/multistream/remoteMediaGroup.ts +284 -0
  398. package/src/multistream/remoteMediaManager.ts +1145 -0
  399. package/src/multistream/sendSlotManager.ts +170 -0
  400. package/src/networkQualityMonitor/index.ts +6 -6
  401. package/src/reachability/clusterReachability.ts +320 -0
  402. package/src/reachability/index.ts +243 -347
  403. package/src/reachability/request.ts +17 -8
  404. package/src/reachability/util.ts +24 -0
  405. package/src/reactions/constants.ts +4 -0
  406. package/src/reactions/reactions.ts +4 -4
  407. package/src/reactions/reactions.type.ts +30 -4
  408. package/src/reconnection-manager/index.ts +168 -156
  409. package/src/recording-controller/index.ts +20 -3
  410. package/src/recording-controller/util.ts +26 -9
  411. package/src/roap/index.ts +98 -241
  412. package/src/roap/request.ts +74 -148
  413. package/src/roap/turnDiscovery.ts +62 -56
  414. package/src/rtcMetrics/constants.ts +3 -0
  415. package/src/rtcMetrics/index.ts +124 -0
  416. package/src/statsAnalyzer/global.ts +1 -84
  417. package/src/statsAnalyzer/index.ts +477 -643
  418. package/src/statsAnalyzer/mqaUtil.ts +115 -114
  419. package/src/webinar/collection.ts +31 -0
  420. package/src/webinar/index.ts +62 -0
  421. package/test/integration/spec/converged-space-meetings.js +233 -0
  422. package/test/integration/spec/journey.js +320 -264
  423. package/test/integration/spec/space-meeting.js +77 -4
  424. package/test/unit/spec/annotation/index.ts +418 -0
  425. package/test/unit/spec/breakouts/breakout.ts +237 -0
  426. package/test/unit/spec/breakouts/collection.ts +15 -0
  427. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  428. package/test/unit/spec/breakouts/events.ts +89 -0
  429. package/test/unit/spec/breakouts/index.ts +1790 -0
  430. package/test/unit/spec/breakouts/request.ts +104 -0
  431. package/test/unit/spec/breakouts/utils.js +72 -0
  432. package/test/unit/spec/common/queue.js +31 -2
  433. package/test/unit/spec/controls-options-manager/index.js +163 -0
  434. package/test/unit/spec/controls-options-manager/util.js +576 -60
  435. package/test/unit/spec/fixture/locus.js +1 -0
  436. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  437. package/test/unit/spec/interpretation/collection.ts +15 -0
  438. package/test/unit/spec/interpretation/index.ts +589 -0
  439. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  440. package/test/unit/spec/locus-info/controlsUtils.js +323 -30
  441. package/test/unit/spec/locus-info/index.js +1390 -16
  442. package/test/unit/spec/locus-info/infoUtils.js +54 -16
  443. package/test/unit/spec/locus-info/lib/SeqCmp.json +16 -0
  444. package/test/unit/spec/locus-info/lib/selfConstant.js +48 -0
  445. package/test/unit/spec/locus-info/mediaSharesUtils.ts +32 -0
  446. package/test/unit/spec/locus-info/parser.js +116 -35
  447. package/test/unit/spec/locus-info/selfUtils.js +275 -0
  448. package/test/unit/spec/media/index.ts +290 -0
  449. package/test/unit/spec/media/properties.ts +75 -84
  450. package/test/unit/spec/meeting/in-meeting-actions.ts +86 -0
  451. package/test/unit/spec/meeting/index.js +8187 -2769
  452. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  453. package/test/unit/spec/meeting/muteState.js +409 -213
  454. package/test/unit/spec/meeting/request.js +512 -42
  455. package/test/unit/spec/meeting/utils.js +741 -24
  456. package/test/unit/spec/meeting-info/index.js +300 -0
  457. package/test/unit/spec/meeting-info/meetinginfov2.js +527 -5
  458. package/test/unit/spec/meeting-info/utilv2.js +21 -0
  459. package/test/unit/spec/meetings/collection.js +26 -0
  460. package/test/unit/spec/meetings/index.js +1313 -243
  461. package/test/unit/spec/meetings/utils.js +202 -2
  462. package/test/unit/spec/member/index.js +32 -9
  463. package/test/unit/spec/member/util.js +499 -61
  464. package/test/unit/spec/members/index.js +394 -5
  465. package/test/unit/spec/members/request.js +206 -27
  466. package/test/unit/spec/members/utils.js +173 -38
  467. package/test/unit/spec/metrics/index.js +1 -50
  468. package/test/unit/spec/multistream/mediaRequestManager.ts +1418 -0
  469. package/test/unit/spec/multistream/receiveSlot.ts +163 -0
  470. package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
  471. package/test/unit/spec/multistream/remoteMedia.ts +255 -0
  472. package/test/unit/spec/multistream/remoteMediaGroup.ts +662 -0
  473. package/test/unit/spec/multistream/remoteMediaManager.ts +1924 -0
  474. package/test/unit/spec/multistream/sendSlotManager.ts +242 -0
  475. package/test/unit/spec/networkQualityMonitor/index.js +4 -4
  476. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  477. package/test/unit/spec/reachability/index.ts +531 -24
  478. package/test/unit/spec/reachability/request.js +68 -0
  479. package/test/unit/spec/reachability/util.ts +40 -0
  480. package/test/unit/spec/reconnection-manager/index.js +162 -24
  481. package/test/unit/spec/recording-controller/index.js +293 -218
  482. package/test/unit/spec/recording-controller/util.js +223 -96
  483. package/test/unit/spec/roap/index.ts +200 -76
  484. package/test/unit/spec/roap/request.ts +255 -0
  485. package/test/unit/spec/roap/turnDiscovery.ts +86 -48
  486. package/test/unit/spec/rtcMetrics/index.ts +93 -0
  487. package/test/unit/spec/stats-analyzer/index.js +261 -167
  488. package/test/unit/spec/webinar/collection.ts +13 -0
  489. package/test/unit/spec/webinar/index.ts +60 -0
  490. package/test/utils/constants.js +9 -0
  491. package/test/utils/integrationTestUtils.js +46 -0
  492. package/test/utils/testUtils.js +0 -45
  493. package/test/utils/webex-config.js +4 -0
  494. package/test/utils/webex-test-users.js +7 -3
  495. package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
  496. package/dist/meeting/effectsState.d.ts +0 -42
  497. package/dist/meeting/effectsState.js +0 -260
  498. package/dist/meeting/effectsState.js.map +0 -1
  499. package/dist/metrics/config.d.ts +0 -169
  500. package/dist/metrics/config.js +0 -289
  501. package/dist/metrics/config.js.map +0 -1
  502. package/dist/peer-connection-manager/index.d.ts +0 -6
  503. package/dist/peer-connection-manager/index.js +0 -671
  504. package/dist/peer-connection-manager/index.js.map +0 -1
  505. package/dist/peer-connection-manager/util.d.ts +0 -6
  506. package/dist/peer-connection-manager/util.js +0 -110
  507. package/dist/peer-connection-manager/util.js.map +0 -1
  508. package/dist/roap/collection.d.ts +0 -10
  509. package/dist/roap/collection.js +0 -63
  510. package/dist/roap/collection.js.map +0 -1
  511. package/dist/roap/handler.d.ts +0 -47
  512. package/dist/roap/handler.js +0 -279
  513. package/dist/roap/handler.js.map +0 -1
  514. package/dist/roap/state.d.ts +0 -9
  515. package/dist/roap/state.js +0 -127
  516. package/dist/roap/state.js.map +0 -1
  517. package/dist/roap/util.d.ts +0 -2
  518. package/dist/roap/util.js +0 -76
  519. package/dist/roap/util.js.map +0 -1
  520. package/src/index.js +0 -15
  521. package/src/meeting/effectsState.ts +0 -209
  522. package/src/metrics/config.ts +0 -485
  523. package/src/peer-connection-manager/index.ts +0 -847
  524. package/src/peer-connection-manager/util.ts +0 -119
  525. package/src/roap/collection.ts +0 -62
  526. package/src/roap/handler.ts +0 -294
  527. package/src/roap/state.ts +0 -156
  528. package/src/roap/util.ts +0 -100
  529. package/test/unit/spec/meeting/effectsState.js +0 -281
  530. package/test/unit/spec/peerconnection-manager/index.js +0 -218
  531. package/test/unit/spec/peerconnection-manager/utils.js +0 -49
  532. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -388
  533. package/test/unit/spec/roap/util.js +0 -30
  534. /package/dist/common/errors/{reclaim-host-role-error.d.ts → reclaim-host-role-errors.d.ts} +0 -0
  535. /package/src/common/errors/{reclaim-host-role-error.ts → reclaim-host-role-errors.ts} +0 -0
@@ -10,43 +10,93 @@ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime-cor
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
13
- var _difference2 = _interopRequireDefault(require("lodash/difference"));
13
+ var _lodash = require("lodash");
14
14
  var _queue = _interopRequireDefault(require("../common/queue"));
15
15
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
16
+ var _metrics = _interopRequireDefault(require("../metrics"));
17
+ var _constants = _interopRequireDefault(require("../metrics/constants"));
16
18
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
19
+ var MAX_OOO_DELTA_COUNT = 5; // when we receive an out-of-order delta and the queue builds up to MAX_OOO_DELTA_COUNT, we do a sync with Locus
20
+ var OOO_DELTA_WAIT_TIME = 10000; // [ms] minimum wait time before we do a sync if we get out-of-order deltas
21
+ var OOO_DELTA_WAIT_TIME_RANDOM_DELAY = 5000; // [ms] max random delay added to OOO_DELTA_WAIT_TIME
17
22
  /**
18
23
  * Locus Delta Parser
19
24
  * @private
20
25
  * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events
21
26
  */
22
- var Parser = /*#__PURE__*/function () {
23
- // processing status
24
-
25
- // loci comparison states
26
-
27
+ var Parser = exports.default = /*#__PURE__*/function () {
27
28
  /**
28
29
  * @constructs Parser
29
30
  */
30
31
  function Parser() {
31
32
  (0, _classCallCheck2.default)(this, Parser);
33
+ // processing status
34
+ (0, _defineProperty2.default)(this, "status", void 0);
32
35
  (0, _defineProperty2.default)(this, "queue", void 0);
33
36
  (0, _defineProperty2.default)(this, "workingCopy", void 0);
34
- this.queue = new _queue.default();
35
- // @ts-ignore - This is declared as static class member and again being initialized here from same
36
- this.status = Parser.status.IDLE;
37
+ (0, _defineProperty2.default)(this, "syncTimer", void 0);
38
+ var deltaCompareFunc = function deltaCompareFunc(left, right) {
39
+ var _Parser$loci = Parser.loci,
40
+ LT = _Parser$loci.LT,
41
+ GT = _Parser$loci.GT;
42
+ var extract = Parser.extractComparisonState;
43
+ if (Parser.isSequenceEmpty(left)) {
44
+ return -1;
45
+ }
46
+ if (Parser.isSequenceEmpty(right)) {
47
+ return 1;
48
+ }
49
+ var result = extract(Parser.compareSequence(left.baseSequence, right.baseSequence));
50
+ if (result === LT) {
51
+ return -1;
52
+ }
53
+ if (result === GT) {
54
+ return 1;
55
+ }
56
+ return 0;
57
+ };
58
+ this.queue = new _queue.default(deltaCompareFunc);
59
+ this.status = 'IDLE';
37
60
  this.onDeltaAction = null;
38
61
  this.workingCopy = null;
62
+ this.syncTimer = undefined;
39
63
  }
40
64
 
41
65
  /**
42
- * Checks if two sequences overlap in time,
43
- * the sequence with the higher minimum value is greater.
44
- * Chooses sequence with most recent data.
45
- * @param {Types~Locus} current
46
- * @param {Types~Locus} incoming
47
- * @returns {string} loci comparison state
66
+ * Returns a debug string representing a locus delta - useful for logging
67
+ *
68
+ * @param {LocusDeltaDto} locus Locus delta
69
+ * @returns {string}
48
70
  */
49
71
  (0, _createClass2.default)(Parser, [{
72
+ key: "isNewFullLocus",
73
+ value:
74
+ /**
75
+ * Returns true if the incoming full locus DTO is newer than the current working copy
76
+ *
77
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
78
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
79
+ */
80
+ function isNewFullLocus(incomingFullDto) {
81
+ if (!Parser.isLoci(incomingFullDto)) {
82
+ _loggerProxy.default.logger.info('Locus-info:parser#isNewFullLocus --> Ignoring non-locus object.');
83
+ return false;
84
+ }
85
+ if (!this.workingCopy) {
86
+ // we don't have a working copy yet, so any full locus is better than nothing
87
+ return true;
88
+ }
89
+ var comparisonResult = Parser.compareFullDtoSequence(this.workingCopy, incomingFullDto);
90
+ return comparisonResult === Parser.loci.USE_INCOMING;
91
+ }
92
+
93
+ /**
94
+ * Compares Locus sequences
95
+ * @param {Types~Locus} current Current working copy
96
+ * @param {Types~Locus} incoming New Locus delta
97
+ * @returns {string}
98
+ */
99
+ }, {
50
100
  key: "isValidLocus",
51
101
  value:
52
102
  /**
@@ -55,19 +105,11 @@ var Parser = /*#__PURE__*/function () {
55
105
  * @returns {boolean}
56
106
  */
57
107
  function isValidLocus(newLoci) {
58
- var _this = this;
59
108
  var isValid = false;
60
- var IDLE = Parser.status.IDLE;
61
109
  var isLoci = Parser.isLoci;
62
- // @ts-ignore
63
- var setStatus = function setStatus(status) {
64
- // @ts-ignore
65
- _this.status = status;
66
- };
67
110
 
68
111
  // one or both objects are not locus delta events
69
112
  if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {
70
- setStatus(IDLE);
71
113
  _loggerProxy.default.logger.info('Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:', this.workingCopy, 'newLoci:', newLoci);
72
114
  } else {
73
115
  isValid = true;
@@ -89,18 +131,20 @@ var Parser = /*#__PURE__*/function () {
89
131
  * @returns {undefined}
90
132
  */
91
133
  function nextEvent() {
92
- // @ts-ignore
93
- if (this.status === Parser.status.PAUSED) {
134
+ if (this.status === 'PAUSED') {
94
135
  _loggerProxy.default.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');
95
136
  return;
96
137
  }
138
+ if (this.status === 'BLOCKED') {
139
+ _loggerProxy.default.logger.info('Locus-info:parser#nextEvent --> Locus parser blocked by out-of-order delta.');
140
+ return;
141
+ }
97
142
 
98
143
  // continue processing until queue is empty
99
144
  if (this.queue.size() > 0) {
100
145
  this.processDeltaEvent();
101
146
  } else {
102
- // @ts-ignore
103
- this.status = Parser.status.IDLE;
147
+ this.status = 'IDLE';
104
148
  }
105
149
  }
106
150
 
@@ -111,7 +155,7 @@ var Parser = /*#__PURE__*/function () {
111
155
  * @param {Types~Locus} locus Locus delta
112
156
  * @returns {undefined}
113
157
  */
114
- // eslint-disable-next-line no-unused-vars
158
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
115
159
  }, {
116
160
  key: "onDeltaAction",
117
161
  value: function onDeltaAction(action, locus) {}
@@ -126,14 +170,18 @@ var Parser = /*#__PURE__*/function () {
126
170
  value: function onDeltaEvent(loci) {
127
171
  // enqueue the new loci
128
172
  this.queue.enqueue(loci);
129
- // start processing events in the queue if idle
130
- // and a function handler is defined
131
- // @ts-ignore
132
- if (this.status === Parser.status.IDLE && this.onDeltaAction) {
133
- // Update status, ensure we only process one event at a time.
134
- // @ts-ignore
135
- this.status = Parser.status.WORKING;
136
- this.processDeltaEvent();
173
+ if (this.onDeltaAction) {
174
+ if (this.status === 'BLOCKED') {
175
+ if (this.queue.size() > MAX_OOO_DELTA_COUNT) {
176
+ this.triggerSync('queue too big, blocked on out-of-order delta');
177
+ } else {
178
+ this.processDeltaEvent();
179
+ }
180
+ } else if (this.status === 'IDLE') {
181
+ // Update status, ensure we only process one event at a time.
182
+ this.status = 'WORKING';
183
+ this.processDeltaEvent();
184
+ }
137
185
  }
138
186
  }
139
187
 
@@ -151,11 +199,61 @@ var Parser = /*#__PURE__*/function () {
151
199
  * @returns {undefined}
152
200
  */
153
201
  function pause() {
154
- // @ts-ignore
155
- this.status = Parser.status.PAUSED;
202
+ this.status = 'PAUSED';
156
203
  _loggerProxy.default.logger.info('Locus-info:parser#pause --> Locus parser paused.');
157
204
  }
158
205
 
206
+ /**
207
+ * Triggers a sync with Locus
208
+ *
209
+ * @param {string} reason used just for logging
210
+ * @returns {undefined}
211
+ */
212
+ }, {
213
+ key: "triggerSync",
214
+ value: function triggerSync(reason) {
215
+ _loggerProxy.default.logger.info("Locus-info:parser#triggerSync --> doing sync, reason: ".concat(reason));
216
+ this.stopSyncTimer();
217
+ this.pause();
218
+ this.onDeltaAction(Parser.loci.DESYNC, this.workingCopy);
219
+ }
220
+
221
+ /**
222
+ * Starts a timer with a random delay. When that timer expires we will do a sync.
223
+ *
224
+ * The main purpose of this timer is to handle a case when we get some out-of-order deltas,
225
+ * so we start waiting to receive the missing delta. If that delta never arrives, this timer
226
+ * will trigger a sync with Locus.
227
+ *
228
+ * @returns {undefined}
229
+ */
230
+ }, {
231
+ key: "startSyncTimer",
232
+ value: function startSyncTimer() {
233
+ var _this = this;
234
+ if (this.syncTimer === undefined) {
235
+ var timeout = OOO_DELTA_WAIT_TIME + Math.random() * OOO_DELTA_WAIT_TIME_RANDOM_DELAY;
236
+ this.syncTimer = setTimeout(function () {
237
+ _this.syncTimer = undefined;
238
+ _this.triggerSync('timer expired, blocked on out-of-order delta');
239
+ }, timeout);
240
+ }
241
+ }
242
+
243
+ /**
244
+ * Stops the timer for triggering a sync
245
+ *
246
+ * @returns {undefined}
247
+ */
248
+ }, {
249
+ key: "stopSyncTimer",
250
+ value: function stopSyncTimer() {
251
+ if (this.syncTimer !== undefined) {
252
+ clearTimeout(this.syncTimer);
253
+ this.syncTimer = undefined;
254
+ }
255
+ }
256
+
159
257
  /**
160
258
  * Processes next locus delta in the queue,
161
259
  * continues until the queue is empty
@@ -165,12 +263,15 @@ var Parser = /*#__PURE__*/function () {
165
263
  }, {
166
264
  key: "processDeltaEvent",
167
265
  value: function processDeltaEvent() {
168
- var _Parser$loci = Parser.loci,
169
- DESYNC = _Parser$loci.DESYNC,
170
- USE_INCOMING = _Parser$loci.USE_INCOMING;
266
+ var _Parser$loci2 = Parser.loci,
267
+ DESYNC = _Parser$loci2.DESYNC,
268
+ USE_INCOMING = _Parser$loci2.USE_INCOMING,
269
+ WAIT = _Parser$loci2.WAIT,
270
+ LOCUS_URL_CHANGED = _Parser$loci2.LOCUS_URL_CHANGED;
171
271
  var extract = Parser.extractComparisonState;
172
272
  var newLoci = this.queue.dequeue();
173
273
  if (!this.isValidLocus(newLoci)) {
274
+ this.nextEvent();
174
275
  return;
175
276
  }
176
277
  var result = Parser.compare(this.workingCopy, newLoci);
@@ -179,20 +280,42 @@ var Parser = /*#__PURE__*/function () {
179
280
  // limited debugging, use chrome extension
180
281
  // for full debugging.
181
282
  _loggerProxy.default.logger.debug("Locus-info:parser#processDeltaEvent --> Locus Debug: ".concat(result));
182
- if (lociComparison === DESYNC) {
183
- // wait for desync response
184
- this.pause();
185
- } else if (lociComparison === USE_INCOMING) {
186
- // update working copy for future comparisons.
187
- // Note: The working copy of parser gets updated in .onFullLocus()
188
- // and here when USE_INCOMING locus.
189
- this.workingCopy = newLoci;
283
+ var needToWait = false;
284
+ switch (lociComparison) {
285
+ case DESYNC:
286
+ // wait for desync response
287
+ this.pause();
288
+ break;
289
+ case USE_INCOMING:
290
+ case LOCUS_URL_CHANGED:
291
+ // update working copy for future comparisons.
292
+ // Note: The working copy of parser gets updated in .onFullLocus()
293
+ // and here when USE_INCOMING or LOCUS_URL_CHANGED locus.
294
+ this.workingCopy = newLoci;
295
+ break;
296
+ case WAIT:
297
+ // we've taken newLoci from the front of the queue, so put it back there as we have to wait
298
+ // for the one that should be in front of it, before we can process it
299
+ this.queue.enqueue(newLoci);
300
+ needToWait = true;
301
+ break;
302
+ default:
303
+ break;
304
+ }
305
+ if (needToWait) {
306
+ this.status = 'BLOCKED';
307
+ this.startSyncTimer();
308
+ } else {
309
+ this.stopSyncTimer();
310
+ if (this.status === 'BLOCKED') {
311
+ // we are not blocked anymore
312
+ this.status = 'WORKING';
313
+ _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> received delta that we were waiting for ".concat(Parser.locus2string(newLoci), ", not blocked anymore"));
314
+ }
190
315
  }
191
316
  if (this.onDeltaAction) {
192
- _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> Locus Delta Action: ".concat(lociComparison));
193
-
194
- // eslint-disable-next-line no-useless-call
195
- this.onDeltaAction.call(this, lociComparison, newLoci);
317
+ _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> Locus Delta ".concat(Parser.locus2string(newLoci), ", Action: ").concat(lociComparison));
318
+ this.onDeltaAction(lociComparison, newLoci);
196
319
  }
197
320
  this.nextEvent();
198
321
  }
@@ -205,8 +328,7 @@ var Parser = /*#__PURE__*/function () {
205
328
  key: "resume",
206
329
  value: function resume() {
207
330
  _loggerProxy.default.logger.info('Locus-info:parser#resume --> Locus parser resumed.');
208
- // @ts-ignore
209
- this.status = Parser.status.WORKING;
331
+ this.status = 'WORKING';
210
332
  this.nextEvent();
211
333
  }
212
334
 
@@ -217,6 +339,24 @@ var Parser = /*#__PURE__*/function () {
217
339
  * @returns {object} Debug message
218
340
  */
219
341
  }], [{
342
+ key: "locus2string",
343
+ value: function locus2string(locus) {
344
+ var _locus$sequence;
345
+ if (!((_locus$sequence = locus.sequence) !== null && _locus$sequence !== void 0 && _locus$sequence.entries)) {
346
+ return 'invalid';
347
+ }
348
+ return locus.sequence.entries.length ? "seq=".concat(locus.sequence.entries.at(-1)) : 'empty';
349
+ }
350
+
351
+ /**
352
+ * Checks if two sequences overlap in time,
353
+ * the sequence with the higher minimum value is greater.
354
+ * Chooses sequence with most recent data.
355
+ * @param {Types~Locus} current
356
+ * @param {Types~Locus} incoming
357
+ * @returns {string} loci comparison state
358
+ */
359
+ }, {
220
360
  key: "checkSequenceOverlap",
221
361
  value: function checkSequenceOverlap(current, incoming) {
222
362
  var comparison = null;
@@ -381,12 +521,14 @@ var Parser = /*#__PURE__*/function () {
381
521
  }, {
382
522
  key: "compareDelta",
383
523
  value: function compareDelta(current, incoming) {
384
- var _Parser$loci2 = Parser.loci,
385
- LT = _Parser$loci2.LT,
386
- GT = _Parser$loci2.GT,
387
- EQ = _Parser$loci2.EQ,
388
- DESYNC = _Parser$loci2.DESYNC,
389
- USE_INCOMING = _Parser$loci2.USE_INCOMING;
524
+ var _Parser$loci3 = Parser.loci,
525
+ LT = _Parser$loci3.LT,
526
+ GT = _Parser$loci3.GT,
527
+ EQ = _Parser$loci3.EQ,
528
+ DESYNC = _Parser$loci3.DESYNC,
529
+ USE_INCOMING = _Parser$loci3.USE_INCOMING,
530
+ WAIT = _Parser$loci3.WAIT,
531
+ LOCUS_URL_CHANGED = _Parser$loci3.LOCUS_URL_CHANGED;
390
532
  var extract = Parser.extractComparisonState;
391
533
  var pack = Parser.packComparisonResult;
392
534
  var result = Parser.compareSequence(current.sequence, incoming.sequence);
@@ -394,12 +536,32 @@ var Parser = /*#__PURE__*/function () {
394
536
  if (comparison !== LT) {
395
537
  return pack(Parser.compareToAction(comparison), result);
396
538
  }
539
+ if (incoming.url !== current.url) {
540
+ // when moving to/from a breakout session, the locus URL will change and also
541
+ // the baseSequence, making incoming and current incomparable, so use a
542
+ // unique comparison state
543
+ return pack(LOCUS_URL_CHANGED, result);
544
+ }
397
545
  comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);
398
546
  switch (extract(comparison)) {
399
547
  case GT:
400
548
  case EQ:
401
549
  comparison = USE_INCOMING;
402
550
  break;
551
+ case LT:
552
+ if (extract(Parser.compareSequence(incoming.baseSequence, incoming.sequence)) === EQ) {
553
+ // special case where Locus sends a delta with baseSequence === sequence to trigger a sync,
554
+ // because the delta event is too large to be sent over mercury connection
555
+ comparison = DESYNC;
556
+ } else {
557
+ // the incoming locus has baseSequence from the future, so it is out-of-order,
558
+ // we are missing 1 or more locus that should be in front of it, we need to wait for it
559
+ comparison = WAIT;
560
+ _metrics.default.sendBehavioralMetric(_constants.default.LOCUS_DELTA_OUT_OF_ORDER, {
561
+ stack: new Error().stack
562
+ });
563
+ }
564
+ break;
403
565
  default:
404
566
  comparison = DESYNC;
405
567
  }
@@ -407,11 +569,24 @@ var Parser = /*#__PURE__*/function () {
407
569
  }
408
570
 
409
571
  /**
410
- * Compares Locus sequences
572
+ * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas
573
+ *
411
574
  * @param {Types~Locus} current Current working copy
412
- * @param {Types~Locus} incoming New Locus delta
413
- * @returns {string}
575
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
576
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
414
577
  */
578
+ }, {
579
+ key: "compareFullDtoSequence",
580
+ value: function compareFullDtoSequence(current, incomingFullDto) {
581
+ if (Parser.isSequenceEmpty(current) || Parser.isSequenceEmpty(incomingFullDto)) {
582
+ return Parser.loci.USE_INCOMING;
583
+ }
584
+
585
+ // the sequence.entries list will always contain at least 1 entry
586
+ // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm
587
+
588
+ return incomingFullDto.sequence.entries.slice(-1)[0] > current.sequence.entries.slice(-1)[0] ? Parser.loci.USE_INCOMING : Parser.loci.USE_CURRENT;
589
+ }
415
590
  }, {
416
591
  key: "compareSequence",
417
592
  value: function compareSequence(current, incoming) {
@@ -452,14 +627,14 @@ var Parser = /*#__PURE__*/function () {
452
627
  }, {
453
628
  key: "compareToAction",
454
629
  value: function compareToAction(result) {
455
- var _Parser$loci3 = Parser.loci,
456
- DESYNC = _Parser$loci3.DESYNC,
457
- EQ = _Parser$loci3.EQ,
458
- ERROR = _Parser$loci3.ERROR,
459
- GT = _Parser$loci3.GT,
460
- LT = _Parser$loci3.LT,
461
- USE_CURRENT = _Parser$loci3.USE_CURRENT,
462
- USE_INCOMING = _Parser$loci3.USE_INCOMING;
630
+ var _Parser$loci4 = Parser.loci,
631
+ DESYNC = _Parser$loci4.DESYNC,
632
+ EQ = _Parser$loci4.EQ,
633
+ ERROR = _Parser$loci4.ERROR,
634
+ GT = _Parser$loci4.GT,
635
+ LT = _Parser$loci4.LT,
636
+ USE_CURRENT = _Parser$loci4.USE_CURRENT,
637
+ USE_INCOMING = _Parser$loci4.USE_INCOMING;
463
638
  var action = ERROR;
464
639
  switch (result) {
465
640
  case EQ:
@@ -541,7 +716,7 @@ var Parser = /*#__PURE__*/function () {
541
716
  }, {
542
717
  key: "getUniqueSequences",
543
718
  value: function getUniqueSequences(baseLoci, otherLoci) {
544
- var diff = (0, _difference2.default)(baseLoci.entries, otherLoci.entries);
719
+ var diff = (0, _lodash.difference)(baseLoci.entries, otherLoci.entries);
545
720
  var start = otherLoci.start,
546
721
  end = otherLoci.end;
547
722
  return Parser.getNumbersOutOfRange(diff, start, end);
@@ -674,12 +849,8 @@ var Parser = /*#__PURE__*/function () {
674
849
  }]);
675
850
  return Parser;
676
851
  }();
677
- exports.default = Parser;
678
- (0, _defineProperty2.default)(Parser, "status", {
679
- IDLE: 'IDLE',
680
- PAUSED: 'PAUSED',
681
- WORKING: 'WORKING'
682
- });
852
+ // received an out-of-order delta, so waiting for the missing one
853
+ // loci comparison states
683
854
  (0, _defineProperty2.default)(Parser, "loci", {
684
855
  EQ: 'EQUAL',
685
856
  GT: 'GREATER_THAN',
@@ -687,6 +858,8 @@ exports.default = Parser;
687
858
  DESYNC: 'DESYNC',
688
859
  USE_INCOMING: 'USE_INCOMING',
689
860
  USE_CURRENT: 'USE_CURRENT',
690
- ERROR: 'ERROR'
861
+ WAIT: 'WAIT',
862
+ ERROR: 'ERROR',
863
+ LOCUS_URL_CHANGED: 'LOCUS_URL_CHANGED'
691
864
  });
692
865
  //# sourceMappingURL=parser.js.map