@webex/plugin-meetings 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/dist/annotation/annotation.types.d.ts +42 -0
  2. package/dist/annotation/constants.d.ts +31 -0
  3. package/dist/annotation/index.d.ts +117 -0
  4. package/dist/annotation/index.js +17 -0
  5. package/dist/annotation/index.js.map +1 -1
  6. package/dist/breakouts/breakout.d.ts +8 -0
  7. package/dist/breakouts/breakout.js +1 -1
  8. package/dist/breakouts/collection.d.ts +5 -0
  9. package/dist/breakouts/edit-lock-error.d.ts +15 -0
  10. package/dist/breakouts/events.d.ts +8 -0
  11. package/dist/breakouts/index.d.ts +5 -0
  12. package/dist/breakouts/index.js +1 -1
  13. package/dist/breakouts/request.d.ts +22 -0
  14. package/dist/breakouts/utils.d.ts +15 -0
  15. package/dist/common/browser-detection.d.ts +9 -0
  16. package/dist/common/collection.d.ts +48 -0
  17. package/dist/common/config.d.ts +2 -0
  18. package/dist/common/errors/captcha-error.d.ts +15 -0
  19. package/dist/common/errors/intent-to-join.d.ts +16 -0
  20. package/dist/common/errors/join-forbidden-error.js +52 -0
  21. package/dist/common/errors/join-forbidden-error.js.map +1 -0
  22. package/dist/common/errors/join-meeting.d.ts +17 -0
  23. package/dist/common/errors/{webinar-registration-error.js → join-webinar-error.js} +12 -12
  24. package/dist/common/errors/join-webinar-error.js.map +1 -0
  25. package/dist/common/errors/media.d.ts +15 -0
  26. package/dist/common/errors/multistream-not-supported-error.js +53 -0
  27. package/dist/common/errors/multistream-not-supported-error.js.map +1 -0
  28. package/dist/common/errors/no-meeting-info.d.ts +14 -0
  29. package/dist/common/errors/parameter.d.ts +15 -0
  30. package/dist/common/errors/password-error.d.ts +15 -0
  31. package/dist/common/errors/permission.d.ts +14 -0
  32. package/dist/common/errors/reclaim-host-role-error.js +149 -0
  33. package/dist/common/errors/reclaim-host-role-error.js.map +1 -0
  34. package/dist/common/errors/reclaim-host-role-errors.d.ts +60 -0
  35. package/dist/common/errors/reconnection-in-progress.d.ts +9 -0
  36. package/dist/common/errors/reconnection-in-progress.js +33 -0
  37. package/dist/common/errors/reconnection-in-progress.js.map +1 -0
  38. package/dist/common/errors/reconnection.d.ts +15 -0
  39. package/dist/common/errors/stats.d.ts +15 -0
  40. package/dist/common/errors/webex-errors.d.ts +93 -0
  41. package/dist/common/errors/webex-meetings-error.d.ts +20 -0
  42. package/dist/common/events/events-scope.d.ts +17 -0
  43. package/dist/common/events/events.d.ts +12 -0
  44. package/dist/common/events/trigger-proxy.d.ts +2 -0
  45. package/dist/common/events/util.d.ts +2 -0
  46. package/dist/common/logs/logger-config.d.ts +2 -0
  47. package/dist/common/logs/logger-proxy.d.ts +2 -0
  48. package/dist/common/logs/request.d.ts +36 -0
  49. package/dist/common/queue.d.ts +34 -0
  50. package/dist/config.d.ts +72 -0
  51. package/dist/config.js +2 -1
  52. package/dist/config.js.map +1 -1
  53. package/dist/constants.d.ts +1088 -0
  54. package/dist/constants.js +68 -6
  55. package/dist/constants.js.map +1 -1
  56. package/dist/controls-options-manager/constants.d.ts +4 -0
  57. package/dist/controls-options-manager/enums.d.ts +15 -0
  58. package/dist/controls-options-manager/index.d.ts +136 -0
  59. package/dist/controls-options-manager/types.d.ts +43 -0
  60. package/dist/controls-options-manager/util.d.ts +1 -0
  61. package/dist/index.d.ts +7 -0
  62. package/dist/index.js +16 -11
  63. package/dist/index.js.map +1 -1
  64. package/dist/interceptors/index.d.ts +2 -0
  65. package/dist/interceptors/locusRetry.d.ts +27 -0
  66. package/dist/interpretation/collection.d.ts +5 -0
  67. package/dist/interpretation/index.d.ts +5 -0
  68. package/dist/interpretation/index.js +1 -1
  69. package/dist/interpretation/siLanguage.d.ts +5 -0
  70. package/dist/interpretation/siLanguage.js +1 -1
  71. package/dist/locus-info/controlsUtils.d.ts +2 -0
  72. package/dist/locus-info/embeddedAppsUtils.d.ts +2 -0
  73. package/dist/locus-info/fullState.d.ts +2 -0
  74. package/dist/locus-info/hostUtils.d.ts +2 -0
  75. package/dist/locus-info/index.d.ts +322 -0
  76. package/dist/locus-info/index.js +14 -3
  77. package/dist/locus-info/index.js.map +1 -1
  78. package/dist/locus-info/infoUtils.d.ts +2 -0
  79. package/dist/locus-info/mediaSharesUtils.d.ts +2 -0
  80. package/dist/locus-info/parser.d.ts +272 -0
  81. package/dist/locus-info/selfUtils.d.ts +2 -0
  82. package/dist/locus-info/selfUtils.js +35 -17
  83. package/dist/locus-info/selfUtils.js.map +1 -1
  84. package/dist/media/MediaConnectionAwaiter.js +1 -0
  85. package/dist/media/MediaConnectionAwaiter.js.map +1 -1
  86. package/dist/media/index.d.ts +34 -0
  87. package/dist/media/properties.d.ts +93 -0
  88. package/dist/media/properties.js +30 -16
  89. package/dist/media/properties.js.map +1 -1
  90. package/dist/media/util.d.ts +2 -0
  91. package/dist/mediaQualityMetrics/config.d.ts +241 -0
  92. package/dist/mediaQualityMetrics/config.js +502 -0
  93. package/dist/mediaQualityMetrics/config.js.map +1 -0
  94. package/dist/meeting/brbState.js +167 -0
  95. package/dist/meeting/brbState.js.map +1 -0
  96. package/dist/meeting/effectsState.js +260 -0
  97. package/dist/meeting/effectsState.js.map +1 -0
  98. package/dist/meeting/in-meeting-actions.d.ts +167 -0
  99. package/dist/meeting/in-meeting-actions.js +13 -1
  100. package/dist/meeting/in-meeting-actions.js.map +1 -1
  101. package/dist/meeting/index.d.ts +1825 -0
  102. package/dist/meeting/index.js +1331 -1051
  103. package/dist/meeting/index.js.map +1 -1
  104. package/dist/meeting/locusMediaRequest.d.ts +74 -0
  105. package/dist/meeting/locusMediaRequest.js +11 -6
  106. package/dist/meeting/locusMediaRequest.js.map +1 -1
  107. package/dist/meeting/muteState.d.ts +178 -0
  108. package/dist/meeting/muteState.js +1 -6
  109. package/dist/meeting/muteState.js.map +1 -1
  110. package/dist/meeting/request.d.ts +295 -0
  111. package/dist/meeting/request.js +51 -29
  112. package/dist/meeting/request.js.map +1 -1
  113. package/dist/meeting/request.type.d.ts +11 -0
  114. package/dist/meeting/request.type.js.map +1 -1
  115. package/dist/meeting/state.d.ts +9 -0
  116. package/dist/meeting/util.d.ts +119 -0
  117. package/dist/meeting/util.js +103 -67
  118. package/dist/meeting/util.js.map +1 -1
  119. package/dist/meeting/voicea-meeting.d.ts +16 -0
  120. package/dist/meeting-info/collection.d.ts +20 -0
  121. package/dist/meeting-info/index.d.ts +69 -0
  122. package/dist/meeting-info/meeting-info-v2.d.ts +123 -0
  123. package/dist/meeting-info/meeting-info-v2.js +115 -45
  124. package/dist/meeting-info/meeting-info-v2.js.map +1 -1
  125. package/dist/meeting-info/request.d.ts +22 -0
  126. package/dist/meeting-info/util.d.ts +2 -0
  127. package/dist/meeting-info/utilv2.d.ts +2 -0
  128. package/dist/meeting-info/utilv2.js +6 -2
  129. package/dist/meeting-info/utilv2.js.map +1 -1
  130. package/dist/meetings/collection.d.ts +40 -0
  131. package/dist/meetings/index.d.ts +390 -0
  132. package/dist/meetings/index.js +107 -55
  133. package/dist/meetings/index.js.map +1 -1
  134. package/dist/meetings/meetings.types.d.ts +4 -0
  135. package/dist/meetings/meetings.types.js +2 -0
  136. package/dist/meetings/meetings.types.js.map +1 -1
  137. package/dist/meetings/request.d.ts +27 -0
  138. package/dist/meetings/util.d.ts +18 -0
  139. package/dist/meetings/util.js +1 -1
  140. package/dist/meetings/util.js.map +1 -1
  141. package/dist/member/index.d.ts +160 -0
  142. package/dist/member/index.js +9 -0
  143. package/dist/member/index.js.map +1 -1
  144. package/dist/member/member.types.js +17 -0
  145. package/dist/member/member.types.js.map +1 -0
  146. package/dist/member/types.d.ts +32 -0
  147. package/dist/member/types.js.map +1 -1
  148. package/dist/member/util.d.ts +2 -0
  149. package/dist/member/util.js +39 -28
  150. package/dist/member/util.js.map +1 -1
  151. package/dist/members/collection.d.ts +29 -0
  152. package/dist/members/index.d.ts +353 -0
  153. package/dist/members/request.d.ts +114 -0
  154. package/dist/members/types.d.ts +25 -0
  155. package/dist/members/util.d.ts +215 -0
  156. package/dist/members/util.js +4 -2
  157. package/dist/members/util.js.map +1 -1
  158. package/dist/metrics/config.js +276 -0
  159. package/dist/metrics/config.js.map +1 -0
  160. package/dist/metrics/constants.d.ts +70 -0
  161. package/dist/metrics/constants.js +6 -1
  162. package/dist/metrics/constants.js.map +1 -1
  163. package/dist/metrics/index.d.ts +45 -0
  164. package/dist/multistream/mediaRequestManager.d.ts +119 -0
  165. package/dist/multistream/receiveSlot.d.ts +68 -0
  166. package/dist/multistream/receiveSlotManager.d.ts +56 -0
  167. package/dist/multistream/remoteMedia.d.ts +72 -0
  168. package/dist/multistream/remoteMedia.js +30 -15
  169. package/dist/multistream/remoteMedia.js.map +1 -1
  170. package/dist/multistream/remoteMediaGroup.d.ts +49 -0
  171. package/dist/multistream/remoteMediaManager.d.ts +300 -0
  172. package/dist/multistream/sendSlotManager.d.ts +69 -0
  173. package/dist/multistream/sendSlotManager.js +24 -0
  174. package/dist/multistream/sendSlotManager.js.map +1 -1
  175. package/dist/networkQualityMonitor/index.d.ts +70 -0
  176. package/dist/networkQualityMonitor/index.js +13 -19
  177. package/dist/networkQualityMonitor/index.js.map +1 -1
  178. package/dist/peer-connection-manager/index.js +671 -0
  179. package/dist/peer-connection-manager/index.js.map +1 -0
  180. package/dist/peer-connection-manager/util.js +109 -0
  181. package/dist/peer-connection-manager/util.js.map +1 -0
  182. package/dist/personal-meeting-room/index.d.ts +47 -0
  183. package/dist/personal-meeting-room/request.d.ts +14 -0
  184. package/dist/personal-meeting-room/util.d.ts +2 -0
  185. package/dist/reachability/clusterReachability.d.ts +109 -0
  186. package/dist/reachability/clusterReachability.js +12 -15
  187. package/dist/reachability/clusterReachability.js.map +1 -1
  188. package/dist/reachability/index.d.ts +105 -0
  189. package/dist/reachability/index.js +461 -136
  190. package/dist/reachability/index.js.map +1 -1
  191. package/dist/reachability/reachability.types.js +7 -0
  192. package/dist/reachability/reachability.types.js.map +1 -0
  193. package/dist/reachability/request.d.ts +39 -0
  194. package/dist/reachability/request.js +21 -8
  195. package/dist/reachability/request.js.map +1 -1
  196. package/dist/reachability/util.d.ts +8 -0
  197. package/dist/reactions/constants.d.ts +3 -0
  198. package/dist/reactions/reactions.d.ts +4 -0
  199. package/dist/reactions/reactions.type.d.ts +52 -0
  200. package/dist/reconnection-manager/index.d.ts +136 -0
  201. package/dist/recording-controller/enums.d.ts +7 -0
  202. package/dist/recording-controller/enums.js +8 -4
  203. package/dist/recording-controller/enums.js.map +1 -1
  204. package/dist/recording-controller/index.d.ts +207 -0
  205. package/dist/recording-controller/index.js +18 -9
  206. package/dist/recording-controller/index.js.map +1 -1
  207. package/dist/recording-controller/util.d.ts +14 -0
  208. package/dist/recording-controller/util.js +13 -9
  209. package/dist/recording-controller/util.js.map +1 -1
  210. package/dist/roap/collection.js +62 -0
  211. package/dist/roap/collection.js.map +1 -0
  212. package/dist/roap/handler.js +275 -0
  213. package/dist/roap/handler.js.map +1 -0
  214. package/dist/roap/index.d.ts +86 -0
  215. package/dist/roap/index.js +15 -15
  216. package/dist/roap/index.js.map +1 -1
  217. package/dist/roap/request.d.ts +39 -0
  218. package/dist/roap/request.js +45 -79
  219. package/dist/roap/request.js.map +1 -1
  220. package/dist/roap/state.js +126 -0
  221. package/dist/roap/state.js.map +1 -0
  222. package/dist/roap/turnDiscovery.d.ts +155 -0
  223. package/dist/roap/turnDiscovery.js +3 -6
  224. package/dist/roap/turnDiscovery.js.map +1 -1
  225. package/dist/roap/util.js +75 -0
  226. package/dist/roap/util.js.map +1 -0
  227. package/dist/rtcMetrics/constants.d.ts +4 -0
  228. package/dist/rtcMetrics/index.d.ts +61 -0
  229. package/dist/statsAnalyzer/global.d.ts +36 -0
  230. package/dist/statsAnalyzer/global.js +126 -0
  231. package/dist/statsAnalyzer/global.js.map +1 -0
  232. package/dist/statsAnalyzer/index.d.ts +217 -0
  233. package/dist/statsAnalyzer/index.js +1013 -0
  234. package/dist/statsAnalyzer/index.js.map +1 -0
  235. package/dist/statsAnalyzer/mqaUtil.d.ts +48 -0
  236. package/dist/statsAnalyzer/mqaUtil.js +179 -0
  237. package/dist/statsAnalyzer/mqaUtil.js.map +1 -0
  238. package/dist/transcription/index.d.ts +64 -0
  239. package/dist/types/annotation/index.d.ts +5 -0
  240. package/dist/types/common/errors/join-forbidden-error.d.ts +15 -0
  241. package/dist/types/common/errors/{webinar-registration-error.d.ts → join-webinar-error.d.ts} +2 -2
  242. package/dist/types/common/errors/multistream-not-supported-error.d.ts +17 -0
  243. package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
  244. package/dist/types/config.d.ts +1 -0
  245. package/dist/types/constants.d.ts +53 -1
  246. package/dist/types/index.d.ts +3 -3
  247. package/dist/types/locus-info/index.d.ts +2 -1
  248. package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
  249. package/dist/types/meeting/brbState.d.ts +54 -0
  250. package/dist/types/meeting/in-meeting-actions.d.ts +12 -0
  251. package/dist/types/meeting/index.d.ts +64 -14
  252. package/dist/types/meeting/locusMediaRequest.d.ts +6 -3
  253. package/dist/types/meeting/request.d.ts +14 -3
  254. package/dist/types/meeting/request.type.d.ts +6 -0
  255. package/dist/types/meeting/util.d.ts +3 -3
  256. package/dist/types/meeting-info/meeting-info-v2.d.ts +30 -5
  257. package/dist/types/meetings/index.d.ts +20 -2
  258. package/dist/types/meetings/meetings.types.d.ts +8 -0
  259. package/dist/types/member/index.d.ts +1 -0
  260. package/dist/types/member/types.d.ts +7 -0
  261. package/dist/types/members/util.d.ts +2 -0
  262. package/dist/types/metrics/constants.d.ts +6 -1
  263. package/dist/types/multistream/sendSlotManager.d.ts +8 -1
  264. package/dist/types/reachability/clusterReachability.d.ts +1 -10
  265. package/dist/types/reachability/index.d.ts +83 -36
  266. package/dist/types/reachability/reachability.types.d.ts +64 -0
  267. package/dist/types/reachability/request.d.ts +5 -1
  268. package/dist/types/recording-controller/enums.d.ts +5 -2
  269. package/dist/types/recording-controller/index.d.ts +1 -0
  270. package/dist/types/recording-controller/util.d.ts +2 -1
  271. package/dist/types/roap/request.d.ts +1 -13
  272. package/dist/types/statsAnalyzer/global.d.ts +36 -0
  273. package/dist/types/statsAnalyzer/index.d.ts +217 -0
  274. package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
  275. package/dist/webinar/collection.d.ts +16 -0
  276. package/dist/webinar/index.d.ts +5 -0
  277. package/dist/webinar/index.js +390 -7
  278. package/dist/webinar/index.js.map +1 -1
  279. package/package.json +23 -22
  280. package/src/annotation/index.ts +16 -0
  281. package/src/common/errors/join-forbidden-error.ts +26 -0
  282. package/src/common/errors/join-webinar-error.ts +24 -0
  283. package/src/common/errors/multistream-not-supported-error.ts +30 -0
  284. package/src/config.ts +1 -0
  285. package/src/constants.ts +61 -3
  286. package/src/index.ts +5 -3
  287. package/src/locus-info/index.ts +20 -3
  288. package/src/locus-info/selfUtils.ts +24 -6
  289. package/src/media/MediaConnectionAwaiter.ts +2 -0
  290. package/src/media/properties.ts +34 -13
  291. package/src/meeting/brbState.ts +169 -0
  292. package/src/meeting/in-meeting-actions.ts +25 -0
  293. package/src/meeting/index.ts +443 -87
  294. package/src/meeting/locusMediaRequest.ts +11 -8
  295. package/src/meeting/muteState.ts +1 -6
  296. package/src/meeting/request.ts +30 -12
  297. package/src/meeting/request.type.ts +7 -0
  298. package/src/meeting/util.ts +32 -13
  299. package/src/meeting-info/meeting-info-v2.ts +83 -12
  300. package/src/meeting-info/utilv2.ts +17 -3
  301. package/src/meetings/index.ts +79 -20
  302. package/src/meetings/meetings.types.ts +10 -0
  303. package/src/meetings/util.ts +2 -1
  304. package/src/member/index.ts +9 -0
  305. package/src/member/types.ts +8 -0
  306. package/src/member/util.ts +34 -24
  307. package/src/members/util.ts +1 -0
  308. package/src/metrics/constants.ts +6 -1
  309. package/src/multistream/remoteMedia.ts +28 -15
  310. package/src/multistream/sendSlotManager.ts +31 -0
  311. package/src/reachability/clusterReachability.ts +5 -15
  312. package/src/reachability/index.ts +311 -75
  313. package/src/reachability/reachability.types.ts +85 -0
  314. package/src/reachability/request.ts +55 -31
  315. package/src/recording-controller/enums.ts +5 -2
  316. package/src/recording-controller/index.ts +17 -4
  317. package/src/recording-controller/util.ts +20 -5
  318. package/src/roap/index.ts +14 -13
  319. package/src/roap/request.ts +30 -44
  320. package/src/roap/turnDiscovery.ts +2 -4
  321. package/src/webinar/index.ts +235 -9
  322. package/test/unit/spec/annotation/index.ts +46 -1
  323. package/test/unit/spec/locus-info/index.js +292 -60
  324. package/test/unit/spec/locus-info/selfConstant.js +7 -0
  325. package/test/unit/spec/locus-info/selfUtils.js +101 -1
  326. package/test/unit/spec/media/properties.ts +15 -0
  327. package/test/unit/spec/meeting/brbState.ts +114 -0
  328. package/test/unit/spec/meeting/in-meeting-actions.ts +15 -1
  329. package/test/unit/spec/meeting/index.js +851 -107
  330. package/test/unit/spec/meeting/locusMediaRequest.ts +18 -11
  331. package/test/unit/spec/meeting/muteState.js +0 -24
  332. package/test/unit/spec/meeting/request.js +3 -26
  333. package/test/unit/spec/meeting/utils.js +73 -28
  334. package/test/unit/spec/meeting-info/meetinginfov2.js +46 -4
  335. package/test/unit/spec/meeting-info/utilv2.js +26 -0
  336. package/test/unit/spec/meetings/index.js +159 -18
  337. package/test/unit/spec/meetings/utils.js +10 -0
  338. package/test/unit/spec/member/util.js +52 -11
  339. package/test/unit/spec/members/utils.js +95 -0
  340. package/test/unit/spec/multistream/remoteMedia.ts +11 -7
  341. package/test/unit/spec/reachability/clusterReachability.ts +7 -0
  342. package/test/unit/spec/reachability/index.ts +383 -9
  343. package/test/unit/spec/reachability/request.js +48 -12
  344. package/test/unit/spec/recording-controller/index.js +61 -5
  345. package/test/unit/spec/recording-controller/util.js +39 -3
  346. package/test/unit/spec/roap/index.ts +48 -1
  347. package/test/unit/spec/roap/request.ts +51 -109
  348. package/test/unit/spec/roap/turnDiscovery.ts +202 -147
  349. package/test/unit/spec/webinar/index.ts +504 -0
  350. package/dist/common/errors/webinar-registration-error.js.map +0 -1
  351. package/src/common/errors/webinar-registration-error.ts +0 -27
