@webex/plugin-meetings 3.0.0-beta.4 → 3.0.0-beta.400

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 (629) hide show
  1. package/README.md +58 -8
  2. package/UPGRADING.md +9 -9
  3. package/browsers.js +19 -24
  4. package/dist/annotation/annotation.types.js +7 -0
  5. package/dist/annotation/annotation.types.js.map +1 -0
  6. package/dist/annotation/constants.js +49 -0
  7. package/dist/annotation/constants.js.map +1 -0
  8. package/dist/annotation/index.js +342 -0
  9. package/dist/annotation/index.js.map +1 -0
  10. package/dist/breakouts/breakout.js +216 -0
  11. package/dist/breakouts/breakout.js.map +1 -0
  12. package/dist/breakouts/collection.js +23 -0
  13. package/dist/breakouts/collection.js.map +1 -0
  14. package/dist/breakouts/edit-lock-error.js +52 -0
  15. package/dist/breakouts/edit-lock-error.js.map +1 -0
  16. package/dist/breakouts/events.js +45 -0
  17. package/dist/breakouts/events.js.map +1 -0
  18. package/dist/breakouts/index.js +1048 -0
  19. package/dist/breakouts/index.js.map +1 -0
  20. package/dist/breakouts/request.js +78 -0
  21. package/dist/breakouts/request.js.map +1 -0
  22. package/dist/breakouts/utils.js +67 -0
  23. package/dist/breakouts/utils.js.map +1 -0
  24. package/dist/common/browser-detection.js +1 -20
  25. package/dist/common/browser-detection.js.map +1 -1
  26. package/dist/common/collection.js +5 -20
  27. package/dist/common/collection.js.map +1 -1
  28. package/dist/common/config.js +0 -7
  29. package/dist/common/config.js.map +1 -1
  30. package/dist/common/errors/captcha-error.js +10 -24
  31. package/dist/common/errors/captcha-error.js.map +1 -1
  32. package/dist/common/errors/intent-to-join.js +11 -24
  33. package/dist/common/errors/intent-to-join.js.map +1 -1
  34. package/dist/common/errors/join-meeting.js +12 -25
  35. package/dist/common/errors/join-meeting.js.map +1 -1
  36. package/dist/common/errors/media.js +10 -24
  37. package/dist/common/errors/media.js.map +1 -1
  38. package/dist/common/errors/no-meeting-info.js +51 -0
  39. package/dist/common/errors/no-meeting-info.js.map +1 -0
  40. package/dist/common/errors/parameter.js +5 -33
  41. package/dist/common/errors/parameter.js.map +1 -1
  42. package/dist/common/errors/password-error.js +10 -24
  43. package/dist/common/errors/password-error.js.map +1 -1
  44. package/dist/common/errors/permission.js +9 -23
  45. package/dist/common/errors/permission.js.map +1 -1
  46. package/dist/common/errors/reclaim-host-role-errors.js +158 -0
  47. package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
  48. package/dist/common/errors/reconnection-in-progress.js +0 -17
  49. package/dist/common/errors/reconnection-in-progress.js.map +1 -1
  50. package/dist/common/errors/reconnection.js +10 -24
  51. package/dist/common/errors/reconnection.js.map +1 -1
  52. package/dist/common/errors/stats.js +10 -24
  53. package/dist/common/errors/stats.js.map +1 -1
  54. package/dist/common/errors/webex-errors.js +54 -48
  55. package/dist/common/errors/webex-errors.js.map +1 -1
  56. package/dist/common/errors/webex-meetings-error.js +5 -25
  57. package/dist/common/errors/webex-meetings-error.js.map +1 -1
  58. package/dist/common/events/events-scope.js +0 -22
  59. package/dist/common/events/events-scope.js.map +1 -1
  60. package/dist/common/events/events.js +0 -23
  61. package/dist/common/events/events.js.map +1 -1
  62. package/dist/common/events/trigger-proxy.js +0 -12
  63. package/dist/common/events/trigger-proxy.js.map +1 -1
  64. package/dist/common/events/util.js +0 -15
  65. package/dist/common/events/util.js.map +1 -1
  66. package/dist/common/logs/logger-config.js +0 -4
  67. package/dist/common/logs/logger-config.js.map +1 -1
  68. package/dist/common/logs/logger-proxy.js +1 -8
  69. package/dist/common/logs/logger-proxy.js.map +1 -1
  70. package/dist/common/logs/request.js +41 -60
  71. package/dist/common/logs/request.js.map +1 -1
  72. package/dist/common/queue.js +28 -23
  73. package/dist/common/queue.js.map +1 -1
  74. package/dist/config.js +11 -15
  75. package/dist/config.js.map +1 -1
  76. package/dist/constants.js +347 -74
  77. package/dist/constants.js.map +1 -1
  78. package/dist/controls-options-manager/constants.js +14 -0
  79. package/dist/controls-options-manager/constants.js.map +1 -0
  80. package/dist/controls-options-manager/enums.js +27 -0
  81. package/dist/controls-options-manager/enums.js.map +1 -0
  82. package/dist/controls-options-manager/index.js +297 -0
  83. package/dist/controls-options-manager/index.js.map +1 -0
  84. package/dist/controls-options-manager/types.js +7 -0
  85. package/dist/controls-options-manager/types.js.map +1 -0
  86. package/dist/controls-options-manager/util.js +319 -0
  87. package/dist/controls-options-manager/util.js.map +1 -0
  88. package/dist/index.js +125 -18
  89. package/dist/index.js.map +1 -1
  90. package/dist/interceptors/index.js +15 -0
  91. package/dist/interceptors/index.js.map +1 -0
  92. package/dist/interceptors/locusRetry.js +93 -0
  93. package/dist/interceptors/locusRetry.js.map +1 -0
  94. package/dist/interpretation/collection.js +23 -0
  95. package/dist/interpretation/collection.js.map +1 -0
  96. package/dist/interpretation/index.js +380 -0
  97. package/dist/interpretation/index.js.map +1 -0
  98. package/dist/interpretation/siLanguage.js +25 -0
  99. package/dist/interpretation/siLanguage.js.map +1 -0
  100. package/dist/locus-info/controlsUtils.js +101 -29
  101. package/dist/locus-info/controlsUtils.js.map +1 -1
  102. package/dist/locus-info/embeddedAppsUtils.js +3 -26
  103. package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
  104. package/dist/locus-info/fullState.js +0 -15
  105. package/dist/locus-info/fullState.js.map +1 -1
  106. package/dist/locus-info/hostUtils.js +4 -12
  107. package/dist/locus-info/hostUtils.js.map +1 -1
  108. package/dist/locus-info/index.js +564 -246
  109. package/dist/locus-info/index.js.map +1 -1
  110. package/dist/locus-info/infoUtils.js +10 -38
  111. package/dist/locus-info/infoUtils.js.map +1 -1
  112. package/dist/locus-info/mediaSharesUtils.js +82 -38
  113. package/dist/locus-info/mediaSharesUtils.js.map +1 -1
  114. package/dist/locus-info/parser.js +314 -163
  115. package/dist/locus-info/parser.js.map +1 -1
  116. package/dist/locus-info/selfUtils.js +110 -92
  117. package/dist/locus-info/selfUtils.js.map +1 -1
  118. package/dist/media/index.js +107 -231
  119. package/dist/media/index.js.map +1 -1
  120. package/dist/media/properties.js +137 -222
  121. package/dist/media/properties.js.map +1 -1
  122. package/dist/media/util.js +2 -9
  123. package/dist/media/util.js.map +1 -1
  124. package/dist/mediaQualityMetrics/config.js +316 -501
  125. package/dist/mediaQualityMetrics/config.js.map +1 -1
  126. package/dist/meeting/in-meeting-actions.js +97 -14
  127. package/dist/meeting/in-meeting-actions.js.map +1 -1
  128. package/dist/meeting/index.js +5311 -3871
  129. package/dist/meeting/index.js.map +1 -1
  130. package/dist/meeting/locusMediaRequest.js +292 -0
  131. package/dist/meeting/locusMediaRequest.js.map +1 -0
  132. package/dist/meeting/muteState.js +260 -183
  133. package/dist/meeting/muteState.js.map +1 -1
  134. package/dist/meeting/request.js +421 -347
  135. package/dist/meeting/request.js.map +1 -1
  136. package/dist/meeting/request.type.js +7 -0
  137. package/dist/meeting/request.type.js.map +1 -0
  138. package/dist/meeting/state.js +21 -31
  139. package/dist/meeting/state.js.map +1 -1
  140. package/dist/meeting/util.js +672 -585
  141. package/dist/meeting/util.js.map +1 -1
  142. package/dist/meeting/voicea-meeting.js +172 -0
  143. package/dist/meeting/voicea-meeting.js.map +1 -0
  144. package/dist/meeting-info/collection.js +6 -25
  145. package/dist/meeting-info/collection.js.map +1 -1
  146. package/dist/meeting-info/index.js +87 -39
  147. package/dist/meeting-info/index.js.map +1 -1
  148. package/dist/meeting-info/meeting-info-v2.js +352 -283
  149. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  150. package/dist/meeting-info/request.js +3 -15
  151. package/dist/meeting-info/request.js.map +1 -1
  152. package/dist/meeting-info/util.js +99 -183
  153. package/dist/meeting-info/util.js.map +1 -1
  154. package/dist/meeting-info/utilv2.js +147 -234
  155. package/dist/meeting-info/utilv2.js.map +1 -1
  156. package/dist/meetings/collection.js +43 -19
  157. package/dist/meetings/collection.js.map +1 -1
  158. package/dist/meetings/index.js +895 -600
  159. package/dist/meetings/index.js.map +1 -1
  160. package/dist/meetings/meetings.types.js +7 -0
  161. package/dist/meetings/meetings.types.js.map +1 -0
  162. package/dist/meetings/request.js +26 -41
  163. package/dist/meetings/request.js.map +1 -1
  164. package/dist/meetings/util.js +184 -157
  165. package/dist/meetings/util.js.map +1 -1
  166. package/dist/member/index.js +134 -85
  167. package/dist/member/index.js.map +1 -1
  168. package/dist/member/types.js +25 -0
  169. package/dist/member/types.js.map +1 -0
  170. package/dist/member/util.js +158 -88
  171. package/dist/member/util.js.map +1 -1
  172. package/dist/members/collection.js +13 -12
  173. package/dist/members/collection.js.map +1 -1
  174. package/dist/members/index.js +194 -204
  175. package/dist/members/index.js.map +1 -1
  176. package/dist/members/request.js +113 -68
  177. package/dist/members/request.js.map +1 -1
  178. package/dist/members/types.js +15 -0
  179. package/dist/members/types.js.map +1 -0
  180. package/dist/members/util.js +324 -259
  181. package/dist/members/util.js.map +1 -1
  182. package/dist/metrics/constants.js +19 -7
  183. package/dist/metrics/constants.js.map +1 -1
  184. package/dist/metrics/index.js +11 -558
  185. package/dist/metrics/index.js.map +1 -1
  186. package/dist/multistream/mediaRequestManager.js +263 -50
  187. package/dist/multistream/mediaRequestManager.js.map +1 -1
  188. package/dist/multistream/receiveSlot.js +58 -65
  189. package/dist/multistream/receiveSlot.js.map +1 -1
  190. package/dist/multistream/receiveSlotManager.js +76 -95
  191. package/dist/multistream/receiveSlotManager.js.map +1 -1
  192. package/dist/multistream/remoteMedia.js +62 -76
  193. package/dist/multistream/remoteMedia.js.map +1 -1
  194. package/dist/multistream/remoteMediaGroup.js +82 -45
  195. package/dist/multistream/remoteMediaGroup.js.map +1 -1
  196. package/dist/multistream/remoteMediaManager.js +657 -448
  197. package/dist/multistream/remoteMediaManager.js.map +1 -1
  198. package/dist/multistream/sendSlotManager.js +255 -0
  199. package/dist/multistream/sendSlotManager.js.map +1 -0
  200. package/dist/networkQualityMonitor/index.js +40 -59
  201. package/dist/networkQualityMonitor/index.js.map +1 -1
  202. package/dist/personal-meeting-room/index.js +21 -45
  203. package/dist/personal-meeting-room/index.js.map +1 -1
  204. package/dist/personal-meeting-room/request.js +1 -31
  205. package/dist/personal-meeting-room/request.js.map +1 -1
  206. package/dist/personal-meeting-room/util.js +0 -13
  207. package/dist/personal-meeting-room/util.js.map +1 -1
  208. package/dist/reachability/clusterReachability.js +356 -0
  209. package/dist/reachability/clusterReachability.js.map +1 -0
  210. package/dist/reachability/index.js +297 -460
  211. package/dist/reachability/index.js.map +1 -1
  212. package/dist/reachability/request.js +20 -26
  213. package/dist/reachability/request.js.map +1 -1
  214. package/dist/reachability/util.js +29 -0
  215. package/dist/reachability/util.js.map +1 -0
  216. package/dist/reactions/constants.js +13 -0
  217. package/dist/reactions/constants.js.map +1 -0
  218. package/dist/reactions/reactions.js +109 -0
  219. package/dist/reactions/reactions.js.map +1 -0
  220. package/dist/reactions/reactions.type.js +36 -0
  221. package/dist/reactions/reactions.type.js.map +1 -0
  222. package/dist/reconnection-manager/index.js +413 -483
  223. package/dist/reconnection-manager/index.js.map +1 -1
  224. package/dist/recording-controller/enums.js +17 -0
  225. package/dist/recording-controller/enums.js.map +1 -0
  226. package/dist/recording-controller/index.js +362 -0
  227. package/dist/recording-controller/index.js.map +1 -0
  228. package/dist/recording-controller/util.js +64 -0
  229. package/dist/recording-controller/util.js.map +1 -0
  230. package/dist/roap/index.js +102 -86
  231. package/dist/roap/index.js.map +1 -1
  232. package/dist/roap/request.js +131 -135
  233. package/dist/roap/request.js.map +1 -1
  234. package/dist/roap/turnDiscovery.js +437 -116
  235. package/dist/roap/turnDiscovery.js.map +1 -1
  236. package/dist/rtcMetrics/constants.js +12 -0
  237. package/dist/rtcMetrics/constants.js.map +1 -0
  238. package/dist/rtcMetrics/index.js +179 -0
  239. package/dist/rtcMetrics/index.js.map +1 -0
  240. package/dist/statsAnalyzer/global.js +1 -95
  241. package/dist/statsAnalyzer/global.js.map +1 -1
  242. package/dist/statsAnalyzer/index.js +557 -583
  243. package/dist/statsAnalyzer/index.js.map +1 -1
  244. package/dist/statsAnalyzer/mqaUtil.js +326 -130
  245. package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
  246. package/dist/transcription/index.js +22 -47
  247. package/dist/transcription/index.js.map +1 -1
  248. package/dist/types/annotation/annotation.types.d.ts +42 -0
  249. package/dist/types/annotation/constants.d.ts +31 -0
  250. package/dist/types/annotation/index.d.ts +117 -0
  251. package/dist/types/breakouts/breakout.d.ts +8 -0
  252. package/dist/types/breakouts/collection.d.ts +5 -0
  253. package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
  254. package/dist/types/breakouts/events.d.ts +8 -0
  255. package/dist/types/breakouts/index.d.ts +5 -0
  256. package/dist/types/breakouts/request.d.ts +22 -0
  257. package/dist/types/breakouts/utils.d.ts +15 -0
  258. package/dist/types/common/browser-detection.d.ts +9 -0
  259. package/dist/types/common/collection.d.ts +48 -0
  260. package/dist/types/common/config.d.ts +2 -0
  261. package/dist/types/common/errors/captcha-error.d.ts +15 -0
  262. package/dist/types/common/errors/intent-to-join.d.ts +16 -0
  263. package/dist/types/common/errors/join-meeting.d.ts +17 -0
  264. package/dist/types/common/errors/media.d.ts +15 -0
  265. package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
  266. package/dist/types/common/errors/parameter.d.ts +15 -0
  267. package/dist/types/common/errors/password-error.d.ts +15 -0
  268. package/dist/types/common/errors/permission.d.ts +14 -0
  269. package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
  270. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  271. package/dist/types/common/errors/reconnection.d.ts +15 -0
  272. package/dist/types/common/errors/stats.d.ts +15 -0
  273. package/dist/types/common/errors/webex-errors.d.ts +93 -0
  274. package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
  275. package/dist/types/common/events/events-scope.d.ts +17 -0
  276. package/dist/types/common/events/events.d.ts +12 -0
  277. package/dist/types/common/events/trigger-proxy.d.ts +2 -0
  278. package/dist/types/common/events/util.d.ts +2 -0
  279. package/dist/types/common/logs/logger-config.d.ts +2 -0
  280. package/dist/types/common/logs/logger-proxy.d.ts +2 -0
  281. package/dist/types/common/logs/request.d.ts +36 -0
  282. package/dist/types/common/queue.d.ts +34 -0
  283. package/dist/types/config.d.ts +72 -0
  284. package/dist/types/constants.d.ts +1088 -0
  285. package/dist/types/controls-options-manager/constants.d.ts +4 -0
  286. package/dist/types/controls-options-manager/enums.d.ts +15 -0
  287. package/dist/types/controls-options-manager/index.d.ts +136 -0
  288. package/dist/types/controls-options-manager/types.d.ts +43 -0
  289. package/dist/types/controls-options-manager/util.d.ts +1 -0
  290. package/dist/types/index.d.ts +7 -0
  291. package/dist/types/interceptors/index.d.ts +2 -0
  292. package/dist/types/interceptors/locusRetry.d.ts +27 -0
  293. package/dist/types/interpretation/collection.d.ts +5 -0
  294. package/dist/types/interpretation/index.d.ts +5 -0
  295. package/dist/types/interpretation/siLanguage.d.ts +5 -0
  296. package/dist/types/locus-info/controlsUtils.d.ts +2 -0
  297. package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
  298. package/dist/types/locus-info/fullState.d.ts +2 -0
  299. package/dist/types/locus-info/hostUtils.d.ts +2 -0
  300. package/dist/types/locus-info/index.d.ts +322 -0
  301. package/dist/types/locus-info/infoUtils.d.ts +2 -0
  302. package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
  303. package/dist/types/locus-info/parser.d.ts +272 -0
  304. package/dist/types/locus-info/selfUtils.d.ts +2 -0
  305. package/dist/types/media/index.d.ts +34 -0
  306. package/dist/types/media/properties.d.ts +93 -0
  307. package/dist/types/media/util.d.ts +2 -0
  308. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  309. package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
  310. package/dist/types/meeting/index.d.ts +1824 -0
  311. package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
  312. package/dist/types/meeting/muteState.d.ts +178 -0
  313. package/dist/types/meeting/request.d.ts +293 -0
  314. package/dist/types/meeting/request.type.d.ts +11 -0
  315. package/dist/types/meeting/state.d.ts +9 -0
  316. package/dist/types/meeting/util.d.ts +118 -0
  317. package/dist/types/meeting/voicea-meeting.d.ts +16 -0
  318. package/dist/types/meeting-info/collection.d.ts +20 -0
  319. package/dist/types/meeting-info/index.d.ts +69 -0
  320. package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
  321. package/dist/types/meeting-info/request.d.ts +22 -0
  322. package/dist/types/meeting-info/util.d.ts +2 -0
  323. package/dist/types/meeting-info/utilv2.d.ts +2 -0
  324. package/dist/types/meetings/collection.d.ts +40 -0
  325. package/dist/types/meetings/index.d.ts +389 -0
  326. package/dist/types/meetings/meetings.types.d.ts +4 -0
  327. package/dist/types/meetings/request.d.ts +27 -0
  328. package/dist/types/meetings/util.d.ts +18 -0
  329. package/dist/types/member/index.d.ts +160 -0
  330. package/dist/types/member/types.d.ts +32 -0
  331. package/dist/types/member/util.d.ts +2 -0
  332. package/dist/types/members/collection.d.ts +29 -0
  333. package/dist/types/members/index.d.ts +353 -0
  334. package/dist/types/members/request.d.ts +114 -0
  335. package/dist/types/members/types.d.ts +25 -0
  336. package/dist/types/members/util.d.ts +215 -0
  337. package/dist/types/metrics/constants.d.ts +70 -0
  338. package/dist/types/metrics/index.d.ts +45 -0
  339. package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
  340. package/dist/types/multistream/receiveSlot.d.ts +68 -0
  341. package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
  342. package/dist/types/multistream/remoteMedia.d.ts +72 -0
  343. package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
  344. package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
  345. package/dist/types/multistream/sendSlotManager.d.ts +70 -0
  346. package/dist/types/networkQualityMonitor/index.d.ts +70 -0
  347. package/dist/types/personal-meeting-room/index.d.ts +47 -0
  348. package/dist/types/personal-meeting-room/request.d.ts +14 -0
  349. package/dist/types/personal-meeting-room/util.d.ts +2 -0
  350. package/dist/types/reachability/clusterReachability.d.ts +109 -0
  351. package/dist/types/reachability/index.d.ts +105 -0
  352. package/dist/types/reachability/request.d.ts +39 -0
  353. package/dist/types/reachability/util.d.ts +8 -0
  354. package/dist/types/reactions/constants.d.ts +3 -0
  355. package/dist/types/reactions/reactions.d.ts +4 -0
  356. package/dist/types/reactions/reactions.type.d.ts +52 -0
  357. package/dist/types/reconnection-manager/index.d.ts +136 -0
  358. package/dist/types/recording-controller/enums.d.ts +7 -0
  359. package/dist/types/recording-controller/index.d.ts +207 -0
  360. package/dist/types/recording-controller/util.d.ts +14 -0
  361. package/dist/types/roap/index.d.ts +86 -0
  362. package/dist/types/roap/request.d.ts +39 -0
  363. package/dist/types/roap/turnDiscovery.d.ts +155 -0
  364. package/dist/types/rtcMetrics/constants.d.ts +4 -0
  365. package/dist/types/rtcMetrics/index.d.ts +61 -0
  366. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  367. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  368. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  369. package/dist/types/transcription/index.d.ts +64 -0
  370. package/dist/types/webinar/collection.d.ts +16 -0
  371. package/dist/types/webinar/index.d.ts +5 -0
  372. package/dist/webinar/collection.js +44 -0
  373. package/dist/webinar/collection.js.map +1 -0
  374. package/dist/webinar/index.js +69 -0
  375. package/dist/webinar/index.js.map +1 -0
  376. package/internal-README.md +7 -6
  377. package/package.json +30 -21
  378. package/src/annotation/annotation.types.ts +50 -0
  379. package/src/annotation/constants.ts +36 -0
  380. package/src/annotation/index.ts +328 -0
  381. package/src/breakouts/README.md +220 -0
  382. package/src/breakouts/breakout.ts +188 -0
  383. package/src/breakouts/collection.ts +19 -0
  384. package/src/breakouts/edit-lock-error.ts +25 -0
  385. package/src/breakouts/events.ts +56 -0
  386. package/src/breakouts/index.ts +925 -0
  387. package/src/breakouts/request.ts +55 -0
  388. package/src/breakouts/utils.ts +57 -0
  389. package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
  390. package/src/common/collection.ts +9 -7
  391. package/src/common/{config.js → config.ts} +1 -1
  392. package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
  393. package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
  394. package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
  395. package/src/common/errors/{media.js → media.ts} +11 -7
  396. package/src/common/errors/no-meeting-info.ts +24 -0
  397. package/src/common/errors/parameter.ts +11 -7
  398. package/src/common/errors/{password-error.js → password-error.ts} +11 -7
  399. package/src/common/errors/{permission.js → permission.ts} +10 -6
  400. package/src/common/errors/reclaim-host-role-errors.ts +134 -0
  401. package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
  402. package/src/common/errors/{stats.js → stats.ts} +11 -7
  403. package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
  404. package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
  405. package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
  406. package/src/common/events/{events.js → events.ts} +5 -1
  407. package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
  408. package/src/common/events/{util.js → util.ts} +2 -3
  409. package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
  410. package/src/common/logs/logger-proxy.ts +44 -0
  411. package/src/common/logs/{request.js → request.ts} +26 -9
  412. package/src/common/queue.ts +22 -9
  413. package/src/{config.js → config.ts} +19 -21
  414. package/src/constants.ts +296 -27
  415. package/src/controls-options-manager/constants.ts +5 -0
  416. package/src/controls-options-manager/enums.ts +18 -0
  417. package/src/controls-options-manager/index.ts +278 -0
  418. package/src/controls-options-manager/types.ts +59 -0
  419. package/src/controls-options-manager/util.ts +300 -0
  420. package/src/index.ts +45 -0
  421. package/src/interceptors/index.ts +3 -0
  422. package/src/interceptors/locusRetry.ts +67 -0
  423. package/src/interpretation/README.md +60 -0
  424. package/src/interpretation/collection.ts +19 -0
  425. package/src/interpretation/index.ts +349 -0
  426. package/src/interpretation/siLanguage.ts +18 -0
  427. package/src/locus-info/controlsUtils.ts +222 -0
  428. package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
  429. package/src/locus-info/{fullState.js → fullState.ts} +16 -12
  430. package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
  431. package/src/locus-info/{index.js → index.ts} +561 -119
  432. package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
  433. package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
  434. package/src/locus-info/{parser.js → parser.ts} +303 -104
  435. package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
  436. package/src/media/index.ts +460 -0
  437. package/src/media/properties.ts +283 -0
  438. package/src/media/{util.js → util.ts} +2 -2
  439. package/src/mediaQualityMetrics/config.ts +249 -0
  440. package/src/meeting/in-meeting-actions.ts +199 -3
  441. package/src/meeting/index.ts +8494 -0
  442. package/src/meeting/locusMediaRequest.ts +313 -0
  443. package/src/meeting/muteState.ts +465 -0
  444. package/src/meeting/request.ts +912 -0
  445. package/src/meeting/request.type.ts +13 -0
  446. package/src/meeting/{state.js → state.ts} +50 -35
  447. package/src/meeting/util.ts +799 -0
  448. package/src/meeting/voicea-meeting.ts +122 -0
  449. package/src/meeting-info/{collection.js → collection.ts} +6 -2
  450. package/src/meeting-info/index.ts +210 -0
  451. package/src/meeting-info/meeting-info-v2.ts +423 -0
  452. package/src/meeting-info/{request.js → request.ts} +14 -4
  453. package/src/meeting-info/{util.js → util.ts} +70 -58
  454. package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
  455. package/src/meetings/collection.ts +76 -0
  456. package/src/meetings/index.ts +1539 -0
  457. package/src/meetings/meetings.types.ts +12 -0
  458. package/src/meetings/{request.js → request.ts} +34 -25
  459. package/src/meetings/{util.js → util.ts} +133 -38
  460. package/src/member/{index.js → index.ts} +159 -56
  461. package/src/member/types.ts +38 -0
  462. package/src/member/util.ts +397 -0
  463. package/src/members/{collection.js → collection.ts} +10 -2
  464. package/src/members/{index.js → index.ts} +351 -146
  465. package/src/members/request.ts +255 -0
  466. package/src/members/types.ts +29 -0
  467. package/src/members/util.ts +353 -0
  468. package/src/metrics/{constants.js → constants.ts} +17 -6
  469. package/src/metrics/index.ts +73 -0
  470. package/src/multistream/mediaRequestManager.ts +341 -64
  471. package/src/multistream/receiveSlot.ts +69 -26
  472. package/src/multistream/receiveSlotManager.ts +66 -42
  473. package/src/multistream/remoteMedia.ts +40 -5
  474. package/src/multistream/remoteMediaGroup.ts +82 -3
  475. package/src/multistream/remoteMediaManager.ts +401 -81
  476. package/src/multistream/sendSlotManager.ts +199 -0
  477. package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
  478. package/src/personal-meeting-room/{index.js → index.ts} +28 -19
  479. package/src/personal-meeting-room/{request.js → request.ts} +13 -4
  480. package/src/personal-meeting-room/{util.js → util.ts} +4 -4
  481. package/src/reachability/clusterReachability.ts +320 -0
  482. package/src/reachability/index.ts +371 -0
  483. package/src/reachability/request.ts +50 -35
  484. package/src/reachability/util.ts +24 -0
  485. package/src/reactions/constants.ts +4 -0
  486. package/src/reactions/reactions.ts +104 -0
  487. package/src/reactions/reactions.type.ts +62 -0
  488. package/src/reconnection-manager/index.ts +643 -0
  489. package/src/recording-controller/enums.ts +8 -0
  490. package/src/recording-controller/index.ts +332 -0
  491. package/src/recording-controller/util.ts +75 -0
  492. package/src/roap/index.ts +288 -0
  493. package/src/roap/request.ts +153 -0
  494. package/src/roap/turnDiscovery.ts +374 -70
  495. package/src/rtcMetrics/constants.ts +3 -0
  496. package/src/rtcMetrics/index.ts +166 -0
  497. package/src/statsAnalyzer/global.ts +37 -0
  498. package/src/statsAnalyzer/index.ts +1275 -0
  499. package/src/statsAnalyzer/mqaUtil.ts +440 -0
  500. package/src/transcription/{index.js → index.ts} +46 -39
  501. package/src/webinar/collection.ts +31 -0
  502. package/src/webinar/index.ts +62 -0
  503. package/test/integration/spec/converged-space-meetings.js +233 -0
  504. package/test/integration/spec/journey.js +791 -531
  505. package/test/integration/spec/space-meeting.js +391 -204
  506. package/test/integration/spec/transcription.js +7 -8
  507. package/test/unit/spec/annotation/index.ts +418 -0
  508. package/test/unit/spec/breakouts/breakout.ts +238 -0
  509. package/test/unit/spec/breakouts/collection.ts +15 -0
  510. package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
  511. package/test/unit/spec/breakouts/events.ts +89 -0
  512. package/test/unit/spec/breakouts/index.ts +1793 -0
  513. package/test/unit/spec/breakouts/request.ts +104 -0
  514. package/test/unit/spec/breakouts/utils.js +72 -0
  515. package/test/unit/spec/common/browser-detection.js +9 -28
  516. package/test/unit/spec/common/queue.js +31 -2
  517. package/test/unit/spec/controls-options-manager/index.js +287 -0
  518. package/test/unit/spec/controls-options-manager/util.js +582 -0
  519. package/test/unit/spec/fixture/locus.js +93 -90
  520. package/test/unit/spec/interceptors/locusRetry.ts +131 -0
  521. package/test/unit/spec/interpretation/collection.ts +15 -0
  522. package/test/unit/spec/interpretation/index.ts +625 -0
  523. package/test/unit/spec/interpretation/siLanguage.ts +28 -0
  524. package/test/unit/spec/locus-info/controlsUtils.js +325 -32
  525. package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
  526. package/test/unit/spec/locus-info/index.js +1458 -21
  527. package/test/unit/spec/locus-info/infoUtils.js +71 -40
  528. package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
  529. package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
  530. package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
  531. package/test/unit/spec/locus-info/parser.js +119 -44
  532. package/test/unit/spec/locus-info/selfConstant.js +120 -103
  533. package/test/unit/spec/locus-info/selfUtils.js +291 -12
  534. package/test/unit/spec/media/index.ts +194 -111
  535. package/test/unit/spec/media/properties.ts +11 -11
  536. package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
  537. package/test/unit/spec/meeting/index.js +8616 -1921
  538. package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
  539. package/test/unit/spec/meeting/muteState.js +568 -207
  540. package/test/unit/spec/meeting/request.js +602 -82
  541. package/test/unit/spec/meeting/utils.js +867 -179
  542. package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
  543. package/test/unit/spec/meeting-info/index.js +300 -0
  544. package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
  545. package/test/unit/spec/meeting-info/request.js +7 -9
  546. package/test/unit/spec/meeting-info/util.js +11 -12
  547. package/test/unit/spec/meeting-info/utilv2.js +131 -74
  548. package/test/unit/spec/meetings/collection.js +27 -1
  549. package/test/unit/spec/meetings/index.js +1826 -374
  550. package/test/unit/spec/meetings/utils.js +243 -14
  551. package/test/unit/spec/member/index.js +61 -7
  552. package/test/unit/spec/member/util.js +526 -26
  553. package/test/unit/spec/members/index.js +536 -55
  554. package/test/unit/spec/members/request.js +228 -40
  555. package/test/unit/spec/members/utils.js +217 -4
  556. package/test/unit/spec/metrics/index.js +13 -68
  557. package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
  558. package/test/unit/spec/multistream/receiveSlot.ts +77 -18
  559. package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
  560. package/test/unit/spec/multistream/remoteMedia.ts +40 -2
  561. package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
  562. package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
  563. package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
  564. package/test/unit/spec/networkQualityMonitor/index.js +24 -18
  565. package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
  566. package/test/unit/spec/reachability/clusterReachability.ts +279 -0
  567. package/test/unit/spec/reachability/index.ts +606 -26
  568. package/test/unit/spec/reachability/request.js +68 -0
  569. package/test/unit/spec/reachability/util.ts +40 -0
  570. package/test/unit/spec/reconnection-manager/index.js +222 -34
  571. package/test/unit/spec/recording-controller/index.js +306 -0
  572. package/test/unit/spec/recording-controller/util.js +229 -0
  573. package/test/unit/spec/roap/index.ts +238 -82
  574. package/test/unit/spec/roap/request.ts +255 -0
  575. package/test/unit/spec/roap/turnDiscovery.ts +707 -110
  576. package/test/unit/spec/rtcMetrics/index.ts +122 -0
  577. package/test/unit/spec/stats-analyzer/index.js +1331 -62
  578. package/test/unit/spec/webinar/collection.ts +13 -0
  579. package/test/unit/spec/webinar/index.ts +60 -0
  580. package/test/utils/cmr.js +44 -42
  581. package/test/utils/constants.js +9 -0
  582. package/test/utils/integrationTestUtils.js +46 -0
  583. package/test/utils/testUtils.js +63 -99
  584. package/test/utils/webex-config.js +22 -18
  585. package/test/utils/webex-test-users.js +65 -50
  586. package/tsconfig.json +6 -0
  587. package/dist/media/internal-media-core-wrapper.js +0 -22
  588. package/dist/media/internal-media-core-wrapper.js.map +0 -1
  589. package/dist/meeting/effectsState.js +0 -327
  590. package/dist/meeting/effectsState.js.map +0 -1
  591. package/dist/metrics/config.js +0 -301
  592. package/dist/metrics/config.js.map +0 -1
  593. package/dist/multistream/multistreamMedia.js +0 -116
  594. package/dist/multistream/multistreamMedia.js.map +0 -1
  595. package/dist/peer-connection-manager/util.js +0 -124
  596. package/dist/peer-connection-manager/util.js.map +0 -1
  597. package/src/common/logs/logger-proxy.js +0 -33
  598. package/src/index.js +0 -15
  599. package/src/locus-info/controlsUtils.js +0 -102
  600. package/src/media/index.js +0 -459
  601. package/src/media/internal-media-core-wrapper.ts +0 -9
  602. package/src/media/properties.js +0 -289
  603. package/src/mediaQualityMetrics/config.js +0 -382
  604. package/src/meeting/effectsState.js +0 -205
  605. package/src/meeting/index.js +0 -6284
  606. package/src/meeting/muteState.js +0 -318
  607. package/src/meeting/request.js +0 -684
  608. package/src/meeting/util.js +0 -506
  609. package/src/meeting-info/index.js +0 -131
  610. package/src/meeting-info/meeting-info-v2.js +0 -255
  611. package/src/meetings/collection.js +0 -40
  612. package/src/meetings/index.js +0 -1015
  613. package/src/member/util.js +0 -254
  614. package/src/members/request.js +0 -131
  615. package/src/members/util.js +0 -258
  616. package/src/metrics/config.js +0 -324
  617. package/src/metrics/index.js +0 -530
  618. package/src/multistream/multistreamMedia.ts +0 -92
  619. package/src/peer-connection-manager/util.ts +0 -117
  620. package/src/reachability/index.js +0 -464
  621. package/src/reconnection-manager/index.js +0 -519
  622. package/src/roap/index.js +0 -220
  623. package/src/roap/request.js +0 -127
  624. package/src/statsAnalyzer/global.js +0 -133
  625. package/src/statsAnalyzer/index.js +0 -1006
  626. package/src/statsAnalyzer/mqaUtil.js +0 -173
  627. package/test/unit/spec/meeting/effectsState.js +0 -291
  628. package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
  629. /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
