@webex/plugin-meetings 3.0.0-beta.21 → 3.0.0-beta.211
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -7
- package/dist/annotation/annotation.types.js +7 -0
- package/dist/annotation/annotation.types.js.map +1 -0
- package/dist/annotation/constants.js +49 -0
- package/dist/annotation/constants.js.map +1 -0
- package/dist/annotation/index.js +342 -0
- package/dist/annotation/index.js.map +1 -0
- package/dist/breakouts/breakout.js +114 -14
- package/dist/breakouts/breakout.js.map +1 -1
- package/dist/breakouts/edit-lock-error.js +52 -0
- package/dist/breakouts/edit-lock-error.js.map +1 -0
- package/dist/breakouts/events.js +45 -0
- package/dist/breakouts/events.js.map +1 -0
- package/dist/breakouts/index.js +841 -19
- package/dist/breakouts/index.js.map +1 -1
- 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/errors/webex-errors.js +3 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/common/logs/logger-proxy.js +1 -1
- package/dist/common/logs/logger-proxy.js.map +1 -1
- package/dist/common/queue.js +24 -9
- package/dist/common/queue.js.map +1 -1
- package/dist/config.js +3 -8
- package/dist/config.js.map +1 -1
- package/dist/constants.js +179 -30
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/constants.js +14 -0
- package/dist/controls-options-manager/constants.js.map +1 -0
- package/dist/controls-options-manager/enums.js +27 -0
- package/dist/controls-options-manager/enums.js.map +1 -0
- package/dist/controls-options-manager/index.js +297 -0
- package/dist/controls-options-manager/index.js.map +1 -0
- package/dist/controls-options-manager/types.js +7 -0
- package/dist/controls-options-manager/types.js.map +1 -0
- package/dist/controls-options-manager/util.js +319 -0
- package/dist/controls-options-manager/util.js.map +1 -0
- package/dist/index.js +106 -1
- package/dist/index.js.map +1 -1
- package/dist/interpretation/collection.js +23 -0
- package/dist/interpretation/collection.js.map +1 -0
- package/dist/interpretation/index.js +366 -0
- package/dist/interpretation/index.js.map +1 -0
- package/dist/interpretation/siLanguage.js +25 -0
- package/dist/interpretation/siLanguage.js.map +1 -0
- package/dist/locus-info/controlsUtils.js +91 -2
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +359 -64
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/infoUtils.js +7 -1
- package/dist/locus-info/infoUtils.js.map +1 -1
- package/dist/locus-info/mediaSharesUtils.js +43 -1
- package/dist/locus-info/mediaSharesUtils.js.map +1 -1
- package/dist/locus-info/parser.js +219 -63
- package/dist/locus-info/parser.js.map +1 -1
- package/dist/locus-info/selfUtils.js +89 -14
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +48 -135
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +29 -90
- package/dist/media/properties.js.map +1 -1
- package/dist/mediaQualityMetrics/config.js +505 -493
- package/dist/mediaQualityMetrics/config.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +90 -2
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +2770 -2547
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +291 -0
- package/dist/meeting/locusMediaRequest.js.map +1 -0
- package/dist/meeting/muteState.js +229 -124
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +199 -193
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/util.js +532 -414
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/index.js +48 -7
- package/dist/meeting-info/index.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +171 -51
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +20 -5
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/collection.js +22 -0
- package/dist/meetings/collection.js.map +1 -1
- package/dist/meetings/index.js +357 -66
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/meetings.types.js +7 -0
- package/dist/meetings/meetings.types.js.map +1 -0
- package/dist/meetings/request.js +2 -0
- package/dist/meetings/request.js.map +1 -1
- package/dist/meetings/util.js +88 -1
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +49 -0
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +25 -0
- package/dist/member/types.js.map +1 -0
- package/dist/member/util.js +121 -25
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js +10 -0
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +86 -5
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +106 -38
- 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 +316 -233
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +3 -5
- package/dist/metrics/constants.js.map +1 -1
- package/dist/metrics/index.js +1 -468
- package/dist/metrics/index.js.map +1 -1
- package/dist/multistream/mediaRequestManager.js +238 -49
- package/dist/multistream/mediaRequestManager.js.map +1 -1
- package/dist/multistream/receiveSlot.js +49 -16
- package/dist/multistream/receiveSlot.js.map +1 -1
- package/dist/multistream/receiveSlotManager.js +52 -34
- package/dist/multistream/receiveSlotManager.js.map +1 -1
- package/dist/multistream/remoteMedia.js +44 -18
- package/dist/multistream/remoteMedia.js.map +1 -1
- package/dist/multistream/remoteMediaGroup.js +60 -3
- package/dist/multistream/remoteMediaGroup.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +173 -59
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/networkQualityMonitor/index.js +4 -2
- package/dist/networkQualityMonitor/index.js.map +1 -1
- package/dist/reachability/index.js +72 -27
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/request.js +12 -5
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +196 -155
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/index.js +21 -2
- package/dist/recording-controller/index.js.map +1 -1
- package/dist/recording-controller/util.js +9 -8
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js +21 -29
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/request.js +110 -89
- package/dist/roap/request.js.map +1 -1
- package/dist/roap/turnDiscovery.js +93 -36
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/rtcMetrics/constants.js +12 -0
- package/dist/rtcMetrics/constants.js.map +1 -0
- package/dist/rtcMetrics/index.js +117 -0
- package/dist/rtcMetrics/index.js.map +1 -0
- package/dist/statsAnalyzer/global.js +1 -93
- package/dist/statsAnalyzer/global.js.map +1 -1
- package/dist/statsAnalyzer/index.js +326 -311
- package/dist/statsAnalyzer/index.js.map +1 -1
- package/dist/statsAnalyzer/mqaUtil.js +90 -53
- package/dist/statsAnalyzer/mqaUtil.js.map +1 -1
- package/dist/types/annotation/annotation.types.d.ts +42 -0
- package/dist/types/annotation/constants.d.ts +31 -0
- package/dist/types/annotation/index.d.ts +117 -0
- package/dist/types/breakouts/breakout.d.ts +8 -0
- package/dist/types/breakouts/collection.d.ts +5 -0
- package/dist/types/breakouts/edit-lock-error.d.ts +15 -0
- package/dist/types/breakouts/events.d.ts +8 -0
- package/dist/types/breakouts/index.d.ts +5 -0
- package/dist/types/breakouts/request.d.ts +22 -0
- package/dist/types/breakouts/utils.d.ts +15 -0
- package/dist/types/common/browser-detection.d.ts +9 -0
- package/dist/types/common/collection.d.ts +48 -0
- package/dist/types/common/config.d.ts +2 -0
- package/dist/types/common/errors/captcha-error.d.ts +15 -0
- package/dist/types/common/errors/intent-to-join.d.ts +16 -0
- package/dist/types/common/errors/join-meeting.d.ts +17 -0
- package/dist/types/common/errors/media.d.ts +15 -0
- package/dist/types/common/errors/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 +34 -0
- package/dist/types/config.d.ts +72 -0
- package/dist/types/constants.d.ts +1020 -0
- package/dist/types/controls-options-manager/constants.d.ts +4 -0
- package/dist/types/controls-options-manager/enums.d.ts +15 -0
- package/dist/types/controls-options-manager/index.d.ts +136 -0
- package/dist/types/controls-options-manager/types.d.ts +43 -0
- package/dist/types/controls-options-manager/util.d.ts +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/interpretation/collection.d.ts +5 -0
- package/dist/types/interpretation/index.d.ts +5 -0
- package/dist/types/interpretation/siLanguage.d.ts +5 -0
- package/dist/types/locus-info/controlsUtils.d.ts +2 -0
- package/dist/types/locus-info/embeddedAppsUtils.d.ts +2 -0
- package/dist/types/locus-info/fullState.d.ts +2 -0
- package/dist/types/locus-info/hostUtils.d.ts +2 -0
- package/dist/types/locus-info/index.d.ts +322 -0
- package/dist/types/locus-info/infoUtils.d.ts +2 -0
- package/dist/types/locus-info/mediaSharesUtils.d.ts +2 -0
- package/dist/types/locus-info/parser.d.ts +271 -0
- package/dist/types/locus-info/selfUtils.d.ts +2 -0
- package/dist/types/media/index.d.ts +34 -0
- package/dist/types/media/properties.d.ts +93 -0
- package/dist/types/media/util.d.ts +2 -0
- package/dist/types/mediaQualityMetrics/config.d.ts +365 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +163 -0
- package/dist/types/meeting/index.d.ts +1482 -0
- package/dist/types/meeting/locusMediaRequest.d.ts +72 -0
- package/dist/types/meeting/muteState.d.ts +184 -0
- package/dist/types/meeting/request.d.ts +257 -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 +79 -0
- package/dist/types/meeting-info/collection.d.ts +20 -0
- package/dist/types/meeting-info/index.d.ts +62 -0
- package/dist/types/meeting-info/meeting-info-v2.d.ts +122 -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 +367 -0
- package/dist/types/meetings/meetings.types.d.ts +4 -0
- package/dist/types/meetings/request.d.ts +27 -0
- package/dist/types/meetings/util.d.ts +18 -0
- package/dist/types/member/index.d.ts +159 -0
- package/dist/types/member/types.d.ts +32 -0
- package/dist/types/member/util.d.ts +2 -0
- package/dist/types/members/collection.d.ts +29 -0
- package/dist/types/members/index.d.ts +353 -0
- package/dist/types/members/request.d.ts +114 -0
- package/dist/types/members/types.d.ts +24 -0
- package/dist/types/members/util.d.ts +210 -0
- package/dist/types/metrics/constants.d.ts +55 -0
- package/dist/types/metrics/index.d.ts +45 -0
- package/dist/types/multistream/mediaRequestManager.d.ts +118 -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 +277 -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 +207 -0
- package/dist/types/recording-controller/util.d.ts +14 -0
- package/dist/types/roap/index.d.ts +77 -0
- package/dist/types/roap/request.d.ts +36 -0
- package/dist/types/roap/turnDiscovery.d.ts +91 -0
- package/dist/types/rtcMetrics/constants.d.ts +4 -0
- package/dist/types/rtcMetrics/index.d.ts +46 -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/package.json +23 -20
- package/src/annotation/annotation.types.ts +50 -0
- package/src/annotation/constants.ts +36 -0
- package/src/annotation/index.ts +328 -0
- package/src/breakouts/README.md +44 -14
- package/src/breakouts/breakout.ts +87 -9
- package/src/breakouts/edit-lock-error.ts +25 -0
- package/src/breakouts/events.ts +56 -0
- package/src/breakouts/index.ts +710 -10
- package/src/breakouts/request.ts +55 -0
- package/src/breakouts/utils.ts +57 -0
- package/src/common/errors/webex-errors.ts +6 -2
- package/src/common/logs/logger-proxy.ts +1 -1
- package/src/common/queue.ts +22 -8
- package/src/config.ts +2 -7
- package/src/constants.ts +165 -21
- package/src/controls-options-manager/constants.ts +5 -0
- package/src/controls-options-manager/enums.ts +18 -0
- package/src/controls-options-manager/index.ts +278 -0
- package/src/controls-options-manager/types.ts +59 -0
- package/src/controls-options-manager/util.ts +300 -0
- package/src/index.ts +39 -0
- package/src/interpretation/README.md +60 -0
- package/src/interpretation/collection.ts +19 -0
- package/src/interpretation/index.ts +332 -0
- package/src/interpretation/siLanguage.ts +18 -0
- package/src/locus-info/controlsUtils.ts +108 -0
- package/src/locus-info/index.ts +383 -61
- package/src/locus-info/infoUtils.ts +10 -2
- package/src/locus-info/mediaSharesUtils.ts +48 -0
- package/src/locus-info/parser.ts +224 -39
- package/src/locus-info/selfUtils.ts +81 -5
- package/src/media/index.ts +87 -140
- package/src/media/properties.ts +49 -90
- package/src/mediaQualityMetrics/config.ts +379 -377
- package/src/meeting/in-meeting-actions.ts +179 -3
- package/src/meeting/index.ts +2099 -2083
- package/src/meeting/locusMediaRequest.ts +311 -0
- package/src/meeting/muteState.ts +228 -132
- package/src/meeting/request.ts +105 -115
- package/src/meeting/util.ts +511 -397
- package/src/meeting-info/index.ts +54 -8
- package/src/meeting-info/meeting-info-v2.ts +148 -14
- package/src/meeting-info/utilv2.ts +13 -3
- package/src/meetings/collection.ts +20 -0
- package/src/meetings/index.ts +392 -84
- package/src/meetings/meetings.types.ts +12 -0
- package/src/meetings/request.ts +2 -0
- package/src/meetings/util.ts +103 -4
- package/src/member/index.ts +49 -0
- package/src/member/types.ts +38 -0
- package/src/member/util.ts +127 -25
- package/src/members/collection.ts +8 -0
- package/src/members/index.ts +107 -6
- package/src/members/request.ts +97 -17
- package/src/members/types.ts +28 -0
- package/src/members/util.ts +319 -240
- package/src/metrics/constants.ts +2 -4
- package/src/metrics/index.ts +1 -490
- package/src/multistream/mediaRequestManager.ts +289 -79
- package/src/multistream/receiveSlot.ts +55 -18
- package/src/multistream/receiveSlotManager.ts +46 -24
- package/src/multistream/remoteMedia.ts +27 -2
- package/src/multistream/remoteMediaGroup.ts +59 -0
- package/src/multistream/remoteMediaManager.ts +113 -32
- package/src/networkQualityMonitor/index.ts +6 -6
- package/src/reachability/index.ts +62 -15
- package/src/reachability/request.ts +10 -5
- package/src/reconnection-manager/index.ts +68 -43
- package/src/recording-controller/index.ts +20 -3
- package/src/recording-controller/util.ts +26 -9
- package/src/roap/index.ts +21 -30
- package/src/roap/request.ts +101 -95
- package/src/roap/turnDiscovery.ts +47 -25
- package/src/rtcMetrics/constants.ts +3 -0
- package/src/rtcMetrics/index.ts +100 -0
- package/src/statsAnalyzer/global.ts +1 -94
- package/src/statsAnalyzer/index.ts +376 -386
- package/src/statsAnalyzer/mqaUtil.ts +100 -99
- package/test/integration/spec/converged-space-meetings.js +233 -0
- package/test/integration/spec/journey.js +336 -259
- package/test/integration/spec/space-meeting.js +77 -4
- package/test/unit/spec/annotation/index.ts +418 -0
- package/test/unit/spec/breakouts/breakout.ts +142 -24
- package/test/unit/spec/breakouts/edit-lock-error.ts +30 -0
- package/test/unit/spec/breakouts/events.ts +89 -0
- package/test/unit/spec/breakouts/index.ts +1545 -48
- package/test/unit/spec/breakouts/request.ts +104 -0
- package/test/unit/spec/breakouts/utils.js +72 -0
- package/test/unit/spec/common/queue.js +31 -2
- package/test/unit/spec/controls-options-manager/index.js +287 -0
- package/test/unit/spec/controls-options-manager/util.js +582 -0
- package/test/unit/spec/fixture/locus.js +1 -0
- package/test/unit/spec/interpretation/collection.ts +15 -0
- package/test/unit/spec/interpretation/index.ts +589 -0
- package/test/unit/spec/interpretation/siLanguage.ts +28 -0
- package/test/unit/spec/locus-info/controlsUtils.js +316 -43
- package/test/unit/spec/locus-info/index.js +1169 -36
- package/test/unit/spec/locus-info/infoUtils.js +37 -15
- package/test/unit/spec/locus-info/mediaSharesUtils.ts +22 -0
- package/test/unit/spec/locus-info/parser.js +62 -22
- package/test/unit/spec/locus-info/selfConstant.js +27 -4
- package/test/unit/spec/locus-info/selfUtils.js +208 -17
- package/test/unit/spec/media/index.ts +138 -28
- package/test/unit/spec/meeting/in-meeting-actions.ts +89 -3
- package/test/unit/spec/meeting/index.js +3573 -1663
- package/test/unit/spec/meeting/locusMediaRequest.ts +438 -0
- package/test/unit/spec/meeting/muteState.js +370 -208
- package/test/unit/spec/meeting/request.js +339 -44
- package/test/unit/spec/meeting/utils.js +456 -53
- package/test/unit/spec/meeting-info/index.js +181 -0
- package/test/unit/spec/meeting-info/meetinginfov2.js +383 -5
- package/test/unit/spec/meeting-info/utilv2.js +21 -0
- package/test/unit/spec/meetings/collection.js +14 -0
- package/test/unit/spec/meetings/index.js +867 -125
- package/test/unit/spec/meetings/utils.js +206 -2
- package/test/unit/spec/member/index.js +58 -4
- package/test/unit/spec/member/util.js +479 -35
- package/test/unit/spec/members/index.js +319 -1
- package/test/unit/spec/members/request.js +206 -27
- package/test/unit/spec/members/utils.js +184 -0
- package/test/unit/spec/metrics/index.js +1 -50
- package/test/unit/spec/multistream/mediaRequestManager.ts +803 -162
- package/test/unit/spec/multistream/receiveSlot.ts +72 -13
- package/test/unit/spec/multistream/receiveSlotManager.ts +58 -28
- package/test/unit/spec/multistream/remoteMedia.ts +30 -0
- package/test/unit/spec/multistream/remoteMediaGroup.ts +266 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +318 -0
- package/test/unit/spec/networkQualityMonitor/index.js +4 -4
- package/test/unit/spec/reachability/index.ts +125 -8
- package/test/unit/spec/reachability/request.js +66 -0
- package/test/unit/spec/reconnection-manager/index.js +59 -6
- package/test/unit/spec/recording-controller/index.js +294 -218
- package/test/unit/spec/recording-controller/util.js +223 -96
- package/test/unit/spec/roap/index.ts +26 -51
- package/test/unit/spec/roap/request.ts +196 -85
- package/test/unit/spec/roap/turnDiscovery.ts +30 -7
- package/test/unit/spec/rtcMetrics/index.ts +60 -0
- package/test/unit/spec/stats-analyzer/index.js +92 -41
- package/test/utils/constants.js +9 -0
- package/test/utils/integrationTestUtils.js +46 -0
- package/test/utils/testUtils.js +0 -45
- package/test/utils/webex-config.js +4 -0
- package/test/utils/webex-test-users.js +6 -3
- package/dist/meeting/effectsState.js +0 -262
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/metrics/config.js +0 -299
- package/dist/metrics/config.js.map +0 -1
- package/dist/multistream/multistreamMedia.js +0 -110
- package/dist/multistream/multistreamMedia.js.map +0 -1
- package/src/index.js +0 -16
- package/src/meeting/effectsState.ts +0 -211
- package/src/metrics/config.ts +0 -495
- package/src/multistream/multistreamMedia.ts +0 -97
- package/test/unit/spec/meeting/effectsState.js +0 -285
|
@@ -29,9 +29,11 @@ SelfUtils.parse = function (self, deviceId) {
|
|
|
29
29
|
return PSTN_DEVICE_TYPE === device.deviceType;
|
|
30
30
|
});
|
|
31
31
|
return {
|
|
32
|
+
remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),
|
|
32
33
|
remoteMuted: SelfUtils.getRemoteMuted(self),
|
|
33
34
|
unmuteAllowed: SelfUtils.getUnmuteAllowed(self),
|
|
34
35
|
localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),
|
|
36
|
+
localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),
|
|
35
37
|
localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),
|
|
36
38
|
lastModified: SelfUtils.getLastModified(self),
|
|
37
39
|
modifiedBy: SelfUtils.getModifiedBy(self),
|
|
@@ -59,22 +61,32 @@ SelfUtils.parse = function (self, deviceId) {
|
|
|
59
61
|
layout: SelfUtils.getLayout(self),
|
|
60
62
|
canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),
|
|
61
63
|
isSharingBlocked: SelfUtils.isSharingBlocked(self),
|
|
62
|
-
breakoutSessions: SelfUtils.
|
|
64
|
+
breakoutSessions: SelfUtils.getBreakoutSessions(self),
|
|
65
|
+
breakout: SelfUtils.getBreakout(self),
|
|
66
|
+
interpretation: SelfUtils.getInterpretation(self)
|
|
63
67
|
};
|
|
64
68
|
}
|
|
65
69
|
return null;
|
|
66
70
|
};
|
|
67
|
-
SelfUtils.
|
|
71
|
+
SelfUtils.getBreakoutSessions = function (self) {
|
|
68
72
|
var _self$controls, _self$controls$breako;
|
|
69
73
|
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;
|
|
70
74
|
};
|
|
71
|
-
SelfUtils.
|
|
75
|
+
SelfUtils.getBreakout = function (self) {
|
|
72
76
|
var _self$controls2;
|
|
73
|
-
return
|
|
77
|
+
return self === null || self === void 0 ? void 0 : (_self$controls2 = self.controls) === null || _self$controls2 === void 0 ? void 0 : _self$controls2.breakout;
|
|
78
|
+
};
|
|
79
|
+
SelfUtils.getInterpretation = function (self) {
|
|
80
|
+
var _self$controls3;
|
|
81
|
+
return self === null || self === void 0 ? void 0 : (_self$controls3 = self.controls) === null || _self$controls3 === void 0 ? void 0 : _self$controls3.interpretation;
|
|
82
|
+
};
|
|
83
|
+
SelfUtils.getLayout = function (self) {
|
|
84
|
+
var _self$controls4;
|
|
85
|
+
return (0, _isArray.default)(self === null || self === void 0 ? void 0 : (_self$controls4 = self.controls) === null || _self$controls4 === void 0 ? void 0 : _self$controls4.layouts) ? self.controls.layouts[0].type : undefined;
|
|
74
86
|
};
|
|
75
87
|
SelfUtils.getRoles = function (self) {
|
|
76
|
-
var _self$
|
|
77
|
-
return ((self === null || self === void 0 ? void 0 : (_self$
|
|
88
|
+
var _self$controls5, _self$controls5$role;
|
|
89
|
+
return ((self === null || self === void 0 ? void 0 : (_self$controls5 = self.controls) === null || _self$controls5 === void 0 ? void 0 : (_self$controls5$role = _self$controls5.role) === null || _self$controls5$role === void 0 ? void 0 : _self$controls5$role.roles) || []).reduce(function (roles, role) {
|
|
78
90
|
if (role.hasRole) {
|
|
79
91
|
roles.push(role.type);
|
|
80
92
|
}
|
|
@@ -93,10 +105,12 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
|
|
|
93
105
|
var updates = {};
|
|
94
106
|
updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);
|
|
95
107
|
updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);
|
|
108
|
+
updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);
|
|
96
109
|
updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);
|
|
97
110
|
updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(previous, current);
|
|
98
111
|
updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(previous, current);
|
|
99
112
|
updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);
|
|
113
|
+
updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);
|
|
100
114
|
updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);
|
|
101
115
|
updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);
|
|
102
116
|
updates.layoutChanged = SelfUtils.layoutChanged(previous, current);
|
|
@@ -107,6 +121,7 @@ SelfUtils.getSelves = function (oldSelf, newSelf, deviceId) {
|
|
|
107
121
|
updates.canNotViewTheParticipantListChanged = (previous === null || previous === void 0 ? void 0 : previous.canNotViewTheParticipantList) !== current.canNotViewTheParticipantList;
|
|
108
122
|
updates.isSharingBlockedChanged = (previous === null || previous === void 0 ? void 0 : previous.isSharingBlocked) !== current.isSharingBlocked;
|
|
109
123
|
updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);
|
|
124
|
+
updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);
|
|
110
125
|
return {
|
|
111
126
|
previous: previous,
|
|
112
127
|
current: current,
|
|
@@ -128,13 +143,16 @@ SelfUtils.isJoined = function (self) {
|
|
|
128
143
|
*
|
|
129
144
|
* @param {Self} previous - Previous self state
|
|
130
145
|
* @param {Self} current - Current self state [per event]
|
|
131
|
-
* @returns {boolean} - If the
|
|
146
|
+
* @returns {boolean} - If the Meeting Layout Controls Layout has changed.
|
|
132
147
|
*/
|
|
133
148
|
SelfUtils.layoutChanged = function (previous, current) {
|
|
134
149
|
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);
|
|
135
150
|
};
|
|
136
151
|
SelfUtils.breakoutsChanged = function (previous, current) {
|
|
137
|
-
return !(0, _isEqual2.default)(previous === null || previous === void 0 ? void 0 : previous.breakoutSessions, current === null || current === void 0 ? void 0 : current.breakoutSessions);
|
|
152
|
+
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);
|
|
153
|
+
};
|
|
154
|
+
SelfUtils.interpretationChanged = function (previous, current) {
|
|
155
|
+
return !(0, _isEqual2.default)(previous === null || previous === void 0 ? void 0 : previous.interpretation, current === null || current === void 0 ? void 0 : current.interpretation) && !!(current !== null && current !== void 0 && current.interpretation);
|
|
138
156
|
};
|
|
139
157
|
SelfUtils.isMediaInactive = function (previous, current) {
|
|
140
158
|
if (previous && previous.joinedWith && previous.joinedWith.mediaSessions && current && current.joinedWith && current.joinedWith.mediaSessions) {
|
|
@@ -178,6 +196,18 @@ SelfUtils.getSelfIdentity = function (self) {
|
|
|
178
196
|
return self.person.id;
|
|
179
197
|
};
|
|
180
198
|
|
|
199
|
+
/**
|
|
200
|
+
* get the "remote video mute" property from the self object
|
|
201
|
+
* @param {Object} self
|
|
202
|
+
* @returns {Boolean}
|
|
203
|
+
*/
|
|
204
|
+
SelfUtils.getRemoteVideoMuted = function (self) {
|
|
205
|
+
if (!self || !self.controls || !self.controls.video) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return self.controls.video.muted;
|
|
209
|
+
};
|
|
210
|
+
|
|
181
211
|
/**
|
|
182
212
|
* get the "remote mute" property from the self object
|
|
183
213
|
* @param {Object} self
|
|
@@ -190,8 +220,14 @@ SelfUtils.getRemoteMuted = function (self) {
|
|
|
190
220
|
return self.controls.audio.muted;
|
|
191
221
|
};
|
|
192
222
|
SelfUtils.getLocalAudioUnmuteRequested = function (self) {
|
|
193
|
-
var _self$
|
|
194
|
-
return !!(self !== null && self !== void 0 && (_self$
|
|
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.requestedToUnmute);
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
// requestedToUnmute timestamp
|
|
228
|
+
SelfUtils.getLocalAudioUnmuteRequestedTimeStamp = function (self) {
|
|
229
|
+
var _self$controls7, _self$controls7$audio;
|
|
230
|
+
return Date.parse(self === null || self === void 0 ? void 0 : (_self$controls7 = self.controls) === null || _self$controls7 === void 0 ? void 0 : (_self$controls7$audio = _self$controls7.audio) === null || _self$controls7$audio === void 0 ? void 0 : _self$controls7$audio.lastModifiedRequestedToUnmute) || 0;
|
|
195
231
|
};
|
|
196
232
|
SelfUtils.getUnmuteAllowed = function (self) {
|
|
197
233
|
if (!self || !self.controls || !self.controls.audio) {
|
|
@@ -200,8 +236,8 @@ SelfUtils.getUnmuteAllowed = function (self) {
|
|
|
200
236
|
return !self.controls.audio.disallowUnmute;
|
|
201
237
|
};
|
|
202
238
|
SelfUtils.getLocalAudioUnmuteRequired = function (self) {
|
|
203
|
-
var _self$
|
|
204
|
-
return !!(self !== null && self !== void 0 && (_self$
|
|
239
|
+
var _self$controls8, _self$controls8$audio;
|
|
240
|
+
return !!(self !== null && self !== void 0 && (_self$controls8 = self.controls) !== null && _self$controls8 !== void 0 && (_self$controls8$audio = _self$controls8.audio) !== null && _self$controls8$audio !== void 0 && _self$controls8$audio.localAudioUnmuteRequired);
|
|
205
241
|
};
|
|
206
242
|
SelfUtils.getStatus = function (status) {
|
|
207
243
|
return {
|
|
@@ -219,7 +255,7 @@ SelfUtils.getStatus = function (status) {
|
|
|
219
255
|
SelfUtils.wasMediaInactiveOrReleased = function () {
|
|
220
256
|
var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
221
257
|
var changedSelf = arguments.length > 1 ? arguments[1] : undefined;
|
|
222
|
-
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);
|
|
258
|
+
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);
|
|
223
259
|
};
|
|
224
260
|
|
|
225
261
|
/**
|
|
@@ -261,6 +297,19 @@ SelfUtils.moderatorChanged = function (oldSelf, changedSelf) {
|
|
|
261
297
|
return oldSelf.moderator !== changedSelf.moderator;
|
|
262
298
|
};
|
|
263
299
|
|
|
300
|
+
/**
|
|
301
|
+
* determine whether the roles of self is changed or not
|
|
302
|
+
* @param {Object} oldSelf
|
|
303
|
+
* @param {Object} changedSelf
|
|
304
|
+
* @returns {Boolean}
|
|
305
|
+
*/
|
|
306
|
+
SelfUtils.isRolesChanged = function (oldSelf, changedSelf) {
|
|
307
|
+
if (!changedSelf) {
|
|
308
|
+
// no new self means no change
|
|
309
|
+
return false;
|
|
310
|
+
}
|
|
311
|
+
return !(0, _isEqual2.default)(oldSelf === null || oldSelf === void 0 ? void 0 : oldSelf.roles, changedSelf === null || changedSelf === void 0 ? void 0 : changedSelf.roles);
|
|
312
|
+
};
|
|
264
313
|
/**
|
|
265
314
|
* @param {Object} oldSelf
|
|
266
315
|
* @param {Object} changedSelf
|
|
@@ -288,6 +337,20 @@ SelfUtils.isUserAdmitted = function (oldSelf, changedSelf) {
|
|
|
288
337
|
}
|
|
289
338
|
return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);
|
|
290
339
|
};
|
|
340
|
+
SelfUtils.videoMutedByOthersChanged = function (oldSelf, changedSelf) {
|
|
341
|
+
if (!changedSelf) {
|
|
342
|
+
throw new _parameter.default('New self must be defined to determine if self was video muted by others.');
|
|
343
|
+
}
|
|
344
|
+
if (!oldSelf || oldSelf.remoteVideoMuted === null) {
|
|
345
|
+
if (changedSelf.remoteVideoMuted) {
|
|
346
|
+
return true; // this happens when host disables "Allow start video"
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join
|
|
350
|
+
return false;
|
|
351
|
+
}
|
|
352
|
+
return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;
|
|
353
|
+
};
|
|
291
354
|
SelfUtils.mutedByOthersChanged = function (oldSelf, changedSelf) {
|
|
292
355
|
if (!changedSelf) {
|
|
293
356
|
throw new _parameter.default('New self must be defined to determine if self was muted by others.');
|
|
@@ -308,7 +371,7 @@ SelfUtils.localAudioUnmuteRequestedByServer = function () {
|
|
|
308
371
|
if (!changedSelf) {
|
|
309
372
|
throw new _parameter.default('New self must be defined to determine if self received request to unmute.');
|
|
310
373
|
}
|
|
311
|
-
return changedSelf.localAudioUnmuteRequested &&
|
|
374
|
+
return changedSelf.localAudioUnmuteRequested && changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp;
|
|
312
375
|
};
|
|
313
376
|
SelfUtils.localAudioUnmuteRequiredByServer = function () {
|
|
314
377
|
var oldSelf = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
@@ -355,6 +418,18 @@ SelfUtils.getMediaStatus = function () {
|
|
|
355
418
|
});
|
|
356
419
|
return mediaStatus;
|
|
357
420
|
};
|
|
421
|
+
SelfUtils.getReplacedBreakoutMoveId = function (self, deviceId) {
|
|
422
|
+
if (self && (0, _isArray.default)(self.devices)) {
|
|
423
|
+
var joinedDevice = self.devices.find(function (device) {
|
|
424
|
+
return deviceId === device.url;
|
|
425
|
+
});
|
|
426
|
+
if ((0, _isArray.default)(joinedDevice === null || joinedDevice === void 0 ? void 0 : joinedDevice.replaces)) {
|
|
427
|
+
var _joinedDevice$replace;
|
|
428
|
+
return (_joinedDevice$replace = joinedDevice.replaces[0]) === null || _joinedDevice$replace === void 0 ? void 0 : _joinedDevice$replace.breakoutMoveId;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
return null;
|
|
432
|
+
};
|
|
358
433
|
var _default = SelfUtils;
|
|
359
434
|
exports.default = _default;
|
|
360
435
|
//# sourceMappingURL=selfUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakouts","controls","breakout","sessions","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakouts(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakouts = (self) => self?.controls?.breakout?.sessions;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the MEeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions);\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return changedSelf.localAudioUnmuteRequested && !oldSelf.localAudioUnmuteRequested;\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","joinedWith","devices","find","device","url","pstnDevices","filter","deviceType","remoteVideoMuted","getRemoteVideoMuted","remoteMuted","getRemoteMuted","unmuteAllowed","getUnmuteAllowed","localAudioUnmuteRequested","getLocalAudioUnmuteRequested","localAudioUnmuteRequestedTimeStamp","getLocalAudioUnmuteRequestedTimeStamp","localAudioUnmuteRequired","getLocalAudioUnmuteRequired","lastModified","getLastModified","modifiedBy","getModifiedBy","guest","moderator","mediaStatus","getStatus","status","state","currentMediaStatus","getMediaStatus","mediaSessions","creator","isCreator","selfId","id","selfIdentity","getSelfIdentity","selfUrl","removed","roles","getRoles","isUserUnadmitted","_IDLE_","intent","type","_WAIT_","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","controls","sessions","layouts","undefined","role","reduce","hasRole","push","getSelves","oldSelf","newSelf","previous","current","updates","isUserAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","isJoined","_JOINED_","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","requestedToUnmute","Date","lastModifiedRequestedToUnmute","disallowUnmute","audioStatus","videoStatus","slides","videoSlidesStatus","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","isLocusUserAdmitted","ParameterError","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","breakoutMoveId"],"sources":["selfUtils.ts"],"sourcesContent":["/* eslint-disable default-param-last */\n\nimport {isEqual} from 'lodash';\nimport {\n _IDLE_,\n _JOINED_,\n _CALL_,\n _WAIT_,\n _MOVE_MEDIA_,\n _OBSERVE_,\n _LEFT_,\n MEETING_END_REASON,\n MEDIA_STATE,\n AUDIO,\n VIDEO,\n MediaContent,\n} from '../constants';\nimport ParameterError from '../common/errors/parameter';\n\nconst SelfUtils: any = {};\nconst PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\n/**\n * parses the relevant values for self: muted, guest, moderator, mediaStatus, state, joinedWith, pstnDevices, creator, id\n * @param {Object} self\n * @param {String} deviceId\n * @returns {undefined}\n */\nSelfUtils.parse = (self: any, deviceId: string) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pstnDevices = self.devices.filter((device) => PSTN_DEVICE_TYPE === device.deviceType);\n\n return {\n remoteVideoMuted: SelfUtils.getRemoteVideoMuted(self),\n remoteMuted: SelfUtils.getRemoteMuted(self),\n unmuteAllowed: SelfUtils.getUnmuteAllowed(self),\n localAudioUnmuteRequested: SelfUtils.getLocalAudioUnmuteRequested(self),\n localAudioUnmuteRequestedTimeStamp: SelfUtils.getLocalAudioUnmuteRequestedTimeStamp(self),\n localAudioUnmuteRequired: SelfUtils.getLocalAudioUnmuteRequired(self),\n lastModified: SelfUtils.getLastModified(self),\n modifiedBy: SelfUtils.getModifiedBy(self),\n guest: self.guest,\n moderator: self.moderator,\n // cumulative media stats\n mediaStatus: SelfUtils.getStatus(self.status),\n // TODO: what should be the status if user has refreshed the page,\n // check the joinedWith parameter and communicate to the user\n state: self.state,\n // TODO: give a proper name . With same device as login or different login`\n // Some times we might have joined with both mobile and web\n joinedWith,\n pstnDevices,\n // current media stats is for the current device who has joined\n currentMediaStatus: SelfUtils.getMediaStatus(joinedWith?.mediaSessions),\n creator: self.isCreator, // check if its used,\n selfId: self.id,\n selfIdentity: SelfUtils.getSelfIdentity(self),\n selfUrl: self.url,\n removed: self.removed,\n roles: SelfUtils.getRoles(self),\n isUserUnadmitted: self.state === _IDLE_ && joinedWith?.intent?.type === _WAIT_,\n layout: SelfUtils.getLayout(self),\n canNotViewTheParticipantList: SelfUtils.canNotViewTheParticipantList(self),\n isSharingBlocked: SelfUtils.isSharingBlocked(self),\n breakoutSessions: SelfUtils.getBreakoutSessions(self),\n breakout: SelfUtils.getBreakout(self),\n interpretation: SelfUtils.getInterpretation(self),\n };\n }\n\n return null;\n};\n\nSelfUtils.getBreakoutSessions = (self) => self?.controls?.breakout?.sessions;\nSelfUtils.getBreakout = (self) => self?.controls?.breakout;\nSelfUtils.getInterpretation = (self) => self?.controls?.interpretation;\n\nSelfUtils.getLayout = (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined;\n\nSelfUtils.getRoles = (self) =>\n (self?.controls?.role?.roles || []).reduce((roles, role) => {\n if (role.hasRole) {\n roles.push(role.type);\n }\n\n return roles;\n }, []);\n\nSelfUtils.canNotViewTheParticipantList = (self) => !!self?.canNotViewTheParticipantList;\n\nSelfUtils.isSharingBlocked = (self) => !!self?.isSharingBlocked;\n\nSelfUtils.getSelves = (oldSelf, newSelf, deviceId) => {\n const previous = oldSelf && SelfUtils.parse(oldSelf, deviceId);\n const current = newSelf && SelfUtils.parse(newSelf, deviceId);\n const updates: any = {};\n\n updates.isUserUnadmitted = SelfUtils.isUserUnadmitted(current);\n updates.isUserAdmitted = SelfUtils.isUserAdmitted(previous, current);\n updates.isVideoMutedByOthersChanged = SelfUtils.videoMutedByOthersChanged(previous, current);\n updates.isMutedByOthersChanged = SelfUtils.mutedByOthersChanged(previous, current);\n updates.localAudioUnmuteRequestedByServer = SelfUtils.localAudioUnmuteRequestedByServer(\n previous,\n current\n );\n updates.localAudioUnmuteRequiredByServer = SelfUtils.localAudioUnmuteRequiredByServer(\n previous,\n current\n );\n updates.moderatorChanged = SelfUtils.moderatorChanged(previous, current);\n updates.isRolesChanged = SelfUtils.isRolesChanged(previous, current);\n updates.isMediaInactiveOrReleased = SelfUtils.wasMediaInactiveOrReleased(previous, current);\n updates.isUserObserving = SelfUtils.isDeviceObserving(previous, current);\n updates.layoutChanged = SelfUtils.layoutChanged(previous, current);\n\n updates.isMediaInactive = SelfUtils.isMediaInactive(previous, current);\n updates.audioStateChange =\n previous?.currentMediaStatus.audio !== current.currentMediaStatus.audio;\n updates.videoStateChange =\n previous?.currentMediaStatus.video !== current.currentMediaStatus.video;\n updates.shareStateChange =\n previous?.currentMediaStatus.share !== current.currentMediaStatus.share;\n\n updates.canNotViewTheParticipantListChanged =\n previous?.canNotViewTheParticipantList !== current.canNotViewTheParticipantList;\n updates.isSharingBlockedChanged = previous?.isSharingBlocked !== current.isSharingBlocked;\n updates.breakoutsChanged = SelfUtils.breakoutsChanged(previous, current);\n updates.interpretationChanged = SelfUtils.interpretationChanged(previous, current);\n\n return {\n previous,\n current,\n updates,\n };\n};\n\n/**\n * Checks if user has joined the meeting\n * @param {Object} self\n * @returns {boolean} isJoined\n */\nSelfUtils.isJoined = (self: any) => self?.state === _JOINED_;\n\n/**\n * Validate if the Meeting Layout Controls Layout has changed.\n *\n * @param {Self} previous - Previous self state\n * @param {Self} current - Current self state [per event]\n * @returns {boolean} - If the Meeting Layout Controls Layout has changed.\n */\nSelfUtils.layoutChanged = (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout;\n\nSelfUtils.breakoutsChanged = (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout;\n\nSelfUtils.interpretationChanged = (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation;\n\nSelfUtils.isMediaInactive = (previous, current) => {\n if (\n previous &&\n previous.joinedWith &&\n previous.joinedWith.mediaSessions &&\n current &&\n current.joinedWith &&\n current.joinedWith.mediaSessions\n ) {\n const previousMediaStatus = SelfUtils.getMediaStatus(previous.joinedWith.mediaSessions);\n const currentMediaStatus = SelfUtils.getMediaStatus(current.joinedWith.mediaSessions);\n\n if (\n previousMediaStatus.audio &&\n currentMediaStatus.audio &&\n previousMediaStatus.audio.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.audio.state === MEDIA_STATE.inactive &&\n currentMediaStatus.audio.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.video &&\n currentMediaStatus.video &&\n previousMediaStatus.video.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.video.state === MEDIA_STATE.inactive &&\n currentMediaStatus.video.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n if (\n previousMediaStatus.share &&\n currentMediaStatus.share &&\n previousMediaStatus.share.state !== MEDIA_STATE.inactive &&\n currentMediaStatus.share.state === MEDIA_STATE.inactive &&\n currentMediaStatus.share.direction !== MEDIA_STATE.inactive\n ) {\n return true;\n }\n\n return false;\n }\n\n return false;\n};\n\nSelfUtils.getLastModified = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.lastModified\n ) {\n return null;\n }\n\n return self.controls.audio.meta.lastModified;\n};\n\nSelfUtils.getModifiedBy = (self) => {\n if (\n !self ||\n !self.controls ||\n !self.controls.audio ||\n !self.controls.audio.meta ||\n !self.controls.audio.meta.modifiedBy\n ) {\n return null;\n }\n\n return self.controls.audio.meta.modifiedBy;\n};\n\n/**\n * get the id from the self object\n * @param {Object} self\n * @returns {String}\n */\nSelfUtils.getSelfIdentity = (self: any) => {\n if (!self && !self.person) {\n return null;\n }\n\n return self.person.id;\n};\n\n/**\n * get the \"remote video mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteVideoMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.video) {\n return null;\n }\n\n return self.controls.video.muted;\n};\n\n/**\n * get the \"remote mute\" property from the self object\n * @param {Object} self\n * @returns {Boolean}\n */\nSelfUtils.getRemoteMuted = (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n};\n\nSelfUtils.getLocalAudioUnmuteRequested = (self) => !!self?.controls?.audio?.requestedToUnmute;\n\n// requestedToUnmute timestamp\nSelfUtils.getLocalAudioUnmuteRequestedTimeStamp = (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0;\n\nSelfUtils.getUnmuteAllowed = (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n};\n\nSelfUtils.getLocalAudioUnmuteRequired = (self) => !!self?.controls?.audio?.localAudioUnmuteRequired;\n\nSelfUtils.getStatus = (status) => ({\n audio: status.audioStatus,\n video: status.videoStatus,\n slides: status.videoSlidesStatus,\n});\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.wasMediaInactiveOrReleased = (oldSelf: any = {}, changedSelf: any) =>\n oldSelf.joinedWith &&\n oldSelf.joinedWith.state === _JOINED_ &&\n changedSelf.joinedWith &&\n changedSelf.joinedWith.state === _LEFT_ &&\n (changedSelf.joinedWith.reason === MEETING_END_REASON.INACTIVE ||\n changedSelf.joinedWith.reason === MEETING_END_REASON.MEDIA_RELEASED);\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserUnadmitted = (check: any) =>\n check && check.joinedWith?.intent?.type === _WAIT_ && check.state === _IDLE_;\n\n/**\n * @param {Object} check\n * @returns {Boolean}\n */\nSelfUtils.isLocusUserAdmitted = (check: any) =>\n check && check.joinedWith?.intent?.type !== _WAIT_ && check.state === _JOINED_;\n\n/**\n * @param {Object} self\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (self: object) => {\n if (!self) {\n throw new ParameterError('self must be defined to determine if self is unadmitted as guest.');\n }\n\n return SelfUtils.isLocusUserUnadmitted(self);\n};\n\nSelfUtils.moderatorChanged = (oldSelf, changedSelf) => {\n if (!oldSelf) {\n return true;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned moderator status.'\n );\n }\n\n return oldSelf.moderator !== changedSelf.moderator;\n};\n\n/**\n * determine whether the roles of self is changed or not\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n */\nSelfUtils.isRolesChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n // no new self means no change\n return false;\n }\n\n return !isEqual(oldSelf?.roles, changedSelf?.roles);\n};\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isDeviceObserving = (oldSelf: any, changedSelf: any) =>\n oldSelf &&\n oldSelf.joinedWith?.intent?.type === _MOVE_MEDIA_ &&\n changedSelf &&\n changedSelf.joinedWith?.intent?.type === _OBSERVE_;\n\n/**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} if changed self was undefined\n */\nSelfUtils.isUserAdmitted = (oldSelf: object, changedSelf: object) => {\n if (!oldSelf) {\n // if there was no previous locus, it couldn't have been admitted yet\n return false;\n }\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self transitioned to admitted as guest.'\n );\n }\n\n return SelfUtils.isLocusUserUnadmitted(oldSelf) && SelfUtils.isLocusUserAdmitted(changedSelf);\n};\n\nSelfUtils.videoMutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was video muted by others.'\n );\n }\n\n if (!oldSelf || oldSelf.remoteVideoMuted === null) {\n if (changedSelf.remoteVideoMuted) {\n return true; // this happens when host disables \"Allow start video\"\n }\n\n // we don't want to be sending the 'meeting:self:videoUnmutedByOthers' notification on meeting join\n return false;\n }\n\n return oldSelf.remoteVideoMuted !== changedSelf.remoteVideoMuted;\n};\n\nSelfUtils.mutedByOthersChanged = (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError('New self must be defined to determine if self was muted by others.');\n }\n\n if (!oldSelf || oldSelf.remoteMuted === null) {\n if (changedSelf.remoteMuted) {\n return true; // this happens when mute on-entry is enabled\n }\n\n // we don't want to be sending the 'meeting:self:unmutedByOthers' notification on meeting join\n return false;\n }\n\n return (\n changedSelf.remoteMuted !== null &&\n (oldSelf.remoteMuted !== changedSelf.remoteMuted ||\n (changedSelf.remoteMuted && oldSelf.unmuteAllowed !== changedSelf.unmuteAllowed))\n );\n};\n\nSelfUtils.localAudioUnmuteRequestedByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self received request to unmute.'\n );\n }\n\n return (\n changedSelf.localAudioUnmuteRequested &&\n changedSelf.localAudioUnmuteRequestedTimeStamp > oldSelf.localAudioUnmuteRequestedTimeStamp\n );\n};\n\nSelfUtils.localAudioUnmuteRequiredByServer = (oldSelf: any = {}, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if localAudioUnmuteRequired changed.'\n );\n }\n\n return (\n !changedSelf.remoteMuted &&\n changedSelf.localAudioUnmuteRequired &&\n oldSelf.localAudioUnmuteRequired !== changedSelf.localAudioUnmuteRequired\n );\n};\n\n/**\n * extract the sipUrl from the partner\n * @param {Object} partner\n * @param {Object} info\n * @returns {Object}\n */\n\nSelfUtils.getSipUrl = (partner: any, type, sipUri) => {\n // For webex meeting the sipUrl gets updated in info parser\n if (partner && type === _CALL_) {\n return {sipUri: partner.person.sipUrl || partner.person.id};\n }\n\n return {sipUri};\n};\n\nSelfUtils.getMediaStatus = (mediaSessions = []) => {\n const mediaStatus = {\n audio: {},\n video: {},\n share: {},\n };\n\n mediaStatus.audio = mediaSessions.find(\n (media) => media.mediaType === AUDIO && media.mediaContent === MediaContent.main\n );\n mediaStatus.video = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.main\n );\n mediaStatus.share = mediaSessions.find(\n (media) => media.mediaType === VIDEO && media.mediaContent === MediaContent.slides\n );\n\n return mediaStatus;\n};\n\nSelfUtils.getReplacedBreakoutMoveId = (self: any, deviceId: string) => {\n if (self && Array.isArray(self.devices)) {\n const joinedDevice = self.devices.find((device) => deviceId === device.url);\n if (Array.isArray(joinedDevice?.replaces)) {\n return joinedDevice.replaces[0]?.breakoutMoveId;\n }\n }\n\n return null;\n};\nexport default SelfUtils;\n"],"mappings":"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"}
|
package/dist/media/index.js
CHANGED
|
@@ -12,20 +12,18 @@ _Object$defineProperty(exports, "__esModule", {
|
|
|
12
12
|
});
|
|
13
13
|
exports.default = void 0;
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
|
15
|
-
var _stringify = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/json/stringify"));
|
|
16
15
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
|
17
16
|
var _internalMediaCore = require("@webex/internal-media-core");
|
|
18
17
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
|
19
18
|
var _constants = require("../constants");
|
|
20
19
|
var _config = _interopRequireDefault(require("../config"));
|
|
21
20
|
var _config2 = _interopRequireDefault(require("../common/config"));
|
|
22
|
-
var _media = _interopRequireDefault(require("../common/errors/media"));
|
|
23
21
|
var _browserDetection = _interopRequireDefault(require("../common/browser-detection"));
|
|
22
|
+
var _rtcMetrics = _interopRequireDefault(require("../rtcMetrics"));
|
|
24
23
|
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
24
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
25
|
var _BrowserDetection = (0, _browserDetection.default)(),
|
|
27
26
|
isBrowser = _BrowserDetection.isBrowser;
|
|
28
|
-
|
|
29
27
|
/**
|
|
30
28
|
* MediaDirection
|
|
31
29
|
* @typedef {Object} MediaDirection
|
|
@@ -56,40 +54,6 @@ var _BrowserDetection = (0, _browserDetection.default)(),
|
|
|
56
54
|
*/
|
|
57
55
|
var Media = {};
|
|
58
56
|
|
|
59
|
-
/**
|
|
60
|
-
* @param {boolean} enabled
|
|
61
|
-
* @param {MediaStreamTrack} track
|
|
62
|
-
* @returns {Boolean}
|
|
63
|
-
* @public
|
|
64
|
-
*/
|
|
65
|
-
Media.setLocalTrack = function (enabled, track) {
|
|
66
|
-
if (track) {
|
|
67
|
-
track.enabled = enabled;
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
return false;
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* format the media array for send
|
|
75
|
-
* @param {String} mediaId
|
|
76
|
-
* @param {Boolean} audioMuted
|
|
77
|
-
* @param {Boolean} videoMuted
|
|
78
|
-
* @returns {Array} medias
|
|
79
|
-
*/
|
|
80
|
-
Media.generateLocalMedias = function (mediaId, audioMuted, videoMuted) {
|
|
81
|
-
if (mediaId) {
|
|
82
|
-
return [{
|
|
83
|
-
localSdp: (0, _stringify.default)({
|
|
84
|
-
audioMuted: audioMuted,
|
|
85
|
-
videoMuted: videoMuted
|
|
86
|
-
}),
|
|
87
|
-
mediaId: mediaId
|
|
88
|
-
}];
|
|
89
|
-
}
|
|
90
|
-
return [];
|
|
91
|
-
};
|
|
92
|
-
|
|
93
57
|
/**
|
|
94
58
|
* make a browser call to get the media
|
|
95
59
|
* @param {SendOptions} options
|
|
@@ -114,27 +78,43 @@ Media.getLocalMedia = function (options, config) {
|
|
|
114
78
|
}
|
|
115
79
|
return _promise.default.resolve(undefined);
|
|
116
80
|
};
|
|
81
|
+
Media.getDirection = function (forceSendRecv, receive, send) {
|
|
82
|
+
if (!receive && !send) {
|
|
83
|
+
return 'inactive';
|
|
84
|
+
}
|
|
85
|
+
if (forceSendRecv || receive && send) {
|
|
86
|
+
return 'sendrecv';
|
|
87
|
+
}
|
|
88
|
+
if (receive) {
|
|
89
|
+
return 'recvonly';
|
|
90
|
+
}
|
|
91
|
+
return 'sendonly';
|
|
92
|
+
};
|
|
117
93
|
|
|
118
94
|
/**
|
|
119
95
|
* creates a webrtc media connection with provided tracks and mediaDirection configuration
|
|
120
96
|
*
|
|
121
97
|
* @param {boolean} isMultistream
|
|
122
98
|
* @param {string} debugId string useful for debugging (will appear in media connection logs)
|
|
99
|
+
* @param {object} webex main `webex` object.
|
|
100
|
+
* @param {string} meetingId id for the meeting using this connection
|
|
123
101
|
* @param {Object} options
|
|
124
|
-
* @param {Object} [options.mediaProperties]
|
|
125
|
-
* audioTrack, videoTrack and
|
|
102
|
+
* @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:
|
|
103
|
+
* audioTrack, videoTrack, shareVideoTrack, and shareAudioTrack
|
|
126
104
|
* @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections
|
|
127
105
|
* @param {boolean} [options.enableRtx] applicable only to non-multistream connections
|
|
128
106
|
* @param {boolean} [options.enableExtmap] applicable only to non-multistream connections
|
|
129
107
|
* @param {Object} [options.turnServerInfo]
|
|
130
|
-
* @
|
|
108
|
+
* @param {BundlePolicy} [options.bundlePolicy]
|
|
109
|
+
* @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
|
|
131
110
|
*/
|
|
132
|
-
Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
111
|
+
Media.createMediaConnection = function (isMultistream, debugId, webex, meetingId, options) {
|
|
133
112
|
var mediaProperties = options.mediaProperties,
|
|
134
113
|
remoteQualityLevel = options.remoteQualityLevel,
|
|
135
114
|
enableRtx = options.enableRtx,
|
|
136
115
|
enableExtmap = options.enableExtmap,
|
|
137
|
-
turnServerInfo = options.turnServerInfo
|
|
116
|
+
turnServerInfo = options.turnServerInfo,
|
|
117
|
+
bundlePolicy = options.bundlePolicy;
|
|
138
118
|
var iceServers = [];
|
|
139
119
|
if (turnServerInfo) {
|
|
140
120
|
iceServers.push({
|
|
@@ -144,9 +124,21 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
|
144
124
|
});
|
|
145
125
|
}
|
|
146
126
|
if (isMultistream) {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
127
|
+
var _mediaProperties$medi, _mediaProperties$medi2, _mediaProperties$medi3, _mediaProperties$medi4;
|
|
128
|
+
var config = {
|
|
129
|
+
iceServers: iceServers,
|
|
130
|
+
enableMainAudio: ((_mediaProperties$medi = mediaProperties.mediaDirection) === null || _mediaProperties$medi === void 0 ? void 0 : _mediaProperties$medi.sendAudio) || ((_mediaProperties$medi2 = mediaProperties.mediaDirection) === null || _mediaProperties$medi2 === void 0 ? void 0 : _mediaProperties$medi2.receiveAudio),
|
|
131
|
+
enableMainVideo: ((_mediaProperties$medi3 = mediaProperties.mediaDirection) === null || _mediaProperties$medi3 === void 0 ? void 0 : _mediaProperties$medi3.sendVideo) || ((_mediaProperties$medi4 = mediaProperties.mediaDirection) === null || _mediaProperties$medi4 === void 0 ? void 0 : _mediaProperties$medi4.receiveVideo)
|
|
132
|
+
};
|
|
133
|
+
if (bundlePolicy) {
|
|
134
|
+
config.bundlePolicy = bundlePolicy;
|
|
135
|
+
}
|
|
136
|
+
var rtcMetrics = new _rtcMetrics.default(webex, meetingId);
|
|
137
|
+
return new _internalMediaCore.MultistreamRoapMediaConnection(config, meetingId, function (data) {
|
|
138
|
+
return rtcMetrics.addMetrics(data);
|
|
139
|
+
}, function () {
|
|
140
|
+
return rtcMetrics.closeMetrics();
|
|
141
|
+
});
|
|
150
142
|
}
|
|
151
143
|
if (!mediaProperties) {
|
|
152
144
|
throw new Error('mediaProperties have to be provided for non-multistream media connections');
|
|
@@ -154,7 +146,7 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
|
154
146
|
var mediaDirection = mediaProperties.mediaDirection,
|
|
155
147
|
audioTrack = mediaProperties.audioTrack,
|
|
156
148
|
videoTrack = mediaProperties.videoTrack,
|
|
157
|
-
|
|
149
|
+
shareVideoTrack = mediaProperties.shareVideoTrack;
|
|
158
150
|
return new _internalMediaCore.RoapMediaConnection({
|
|
159
151
|
iceServers: iceServers,
|
|
160
152
|
skipInactiveTransceivers: false,
|
|
@@ -173,17 +165,17 @@ Media.createMediaConnection = function (isMultistream, debugId, options) {
|
|
|
173
165
|
disableRtx: !enableRtx // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP
|
|
174
166
|
}
|
|
175
167
|
}, {
|
|
176
|
-
|
|
177
|
-
audio: audioTrack,
|
|
178
|
-
video: videoTrack,
|
|
179
|
-
screenShareVideo:
|
|
168
|
+
localTracks: {
|
|
169
|
+
audio: audioTrack === null || audioTrack === void 0 ? void 0 : audioTrack.underlyingTrack,
|
|
170
|
+
video: videoTrack === null || videoTrack === void 0 ? void 0 : videoTrack.underlyingTrack,
|
|
171
|
+
screenShareVideo: shareVideoTrack === null || shareVideoTrack === void 0 ? void 0 : shareVideoTrack.underlyingTrack
|
|
180
172
|
},
|
|
181
|
-
|
|
182
|
-
audio: mediaDirection.receiveAudio,
|
|
183
|
-
video: mediaDirection.receiveVideo,
|
|
184
|
-
screenShareVideo: mediaDirection.receiveShare,
|
|
185
|
-
|
|
186
|
-
|
|
173
|
+
direction: {
|
|
174
|
+
audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),
|
|
175
|
+
video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),
|
|
176
|
+
screenShareVideo: Media.getDirection(false, mediaDirection.receiveShare, mediaDirection.sendShare)
|
|
177
|
+
},
|
|
178
|
+
remoteQualityLevel: remoteQualityLevel
|
|
187
179
|
}, debugId);
|
|
188
180
|
};
|
|
189
181
|
|
|
@@ -315,56 +307,6 @@ Media.getMedia = function (audio, video, config) {
|
|
|
315
307
|
});
|
|
316
308
|
};
|
|
317
309
|
|
|
318
|
-
/**
|
|
319
|
-
* Checks if the machine has at least one audio or video device (Dont use this for screen share)
|
|
320
|
-
* @param {object} [options]
|
|
321
|
-
* {
|
|
322
|
-
* sendAudio: true/false,
|
|
323
|
-
* sendVideo: true/false
|
|
324
|
-
* }
|
|
325
|
-
* @returns {Object} {
|
|
326
|
-
* sendAudio: true/false,
|
|
327
|
-
* sendVideo: true/false
|
|
328
|
-
*}
|
|
329
|
-
*/
|
|
330
|
-
Media.getSupportedDevice = function (_ref) {
|
|
331
|
-
var sendAudio = _ref.sendAudio,
|
|
332
|
-
sendVideo = _ref.sendVideo;
|
|
333
|
-
return _promise.default.resolve().then(function () {
|
|
334
|
-
if (!navigator.mediaDevices || navigator.mediaDevices.enumerateDevices === undefined) {
|
|
335
|
-
return {
|
|
336
|
-
sendAudio: false,
|
|
337
|
-
sendVideo: false
|
|
338
|
-
};
|
|
339
|
-
}
|
|
340
|
-
return navigator.mediaDevices.enumerateDevices().then(function (devices) {
|
|
341
|
-
var supported = {
|
|
342
|
-
audio: devices.filter(function (device) {
|
|
343
|
-
return device.kind === _constants.AUDIO_INPUT;
|
|
344
|
-
}).length > 0,
|
|
345
|
-
video: devices.filter(function (device) {
|
|
346
|
-
return device.kind === _constants.VIDEO_INPUT;
|
|
347
|
-
}).length > 0
|
|
348
|
-
};
|
|
349
|
-
return {
|
|
350
|
-
sendAudio: supported.audio && sendAudio,
|
|
351
|
-
sendVideo: supported.video && sendVideo
|
|
352
|
-
};
|
|
353
|
-
});
|
|
354
|
-
});
|
|
355
|
-
};
|
|
356
|
-
|
|
357
|
-
/**
|
|
358
|
-
* proxy to browser navigator.mediaDevices.enumerateDevices()
|
|
359
|
-
* @returns {Promise}
|
|
360
|
-
*/
|
|
361
|
-
Media.getDevices = function () {
|
|
362
|
-
if (navigator && navigator.mediaDevices && navigator.mediaDevices.enumerateDevices) {
|
|
363
|
-
return navigator.mediaDevices.enumerateDevices();
|
|
364
|
-
}
|
|
365
|
-
return _promise.default.reject(new _media.default('enumerateDevices not supported.'));
|
|
366
|
-
};
|
|
367
|
-
|
|
368
310
|
/**
|
|
369
311
|
*
|
|
370
312
|
* Toggle a specific stream
|
|
@@ -393,35 +335,6 @@ Media.stopTracks = function (track) {
|
|
|
393
335
|
});
|
|
394
336
|
};
|
|
395
337
|
|
|
396
|
-
/**
|
|
397
|
-
*
|
|
398
|
-
* Stop input stream
|
|
399
|
-
* @param {Stream} stream A media stream
|
|
400
|
-
* @returns {null}
|
|
401
|
-
* @deprecated after v1.89.3
|
|
402
|
-
*/
|
|
403
|
-
Media.stopStream = function (stream) {
|
|
404
|
-
_loggerProxy.default.logger.warn('Media:index#stopStream --> [DEPRECATION WARNING]: stopStream has been deprecated after v1.89.3');
|
|
405
|
-
if (!stream) {
|
|
406
|
-
return _promise.default.resolve();
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
/*
|
|
410
|
-
* To release local media
|
|
411
|
-
* 1) Chrome requires all tracks to be stopped (stream.stop got deprecated)
|
|
412
|
-
* 2) Firefox requires the stream to be stopped
|
|
413
|
-
*/
|
|
414
|
-
return _promise.default.resolve().then(function () {
|
|
415
|
-
if (stream.getTracks) {
|
|
416
|
-
stream.getTracks().forEach(function (track) {
|
|
417
|
-
track.stop();
|
|
418
|
-
});
|
|
419
|
-
} else if (stream.stop) {
|
|
420
|
-
stream.stop();
|
|
421
|
-
}
|
|
422
|
-
});
|
|
423
|
-
};
|
|
424
|
-
|
|
425
338
|
/**
|
|
426
339
|
* generates streams for audio video and share
|
|
427
340
|
* @param {object} mediaSetting parameter
|