@webex/plugin-meetings 3.8.0 → 3.8.1-next.10
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 +26 -13
- package/dist/breakouts/breakout.js +1 -1
- package/dist/breakouts/index.js +70 -6
- package/dist/breakouts/index.js.map +1 -1
- package/dist/common/errors/webex-errors.js +12 -2
- package/dist/common/errors/webex-errors.js.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/constants.js +28 -123
- package/dist/constants.js.map +1 -1
- package/dist/controls-options-manager/enums.js +3 -0
- package/dist/controls-options-manager/enums.js.map +1 -1
- package/dist/controls-options-manager/types.js.map +1 -1
- package/dist/controls-options-manager/util.js +78 -0
- package/dist/controls-options-manager/util.js.map +1 -1
- package/dist/interpretation/index.js +4 -4
- package/dist/interpretation/index.js.map +1 -1
- package/dist/interpretation/siLanguage.js +1 -1
- package/dist/locus-info/controlsUtils.js +37 -11
- package/dist/locus-info/controlsUtils.js.map +1 -1
- package/dist/locus-info/index.js +92 -12
- package/dist/locus-info/index.js.map +1 -1
- package/dist/locus-info/selfUtils.js +432 -418
- package/dist/locus-info/selfUtils.js.map +1 -1
- package/dist/media/index.js +17 -17
- package/dist/media/index.js.map +1 -1
- package/dist/media/properties.js +94 -6
- package/dist/media/properties.js.map +1 -1
- package/dist/meeting/brbState.js +9 -2
- package/dist/meeting/brbState.js.map +1 -1
- package/dist/meeting/in-meeting-actions.js +21 -1
- package/dist/meeting/in-meeting-actions.js.map +1 -1
- package/dist/meeting/index.js +678 -344
- package/dist/meeting/index.js.map +1 -1
- package/dist/meeting/locusMediaRequest.js +21 -22
- package/dist/meeting/locusMediaRequest.js.map +1 -1
- package/dist/meeting/muteState.js +4 -4
- package/dist/meeting/muteState.js.map +1 -1
- package/dist/meeting/request.js +30 -0
- package/dist/meeting/request.js.map +1 -1
- package/dist/meeting/request.type.js.map +1 -1
- package/dist/meeting/util.js +13 -2
- package/dist/meeting/util.js.map +1 -1
- package/dist/meeting-info/meeting-info-v2.js +373 -68
- package/dist/meeting-info/meeting-info-v2.js.map +1 -1
- package/dist/meeting-info/utilv2.js +5 -1
- package/dist/meeting-info/utilv2.js.map +1 -1
- package/dist/meetings/index.js +136 -1
- package/dist/meetings/index.js.map +1 -1
- package/dist/meetings/util.js +14 -0
- package/dist/meetings/util.js.map +1 -1
- package/dist/member/index.js +55 -9
- package/dist/member/index.js.map +1 -1
- package/dist/member/types.js +3 -0
- package/dist/member/types.js.map +1 -1
- package/dist/member/util.js +335 -353
- package/dist/member/util.js.map +1 -1
- package/dist/members/collection.js.map +1 -1
- package/dist/members/index.js +137 -29
- package/dist/members/index.js.map +1 -1
- package/dist/members/request.js +38 -0
- package/dist/members/request.js.map +1 -1
- package/dist/members/util.js +36 -1
- package/dist/members/util.js.map +1 -1
- package/dist/metrics/constants.js +10 -0
- package/dist/metrics/constants.js.map +1 -1
- package/dist/multistream/remoteMediaManager.js +40 -8
- package/dist/multistream/remoteMediaManager.js.map +1 -1
- package/dist/reachability/clusterReachability.js +63 -27
- package/dist/reachability/clusterReachability.js.map +1 -1
- package/dist/reachability/index.js +107 -47
- package/dist/reachability/index.js.map +1 -1
- package/dist/reachability/reachability.types.js +14 -0
- package/dist/reachability/reachability.types.js.map +1 -1
- package/dist/reachability/request.js +19 -3
- package/dist/reachability/request.js.map +1 -1
- package/dist/reconnection-manager/index.js +2 -2
- package/dist/reconnection-manager/index.js.map +1 -1
- package/dist/recording-controller/util.js +5 -5
- package/dist/recording-controller/util.js.map +1 -1
- package/dist/roap/index.js.map +1 -1
- package/dist/roap/turnDiscovery.js +45 -27
- package/dist/roap/turnDiscovery.js.map +1 -1
- package/dist/roap/types.js +17 -0
- package/dist/roap/types.js.map +1 -0
- package/dist/types/common/errors/webex-errors.d.ts +7 -1
- package/dist/types/config.d.ts +3 -0
- package/dist/types/constants.d.ts +20 -85
- package/dist/types/controls-options-manager/enums.d.ts +4 -1
- package/dist/types/controls-options-manager/types.d.ts +10 -1
- package/dist/types/locus-info/index.d.ts +3 -3
- package/dist/types/locus-info/selfUtils.d.ts +216 -1
- package/dist/types/media/properties.d.ts +15 -0
- package/dist/types/meeting/in-meeting-actions.d.ts +20 -0
- package/dist/types/meeting/index.d.ts +65 -1
- package/dist/types/meeting/muteState.d.ts +0 -1
- package/dist/types/meeting/request.d.ts +12 -1
- package/dist/types/meeting/request.type.d.ts +6 -0
- package/dist/types/meeting/util.d.ts +3 -1
- package/dist/types/meeting-info/meeting-info-v2.d.ts +82 -1
- package/dist/types/meetings/index.d.ts +57 -0
- package/dist/types/member/index.d.ts +21 -6
- package/dist/types/member/types.d.ts +73 -14
- package/dist/types/member/util.d.ts +156 -1
- package/dist/types/members/collection.d.ts +6 -5
- package/dist/types/members/index.d.ts +32 -43
- package/dist/types/members/request.d.ts +26 -0
- package/dist/types/members/util.d.ts +27 -0
- package/dist/types/metrics/constants.d.ts +10 -0
- package/dist/types/multistream/remoteMediaManager.d.ts +10 -1
- package/dist/types/reachability/clusterReachability.d.ts +15 -7
- package/dist/types/reachability/index.d.ts +10 -1
- package/dist/types/reachability/reachability.types.d.ts +5 -0
- package/dist/types/roap/index.d.ts +3 -2
- package/dist/types/roap/turnDiscovery.d.ts +5 -17
- package/dist/types/roap/types.d.ts +16 -0
- package/dist/webinar/index.js +2 -2
- package/dist/webinar/index.js.map +1 -1
- package/package.json +24 -23
- package/src/breakouts/index.ts +69 -0
- package/src/common/errors/webex-errors.ts +8 -1
- package/src/config.ts +3 -0
- package/src/constants.ts +30 -90
- package/src/controls-options-manager/enums.ts +3 -0
- package/src/controls-options-manager/types.ts +16 -1
- package/src/controls-options-manager/util.ts +93 -0
- package/src/interpretation/index.ts +3 -3
- package/src/locus-info/controlsUtils.ts +59 -14
- package/src/locus-info/index.ts +97 -13
- package/src/locus-info/selfUtils.ts +496 -442
- package/src/media/index.ts +23 -21
- package/src/media/properties.ts +96 -0
- package/src/meeting/brbState.ts +11 -2
- package/src/meeting/in-meeting-actions.ts +40 -0
- package/src/meeting/index.ts +470 -105
- package/src/meeting/locusMediaRequest.ts +27 -22
- package/src/meeting/muteState.ts +4 -4
- package/src/meeting/request.ts +36 -1
- package/src/meeting/request.type.ts +7 -0
- package/src/meeting/util.ts +11 -2
- package/src/meeting-info/meeting-info-v2.ts +254 -8
- package/src/meeting-info/utilv2.ts +5 -0
- package/src/meetings/index.ts +148 -1
- package/src/meetings/util.ts +18 -0
- package/src/member/index.ts +68 -22
- package/src/member/types.ts +82 -16
- package/src/member/util.ts +357 -350
- package/src/members/collection.ts +4 -3
- package/src/members/index.ts +137 -18
- package/src/members/request.ts +44 -0
- package/src/members/util.ts +43 -1
- package/src/metrics/constants.ts +10 -0
- package/src/multistream/remoteMediaManager.ts +32 -10
- package/src/reachability/clusterReachability.ts +73 -26
- package/src/reachability/index.ts +62 -1
- package/src/reachability/reachability.types.ts +6 -0
- package/src/reachability/request.ts +7 -0
- package/src/reconnection-manager/index.ts +2 -2
- package/src/recording-controller/util.ts +17 -13
- package/src/roap/index.ts +3 -7
- package/src/roap/turnDiscovery.ts +34 -39
- package/src/roap/types.ts +23 -0
- package/src/webinar/index.ts +1 -1
- package/test/unit/spec/breakouts/index.ts +167 -95
- package/test/unit/spec/controls-options-manager/util.js +178 -0
- package/test/unit/spec/interpretation/index.ts +39 -1
- package/test/unit/spec/locus-info/controlsUtils.js +155 -9
- package/test/unit/spec/locus-info/index.js +209 -73
- package/test/unit/spec/locus-info/selfUtils.js +98 -24
- package/test/unit/spec/media/index.ts +150 -18
- package/test/unit/spec/media/properties.ts +130 -0
- package/test/unit/spec/meeting/brbState.ts +40 -2
- package/test/unit/spec/meeting/in-meeting-actions.ts +23 -4
- package/test/unit/spec/meeting/index.js +804 -139
- package/test/unit/spec/meeting/locusMediaRequest.ts +95 -87
- package/test/unit/spec/meeting/muteState.js +73 -2
- package/test/unit/spec/meeting/request.js +32 -1
- package/test/unit/spec/meeting/utils.js +119 -18
- package/test/unit/spec/meeting-info/meetinginfov2.js +484 -114
- package/test/unit/spec/meeting-info/utilv2.js +19 -0
- package/test/unit/spec/meetings/index.js +146 -2
- package/test/unit/spec/member/index.js +7 -0
- package/test/unit/spec/member/util.js +24 -0
- package/test/unit/spec/members/index.js +304 -78
- package/test/unit/spec/members/request.js +68 -22
- package/test/unit/spec/members/utils.js +75 -0
- package/test/unit/spec/multistream/remoteMediaManager.ts +397 -118
- package/test/unit/spec/reachability/clusterReachability.ts +88 -56
- package/test/unit/spec/reachability/index.ts +97 -0
- package/test/unit/spec/reachability/request.js +47 -2
- package/test/unit/spec/reconnection-manager/index.js +4 -4
- package/test/unit/spec/roap/turnDiscovery.ts +110 -28
- package/test/unit/spec/webinar/index.ts +5 -0
- package/dist/annotation/annotation.types.d.ts +0 -42
- package/dist/annotation/constants.d.ts +0 -31
- package/dist/annotation/index.d.ts +0 -117
- package/dist/breakouts/breakout.d.ts +0 -8
- package/dist/breakouts/collection.d.ts +0 -5
- package/dist/breakouts/edit-lock-error.d.ts +0 -15
- package/dist/breakouts/events.d.ts +0 -8
- package/dist/breakouts/index.d.ts +0 -5
- package/dist/breakouts/request.d.ts +0 -22
- package/dist/breakouts/utils.d.ts +0 -15
- package/dist/common/browser-detection.d.ts +0 -9
- package/dist/common/collection.d.ts +0 -48
- package/dist/common/config.d.ts +0 -2
- package/dist/common/errors/captcha-error.d.ts +0 -15
- package/dist/common/errors/intent-to-join.d.ts +0 -16
- package/dist/common/errors/join-meeting.d.ts +0 -17
- package/dist/common/errors/media.d.ts +0 -15
- package/dist/common/errors/no-meeting-info.d.ts +0 -14
- package/dist/common/errors/parameter.d.ts +0 -15
- package/dist/common/errors/password-error.d.ts +0 -15
- package/dist/common/errors/permission.d.ts +0 -14
- package/dist/common/errors/reclaim-host-role-error.js +0 -149
- package/dist/common/errors/reclaim-host-role-error.js.map +0 -1
- package/dist/common/errors/reclaim-host-role-errors.d.ts +0 -60
- package/dist/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/common/errors/reconnection-in-progress.js +0 -33
- package/dist/common/errors/reconnection-in-progress.js.map +0 -1
- package/dist/common/errors/reconnection.d.ts +0 -15
- package/dist/common/errors/stats.d.ts +0 -15
- package/dist/common/errors/webex-errors.d.ts +0 -93
- package/dist/common/errors/webex-meetings-error.d.ts +0 -20
- package/dist/common/events/events-scope.d.ts +0 -17
- package/dist/common/events/events.d.ts +0 -12
- package/dist/common/events/trigger-proxy.d.ts +0 -2
- package/dist/common/events/util.d.ts +0 -2
- package/dist/common/logs/logger-config.d.ts +0 -2
- package/dist/common/logs/logger-proxy.d.ts +0 -2
- package/dist/common/logs/request.d.ts +0 -36
- package/dist/common/queue.d.ts +0 -34
- package/dist/config.d.ts +0 -72
- package/dist/constants.d.ts +0 -1088
- package/dist/controls-options-manager/constants.d.ts +0 -4
- package/dist/controls-options-manager/enums.d.ts +0 -15
- package/dist/controls-options-manager/index.d.ts +0 -136
- package/dist/controls-options-manager/types.d.ts +0 -43
- package/dist/controls-options-manager/util.d.ts +0 -1
- package/dist/index.d.ts +0 -7
- package/dist/interceptors/index.d.ts +0 -2
- package/dist/interceptors/locusRetry.d.ts +0 -27
- package/dist/interpretation/collection.d.ts +0 -5
- package/dist/interpretation/index.d.ts +0 -5
- package/dist/interpretation/siLanguage.d.ts +0 -5
- package/dist/locus-info/controlsUtils.d.ts +0 -2
- package/dist/locus-info/embeddedAppsUtils.d.ts +0 -2
- package/dist/locus-info/fullState.d.ts +0 -2
- package/dist/locus-info/hostUtils.d.ts +0 -2
- package/dist/locus-info/index.d.ts +0 -322
- package/dist/locus-info/infoUtils.d.ts +0 -2
- package/dist/locus-info/mediaSharesUtils.d.ts +0 -2
- package/dist/locus-info/parser.d.ts +0 -272
- package/dist/locus-info/selfUtils.d.ts +0 -2
- package/dist/media/index.d.ts +0 -34
- package/dist/media/properties.d.ts +0 -93
- package/dist/media/util.d.ts +0 -2
- package/dist/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/mediaQualityMetrics/config.js +0 -502
- package/dist/mediaQualityMetrics/config.js.map +0 -1
- package/dist/meeting/effectsState.js +0 -260
- package/dist/meeting/effectsState.js.map +0 -1
- package/dist/meeting/in-meeting-actions.d.ts +0 -167
- package/dist/meeting/index.d.ts +0 -1825
- package/dist/meeting/locusMediaRequest.d.ts +0 -74
- package/dist/meeting/muteState.d.ts +0 -178
- package/dist/meeting/request.d.ts +0 -295
- package/dist/meeting/request.type.d.ts +0 -11
- package/dist/meeting/state.d.ts +0 -9
- package/dist/meeting/util.d.ts +0 -119
- package/dist/meeting/voicea-meeting.d.ts +0 -16
- package/dist/meeting-info/collection.d.ts +0 -20
- package/dist/meeting-info/index.d.ts +0 -69
- package/dist/meeting-info/meeting-info-v2.d.ts +0 -123
- package/dist/meeting-info/request.d.ts +0 -22
- package/dist/meeting-info/util.d.ts +0 -2
- package/dist/meeting-info/utilv2.d.ts +0 -2
- package/dist/meetings/collection.d.ts +0 -40
- package/dist/meetings/index.d.ts +0 -390
- package/dist/meetings/meetings.types.d.ts +0 -4
- package/dist/meetings/request.d.ts +0 -27
- package/dist/meetings/util.d.ts +0 -18
- package/dist/member/index.d.ts +0 -160
- package/dist/member/member.types.js +0 -17
- package/dist/member/member.types.js.map +0 -1
- package/dist/member/types.d.ts +0 -32
- package/dist/member/util.d.ts +0 -2
- package/dist/members/collection.d.ts +0 -29
- package/dist/members/index.d.ts +0 -353
- package/dist/members/request.d.ts +0 -114
- package/dist/members/types.d.ts +0 -25
- package/dist/members/util.d.ts +0 -215
- package/dist/metrics/config.js +0 -276
- package/dist/metrics/config.js.map +0 -1
- package/dist/metrics/constants.d.ts +0 -70
- package/dist/metrics/index.d.ts +0 -45
- package/dist/multistream/mediaRequestManager.d.ts +0 -119
- package/dist/multistream/receiveSlot.d.ts +0 -68
- package/dist/multistream/receiveSlotManager.d.ts +0 -56
- package/dist/multistream/remoteMedia.d.ts +0 -72
- package/dist/multistream/remoteMediaGroup.d.ts +0 -49
- package/dist/multistream/remoteMediaManager.d.ts +0 -300
- package/dist/multistream/sendSlotManager.d.ts +0 -69
- package/dist/networkQualityMonitor/index.d.ts +0 -70
- package/dist/networkQualityMonitor/index.js +0 -221
- package/dist/networkQualityMonitor/index.js.map +0 -1
- package/dist/peer-connection-manager/index.js +0 -671
- package/dist/peer-connection-manager/index.js.map +0 -1
- package/dist/peer-connection-manager/util.js +0 -109
- package/dist/peer-connection-manager/util.js.map +0 -1
- package/dist/personal-meeting-room/index.d.ts +0 -47
- package/dist/personal-meeting-room/request.d.ts +0 -14
- package/dist/personal-meeting-room/util.d.ts +0 -2
- package/dist/reachability/clusterReachability.d.ts +0 -109
- package/dist/reachability/index.d.ts +0 -105
- package/dist/reachability/request.d.ts +0 -39
- package/dist/reachability/util.d.ts +0 -8
- package/dist/reactions/constants.d.ts +0 -3
- package/dist/reactions/reactions.d.ts +0 -4
- package/dist/reactions/reactions.type.d.ts +0 -52
- package/dist/reconnection-manager/index.d.ts +0 -136
- package/dist/recording-controller/enums.d.ts +0 -7
- package/dist/recording-controller/index.d.ts +0 -207
- package/dist/recording-controller/util.d.ts +0 -14
- package/dist/roap/collection.js +0 -62
- package/dist/roap/collection.js.map +0 -1
- package/dist/roap/handler.js +0 -275
- package/dist/roap/handler.js.map +0 -1
- package/dist/roap/index.d.ts +0 -86
- package/dist/roap/request.d.ts +0 -39
- package/dist/roap/state.js +0 -126
- package/dist/roap/state.js.map +0 -1
- package/dist/roap/turnDiscovery.d.ts +0 -155
- package/dist/roap/util.js +0 -75
- package/dist/roap/util.js.map +0 -1
- package/dist/rtcMetrics/constants.d.ts +0 -4
- package/dist/rtcMetrics/constants.js +0 -11
- package/dist/rtcMetrics/constants.js.map +0 -1
- package/dist/rtcMetrics/index.d.ts +0 -61
- package/dist/rtcMetrics/index.js +0 -197
- package/dist/rtcMetrics/index.js.map +0 -1
- package/dist/statsAnalyzer/global.d.ts +0 -36
- package/dist/statsAnalyzer/global.js +0 -126
- package/dist/statsAnalyzer/global.js.map +0 -1
- package/dist/statsAnalyzer/index.d.ts +0 -217
- package/dist/statsAnalyzer/index.js +0 -1013
- package/dist/statsAnalyzer/index.js.map +0 -1
- package/dist/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/statsAnalyzer/mqaUtil.js +0 -179
- package/dist/statsAnalyzer/mqaUtil.js.map +0 -1
- package/dist/transcription/index.d.ts +0 -64
- package/dist/types/common/errors/reconnection-in-progress.d.ts +0 -9
- package/dist/types/mediaQualityMetrics/config.d.ts +0 -241
- package/dist/types/networkQualityMonitor/index.d.ts +0 -70
- package/dist/types/rtcMetrics/constants.d.ts +0 -4
- package/dist/types/rtcMetrics/index.d.ts +0 -71
- package/dist/types/statsAnalyzer/global.d.ts +0 -36
- package/dist/types/statsAnalyzer/index.d.ts +0 -217
- package/dist/types/statsAnalyzer/mqaUtil.d.ts +0 -48
- package/dist/webinar/collection.d.ts +0 -16
- package/dist/webinar/index.d.ts +0 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","SelfUtils","PSTN_DEVICE_TYPE","parse","self","deviceId","_joinedWith$intent","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","brb","getBrb","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_self$controls5","_isArray","default","layouts","undefined","_self$controls6","_self$controls6$role","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","brbChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls7","_self$controls7$audio","requestedToUnmute","_self$controls8","_self$controls8$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls9","_self$controls9$audio","audioStatus","videoStatus","slides","videoSlidesStatus","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","isLocusUserUnadmitted","check","_check$joinedWith","_check$joinedWith$int","isLocusUserAdmitted","_check$joinedWith2","_check$joinedWith2$in","ParameterError","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","_OBSERVE_","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"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 brb: SelfUtils.getBrb(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;\nSelfUtils.getBrb = (self) => self?.controls?.brb;\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(previous, 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 updates.brbChanged = SelfUtils.brbChanged(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.brbChanged = (previous, current) =>\n !isEqual(previous?.brb, current?.brb) && current?.brb !== undefined;\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} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean}\n * @throws {Error} when self is undefined\n */\nSelfUtils.isUserUnadmitted = (oldSelf: object, changedSelf: object) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'changedSelf must be defined to determine if self is unadmitted as guest.'\n );\n }\n\n if (SelfUtils.isLocusUserUnadmitted(oldSelf)) {\n return false;\n }\n\n return SelfUtils.isLocusUserUnadmitted(changedSelf);\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 // there is no need to trigger user update if no one muted user\n if (changedSelf.selfIdentity === changedSelf.modifiedBy) {\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":";;;;;;;;;AAEA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,UAAA,GAAAD,OAAA;AAcA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AAjBA;;AAmBA,IAAMI,SAAc,GAAG,CAAC,CAAC;AACzB,IAAMC,gBAAgB,GAAG,aAAa;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACAD,SAAS,CAACE,KAAK,GAAG,UAACC,IAAS,EAAEC,QAAgB,EAAK;EACjD,IAAID,IAAI,EAAE;IAAA,IAAAE,kBAAA;IACR,IAAMC,UAAU,GAAGH,IAAI,CAACI,OAAO,CAACC,IAAI,CAAC,UAACC,MAAM;MAAA,OAAKL,QAAQ,KAAKK,MAAM,CAACC,GAAG;IAAA,EAAC;IACzE,IAAMC,WAAW,GAAGR,IAAI,CAACI,OAAO,CAACK,MAAM,CAAC,UAACH,MAAM;MAAA,OAAKR,gBAAgB,KAAKQ,MAAM,CAACI,UAAU;IAAA,EAAC;IAE3F,OAAO;MACLC,gBAAgB,EAAEd,SAAS,CAACe,mBAAmB,CAACZ,IAAI,CAAC;MACrDa,WAAW,EAAEhB,SAAS,CAACiB,cAAc,CAACd,IAAI,CAAC;MAC3Ce,aAAa,EAAElB,SAAS,CAACmB,gBAAgB,CAAChB,IAAI,CAAC;MAC/CiB,yBAAyB,EAAEpB,SAAS,CAACqB,4BAA4B,CAAClB,IAAI,CAAC;MACvEmB,kCAAkC,EAAEtB,SAAS,CAACuB,qCAAqC,CAACpB,IAAI,CAAC;MACzFqB,wBAAwB,EAAExB,SAAS,CAACyB,2BAA2B,CAACtB,IAAI,CAAC;MACrEuB,YAAY,EAAE1B,SAAS,CAAC2B,eAAe,CAACxB,IAAI,CAAC;MAC7CyB,UAAU,EAAE5B,SAAS,CAAC6B,aAAa,CAAC1B,IAAI,CAAC;MACzC2B,KAAK,EAAE3B,IAAI,CAAC2B,KAAK;MACjBC,SAAS,EAAE5B,IAAI,CAAC4B,SAAS;MACzB;MACAC,WAAW,EAAEhC,SAAS,CAACiC,SAAS,CAAC9B,IAAI,CAAC+B,MAAM,CAAC;MAC7C;MACA;MACAC,KAAK,EAAEhC,IAAI,CAACgC,KAAK;MACjB;MACA;MACA7B,UAAU,EAAVA,UAAU;MACVK,WAAW,EAAXA,WAAW;MACX;MACAyB,kBAAkB,EAAEpC,SAAS,CAACqC,cAAc,CAAC/B,UAAU,aAAVA,UAAU,uBAAVA,UAAU,CAAEgC,aAAa,CAAC;MACvEC,OAAO,EAAEpC,IAAI,CAACqC,SAAS;MAAE;MACzBC,MAAM,EAAEtC,IAAI,CAACuC,EAAE;MACfC,YAAY,EAAE3C,SAAS,CAAC4C,eAAe,CAACzC,IAAI,CAAC;MAC7C0C,OAAO,EAAE1C,IAAI,CAACO,GAAG;MACjBoC,OAAO,EAAE3C,IAAI,CAAC2C,OAAO;MACrBC,KAAK,EAAE/C,SAAS,CAACgD,QAAQ,CAAC7C,IAAI,CAAC;MAC/B8C,gBAAgB,EAAE9C,IAAI,CAACgC,KAAK,KAAKe,iBAAM,IAAI,CAAA5C,UAAU,aAAVA,UAAU,wBAAAD,kBAAA,GAAVC,UAAU,CAAE6C,MAAM,cAAA9C,kBAAA,uBAAlBA,kBAAA,CAAoB+C,IAAI,MAAKC,iBAAM;MAC9EC,MAAM,EAAEtD,SAAS,CAACuD,SAAS,CAACpD,IAAI,CAAC;MACjCqD,4BAA4B,EAAExD,SAAS,CAACwD,4BAA4B,CAACrD,IAAI,CAAC;MAC1EsD,gBAAgB,EAAEzD,SAAS,CAACyD,gBAAgB,CAACtD,IAAI,CAAC;MAClDuD,gBAAgB,EAAE1D,SAAS,CAAC2D,mBAAmB,CAACxD,IAAI,CAAC;MACrDyD,QAAQ,EAAE5D,SAAS,CAAC6D,WAAW,CAAC1D,IAAI,CAAC;MACrC2D,cAAc,EAAE9D,SAAS,CAAC+D,iBAAiB,CAAC5D,IAAI,CAAC;MACjD6D,GAAG,EAAEhE,SAAS,CAACiE,MAAM,CAAC9D,IAAI;IAC5B,CAAC;EACH;EAEA,OAAO,IAAI;AACb,CAAC;AAEDH,SAAS,CAAC2D,mBAAmB,GAAG,UAACxD,IAAI;EAAA,IAAA+D,cAAA,EAAAC,qBAAA;EAAA,OAAKhE,IAAI,aAAJA,IAAI,wBAAA+D,cAAA,GAAJ/D,IAAI,CAAEiE,QAAQ,cAAAF,cAAA,wBAAAC,qBAAA,GAAdD,cAAA,CAAgBN,QAAQ,cAAAO,qBAAA,uBAAxBA,qBAAA,CAA0BE,QAAQ;AAAA;AAC5ErE,SAAS,CAAC6D,WAAW,GAAG,UAAC1D,IAAI;EAAA,IAAAmE,eAAA;EAAA,OAAKnE,IAAI,aAAJA,IAAI,wBAAAmE,eAAA,GAAJnE,IAAI,CAAEiE,QAAQ,cAAAE,eAAA,uBAAdA,eAAA,CAAgBV,QAAQ;AAAA;AAC1D5D,SAAS,CAAC+D,iBAAiB,GAAG,UAAC5D,IAAI;EAAA,IAAAoE,eAAA;EAAA,OAAKpE,IAAI,aAAJA,IAAI,wBAAAoE,eAAA,GAAJpE,IAAI,CAAEiE,QAAQ,cAAAG,eAAA,uBAAdA,eAAA,CAAgBT,cAAc;AAAA;AACtE9D,SAAS,CAACiE,MAAM,GAAG,UAAC9D,IAAI;EAAA,IAAAqE,eAAA;EAAA,OAAKrE,IAAI,aAAJA,IAAI,wBAAAqE,eAAA,GAAJrE,IAAI,CAAEiE,QAAQ,cAAAI,eAAA,uBAAdA,eAAA,CAAgBR,GAAG;AAAA;AAEhDhE,SAAS,CAACuD,SAAS,GAAG,UAACpD,IAAI;EAAA,IAAAsE,eAAA;EAAA,OACzB,IAAAC,QAAA,CAAAC,OAAA,EAAcxE,IAAI,aAAJA,IAAI,wBAAAsE,eAAA,GAAJtE,IAAI,CAAEiE,QAAQ,cAAAK,eAAA,uBAAdA,eAAA,CAAgBG,OAAO,CAAC,GAAGzE,IAAI,CAACiE,QAAQ,CAACQ,OAAO,CAAC,CAAC,CAAC,CAACxB,IAAI,GAAGyB,SAAS;AAAA;AAEpF7E,SAAS,CAACgD,QAAQ,GAAG,UAAC7C,IAAI;EAAA,IAAA2E,eAAA,EAAAC,oBAAA;EAAA,OACxB,CAAC,CAAA5E,IAAI,aAAJA,IAAI,wBAAA2E,eAAA,GAAJ3E,IAAI,CAAEiE,QAAQ,cAAAU,eAAA,wBAAAC,oBAAA,GAAdD,eAAA,CAAgBE,IAAI,cAAAD,oBAAA,uBAApBA,oBAAA,CAAsBhC,KAAK,KAAI,EAAE,EAAEkC,MAAM,CAAC,UAAClC,KAAK,EAAEiC,IAAI,EAAK;IAC1D,IAAIA,IAAI,CAACE,OAAO,EAAE;MAChBnC,KAAK,CAACoC,IAAI,CAACH,IAAI,CAAC5B,IAAI,CAAC;IACvB;IAEA,OAAOL,KAAK;EACd,CAAC,EAAE,EAAE,CAAC;AAAA;AAER/C,SAAS,CAACwD,4BAA4B,GAAG,UAACrD,IAAI;EAAA,OAAK,CAAC,EAACA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEqD,4BAA4B;AAAA;AAEvFxD,SAAS,CAACyD,gBAAgB,GAAG,UAACtD,IAAI;EAAA,OAAK,CAAC,EAACA,IAAI,aAAJA,IAAI,eAAJA,IAAI,CAAEsD,gBAAgB;AAAA;AAE/DzD,SAAS,CAACoF,SAAS,GAAG,UAACC,OAAO,EAAEC,OAAO,EAAElF,QAAQ,EAAK;EACpD,IAAMmF,QAAQ,GAAGF,OAAO,IAAIrF,SAAS,CAACE,KAAK,CAACmF,OAAO,EAAEjF,QAAQ,CAAC;EAC9D,IAAMoF,OAAO,GAAGF,OAAO,IAAItF,SAAS,CAACE,KAAK,CAACoF,OAAO,EAAElF,QAAQ,CAAC;EAC7D,IAAMqF,OAAY,GAAG,CAAC,CAAC;EAEvBA,OAAO,CAACxC,gBAAgB,GAAGjD,SAAS,CAACiD,gBAAgB,CAACsC,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACC,cAAc,GAAG1F,SAAS,CAAC0F,cAAc,CAACH,QAAQ,EAAEC,OAAO,CAAC;EACpEC,OAAO,CAACE,2BAA2B,GAAG3F,SAAS,CAAC4F,yBAAyB,CAACL,QAAQ,EAAEC,OAAO,CAAC;EAC5FC,OAAO,CAACI,sBAAsB,GAAG7F,SAAS,CAAC8F,oBAAoB,CAACP,QAAQ,EAAEC,OAAO,CAAC;EAClFC,OAAO,CAACM,iCAAiC,GAAG/F,SAAS,CAAC+F,iCAAiC,CACrFR,QAAQ,EACRC,OACF,CAAC;EACDC,OAAO,CAACO,gCAAgC,GAAGhG,SAAS,CAACgG,gCAAgC,CACnFT,QAAQ,EACRC,OACF,CAAC;EACDC,OAAO,CAACQ,gBAAgB,GAAGjG,SAAS,CAACiG,gBAAgB,CAACV,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACS,cAAc,GAAGlG,SAAS,CAACkG,cAAc,CAACX,QAAQ,EAAEC,OAAO,CAAC;EACpEC,OAAO,CAACU,yBAAyB,GAAGnG,SAAS,CAACoG,0BAA0B,CAACb,QAAQ,EAAEC,OAAO,CAAC;EAC3FC,OAAO,CAACY,eAAe,GAAGrG,SAAS,CAACsG,iBAAiB,CAACf,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACc,aAAa,GAAGvG,SAAS,CAACuG,aAAa,CAAChB,QAAQ,EAAEC,OAAO,CAAC;EAElEC,OAAO,CAACe,eAAe,GAAGxG,SAAS,CAACwG,eAAe,CAACjB,QAAQ,EAAEC,OAAO,CAAC;EACtEC,OAAO,CAACgB,gBAAgB,GACtB,CAAAlB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEnD,kBAAkB,CAACsE,KAAK,MAAKlB,OAAO,CAACpD,kBAAkB,CAACsE,KAAK;EACzEjB,OAAO,CAACkB,gBAAgB,GACtB,CAAApB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEnD,kBAAkB,CAACwE,KAAK,MAAKpB,OAAO,CAACpD,kBAAkB,CAACwE,KAAK;EACzEnB,OAAO,CAACoB,gBAAgB,GACtB,CAAAtB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEnD,kBAAkB,CAAC0E,KAAK,MAAKtB,OAAO,CAACpD,kBAAkB,CAAC0E,KAAK;EAEzErB,OAAO,CAACsB,mCAAmC,GACzC,CAAAxB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE/B,4BAA4B,MAAKgC,OAAO,CAAChC,4BAA4B;EACjFiC,OAAO,CAACuB,uBAAuB,GAAG,CAAAzB,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE9B,gBAAgB,MAAK+B,OAAO,CAAC/B,gBAAgB;EACzFgC,OAAO,CAACwB,gBAAgB,GAAGjH,SAAS,CAACiH,gBAAgB,CAAC1B,QAAQ,EAAEC,OAAO,CAAC;EACxEC,OAAO,CAACyB,qBAAqB,GAAGlH,SAAS,CAACkH,qBAAqB,CAAC3B,QAAQ,EAAEC,OAAO,CAAC;EAClFC,OAAO,CAAC0B,UAAU,GAAGnH,SAAS,CAACmH,UAAU,CAAC5B,QAAQ,EAAEC,OAAO,CAAC;EAE5D,OAAO;IACLD,QAAQ,EAARA,QAAQ;IACRC,OAAO,EAAPA,OAAO;IACPC,OAAO,EAAPA;EACF,CAAC;AACH,CAAC;;AAED;AACA;AACA;AACA;AACA;AACAzF,SAAS,CAACoH,QAAQ,GAAG,UAACjH,IAAS;EAAA,OAAK,CAAAA,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEgC,KAAK,MAAKkF,mBAAQ;AAAA;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACArH,SAAS,CAACuG,aAAa,GAAG,UAAChB,QAAa,EAAEC,OAAY;EAAA,OACpD,CAAAA,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAElC,MAAM,KAAI,CAAAiC,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEjC,MAAM,OAAKkC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAElC,MAAM;AAAA;AAEzDtD,SAAS,CAACiH,gBAAgB,GAAG,UAAC1B,QAAQ,EAAEC,OAAO;EAAA,OAC7C,CAAC,IAAA8B,eAAO,EAAC/B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAE7B,gBAAgB,EAAE8B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE9B,gBAAgB,CAAC,IAAI,CAAC,EAAC8B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE5B,QAAQ;AAAA;AAExF5D,SAAS,CAACkH,qBAAqB,GAAG,UAAC3B,QAAQ,EAAEC,OAAO;EAAA,OAClD,CAAC,IAAA8B,eAAO,EAAC/B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEzB,cAAc,EAAE0B,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAE1B,cAAc,CAAC,IAAI,CAAC,EAAC0B,OAAO,aAAPA,OAAO,eAAPA,OAAO,CAAE1B,cAAc;AAAA;AAE1F9D,SAAS,CAACmH,UAAU,GAAG,UAAC5B,QAAQ,EAAEC,OAAO;EAAA,OACvC,CAAC,IAAA8B,eAAO,EAAC/B,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEvB,GAAG,EAAEwB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAExB,GAAG,CAAC,IAAI,CAAAwB,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAExB,GAAG,MAAKa,SAAS;AAAA;AAErE7E,SAAS,CAACwG,eAAe,GAAG,UAACjB,QAAQ,EAAEC,OAAO,EAAK;EACjD,IACED,QAAQ,IACRA,QAAQ,CAACjF,UAAU,IACnBiF,QAAQ,CAACjF,UAAU,CAACgC,aAAa,IACjCkD,OAAO,IACPA,OAAO,CAAClF,UAAU,IAClBkF,OAAO,CAAClF,UAAU,CAACgC,aAAa,EAChC;IACA,IAAMiF,mBAAmB,GAAGvH,SAAS,CAACqC,cAAc,CAACkD,QAAQ,CAACjF,UAAU,CAACgC,aAAa,CAAC;IACvF,IAAMF,kBAAkB,GAAGpC,SAAS,CAACqC,cAAc,CAACmD,OAAO,CAAClF,UAAU,CAACgC,aAAa,CAAC;IAErF,IACEiF,mBAAmB,CAACb,KAAK,IACzBtE,kBAAkB,CAACsE,KAAK,IACxBa,mBAAmB,CAACb,KAAK,CAACvE,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACxDrF,kBAAkB,CAACsE,KAAK,CAACvE,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACvDrF,kBAAkB,CAACsE,KAAK,CAACgB,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,IACEF,mBAAmB,CAACX,KAAK,IACzBxE,kBAAkB,CAACwE,KAAK,IACxBW,mBAAmB,CAACX,KAAK,CAACzE,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACxDrF,kBAAkB,CAACwE,KAAK,CAACzE,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACvDrF,kBAAkB,CAACwE,KAAK,CAACc,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,IACEF,mBAAmB,CAACT,KAAK,IACzB1E,kBAAkB,CAAC0E,KAAK,IACxBS,mBAAmB,CAACT,KAAK,CAAC3E,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACxDrF,kBAAkB,CAAC0E,KAAK,CAAC3E,KAAK,KAAKqF,sBAAW,CAACC,QAAQ,IACvDrF,kBAAkB,CAAC0E,KAAK,CAACY,SAAS,KAAKF,sBAAW,CAACC,QAAQ,EAC3D;MACA,OAAO,IAAI;IACb;IAEA,OAAO,KAAK;EACd;EAEA,OAAO,KAAK;AACd,CAAC;AAEDzH,SAAS,CAAC2B,eAAe,GAAG,UAACxB,IAAI,EAAK;EACpC,IACE,CAACA,IAAI,IACL,CAACA,IAAI,CAACiE,QAAQ,IACd,CAACjE,IAAI,CAACiE,QAAQ,CAACsC,KAAK,IACpB,CAACvG,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,IACzB,CAACxH,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,CAACjG,YAAY,EACtC;IACA,OAAO,IAAI;EACb;EAEA,OAAOvB,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,CAACjG,YAAY;AAC9C,CAAC;AAED1B,SAAS,CAAC6B,aAAa,GAAG,UAAC1B,IAAI,EAAK;EAClC,IACE,CAACA,IAAI,IACL,CAACA,IAAI,CAACiE,QAAQ,IACd,CAACjE,IAAI,CAACiE,QAAQ,CAACsC,KAAK,IACpB,CAACvG,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,IACzB,CAACxH,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,CAAC/F,UAAU,EACpC;IACA,OAAO,IAAI;EACb;EAEA,OAAOzB,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACiB,IAAI,CAAC/F,UAAU;AAC5C,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA5B,SAAS,CAAC4C,eAAe,GAAG,UAACzC,IAAS,EAAK;EACzC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACyH,MAAM,EAAE;IACzB,OAAO,IAAI;EACb;EAEA,OAAOzH,IAAI,CAACyH,MAAM,CAAClF,EAAE;AACvB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA1C,SAAS,CAACe,mBAAmB,GAAG,UAACZ,IAAS,EAAK;EAC7C,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACiE,QAAQ,IAAI,CAACjE,IAAI,CAACiE,QAAQ,CAACwC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAOzG,IAAI,CAACiE,QAAQ,CAACwC,KAAK,CAACiB,KAAK;AAClC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA7H,SAAS,CAACiB,cAAc,GAAG,UAACd,IAAS,EAAK;EACxC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACiE,QAAQ,IAAI,CAACjE,IAAI,CAACiE,QAAQ,CAACsC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAOvG,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAACmB,KAAK;AAClC,CAAC;AAED7H,SAAS,CAACqB,4BAA4B,GAAG,UAAClB,IAAI;EAAA,IAAA2H,eAAA,EAAAC,qBAAA;EAAA,OAAK,CAAC,EAAC5H,IAAI,aAAJA,IAAI,gBAAA2H,eAAA,GAAJ3H,IAAI,CAAEiE,QAAQ,cAAA0D,eAAA,gBAAAC,qBAAA,GAAdD,eAAA,CAAgBpB,KAAK,cAAAqB,qBAAA,eAArBA,qBAAA,CAAuBC,iBAAiB;AAAA;;AAE7F;AACAhI,SAAS,CAACuB,qCAAqC,GAAG,UAACpB,IAAI;EAAA,IAAA8H,eAAA,EAAAC,qBAAA;EAAA,OACrDC,IAAI,CAACjI,KAAK,CAACC,IAAI,aAAJA,IAAI,wBAAA8H,eAAA,GAAJ9H,IAAI,CAAEiE,QAAQ,cAAA6D,eAAA,wBAAAC,qBAAA,GAAdD,eAAA,CAAgBvB,KAAK,cAAAwB,qBAAA,uBAArBA,qBAAA,CAAuBE,6BAA6B,CAAC,IAAI,CAAC;AAAA;AAEvEpI,SAAS,CAACmB,gBAAgB,GAAG,UAAChB,IAAI,EAAK;EACrC,IAAI,CAACA,IAAI,IAAI,CAACA,IAAI,CAACiE,QAAQ,IAAI,CAACjE,IAAI,CAACiE,QAAQ,CAACsC,KAAK,EAAE;IACnD,OAAO,IAAI;EACb;EAEA,OAAO,CAACvG,IAAI,CAACiE,QAAQ,CAACsC,KAAK,CAAC2B,cAAc;AAC5C,CAAC;AAEDrI,SAAS,CAACyB,2BAA2B,GAAG,UAACtB,IAAI;EAAA,IAAAmI,eAAA,EAAAC,qBAAA;EAAA,OAAK,CAAC,EAACpI,IAAI,aAAJA,IAAI,gBAAAmI,eAAA,GAAJnI,IAAI,CAAEiE,QAAQ,cAAAkE,eAAA,gBAAAC,qBAAA,GAAdD,eAAA,CAAgB5B,KAAK,cAAA6B,qBAAA,eAArBA,qBAAA,CAAuB/G,wBAAwB;AAAA;AAEnGxB,SAAS,CAACiC,SAAS,GAAG,UAACC,MAAM;EAAA,OAAM;IACjCwE,KAAK,EAAExE,MAAM,CAACsG,WAAW;IACzB5B,KAAK,EAAE1E,MAAM,CAACuG,WAAW;IACzBC,MAAM,EAAExG,MAAM,CAACyG;EACjB,CAAC;AAAA,CAAC;;AAEF;AACA;AACA;AACA;AACA;AACA3I,SAAS,CAACoG,0BAA0B,GAAG;EAAA,IAACf,OAAY,GAAAuD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA/D,SAAA,GAAA+D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA/D,SAAA;EAAA,OACzEQ,OAAO,CAAC/E,UAAU,IAClB+E,OAAO,CAAC/E,UAAU,CAAC6B,KAAK,KAAKkF,mBAAQ,IACrCyB,WAAW,CAACxI,UAAU,IACtBwI,WAAW,CAACxI,UAAU,CAAC6B,KAAK,KAAK4G,iBAAM,KACtCD,WAAW,CAACxI,UAAU,CAAC0I,MAAM,KAAKC,6BAAkB,CAACC,QAAQ,IAC5DJ,WAAW,CAACxI,UAAU,CAAC0I,MAAM,KAAKC,6BAAkB,CAACE,cAAc,CAAC;AAAA;;AAExE;AACA;AACA;AACA;AACAnJ,SAAS,CAACoJ,qBAAqB,GAAG,UAACC,KAAU;EAAA,IAAAC,iBAAA,EAAAC,qBAAA;EAAA,OAC3CF,KAAK,IAAI,EAAAC,iBAAA,GAAAD,KAAK,CAAC/I,UAAU,cAAAgJ,iBAAA,wBAAAC,qBAAA,GAAhBD,iBAAA,CAAkBnG,MAAM,cAAAoG,qBAAA,uBAAxBA,qBAAA,CAA0BnG,IAAI,MAAKC,iBAAM,IAAIgG,KAAK,CAAClH,KAAK,KAAKe,iBAAM;AAAA;;AAE9E;AACA;AACA;AACA;AACAlD,SAAS,CAACwJ,mBAAmB,GAAG,UAACH,KAAU;EAAA,IAAAI,kBAAA,EAAAC,qBAAA;EAAA,OACzCL,KAAK,IAAI,EAAAI,kBAAA,GAAAJ,KAAK,CAAC/I,UAAU,cAAAmJ,kBAAA,wBAAAC,qBAAA,GAAhBD,kBAAA,CAAkBtG,MAAM,cAAAuG,qBAAA,uBAAxBA,qBAAA,CAA0BtG,IAAI,MAAKC,iBAAM,IAAIgG,KAAK,CAAClH,KAAK,KAAKkF,mBAAQ;AAAA;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACArH,SAAS,CAACiD,gBAAgB,GAAG,UAACoC,OAAe,EAAEyD,WAAmB,EAAK;EACrE,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,0EACF,CAAC;EACH;EAEA,IAAI3J,SAAS,CAACoJ,qBAAqB,CAAC/D,OAAO,CAAC,EAAE;IAC5C,OAAO,KAAK;EACd;EAEA,OAAOrF,SAAS,CAACoJ,qBAAqB,CAACN,WAAW,CAAC;AACrD,CAAC;AAED9I,SAAS,CAACiG,gBAAgB,GAAG,UAACZ,OAAO,EAAEyD,WAAW,EAAK;EACrD,IAAI,CAACzD,OAAO,EAAE;IACZ,OAAO,IAAI;EACb;EACA,IAAI,CAACyD,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,8EACF,CAAC;EACH;EAEA,OAAOtE,OAAO,CAACtD,SAAS,KAAK+G,WAAW,CAAC/G,SAAS;AACpD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA/B,SAAS,CAACkG,cAAc,GAAG,UAACb,OAAO,EAAEyD,WAAW,EAAK;EACnD,IAAI,CAACA,WAAW,EAAE;IAChB;IACA,OAAO,KAAK;EACd;EAEA,OAAO,CAAC,IAAAxB,eAAO,EAACjC,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEtC,KAAK,EAAE+F,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE/F,KAAK,CAAC;AACrD,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA/C,SAAS,CAACsG,iBAAiB,GAAG,UAACjB,OAAY,EAAEyD,WAAgB;EAAA,IAAAc,mBAAA,EAAAC,qBAAA,EAAAC,qBAAA,EAAAC,sBAAA;EAAA,OAC3D1E,OAAO,IACP,EAAAuE,mBAAA,GAAAvE,OAAO,CAAC/E,UAAU,cAAAsJ,mBAAA,wBAAAC,qBAAA,GAAlBD,mBAAA,CAAoBzG,MAAM,cAAA0G,qBAAA,uBAA1BA,qBAAA,CAA4BzG,IAAI,MAAK4G,uBAAY,IACjDlB,WAAW,IACX,EAAAgB,qBAAA,GAAAhB,WAAW,CAACxI,UAAU,cAAAwJ,qBAAA,wBAAAC,sBAAA,GAAtBD,qBAAA,CAAwB3G,MAAM,cAAA4G,sBAAA,uBAA9BA,sBAAA,CAAgC3G,IAAI,MAAK6G,oBAAS;AAAA;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACAjK,SAAS,CAAC0F,cAAc,GAAG,UAACL,OAAe,EAAEyD,WAAmB,EAAK;EACnE,IAAI,CAACzD,OAAO,EAAE;IACZ;IACA,OAAO,KAAK;EACd;EACA,IAAI,CAACyD,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,kFACF,CAAC;EACH;EAEA,OAAO3J,SAAS,CAACoJ,qBAAqB,CAAC/D,OAAO,CAAC,IAAIrF,SAAS,CAACwJ,mBAAmB,CAACV,WAAW,CAAC;AAC/F,CAAC;AAED9I,SAAS,CAAC4F,yBAAyB,GAAG,UAACP,OAAO,EAAEyD,WAAW,EAAK;EAC9D,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,0EACF,CAAC;EACH;EAEA,IAAI,CAACtE,OAAO,IAAIA,OAAO,CAACvE,gBAAgB,KAAK,IAAI,EAAE;IACjD,IAAIgI,WAAW,CAAChI,gBAAgB,EAAE;MAChC,OAAO,IAAI,CAAC,CAAC;IACf;;IAEA;IACA,OAAO,KAAK;EACd;EAEA,OAAOuE,OAAO,CAACvE,gBAAgB,KAAKgI,WAAW,CAAChI,gBAAgB;AAClE,CAAC;AAEDd,SAAS,CAAC8F,oBAAoB,GAAG,UAACT,OAAO,EAAEyD,WAAW,EAAK;EACzD,IAAI,CAACA,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CAAC,oEAAoE,CAAC;EAChG;EAEA,IAAI,CAACtE,OAAO,IAAIA,OAAO,CAACrE,WAAW,KAAK,IAAI,EAAE;IAC5C,IAAI8H,WAAW,CAAC9H,WAAW,EAAE;MAC3B,OAAO,IAAI,CAAC,CAAC;IACf;;IAEA;IACA,OAAO,KAAK;EACd;;EAEA;EACA,IAAI8H,WAAW,CAACnG,YAAY,KAAKmG,WAAW,CAAClH,UAAU,EAAE;IACvD,OAAO,KAAK;EACd;EAEA,OACEkH,WAAW,CAAC9H,WAAW,KAAK,IAAI,KAC/BqE,OAAO,CAACrE,WAAW,KAAK8H,WAAW,CAAC9H,WAAW,IAC7C8H,WAAW,CAAC9H,WAAW,IAAIqE,OAAO,CAACnE,aAAa,KAAK4H,WAAW,CAAC5H,aAAc,CAAC;AAEvF,CAAC;AAEDlB,SAAS,CAAC+F,iCAAiC,GAAG,YAAyC;EAAA,IAAxCV,OAAY,GAAAuD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA/D,SAAA,GAAA+D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA/D,SAAA;EAChF,IAAI,CAACiE,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,2EACF,CAAC;EACH;EAEA,OACEb,WAAW,CAAC1H,yBAAyB,IACrC0H,WAAW,CAACxH,kCAAkC,GAAG+D,OAAO,CAAC/D,kCAAkC;AAE/F,CAAC;AAEDtB,SAAS,CAACgG,gCAAgC,GAAG,YAAyC;EAAA,IAAxCX,OAAY,GAAAuD,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA/D,SAAA,GAAA+D,SAAA,MAAG,CAAC,CAAC;EAAA,IAAEE,WAAgB,GAAAF,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAA/D,SAAA;EAC/E,IAAI,CAACiE,WAAW,EAAE;IAChB,MAAM,IAAIa,kBAAc,CACtB,4EACF,CAAC;EACH;EAEA,OACE,CAACb,WAAW,CAAC9H,WAAW,IACxB8H,WAAW,CAACtH,wBAAwB,IACpC6D,OAAO,CAAC7D,wBAAwB,KAAKsH,WAAW,CAACtH,wBAAwB;AAE7E,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEAxB,SAAS,CAACkK,SAAS,GAAG,UAACC,OAAY,EAAE/G,IAAI,EAAEgH,MAAM,EAAK;EACpD;EACA,IAAID,OAAO,IAAI/G,IAAI,KAAKiH,iBAAM,EAAE;IAC9B,OAAO;MAACD,MAAM,EAAED,OAAO,CAACvC,MAAM,CAAC0C,MAAM,IAAIH,OAAO,CAACvC,MAAM,CAAClF;IAAE,CAAC;EAC7D;EAEA,OAAO;IAAC0H,MAAM,EAANA;EAAM,CAAC;AACjB,CAAC;AAEDpK,SAAS,CAACqC,cAAc,GAAG,YAAwB;EAAA,IAAvBC,aAAa,GAAAsG,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAA/D,SAAA,GAAA+D,SAAA,MAAG,EAAE;EAC5C,IAAM5G,WAAW,GAAG;IAClB0E,KAAK,EAAE,CAAC,CAAC;IACTE,KAAK,EAAE,CAAC,CAAC;IACTE,KAAK,EAAE,CAAC;EACV,CAAC;EAED9E,WAAW,CAAC0E,KAAK,GAAGpE,aAAa,CAAC9B,IAAI,CACpC,UAAC+J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKC,gBAAK,IAAIF,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACC,IAAI;EAAA,CAClF,CAAC;EACD5I,WAAW,CAAC4E,KAAK,GAAGtE,aAAa,CAAC9B,IAAI,CACpC,UAAC+J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKK,gBAAK,IAAIN,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACC,IAAI;EAAA,CAClF,CAAC;EACD5I,WAAW,CAAC8E,KAAK,GAAGxE,aAAa,CAAC9B,IAAI,CACpC,UAAC+J,KAAK;IAAA,OAAKA,KAAK,CAACC,SAAS,KAAKK,gBAAK,IAAIN,KAAK,CAACG,YAAY,KAAKC,uBAAY,CAACjC,MAAM;EAAA,CACpF,CAAC;EAED,OAAO1G,WAAW;AACpB,CAAC;AAEDhC,SAAS,CAAC8K,yBAAyB,GAAG,UAAC3K,IAAS,EAAEC,QAAgB,EAAK;EACrE,IAAID,IAAI,IAAI,IAAAuE,QAAA,CAAAC,OAAA,EAAcxE,IAAI,CAACI,OAAO,CAAC,EAAE;IACvC,IAAMwK,YAAY,GAAG5K,IAAI,CAACI,OAAO,CAACC,IAAI,CAAC,UAACC,MAAM;MAAA,OAAKL,QAAQ,KAAKK,MAAM,CAACC,GAAG;IAAA,EAAC;IAC3E,IAAI,IAAAgE,QAAA,CAAAC,OAAA,EAAcoG,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAEC,QAAQ,CAAC,EAAE;MAAA,IAAAC,qBAAA;MACzC,QAAAA,qBAAA,GAAOF,YAAY,CAACC,QAAQ,CAAC,CAAC,CAAC,cAAAC,qBAAA,uBAAxBA,qBAAA,CAA0BC,cAAc;IACjD;EACF;EAEA,OAAO,IAAI;AACb,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAzG,OAAA,GACa3E,SAAS"}
|
1
|
+
{"version":3,"names":["_lodash","require","_constants","_parameter","_interopRequireDefault","PSTN_DEVICE_TYPE","SelfUtils","parse","self","deviceId","participants","_joinedWith$intent","_participants$find","joinedWith","devices","find","device","url","pairedWith","intent","type","_OBSERVE_","participant","_joinedWith$intent2","associatedWith","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","isLocusUserUnadmitted","layout","getLayout","canNotViewTheParticipantList","isSharingBlocked","breakoutSessions","getBreakoutSessions","breakout","getBreakout","interpretation","getInterpretation","brb","getBrb","_self$controls","_self$controls$breako","controls","sessions","_self$controls2","_self$controls3","_self$controls4","_self$controls5","_isArray","default","layouts","undefined","_self$controls6","_self$controls6$role","role","reduce","hasRole","push","getSelves","oldParsedSelf","newSelf","previous","current","updates","hasUserEnteredLobby","hasUserBeenAdmitted","isVideoMutedByOthersChanged","videoMutedByOthersChanged","isMutedByOthersChanged","mutedByOthersChanged","localAudioUnmuteRequestedByServer","localAudioUnmuteRequiredByServer","moderatorChanged","isRolesChanged","isMediaInactiveOrReleased","wasMediaInactiveOrReleased","isUserObserving","isDeviceObserving","layoutChanged","isMediaInactive","audioStateChange","audio","videoStateChange","video","shareStateChange","share","canNotViewTheParticipantListChanged","isSharingBlockedChanged","breakoutsChanged","interpretationChanged","brbChanged","isJoined","_JOINED_","isEqual","previousMediaStatus","MEDIA_STATE","inactive","direction","meta","person","muted","_self$controls7","_self$controls7$audio","requestedToUnmute","_self$controls8","_self$controls8$audio","Date","lastModifiedRequestedToUnmute","disallowUnmute","_self$controls9","_self$controls9$audio","audioStatus","videoStatus","slides","videoSlidesStatus","oldSelf","arguments","length","changedSelf","_LEFT_","reason","MEETING_END_REASON","INACTIVE","MEDIA_RELEASED","_joinedWith$intent3","_joinedWith$intent4","_pairedWith$intent","_WAIT_","_IDLE_","isLocusUserAdmitted","_joinedWith$intent5","_joinedWith$intent6","_pairedWith$intent2","ParameterError","wasInLobby","isInLobby","_oldSelf$joinedWith","_oldSelf$joinedWith$i","_changedSelf$joinedWi","_changedSelf$joinedWi2","_MOVE_MEDIA_","isAdmitted","getSipUrl","partner","sipUri","_CALL_","sipUrl","media","mediaType","AUDIO","mediaContent","MediaContent","main","VIDEO","getReplacedBreakoutMoveId","joinedDevice","replaces","_joinedDevice$replace","breakoutMoveId","_default","exports"],"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 PSTN_DEVICE_TYPE = 'PROVISIONAL';\n\nconst SelfUtils = {\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 * @param {Array} participants\n * @returns {undefined}\n */\n parse: (self: any, deviceId: string, participants: Array<any>) => {\n if (self) {\n const joinedWith = self.devices.find((device) => deviceId === device.url);\n const pairedWith =\n joinedWith?.intent?.type === _OBSERVE_ &&\n participants?.find((participant) => participant.url === joinedWith?.intent?.associatedWith)\n ?.devices[0];\n\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 pairedWith,\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: SelfUtils.isLocusUserUnadmitted(self?.state, joinedWith, pairedWith),\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 brb: SelfUtils.getBrb(self),\n };\n }\n\n return null;\n },\n\n getBreakoutSessions: (self) => self?.controls?.breakout?.sessions,\n getBreakout: (self) => self?.controls?.breakout,\n getInterpretation: (self) => self?.controls?.interpretation,\n getBrb: (self) => self?.controls?.brb,\n\n getLayout: (self) =>\n Array.isArray(self?.controls?.layouts) ? self.controls.layouts[0].type : undefined,\n\n 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\n canNotViewTheParticipantList: (self) => !!self?.canNotViewTheParticipantList,\n\n isSharingBlocked: (self) => !!self?.isSharingBlocked,\n\n getSelves: (oldParsedSelf, newSelf, deviceId, participants: Array<any>) => {\n const previous = oldParsedSelf;\n const current = newSelf && SelfUtils.parse(newSelf, deviceId, participants);\n const updates: any = {};\n\n updates.hasUserEnteredLobby = SelfUtils.hasUserEnteredLobby(previous, current);\n updates.hasUserBeenAdmitted = SelfUtils.hasUserBeenAdmitted(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 updates.brbChanged = SelfUtils.brbChanged(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 */\n 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 */\n layoutChanged: (previous: any, current: any) =>\n current?.layout && previous?.layout !== current?.layout,\n\n breakoutsChanged: (previous, current) =>\n !isEqual(previous?.breakoutSessions, current?.breakoutSessions) && !!current?.breakout,\n\n interpretationChanged: (previous, current) =>\n !isEqual(previous?.interpretation, current?.interpretation) && !!current?.interpretation,\n\n brbChanged: (previous, current) =>\n !isEqual(previous?.brb, current?.brb) && current?.brb !== undefined,\n\n 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\n 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\n 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 */\n 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 */\n 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 */\n getRemoteMuted: (self: any) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return self.controls.audio.muted;\n },\n\n getLocalAudioUnmuteRequested: (self) => !!self?.controls?.audio?.requestedToUnmute,\n\n // requestedToUnmute timestamp\n getLocalAudioUnmuteRequestedTimeStamp: (self) =>\n Date.parse(self?.controls?.audio?.lastModifiedRequestedToUnmute) || 0,\n\n getUnmuteAllowed: (self) => {\n if (!self || !self.controls || !self.controls.audio) {\n return null;\n }\n\n return !self.controls.audio.disallowUnmute;\n },\n\n getLocalAudioUnmuteRequired: (self) => !!self?.controls?.audio?.localAudioUnmuteRequired,\n\n 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 */\n 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 {String | undefined} state meeting state\n * @param {any} joinedWith device that user has joined with\n * @param {any} pairedWith device that user is paired with\n * @returns {Boolean | undefined} true if user is in lobby, false if not, undefined if it cannot be determined\n */\n isLocusUserUnadmitted: (state?: string, joinedWith?: any, pairedWith?: any) => {\n if (state === undefined) {\n return undefined;\n }\n if (joinedWith?.intent?.type === _OBSERVE_ && pairedWith) {\n // we are paired with a device, so need to check the lobby state for that device\n return pairedWith.intent?.type === _WAIT_ && state === _IDLE_;\n }\n\n return joinedWith?.intent?.type === _WAIT_ && state === _IDLE_;\n },\n\n /**\n * @param {String | undefined} state meeting state\n * @param {any} joinedWith device that user has joined with\n * @param {any} pairedWith device that user is paired with\n * @returns {Boolean}\n */\n isLocusUserAdmitted: (state?: string, joinedWith?: any, pairedWith?: any) => {\n if (state === undefined) {\n return undefined;\n }\n\n if (joinedWith?.intent?.type === _OBSERVE_ && pairedWith) {\n // we are paired with a device, so need to check the lobby state for that device\n return pairedWith.intent?.type !== _WAIT_ && state === _JOINED_;\n }\n\n return joinedWith?.intent?.type !== _WAIT_ && state === _JOINED_;\n },\n\n /**\n * @param {Object} oldSelf\n * @param {Object} changedSelf\n * @returns {Boolean} true if user has just been placed in the lobby\n * @throws {Error} when self is undefined\n */\n hasUserEnteredLobby: (oldSelf: any, changedSelf: any) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'changedSelf must be defined to determine if self is unadmitted as guest.'\n );\n }\n\n const wasInLobby = SelfUtils.isLocusUserUnadmitted(\n oldSelf?.state,\n oldSelf?.joinedWith,\n oldSelf?.pairedWith\n );\n\n const isInLobby = SelfUtils.isLocusUserUnadmitted(\n changedSelf?.state,\n changedSelf?.joinedWith,\n changedSelf?.pairedWith\n );\n\n return !wasInLobby && isInLobby;\n },\n\n 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 */\n 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 */\n 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} true if the user has just been admitted from lobby into the meeting\n * @throws {Error} if changed self was undefined\n */\n hasUserBeenAdmitted: (oldSelf: any, changedSelf: any) => {\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 const wasInLobby = SelfUtils.isLocusUserUnadmitted(\n oldSelf?.state,\n oldSelf?.joinedWith,\n oldSelf?.pairedWith\n );\n\n const isAdmitted = SelfUtils.isLocusUserAdmitted(\n changedSelf?.state,\n changedSelf?.joinedWith,\n changedSelf?.pairedWith\n );\n\n return wasInLobby && isAdmitted && isAdmitted !== undefined;\n },\n\n 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\n mutedByOthersChanged: (oldSelf, changedSelf) => {\n if (!changedSelf) {\n throw new ParameterError(\n 'New self must be defined to determine if self was muted by others.'\n );\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 // there is no need to trigger user update if no one muted user\n if (changedSelf.selfIdentity === changedSelf.modifiedBy) {\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\n 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\n 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\n 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\n getMediaStatus: (mediaSessions = []): {audio: any; video: any; share: any} => {\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\n 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 },\n};\n\nexport default SelfUtils;\n"],"mappings":"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"}
|
package/dist/media/index.js
CHANGED
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
15
15
|
var _promise = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/promise"));
|
16
16
|
var _internalMediaCore = require("@webex/internal-media-core");
|
17
|
+
var _webCapabilities = require("@webex/web-capabilities");
|
17
18
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
18
19
|
var _constants = require("../constants");
|
19
20
|
var _config = _interopRequireDefault(require("../config"));
|
@@ -117,37 +118,36 @@ Media.createMediaConnection = function (isMultistream, debugId, meetingId, optio
|
|
117
118
|
enableExtmap = options.enableExtmap,
|
118
119
|
turnServerInfo = options.turnServerInfo,
|
119
120
|
bundlePolicy = options.bundlePolicy,
|
120
|
-
iceCandidatesTimeout = options.iceCandidatesTimeout
|
121
|
+
iceCandidatesTimeout = options.iceCandidatesTimeout,
|
122
|
+
disableAudioMainDtx = options.disableAudioMainDtx,
|
123
|
+
enableAudioTwcc = options.enableAudioTwcc,
|
124
|
+
stopIceGatheringAfterFirstRelayCandidate = options.stopIceGatheringAfterFirstRelayCandidate;
|
121
125
|
var iceServers = [];
|
122
126
|
|
123
|
-
// we might not have any TURN server if TURN discovery failed or wasn't done or
|
124
|
-
|
125
|
-
if (turnServerInfo !== null && turnServerInfo !== void 0 && turnServerInfo.url) {
|
126
|
-
if (!isBrowser('firefox')) {
|
127
|
-
var bareTurnServer = turnServerInfo.url;
|
128
|
-
bareTurnServer = bareTurnServer.replace('turns:', 'turn:');
|
129
|
-
bareTurnServer = bareTurnServer.replace('443', '5004');
|
130
|
-
iceServers.push({
|
131
|
-
urls: bareTurnServer,
|
132
|
-
username: turnServerInfo.username || '',
|
133
|
-
credential: turnServerInfo.password || ''
|
134
|
-
});
|
135
|
-
}
|
136
|
-
|
127
|
+
// we might not have any TURN server if TURN discovery failed or wasn't done or we land on a video mesh node
|
128
|
+
if ((turnServerInfo === null || turnServerInfo === void 0 ? void 0 : turnServerInfo.urls.length) > 0) {
|
137
129
|
// TURN-TLS server
|
138
130
|
iceServers.push({
|
139
|
-
urls: turnServerInfo.
|
131
|
+
urls: turnServerInfo.urls,
|
140
132
|
username: turnServerInfo.username || '',
|
141
133
|
credential: turnServerInfo.password || ''
|
142
134
|
});
|
143
135
|
}
|
144
136
|
if (isMultistream) {
|
145
137
|
var config = {
|
146
|
-
iceServers: iceServers
|
138
|
+
iceServers: iceServers,
|
139
|
+
disableAudioTwcc: !enableAudioTwcc
|
147
140
|
};
|
148
141
|
if (bundlePolicy) {
|
149
142
|
config.bundlePolicy = bundlePolicy;
|
150
143
|
}
|
144
|
+
if (disableAudioMainDtx !== undefined) {
|
145
|
+
config.disableAudioMainDtx = disableAudioMainDtx;
|
146
|
+
}
|
147
|
+
if (_webCapabilities.BrowserInfo.isFirefox()) {
|
148
|
+
config.doFullIce = true;
|
149
|
+
config.stopIceGatheringAfterFirstRelayCandidate = stopIceGatheringAfterFirstRelayCandidate;
|
150
|
+
}
|
151
151
|
return new _internalMediaCore.MultistreamRoapMediaConnection(config, meetingId, /* the rtc metrics objects callbacks */
|
152
152
|
function (data) {
|
153
153
|
return rtcMetrics === null || rtcMetrics === void 0 ? void 0 : rtcMetrics.addMetrics(data);
|
package/dist/media/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_internalMediaCore","require","_loggerProxy","_interopRequireDefault","_constants","_config","_config2","_browserDetection","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_BrowserDetection","BrowserDetection","isBrowser","Media","getLocalMedia","options","config","sendAudio","sendVideo","sendShare","sharePreferences","isSharing","getMedia","getDisplayMedia","_promise","resolve","undefined","getDirection","forceSendRecv","receive","send","createMediaConnection","isMultistream","debugId","meetingId","_audioStream$outputSt","_videoStream$outputSt","_shareVideoStream$out","_shareAudioStream$out","rtcMetrics","mediaProperties","remoteQualityLevel","enableRtx","enableExtmap","turnServerInfo","bundlePolicy","iceCandidatesTimeout","iceServers","url","bareTurnServer","replace","urls","username","credential","password","MultistreamRoapMediaConnection","data","addMetrics","closeMetrics","sendMetricsInQueue","Error","mediaDirection","audioStream","videoStream","shareVideoStream","shareAudioStream","RoapMediaConnection","skipInactiveTransceivers","requireH264","sdpMunging","convertPort9to0","addContentSlides","bandwidthLimits","audio","StaticConfig","meetings","bandwidth","video","startBitrate","periodicKeyframes","disableExtmap","disableRtx","localTracks","outputStream","getTracks","screenShareVideo","screenShareAudio","direction","receiveAudio","receiveVideo","receiveShare","customResolution","screenResolution","customShareFrameRate","screenFrameRate","hasSharePreferences","hasCustomConstraints","shareConstraints","hasHighFrameRate","highFrameRate","_Config$meetings","Config","resolution","videoShareFrameRate","aspectRatio","cursor","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","frameRate","height","idealHeight","width","idealWidth","mediaConfig","navigator","mediaDevices","then","stream","getVideoTracks","applyConstraints","getDisplayMediaParams","defaultWidth","ideal","max","maxWidth","defaultHeight","maxHeight","deviceId","facingMode","fake","process","env","NODE_ENV","getUserMedia","catch","err","logPath","LoggerProxy","logger","error","concat","constraint","toggleStream","stopStream","stop","readyState","mediaSetting","audioVideo","localStream","shareStream","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n/* globals navigator */\n\nimport {\n RoapMediaConnection,\n MultistreamRoapMediaConnection,\n type MultistreamConnectionConfig,\n} from '@webex/internal-media-core';\nimport {\n LocalStream,\n LocalCameraStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalMicrophoneStream,\n} from '@webex/media-helpers';\nimport {RtcMetrics} from '@webex/internal-plugin-metrics';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEDIA_TRACK_CONSTRAINT} from '../constants';\nimport Config from '../config';\nimport StaticConfig from '../common/config';\nimport BrowserDetection from '../common/browser-detection';\n\nconst {isBrowser} = BrowserDetection();\n\nexport type BundlePolicy = MultistreamConnectionConfig['bundlePolicy'];\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n */\n\n/**\n * SendOptions\n * @typedef {Object} SendOptions\n * @property sendAudio\n * @property sendVideo\n * @property sendShare\n * @property isSharing\n * @property {Object} sharePreferences\n */\n/**\n *\n * @public\n * @export\n * Mimic browser APIs as \"the ultimate browser\".\n * Handles the quirks of each browser.\n * Extends and enhances adapter.js, i.e., the \"media\" file from the web client.\n */\nconst Media: any = {};\n\n/**\n * make a browser call to get the media\n * @param {SendOptions} options\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise}\n */\nMedia.getLocalMedia = (options: any, config: object) => {\n const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;\n\n if (sendAudio || sendVideo) {\n return Media.getMedia(sendAudio, sendVideo, config);\n }\n\n if (sendShare && !isSharing) {\n return Media.getDisplayMedia(\n {\n sendAudio: false,\n sendShare: true,\n sharePreferences,\n },\n config\n );\n }\n\n return Promise.resolve(undefined);\n};\n\nMedia.getDirection = (forceSendRecv: boolean, receive: boolean, send: boolean) => {\n if (!receive && !send) {\n return 'inactive';\n }\n\n if (forceSendRecv || (receive && send)) {\n return 'sendrecv';\n }\n\n if (receive) {\n return 'recvonly';\n }\n\n return 'sendonly';\n};\n\n/**\n * creates a webrtc media connection with provided tracks and mediaDirection configuration\n *\n * @param {boolean} isMultistream\n * @param {string} debugId string useful for debugging (will appear in media connection logs)\n * @param {string} meetingId id for the meeting using this connection\n * @param {Object} options\n * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:\n * audioTrack, videoTrack, shareVideoTrack, and shareAudioTrack\n * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections\n * @param {boolean} [options.enableRtx] applicable only to non-multistream connections\n * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections\n * @param {Object} [options.turnServerInfo]\n * @param {BundlePolicy} [options.bundlePolicy]\n * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}\n */\nMedia.createMediaConnection = (\n isMultistream: boolean,\n debugId: string,\n meetingId: string,\n options: {\n rtcMetrics?: RtcMetrics;\n mediaProperties: {\n mediaDirection?: {\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n sendAudio: boolean;\n sendVideo: boolean;\n sendShare: boolean;\n };\n audioStream?: LocalMicrophoneStream;\n videoStream?: LocalCameraStream;\n shareVideoStream?: LocalDisplayStream;\n shareAudioStream?: LocalSystemAudioStream;\n };\n remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';\n enableRtx?: boolean;\n enableExtmap?: boolean;\n turnServerInfo?: {\n url: string;\n username: string;\n password: string;\n };\n bundlePolicy?: BundlePolicy;\n iceCandidatesTimeout?: number;\n }\n) => {\n const {\n rtcMetrics,\n mediaProperties,\n remoteQualityLevel,\n enableRtx,\n enableExtmap,\n turnServerInfo,\n bundlePolicy,\n iceCandidatesTimeout,\n } = options;\n\n const iceServers = [];\n\n // we might not have any TURN server if TURN discovery failed or wasn't done or\n // we might get an empty TURN url if we land on a video mesh node\n if (turnServerInfo?.url) {\n if (!isBrowser('firefox')) {\n let bareTurnServer = turnServerInfo.url;\n bareTurnServer = bareTurnServer.replace('turns:', 'turn:');\n bareTurnServer = bareTurnServer.replace('443', '5004');\n\n iceServers.push({\n urls: bareTurnServer,\n username: turnServerInfo.username || '',\n credential: turnServerInfo.password || '',\n });\n }\n\n // TURN-TLS server\n iceServers.push({\n urls: turnServerInfo.url,\n username: turnServerInfo.username || '',\n credential: turnServerInfo.password || '',\n });\n }\n\n if (isMultistream) {\n const config: MultistreamConnectionConfig = {\n iceServers,\n };\n\n if (bundlePolicy) {\n config.bundlePolicy = bundlePolicy;\n }\n\n return new MultistreamRoapMediaConnection(\n config,\n meetingId,\n /* the rtc metrics objects callbacks */\n (data) => rtcMetrics?.addMetrics(data),\n () => rtcMetrics?.closeMetrics(),\n () => rtcMetrics?.sendMetricsInQueue()\n );\n }\n\n if (!mediaProperties) {\n throw new Error('mediaProperties have to be provided for non-multistream media connections');\n }\n\n const {mediaDirection, audioStream, videoStream, shareVideoStream, shareAudioStream} =\n mediaProperties;\n\n return new RoapMediaConnection(\n {\n iceServers,\n iceCandidatesTimeout,\n skipInactiveTransceivers: false,\n requireH264: true,\n sdpMunging: {\n convertPort9to0: false,\n addContentSlides: true,\n bandwidthLimits: {\n audio: StaticConfig.meetings.bandwidth.audio,\n video: StaticConfig.meetings.bandwidth.video,\n },\n startBitrate: StaticConfig.meetings.bandwidth.startBitrate,\n periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way\n disableExtmap: !enableExtmap,\n disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP\n },\n },\n {\n // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now SPARK-460530\n localTracks: {\n audio: audioStream?.outputStream?.getTracks()[0],\n video: videoStream?.outputStream?.getTracks()[0],\n screenShareVideo: shareVideoStream?.outputStream?.getTracks()[0],\n screenShareAudio: shareAudioStream?.outputStream?.getTracks()[0], // TODO: add type for screenShareAudio in internal-media-core SPARK-446923\n } as unknown,\n direction: {\n audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),\n video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),\n screenShareVideo: Media.getDirection(\n false,\n mediaDirection.receiveShare,\n mediaDirection.sendShare\n ),\n },\n remoteQualityLevel,\n },\n debugId\n );\n};\n\n/**\n * generates share streams\n * @param {Object} options parameter\n * @param {Boolean} options.sendAudio send audio from the display share\n * @param {Boolean} options.sendShare send video from the display share\n * @param {Object} options.sharePreferences\n * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}\n * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise.<MediaStream>}\n */\nMedia.getDisplayMedia = (\n options: {\n sendAudio: boolean;\n sendShare: boolean;\n sharePreferences: {\n shareConstraints: MediaTrackConstraints;\n highFrameRate: any;\n };\n },\n config: any = {}\n) => {\n // SDK screen share resolution settings from Webex.init\n const customResolution = config.screenResolution || {};\n // user defined screen share frame rate\n const customShareFrameRate = config.screenFrameRate || null;\n // user defined share preferences\n const hasSharePreferences = options.sharePreferences;\n const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;\n const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;\n const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =\n Config.meetings;\n\n let shareConstraints: any = {\n cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,\n aspectRatio,\n };\n\n if (hasCustomConstraints) {\n shareConstraints = hasSharePreferences.shareConstraints;\n } else if (hasHighFrameRate) {\n shareConstraints = {\n ...shareConstraints,\n frameRate: videoShareFrameRate,\n height: resolution.idealHeight,\n width: resolution.idealWidth,\n ...config.resolution,\n };\n } else {\n shareConstraints = {\n ...shareConstraints,\n frameRate: customShareFrameRate || screenFrameRate,\n height: customResolution.idealHeight || screenResolution.idealHeight,\n width: customResolution.idealWidth || screenResolution.idealWidth,\n ...config.screenResolution,\n };\n }\n\n // chrome and webkit based browsers (edge, safari) automatically adjust everything\n // and we have noticed higher quality with those browser types\n // firefox specifically has some issues with resolution and frame rate decision making\n // so we are making it optional and configurable (with defaults) for firefox\n // to have higher quality, and for developers to control the values\n // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox\n\n if (isBrowser('firefox')) {\n const mediaConfig: any = {\n audio: options.sendAudio,\n video: options.sendShare,\n };\n\n return navigator.mediaDevices\n .getDisplayMedia({audio: options.sendAudio, video: mediaConfig})\n .then((stream) => {\n if (options.sendShare && stream.getVideoTracks().length > 0) {\n // Firefox has a bug with the spec where changing in the height and width only happens\n // after we get the inital tracks\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221\n stream.getVideoTracks()[0].applyConstraints(shareConstraints);\n }\n\n return stream;\n });\n }\n\n const getDisplayMediaParams: any = {video: options.sendShare ? shareConstraints : false};\n\n // safari doesn't support sending screen share audio\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n if (options.sendAudio && isBrowser('safari')) {\n getDisplayMediaParams.audio = options.sendAudio;\n }\n\n return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);\n};\n\n/**\n * generates audio and video using constraints (often called after getSupportedDevices)\n * @param {Object|Boolean} audio gum constraints\n * @param {Object|Boolean} video gum constraints\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Object} {streams}\n */\nMedia.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {\n const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};\n const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};\n const mediaConfig = {\n audio,\n // TODO: Remove temporary workaround once Firefox fixes low constraint issues\n // eslint-disable-next-line no-nested-ternary\n video: video\n ? isBrowser('firefox') && video.width && video.width.max === 320\n ? {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: 320,\n height: 180,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: video.width ? video.width : defaultWidth,\n height: video.height ? video.height : defaultHeight,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : false,\n fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing\n };\n\n return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {\n const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';\n\n LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);\n throw err;\n });\n};\n\n/**\n *\n * Toggle a specific stream\n * noop as of now, does nothing\n * @returns {null}\n */\nMedia.toggleStream = () => {};\n\n/**\n * Stop input stream\n * @param {LocalStream} stream A local stream\n * @returns {null}\n */\nMedia.stopStream = (stream: LocalStream) => {\n if (!stream) {\n return Promise.resolve();\n }\n\n return Promise.resolve().then(() => {\n try {\n stream.stop();\n } catch (e) {\n LoggerProxy.logger.error(\n `Media:index#stopStream --> Unable to stop the stream with ready state => ${stream.readyState}, error: ${e}`\n );\n }\n });\n};\n\n/**\n * generates streams for audio video and share\n * @param {object} mediaSetting parameter\n * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints\n * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints\n * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints\n * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints\n * @param {Object} audioVideo parameter\n * @param {Object} audioVideo.audio {deviceId: {String}}\n * @param {Object} audioVideo.video {deviceId: {String}}\n * @param {Object} sharePreferences parameter\n * @param {Object} sharePreferences.shareConstraints parameter\n * @param {Boolean} sharePreferences.highFrameRate parameter\n * @param {Object} config SDK Config\n * @returns {Array} [localStream, shareStream]\n */\nMedia.getUserMedia = (\n mediaSetting: {\n sendAudio: object;\n sendVideo: object;\n sendShare: object;\n isSharing: object;\n },\n audioVideo: {\n audio: object;\n video: object;\n },\n sharePreferences: {\n shareConstraints: object;\n highFrameRate: boolean;\n },\n config: object\n) =>\n Media.getLocalMedia(\n {\n sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,\n sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,\n },\n config\n ).then((localStream) =>\n Media.getLocalMedia(\n {\n sendShare: mediaSetting.sendShare,\n isSharing: mediaSetting.isSharing,\n sharePreferences,\n },\n config\n ).then((shareStream) => [localStream, shareStream])\n );\n\nexport default Media;\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["_internalMediaCore","require","_webCapabilities","_loggerProxy","_interopRequireDefault","_constants","_config","_config2","_browserDetection","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","_BrowserDetection","BrowserDetection","isBrowser","Media","getLocalMedia","options","config","sendAudio","sendVideo","sendShare","sharePreferences","isSharing","getMedia","getDisplayMedia","_promise","resolve","undefined","getDirection","forceSendRecv","receive","send","createMediaConnection","isMultistream","debugId","meetingId","_audioStream$outputSt","_videoStream$outputSt","_shareVideoStream$out","_shareAudioStream$out","rtcMetrics","mediaProperties","remoteQualityLevel","enableRtx","enableExtmap","turnServerInfo","bundlePolicy","iceCandidatesTimeout","disableAudioMainDtx","enableAudioTwcc","stopIceGatheringAfterFirstRelayCandidate","iceServers","urls","username","credential","password","disableAudioTwcc","BrowserInfo","isFirefox","doFullIce","MultistreamRoapMediaConnection","data","addMetrics","closeMetrics","sendMetricsInQueue","Error","mediaDirection","audioStream","videoStream","shareVideoStream","shareAudioStream","RoapMediaConnection","skipInactiveTransceivers","requireH264","sdpMunging","convertPort9to0","addContentSlides","bandwidthLimits","audio","StaticConfig","meetings","bandwidth","video","startBitrate","periodicKeyframes","disableExtmap","disableRtx","localTracks","outputStream","getTracks","screenShareVideo","screenShareAudio","direction","receiveAudio","receiveVideo","receiveShare","customResolution","screenResolution","customShareFrameRate","screenFrameRate","hasSharePreferences","hasCustomConstraints","shareConstraints","hasHighFrameRate","highFrameRate","_Config$meetings","Config","resolution","videoShareFrameRate","aspectRatio","cursor","MEDIA_TRACK_CONSTRAINT","CURSOR","AWLAYS","frameRate","height","idealHeight","width","idealWidth","mediaConfig","navigator","mediaDevices","then","stream","getVideoTracks","applyConstraints","getDisplayMediaParams","defaultWidth","ideal","max","maxWidth","defaultHeight","maxHeight","deviceId","facingMode","fake","process","env","NODE_ENV","getUserMedia","catch","err","logPath","LoggerProxy","logger","error","concat","constraint","toggleStream","stopStream","stop","readyState","mediaSetting","audioVideo","localStream","shareStream","_default","exports"],"sources":["index.ts"],"sourcesContent":["/*!\n * Copyright (c) 2015-2020 Cisco Systems, Inc. See LICENSE file.\n */\n/* globals navigator */\n\nimport {\n RoapMediaConnection,\n MultistreamRoapMediaConnection,\n type MultistreamConnectionConfig,\n} from '@webex/internal-media-core';\nimport {\n LocalStream,\n LocalCameraStream,\n LocalDisplayStream,\n LocalSystemAudioStream,\n LocalMicrophoneStream,\n} from '@webex/media-helpers';\nimport {RtcMetrics} from '@webex/internal-plugin-metrics';\nimport {BrowserInfo} from '@webex/web-capabilities';\nimport LoggerProxy from '../common/logs/logger-proxy';\nimport {MEDIA_TRACK_CONSTRAINT} from '../constants';\nimport Config from '../config';\nimport StaticConfig from '../common/config';\nimport BrowserDetection from '../common/browser-detection';\nimport {TurnServerInfo} from '../roap/types';\n\nconst {isBrowser} = BrowserDetection();\n\nexport type BundlePolicy = MultistreamConnectionConfig['bundlePolicy'];\n\n/**\n * MediaDirection\n * @typedef {Object} MediaDirection\n * @property {boolean} sendAudio\n * @property {boolean} receiveAudio\n * @property {boolean} sendVideo\n * @property {boolean} receiveVideo\n * @property {boolean} sendShare\n * @property {boolean} receiveShare\n */\n\n/**\n * SendOptions\n * @typedef {Object} SendOptions\n * @property sendAudio\n * @property sendVideo\n * @property sendShare\n * @property isSharing\n * @property {Object} sharePreferences\n */\n/**\n *\n * @public\n * @export\n * Mimic browser APIs as \"the ultimate browser\".\n * Handles the quirks of each browser.\n * Extends and enhances adapter.js, i.e., the \"media\" file from the web client.\n */\nconst Media: any = {};\n\n/**\n * make a browser call to get the media\n * @param {SendOptions} options\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise}\n */\nMedia.getLocalMedia = (options: any, config: object) => {\n const {sendAudio, sendVideo, sendShare, sharePreferences, isSharing} = options;\n\n if (sendAudio || sendVideo) {\n return Media.getMedia(sendAudio, sendVideo, config);\n }\n\n if (sendShare && !isSharing) {\n return Media.getDisplayMedia(\n {\n sendAudio: false,\n sendShare: true,\n sharePreferences,\n },\n config\n );\n }\n\n return Promise.resolve(undefined);\n};\n\nMedia.getDirection = (forceSendRecv: boolean, receive: boolean, send: boolean) => {\n if (!receive && !send) {\n return 'inactive';\n }\n\n if (forceSendRecv || (receive && send)) {\n return 'sendrecv';\n }\n\n if (receive) {\n return 'recvonly';\n }\n\n return 'sendonly';\n};\n\n/**\n * creates a webrtc media connection with provided tracks and mediaDirection configuration\n *\n * @param {boolean} isMultistream\n * @param {string} debugId string useful for debugging (will appear in media connection logs)\n * @param {string} meetingId id for the meeting using this connection\n * @param {Object} options\n * @param {Object} [options.mediaProperties] contains mediaDirection and local tracks:\n * audioTrack, videoTrack, shareVideoTrack, and shareAudioTrack\n * @param {string} [options.remoteQualityLevel] LOW|MEDIUM|HIGH applicable only to non-multistream connections\n * @param {boolean} [options.enableRtx] applicable only to non-multistream connections\n * @param {boolean} [options.enableExtmap] applicable only to non-multistream connections\n * @param {Object} [options.turnServerInfo]\n * @param {BundlePolicy} [options.bundlePolicy]\n * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}\n */\nMedia.createMediaConnection = (\n isMultistream: boolean,\n debugId: string,\n meetingId: string,\n options: {\n rtcMetrics?: RtcMetrics;\n mediaProperties: {\n mediaDirection?: {\n receiveAudio: boolean;\n receiveVideo: boolean;\n receiveShare: boolean;\n sendAudio: boolean;\n sendVideo: boolean;\n sendShare: boolean;\n };\n audioStream?: LocalMicrophoneStream;\n videoStream?: LocalCameraStream;\n shareVideoStream?: LocalDisplayStream;\n shareAudioStream?: LocalSystemAudioStream;\n };\n remoteQualityLevel?: 'LOW' | 'MEDIUM' | 'HIGH';\n enableRtx?: boolean;\n enableExtmap?: boolean;\n turnServerInfo?: TurnServerInfo;\n bundlePolicy?: BundlePolicy;\n iceCandidatesTimeout?: number;\n disableAudioMainDtx?: boolean;\n enableAudioTwcc?: boolean;\n stopIceGatheringAfterFirstRelayCandidate?: boolean;\n }\n) => {\n const {\n rtcMetrics,\n mediaProperties,\n remoteQualityLevel,\n enableRtx,\n enableExtmap,\n turnServerInfo,\n bundlePolicy,\n iceCandidatesTimeout,\n disableAudioMainDtx,\n enableAudioTwcc,\n stopIceGatheringAfterFirstRelayCandidate,\n } = options;\n\n const iceServers = [];\n\n // we might not have any TURN server if TURN discovery failed or wasn't done or we land on a video mesh node\n if (turnServerInfo?.urls.length > 0) {\n // TURN-TLS server\n iceServers.push({\n urls: turnServerInfo.urls,\n username: turnServerInfo.username || '',\n credential: turnServerInfo.password || '',\n });\n }\n\n if (isMultistream) {\n const config: MultistreamConnectionConfig = {\n iceServers,\n disableAudioTwcc: !enableAudioTwcc,\n };\n\n if (bundlePolicy) {\n config.bundlePolicy = bundlePolicy;\n }\n\n if (disableAudioMainDtx !== undefined) {\n config.disableAudioMainDtx = disableAudioMainDtx;\n }\n\n if (BrowserInfo.isFirefox()) {\n config.doFullIce = true;\n\n config.stopIceGatheringAfterFirstRelayCandidate = stopIceGatheringAfterFirstRelayCandidate;\n }\n\n return new MultistreamRoapMediaConnection(\n config,\n meetingId,\n /* the rtc metrics objects callbacks */\n (data) => rtcMetrics?.addMetrics(data),\n () => rtcMetrics?.closeMetrics(),\n () => rtcMetrics?.sendMetricsInQueue()\n );\n }\n\n if (!mediaProperties) {\n throw new Error('mediaProperties have to be provided for non-multistream media connections');\n }\n\n const {mediaDirection, audioStream, videoStream, shareVideoStream, shareAudioStream} =\n mediaProperties;\n\n return new RoapMediaConnection(\n {\n iceServers,\n iceCandidatesTimeout,\n skipInactiveTransceivers: false,\n requireH264: true,\n sdpMunging: {\n convertPort9to0: false,\n addContentSlides: true,\n bandwidthLimits: {\n audio: StaticConfig.meetings.bandwidth.audio,\n video: StaticConfig.meetings.bandwidth.video,\n },\n startBitrate: StaticConfig.meetings.bandwidth.startBitrate,\n periodicKeyframes: 20, // it's always been hardcoded in SDK so for now keeping it that way\n disableExtmap: !enableExtmap,\n disableRtx: !enableRtx, // see https://bugs.chromium.org/p/chromium/issues/detail?id=1020642 why we might want to remove RTX from SDP\n },\n },\n {\n // TODO: RoapMediaConnection is not ready to use stream classes yet, so we pass the raw MediaStreamTrack for now SPARK-460530\n localTracks: {\n audio: audioStream?.outputStream?.getTracks()[0],\n video: videoStream?.outputStream?.getTracks()[0],\n screenShareVideo: shareVideoStream?.outputStream?.getTracks()[0],\n screenShareAudio: shareAudioStream?.outputStream?.getTracks()[0], // TODO: add type for screenShareAudio in internal-media-core SPARK-446923\n } as unknown,\n direction: {\n audio: Media.getDirection(true, mediaDirection.receiveAudio, mediaDirection.sendAudio),\n video: Media.getDirection(true, mediaDirection.receiveVideo, mediaDirection.sendVideo),\n screenShareVideo: Media.getDirection(\n false,\n mediaDirection.receiveShare,\n mediaDirection.sendShare\n ),\n },\n remoteQualityLevel,\n },\n debugId\n );\n};\n\n/**\n * generates share streams\n * @param {Object} options parameter\n * @param {Boolean} options.sendAudio send audio from the display share\n * @param {Boolean} options.sendShare send video from the display share\n * @param {Object} options.sharePreferences\n * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}\n * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Promise.<MediaStream>}\n */\nMedia.getDisplayMedia = (\n options: {\n sendAudio: boolean;\n sendShare: boolean;\n sharePreferences: {\n shareConstraints: MediaTrackConstraints;\n highFrameRate: any;\n };\n },\n config: any = {}\n) => {\n // SDK screen share resolution settings from Webex.init\n const customResolution = config.screenResolution || {};\n // user defined screen share frame rate\n const customShareFrameRate = config.screenFrameRate || null;\n // user defined share preferences\n const hasSharePreferences = options.sharePreferences;\n const hasCustomConstraints = hasSharePreferences && hasSharePreferences.shareConstraints;\n const hasHighFrameRate = hasSharePreferences && hasSharePreferences.highFrameRate;\n const {screenResolution, resolution, videoShareFrameRate, screenFrameRate, aspectRatio} =\n Config.meetings;\n\n let shareConstraints: any = {\n cursor: MEDIA_TRACK_CONSTRAINT.CURSOR.AWLAYS,\n aspectRatio,\n };\n\n if (hasCustomConstraints) {\n shareConstraints = hasSharePreferences.shareConstraints;\n } else if (hasHighFrameRate) {\n shareConstraints = {\n ...shareConstraints,\n frameRate: videoShareFrameRate,\n height: resolution.idealHeight,\n width: resolution.idealWidth,\n ...config.resolution,\n };\n } else {\n shareConstraints = {\n ...shareConstraints,\n frameRate: customShareFrameRate || screenFrameRate,\n height: customResolution.idealHeight || screenResolution.idealHeight,\n width: customResolution.idealWidth || screenResolution.idealWidth,\n ...config.screenResolution,\n };\n }\n\n // chrome and webkit based browsers (edge, safari) automatically adjust everything\n // and we have noticed higher quality with those browser types\n // firefox specifically has some issues with resolution and frame rate decision making\n // so we are making it optional and configurable (with defaults) for firefox\n // to have higher quality, and for developers to control the values\n // eventually we may have to add the same functionality to chrome, OR conversely, get to with firefox\n\n if (isBrowser('firefox')) {\n const mediaConfig: any = {\n audio: options.sendAudio,\n video: options.sendShare,\n };\n\n return navigator.mediaDevices\n .getDisplayMedia({audio: options.sendAudio, video: mediaConfig})\n .then((stream) => {\n if (options.sendShare && stream.getVideoTracks().length > 0) {\n // Firefox has a bug with the spec where changing in the height and width only happens\n // after we get the inital tracks\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1321221\n stream.getVideoTracks()[0].applyConstraints(shareConstraints);\n }\n\n return stream;\n });\n }\n\n const getDisplayMediaParams: any = {video: options.sendShare ? shareConstraints : false};\n\n // safari doesn't support sending screen share audio\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n if (options.sendAudio && isBrowser('safari')) {\n getDisplayMediaParams.audio = options.sendAudio;\n }\n\n return navigator.mediaDevices.getDisplayMedia(getDisplayMediaParams);\n};\n\n/**\n * generates audio and video using constraints (often called after getSupportedDevices)\n * @param {Object|Boolean} audio gum constraints\n * @param {Object|Boolean} video gum constraints\n * @param {Object} config SDK Configuration for meetings plugin\n * @returns {Object} {streams}\n */\nMedia.getMedia = (audio: any | boolean, video: any | boolean, config: any) => {\n const defaultWidth = {ideal: config.resolution.idealWidth, max: config.resolution.maxWidth};\n const defaultHeight = {ideal: config.resolution.idealHeight, max: config.resolution.maxHeight};\n const mediaConfig = {\n audio,\n // TODO: Remove temporary workaround once Firefox fixes low constraint issues\n // eslint-disable-next-line no-nested-ternary\n video: video\n ? isBrowser('firefox') && video.width && video.width.max === 320\n ? {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: 320,\n height: 180,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : {\n deviceId: video.deviceId ? video.deviceId : undefined,\n width: video.width ? video.width : defaultWidth,\n height: video.height ? video.height : defaultHeight,\n frameRate: video.frameRate ? video.frameRate : undefined,\n facingMode: video.facingMode ? video.facingMode : undefined,\n }\n : false,\n fake: process.env.NODE_ENV === 'test', // Special case to get fake media for Firefox browser for testing\n };\n\n return navigator.mediaDevices.getUserMedia(mediaConfig).catch((err) => {\n const logPath = 'Media:index#getMedia --> navigator.mediaDevices.getUserMedia';\n\n LoggerProxy.logger.error(`${logPath} failed - ${err} (${err.constraint})`);\n throw err;\n });\n};\n\n/**\n *\n * Toggle a specific stream\n * noop as of now, does nothing\n * @returns {null}\n */\nMedia.toggleStream = () => {};\n\n/**\n * Stop input stream\n * @param {LocalStream} stream A local stream\n * @returns {null}\n */\nMedia.stopStream = (stream: LocalStream) => {\n if (!stream) {\n return Promise.resolve();\n }\n\n return Promise.resolve().then(() => {\n try {\n stream.stop();\n } catch (e) {\n LoggerProxy.logger.error(\n `Media:index#stopStream --> Unable to stop the stream with ready state => ${stream.readyState}, error: ${e}`\n );\n }\n });\n};\n\n/**\n * generates streams for audio video and share\n * @param {object} mediaSetting parameter\n * @param {Object} mediaSetting.sendAudio sendAudio: {Boolean} sendAudio constraints\n * @param {Object} mediaSetting.sendVideo sendVideo: {Boolean} sendVideo constraints\n * @param {Object} mediaSetting.sendShare sendShare: {Boolean} sendShare constraints\n * @param {Object} mediaSetting.isSharing isSharing: {Boolean} isSharing constraints\n * @param {Object} audioVideo parameter\n * @param {Object} audioVideo.audio {deviceId: {String}}\n * @param {Object} audioVideo.video {deviceId: {String}}\n * @param {Object} sharePreferences parameter\n * @param {Object} sharePreferences.shareConstraints parameter\n * @param {Boolean} sharePreferences.highFrameRate parameter\n * @param {Object} config SDK Config\n * @returns {Array} [localStream, shareStream]\n */\nMedia.getUserMedia = (\n mediaSetting: {\n sendAudio: object;\n sendVideo: object;\n sendShare: object;\n isSharing: object;\n },\n audioVideo: {\n audio: object;\n video: object;\n },\n sharePreferences: {\n shareConstraints: object;\n highFrameRate: boolean;\n },\n config: object\n) =>\n Media.getLocalMedia(\n {\n sendAudio: mediaSetting.sendAudio ? audioVideo.audio || mediaSetting.sendAudio : false,\n sendVideo: mediaSetting.sendVideo ? audioVideo.video || mediaSetting.sendVideo : false,\n },\n config\n ).then((localStream) =>\n Media.getLocalMedia(\n {\n sendShare: mediaSetting.sendShare,\n isSharing: mediaSetting.isSharing,\n sharePreferences,\n },\n config\n ).then((shareStream) => [localStream, shareStream])\n );\n\nexport default Media;\n"],"mappings":"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"}
|
package/dist/media/properties.js
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _Array$from = require("@babel/runtime-corejs2/core-js/array/from");
|
4
|
+
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
|
5
|
+
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
|
6
|
+
var _Array$isArray = require("@babel/runtime-corejs2/core-js/array/is-array");
|
3
7
|
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
|
4
8
|
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
|
5
9
|
_Object$defineProperty(exports, "__esModule", {
|
@@ -13,10 +17,13 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs2/
|
|
13
17
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
|
14
18
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
|
15
19
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/defineProperty"));
|
20
|
+
var _tsSdp = require("@webex/ts-sdp");
|
16
21
|
var _constants = require("../constants");
|
17
22
|
var _loggerProxy = _interopRequireDefault(require("../common/logs/logger-proxy"));
|
18
23
|
var _MediaConnectionAwaiter = _interopRequireDefault(require("./MediaConnectionAwaiter"));
|
19
|
-
|
24
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof _Symbol !== "undefined" && o[_Symbol$iterator] || o["@@iterator"]; if (!it) { if (_Array$isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
25
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return _Array$from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
26
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; } /* eslint-disable class-methods-use-this */
|
20
27
|
/**
|
21
28
|
* @class MediaProperties
|
22
29
|
*/
|
@@ -229,6 +236,83 @@ var MediaProperties = exports.default = /*#__PURE__*/function () {
|
|
229
236
|
};
|
230
237
|
}
|
231
238
|
|
239
|
+
/**
|
240
|
+
* Checks if the given IP address is IPv6
|
241
|
+
* @param {string} ip address to check
|
242
|
+
* @returns {boolean} true if the address is IPv6, false otherwise
|
243
|
+
*/
|
244
|
+
}, {
|
245
|
+
key: "isIPv6",
|
246
|
+
value: function isIPv6(ip) {
|
247
|
+
return ip.includes(':');
|
248
|
+
}
|
249
|
+
|
250
|
+
/** Finds out if we connected using IPv4 or IPv6
|
251
|
+
* @param {RTCPeerConnection} webrtcMediaConnection
|
252
|
+
* @param {Array<any>} allStatsReports array of RTC stats reports
|
253
|
+
* @returns {string} IPVersion
|
254
|
+
*/
|
255
|
+
}, {
|
256
|
+
key: "getConnectionIpVersion",
|
257
|
+
value: function getConnectionIpVersion(webrtcMediaConnection, allStatsReports) {
|
258
|
+
var transports = allStatsReports.filter(function (report) {
|
259
|
+
return report.type === 'transport';
|
260
|
+
});
|
261
|
+
var selectedCandidatePair;
|
262
|
+
if (transports.length > 0 && transports[0].selectedCandidatePairId) {
|
263
|
+
selectedCandidatePair = allStatsReports.find(function (report) {
|
264
|
+
return report.type === 'candidate-pair' && report.id === transports[0].selectedCandidatePairId;
|
265
|
+
});
|
266
|
+
} else {
|
267
|
+
// Firefox doesn't have selectedCandidatePairId, but has selected property on the candidate pair
|
268
|
+
selectedCandidatePair = allStatsReports.find(function (report) {
|
269
|
+
return report.type === 'candidate-pair' && report.selected;
|
270
|
+
});
|
271
|
+
}
|
272
|
+
if (selectedCandidatePair) {
|
273
|
+
var localCandidate = allStatsReports.find(function (report) {
|
274
|
+
return report.type === 'local-candidate' && report.id === selectedCandidatePair.localCandidateId;
|
275
|
+
});
|
276
|
+
if (localCandidate) {
|
277
|
+
if (localCandidate.address) {
|
278
|
+
return this.isIPv6(localCandidate.address) ? 'IPv6' : 'IPv4';
|
279
|
+
}
|
280
|
+
try {
|
281
|
+
// safari doesn't have address field on the candidate, so we have to use the port to look up the candidate in the SDP
|
282
|
+
var localSdp = webrtcMediaConnection.localDescription.sdp;
|
283
|
+
var parsedSdp = (0, _tsSdp.parse)(localSdp);
|
284
|
+
var _iterator = _createForOfIteratorHelper(parsedSdp.avMedia),
|
285
|
+
_step;
|
286
|
+
try {
|
287
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
288
|
+
var mediaLine = _step.value;
|
289
|
+
var matchingCandidate = mediaLine.iceInfo.candidates.find(function (candidate) {
|
290
|
+
return candidate.port === localCandidate.port;
|
291
|
+
});
|
292
|
+
if (matchingCandidate) {
|
293
|
+
return this.isIPv6(matchingCandidate.connectionAddress) ? 'IPv6' : 'IPv4';
|
294
|
+
}
|
295
|
+
}
|
296
|
+
} catch (err) {
|
297
|
+
_iterator.e(err);
|
298
|
+
} finally {
|
299
|
+
_iterator.f();
|
300
|
+
}
|
301
|
+
_loggerProxy.default.logger.warn("Media:properties#getConnectionIpVersion --> failed to find local candidate in the SDP for port ".concat(localCandidate.port));
|
302
|
+
} catch (error) {
|
303
|
+
_loggerProxy.default.logger.warn("Media:properties#getConnectionIpVersion --> error while trying to find candidate in local SDP:", error);
|
304
|
+
return undefined;
|
305
|
+
}
|
306
|
+
} else {
|
307
|
+
_loggerProxy.default.logger.warn("Media:properties#getConnectionIpVersion --> failed to find local candidate \"".concat(selectedCandidatePair.localCandidateId, "\" in getStats() results"));
|
308
|
+
}
|
309
|
+
} else {
|
310
|
+
var _transports$;
|
311
|
+
_loggerProxy.default.logger.warn("Media:properties#getConnectionIpVersion --> failed to find selected candidate pair in getStats() results (transports.length=".concat(transports.length, ", selectedCandidatePairId=").concat((_transports$ = transports[0]) === null || _transports$ === void 0 ? void 0 : _transports$.selectedCandidatePairId, ")"));
|
312
|
+
}
|
313
|
+
return undefined;
|
314
|
+
}
|
315
|
+
|
232
316
|
/**
|
233
317
|
* Returns the type of a connection that has been established
|
234
318
|
* It should be 'UDP' | 'TCP' | 'TURN-TLS' | 'TURN-TCP' | 'TURN-UDP' | 'unknown'
|
@@ -292,7 +376,7 @@ var MediaProperties = exports.default = /*#__PURE__*/function () {
|
|
292
376
|
value: (function () {
|
293
377
|
var _getCurrentConnectionInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
|
294
378
|
var _this = this;
|
295
|
-
var allStatsReports, connectionType, _this$getTransportInf, selectedCandidatePairChanges, numTransports;
|
379
|
+
var _this$webrtcMediaConn, _this$webrtcMediaConn2, allStatsReports, connectionType, rtcPeerconnection, ipVersion, _this$getTransportInf, selectedCandidatePairChanges, numTransports;
|
296
380
|
return _regenerator.default.wrap(function _callee$(_context) {
|
297
381
|
while (1) switch (_context.prev = _context.next) {
|
298
382
|
case 0:
|
@@ -316,26 +400,30 @@ var MediaProperties = exports.default = /*#__PURE__*/function () {
|
|
316
400
|
});
|
317
401
|
case 4:
|
318
402
|
connectionType = this.getConnectionType(allStatsReports);
|
403
|
+
rtcPeerconnection = ((_this$webrtcMediaConn = this.webrtcMediaConnection.multistreamConnection) === null || _this$webrtcMediaConn === void 0 ? void 0 : _this$webrtcMediaConn.pc.pc) || ((_this$webrtcMediaConn2 = this.webrtcMediaConnection.mediaConnection) === null || _this$webrtcMediaConn2 === void 0 ? void 0 : _this$webrtcMediaConn2.pc);
|
404
|
+
ipVersion = this.getConnectionIpVersion(rtcPeerconnection, allStatsReports);
|
319
405
|
_this$getTransportInf = this.getTransportInfo(allStatsReports), selectedCandidatePairChanges = _this$getTransportInf.selectedCandidatePairChanges, numTransports = _this$getTransportInf.numTransports;
|
320
406
|
return _context.abrupt("return", {
|
321
407
|
connectionType: connectionType,
|
408
|
+
ipVersion: ipVersion,
|
322
409
|
selectedCandidatePairChanges: selectedCandidatePairChanges,
|
323
410
|
numTransports: numTransports
|
324
411
|
});
|
325
|
-
case
|
326
|
-
_context.prev =
|
412
|
+
case 11:
|
413
|
+
_context.prev = 11;
|
327
414
|
_context.t0 = _context["catch"](0);
|
328
415
|
_loggerProxy.default.logger.warn("Media:properties#getCurrentConnectionInfo --> getStats() failed: ".concat(_context.t0));
|
329
416
|
return _context.abrupt("return", {
|
330
417
|
connectionType: 'unknown',
|
418
|
+
ipVersion: undefined,
|
331
419
|
selectedCandidatePairChanges: -1,
|
332
420
|
numTransports: 0
|
333
421
|
});
|
334
|
-
case
|
422
|
+
case 15:
|
335
423
|
case "end":
|
336
424
|
return _context.stop();
|
337
425
|
}
|
338
|
-
}, _callee, this, [[0,
|
426
|
+
}, _callee, this, [[0, 11]]);
|
339
427
|
}));
|
340
428
|
function getCurrentConnectionInfo() {
|
341
429
|
return _getCurrentConnectionInfo.apply(this, arguments);
|