@@ -1,31 +1,24 @@
1
1
  "use strict";
2
2
 
3
3
  var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
4
-
5
4
  var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
6
-
7
5
  _Object$defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
-
11
8
  exports.default = void 0;
12
-
13
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/taggedTemplateLiteral"));
14
-
15
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
16
-
17
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
18
-
19
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
20
-
21
13
  var _difference2 = _interopRequireDefault(require("lodash/difference"));
22
-
23
14
  var _queue = _interopRequireDefault(require("../common/queue"));
24
-
25
15
  var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
26
-
16
+ var _metrics = _interopRequireDefault(require("../metrics"));
17
+ var _constants = _interopRequireDefault(require("../metrics/constants"));
27
18
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
28
-
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
29
22
  /**
30
23
  * Locus Delta Parser
31
24
  * @private
@@ -33,6 +26,9 @@ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _temp
33
26
  */
34
27
  var Parser = /*#__PURE__*/function () {
35
28
  // processing status
29
+
30
+ // received an out-of-order delta, so waiting for the missing one
31
+
36
32
  // loci comparison states
37
33
 
38
34
  /**
@@ -40,22 +36,72 @@ var Parser = /*#__PURE__*/function () {
40
36
  */
41
37
  function Parser() {
42
38
  (0, _classCallCheck2.default)(this, Parser);
43
- this.queue = new _queue.default();
44
- this.status = Parser.status.IDLE;
39
+ (0, _defineProperty2.default)(this, "status", void 0);
40
+ (0, _defineProperty2.default)(this, "queue", void 0);
41
+ (0, _defineProperty2.default)(this, "workingCopy", void 0);
42
+ (0, _defineProperty2.default)(this, "syncTimer", void 0);
43
+ var deltaCompareFunc = function deltaCompareFunc(left, right) {
44
+ var _Parser$loci = Parser.loci,
45
+ LT = _Parser$loci.LT,
46
+ GT = _Parser$loci.GT;
47
+ var extract = Parser.extractComparisonState;
48
+ if (Parser.isSequenceEmpty(left)) {
49
+ return -1;
50
+ }
51
+ if (Parser.isSequenceEmpty(right)) {
52
+ return 1;
53
+ }
54
+ var result = extract(Parser.compareSequence(left.baseSequence, right.baseSequence));
55
+ if (result === LT) {
56
+ return -1;
57
+ }
58
+ if (result === GT) {
59
+ return 1;
60
+ }
61
+ return 0;
62
+ };
63
+ this.queue = new _queue.default(deltaCompareFunc);
64
+ this.status = 'IDLE';
45
65
  this.onDeltaAction = null;
46
66
  this.workingCopy = null;
67
+ this.syncTimer = undefined;
47
68
  }
69
+
48
70
  /**
49
- * Checks if two sequences overlap in time,
50
- * the sequence with the higher minimum value is greater.
51
- * Chooses sequence with most recent data.
52
- * @param {Types~Locus} current
53
- * @param {Types~Locus} incoming
54
- * @returns {string} loci comparison state
71
+ * Returns a debug string representing a locus delta - useful for logging
72
+ *
73
+ * @param {LocusDeltaDto} locus Locus delta
74
+ * @returns {string}
55
75
  */
56
-
57
-
58
76
  (0, _createClass2.default)(Parser, [{
77
+ key: "isNewFullLocus",
78
+ value:
79
+ /**
80
+ * Returns true if the incoming full locus DTO is newer than the current working copy
81
+ *
82
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
83
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
84
+ */
85
+ function isNewFullLocus(incomingFullDto) {
86
+ if (!Parser.isLoci(incomingFullDto)) {
87
+ _loggerProxy.default.logger.info('Locus-info:parser#isNewFullLocus --> Ignoring non-locus object.');
88
+ return false;
89
+ }
90
+ if (!this.workingCopy) {
91
+ // we don't have a working copy yet, so any full locus is better than nothing
92
+ return true;
93
+ }
94
+ var comparisonResult = Parser.compareFullDtoSequence(this.workingCopy, incomingFullDto);
95
+ return comparisonResult === Parser.loci.USE_INCOMING;
96
+ }
97
+
98
+ /**
99
+ * Compares Locus sequences
100
+ * @param {Types~Locus} current Current working copy
101
+ * @param {Types~Locus} incoming New Locus delta
102
+ * @returns {string}
103
+ */
104
+ }, {
59
105
  key: "isValidLocus",
60
106
  value:
61
107
  /**
@@ -64,33 +110,23 @@ var Parser = /*#__PURE__*/function () {
64
110
  * @returns {boolean}
65
111
  */
66
112
  function isValidLocus(newLoci) {
67
- var _this = this;
68
-
69
113
  var isValid = false;
70
- var IDLE = Parser.status.IDLE;
71
114
  var isLoci = Parser.isLoci;
72
115
 
73
- var setStatus = function setStatus(status) {
74
- _this.status = status;
75
- }; // one or both objects are not locus delta events
76
-
77
-
116
+ // one or both objects are not locus delta events
78
117
  if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {
79
- setStatus(IDLE);
80
-
81
118
  _loggerProxy.default.logger.info('Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:', this.workingCopy, 'newLoci:', newLoci);
82
119
  } else {
83
120
  isValid = true;
84
121
  }
85
-
86
122
  return isValid;
87
123
  }
124
+
88
125
  /**
89
126
  * Determines if a paricular locus's sequence is empty
90
127
  * @param {Types~Locus} locus
91
128
  * @returns {bool}
92
129
  */
93
-
94
130
  }, {
95
131
  key: "nextEvent",
96
132
  value:
@@ -100,19 +136,23 @@ var Parser = /*#__PURE__*/function () {
100
136
  * @returns {undefined}
101
137
  */
102
138
  function nextEvent() {
103
- if (this.status === Parser.status.PAUSED) {
139
+ if (this.status === 'PAUSED') {
104
140
  _loggerProxy.default.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');
105
-
106
141
  return;
107
- } // continue processing until queue is empty
108
-
142
+ }
143
+ if (this.status === 'BLOCKED') {
144
+ _loggerProxy.default.logger.info('Locus-info:parser#nextEvent --> Locus parser blocked by out-of-order delta.');
145
+ return;
146
+ }
109
147
 
148
+ // continue processing until queue is empty
110
149
  if (this.queue.size() > 0) {
111
150
  this.processDeltaEvent();
112
151
  } else {
113
- this.status = Parser.status.IDLE;
152
+ this.status = 'IDLE';
114
153
  }
115
154
  }
155
+
116
156
  /**
117
157
  * Function handler for delta actions,
118
158
  * is set by instance callee.
@@ -120,37 +160,42 @@ var Parser = /*#__PURE__*/function () {
120
160
  * @param {Types~Locus} locus Locus delta
121
161
  * @returns {undefined}
122
162
  */
123
- // eslint-disable-next-line no-unused-vars
124
-
163
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
125
164
  }, {
126
165
  key: "onDeltaAction",
127
166
  value: function onDeltaAction(action, locus) {}
167
+
128
168
  /**
129
169
  * Event handler for locus delta events
130
170
  * @param {Types~Locus} loci Locus Delta
131
171
  * @returns {undefined}
132
172
  */
133
-
134
173
  }, {
135
174
  key: "onDeltaEvent",
136
175
  value: function onDeltaEvent(loci) {
137
176
  // enqueue the new loci
138
- this.queue.enqueue(loci); // start processing events in the queue if idle
139
- // and a function handler is defined
140
-
141
- if (this.status === Parser.status.IDLE && this.onDeltaAction) {
142
- // Update status, ensure we only process one event at a time.
143
- this.status = Parser.status.WORKING;
144
- this.processDeltaEvent();
177
+ this.queue.enqueue(loci);
178
+ if (this.onDeltaAction) {
179
+ if (this.status === 'BLOCKED') {
180
+ if (this.queue.size() > MAX_OOO_DELTA_COUNT) {
181
+ this.triggerSync('queue too big, blocked on out-of-order delta');
182
+ } else {
183
+ this.processDeltaEvent();
184
+ }
185
+ } else if (this.status === 'IDLE') {
186
+ // Update status, ensure we only process one event at a time.
187
+ this.status = 'WORKING';
188
+ this.processDeltaEvent();
189
+ }
145
190
  }
146
191
  }
192
+
147
193
  /**
148
194
  * Appends new data onto a string of existing data.
149
195
  * @param {string} newData
150
196
  * @param {string} oldData
151
197
  * @returns {string}
152
198
  */
153
-
154
199
  }, {
155
200
  key: "pause",
156
201
  value:
@@ -159,91 +204,183 @@ var Parser = /*#__PURE__*/function () {
159
204
  * @returns {undefined}
160
205
  */
161
206
  function pause() {
162
- this.status = Parser.status.PAUSED;
163
-
207
+ this.status = 'PAUSED';
164
208
  _loggerProxy.default.logger.info('Locus-info:parser#pause --> Locus parser paused.');
165
209
  }
210
+
211
+ /**
212
+ * Triggers a sync with Locus
213
+ *
214
+ * @param {string} reason used just for logging
215
+ * @returns {undefined}
216
+ */
217
+ }, {
218
+ key: "triggerSync",
219
+ value: function triggerSync(reason) {
220
+ _loggerProxy.default.logger.info("Locus-info:parser#triggerSync --> doing sync, reason: ".concat(reason));
221
+ this.stopSyncTimer();
222
+ this.pause();
223
+ this.onDeltaAction(Parser.loci.DESYNC, this.workingCopy);
224
+ }
225
+
226
+ /**
227
+ * Starts a timer with a random delay. When that timer expires we will do a sync.
228
+ *
229
+ * The main purpose of this timer is to handle a case when we get some out-of-order deltas,
230
+ * so we start waiting to receive the missing delta. If that delta never arrives, this timer
231
+ * will trigger a sync with Locus.
232
+ *
233
+ * @returns {undefined}
234
+ */
235
+ }, {
236
+ key: "startSyncTimer",
237
+ value: function startSyncTimer() {
238
+ var _this = this;
239
+ if (this.syncTimer === undefined) {
240
+ var timeout = OOO_DELTA_WAIT_TIME + Math.random() * OOO_DELTA_WAIT_TIME_RANDOM_DELAY;
241
+ this.syncTimer = setTimeout(function () {
242
+ _this.syncTimer = undefined;
243
+ _this.triggerSync('timer expired, blocked on out-of-order delta');
244
+ }, timeout);
245
+ }
246
+ }
247
+
248
+ /**
249
+ * Stops the timer for triggering a sync
250
+ *
251
+ * @returns {undefined}
252
+ */
253
+ }, {
254
+ key: "stopSyncTimer",
255
+ value: function stopSyncTimer() {
256
+ if (this.syncTimer !== undefined) {
257
+ clearTimeout(this.syncTimer);
258
+ this.syncTimer = undefined;
259
+ }
260
+ }
261
+
166
262
  /**
167
263
  * Processes next locus delta in the queue,
168
264
  * continues until the queue is empty
169
265
  * or cleared.
170
266
  * @returns {undefined}
171
267
  */
172
-
173
268
  }, {
174
269
  key: "processDeltaEvent",
175
270
  value: function processDeltaEvent() {
176
- var _Parser$loci = Parser.loci,
177
- DESYNC = _Parser$loci.DESYNC,
178
- USE_INCOMING = _Parser$loci.USE_INCOMING;
271
+ var _Parser$loci2 = Parser.loci,
272
+ DESYNC = _Parser$loci2.DESYNC,
273
+ USE_INCOMING = _Parser$loci2.USE_INCOMING,
274
+ WAIT = _Parser$loci2.WAIT,
275
+ LOCUS_URL_CHANGED = _Parser$loci2.LOCUS_URL_CHANGED;
179
276
  var extract = Parser.extractComparisonState;
180
277
  var newLoci = this.queue.dequeue();
181
-
182
278
  if (!this.isValidLocus(newLoci)) {
279
+ this.nextEvent();
183
280
  return;
184
281
  }
185
-
186
282
  var result = Parser.compare(this.workingCopy, newLoci);
187
- var lociComparison = extract(result); // limited debugging, use chrome extension
188
- // for full debugging.
283
+ var lociComparison = extract(result);
189
284
 
285
+ // limited debugging, use chrome extension
286
+ // for full debugging.
190
287
  _loggerProxy.default.logger.debug("Locus-info:parser#processDeltaEvent --> Locus Debug: ".concat(result));
191
-
192
- if (lociComparison === DESYNC) {
193
- // wait for desync response
194
- this.pause();
195
- } else if (lociComparison === USE_INCOMING) {
196
- // update working copy for future comparisons.
197
- // Note: The working copy of parser gets updated in .onFullLocus()
198
- // and here when USE_INCOMING locus.
199
- this.workingCopy = newLoci;
288
+ var needToWait = false;
289
+ switch (lociComparison) {
290
+ case DESYNC:
291
+ // wait for desync response
292
+ this.pause();
293
+ break;
294
+ case USE_INCOMING:
295
+ case LOCUS_URL_CHANGED:
296
+ // update working copy for future comparisons.
297
+ // Note: The working copy of parser gets updated in .onFullLocus()
298
+ // and here when USE_INCOMING or LOCUS_URL_CHANGED locus.
299
+ this.workingCopy = newLoci;
300
+ break;
301
+ case WAIT:
302
+ // we've taken newLoci from the front of the queue, so put it back there as we have to wait
303
+ // for the one that should be in front of it, before we can process it
304
+ this.queue.enqueue(newLoci);
305
+ needToWait = true;
306
+ break;
307
+ default:
308
+ break;
309
+ }
310
+ if (needToWait) {
311
+ this.status = 'BLOCKED';
312
+ this.startSyncTimer();
313
+ } else {
314
+ this.stopSyncTimer();
315
+ if (this.status === 'BLOCKED') {
316
+ // we are not blocked anymore
317
+ this.status = 'WORKING';
318
+ _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> received delta that we were waiting for ".concat(Parser.locus2string(newLoci), ", not blocked anymore"));
319
+ }
200
320
  }
201
-
202
321
  if (this.onDeltaAction) {
203
- _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> Locus Delta Action: ".concat(lociComparison));
204
-
205
- this.onDeltaAction.call(this, lociComparison, newLoci);
322
+ _loggerProxy.default.logger.info("Locus-info:parser#processDeltaEvent --> Locus Delta ".concat(Parser.locus2string(newLoci), ", Action: ").concat(lociComparison));
323
+ this.onDeltaAction(lociComparison, newLoci);
206
324
  }
207
-
208
325
  this.nextEvent();
209
326
  }
327
+
210
328
  /**
211
329
  * Resume from a paused state
212
330
  * @returns {undefined}
213
331
  */
214
-
215
332
  }, {
216
333
  key: "resume",
217
334
  value: function resume() {
218
335
  _loggerProxy.default.logger.info('Locus-info:parser#resume --> Locus parser resumed.');
219
-
220
- this.status = Parser.status.WORKING;
336
+ this.status = 'WORKING';
221
337
  this.nextEvent();
222
338
  }
339
+
223
340
  /**
224
341
  * Gets related debug info for given error code
225
342
  * @param {string} debugCode Debug code
226
343
  * @param {string} comparison Locus comparison string
227
344
  * @returns {object} Debug message
228
345
  */
229
-
230
346
  }], [{
347
+ key: "locus2string",
348
+ value: function locus2string(locus) {
349
+ var _locus$sequence;
350
+ if (!((_locus$sequence = locus.sequence) !== null && _locus$sequence !== void 0 && _locus$sequence.entries)) {
351
+ return 'invalid';
352
+ }
353
+ return locus.sequence.entries.length ? "seq=".concat(locus.sequence.entries.at(-1)) : 'empty';
354
+ }
355
+
356
+ /**
357
+ * Checks if two sequences overlap in time,
358
+ * the sequence with the higher minimum value is greater.
359
+ * Chooses sequence with most recent data.
360
+ * @param {Types~Locus} current
361
+ * @param {Types~Locus} incoming
362
+ * @returns {string} loci comparison state
363
+ */
364
+ }, {
231
365
  key: "checkSequenceOverlap",
232
366
  value: function checkSequenceOverlap(current, incoming) {
233
- var comparison = null; // if earliest working copy sequence is more recent than last incoming sequence
367
+ var comparison = null;
234
368
 
369
+ // if earliest working copy sequence is more recent than last incoming sequence
235
370
  if (current.min > incoming.max) {
236
371
  // choose left side (current)
237
372
  comparison = "".concat(Parser.loci.GT, ":SO001");
238
- } // if last working copy sequence is before the earliest incoming sequence
373
+ }
374
+ // if last working copy sequence is before the earliest incoming sequence
239
375
  else if (current.max < incoming.min) {
240
376
  // choose right side (incoming)
241
377
  comparison = "".concat(Parser.loci.LT, ":SO002");
242
- } // if no match above, defaults to null
243
-
378
+ }
244
379
 
380
+ // if no match above, defaults to null
245
381
  return comparison;
246
382
  }
383
+
247
384
  /**
248
385
  * Checks if two sequences have unequal ranges.
249
386
  * Chooses sequence with most larger range.
@@ -251,7 +388,6 @@ var Parser = /*#__PURE__*/function () {
251
388
  * @param {Types~Locus} incoming
252
389
  * @returns {object} loci comparison
253
390
  */
254
-
255
391
  }, {
256
392
  key: "checkUnequalRanges",
257
393
  value: function checkUnequalRanges(current, incoming) {
@@ -259,14 +395,16 @@ var Parser = /*#__PURE__*/function () {
259
395
  var currentIsNotUnique = current.unique.length === 0;
260
396
  var incomingIsNotUnique = incoming.unique.length === 0;
261
397
  var currentTotalRange = current.end - current.min;
262
- var incomingTotalRange = incoming.end - incoming.min; // no unique values for both loci
398
+ var incomingTotalRange = incoming.end - incoming.min;
263
399
 
400
+ // no unique values for both loci
264
401
  if (currentIsNotUnique && incomingIsNotUnique) {
265
402
  // current working copy loci has a larger range
266
403
  if (currentTotalRange > incomingTotalRange) {
267
404
  // choose left side (current)
268
405
  comparison = "".concat(Parser.loci.GT, ":UR001");
269
- } // incoming delta loci has a larger range
406
+ }
407
+ // incoming delta loci has a larger range
270
408
  else if (currentTotalRange < incomingTotalRange) {
271
409
  // choose right side (incoming)
272
410
  comparison = "".concat(Parser.loci.LT, ":UR002");
@@ -276,9 +414,9 @@ var Parser = /*#__PURE__*/function () {
276
414
  comparison = "".concat(Parser.loci.EQ, ":UR003");
277
415
  }
278
416
  }
279
-
280
417
  return comparison;
281
418
  }
419
+
282
420
  /**
283
421
  * Checks if either sequences has unique entries.
284
422
  * Entries are considered unique if they do not overlap
@@ -288,25 +426,26 @@ var Parser = /*#__PURE__*/function () {
288
426
  * @param {Types~Locus} incoming
289
427
  * @returns {string} loci comparison state
290
428
  */
291
-
292
429
  }, {
293
430
  key: "checkForUniqueEntries",
294
431
  value: function checkForUniqueEntries(current, incoming) {
295
432
  var comparison = null;
296
433
  var currentIsUnique = current.unique.length > 0;
297
- var incomingIsUnique = incoming.unique.length > 0; // current has unique entries and incoming does not
434
+ var incomingIsUnique = incoming.unique.length > 0;
298
435
 
436
+ // current has unique entries and incoming does not
299
437
  if (currentIsUnique && !incomingIsUnique) {
300
438
  // choose left side (current)
301
439
  comparison = "".concat(Parser.loci.GT, ":UE001");
302
- } // current has no unique entries but incoming does
440
+ }
441
+ // current has no unique entries but incoming does
303
442
  else if (!currentIsUnique && incomingIsUnique) {
304
443
  // choose right side (incoming)
305
444
  comparison = "".concat(Parser.loci.LT, ":UE002");
306
445
  }
307
-
308
446
  return comparison;
309
447
  }
448
+
310
449
  /**
311
450
  * Checks both Locus Delta objects to see if they are
312
451
  * out of sync with one another. If so sends a DESYNC
@@ -315,7 +454,6 @@ var Parser = /*#__PURE__*/function () {
315
454
  * @param {Types~Locus} incoming
316
455
  * @returns {string} loci comparison state
317
456
  */
318
-
319
457
  }, {
320
458
  key: "checkIfOutOfSync",
321
459
  value: function checkIfOutOfSync(current, incoming) {
@@ -325,22 +463,20 @@ var Parser = /*#__PURE__*/function () {
325
463
  var currentHasNoRange = !current.start && !current.end;
326
464
  var incomingHasNoRange = !incoming.start && !incoming.end;
327
465
  var neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;
328
-
329
466
  var hasUniqOverlap = function hasUniqOverlap(list, min, max) {
330
467
  return list.some(function (seq) {
331
468
  return min < seq && seq < max;
332
469
  });
333
- }; // current unique entries overlap the total range of incoming
334
-
335
-
336
- var currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max); // vice-versa, incoming unique entries overlap the total range of current
337
-
470
+ };
471
+ // current unique entries overlap the total range of incoming
472
+ var currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);
473
+ // vice-versa, incoming unique entries overlap the total range of current
338
474
  var incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);
339
-
340
475
  if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {
341
476
  // outputs string indicating which condition occurred. ex: 0,1,0
342
- var debugInfo = "".concat(+neitherSeqHasRange, ",").concat(+currentUniqOverlap, ",").concat(+incomingUniqOverlap); // send DESYNC to server
477
+ var debugInfo = "".concat(+neitherSeqHasRange, ",").concat(+currentUniqOverlap, ",").concat(+incomingUniqOverlap);
343
478
 
479
+ // send DESYNC to server
344
480
  comparison = "".concat(Parser.loci.DESYNC, ":OOS001:").concat(debugInfo);
345
481
  } else if (currentUniqueMin > incomingUniqueMin) {
346
482
  // choose left side (current)
@@ -349,9 +485,9 @@ var Parser = /*#__PURE__*/function () {
349
485
  // choose right side (incoming)
350
486
  comparison = "".concat(Parser.loci.LT, ":OOS003");
351
487
  }
352
-
353
488
  return comparison;
354
489
  }
490
+
355
491
  /**
356
492
  * Compares two loci to determine which one contains the most recent state
357
493
  * @instance
@@ -360,26 +496,23 @@ var Parser = /*#__PURE__*/function () {
360
496
  * @param {Types~Locus} incoming
361
497
  * @returns {string} loci comparison state
362
498
  */
363
-
364
499
  }, {
365
500
  key: "compare",
366
501
  value: function compare(current, incoming) {
367
502
  var isSequenceEmpty = Parser.isSequenceEmpty;
368
503
  var extract = Parser.extractComparisonState;
369
504
  var pack = Parser.packComparisonResult;
370
-
371
505
  if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {
372
506
  return pack(Parser.loci.USE_INCOMING, 'C001');
373
507
  }
374
-
375
508
  if (incoming.baseSequence) {
376
509
  return pack(Parser.compareDelta(current, incoming), 'C002');
377
510
  }
378
-
379
511
  var result = Parser.compareSequence(current.sequence, incoming.sequence);
380
512
  var action = Parser.compareToAction(extract(result));
381
513
  return pack(action, result);
382
514
  }
515
+
383
516
  /**
384
517
  * Compares two loci sequences (with delta params) and indicates what action
385
518
  * to take.
@@ -390,127 +523,152 @@ var Parser = /*#__PURE__*/function () {
390
523
  * @private
391
524
  * @returns {string} loci comparison state
392
525
  */
393
-
394
526
  }, {
395
527
  key: "compareDelta",
396
528
  value: function compareDelta(current, incoming) {
397
- var _Parser$loci2 = Parser.loci,
398
- LT = _Parser$loci2.LT,
399
- GT = _Parser$loci2.GT,
400
- EQ = _Parser$loci2.EQ,
401
- DESYNC = _Parser$loci2.DESYNC,
402
- USE_INCOMING = _Parser$loci2.USE_INCOMING;
529
+ var _Parser$loci3 = Parser.loci,
530
+ LT = _Parser$loci3.LT,
531
+ GT = _Parser$loci3.GT,
532
+ EQ = _Parser$loci3.EQ,
533
+ DESYNC = _Parser$loci3.DESYNC,
534
+ USE_INCOMING = _Parser$loci3.USE_INCOMING,
535
+ WAIT = _Parser$loci3.WAIT,
536
+ LOCUS_URL_CHANGED = _Parser$loci3.LOCUS_URL_CHANGED;
403
537
  var extract = Parser.extractComparisonState;
404
538
  var pack = Parser.packComparisonResult;
405
539
  var result = Parser.compareSequence(current.sequence, incoming.sequence);
406
540
  var comparison = extract(result);
407
-
408
541
  if (comparison !== LT) {
409
542
  return pack(Parser.compareToAction(comparison), result);
410
543
  }
411
-
544
+ if (incoming.url !== current.url) {
545
+ // when moving to/from a breakout session, the locus URL will change and also
546
+ // the baseSequence, making incoming and current incomparable, so use a
547
+ // unique comparison state
548
+ return pack(LOCUS_URL_CHANGED, result);
549
+ }
412
550
  comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);
413
-
414
551
  switch (extract(comparison)) {
415
552
  case GT:
416
553
  case EQ:
417
554
  comparison = USE_INCOMING;
418
555
  break;
419
-
556
+ case LT:
557
+ if (extract(Parser.compareSequence(incoming.baseSequence, incoming.sequence)) === EQ) {
558
+ // special case where Locus sends a delta with baseSequence === sequence to trigger a sync,
559
+ // because the delta event is too large to be sent over mercury connection
560
+ comparison = DESYNC;
561
+ } else {
562
+ // the incoming locus has baseSequence from the future, so it is out-of-order,
563
+ // we are missing 1 or more locus that should be in front of it, we need to wait for it
564
+ comparison = WAIT;
565
+ _metrics.default.sendBehavioralMetric(_constants.default.LOCUS_DELTA_OUT_OF_ORDER, {
566
+ stack: new Error().stack
567
+ });
568
+ }
569
+ break;
420
570
  default:
421
571
  comparison = DESYNC;
422
572
  }
423
-
424
573
  return pack(comparison, result);
425
574
  }
575
+
426
576
  /**
427
- * Compares Locus sequences
577
+ * Compares Locus sequences - it should be called only for full Locus DTOs, not deltas
578
+ *
428
579
  * @param {Types~Locus} current Current working copy
429
- * @param {Types~Locus} incoming New Locus delta
430
- * @returns {string}
580
+ * @param {Types~Locus} incomingFullDto New Full Locus DTO
581
+ * @returns {string} either Parser.loci.USE_INCOMING or Parser.loci.USE_CURRENT
431
582
  */
583
+ }, {
584
+ key: "compareFullDtoSequence",
585
+ value: function compareFullDtoSequence(current, incomingFullDto) {
586
+ if (Parser.isSequenceEmpty(current) || Parser.isSequenceEmpty(incomingFullDto)) {
587
+ return Parser.loci.USE_INCOMING;
588
+ }
589
+
590
+ // the sequence.entries list will always contain at least 1 entry
591
+ // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm
432
592
 
593
+ return incomingFullDto.sequence.entries.slice(-1)[0] > current.sequence.entries.slice(-1)[0] ? Parser.loci.USE_INCOMING : Parser.loci.USE_CURRENT;
594
+ }
433
595
  }, {
434
596
  key: "compareSequence",
435
597
  value: function compareSequence(current, incoming) {
436
598
  // Locus sequence comparison rules in order of priority.
437
599
  // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm
600
+
438
601
  var local = Parser.getMetaData(current);
439
- var delta = Parser.getMetaData(incoming); // update loci metadata
602
+ var delta = Parser.getMetaData(incoming);
440
603
 
604
+ // update loci metadata
441
605
  local.unique = Parser.getUniqueSequences(local, delta);
442
- delta.unique = Parser.getUniqueSequences(delta, local); // Locus sequence comparison rules
443
- // order matters
606
+ delta.unique = Parser.getUniqueSequences(delta, local);
444
607
 
608
+ // Locus sequence comparison rules
609
+ // order matters
445
610
  var rules = [Parser.checkSequenceOverlap, Parser.checkUnequalRanges, Parser.checkForUniqueEntries, Parser.checkIfOutOfSync];
446
-
447
611
  for (var _i = 0, _rules = rules; _i < _rules.length; _i++) {
448
612
  var rule = _rules[_i];
449
613
  // Rule only returns a value if the rule applies,
450
614
  // otherwise returns null.
451
615
  var result = rule(local, delta);
452
-
453
616
  if (result) {
454
617
  return result;
455
618
  }
456
- } // error, none of rules above applied
619
+ }
620
+
621
+ // error, none of rules above applied
457
622
  // should never get here as last rule
458
623
  // should be catch all.
459
-
460
-
461
624
  return Parser.loci.ERROR;
462
625
  }
626
+
463
627
  /**
464
628
  * Transates the result of a sequence comparison into an intended behavior
465
629
  * @param {string} result
466
630
  * @returns {string} Locus comparison action
467
631
  */
468
-
469
632
  }, {
470
633
  key: "compareToAction",
471
634
  value: function compareToAction(result) {
472
- var _Parser$loci3 = Parser.loci,
473
- DESYNC = _Parser$loci3.DESYNC,
474
- EQ = _Parser$loci3.EQ,
475
- ERROR = _Parser$loci3.ERROR,
476
- GT = _Parser$loci3.GT,
477
- LT = _Parser$loci3.LT,
478
- USE_CURRENT = _Parser$loci3.USE_CURRENT,
479
- USE_INCOMING = _Parser$loci3.USE_INCOMING;
635
+ var _Parser$loci4 = Parser.loci,
636
+ DESYNC = _Parser$loci4.DESYNC,
637
+ EQ = _Parser$loci4.EQ,
638
+ ERROR = _Parser$loci4.ERROR,
639
+ GT = _Parser$loci4.GT,
640
+ LT = _Parser$loci4.LT,
641
+ USE_CURRENT = _Parser$loci4.USE_CURRENT,
642
+ USE_INCOMING = _Parser$loci4.USE_INCOMING;
480
643
  var action = ERROR;
481
-
482
644
  switch (result) {
483
645
  case EQ:
484
646
  case GT:
485
647
  action = USE_CURRENT;
486
648
  break;
487
-
488
649
  case LT:
489
650
  action = USE_INCOMING;
490
651
  break;
491
-
492
652
  case DESYNC:
493
653
  action = DESYNC;
494
654
  break;
495
-
496
655
  default:
497
656
  _loggerProxy.default.logger.info("Locus-info:parser#compareToAction --> Error: ".concat(result, " is not a recognized sequence comparison result."));
498
-
499
657
  }
500
-
501
658
  return action;
502
659
  }
660
+
503
661
  /**
504
662
  * Extracts a loci comparison from a string of data.
505
663
  * @param {string} lociComparisonResult Comparison result with extra data
506
664
  * @returns {string} Comparison of EQ, LT, GT, or DESYNC.
507
665
  */
508
-
509
666
  }, {
510
667
  key: "extractComparisonState",
511
668
  value: function extractComparisonState(lociComparisonResult) {
512
669
  return lociComparisonResult.split(':')[0];
513
670
  }
671
+
514
672
  /**
515
673
  * @typedef {object} LociMetadata
516
674
  * @property {number} start - Starting sequence number
@@ -527,17 +685,18 @@ var Parser = /*#__PURE__*/function () {
527
685
  * @param {Array.<number>} sequence Locus delta sequence
528
686
  * @returns {LociMetadata} Locus Delta Metadata
529
687
  */
530
-
531
688
  }, {
532
689
  key: "getMetaData",
533
690
  value: function getMetaData(sequence) {
534
691
  var entries = sequence.entries;
535
692
  var first = entries[0];
536
- var last = entries.slice(-1)[0]; // rangeStart or rangeEnd is 0 if a range doesn't exist
693
+ var last = entries.slice(-1)[0];
537
694
 
695
+ // rangeStart or rangeEnd is 0 if a range doesn't exist
538
696
  var start = sequence.rangeStart;
539
- var end = sequence.rangeEnd; // sequence data
697
+ var end = sequence.rangeEnd;
540
698
 
699
+ // sequence data
541
700
  return {
542
701
  start: start,
543
702
  end: end,
@@ -551,6 +710,7 @@ var Parser = /*#__PURE__*/function () {
551
710
  entries: entries
552
711
  };
553
712
  }
713
+
554
714
  /**
555
715
  * Compares two Locus delta objects and notes unique
556
716
  * values contained within baseLoci.
@@ -558,15 +718,15 @@ var Parser = /*#__PURE__*/function () {
558
718
  * @param {LociMetadata} otherLoci
559
719
  * @returns {Array.<number>} List of unique sequences
560
720
  */
561
-
562
721
  }, {
563
722
  key: "getUniqueSequences",
564
723
  value: function getUniqueSequences(baseLoci, otherLoci) {
565
724
  var diff = (0, _difference2.default)(baseLoci.entries, otherLoci.entries);
566
725
  var start = otherLoci.start,
567
- end = otherLoci.end;
726
+ end = otherLoci.end;
568
727
  return Parser.getNumbersOutOfRange(diff, start, end);
569
728
  }
729
+
570
730
  /**
571
731
  * Returns an array of numbers outside of a given range.
572
732
  * @param {Array.<number>} list Array to filter
@@ -574,15 +734,15 @@ var Parser = /*#__PURE__*/function () {
574
734
  * @param {number} rangeEnd End of range
575
735
  * @returns {Array.<number>} Array of numbers sorted ASC
576
736
  */
577
-
578
737
  }, {
579
738
  key: "getNumbersOutOfRange",
580
739
  value: function getNumbersOutOfRange(list, rangeStart, rangeEnd) {
581
740
  // Collect all numbers if number is outside of specified range
582
741
  var output = list.filter(function (num) {
583
742
  return num < rangeStart || num > rangeEnd;
584
- }); // sort ascending
743
+ });
585
744
 
745
+ // sort ascending
586
746
  return output.sort(function (a, b) {
587
747
  return a - b;
588
748
  });
@@ -591,34 +751,30 @@ var Parser = /*#__PURE__*/function () {
591
751
  key: "isSequenceEmpty",
592
752
  value: function isSequenceEmpty(locus) {
593
753
  var _sequence$entries;
594
-
595
754
  var sequence = locus.sequence;
596
755
  var hasEmptyEntries = !((_sequence$entries = sequence.entries) !== null && _sequence$entries !== void 0 && _sequence$entries.length);
597
756
  var hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;
598
757
  return hasEmptyEntries && hasEmptyRange;
599
758
  }
759
+
600
760
  /**
601
761
  * Determines if an object has basic
602
762
  * structure of a locus object.
603
763
  * @param {Types~Locus} loci
604
764
  * @returns {boolean}
605
765
  */
606
-
607
766
  }, {
608
767
  key: "isLoci",
609
768
  value: function isLoci(loci) {
610
769
  if (!loci || !loci.sequence) {
611
770
  return false;
612
771
  }
613
-
614
772
  var hasProp = function hasProp(prop) {
615
773
  return Object.prototype.hasOwnProperty.call(loci.sequence, prop);
616
774
  };
617
-
618
775
  if (hasProp('rangeStart') && hasProp('rangeEnd')) {
619
776
  return true;
620
777
  }
621
-
622
778
  return false;
623
779
  }
624
780
  }, {
@@ -633,7 +789,6 @@ var Parser = /*#__PURE__*/function () {
633
789
  var mStr = function mStr(strings) {
634
790
  return strings.join('').replace(/\s{2,}/g, ' ');
635
791
  };
636
-
637
792
  var resolutionMap = {
638
793
  EQ: "".concat(Parser.loci.LT, ": is equal (current == incoming)."),
639
794
  LT: "".concat(Parser.loci.LT, ": choose right side (incoming)."),
@@ -699,13 +854,7 @@ var Parser = /*#__PURE__*/function () {
699
854
  }]);
700
855
  return Parser;
701
856
  }();
702
-
703
857
  exports.default = Parser;
704
- (0, _defineProperty2.default)(Parser, "status", {
705
- IDLE: 'IDLE',
706
- PAUSED: 'PAUSED',
707
- WORKING: 'WORKING'
708
- });
709
858
  (0, _defineProperty2.default)(Parser, "loci", {
710
859
  EQ: 'EQUAL',
711
860
  GT: 'GREATER_THAN',
@@ -713,6 +862,8 @@ exports.default = Parser;
713
862
  DESYNC: 'DESYNC',
714
863
  USE_INCOMING: 'USE_INCOMING',
715
864
  USE_CURRENT: 'USE_CURRENT',
716
- ERROR: 'ERROR'
865
+ WAIT: 'WAIT',
866
+ ERROR: 'ERROR',
867
+ LOCUS_URL_CHANGED: 'LOCUS_URL_CHANGED'
717
868
  });
718
869
  //# sourceMappingURL=parser.js.map