@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.
- package/README.md +58 -8
- package/UPGRADING.md +9 -9
- package/browsers.js +19 -24
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +216 -0
- package/dist/breakouts/breakout.js.map +1 -0
- package/dist/breakouts/collection.js +23 -0
- package/dist/breakouts/collection.js.map +1 -0
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +1048 -0
- package/dist/breakouts/index.js.map +1 -0
- package/dist/breakouts/request.js +78 -0
- package/dist/breakouts/request.js.map +1 -0
- package/dist/breakouts/utils.js +67 -0
- package/dist/breakouts/utils.js.map +1 -0
- package/dist/common/browser-detection.js +1 -20
- package/dist/common/browser-detection.js.map +1 -1
- package/dist/common/collection.js +5 -20
- package/dist/common/collection.js.map +1 -1
- package/dist/common/config.js +0 -7
- package/dist/common/config.js.map +1 -1
- package/dist/common/errors/captcha-error.js +10 -24
- package/dist/common/errors/captcha-error.js.map +1 -1
- package/dist/common/errors/intent-to-join.js +11 -24
- package/dist/common/errors/intent-to-join.js.map +1 -1
- package/dist/common/errors/join-meeting.js +12 -25
- package/dist/common/errors/join-meeting.js.map +1 -1
- package/dist/common/errors/media.js +10 -24
- package/dist/common/errors/media.js.map +1 -1
- package/dist/common/errors/no-meeting-info.js +51 -0
- package/dist/common/errors/no-meeting-info.js.map +1 -0
- package/dist/common/errors/parameter.js +5 -33
- package/dist/common/errors/parameter.js.map +1 -1
- package/dist/common/errors/password-error.js +10 -24
- package/dist/common/errors/password-error.js.map +1 -1
- package/dist/common/errors/permission.js +9 -23
- package/dist/common/errors/permission.js.map +1 -1
- package/dist/common/errors/reclaim-host-role-errors.js +158 -0
- package/dist/common/errors/reclaim-host-role-errors.js.map +1 -0
- package/dist/common/errors/reconnection-in-progress.js +0 -17
- package/dist/common/errors/reconnection-in-progress.js.map +1 -1
- package/dist/common/errors/reconnection.js +10 -24
- package/dist/common/errors/reconnection.js.map +1 -1
- package/dist/common/errors/stats.js +10 -24
- package/dist/common/errors/stats.js.map +1 -1
- package/dist/common/errors/webex-errors.js +54 -48
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/errors/webex-meetings-error.js +5 -25
- package/dist/common/errors/webex-meetings-error.js.map +1 -1
- package/dist/common/events/events-scope.js +0 -22
- package/dist/common/events/events-scope.js.map +1 -1
- package/dist/common/events/events.js +0 -23
- package/dist/common/events/events.js.map +1 -1
- package/dist/common/events/trigger-proxy.js +0 -12
- package/dist/common/events/trigger-proxy.js.map +1 -1
- package/dist/common/events/util.js +0 -15
- package/dist/common/events/util.js.map +1 -1
- package/dist/common/logs/logger-config.js +0 -4
- package/dist/common/logs/logger-config.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -8
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/logs/request.js +41 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +28 -23
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +11 -15
- package/dist/config.js.map +1 -1
- package/dist/constants.js +347 -74
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +319 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +125 -18
- package/dist/index.js.map +1 -1
- package/dist/interceptors/index.js +15 -0
- package/dist/interceptors/index.js.map +1 -0
- package/dist/interceptors/locusRetry.js +93 -0
- package/dist/interceptors/locusRetry.js.map +1 -0
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +380 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +101 -29
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/embeddedAppsUtils.js +3 -26
- package/dist/locus-info/embeddedAppsUtils.js.map +1 -1
- package/dist/locus-info/fullState.js +0 -15
- package/dist/locus-info/fullState.js.map +1 -1
- package/dist/locus-info/hostUtils.js +4 -12
- package/dist/locus-info/hostUtils.js.map +1 -1
- package/dist/locus-info/index.js +564 -246
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +10 -38
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +82 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +314 -163
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +110 -92
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +107 -231
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +137 -222
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +2 -9
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +316 -501
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +97 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +5311 -3871
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +292 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +260 -183
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +421 -347
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js +7 -0
- package/dist/meeting/request.type.js.map +1 -0
- package/dist/meeting/state.js +21 -31
- package/dist/meeting/state.js.map +1 -1
- package/dist/meeting/util.js +672 -585
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting/voicea-meeting.js +172 -0
- package/dist/meeting/voicea-meeting.js.map +1 -0
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +87 -39
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +352 -283
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/request.js +3 -15
- package/dist/meeting-info/request.js.map +1 -1
- package/dist/meeting-info/util.js +99 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +147 -234
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +43 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +895 -600
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +184 -157
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +134 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +158 -88
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +13 -12
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +194 -204
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +113 -68
- package/dist/members/request.js.map +1 -1
- package/dist/members/types.js +15 -0
- package/dist/members/types.js.map +1 -0
- package/dist/members/util.js +324 -259
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +19 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +11 -558
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +263 -50
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +58 -65
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +76 -95
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +62 -76
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +82 -45
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +657 -448
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/multistream/sendSlotManager.js +255 -0
- package/dist/multistream/sendSlotManager.js.map +1 -0
- package/dist/networkQualityMonitor/index.js +40 -59
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/personal-meeting-room/index.js +21 -45
- package/dist/personal-meeting-room/index.js.map +1 -1
- package/dist/personal-meeting-room/request.js +1 -31
- package/dist/personal-meeting-room/request.js.map +1 -1
- package/dist/personal-meeting-room/util.js +0 -13
- package/dist/personal-meeting-room/util.js.map +1 -1
- package/dist/reachability/clusterReachability.js +356 -0
- package/dist/reachability/clusterReachability.js.map +1 -0
- package/dist/reachability/index.js +297 -460
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +20 -26
- package/dist/reachability/request.js.map +1 -1
- package/dist/reachability/util.js +29 -0
- package/dist/reachability/util.js.map +1 -0
- package/dist/reactions/constants.js +13 -0
- package/dist/reactions/constants.js.map +1 -0
- package/dist/reactions/reactions.js +109 -0
- package/dist/reactions/reactions.js.map +1 -0
- package/dist/reactions/reactions.type.js +36 -0
- package/dist/reactions/reactions.type.js.map +1 -0
- package/dist/reconnection-manager/index.js +413 -483
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/enums.js +17 -0
- package/dist/recording-controller/enums.js.map +1 -0
- package/dist/recording-controller/index.js +362 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +64 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +102 -86
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +131 -135
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +437 -116
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +179 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +1 -95
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +557 -583
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +326 -130
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/transcription/index.js +22 -47
- package/dist/transcription/index.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/no-meeting-info.d.ts +14 -0
- package/dist/types/common/errors/parameter.d.ts +15 -0
- package/dist/types/common/errors/password-error.d.ts +15 -0
- package/dist/types/common/errors/permission.d.ts +14 -0
- package/dist/types/common/errors/reclaim-host-role-errors.d.ts +60 -0
- package/dist/types/common/errors/reconnection-in-progress.d.ts +9 -0
- package/dist/types/common/errors/reconnection.d.ts +15 -0
- package/dist/types/common/errors/stats.d.ts +15 -0
- package/dist/types/common/errors/webex-errors.d.ts +93 -0
- package/dist/types/common/errors/webex-meetings-error.d.ts +20 -0
- package/dist/types/common/events/events-scope.d.ts +17 -0
- package/dist/types/common/events/events.d.ts +12 -0
- package/dist/types/common/events/trigger-proxy.d.ts +2 -0
- package/dist/types/common/events/util.d.ts +2 -0
- package/dist/types/common/logs/logger-config.d.ts +2 -0
- package/dist/types/common/logs/logger-proxy.d.ts +2 -0
- package/dist/types/common/logs/request.d.ts +36 -0
- package/dist/types/common/queue.d.ts +34 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +1088 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/interceptors/index.d.ts +2 -0
- package/dist/types/interceptors/locusRetry.d.ts +27 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +322 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +272 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +93 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +241 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +167 -0
- package/dist/types/meeting/index.d.ts +1824 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +74 -0
- package/dist/types/meeting/muteState.d.ts +178 -0
- package/dist/types/meeting/request.d.ts +293 -0
- package/dist/types/meeting/request.type.d.ts +11 -0
- package/dist/types/meeting/state.d.ts +9 -0
- package/dist/types/meeting/util.d.ts +118 -0
- package/dist/types/meeting/voicea-meeting.d.ts +16 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +69 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +123 -0
- package/dist/types/meeting-info/request.d.ts +22 -0
- package/dist/types/meeting-info/util.d.ts +2 -0
- package/dist/types/meeting-info/utilv2.d.ts +2 -0
- package/dist/types/meetings/collection.d.ts +40 -0
- package/dist/types/meetings/index.d.ts +389 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +160 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +25 -0
- package/dist/types/members/util.d.ts +215 -0
- package/dist/types/metrics/constants.d.ts +70 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +120 -0
- package/dist/types/multistream/receiveSlot.d.ts +68 -0
- package/dist/types/multistream/receiveSlotManager.d.ts +56 -0
- package/dist/types/multistream/remoteMedia.d.ts +72 -0
- package/dist/types/multistream/remoteMediaGroup.d.ts +49 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +301 -0
- package/dist/types/multistream/sendSlotManager.d.ts +70 -0
- package/dist/types/networkQualityMonitor/index.d.ts +70 -0
- package/dist/types/personal-meeting-room/index.d.ts +47 -0
- package/dist/types/personal-meeting-room/request.d.ts +14 -0
- package/dist/types/personal-meeting-room/util.d.ts +2 -0
- package/dist/types/reachability/clusterReachability.d.ts +109 -0
- package/dist/types/reachability/index.d.ts +105 -0
- package/dist/types/reachability/request.d.ts +39 -0
- package/dist/types/reachability/util.d.ts +8 -0
- package/dist/types/reactions/constants.d.ts +3 -0
- package/dist/types/reactions/reactions.d.ts +4 -0
- package/dist/types/reactions/reactions.type.d.ts +52 -0
- package/dist/types/reconnection-manager/index.d.ts +136 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +207 -0
- package/dist/types/recording-controller/util.d.ts +14 -0
- package/dist/types/roap/index.d.ts +86 -0
- package/dist/types/roap/request.d.ts +39 -0
- package/dist/types/roap/turnDiscovery.d.ts +155 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +61 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +217 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +48 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/dist/types/webinar/collection.d.ts +16 -0
- package/dist/types/webinar/index.d.ts +5 -0
- package/dist/webinar/collection.js +44 -0
- package/dist/webinar/collection.js.map +1 -0
- package/dist/webinar/index.js +69 -0
- package/dist/webinar/index.js.map +1 -0
- package/internal-README.md +7 -6
- package/package.json +30 -21
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +220 -0
- package/src/breakouts/breakout.ts +188 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +925 -0
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/{browser-detection.js → browser-detection.ts} +9 -6
- package/src/common/collection.ts +9 -7
- package/src/common/{config.js → config.ts} +1 -1
- package/src/common/errors/{captcha-error.js → captcha-error.ts} +11 -7
- package/src/common/errors/{intent-to-join.js → intent-to-join.ts} +12 -7
- package/src/common/errors/{join-meeting.js → join-meeting.ts} +17 -8
- package/src/common/errors/{media.js → media.ts} +11 -7
- package/src/common/errors/no-meeting-info.ts +24 -0
- package/src/common/errors/parameter.ts +11 -7
- package/src/common/errors/{password-error.js → password-error.ts} +11 -7
- package/src/common/errors/{permission.js → permission.ts} +10 -6
- package/src/common/errors/reclaim-host-role-errors.ts +134 -0
- package/src/common/errors/{reconnection.js → reconnection.ts} +11 -7
- package/src/common/errors/{stats.js → stats.ts} +11 -7
- package/src/common/errors/{webex-errors.js → webex-errors.ts} +51 -8
- package/src/common/errors/{webex-meetings-error.js → webex-meetings-error.ts} +4 -2
- package/src/common/events/{events-scope.js → events-scope.ts} +6 -2
- package/src/common/events/{events.js → events.ts} +5 -1
- package/src/common/events/{trigger-proxy.js → trigger-proxy.ts} +9 -5
- package/src/common/events/{util.js → util.ts} +2 -3
- package/src/common/logs/{logger-config.js → logger-config.ts} +1 -2
- package/src/common/logs/logger-proxy.ts +44 -0
- package/src/common/logs/{request.js → request.ts} +26 -9
- package/src/common/queue.ts +22 -9
- package/src/{config.js → config.ts} +19 -21
- package/src/constants.ts +296 -27
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +300 -0
- package/src/index.ts +45 -0
- package/src/interceptors/index.ts +3 -0
- package/src/interceptors/locusRetry.ts +67 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +349 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +222 -0
- package/src/locus-info/{embeddedAppsUtils.js → embeddedAppsUtils.ts} +5 -6
- package/src/locus-info/{fullState.js → fullState.ts} +16 -12
- package/src/locus-info/{hostUtils.js → hostUtils.ts} +9 -8
- package/src/locus-info/{index.js → index.ts} +561 -119
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +29 -10
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +97 -17
- package/src/locus-info/{parser.js → parser.ts} +303 -104
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +199 -68
- package/src/media/index.ts +460 -0
- package/src/media/properties.ts +283 -0
- package/src/media/{util.js → util.ts} +2 -2
- package/src/mediaQualityMetrics/config.ts +249 -0
- package/src/meeting/in-meeting-actions.ts +199 -3
- package/src/meeting/index.ts +8494 -0
- package/src/meeting/locusMediaRequest.ts +313 -0
- package/src/meeting/muteState.ts +465 -0
- package/src/meeting/request.ts +912 -0
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/util.ts +799 -0
- package/src/meeting/voicea-meeting.ts +122 -0
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/index.ts +210 -0
- package/src/meeting-info/meeting-info-v2.ts +423 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +70 -58
- package/src/meeting-info/{utilv2.js → utilv2.ts} +99 -82
- package/src/meetings/collection.ts +76 -0
- package/src/meetings/index.ts +1539 -0
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/{util.js → util.ts} +133 -38
- package/src/member/{index.js → index.ts} +159 -56
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +397 -0
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +351 -146
- package/src/members/request.ts +255 -0
- package/src/members/types.ts +29 -0
- package/src/members/util.ts +353 -0
- package/src/metrics/{constants.js → constants.ts} +17 -6
- package/src/metrics/index.ts +73 -0
- package/src/multistream/mediaRequestManager.ts +341 -64
- package/src/multistream/receiveSlot.ts +69 -26
- package/src/multistream/receiveSlotManager.ts +66 -42
- package/src/multistream/remoteMedia.ts +40 -5
- package/src/multistream/remoteMediaGroup.ts +82 -3
- package/src/multistream/remoteMediaManager.ts +401 -81
- package/src/multistream/sendSlotManager.ts +199 -0
- package/src/networkQualityMonitor/{index.js → index.ts} +41 -29
- package/src/personal-meeting-room/{index.js → index.ts} +28 -19
- package/src/personal-meeting-room/{request.js → request.ts} +13 -4
- package/src/personal-meeting-room/{util.js → util.ts} +4 -4
- package/src/reachability/clusterReachability.ts +320 -0
- package/src/reachability/index.ts +371 -0
- package/src/reachability/request.ts +50 -35
- package/src/reachability/util.ts +24 -0
- package/src/reactions/constants.ts +4 -0
- package/src/reactions/reactions.ts +104 -0
- package/src/reactions/reactions.type.ts +62 -0
- package/src/reconnection-manager/index.ts +643 -0
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +332 -0
- package/src/recording-controller/util.ts +75 -0
- package/src/roap/index.ts +288 -0
- package/src/roap/request.ts +153 -0
- package/src/roap/turnDiscovery.ts +374 -70
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +166 -0
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1275 -0
- package/src/statsAnalyzer/mqaUtil.ts +440 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/src/webinar/collection.ts +31 -0
- package/src/webinar/index.ts +62 -0
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +791 -531
- package/test/integration/spec/space-meeting.js +391 -204
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +238 -0
- package/test/unit/spec/breakouts/collection.ts +15 -0
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1793 -0
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/browser-detection.js +9 -28
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +582 -0
- package/test/unit/spec/fixture/locus.js +93 -90
- package/test/unit/spec/interceptors/locusRetry.ts +131 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +625 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +325 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +1458 -21
- package/test/unit/spec/locus-info/infoUtils.js +71 -40
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +529 -685
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +41 -0
- package/test/unit/spec/locus-info/parser.js +119 -44
- package/test/unit/spec/locus-info/selfConstant.js +120 -103
- package/test/unit/spec/locus-info/selfUtils.js +291 -12
- package/test/unit/spec/media/index.ts +194 -111
- package/test/unit/spec/media/properties.ts +11 -11
- package/test/unit/spec/meeting/in-meeting-actions.ts +96 -3
- package/test/unit/spec/meeting/index.js +8616 -1921
- package/test/unit/spec/meeting/locusMediaRequest.ts +442 -0
- package/test/unit/spec/meeting/muteState.js +568 -207
- package/test/unit/spec/meeting/request.js +602 -82
- package/test/unit/spec/meeting/utils.js +867 -179
- package/test/unit/spec/meeting/voicea-meeting.ts +266 -0
- package/test/unit/spec/meeting-info/index.js +300 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +631 -78
- package/test/unit/spec/meeting-info/request.js +7 -9
- package/test/unit/spec/meeting-info/util.js +11 -12
- package/test/unit/spec/meeting-info/utilv2.js +131 -74
- package/test/unit/spec/meetings/collection.js +27 -1
- package/test/unit/spec/meetings/index.js +1826 -374
- package/test/unit/spec/meetings/utils.js +243 -14
- package/test/unit/spec/member/index.js +61 -7
- package/test/unit/spec/member/util.js +526 -26
- package/test/unit/spec/members/index.js +536 -55
- package/test/unit/spec/members/request.js +228 -40
- package/test/unit/spec/members/utils.js +217 -4
- package/test/unit/spec/metrics/index.js +13 -68
- package/test/unit/spec/multistream/mediaRequestManager.ts +1032 -110
- package/test/unit/spec/multistream/receiveSlot.ts +77 -18
- package/test/unit/spec/multistream/receiveSlotManager.ts +69 -39
- package/test/unit/spec/multistream/remoteMedia.ts +40 -2
- package/test/unit/spec/multistream/remoteMediaGroup.ts +350 -5
- package/test/unit/spec/multistream/remoteMediaManager.ts +937 -65
- package/test/unit/spec/multistream/sendSlotManager.ts +274 -0
- package/test/unit/spec/networkQualityMonitor/index.js +24 -18
- package/test/unit/spec/personal-meeting-room/personal-meeting-room.js +2 -7
- package/test/unit/spec/reachability/clusterReachability.ts +279 -0
- package/test/unit/spec/reachability/index.ts +606 -26
- package/test/unit/spec/reachability/request.js +68 -0
- package/test/unit/spec/reachability/util.ts +40 -0
- package/test/unit/spec/reconnection-manager/index.js +222 -34
- package/test/unit/spec/recording-controller/index.js +306 -0
- package/test/unit/spec/recording-controller/util.js +229 -0
- package/test/unit/spec/roap/index.ts +238 -82
- package/test/unit/spec/roap/request.ts +255 -0
- package/test/unit/spec/roap/turnDiscovery.ts +707 -110
- package/test/unit/spec/rtcMetrics/index.ts +122 -0
- package/test/unit/spec/stats-analyzer/index.js +1331 -62
- package/test/unit/spec/webinar/collection.ts +13 -0
- package/test/unit/spec/webinar/index.ts +60 -0
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +65 -50
- package/tsconfig.json +6 -0
- package/dist/media/internal-media-core-wrapper.js +0 -22
- package/dist/media/internal-media-core-wrapper.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -301
- package/dist/metrics/config.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -116
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/src/common/logs/logger-proxy.js +0 -33
- package/src/index.js +0 -15
- package/src/locus-info/controlsUtils.js +0 -102
- package/src/media/index.js +0 -459
- package/src/media/internal-media-core-wrapper.ts +0 -9
- package/src/media/properties.js +0 -289
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/index.js +0 -6284
- package/src/meeting/muteState.js +0 -318
- package/src/meeting/request.js +0 -684
- package/src/meeting/util.js +0 -506
- package/src/meeting-info/index.js +0 -131
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/collection.js +0 -40
- package/src/meetings/index.js +0 -1015
- package/src/member/util.js +0 -254
- package/src/members/request.js +0 -131
- package/src/members/util.js +0 -258
- package/src/metrics/config.js +0 -324
- package/src/metrics/index.js +0 -530
- package/src/multistream/multistreamMedia.ts +0 -92
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/reachability/index.js +0 -464
- package/src/reconnection-manager/index.js +0 -519
- package/src/roap/index.js +0 -220
- package/src/roap/request.js +0 -127
- package/src/statsAnalyzer/global.js +0 -133
- package/src/statsAnalyzer/index.js +0 -1006
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -291
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- /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
|
|
44
|
-
this
|
|
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
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* @
|
|
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
|
-
|
|
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 ===
|
|
139
|
+
if (this.status === 'PAUSED') {
|
|
104
140
|
_loggerProxy.default.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');
|
|
105
|
-
|
|
106
141
|
return;
|
|
107
|
-
}
|
|
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 =
|
|
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);
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
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 =
|
|
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$
|
|
177
|
-
|
|
178
|
-
|
|
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);
|
|
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
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
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;
|
|
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
|
-
}
|
|
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
|
-
}
|
|
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;
|
|
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
|
-
}
|
|
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;
|
|
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
|
-
}
|
|
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
|
-
};
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
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);
|
|
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$
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
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}
|
|
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);
|
|
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);
|
|
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
|
-
}
|
|
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$
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
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];
|
|
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;
|
|
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
|
-
|
|
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
|
-
});
|
|
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
|
-
|
|
865
|
+
WAIT: 'WAIT',
|
|
866
|
+
ERROR: 'ERROR',
|
|
867
|
+
LOCUS_URL_CHANGED: 'LOCUS_URL_CHANGED'
|
|
717
868
|
});
|
|
718
869
|
//# sourceMappingURL=parser.js.map
|