@@ -59,9 +59,10 @@ var _collection = _interopRequireDefault(require("./collection"));
59
59
  var _meetings = require("./meetings.types");
60
60
  var _util2 = _interopRequireDefault(require("./util"));
61
61
  var _permission = _interopRequireDefault(require("../common/errors/permission"));
62
- var _webinarRegistrationError = _interopRequireDefault(require("../common/errors/webinar-registration-error"));
62
+ var _joinWebinarError = _interopRequireDefault(require("../common/errors/join-webinar-error"));
63
63
  var _webexErrors = require("../common/errors/webex-errors");
64
64
  var _noMeetingInfo = _interopRequireDefault(require("../common/errors/no-meeting-info"));
65
+ var _joinForbiddenError = _interopRequireDefault(require("../common/errors/join-forbidden-error"));
65
66
  function _getRequireWildcardCache(e) { if ("function" != typeof _WeakMap) return null; var r = new _WeakMap(), t = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
66
67
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? _Object$getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? _Object$defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
67
68
  function ownKeys(e, r) { var t = _Object$keys2(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -203,6 +204,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
203
204
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaHelpers", void 0);
204
205
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "breakoutLocusForHandleLater", void 0);
205
206
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "namespace", _constants.MEETINGS);
207
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "registrationStatus", void 0);
206
208
  /**
207
209
  * Creates a noise reduction effect
208
210
  *
@@ -693,6 +695,22 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
693
695
  });
694
696
  }
695
697
 
698
+ /**
699
+ * API to change log upload interval. Setting the factor to 0 will disable periodic log uploads.
700
+ *
701
+ * @param {number} factor new factor value
702
+ * @returns {void}
703
+ */
704
+ }, {
705
+ key: "_setLogUploadIntervalMultiplicationFactor",
706
+ value: function _setLogUploadIntervalMultiplicationFactor(factor) {
707
+ if (typeof factor !== 'number') {
708
+ return;
709
+ }
710
+ // @ts-ignore
711
+ this.config.logUploadIntervalMultiplicationFactor = factor;
712
+ }
713
+
696
714
  /**
697
715
  * API to toggle unified meetings
698
716
  * @param {Boolean} changeState
@@ -798,6 +816,21 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
798
816
  }
799
817
  }
800
818
 
819
+ /**
820
+ * Executes a registration step and updates the registration status.
821
+ * @param {Function} step - The registration step to execute.
822
+ * @param {string} stepName - The name of the registration step.
823
+ * @returns {Promise} A promise that resolves when the step is completed.
824
+ */
825
+ }, {
826
+ key: "executeRegistrationStep",
827
+ value: function executeRegistrationStep(step, stepName) {
828
+ var _this5 = this;
829
+ return step().then(function () {
830
+ _this5.registrationStatus[stepName] = true;
831
+ });
832
+ }
833
+
801
834
  /**
802
835
  * Explicitly sets up the meetings plugin by registering
803
836
  * the device, connecting to mercury, and listening for locus events.
@@ -810,7 +843,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
810
843
  }, {
811
844
  key: "register",
812
845
  value: function register(deviceRegistrationOptions) {
813
- var _this5 = this;
846
+ var _this6 = this;
847
+ this.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
848
+
814
849
  // @ts-ignore
815
850
  if (!this.webex.canAuthorize) {
816
851
  _loggerProxy.default.logger.error('Meetings:index#register --> ERROR, Unable to register, SDK cannot authorize');
@@ -820,26 +855,39 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
820
855
  _loggerProxy.default.logger.info('Meetings:index#register --> INFO, Meetings plugin already registered');
821
856
  return _promise.default.resolve();
822
857
  }
823
- return _promise.default.all([this.fetchUserPreferredWebexSite(), this.getGeoHint(), this.startReachability('registration').catch(function (error) {
824
- _loggerProxy.default.logger.error("Meetings:index#register --> GDM error, ".concat(error.message));
825
- }),
826
- // @ts-ignore
827
- this.webex.internal.device.register(deviceRegistrationOptions)
828
- // @ts-ignore
829
- .then(function () {
830
- return _loggerProxy.default.logger.info( // @ts-ignore
831
- "Meetings:index#register --> INFO, Device registered ".concat(_this5.webex.internal.device.url));
832
- })
833
- // @ts-ignore
834
- .then(function () {
835
- return _this5.webex.internal.mercury.connect();
836
- }), _util2.default.checkH264Support.call(this)]).then(function () {
837
- _this5.listenForEvents();
838
- _triggerProxy.default.trigger(_this5, {
858
+ return _promise.default.all([this.executeRegistrationStep(function () {
859
+ return _this6.fetchUserPreferredWebexSite();
860
+ }, 'fetchWebexSite'), this.executeRegistrationStep(function () {
861
+ return _this6.getGeoHint();
862
+ }, 'getGeoHint'), this.executeRegistrationStep(function () {
863
+ return _this6.startReachability('registration').catch(function (error) {
864
+ _loggerProxy.default.logger.error("Meetings:index#register --> GDM error, ".concat(error.message));
865
+ });
866
+ }, 'startReachability'), this.executeRegistrationStep(function () {
867
+ return (
868
+ // @ts-ignore
869
+ _this6.webex.internal.device.register(deviceRegistrationOptions)
870
+ // @ts-ignore
871
+ .then(function () {
872
+ _loggerProxy.default.logger.info( // @ts-ignore
873
+ "Meetings:index#register --> INFO, Device registered ".concat(_this6.webex.internal.device.url));
874
+ })
875
+ );
876
+ }, 'deviceRegister').then(function () {
877
+ return _this6.executeRegistrationStep(
878
+ // @ts-ignore
879
+ function () {
880
+ return _this6.webex.internal.mercury.connect();
881
+ }, 'mercuryConnect');
882
+ }), this.executeRegistrationStep(function () {
883
+ return _promise.default.resolve(_util2.default.checkH264Support.call(_this6));
884
+ }, 'checkH264Support')]).then(function () {
885
+ _this6.listenForEvents();
886
+ _triggerProxy.default.trigger(_this6, {
839
887
  file: 'meetings',
840
888
  function: 'register'
841
889
  }, _constants.EVENT_TRIGGERS.MEETINGS_REGISTERED);
842
- _this5.registered = true;
890
+ _this6.registered = true;
843
891
  _metrics.default.sendBehavioralMetric(_constants2.default.MEETINGS_REGISTRATION_SUCCESS);
844
892
  }).catch(function (error) {
845
893
  _loggerProxy.default.logger.error("Meetings:index#register --> ERROR, Unable to register, ".concat(error.message));
@@ -862,7 +910,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
862
910
  }, {
863
911
  key: "unregister",
864
912
  value: function unregister() {
865
- var _this6 = this;
913
+ var _this7 = this;
866
914
  if (!this.registered) {
867
915
  _loggerProxy.default.logger.info('Meetings:index#unregister --> INFO, Meetings plugin already unregistered');
868
916
  return _promise.default.resolve();
@@ -873,13 +921,14 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
873
921
  this.webex.internal.mercury.disconnect()
874
922
  // @ts-ignore
875
923
  .then(function () {
876
- return _this6.webex.internal.device.unregister();
924
+ return _this7.webex.internal.device.unregister();
877
925
  }).then(function () {
878
- _triggerProxy.default.trigger(_this6, {
926
+ _triggerProxy.default.trigger(_this7, {
879
927
  file: 'meetings',
880
928
  function: 'unregister'
881
929
  }, _constants.EVENT_TRIGGERS.MEETINGS_UNREGISTERED);
882
- _this6.registered = false;
930
+ _this7.registered = false;
931
+ _this7.registrationStatus = (0, _lodash.clone)(_constants.INITIAL_REGISTRATION_STATUS);
883
932
  })
884
933
  );
885
934
  }
@@ -899,13 +948,13 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
899
948
  * @returns {String} feedback ID logs were submitted under
900
949
  */
901
950
  function uploadLogs() {
902
- var _this7 = this;
951
+ var _this8 = this;
903
952
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
904
953
  _loggerProxy.default.logger.info('Meetings:index#uploadLogs --> uploading logs');
905
954
  return this.loggerRequest.uploadLogs(options).then(function (uploadResult) {
906
955
  _loggerProxy.default.logger.info('Meetings:index#uploadLogs --> Upload logs for meeting completed.', uploadResult);
907
956
  _metrics.default.sendBehavioralMetric(_constants2.default.UPLOAD_LOGS_SUCCESS, options);
908
- _triggerProxy.default.trigger(_this7, {
957
+ _triggerProxy.default.trigger(_this8, {
909
958
  file: 'meetings',
910
959
  function: 'uploadLogs'
911
960
  }, _constants.EVENT_TRIGGERS.MEETING_LOG_UPLOAD_SUCCESS, {
@@ -915,7 +964,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
915
964
  return uploadResult;
916
965
  }).catch(function (uploadError) {
917
966
  _loggerProxy.default.logger.error('Meetings:index#uploadLogs --> Unable to upload logs for meeting', uploadError);
918
- _triggerProxy.default.trigger(_this7, {
967
+ _triggerProxy.default.trigger(_this8, {
919
968
  file: 'meetings',
920
969
  function: 'uploadLogs'
921
970
  }, _constants.EVENT_TRIGGERS.MEETING_LOG_UPLOAD_FAILURE, {
@@ -965,9 +1014,9 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
965
1014
  }, {
966
1015
  key: "getGeoHint",
967
1016
  value: function getGeoHint() {
968
- var _this8 = this;
1017
+ var _this9 = this;
969
1018
  return this.request.fetchGeoHint().then(function (res) {
970
- _this8.geoHintInfo = res;
1019
+ _this9.geoHintInfo = res;
971
1020
  });
972
1021
  }
973
1022
 
@@ -981,29 +1030,29 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
981
1030
  }, {
982
1031
  key: "fetchUserPreferredWebexSite",
983
1032
  value: function fetchUserPreferredWebexSite() {
984
- var _this9 = this;
1033
+ var _this10 = this;
985
1034
  // @ts-ignore
986
1035
  return this.webex.people._getMe().then(function (me) {
987
1036
  var isGuestUser = me.type === 'appuser';
988
1037
  if (!isGuestUser) {
989
- return _this9.request.getMeetingPreferences().then(function (res) {
1038
+ return _this10.request.getMeetingPreferences().then(function (res) {
990
1039
  if (res) {
991
1040
  var preferredWebexSite = _util2.default.parseDefaultSiteFromMeetingPreferences(res);
992
- _this9.preferredWebexSite = preferredWebexSite;
1041
+ _this10.preferredWebexSite = preferredWebexSite;
993
1042
  // @ts-ignore
994
- _this9.webex.internal.services._getCatalog().addAllowedDomains([preferredWebexSite]);
1043
+ _this10.webex.internal.services._getCatalog().addAllowedDomains([preferredWebexSite]);
995
1044
  }
996
1045
 
997
1046
  // fall back to getting the preferred site from the user information
998
- if (!_this9.preferredWebexSite) {
1047
+ if (!_this10.preferredWebexSite) {
999
1048
  // @ts-ignore
1000
- return _this9.webex.internal.user.get().then(function (user) {
1049
+ return _this10.webex.internal.user.get().then(function (user) {
1001
1050
  var _user$userPreferences, _user$userPreferences2;
1002
1051
  var preferredWebexSite = user === null || user === void 0 ? void 0 : (_user$userPreferences = user.userPreferences) === null || _user$userPreferences === void 0 ? void 0 : (_user$userPreferences2 = _user$userPreferences.userPreferencesItems) === null || _user$userPreferences2 === void 0 ? void 0 : _user$userPreferences2.preferredWebExSite;
1003
1052
  if (preferredWebexSite) {
1004
- _this9.preferredWebexSite = preferredWebexSite;
1053
+ _this10.preferredWebexSite = preferredWebexSite;
1005
1054
  // @ts-ignore
1006
- _this9.webex.internal.services._getCatalog().addAllowedDomains([preferredWebexSite]);
1055
+ _this10.webex.internal.services._getCatalog().addAllowedDomains([preferredWebexSite]);
1007
1056
  } else {
1008
1057
  throw new Error('site not found');
1009
1058
  }
@@ -1074,7 +1123,10 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1074
1123
  lastActive: (_meeting$locusInfo2 = meeting.locusInfo) === null || _meeting$locusInfo2 === void 0 ? void 0 : (_meeting$locusInfo2$f = _meeting$locusInfo2.fullState) === null || _meeting$locusInfo2$f === void 0 ? void 0 : _meeting$locusInfo2$f.lastActive,
1075
1124
  sessionId: (_meeting$locusInfo3 = meeting.locusInfo) === null || _meeting$locusInfo3 === void 0 ? void 0 : (_meeting$locusInfo3$f = _meeting$locusInfo3.fullState) === null || _meeting$locusInfo3$f === void 0 ? void 0 : _meeting$locusInfo3$f.sessionId
1076
1125
  }
1077
- }
1126
+ },
1127
+ roles: meeting.roles,
1128
+ callStateForMetrics: meeting.callStateForMetrics,
1129
+ getCurUserType: meeting.getCurUserType
1078
1130
  });
1079
1131
  this.meetingCollection.delete(meeting.id);
1080
1132
  _triggerProxy.default.trigger(this, {
@@ -1108,7 +1160,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1108
1160
  }, {
1109
1161
  key: "create",
1110
1162
  value: function create(destination) {
1111
- var _this10 = this;
1163
+ var _this11 = this;
1112
1164
  var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1113
1165
  var useRandomDelayForInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
1114
1166
  var infoExtraParams = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
@@ -1148,7 +1200,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1148
1200
  // check for the conversation URL then sip Url
1149
1201
  var meeting = null;
1150
1202
  if (type === _constants.DESTINATION_TYPE.CONVERSATION_URL || options.type === _constants.DESTINATION_TYPE.CONVERSATION_URL) {
1151
- var foundMeeting = _this10.meetingCollection.getByKey(_meetings.MEETING_KEY.CONVERSATION_URL, targetDest);
1203
+ var foundMeeting = _this11.meetingCollection.getByKey(_meetings.MEETING_KEY.CONVERSATION_URL, targetDest);
1152
1204
  if (foundMeeting) {
1153
1205
  var foundMeetingIsNotCalendarMeeting = !foundMeeting.locusInfo.scheduledMeeting;
1154
1206
 
@@ -1162,21 +1214,21 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1162
1214
 
1163
1215
  // Attempt to collect the meeting if it exists.
1164
1216
  if (!meeting) {
1165
- meeting = _this10.meetingCollection.getByKey(_meetings.MEETING_KEY.SIP_URI, targetDest);
1217
+ meeting = _this11.meetingCollection.getByKey(_meetings.MEETING_KEY.SIP_URI, targetDest);
1166
1218
  }
1167
1219
 
1168
1220
  // Validate if a meeting was found.
1169
1221
  if (!meeting) {
1170
1222
  // Create a meeting based on the normalized destination and type.
1171
- return _this10.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, callStateForMetrics, failOnMissingMeetingInfo, meetingInfo, meetingLookupUrl).then(function (createdMeeting) {
1223
+ return _this11.createMeeting(targetDest, type, useRandomDelayForInfo, infoExtraParams, callStateForMetrics, failOnMissingMeetingInfo, meetingInfo, meetingLookupUrl).then(function (createdMeeting) {
1172
1224
  // If the meeting was successfully created.
1173
1225
  if (createdMeeting && createdMeeting.on) {
1174
1226
  // Create a destruction event for the meeting.
1175
1227
  createdMeeting.on(_constants.EVENTS.DESTROY_MEETING, function (payload) {
1176
1228
  // @ts-ignore
1177
- if (_this10.config.autoUploadLogs) {
1229
+ if (_this11.config.autoUploadLogs) {
1178
1230
  var _createdMeeting$locus, _createdMeeting$locus2, _createdMeeting$locus3, _createdMeeting$locus4, _createdMeeting$locus5, _createdMeeting$locus6;
1179
- _this10.uploadLogs({
1231
+ _this11.uploadLogs({
1180
1232
  callStart: (_createdMeeting$locus = createdMeeting.locusInfo) === null || _createdMeeting$locus === void 0 ? void 0 : (_createdMeeting$locus2 = _createdMeeting$locus.fullState) === null || _createdMeeting$locus2 === void 0 ? void 0 : _createdMeeting$locus2.lastActive,
1181
1233
  locussessionid: (_createdMeeting$locus3 = createdMeeting.locusInfo) === null || _createdMeeting$locus3 === void 0 ? void 0 : (_createdMeeting$locus4 = _createdMeeting$locus3.fullState) === null || _createdMeeting$locus4 === void 0 ? void 0 : _createdMeeting$locus4.sessionId,
1182
1234
  correlationId: createdMeeting.correlationId,
@@ -1186,13 +1238,13 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1186
1238
  autoupload: true
1187
1239
  });
1188
1240
  }
1189
- _this10.destroy(createdMeeting, payload.reason);
1241
+ _this11.destroy(createdMeeting, payload.reason);
1190
1242
  });
1191
1243
  createdMeeting.on(_constants.EVENTS.REQUEST_UPLOAD_LOGS, function (meetingInstance) {
1192
1244
  // @ts-ignore
1193
- if (_this10.config.autoUploadLogs) {
1245
+ if (_this11.config.autoUploadLogs) {
1194
1246
  var _meetingInstance$locu, _meetingInstance$locu2, _meetingInstance$locu3, _meetingInstance$locu4, _meetingInstance$locu5, _meetingInstance$locu6;
1195
- _this10.uploadLogs({
1247
+ _this11.uploadLogs({
1196
1248
  callStart: meetingInstance === null || meetingInstance === void 0 ? void 0 : (_meetingInstance$locu = meetingInstance.locusInfo) === null || _meetingInstance$locu === void 0 ? void 0 : (_meetingInstance$locu2 = _meetingInstance$locu.fullState) === null || _meetingInstance$locu2 === void 0 ? void 0 : _meetingInstance$locu2.lastActive,
1197
1249
  locussessionid: meetingInstance === null || meetingInstance === void 0 ? void 0 : (_meetingInstance$locu3 = meetingInstance.locusInfo) === null || _meetingInstance$locu3 === void 0 ? void 0 : (_meetingInstance$locu4 = _meetingInstance$locu3.fullState) === null || _meetingInstance$locu4 === void 0 ? void 0 : _meetingInstance$locu4.sessionId,
1198
1250
  correlationId: meetingInstance.correlationId,
@@ -1338,7 +1390,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1338
1390
  case 29:
1339
1391
  _context3.prev = 29;
1340
1392
  _context3.t0 = _context3["catch"](9);
1341
- if (!(!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default) && !(_context3.t0 instanceof _webinarRegistrationError.default))) {
1393
+ if (!(!(_context3.t0 instanceof _captchaError.default) && !(_context3.t0 instanceof _passwordError.default) && !(_context3.t0 instanceof _permission.default) && !(_context3.t0 instanceof _joinWebinarError.default) && !(_context3.t0 instanceof _joinForbiddenError.default))) {
1342
1394
  _context3.next = 38;
1343
1395
  break;
1344
1396
  }
@@ -1428,7 +1480,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1428
1480
  }, {
1429
1481
  key: "syncMeetings",
1430
1482
  value: function syncMeetings() {
1431
- var _this11 = this;
1483
+ var _this12 = this;
1432
1484
  var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1433
1485
  _ref3$keepOnlyLocusMe = _ref3.keepOnlyLocusMeetings,
1434
1486
  keepOnlyLocusMeetings = _ref3$keepOnlyLocusMe === void 0 ? true : _ref3$keepOnlyLocusMe;
@@ -1440,16 +1492,16 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1440
1492
  return this.request.getActiveMeetings().then(function (locusArray) {
1441
1493
  var activeLocusUrl = [];
1442
1494
  if (locusArray !== null && locusArray !== void 0 && locusArray.loci && locusArray.loci.length > 0) {
1443
- var lociToUpdate = _this11.sortLocusArrayToUpdate(locusArray.loci);
1495
+ var lociToUpdate = _this12.sortLocusArrayToUpdate(locusArray.loci);
1444
1496
  lociToUpdate.forEach(function (locus) {
1445
1497
  activeLocusUrl.push(locus.url);
1446
- _this11.handleLocusEvent({
1498
+ _this12.handleLocusEvent({
1447
1499
  locus: locus,
1448
1500
  locusUrl: locus.url
1449
1501
  });
1450
1502
  });
1451
1503
  }
1452
- var meetingsCollection = _this11.meetingCollection.getAll();
1504
+ var meetingsCollection = _this12.meetingCollection.getAll();
1453
1505
  if ((0, _keys.default)(meetingsCollection).length > 0) {
1454
1506
  // Sometimes the mercury events are lost after mercury reconnect
1455
1507
  // Remove any Locus meetings that are not returned by Locus
@@ -1461,7 +1513,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1461
1513
  if ((keepOnlyLocusMeetings || locusUrl) && !activeLocusUrl.includes(locusUrl)) {
1462
1514
  // destroy function also uploads logs
1463
1515
  // @ts-ignore
1464
- _this11.destroy(meeting, _constants.MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
1516
+ _this12.destroy(meeting, _constants.MEETING_REMOVED_REASON.NO_MEETINGS_TO_SYNC);
1465
1517
  }
1466
1518
  }
1467
1519
  }
@@ -1481,7 +1533,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1481
1533
  }, {
1482
1534
  key: "sortLocusArrayToUpdate",
1483
1535
  value: function sortLocusArrayToUpdate(loci) {
1484
- var _this12 = this;
1536
+ var _this13 = this;
1485
1537
  var mainLoci = loci.filter(function (locus) {
1486
1538
  return !_util2.default.isBreakoutLocusDTO(locus);
1487
1539
  });
@@ -1495,7 +1547,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1495
1547
  var _mainLocus$controls, _mainLocus$controls$b, _breakoutLocus$contro, _breakoutLocus$contro2;
1496
1548
  return ((_mainLocus$controls = mainLocus.controls) === null || _mainLocus$controls === void 0 ? void 0 : (_mainLocus$controls$b = _mainLocus$controls.breakout) === null || _mainLocus$controls$b === void 0 ? void 0 : _mainLocus$controls$b.url) === ((_breakoutLocus$contro = breakoutLocus.controls) === null || _breakoutLocus$contro === void 0 ? void 0 : (_breakoutLocus$contro2 = _breakoutLocus$contro.breakout) === null || _breakoutLocus$contro2 === void 0 ? void 0 : _breakoutLocus$contro2.url);
1497
1549
  });
1498
- var existCorrespondingMeeting = _this12.getCorrespondingMeetingByLocus({
1550
+ var existCorrespondingMeeting = _this13.getCorrespondingMeetingByLocus({
1499
1551
  locus: breakoutLocus,
1500
1552
  locusUrl: breakoutLocus.url
1501
1553
  });
@@ -1503,7 +1555,7 @@ var Meetings = exports.default = /*#__PURE__*/function (_WebexPlugin) {
1503
1555
  // if exists both main session and breakout session locus of the same non-exist meeting, handle main locus first,
1504
1556
  // after meeting create with main locus, then handle the associate breakout locus.
1505
1557
  // if only handle breakout locus, will miss some date
1506
- _this12.breakoutLocusForHandleLater.push(breakoutLocus);
1558
+ _this13.breakoutLocusForHandleLater.push(breakoutLocus);
1507
1559
  } else {
1508
1560
  lociToUpdate.push(breakoutLocus);
1509
1561
  }