@webex/plugin-meetings 3.0.0-beta.1 → 3.0.0-beta.104
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/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 +48 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +357 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +176 -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 +43 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +919 -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/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/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 +10 -69
- 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 +37 -60
- package/dist/common/logs/request.js.map +1 -1
- package/dist/common/queue.js +4 -14
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +7 -6
- package/dist/config.js.map +1 -1
- package/dist/constants.js +184 -122
- 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 +25 -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 +250 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +72 -17
- package/dist/index.js.map +1 -1
- package/dist/locus-info/controlsUtils.js +56 -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 +362 -208
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +3 -37
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +12 -38
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +92 -118
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +99 -91
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +113 -337
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +96 -135
- package/dist/media/properties.js.map +1 -1
- package/dist/media/util.js +1 -35
- package/dist/media/util.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -495
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +59 -14
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2909 -2398
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/muteState.js +257 -112
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +330 -264
- 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 +63 -261
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/collection.js +6 -25
- package/dist/meeting-info/collection.js.map +1 -1
- package/dist/meeting-info/index.js +14 -32
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +273 -280
- 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 +98 -183
- package/dist/meeting-info/util.js.map +1 -1
- package/dist/meeting-info/utilv2.js +155 -232
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +26 -19
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +741 -548
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/request.js +26 -41
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +194 -149
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +100 -85
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +15 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +90 -68
- 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 +227 -188
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +54 -39
- 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 +107 -44
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/config.js +5 -14
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/constants.js +3 -7
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +67 -159
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +250 -0
- package/dist/multistream/mediaRequestManager.js.map +1 -0
- package/dist/multistream/receiveSlot.js +202 -0
- package/dist/multistream/receiveSlot.js.map +1 -0
- package/dist/multistream/receiveSlotManager.js +176 -0
- package/dist/multistream/receiveSlotManager.js.map +1 -0
- package/dist/multistream/remoteMedia.js +270 -0
- package/dist/multistream/remoteMedia.js.map +1 -0
- package/dist/multistream/remoteMediaGroup.js +209 -0
- package/dist/multistream/remoteMediaGroup.js.map +1 -0
- package/dist/multistream/remoteMediaManager.js +1137 -0
- package/dist/multistream/remoteMediaManager.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/index.js +192 -191
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +15 -23
- package/dist/reachability/request.js.map +1 -1
- 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 +386 -527
- 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 +343 -0
- package/dist/recording-controller/index.js.map +1 -0
- package/dist/recording-controller/util.js +63 -0
- package/dist/recording-controller/util.js.map +1 -0
- package/dist/roap/index.js +84 -286
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +138 -238
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +164 -102
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/statsAnalyzer/global.js +1 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +399 -470
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +143 -87
- 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 +34 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +124 -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 +2 -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/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/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 +69 -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 +34 -0
- package/dist/types/common/queue.d.ts +32 -0
- package/dist/types/config.d.ts +78 -0
- package/dist/types/constants.d.ts +968 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +13 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +37 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -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 +315 -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 +212 -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 +108 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +129 -0
- package/dist/types/meeting/index.d.ts +1748 -0
- package/dist/types/meeting/muteState.d.ts +185 -0
- package/dist/types/meeting/request.d.ts +275 -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 +2 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +57 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +112 -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 +31 -0
- package/dist/types/meetings/index.d.ts +345 -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 +156 -0
- package/dist/types/member/types.d.ts +21 -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 +69 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +2 -0
- package/dist/types/metrics/config.d.ts +172 -0
- package/dist/types/metrics/constants.d.ts +54 -0
- package/dist/types/metrics/index.d.ts +152 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +101 -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 +47 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +263 -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/index.d.ts +152 -0
- package/dist/types/reachability/request.d.ts +37 -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 +126 -0
- package/dist/types/recording-controller/enums.d.ts +7 -0
- package/dist/types/recording-controller/index.d.ts +193 -0
- package/dist/types/recording-controller/util.d.ts +13 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +38 -0
- package/dist/types/roap/turnDiscovery.d.ts +88 -0
- package/dist/types/statsAnalyzer/global.d.ts +36 -0
- package/dist/types/statsAnalyzer/index.d.ts +200 -0
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +24 -0
- package/dist/types/transcription/index.d.ts +64 -0
- package/internal-README.md +7 -6
- package/package.json +29 -21
- package/src/annotation/annotation.types.ts +41 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +339 -0
- package/src/breakouts/README.md +219 -0
- package/src/breakouts/breakout.ts +141 -0
- package/src/breakouts/collection.ts +19 -0
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +37 -0
- package/src/breakouts/index.ts +823 -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/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/{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} +8 -25
- 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} +22 -9
- package/src/common/queue.ts +1 -2
- package/src/{config.js → config.ts} +18 -12
- package/src/constants.ts +256 -183
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +16 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +49 -0
- package/src/controls-options-manager/util.ts +229 -0
- package/src/index.ts +33 -0
- package/src/locus-info/controlsUtils.ts +169 -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} +331 -80
- package/src/locus-info/{infoUtils.js → infoUtils.ts} +19 -8
- package/src/locus-info/{mediaSharesUtils.js → mediaSharesUtils.ts} +17 -17
- package/src/locus-info/{parser.js → parser.ts} +67 -79
- package/src/locus-info/{selfUtils.js → selfUtils.ts} +196 -67
- package/src/media/index.ts +488 -0
- package/src/media/{properties.js → properties.ts} +67 -54
- package/src/media/util.ts +16 -0
- package/src/mediaQualityMetrics/config.ts +384 -0
- package/src/meeting/in-meeting-actions.ts +123 -3
- package/src/meeting/{index.js → index.ts} +3334 -1775
- package/src/meeting/muteState.ts +526 -0
- package/src/meeting/{request.js → request.ts} +350 -142
- package/src/meeting/request.type.ts +13 -0
- package/src/meeting/{state.js → state.ts} +50 -35
- package/src/meeting/{util.js → util.ts} +126 -159
- package/src/meeting-info/{collection.js → collection.ts} +6 -2
- package/src/meeting-info/{index.js → index.ts} +42 -36
- package/src/meeting-info/meeting-info-v2.ts +345 -0
- package/src/meeting-info/{request.js → request.ts} +14 -4
- package/src/meeting-info/{util.js → util.ts} +60 -51
- package/src/meeting-info/{utilv2.js → utilv2.ts} +76 -60
- package/src/meetings/{collection.js → collection.ts} +26 -3
- package/src/meetings/index.ts +1394 -0
- package/src/meetings/{request.js → request.ts} +34 -25
- package/src/meetings/util.ts +288 -0
- package/src/member/{index.js → index.ts} +124 -56
- package/src/member/types.ts +24 -0
- package/src/member/{util.js → util.ts} +105 -25
- package/src/members/{collection.js → collection.ts} +10 -2
- package/src/members/{index.js → index.ts} +359 -139
- package/src/members/request.ts +215 -0
- package/src/members/types.ts +28 -0
- package/src/members/{util.js → util.ts} +145 -54
- package/src/metrics/{config.js → config.ts} +256 -92
- package/src/metrics/{constants.js → constants.ts} +1 -6
- package/src/metrics/{index.js → index.ts} +116 -97
- package/src/multistream/mediaRequestManager.ts +324 -0
- package/src/multistream/receiveSlot.ts +184 -0
- package/src/multistream/receiveSlotManager.ts +166 -0
- package/src/multistream/remoteMedia.ts +254 -0
- package/src/multistream/remoteMediaGroup.ts +225 -0
- package/src/multistream/remoteMediaManager.ts +1075 -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/{index.js → index.ts} +157 -94
- package/src/reachability/request.ts +46 -35
- 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.js → index.ts} +261 -163
- package/src/recording-controller/enums.ts +8 -0
- package/src/recording-controller/index.ts +315 -0
- package/src/recording-controller/util.ts +58 -0
- package/src/roap/index.ts +241 -0
- package/src/roap/request.ts +172 -0
- package/src/roap/turnDiscovery.ts +127 -53
- package/src/statsAnalyzer/global.ts +37 -0
- package/src/statsAnalyzer/index.ts +1273 -0
- package/src/statsAnalyzer/mqaUtil.ts +291 -0
- package/src/transcription/{index.js → index.ts} +46 -39
- package/test/integration/spec/converged-space-meetings.js +177 -0
- package/test/integration/spec/journey.js +666 -464
- package/test/integration/spec/space-meeting.js +321 -206
- package/test/integration/spec/transcription.js +7 -8
- package/test/unit/spec/annotation/index.ts +435 -0
- package/test/unit/spec/breakouts/breakout.ts +184 -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 +77 -0
- package/test/unit/spec/breakouts/index.ts +1504 -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/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +403 -0
- package/test/unit/spec/fixture/locus.js +92 -90
- package/test/unit/spec/locus-info/controlsUtils.js +177 -32
- package/test/unit/spec/locus-info/embeddedAppsUtils.js +8 -6
- package/test/unit/spec/locus-info/index.js +493 -3
- package/test/unit/spec/locus-info/infoUtils.js +41 -32
- package/test/unit/spec/locus-info/lib/BasicSeqCmp.json +88 -430
- package/test/unit/spec/locus-info/lib/SeqCmp.json +513 -685
- package/test/unit/spec/locus-info/parser.js +3 -9
- package/test/unit/spec/locus-info/selfConstant.js +110 -103
- package/test/unit/spec/locus-info/selfUtils.js +236 -12
- package/test/unit/spec/media/index.ts +303 -0
- package/test/unit/spec/media/properties.ts +73 -82
- package/test/unit/spec/meeting/in-meeting-actions.ts +58 -3
- package/test/unit/spec/meeting/index.js +3127 -975
- package/test/unit/spec/meeting/muteState.js +375 -70
- package/test/unit/spec/meeting/request.js +217 -43
- package/test/unit/spec/meeting/utils.js +205 -163
- package/test/unit/spec/meeting-info/meetinginfov2.js +268 -74
- 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 +15 -1
- package/test/unit/spec/meetings/index.js +1052 -333
- package/test/unit/spec/meetings/utils.js +163 -14
- package/test/unit/spec/member/index.js +24 -1
- package/test/unit/spec/member/util.js +359 -32
- package/test/unit/spec/members/index.js +547 -37
- package/test/unit/spec/members/request.js +76 -20
- package/test/unit/spec/members/utils.js +191 -4
- package/test/unit/spec/metrics/index.js +46 -20
- package/test/unit/spec/multistream/mediaRequestManager.ts +1060 -0
- package/test/unit/spec/multistream/receiveSlot.ts +163 -0
- package/test/unit/spec/multistream/receiveSlotManager.ts +203 -0
- package/test/unit/spec/multistream/remoteMedia.ts +255 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +396 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +1793 -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/index.ts +176 -27
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +106 -9
- package/test/unit/spec/recording-controller/index.js +231 -0
- package/test/unit/spec/recording-controller/util.js +102 -0
- package/test/unit/spec/roap/index.ts +78 -45
- package/test/unit/spec/roap/request.ts +217 -0
- package/test/unit/spec/roap/turnDiscovery.ts +93 -49
- package/test/unit/spec/stats-analyzer/index.js +118 -65
- package/test/utils/cmr.js +44 -42
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +64 -0
- package/test/utils/testUtils.js +63 -99
- package/test/utils/webex-config.js +22 -18
- package/test/utils/webex-test-users.js +57 -50
- package/tsconfig.json +6 -0
- package/dist/meeting/effectsState.js +0 -327
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -794
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -124
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/roap/collection.js +0 -73
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -337
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/state.js +0 -164
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/util.js +0 -102
- package/dist/roap/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 -593
- package/src/media/util.js +0 -38
- package/src/mediaQualityMetrics/config.js +0 -382
- package/src/meeting/effectsState.js +0 -205
- package/src/meeting/muteState.js +0 -318
- package/src/meeting-info/meeting-info-v2.js +0 -255
- package/src/meetings/index.js +0 -986
- package/src/meetings/util.js +0 -176
- package/src/members/request.js +0 -131
- package/src/peer-connection-manager/index.js +0 -723
- package/src/peer-connection-manager/util.ts +0 -117
- package/src/roap/collection.js +0 -63
- package/src/roap/handler.js +0 -252
- package/src/roap/index.js +0 -380
- package/src/roap/request.js +0 -198
- package/src/roap/state.js +0 -149
- package/src/roap/util.js +0 -93
- package/src/statsAnalyzer/global.js +0 -131
- package/src/statsAnalyzer/index.js +0 -1020
- package/src/statsAnalyzer/mqaUtil.js +0 -173
- package/test/unit/spec/meeting/effectsState.js +0 -293
- package/test/unit/spec/peerconnection-manager/index.js +0 -188
- package/test/unit/spec/peerconnection-manager/utils.js +0 -48
- package/test/unit/spec/peerconnection-manager/utils.test-fixtures.ts +0 -389
- package/test/unit/spec/roap/util.js +0 -30
- /package/src/common/errors/{reconnection-in-progress.js → reconnection-in-progress.ts} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Parser","queue","SimpleQueue","status","IDLE","onDeltaAction","workingCopy","newLoci","isValid","isLoci","setStatus","LoggerProxy","logger","info","PAUSED","size","processDeltaEvent","action","locus","loci","enqueue","WORKING","DESYNC","USE_INCOMING","extract","extractComparisonState","dequeue","isValidLocus","result","compare","lociComparison","debug","pause","call","nextEvent","current","incoming","comparison","min","max","GT","LT","currentIsNotUnique","unique","length","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","currentIsUnique","incomingIsUnique","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","isSequenceEmpty","pack","packComparisonResult","baseSequence","compareDelta","compareSequence","sequence","compareToAction","local","getMetaData","delta","getUniqueSequences","rules","checkSequenceOverlap","checkUnequalRanges","checkForUniqueEntries","checkIfOutOfSync","rule","ERROR","USE_CURRENT","lociComparisonResult","split","entries","first","last","slice","rangeStart","rangeEnd","baseLoci","otherLoci","diff","getNumbersOutOfRange","output","filter","num","sort","a","b","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","newData","oldData","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution"],"sources":["parser.js"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SimpleQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n static status = {\n IDLE: 'IDLE',\n PAUSED: 'PAUSED',\n WORKING: 'WORKING'\n };\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n ERROR: 'ERROR'\n };\n\n\n /**\n * @constructs Parser\n */\n constructor() {\n this.queue = new SimpleQueue();\n this.status = Parser.status.IDLE;\n this.onDeltaAction = null;\n this.workingCopy = null;\n }\n\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n }\n else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n }\n else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n }\n else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n static compareDelta(current, incoming) {\n const {\n LT, GT, EQ, DESYNC, USE_INCOMING\n } = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local = Parser.getMetaData(current);\n const delta = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result) {\n const {\n DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING\n } = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(`Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`);\n }\n\n return action;\n }\n\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult) {\n return lociComparisonResult.split(':')[0];\n }\n\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries\n };\n }\n\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci, otherLoci) {\n const diff = difference(\n baseLoci.entries,\n otherLoci.entries\n );\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list, rangeStart, rangeEnd) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {IDLE} = Parser.status;\n const {isLoci} = Parser;\n const setStatus = (status) => { this.status = status; };\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n setStatus(IDLE);\n LoggerProxy.logger.info('Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:', this.workingCopy, 'newLoci:', newLoci);\n }\n else {\n isValid = true;\n }\n\n return isValid;\n }\n\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) =>\n Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n if (this.status === Parser.status.PAUSED) {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n }\n else {\n this.status = Parser.status.IDLE;\n }\n }\n\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line no-unused-vars\n onDeltaAction(action, locus) {}\n\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n // start processing events in the queue if idle\n // and a function handler is defined\n if (this.status === Parser.status.IDLE && this.onDeltaAction) {\n // Update status, ensure we only process one event at a time.\n this.status = Parser.status.WORKING;\n\n this.processDeltaEvent();\n }\n }\n\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData, oldData) {\n return `${newData}:${oldData}`;\n }\n\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n this.status = Parser.status.PAUSED;\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n if (lociComparison === DESYNC) {\n // wait for desync response\n this.pause();\n }\n else if (lociComparison === USE_INCOMING) {\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING locus.\n this.workingCopy = newLoci;\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(`Locus-info:parser#processDeltaEvent --> Locus Delta Action: ${lociComparison}`);\n this.onDeltaAction.call(this, lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n this.status = Parser.status.WORKING;\n this.nextEvent();\n }\n\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode, comparison) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max'\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min'\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange'\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange'\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange'\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique'\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique'\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap'\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin'\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)'\n }\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Parser","queue","SimpleQueue","status","IDLE","onDeltaAction","workingCopy","newLoci","isValid","isLoci","setStatus","LoggerProxy","logger","info","PAUSED","size","processDeltaEvent","action","locus","loci","enqueue","WORKING","DESYNC","USE_INCOMING","extract","extractComparisonState","dequeue","isValidLocus","result","compare","lociComparison","debug","pause","call","nextEvent","current","incoming","comparison","min","max","GT","LT","currentIsNotUnique","unique","length","incomingIsNotUnique","currentTotalRange","end","incomingTotalRange","EQ","currentIsUnique","incomingIsUnique","currentUniqueMin","incomingUniqueMin","currentHasNoRange","start","incomingHasNoRange","neitherSeqHasRange","hasUniqOverlap","list","some","seq","currentUniqOverlap","incomingUniqOverlap","debugInfo","isSequenceEmpty","pack","packComparisonResult","baseSequence","compareDelta","compareSequence","sequence","compareToAction","local","getMetaData","delta","getUniqueSequences","rules","checkSequenceOverlap","checkUnequalRanges","checkForUniqueEntries","checkIfOutOfSync","rule","ERROR","USE_CURRENT","lociComparisonResult","split","entries","first","last","slice","rangeStart","rangeEnd","baseLoci","otherLoci","diff","getNumbersOutOfRange","output","filter","num","sort","a","b","hasEmptyEntries","hasEmptyRange","hasProp","prop","Object","prototype","hasOwnProperty","newData","oldData","debugCode","mStr","strings","join","replace","resolutionMap","debugMap","SO001","title","description","logic","SO002","UR001","UR002","UR003","UE001","UE002","OOS001","OOS002","OOS003","debugObj","resolution"],"sources":["parser.ts"],"sourcesContent":["import {difference} from 'lodash';\n\nimport SimpleQueue from '../common/queue';\nimport LoggerProxy from '../common/logs/logger-proxy';\n\n/**\n * Locus Delta Parser\n * @private\n * https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Delta-Events\n */\nexport default class Parser {\n // processing status\n static status = {\n IDLE: 'IDLE',\n PAUSED: 'PAUSED',\n WORKING: 'WORKING',\n };\n\n // loci comparison states\n static loci = {\n EQ: 'EQUAL',\n GT: 'GREATER_THAN',\n LT: 'LESS_THAN',\n DESYNC: 'DESYNC',\n USE_INCOMING: 'USE_INCOMING',\n USE_CURRENT: 'USE_CURRENT',\n ERROR: 'ERROR',\n };\n\n queue: any;\n workingCopy: any;\n\n /**\n * @constructs Parser\n */\n constructor() {\n this.queue = new SimpleQueue();\n // @ts-ignore - This is declared as static class member and again being initialized here from same\n this.status = Parser.status.IDLE;\n this.onDeltaAction = null;\n this.workingCopy = null;\n }\n\n /**\n * Checks if two sequences overlap in time,\n * the sequence with the higher minimum value is greater.\n * Chooses sequence with most recent data.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkSequenceOverlap(current, incoming) {\n let comparison = null;\n\n // if earliest working copy sequence is more recent than last incoming sequence\n if (current.min > incoming.max) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:SO001`;\n }\n // if last working copy sequence is before the earliest incoming sequence\n else if (current.max < incoming.min) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:SO002`;\n }\n\n // if no match above, defaults to null\n return comparison;\n }\n\n /**\n * Checks if two sequences have unequal ranges.\n * Chooses sequence with most larger range.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {object} loci comparison\n */\n static checkUnequalRanges(current, incoming) {\n let comparison = null;\n const currentIsNotUnique = current.unique.length === 0;\n const incomingIsNotUnique = incoming.unique.length === 0;\n const currentTotalRange = current.end - current.min;\n const incomingTotalRange = incoming.end - incoming.min;\n\n // no unique values for both loci\n if (currentIsNotUnique && incomingIsNotUnique) {\n // current working copy loci has a larger range\n if (currentTotalRange > incomingTotalRange) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UR001`;\n }\n // incoming delta loci has a larger range\n else if (currentTotalRange < incomingTotalRange) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UR002`;\n } else {\n // with no unique entries and with ranges either absent or\n // of the same size, the sequences are considered equal.\n comparison = `${Parser.loci.EQ}:UR003`;\n }\n }\n\n return comparison;\n }\n\n /**\n * Checks if either sequences has unique entries.\n * Entries are considered unique if they do not overlap\n * with other Loci sequences or range values.\n * Chooses sequence with the unique entries.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkForUniqueEntries(current, incoming) {\n let comparison = null;\n const currentIsUnique = current.unique.length > 0;\n const incomingIsUnique = incoming.unique.length > 0;\n\n // current has unique entries and incoming does not\n if (currentIsUnique && !incomingIsUnique) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:UE001`;\n }\n // current has no unique entries but incoming does\n else if (!currentIsUnique && incomingIsUnique) {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:UE002`;\n }\n\n return comparison;\n }\n\n /**\n * Checks both Locus Delta objects to see if they are\n * out of sync with one another. If so sends a DESYNC\n * request to the server.\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static checkIfOutOfSync(current, incoming) {\n let comparison = null;\n const currentUniqueMin = current.unique[0];\n const incomingUniqueMin = incoming.unique[0];\n\n const currentHasNoRange = !current.start && !current.end;\n const incomingHasNoRange = !incoming.start && !incoming.end;\n const neitherSeqHasRange = currentHasNoRange && incomingHasNoRange;\n\n const hasUniqOverlap = (list, min, max) => list.some((seq) => min < seq && seq < max);\n // current unique entries overlap the total range of incoming\n const currentUniqOverlap = hasUniqOverlap(current.unique, incoming.min, incoming.max);\n // vice-versa, incoming unique entries overlap the total range of current\n const incomingUniqOverlap = hasUniqOverlap(incoming.unique, current.min, current.max);\n\n if (neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap) {\n // outputs string indicating which condition occurred. ex: 0,1,0\n const debugInfo = `${+neitherSeqHasRange},${+currentUniqOverlap},${+incomingUniqOverlap}`;\n\n // send DESYNC to server\n comparison = `${Parser.loci.DESYNC}:OOS001:${debugInfo}`;\n } else if (currentUniqueMin > incomingUniqueMin) {\n // choose left side (current)\n comparison = `${Parser.loci.GT}:OOS002`;\n } else {\n // choose right side (incoming)\n comparison = `${Parser.loci.LT}:OOS003`;\n }\n\n return comparison;\n }\n\n /**\n * Compares two loci to determine which one contains the most recent state\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @returns {string} loci comparison state\n */\n static compare(current, incoming) {\n const {isSequenceEmpty} = Parser;\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n if (isSequenceEmpty(current) || isSequenceEmpty(incoming)) {\n return pack(Parser.loci.USE_INCOMING, 'C001');\n }\n\n if (incoming.baseSequence) {\n return pack(Parser.compareDelta(current, incoming), 'C002');\n }\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n const action = Parser.compareToAction(extract(result));\n\n return pack(action, result);\n }\n\n /**\n * Compares two loci sequences (with delta params) and indicates what action\n * to take.\n * @instance\n * @memberof Locus\n * @param {Types~Locus} current\n * @param {Types~Locus} incoming\n * @private\n * @returns {string} loci comparison state\n */\n private static compareDelta(current, incoming) {\n const {LT, GT, EQ, DESYNC, USE_INCOMING} = Parser.loci;\n\n const {extractComparisonState: extract} = Parser;\n const {packComparisonResult: pack} = Parser;\n\n const result = Parser.compareSequence(current.sequence, incoming.sequence);\n let comparison = extract(result);\n\n if (comparison !== LT) {\n return pack(Parser.compareToAction(comparison), result);\n }\n\n comparison = Parser.compareSequence(current.sequence, incoming.baseSequence);\n\n switch (extract(comparison)) {\n case GT:\n case EQ:\n comparison = USE_INCOMING;\n break;\n\n default:\n comparison = DESYNC;\n }\n\n return pack(comparison, result);\n }\n\n /**\n * Compares Locus sequences\n * @param {Types~Locus} current Current working copy\n * @param {Types~Locus} incoming New Locus delta\n * @returns {string}\n */\n static compareSequence(current, incoming) {\n // Locus sequence comparison rules in order of priority.\n // https://sqbu-github.cisco.com/WebExSquared/cloud-apps/wiki/Locus-Sequence-Comparison-Algorithm\n\n const local: any = Parser.getMetaData(current);\n const delta: any = Parser.getMetaData(incoming);\n\n // update loci metadata\n local.unique = Parser.getUniqueSequences(local, delta);\n delta.unique = Parser.getUniqueSequences(delta, local);\n\n // Locus sequence comparison rules\n // order matters\n const rules = [\n Parser.checkSequenceOverlap,\n Parser.checkUnequalRanges,\n Parser.checkForUniqueEntries,\n Parser.checkIfOutOfSync,\n ];\n\n for (const rule of rules) {\n // Rule only returns a value if the rule applies,\n // otherwise returns null.\n const result = rule(local, delta);\n\n if (result) {\n return result;\n }\n }\n\n // error, none of rules above applied\n // should never get here as last rule\n // should be catch all.\n return Parser.loci.ERROR;\n }\n\n /**\n * Transates the result of a sequence comparison into an intended behavior\n * @param {string} result\n * @returns {string} Locus comparison action\n */\n static compareToAction(result: string) {\n const {DESYNC, EQ, ERROR, GT, LT, USE_CURRENT, USE_INCOMING} = Parser.loci;\n\n let action = ERROR;\n\n switch (result) {\n case EQ:\n case GT:\n action = USE_CURRENT;\n break;\n case LT:\n action = USE_INCOMING;\n break;\n case DESYNC:\n action = DESYNC;\n break;\n default:\n LoggerProxy.logger.info(\n `Locus-info:parser#compareToAction --> Error: ${result} is not a recognized sequence comparison result.`\n );\n }\n\n return action;\n }\n\n /**\n * Extracts a loci comparison from a string of data.\n * @param {string} lociComparisonResult Comparison result with extra data\n * @returns {string} Comparison of EQ, LT, GT, or DESYNC.\n */\n static extractComparisonState(lociComparisonResult: string) {\n return lociComparisonResult.split(':')[0];\n }\n\n /**\n * @typedef {object} LociMetadata\n * @property {number} start - Starting sequence number\n * @property {number} end - Ending sequence number\n * @property {number} first - First sequence number\n * @property {number} last - Last sequence number\n * @property {number} min - Minimum sequence number\n * @property {number} max - Maximum sequence number\n * @property {number} entries - Loci sequence entries\n */\n\n /**\n * Metadata for Locus delta\n * @param {Array.<number>} sequence Locus delta sequence\n * @returns {LociMetadata} Locus Delta Metadata\n */\n static getMetaData(sequence: any) {\n const {entries} = sequence;\n const first = entries[0];\n const last = entries.slice(-1)[0];\n\n // rangeStart or rangeEnd is 0 if a range doesn't exist\n const start = sequence.rangeStart;\n const end = sequence.rangeEnd;\n\n // sequence data\n return {\n start,\n end,\n first,\n last,\n // Rule is: rangeStart <= rangeEnd <= min(entries)\n min: start || first,\n // Grab last entry if exist else default to rangeEnd\n max: last || end,\n // keep reference to actual sequence entries\n entries,\n };\n }\n\n /**\n * Compares two Locus delta objects and notes unique\n * values contained within baseLoci.\n * @param {LociMetadata} baseLoci\n * @param {LociMetadata} otherLoci\n * @returns {Array.<number>} List of unique sequences\n */\n static getUniqueSequences(baseLoci: any, otherLoci: any) {\n const diff: any = difference(baseLoci.entries, otherLoci.entries);\n\n const {start, end} = otherLoci;\n\n return Parser.getNumbersOutOfRange(diff, start, end);\n }\n\n /**\n * Returns an array of numbers outside of a given range.\n * @param {Array.<number>} list Array to filter\n * @param {number} rangeStart Start of range\n * @param {number} rangeEnd End of range\n * @returns {Array.<number>} Array of numbers sorted ASC\n */\n static getNumbersOutOfRange(list: Array<number>, rangeStart: number, rangeEnd: number) {\n // Collect all numbers if number is outside of specified range\n const output = list.filter((num) => num < rangeStart || num > rangeEnd);\n\n // sort ascending\n return output.sort((a, b) => a - b);\n }\n\n /**\n * Checks if newLoci or workingCopy is invalid.\n * @param {Types~Locus} newLoci\n * @returns {boolean}\n */\n isValidLocus(newLoci) {\n let isValid = false;\n const {IDLE} = Parser.status;\n const {isLoci} = Parser;\n // @ts-ignore\n const setStatus = (status) => {\n // @ts-ignore\n this.status = status;\n };\n\n // one or both objects are not locus delta events\n if (!isLoci(this.workingCopy) || !isLoci(newLoci)) {\n setStatus(IDLE);\n LoggerProxy.logger.info(\n 'Locus-info:parser#processDeltaEvent --> Ignoring non-locus object. workingCopy:',\n this.workingCopy,\n 'newLoci:',\n newLoci\n );\n } else {\n isValid = true;\n }\n\n return isValid;\n }\n\n /**\n * Determines if a paricular locus's sequence is empty\n * @param {Types~Locus} locus\n * @returns {bool}\n */\n static isSequenceEmpty(locus) {\n const {sequence} = locus;\n const hasEmptyEntries = !sequence.entries?.length;\n const hasEmptyRange = sequence.rangeStart === 0 && sequence.rangeEnd === 0;\n\n return hasEmptyEntries && hasEmptyRange;\n }\n\n /**\n * Determines if an object has basic\n * structure of a locus object.\n * @param {Types~Locus} loci\n * @returns {boolean}\n */\n static isLoci(loci) {\n if (!loci || !loci.sequence) {\n return false;\n }\n const hasProp = (prop) => Object.prototype.hasOwnProperty.call(loci.sequence, prop);\n\n if (hasProp('rangeStart') && hasProp('rangeEnd')) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Processes next event in queue,\n * if queue is empty sets status to idle.\n * @returns {undefined}\n */\n nextEvent() {\n // @ts-ignore\n if (this.status === Parser.status.PAUSED) {\n LoggerProxy.logger.info('Locus-info:parser#nextEvent --> Locus parser paused.');\n\n return;\n }\n\n // continue processing until queue is empty\n if (this.queue.size() > 0) {\n this.processDeltaEvent();\n } else {\n // @ts-ignore\n this.status = Parser.status.IDLE;\n }\n }\n\n /**\n * Function handler for delta actions,\n * is set by instance callee.\n * @param {string} action Locus delta action\n * @param {Types~Locus} locus Locus delta\n * @returns {undefined}\n */\n // eslint-disable-next-line no-unused-vars\n onDeltaAction(action: string, locus) {}\n\n /**\n * Event handler for locus delta events\n * @param {Types~Locus} loci Locus Delta\n * @returns {undefined}\n */\n onDeltaEvent(loci) {\n // enqueue the new loci\n this.queue.enqueue(loci);\n // start processing events in the queue if idle\n // and a function handler is defined\n // @ts-ignore\n if (this.status === Parser.status.IDLE && this.onDeltaAction) {\n // Update status, ensure we only process one event at a time.\n // @ts-ignore\n this.status = Parser.status.WORKING;\n\n this.processDeltaEvent();\n }\n }\n\n /**\n * Appends new data onto a string of existing data.\n * @param {string} newData\n * @param {string} oldData\n * @returns {string}\n */\n static packComparisonResult(newData: string, oldData: string) {\n return `${newData}:${oldData}`;\n }\n\n /**\n * Pause locus processing\n * @returns {undefined}\n */\n pause() {\n // @ts-ignore\n this.status = Parser.status.PAUSED;\n LoggerProxy.logger.info('Locus-info:parser#pause --> Locus parser paused.');\n }\n\n /**\n * Processes next locus delta in the queue,\n * continues until the queue is empty\n * or cleared.\n * @returns {undefined}\n */\n processDeltaEvent() {\n const {DESYNC, USE_INCOMING} = Parser.loci;\n const {extractComparisonState: extract} = Parser;\n const newLoci = this.queue.dequeue();\n\n if (!this.isValidLocus(newLoci)) {\n return;\n }\n\n const result = Parser.compare(this.workingCopy, newLoci);\n const lociComparison = extract(result);\n\n // limited debugging, use chrome extension\n // for full debugging.\n LoggerProxy.logger.debug(`Locus-info:parser#processDeltaEvent --> Locus Debug: ${result}`);\n\n if (lociComparison === DESYNC) {\n // wait for desync response\n this.pause();\n } else if (lociComparison === USE_INCOMING) {\n // update working copy for future comparisons.\n // Note: The working copy of parser gets updated in .onFullLocus()\n // and here when USE_INCOMING locus.\n this.workingCopy = newLoci;\n }\n\n if (this.onDeltaAction) {\n LoggerProxy.logger.info(\n `Locus-info:parser#processDeltaEvent --> Locus Delta Action: ${lociComparison}`\n );\n\n // eslint-disable-next-line no-useless-call\n this.onDeltaAction.call(this, lociComparison, newLoci);\n }\n\n this.nextEvent();\n }\n\n /**\n * Resume from a paused state\n * @returns {undefined}\n */\n resume() {\n LoggerProxy.logger.info('Locus-info:parser#resume --> Locus parser resumed.');\n // @ts-ignore\n this.status = Parser.status.WORKING;\n this.nextEvent();\n }\n\n /**\n * Gets related debug info for given error code\n * @param {string} debugCode Debug code\n * @param {string} comparison Locus comparison string\n * @returns {object} Debug message\n */\n static getDebugMessage(debugCode: string, comparison: string) {\n // removes extra spaces from multiline string\n const mStr = (strings) => strings.join('').replace(/\\s{2,}/g, ' ');\n\n const resolutionMap = {\n EQ: `${Parser.loci.LT}: is equal (current == incoming).`,\n LT: `${Parser.loci.LT}: choose right side (incoming).`,\n GT: `${Parser.loci.GT}: choose left side (current).`,\n };\n\n const debugMap = {\n SO001: {\n title: 'checkSequenceOverlap-001',\n description: mStr`Occurs if earliest working copy sequence is more \\\n recent than last incoming sequence.`,\n logic: 'current.min > incoming.max',\n },\n\n SO002: {\n title: 'checkSequenceOverlap-002',\n description: mStr`Occurs if last working copy sequence is before the \\\n earliest incoming sequence.`,\n logic: 'current.max < incoming.min',\n },\n\n UR001: {\n title: 'checkUnequalRanges-001',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the current working copy loci has a larger range.`,\n logic: 'currentTotalRange > incomingTotalRange',\n },\n\n UR002: {\n title: 'checkUnequalRanges-002',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and the incoming delta loci has a larger range.`,\n logic: 'currentTotalRange < incomingTotalRange',\n },\n\n UR003: {\n title: 'checkUnequalRanges-003',\n description: mStr`Occurs if there are no unique values for both loci, \\\n and with ranges either absent or of the same size, the sequences \\\n are considered equal.`,\n logic: 'currentTotalRange == incomingTotalRange',\n },\n\n UE001: {\n title: 'checkForUniqueEntries-001',\n description: mStr`Occurs if current loci has unique entries and \\\n incoming does not. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: 'currentIsUnique && !incomingIsUnique',\n },\n\n UE002: {\n title: 'checkForUniqueEntries-002',\n description: mStr`Occurs if current has no unique entries but \\\n incoming does. Entries are considered unique if they \\\n do not overlap with other Loci sequences or range values.`,\n logic: '!currentIsUnique && incomingIsUnique',\n },\n\n OOS001: {\n title: 'checkIfOutOfSync-001',\n description: mStr`Occurs if neither sequence has a range, or \\\n if the current loci unique entries overlap the total range of the \\\n incoming sequence, or if the incoming unique entries overlap \\\n the total range of current sequence.`,\n logic: 'neitherSeqHasRange || currentUniqOverlap || incomingUniqOverlap',\n },\n\n OOS002: {\n title: 'checkIfOutOfSync-002',\n description: mStr`Occurs if the minimum value from sequences that are \\\n unique to the current loci is greater than the minimum value from \\\n sequences that are unique to the incoming loci.`,\n logic: 'currentUniqueMin > incomingUniqueMin',\n },\n\n OOS003: {\n title: 'checkIfOutOfSync-003',\n description: mStr`Occurs if none of the comparison rules applied. \\\n It is a catch all.`,\n logic: 'else (catch all)',\n },\n };\n\n const debugObj = debugMap[debugCode];\n\n debugObj.title = `Debug: ${debugObj.title}`;\n debugObj.resolution = resolutionMap[comparison];\n\n return debugObj;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,34 +1,27 @@
|
|
|
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 _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
|
|
14
|
-
|
|
10
|
+
var _isEqual2 = _interopRequireDefault(require("lodash/isEqual"));
|
|
15
11
|
var _constants = require("../constants");
|
|
16
|
-
|
|
17
12
|
var _parameter = _interopRequireDefault(require("../common/errors/parameter"));
|
|
18
|
-
|
|
19
13
|
var SelfUtils = {};
|
|
20
14
|
var PSTN_DEVICE_TYPE = 'PROVISIONAL';
|
|
15
|
+
|
|
21
16
|
/**
|
|
22
17
|
* parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id
|
|
23
18
|
* @param {Object} self
|
|
24
19
|
* @param {String} deviceId
|
|
25
20
|
* @returns {undefined}
|
|
26
21
|
*/
|
|
27
|
-
|
|
28
22
|
SelfUtils.parse = function (self, deviceId) {
|
|
29
23
|
if (self) {
|
|
30
24
|
var _joinedWith$intent;
|
|
31
|
-
|
|
32
25
|
var joinedWith = self.devices.find(function (device) {
|
|
33
26
|
return deviceId === device.url;
|
|
34
27
|
});
|
|
@@ -36,6 +29,7 @@ SelfUtils.parse = function (self, deviceId) {
|
|
|
36
29
|
return PSTN_DEVICE_TYPE === device.deviceType;
|
|
37
30
|
});
|
|
38
31
|
return {
|
|
32
|
+
remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),
|
|
39
33
|
remoteMuted: SelfUtils.getRemoteMuted(self),
|
|
40
34
|
unmuteAllowed: SelfUtils.getUnmuteAllowed(self),
|
|
41
35
|
localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),
|
|
@@ -65,49 +59,52 @@ SelfUtils.parse = function (self, deviceId) {
|
|
|
65
59
|
isUserUnadmitted: self.state === _constants._IDLE_ && (joinedWith === null || joinedWith === void 0 ? void 0 : (_joinedWith$intent = joinedWith.intent) === null || _joinedWith$intent === void 0 ? void 0 : _joinedWith$intent.type) === _constants._WAIT_,
|
|
66
60
|
layout: SelfUtils.getLayout(self),
|
|
67
61
|
canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
|
|
68
|
-
isSharingBlocked: SelfUtils.isSharingBlocked(self)
|
|
62
|
+
isSharingBlocked: SelfUtils.isSharingBlocked(self),
|
|
63
|
+
breakoutSessions: SelfUtils.getBreakoutSessions(self),
|
|
64
|
+
breakout: SelfUtils.getBreakout(self)
|
|
69
65
|
};
|
|
70
66
|
}
|
|
71
|
-
|
|
72
67
|
return null;
|
|
73
68
|
};
|
|
74
|
-
|
|
69
|
+
SelfUtils.getBreakoutSessions = function (self) {
|
|
70
|
+
var _self$controls, _self$controls$breako;
|
|
71
|
+
return self === null || self === void 0 ? void 0 : (_self$controls = self.controls) === null || _self$controls === void 0 ? void 0 : (_self$controls$breako = _self$controls.breakout) === null || _self$controls$breako === void 0 ? void 0 : _self$controls$breako.sessions;
|
|
72
|
+
};
|
|
73
|
+
SelfUtils.getBreakout = function (self) {
|
|
74
|
+
var _self$controls2;
|
|
75
|
+
return self === null || self === void 0 ? void 0 : (_self$controls2 = self.controls) === null || _self$controls2 === void 0 ? void 0 : _self$controls2.breakout;
|
|
76
|
+
};
|
|
75
77
|
SelfUtils.getLayout = function (self) {
|
|
76
|
-
var _self$
|
|
77
|
-
|
|
78
|
-
return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls = self.controls) === null || _self$controls === void 0 ? void 0 : _self$controls.layouts) ? self.controls.layouts[0].type : undefined;
|
|
78
|
+
var _self$controls3;
|
|
79
|
+
return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls3 = self.controls) === null || _self$controls3 === void 0 ? void 0 : _self$controls3.layouts) ? self.controls.layouts[0].type : undefined;
|
|
79
80
|
};
|
|
80
|
-
|
|
81
81
|
SelfUtils.getRoles = function (self) {
|
|
82
|
-
var _self$
|
|
83
|
-
|
|
84
|
-
return ((self === null || self === void 0 ? void 0 : (_self$controls2 = self.controls) === null || _self$controls2 === void 0 ? void 0 : (_self$controls2$role = _self$controls2.role) === null || _self$controls2$role === void 0 ? void 0 : _self$controls2$role.roles) || []).reduce(function (roles, role) {
|
|
82
|
+
var _self$controls4, _self$controls4$role;
|
|
83
|
+
return ((self === null || self === void 0 ? void 0 : (_self$controls4 = self.controls) === null || _self$controls4 === void 0 ? void 0 : (_self$controls4$role = _self$controls4.role) === null || _self$controls4$role === void 0 ? void 0 : _self$controls4$role.roles) || []).reduce(function (roles, role) {
|
|
85
84
|
if (role.hasRole) {
|
|
86
85
|
roles.push(role.type);
|
|
87
86
|
}
|
|
88
|
-
|
|
89
87
|
return roles;
|
|
90
88
|
}, []);
|
|
91
89
|
};
|
|
92
|
-
|
|
93
90
|
SelfUtils.canNotViewTheParticipantList = function (self) {
|
|
94
91
|
return !!(self !== null && self !== void 0 && self.canNotViewTheParticipantList);
|
|
95
92
|
};
|
|
96
|
-
|
|
97
93
|
SelfUtils.isSharingBlocked = function (self) {
|
|
98
94
|
return !!(self !== null && self !== void 0 && self.isSharingBlocked);
|
|
99
95
|
};
|
|
100
|
-
|
|
101
96
|
SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
|
|
102
97
|
var previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);
|
|
103
98
|
var current = newSelf && SelfUtils.parse(newSelf, deviceId);
|
|
104
99
|
var updates = {};
|
|
105
100
|
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
|
|
106
101
|
updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
|
|
102
|
+
updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
|
|
107
103
|
updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
|
|
108
104
|
updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);
|
|
109
105
|
updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
|
|
110
106
|
updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
|
|
107
|
+
updates.isUpgradeToModeratorOrCohost = SelfUtils.isUpgradeToModeratorOrCohost(previous, current);
|
|
111
108
|
updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
|
|
112
109
|
updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
|
|
113
110
|
updates.layoutChanged = SelfUtils.layoutChanged(previous, current);
|
|
@@ -117,122 +114,115 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
|
|
|
117
114
|
updates.shareStateChange = (previous === null || previous === void 0 ? void 0 : previous.currentMediaStatus.share) !== current.currentMediaStatus.share;
|
|
118
115
|
updates.canNotViewTheParticipantListChanged = (previous === null || previous === void 0 ? void 0 : previous.canNotViewTheParticipantList) !== current.canNotViewTheParticipantList;
|
|
119
116
|
updates.isSharingBlockedChanged = (previous === null || previous === void 0 ? void 0 : previous.isSharingBlocked) !== current.isSharingBlocked;
|
|
117
|
+
updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
|
|
120
118
|
return {
|
|
121
119
|
previous: previous,
|
|
122
120
|
current: current,
|
|
123
121
|
updates: updates
|
|
124
122
|
};
|
|
125
123
|
};
|
|
124
|
+
|
|
126
125
|
/**
|
|
127
126
|
* Checks if user has joined the meeting
|
|
128
127
|
* @param {Object} self
|
|
129
128
|
* @returns {boolean} isJoined
|
|
130
|
-
*/
|
|
131
|
-
|
|
132
|
-
|
|
129
|
+
*/
|
|
133
130
|
SelfUtils.isJoined = function (self) {
|
|
134
131
|
return (self === null || self === void 0 ? void 0 : self.state) === _constants._JOINED_;
|
|
135
132
|
};
|
|
133
|
+
|
|
136
134
|
/**
|
|
137
135
|
* Validate if the Meeting Layout Controls Layout has changed.
|
|
138
136
|
*
|
|
139
137
|
* @param {Self} previous - Previous self state
|
|
140
138
|
* @param {Self} current - Current self state [per event]
|
|
141
|
-
* @returns {boolean} - If the
|
|
139
|
+
* @returns {boolean} - If the Meeting Layout Controls Layout has changed.
|
|
142
140
|
*/
|
|
143
|
-
|
|
144
|
-
|
|
145
141
|
SelfUtils.layoutChanged = function (previous, current) {
|
|
146
142
|
return (current === null || current === void 0 ? void 0 : current.layout) && (previous === null || previous === void 0 ? void 0 : previous.layout) !== (current === null || current === void 0 ? void 0 : current.layout);
|
|
147
143
|
};
|
|
148
|
-
|
|
144
|
+
SelfUtils.breakoutsChanged = function (previous, current) {
|
|
145
|
+
return !(0, _isEqual2.default)(previous === null || previous === void 0 ? void 0 : previous.breakoutSessions, current === null || current === void 0 ? void 0 : current.breakoutSessions) && !!(current !== null && current !== void 0 && current.breakout);
|
|
146
|
+
};
|
|
149
147
|
SelfUtils.isMediaInactive = function (previous, current) {
|
|
150
148
|
if (previous && previous.joinedWith && previous.joinedWith.mediaSessions && current && current.joinedWith && current.joinedWith.mediaSessions) {
|
|
151
149
|
var previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);
|
|
152
150
|
var currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);
|
|
153
|
-
|
|
154
151
|
if (previousMediaStatus.audio && currentMediaStatus.audio && previousMediaStatus.audio.state !== _constants.MEDIA_STATE.inactive && currentMediaStatus.audio.state === _constants.MEDIA_STATE.inactive && currentMediaStatus.audio.direction !== _constants.MEDIA_STATE.inactive) {
|
|
155
152
|
return true;
|
|
156
153
|
}
|
|
157
|
-
|
|
158
154
|
if (previousMediaStatus.video && currentMediaStatus.video && previousMediaStatus.video.state !== _constants.MEDIA_STATE.inactive && currentMediaStatus.video.state === _constants.MEDIA_STATE.inactive && currentMediaStatus.video.direction !== _constants.MEDIA_STATE.inactive) {
|
|
159
155
|
return true;
|
|
160
156
|
}
|
|
161
|
-
|
|
162
157
|
if (previousMediaStatus.share && currentMediaStatus.share && previousMediaStatus.share.state !== _constants.MEDIA_STATE.inactive && currentMediaStatus.share.state === _constants.MEDIA_STATE.inactive && currentMediaStatus.share.direction !== _constants.MEDIA_STATE.inactive) {
|
|
163
158
|
return true;
|
|
164
159
|
}
|
|
165
|
-
|
|
166
160
|
return false;
|
|
167
161
|
}
|
|
168
|
-
|
|
169
162
|
return false;
|
|
170
163
|
};
|
|
171
|
-
|
|
172
164
|
SelfUtils.getLastModified = function (self) {
|
|
173
165
|
if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.lastModified) {
|
|
174
166
|
return null;
|
|
175
167
|
}
|
|
176
|
-
|
|
177
168
|
return self.controls.audio.meta.lastModified;
|
|
178
169
|
};
|
|
179
|
-
|
|
180
170
|
SelfUtils.getModifiedBy = function (self) {
|
|
181
171
|
if (!self || !self.controls || !self.controls.audio || !self.controls.audio.meta || !self.controls.audio.meta.modifiedBy) {
|
|
182
172
|
return null;
|
|
183
173
|
}
|
|
184
|
-
|
|
185
174
|
return self.controls.audio.meta.modifiedBy;
|
|
186
175
|
};
|
|
176
|
+
|
|
187
177
|
/**
|
|
188
178
|
* get the id from the self object
|
|
189
179
|
* @param {Object} self
|
|
190
180
|
* @returns {String}
|
|
191
181
|
*/
|
|
192
|
-
|
|
193
|
-
|
|
194
182
|
SelfUtils.getSelfIdentity = function (self) {
|
|
195
183
|
if (!self && !self.person) {
|
|
196
184
|
return null;
|
|
197
185
|
}
|
|
198
|
-
|
|
199
186
|
return self.person.id;
|
|
200
187
|
};
|
|
188
|
+
|
|
201
189
|
/**
|
|
202
|
-
* get the "remote mute" property from the self object
|
|
190
|
+
* get the "remote video mute" property from the self object
|
|
203
191
|
* @param {Object} self
|
|
204
192
|
* @returns {Boolean}
|
|
205
193
|
*/
|
|
194
|
+
SelfUtils.getRemoteVideoMuted = function (self) {
|
|
195
|
+
if (!self || !self.controls || !self.controls.video) {
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
return self.controls.video.muted;
|
|
199
|
+
};
|
|
206
200
|
|
|
207
|
-
|
|
201
|
+
/**
|
|
202
|
+
* get the "remote mute" property from the self object
|
|
203
|
+
* @param {Object} self
|
|
204
|
+
* @returns {Boolean}
|
|
205
|
+
*/
|
|
208
206
|
SelfUtils.getRemoteMuted = function (self) {
|
|
209
207
|
if (!self || !self.controls || !self.controls.audio) {
|
|
210
208
|
return null;
|
|
211
209
|
}
|
|
212
|
-
|
|
213
210
|
return self.controls.audio.muted;
|
|
214
211
|
};
|
|
215
|
-
|
|
216
212
|
SelfUtils.getLocalAudioUnmuteRequested = function (self) {
|
|
217
|
-
var _self$
|
|
218
|
-
|
|
219
|
-
return !!(self !== null && self !== void 0 && (_self$controls3 = self.controls) !== null && _self$controls3 !== void 0 && (_self$controls3$audio = _self$controls3.audio) !== null && _self$controls3$audio !== void 0 && _self$controls3$audio.requestedToUnmute);
|
|
213
|
+
var _self$controls5, _self$controls5$audio;
|
|
214
|
+
return !!(self !== null && self !== void 0 && (_self$controls5 = self.controls) !== null && _self$controls5 !== void 0 && (_self$controls5$audio = _self$controls5.audio) !== null && _self$controls5$audio !== void 0 && _self$controls5$audio.requestedToUnmute);
|
|
220
215
|
};
|
|
221
|
-
|
|
222
216
|
SelfUtils.getUnmuteAllowed = function (self) {
|
|
223
217
|
if (!self || !self.controls || !self.controls.audio) {
|
|
224
218
|
return null;
|
|
225
219
|
}
|
|
226
|
-
|
|
227
220
|
return !self.controls.audio.disallowUnmute;
|
|
228
221
|
};
|
|
229
|
-
|
|
230
222
|
SelfUtils.getLocalAudioUnmuteRequired = function (self) {
|
|
231
|
-
var _self$
|
|
232
|
-
|
|
233
|
-
return !!(self !== null && self !== void 0 && (_self$controls4 = self.controls) !== null && _self$controls4 !== void 0 && (_self$controls4$audio = _self$controls4.audio) !== null && _self$controls4$audio !== void 0 && _self$controls4$audio.localAudioUnmuteRequired);
|
|
223
|
+
var _self$controls6, _self$controls6$audio;
|
|
224
|
+
return !!(self !== null && self !== void 0 && (_self$controls6 = self.controls) !== null && _self$controls6 !== void 0 && (_self$controls6$audio = _self$controls6.audio) !== null && _self$controls6$audio !== void 0 && _self$controls6$audio.localAudioUnmuteRequired);
|
|
234
225
|
};
|
|
235
|
-
|
|
236
226
|
SelfUtils.getStatus = function (status) {
|
|
237
227
|
return {
|
|
238
228
|
audio: status.audioStatus,
|
|
@@ -240,138 +230,148 @@ SelfUtils.getStatus = function (status) {
|
|
|
240
230
|
slides: status.videoSlidesStatus
|
|
241
231
|
};
|
|
242
232
|
};
|
|
233
|
+
|
|
243
234
|
/**
|
|
244
235
|
* @param {Object} oldSelf
|
|
245
236
|
* @param {Object} changedSelf
|
|
246
237
|
* @returns {Boolean}
|
|
247
238
|
*/
|
|
248
|
-
|
|
249
|
-
|
|
250
239
|
SelfUtils.wasMediaInactiveOrReleased = function () {
|
|
251
240
|
var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
252
241
|
var changedSelf = arguments.length > 1 ? arguments[1] : undefined;
|
|
253
|
-
return oldSelf.joinedWith && oldSelf.joinedWith.state === _constants._JOINED_ && changedSelf.joinedWith.state === _constants._LEFT_ && (changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.MEDIA_RELEASED);
|
|
242
|
+
return oldSelf.joinedWith && oldSelf.joinedWith.state === _constants._JOINED_ && changedSelf.joinedWith && changedSelf.joinedWith.state === _constants._LEFT_ && (changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.INACTIVE || changedSelf.joinedWith.reason === _constants.MEETING_END_REASON.MEDIA_RELEASED);
|
|
254
243
|
};
|
|
244
|
+
|
|
255
245
|
/**
|
|
256
246
|
* @param {Object} check
|
|
257
247
|
* @returns {Boolean}
|
|
258
248
|
*/
|
|
259
|
-
|
|
260
|
-
|
|
261
249
|
SelfUtils.isLocusUserUnadmitted = function (check) {
|
|
262
250
|
var _check$joinedWith, _check$joinedWith$int;
|
|
263
|
-
|
|
264
251
|
return check && ((_check$joinedWith = check.joinedWith) === null || _check$joinedWith === void 0 ? void 0 : (_check$joinedWith$int = _check$joinedWith.intent) === null || _check$joinedWith$int === void 0 ? void 0 : _check$joinedWith$int.type) === _constants._WAIT_ && check.state === _constants._IDLE_;
|
|
265
252
|
};
|
|
253
|
+
|
|
266
254
|
/**
|
|
267
255
|
* @param {Object} check
|
|
268
256
|
* @returns {Boolean}
|
|
269
257
|
*/
|
|
270
|
-
|
|
271
|
-
|
|
272
258
|
SelfUtils.isLocusUserAdmitted = function (check) {
|
|
273
259
|
var _check$joinedWith2, _check$joinedWith2$in;
|
|
274
|
-
|
|
275
260
|
return check && ((_check$joinedWith2 = check.joinedWith) === null || _check$joinedWith2 === void 0 ? void 0 : (_check$joinedWith2$in = _check$joinedWith2.intent) === null || _check$joinedWith2$in === void 0 ? void 0 : _check$joinedWith2$in.type) !== _constants._WAIT_ && check.state === _constants._JOINED_;
|
|
276
261
|
};
|
|
262
|
+
|
|
277
263
|
/**
|
|
278
264
|
* @param {Object} self
|
|
279
265
|
* @returns {Boolean}
|
|
280
266
|
* @throws {Error} when self is undefined
|
|
281
267
|
*/
|
|
282
|
-
|
|
283
|
-
|
|
284
268
|
SelfUtils.isUserUnadmitted = function (self) {
|
|
285
269
|
if (!self) {
|
|
286
270
|
throw new _parameter.default('self must be defined to determine if self is unadmitted as guest.');
|
|
287
271
|
}
|
|
288
|
-
|
|
289
272
|
return SelfUtils.isLocusUserUnadmitted(self);
|
|
290
273
|
};
|
|
291
|
-
|
|
292
274
|
SelfUtils.moderatorChanged = function (oldSelf, changedSelf) {
|
|
293
275
|
if (!oldSelf) {
|
|
294
276
|
return true;
|
|
295
277
|
}
|
|
296
|
-
|
|
297
278
|
if (!changedSelf) {
|
|
298
279
|
throw new _parameter.default('New self must be defined to determine if self transitioned moderator status.');
|
|
299
280
|
}
|
|
300
|
-
|
|
301
281
|
return oldSelf.moderator !== changedSelf.moderator;
|
|
302
282
|
};
|
|
283
|
+
|
|
303
284
|
/**
|
|
304
285
|
* @param {Object} oldSelf
|
|
305
286
|
* @param {Object} changedSelf
|
|
306
287
|
* @returns {Boolean}
|
|
307
288
|
* @throws {Error} if changed self was undefined
|
|
308
289
|
*/
|
|
290
|
+
SelfUtils.isUpgradeToModeratorOrCohost = function (oldSelf, changedSelf) {
|
|
291
|
+
if (!oldSelf) {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
if (!changedSelf) {
|
|
295
|
+
throw new _parameter.default('New self must be defined to determine if self transitioned moderator or cohost status.');
|
|
296
|
+
}
|
|
297
|
+
var isAttendeeOnly = oldSelf.roles.includes(_constants.SELF_ROLES.ATTENDEE) && !oldSelf.roles.includes(_constants.SELF_ROLES.COHOST) && !oldSelf.roles.includes(_constants.SELF_ROLES.MODERATOR);
|
|
298
|
+
var isCohost = changedSelf.roles.includes(_constants.SELF_ROLES.COHOST);
|
|
299
|
+
var isModerator = changedSelf.roles.includes(_constants.SELF_ROLES.MODERATOR);
|
|
300
|
+
return isAttendeeOnly && (isCohost || isModerator);
|
|
301
|
+
};
|
|
309
302
|
|
|
310
|
-
|
|
303
|
+
/**
|
|
304
|
+
* @param {Object} oldSelf
|
|
305
|
+
* @param {Object} changedSelf
|
|
306
|
+
* @returns {Boolean}
|
|
307
|
+
* @throws {Error} if changed self was undefined
|
|
308
|
+
*/
|
|
311
309
|
SelfUtils.isDeviceObserving = function (oldSelf, changedSelf) {
|
|
312
310
|
var _oldSelf$joinedWith, _oldSelf$joinedWith$i, _changedSelf$joinedWi, _changedSelf$joinedWi2;
|
|
313
|
-
|
|
314
311
|
return oldSelf && ((_oldSelf$joinedWith = oldSelf.joinedWith) === null || _oldSelf$joinedWith === void 0 ? void 0 : (_oldSelf$joinedWith$i = _oldSelf$joinedWith.intent) === null || _oldSelf$joinedWith$i === void 0 ? void 0 : _oldSelf$joinedWith$i.type) === _constants._MOVE_MEDIA_ && changedSelf && ((_changedSelf$joinedWi = changedSelf.joinedWith) === null || _changedSelf$joinedWi === void 0 ? void 0 : (_changedSelf$joinedWi2 = _changedSelf$joinedWi.intent) === null || _changedSelf$joinedWi2 === void 0 ? void 0 : _changedSelf$joinedWi2.type) === _constants._OBSERVE_;
|
|
315
312
|
};
|
|
313
|
+
|
|
316
314
|
/**
|
|
317
315
|
* @param {Object} oldSelf
|
|
318
316
|
* @param {Object} changedSelf
|
|
319
317
|
* @returns {Boolean}
|
|
320
318
|
* @throws {Error} if changed self was undefined
|
|
321
319
|
*/
|
|
322
|
-
|
|
323
|
-
|
|
324
320
|
SelfUtils.isUserAdmitted = function (oldSelf, changedSelf) {
|
|
325
321
|
if (!oldSelf) {
|
|
326
322
|
// if there was no previous locus, it couldn't have been admitted yet
|
|
327
323
|
return false;
|
|
328
324
|
}
|
|
329
|
-
|
|
330
325
|
if (!changedSelf) {
|
|
331
326
|
throw new _parameter.default('New self must be defined to determine if self transitioned to admitted as guest.');
|
|
332
327
|
}
|
|
333
|
-
|
|
334
328
|
return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);
|
|
335
329
|
};
|
|
330
|
+
SelfUtils.videoMutedByOthersChanged = function (oldSelf, changedSelf) {
|
|
331
|
+
if (!changedSelf) {
|
|
332
|
+
throw new _parameter.default('New self must be defined to determine if self was video muted by others.');
|
|
333
|
+
}
|
|
334
|
+
if (!oldSelf || oldSelf.remoteVideoMuted === null) {
|
|
335
|
+
if (changedSelf.remoteVideoMuted) {
|
|
336
|
+
return true; // this happens when host disables "Allow start video"
|
|
337
|
+
}
|
|
336
338
|
|
|
339
|
+
// we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join
|
|
340
|
+
return false;
|
|
341
|
+
}
|
|
342
|
+
return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;
|
|
343
|
+
};
|
|
337
344
|
SelfUtils.mutedByOthersChanged = function (oldSelf, changedSelf) {
|
|
338
345
|
if (!changedSelf) {
|
|
339
346
|
throw new _parameter.default('New self must be defined to determine if self was muted by others.');
|
|
340
347
|
}
|
|
341
|
-
|
|
342
348
|
if (!oldSelf || oldSelf.remoteMuted === null) {
|
|
343
349
|
if (changedSelf.remoteMuted) {
|
|
344
350
|
return true; // this happens when mute on-entry is enabled
|
|
345
|
-
}
|
|
346
|
-
|
|
351
|
+
}
|
|
347
352
|
|
|
353
|
+
// we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join
|
|
348
354
|
return false;
|
|
349
355
|
}
|
|
350
|
-
|
|
351
356
|
return changedSelf.remoteMuted !== null && (oldSelf.remoteMuted !== changedSelf.remoteMuted || changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed);
|
|
352
357
|
};
|
|
353
|
-
|
|
354
358
|
SelfUtils.localAudioUnmuteRequestedByServer = function () {
|
|
355
359
|
var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
356
360
|
var changedSelf = arguments.length > 1 ? arguments[1] : undefined;
|
|
357
|
-
|
|
358
361
|
if (!changedSelf) {
|
|
359
362
|
throw new _parameter.default('New self must be defined to determine if self received request to unmute.');
|
|
360
363
|
}
|
|
361
|
-
|
|
362
364
|
return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;
|
|
363
365
|
};
|
|
364
|
-
|
|
365
366
|
SelfUtils.localAudioUnmuteRequiredByServer = function () {
|
|
366
367
|
var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
367
368
|
var changedSelf = arguments.length > 1 ? arguments[1] : undefined;
|
|
368
|
-
|
|
369
369
|
if (!changedSelf) {
|
|
370
370
|
throw new _parameter.default('New self must be defined to determine if localAudioUnmuteRequired changed.');
|
|
371
371
|
}
|
|
372
|
-
|
|
373
372
|
return !changedSelf.remoteMuted && changedSelf.localAudioUnmuteRequired && oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired;
|
|
374
373
|
};
|
|
374
|
+
|
|
375
375
|
/**
|
|
376
376
|
* extract the sipUrl from the partner
|
|
377
377
|
* @param {Object} partner
|
|
@@ -379,7 +379,6 @@ SelfUtils.localAudioUnmuteRequiredByServer = function () {
|
|
|
379
379
|
* @returns {Object}
|
|
380
380
|
*/
|
|
381
381
|
|
|
382
|
-
|
|
383
382
|
SelfUtils.getSipUrl = function (partner, type, sipUri) {
|
|
384
383
|
// For webex meeting the sipUrl gets updated in info parser
|
|
385
384
|
if (partner && type === _constants._CALL_) {
|
|
@@ -387,12 +386,10 @@ SelfUtils.getSipUrl = function (partner, type, sipUri) {
|
|
|
387
386
|
sipUri: partner.person.sipUrl || partner.person.id
|
|
388
387
|
};
|
|
389
388
|
}
|
|
390
|
-
|
|
391
389
|
return {
|
|
392
390
|
sipUri: sipUri
|
|
393
391
|
};
|
|
394
392
|
};
|
|
395
|
-
|
|
396
393
|
SelfUtils.getMediaStatus = function () {
|
|
397
394
|
var mediaSessions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
398
395
|
var mediaStatus = {
|
|
@@ -411,7 +408,18 @@ SelfUtils.getMediaStatus = function () {
|
|
|
411
408
|
});
|
|
412
409
|
return mediaStatus;
|
|
413
410
|
};
|
|
414
|
-
|
|
411
|
+
SelfUtils.getReplacedBreakoutMoveId = function (self, deviceId) {
|
|
412
|
+
if (self && (0, _isArray.default)(self.devices)) {
|
|
413
|
+
var joinedDevice = self.devices.find(function (device) {
|
|
414
|
+
return deviceId === device.url;
|
|
415
|
+
});
|
|
416
|
+
if ((0, _isArray.default)(joinedDevice === null || joinedDevice === void 0 ? void 0 : joinedDevice.replaces)) {
|
|
417
|
+
var _joinedDevice$replace;
|
|
418
|
+
return (_joinedDevice$replace = joinedDevice.replaces[0]) === null || _joinedDevice$replace === void 0 ? void 0 : _joinedDevice$replace.breakoutMoveId;
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return null;
|
|
422
|
+
};
|
|
415
423
|
var _default = SelfUtils;
|
|
416
424
|
exports.default = _default;
|
|
417
425
|
//# sourceMappingURL=selfUtils.js.map
|