@abrar71/lib-jitsi-meet 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +26 -0
- package/dist/esm/JitsiConference.js +3692 -0
- package/dist/esm/JitsiConference.js.map +1 -0
- package/dist/esm/JitsiConferenceErrors.js +126 -0
- package/dist/esm/JitsiConferenceErrors.js.map +1 -0
- package/dist/esm/JitsiConferenceEventManager.js +424 -0
- package/dist/esm/JitsiConferenceEventManager.js.map +1 -0
- package/dist/esm/JitsiConferenceEvents.js +431 -0
- package/dist/esm/JitsiConferenceEvents.js.map +1 -0
- package/dist/esm/JitsiConnection.js +187 -0
- package/dist/esm/JitsiConnection.js.map +1 -0
- package/dist/esm/JitsiConnectionErrors.js +52 -0
- package/dist/esm/JitsiConnectionErrors.js.map +1 -0
- package/dist/esm/JitsiConnectionEvents.js +57 -0
- package/dist/esm/JitsiConnectionEvents.js.map +1 -0
- package/dist/esm/JitsiMediaDevices.js +221 -0
- package/dist/esm/JitsiMediaDevices.js.map +1 -0
- package/dist/esm/JitsiMediaDevicesEvents.js +29 -0
- package/dist/esm/JitsiMediaDevicesEvents.js.map +1 -0
- package/dist/esm/JitsiMeetJS.js +499 -0
- package/dist/esm/JitsiMeetJS.js.map +1 -0
- package/dist/esm/JitsiParticipant.js +323 -0
- package/dist/esm/JitsiParticipant.js.map +1 -0
- package/dist/esm/JitsiTrackError.js +122 -0
- package/dist/esm/JitsiTrackError.js.map +1 -0
- package/dist/esm/JitsiTrackErrors.js +91 -0
- package/dist/esm/JitsiTrackErrors.js.map +1 -0
- package/dist/esm/JitsiTrackEvents.js +60 -0
- package/dist/esm/JitsiTrackEvents.js.map +1 -0
- package/dist/esm/JitsiTranscriptionStatus.js +15 -0
- package/dist/esm/JitsiTranscriptionStatus.js.map +1 -0
- package/dist/esm/modules/RTC/BridgeChannel.js +398 -0
- package/dist/esm/modules/RTC/BridgeChannel.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiLocalTrack.js +896 -0
- package/dist/esm/modules/RTC/JitsiLocalTrack.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiRemoteTrack.js +427 -0
- package/dist/esm/modules/RTC/JitsiRemoteTrack.js.map +1 -0
- package/dist/esm/modules/RTC/JitsiTrack.js +453 -0
- package/dist/esm/modules/RTC/JitsiTrack.js.map +1 -0
- package/dist/esm/modules/RTC/MockClasses.js +388 -0
- package/dist/esm/modules/RTC/MockClasses.js.map +1 -0
- package/dist/esm/modules/RTC/RTC.js +658 -0
- package/dist/esm/modules/RTC/RTC.js.map +1 -0
- package/dist/esm/modules/RTC/RTCUtils.js +762 -0
- package/dist/esm/modules/RTC/RTCUtils.js.map +1 -0
- package/dist/esm/modules/RTC/ScreenObtainer.js +380 -0
- package/dist/esm/modules/RTC/ScreenObtainer.js.map +1 -0
- package/dist/esm/modules/RTC/TPCUtils.js +803 -0
- package/dist/esm/modules/RTC/TPCUtils.js.map +1 -0
- package/dist/esm/modules/RTC/TraceablePeerConnection.js +2223 -0
- package/dist/esm/modules/RTC/TraceablePeerConnection.js.map +1 -0
- package/dist/esm/modules/RTCStats/DefaulLogStorage.js +35 -0
- package/dist/esm/modules/RTCStats/DefaulLogStorage.js.map +1 -0
- package/dist/esm/modules/RTCStats/RTCStats.js +219 -0
- package/dist/esm/modules/RTCStats/RTCStats.js.map +1 -0
- package/dist/esm/modules/RTCStats/RTCStatsEvents.js +92 -0
- package/dist/esm/modules/RTCStats/RTCStatsEvents.js.map +1 -0
- package/dist/esm/modules/RTCStats/interfaces.js +2 -0
- package/dist/esm/modules/RTCStats/interfaces.js.map +1 -0
- package/dist/esm/modules/browser/BrowserCapabilities.js +345 -0
- package/dist/esm/modules/browser/BrowserCapabilities.js.map +1 -0
- package/dist/esm/modules/browser/index.js +3 -0
- package/dist/esm/modules/browser/index.js.map +1 -0
- package/dist/esm/modules/connectivity/ConnectionQuality.js +389 -0
- package/dist/esm/modules/connectivity/ConnectionQuality.js.map +1 -0
- package/dist/esm/modules/connectivity/IceFailedHandling.js +84 -0
- package/dist/esm/modules/connectivity/IceFailedHandling.js.map +1 -0
- package/dist/esm/modules/connectivity/NetworkInfo.js +49 -0
- package/dist/esm/modules/connectivity/NetworkInfo.js.map +1 -0
- package/dist/esm/modules/connectivity/TrackStreamingStatus.js +453 -0
- package/dist/esm/modules/connectivity/TrackStreamingStatus.js.map +1 -0
- package/dist/esm/modules/detection/ActiveDeviceDetector.js +79 -0
- package/dist/esm/modules/detection/ActiveDeviceDetector.js.map +1 -0
- package/dist/esm/modules/detection/DetectionEvents.js +58 -0
- package/dist/esm/modules/detection/DetectionEvents.js.map +1 -0
- package/dist/esm/modules/detection/NoAudioSignalDetection.js +127 -0
- package/dist/esm/modules/detection/NoAudioSignalDetection.js.map +1 -0
- package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js +47 -0
- package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js.map +1 -0
- package/dist/esm/modules/detection/TrackVADEmitter.js +190 -0
- package/dist/esm/modules/detection/TrackVADEmitter.js.map +1 -0
- package/dist/esm/modules/detection/VADAudioAnalyser.js +199 -0
- package/dist/esm/modules/detection/VADAudioAnalyser.js.map +1 -0
- package/dist/esm/modules/detection/VADNoiseDetection.js +168 -0
- package/dist/esm/modules/detection/VADNoiseDetection.js.map +1 -0
- package/dist/esm/modules/detection/VADReportingService.js +203 -0
- package/dist/esm/modules/detection/VADReportingService.js.map +1 -0
- package/dist/esm/modules/detection/VADTalkMutedDetection.js +131 -0
- package/dist/esm/modules/detection/VADTalkMutedDetection.js.map +1 -0
- package/dist/esm/modules/e2ee/Context.js +274 -0
- package/dist/esm/modules/e2ee/Context.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEContext.js +158 -0
- package/dist/esm/modules/e2ee/E2EEContext.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEErrors.js +10 -0
- package/dist/esm/modules/e2ee/E2EEErrors.js.map +1 -0
- package/dist/esm/modules/e2ee/E2EEncryption.js +87 -0
- package/dist/esm/modules/e2ee/E2EEncryption.js.map +1 -0
- package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js +24 -0
- package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/KeyHandler.js +137 -0
- package/dist/esm/modules/e2ee/KeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/ManagedKeyHandler.js +182 -0
- package/dist/esm/modules/e2ee/ManagedKeyHandler.js.map +1 -0
- package/dist/esm/modules/e2ee/OlmAdapter.js +860 -0
- package/dist/esm/modules/e2ee/OlmAdapter.js.map +1 -0
- package/dist/esm/modules/e2ee/SAS.js +128 -0
- package/dist/esm/modules/e2ee/SAS.js.map +1 -0
- package/dist/esm/modules/e2ee/Worker.js +102 -0
- package/dist/esm/modules/e2ee/Worker.js.map +1 -0
- package/dist/esm/modules/e2ee/crypto-utils.js +53 -0
- package/dist/esm/modules/e2ee/crypto-utils.js.map +1 -0
- package/dist/esm/modules/e2ee/utils.js +15 -0
- package/dist/esm/modules/e2ee/utils.js.map +1 -0
- package/dist/esm/modules/e2eping/e2eping.js +314 -0
- package/dist/esm/modules/e2eping/e2eping.js.map +1 -0
- package/dist/esm/modules/flags/FeatureFlags.js +36 -0
- package/dist/esm/modules/flags/FeatureFlags.js.map +1 -0
- package/dist/esm/modules/litemode/LiteModeContext.js +50 -0
- package/dist/esm/modules/litemode/LiteModeContext.js.map +1 -0
- package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js +98 -0
- package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js.map +1 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js +348 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js.map +1 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionService.js +279 -0
- package/dist/esm/modules/proxyconnection/ProxyConnectionService.js.map +1 -0
- package/dist/esm/modules/proxyconnection/constants.js +14 -0
- package/dist/esm/modules/proxyconnection/constants.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/CodecSelection.js +222 -0
- package/dist/esm/modules/qualitycontrol/CodecSelection.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/MockClasses.js +120 -0
- package/dist/esm/modules/qualitycontrol/MockClasses.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/QualityController.js +366 -0
- package/dist/esm/modules/qualitycontrol/QualityController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js +73 -0
- package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js +216 -0
- package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js.map +1 -0
- package/dist/esm/modules/qualitycontrol/SendVideoController.js +133 -0
- package/dist/esm/modules/qualitycontrol/SendVideoController.js.map +1 -0
- package/dist/esm/modules/recording/JibriSession.js +279 -0
- package/dist/esm/modules/recording/JibriSession.js.map +1 -0
- package/dist/esm/modules/recording/RecordingManager.js +257 -0
- package/dist/esm/modules/recording/RecordingManager.js.map +1 -0
- package/dist/esm/modules/recording/recordingConstants.js +21 -0
- package/dist/esm/modules/recording/recordingConstants.js.map +1 -0
- package/dist/esm/modules/recording/recordingXMLUtils.js +69 -0
- package/dist/esm/modules/recording/recordingXMLUtils.js.map +1 -0
- package/dist/esm/modules/red/red.js +108 -0
- package/dist/esm/modules/red/red.js.map +1 -0
- package/dist/esm/modules/sdp/LocalSdpMunger.js +143 -0
- package/dist/esm/modules/sdp/LocalSdpMunger.js.map +1 -0
- package/dist/esm/modules/sdp/RtxModifier.js +179 -0
- package/dist/esm/modules/sdp/RtxModifier.js.map +1 -0
- package/dist/esm/modules/sdp/SDP.js +848 -0
- package/dist/esm/modules/sdp/SDP.js.map +1 -0
- package/dist/esm/modules/sdp/SDPDiffer.js +96 -0
- package/dist/esm/modules/sdp/SDPDiffer.js.map +1 -0
- package/dist/esm/modules/sdp/SDPUtil.js +798 -0
- package/dist/esm/modules/sdp/SDPUtil.js.map +1 -0
- package/dist/esm/modules/sdp/SampleSdpStrings.js +589 -0
- package/dist/esm/modules/sdp/SampleSdpStrings.js.map +1 -0
- package/dist/esm/modules/sdp/SdpSimulcast.js +196 -0
- package/dist/esm/modules/sdp/SdpSimulcast.js.map +1 -0
- package/dist/esm/modules/sdp/SdpTransformUtil.js +337 -0
- package/dist/esm/modules/sdp/SdpTransformUtil.js.map +1 -0
- package/dist/esm/modules/sdp/constants.js +2 -0
- package/dist/esm/modules/sdp/constants.js.map +1 -0
- package/dist/esm/modules/settings/Settings.js +95 -0
- package/dist/esm/modules/settings/Settings.js.map +1 -0
- package/dist/esm/modules/statistics/AnalyticsAdapter.js +277 -0
- package/dist/esm/modules/statistics/AnalyticsAdapter.js.map +1 -0
- package/dist/esm/modules/statistics/AvgRTPStatsReporter.js +817 -0
- package/dist/esm/modules/statistics/AvgRTPStatsReporter.js.map +1 -0
- package/dist/esm/modules/statistics/LocalStatsCollector.js +149 -0
- package/dist/esm/modules/statistics/LocalStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/PreCallTest.js +15 -0
- package/dist/esm/modules/statistics/PreCallTest.js.map +1 -0
- package/dist/esm/modules/statistics/RTPStatsCollector.js +601 -0
- package/dist/esm/modules/statistics/RTPStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/SpeakerStats.js +163 -0
- package/dist/esm/modules/statistics/SpeakerStats.js.map +1 -0
- package/dist/esm/modules/statistics/SpeakerStatsCollector.js +161 -0
- package/dist/esm/modules/statistics/SpeakerStatsCollector.js.map +1 -0
- package/dist/esm/modules/statistics/constants.js +7 -0
- package/dist/esm/modules/statistics/constants.js.map +1 -0
- package/dist/esm/modules/statistics/statistics.js +362 -0
- package/dist/esm/modules/statistics/statistics.js.map +1 -0
- package/dist/esm/modules/util/AsyncQueue.js +102 -0
- package/dist/esm/modules/util/AsyncQueue.js.map +1 -0
- package/dist/esm/modules/util/Deferred.js +41 -0
- package/dist/esm/modules/util/Deferred.js.map +1 -0
- package/dist/esm/modules/util/EventEmitter.js +17 -0
- package/dist/esm/modules/util/EventEmitter.js.map +1 -0
- package/dist/esm/modules/util/EventEmitterForwarder.js +52 -0
- package/dist/esm/modules/util/EventEmitterForwarder.js.map +1 -0
- package/dist/esm/modules/util/Listenable.js +106 -0
- package/dist/esm/modules/util/Listenable.js.map +1 -0
- package/dist/esm/modules/util/MathUtil.js +103 -0
- package/dist/esm/modules/util/MathUtil.js.map +1 -0
- package/dist/esm/modules/util/RandomUtil.js +66 -0
- package/dist/esm/modules/util/RandomUtil.js.map +1 -0
- package/dist/esm/modules/util/Retry.js +15 -0
- package/dist/esm/modules/util/Retry.js.map +1 -0
- package/dist/esm/modules/util/ScriptUtil.js +58 -0
- package/dist/esm/modules/util/ScriptUtil.js.map +1 -0
- package/dist/esm/modules/util/StringUtils.js +21 -0
- package/dist/esm/modules/util/StringUtils.js.map +1 -0
- package/dist/esm/modules/util/TestUtils.js +14 -0
- package/dist/esm/modules/util/TestUtils.js.map +1 -0
- package/dist/esm/modules/util/UsernameGenerator.js +436 -0
- package/dist/esm/modules/util/UsernameGenerator.js.map +1 -0
- package/dist/esm/modules/util/XMLUtils.js +135 -0
- package/dist/esm/modules/util/XMLUtils.js.map +1 -0
- package/dist/esm/modules/version/ComponentsVersions.js +52 -0
- package/dist/esm/modules/version/ComponentsVersions.js.map +1 -0
- package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js +137 -0
- package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js.map +1 -0
- package/dist/esm/modules/videosipgw/VideoSIPGW.js +102 -0
- package/dist/esm/modules/videosipgw/VideoSIPGW.js.map +1 -0
- package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js +65 -0
- package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js.map +1 -0
- package/dist/esm/modules/watchRTC/WatchRTC.js +69 -0
- package/dist/esm/modules/watchRTC/WatchRTC.js.map +1 -0
- package/dist/esm/modules/watchRTC/functions.js +31 -0
- package/dist/esm/modules/watchRTC/functions.js.map +1 -0
- package/dist/esm/modules/watchRTC/interfaces.js +2 -0
- package/dist/esm/modules/watchRTC/interfaces.js.map +1 -0
- package/dist/esm/modules/webaudio/AudioMixer.js +74 -0
- package/dist/esm/modules/webaudio/AudioMixer.js.map +1 -0
- package/dist/esm/modules/webaudio/WebAudioUtils.js +13 -0
- package/dist/esm/modules/webaudio/WebAudioUtils.js.map +1 -0
- package/dist/esm/modules/xmpp/AVModeration.js +156 -0
- package/dist/esm/modules/xmpp/AVModeration.js.map +1 -0
- package/dist/esm/modules/xmpp/BreakoutRooms.js +230 -0
- package/dist/esm/modules/xmpp/BreakoutRooms.js.map +1 -0
- package/dist/esm/modules/xmpp/Caps.js +223 -0
- package/dist/esm/modules/xmpp/Caps.js.map +1 -0
- package/dist/esm/modules/xmpp/ChatRoom.js +1877 -0
- package/dist/esm/modules/xmpp/ChatRoom.js.map +1 -0
- package/dist/esm/modules/xmpp/ConnectionPlugin.js +37 -0
- package/dist/esm/modules/xmpp/ConnectionPlugin.js.map +1 -0
- package/dist/esm/modules/xmpp/FileSharing.js +95 -0
- package/dist/esm/modules/xmpp/FileSharing.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleHelperFunctions.js +168 -0
- package/dist/esm/modules/xmpp/JingleHelperFunctions.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSession.js +166 -0
- package/dist/esm/modules/xmpp/JingleSession.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSessionPC.js +1969 -0
- package/dist/esm/modules/xmpp/JingleSessionPC.js.map +1 -0
- package/dist/esm/modules/xmpp/JingleSessionState.js +23 -0
- package/dist/esm/modules/xmpp/JingleSessionState.js.map +1 -0
- package/dist/esm/modules/xmpp/Lobby.js +384 -0
- package/dist/esm/modules/xmpp/Lobby.js.map +1 -0
- package/dist/esm/modules/xmpp/MediaSessionEvents.js +12 -0
- package/dist/esm/modules/xmpp/MediaSessionEvents.js.map +1 -0
- package/dist/esm/modules/xmpp/MockClasses.js +77 -0
- package/dist/esm/modules/xmpp/MockClasses.js.map +1 -0
- package/dist/esm/modules/xmpp/Polls.js +87 -0
- package/dist/esm/modules/xmpp/Polls.js.map +1 -0
- package/dist/esm/modules/xmpp/ResumeTask.js +149 -0
- package/dist/esm/modules/xmpp/ResumeTask.js.map +1 -0
- package/dist/esm/modules/xmpp/RoomMetadata.js +96 -0
- package/dist/esm/modules/xmpp/RoomMetadata.js.map +1 -0
- package/dist/esm/modules/xmpp/SignalingLayerImpl.js +313 -0
- package/dist/esm/modules/xmpp/SignalingLayerImpl.js.map +1 -0
- package/dist/esm/modules/xmpp/StropheErrorHandler.js +53 -0
- package/dist/esm/modules/xmpp/StropheErrorHandler.js.map +1 -0
- package/dist/esm/modules/xmpp/StropheLastSuccess.js +52 -0
- package/dist/esm/modules/xmpp/StropheLastSuccess.js.map +1 -0
- package/dist/esm/modules/xmpp/XmppConnection.js +579 -0
- package/dist/esm/modules/xmpp/XmppConnection.js.map +1 -0
- package/dist/esm/modules/xmpp/moderator.js +524 -0
- package/dist/esm/modules/xmpp/moderator.js.map +1 -0
- package/dist/esm/modules/xmpp/sha1.js +165 -0
- package/dist/esm/modules/xmpp/sha1.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.disco.js +222 -0
- package/dist/esm/modules/xmpp/strophe.disco.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.emuc.js +206 -0
- package/dist/esm/modules/xmpp/strophe.emuc.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.jingle.js +404 -0
- package/dist/esm/modules/xmpp/strophe.jingle.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.logger.js +44 -0
- package/dist/esm/modules/xmpp/strophe.logger.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.ping.js +170 -0
- package/dist/esm/modules/xmpp/strophe.ping.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.rayo.js +117 -0
- package/dist/esm/modules/xmpp/strophe.rayo.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.stream-management.js +365 -0
- package/dist/esm/modules/xmpp/strophe.stream-management.js.map +1 -0
- package/dist/esm/modules/xmpp/strophe.util.js +116 -0
- package/dist/esm/modules/xmpp/strophe.util.js.map +1 -0
- package/dist/esm/modules/xmpp/xmpp.js +973 -0
- package/dist/esm/modules/xmpp/xmpp.js.map +1 -0
- package/dist/esm/service/RTC/BridgeVideoType.js +24 -0
- package/dist/esm/service/RTC/BridgeVideoType.js.map +1 -0
- package/dist/esm/service/RTC/CameraFacingMode.js +21 -0
- package/dist/esm/service/RTC/CameraFacingMode.js.map +1 -0
- package/dist/esm/service/RTC/CodecMimeType.js +36 -0
- package/dist/esm/service/RTC/CodecMimeType.js.map +1 -0
- package/dist/esm/service/RTC/MediaDirection.js +23 -0
- package/dist/esm/service/RTC/MediaDirection.js.map +1 -0
- package/dist/esm/service/RTC/MediaType.js +20 -0
- package/dist/esm/service/RTC/MediaType.js.map +1 -0
- package/dist/esm/service/RTC/RTCEvents.js +111 -0
- package/dist/esm/service/RTC/RTCEvents.js.map +1 -0
- package/dist/esm/service/RTC/ReceiverAudioSubscription.js +27 -0
- package/dist/esm/service/RTC/ReceiverAudioSubscription.js.map +1 -0
- package/dist/esm/service/RTC/Resolutions.js +56 -0
- package/dist/esm/service/RTC/Resolutions.js.map +1 -0
- package/dist/esm/service/RTC/SignalingEvents.js +42 -0
- package/dist/esm/service/RTC/SignalingEvents.js.map +1 -0
- package/dist/esm/service/RTC/SignalingLayer.js +153 -0
- package/dist/esm/service/RTC/SignalingLayer.js.map +1 -0
- package/dist/esm/service/RTC/StandardVideoQualitySettings.js +180 -0
- package/dist/esm/service/RTC/StandardVideoQualitySettings.js.map +1 -0
- package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js +36 -0
- package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js.map +1 -0
- package/dist/esm/service/RTC/VideoType.js +19 -0
- package/dist/esm/service/RTC/VideoType.js.map +1 -0
- package/dist/esm/service/authentication/AuthenticationEvents.js +13 -0
- package/dist/esm/service/authentication/AuthenticationEvents.js.map +1 -0
- package/dist/esm/service/connectivity/ConnectionQualityEvents.js +13 -0
- package/dist/esm/service/connectivity/ConnectionQualityEvents.js.map +1 -0
- package/dist/esm/service/connectivity/Constants.js +3 -0
- package/dist/esm/service/connectivity/Constants.js.map +1 -0
- package/dist/esm/service/e2eping/E2ePingEvents.js +8 -0
- package/dist/esm/service/e2eping/E2ePingEvents.js.map +1 -0
- package/dist/esm/service/statistics/AnalyticsEvents.js +521 -0
- package/dist/esm/service/statistics/AnalyticsEvents.js.map +1 -0
- package/dist/esm/service/statistics/Events.js +36 -0
- package/dist/esm/service/statistics/Events.js.map +1 -0
- package/dist/esm/service/statistics/constants.js +2 -0
- package/dist/esm/service/statistics/constants.js.map +1 -0
- package/dist/esm/service/xmpp/XMPPEvents.js +359 -0
- package/dist/esm/service/xmpp/XMPPEvents.js.map +1 -0
- package/dist/esm/service/xmpp/XMPPExtensioProtocols.js +64 -0
- package/dist/esm/service/xmpp/XMPPExtensioProtocols.js.map +1 -0
- package/dist/esm/test-setup-polyfill.js +34 -0
- package/dist/esm/test-setup-polyfill.js.map +1 -0
- package/dist/esm/tools/gen-version.js +15 -0
- package/dist/esm/tools/gen-version.js.map +1 -0
- package/dist/esm/version.js +3 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/umd/lib-jitsi-meet.e2ee-worker.js +484 -0
- package/dist/umd/lib-jitsi-meet.min.js +3 -0
- package/dist/umd/lib-jitsi-meet.min.js.LICENSE.txt +18 -0
- package/dist/umd/lib-jitsi-meet.min.map +1 -0
- package/package.json +93 -0
- package/types/index.d.ts +16180 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
const logger = getLogger('util:XMLUtils');
|
|
3
|
+
/**
|
|
4
|
+
* Parses an XML string into a Document.
|
|
5
|
+
* @param xmlString - The XML string to parse.
|
|
6
|
+
* @returns Parsed XML Document or null if parsing fails.
|
|
7
|
+
*/
|
|
8
|
+
export function parseXML(xmlString) {
|
|
9
|
+
if (!xmlString || typeof xmlString !== 'string') {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
const parser = new DOMParser();
|
|
13
|
+
const doc = parser.parseFromString(xmlString, 'text/xml');
|
|
14
|
+
// Check for parser errors.
|
|
15
|
+
const parserError = findFirst(doc, 'parsererror');
|
|
16
|
+
if (parserError) {
|
|
17
|
+
logger.error('XML parsing error:', parserError.textContent || '');
|
|
18
|
+
// Return the document anyway for compatibility
|
|
19
|
+
// jQuery also returns a document with parser errors
|
|
20
|
+
}
|
|
21
|
+
return doc;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Finds all elements matching the CSS selector within the given element.
|
|
25
|
+
* @param element - The element or document to search within.
|
|
26
|
+
* @param selector - CSS selector string.
|
|
27
|
+
* @returns Array of matching elements.
|
|
28
|
+
*/
|
|
29
|
+
export function findAll(element, selector) {
|
|
30
|
+
if (!element) {
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
return Array.from(element.querySelectorAll(selector));
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
logger.error('findAll error:', selector, error);
|
|
38
|
+
return [];
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets the value of an attribute from an element.
|
|
43
|
+
* @param element - The element to get the attribute from.
|
|
44
|
+
* @param name - The attribute name.
|
|
45
|
+
* @returns The attribute value or null if not found.
|
|
46
|
+
*/
|
|
47
|
+
export function getAttribute(element, name) {
|
|
48
|
+
if (!element || !name) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
return element.getAttribute(name);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Sets an attribute on an element.
|
|
55
|
+
* @param element - The element to set the attribute on.
|
|
56
|
+
* @param name - The attribute name.
|
|
57
|
+
* @param value - The attribute value.
|
|
58
|
+
*/
|
|
59
|
+
export function setAttribute(element, name, value) {
|
|
60
|
+
if (!element || !name) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
element.setAttribute(name, value);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Gets the text content of an element.
|
|
67
|
+
* @param element - The element to get text from.
|
|
68
|
+
* @returns The text content or empty string if element is null.
|
|
69
|
+
*/
|
|
70
|
+
export function getText(element) {
|
|
71
|
+
if (!element) {
|
|
72
|
+
return '';
|
|
73
|
+
}
|
|
74
|
+
return element.textContent || '';
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Sets the text content of an element.
|
|
78
|
+
* @param element - The element to set text on.
|
|
79
|
+
* @param text - The text content to set.
|
|
80
|
+
*/
|
|
81
|
+
export function setText(element, text) {
|
|
82
|
+
if (!element) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
element.textContent = text;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets the child elements of an element (excluding text nodes).
|
|
89
|
+
* @param element - The parent element.
|
|
90
|
+
* @returns Array of child elements.
|
|
91
|
+
*/
|
|
92
|
+
export function getChildren(element) {
|
|
93
|
+
if (!element) {
|
|
94
|
+
return [];
|
|
95
|
+
}
|
|
96
|
+
return Array.from(element.children);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Checks if any elements match the selector within the given element.
|
|
100
|
+
* @param element - The element or document to search within.
|
|
101
|
+
* @param selector - CSS selector string.
|
|
102
|
+
* @returns True if at least one element matches the selector.
|
|
103
|
+
*/
|
|
104
|
+
export function exists(element, selector) {
|
|
105
|
+
if (!element) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
return element.querySelector(selector) !== null;
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
logger.error('exists error:', selector, error);
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Gets the first element matching the selector, or null if none found.
|
|
118
|
+
* This is a convenience function equivalent to findAll(...)[0] || null.
|
|
119
|
+
* @param element - The element or document to search within.
|
|
120
|
+
* @param selector - CSS selector string.
|
|
121
|
+
* @returns The first matching element or null.
|
|
122
|
+
*/
|
|
123
|
+
export function findFirst(element, selector) {
|
|
124
|
+
if (!element) {
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
try {
|
|
128
|
+
return element.querySelector(selector);
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
logger.error('findFirst error:', selector, error);
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=XMLUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"XMLUtils.js","sourceRoot":"","sources":["../../../../modules/util/XMLUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
const logger = getLogger('misc:ComponentsVersions');
|
|
3
|
+
/**
|
|
4
|
+
* Discovers component versions in a conference.
|
|
5
|
+
*/
|
|
6
|
+
export default class ComponentsVersions {
|
|
7
|
+
/**
|
|
8
|
+
* Creates new instance of <tt>ComponentsVersions</tt> which will be discovering
|
|
9
|
+
* the versions of conferencing system components in given
|
|
10
|
+
* <tt>JitsiConference</tt>.
|
|
11
|
+
* @param conference <tt>JitsiConference</tt> instance which will be used to
|
|
12
|
+
* listen for focus presence updates.
|
|
13
|
+
* @constructor
|
|
14
|
+
*/
|
|
15
|
+
constructor(conference) {
|
|
16
|
+
this.versions = {};
|
|
17
|
+
this.conference = conference;
|
|
18
|
+
this.conference.addCommandListener('versions', this._processVersions.bind(this));
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Processes versions information from presence.
|
|
22
|
+
*
|
|
23
|
+
* @param {*} versions - The versions element.
|
|
24
|
+
* @param {*} mucJid - MUC JID for the sender.
|
|
25
|
+
* @returns {void}
|
|
26
|
+
*/
|
|
27
|
+
_processVersions(versions, _, mucJid) {
|
|
28
|
+
if (!this.conference.isFocus(mucJid)) {
|
|
29
|
+
logger.warn(`Received versions not from the focus user: ${versions}`, mucJid);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
versions.children.forEach(component => {
|
|
33
|
+
const name = component.attributes.name;
|
|
34
|
+
const version = component.value;
|
|
35
|
+
if (this.versions[name] !== version) {
|
|
36
|
+
this.versions[name] = version;
|
|
37
|
+
logger.info(`Got ${name} version: ${version}`);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Obtains the version of conferencing system component.
|
|
43
|
+
* @param componentName the name of the component for which we want to obtain
|
|
44
|
+
* the version.
|
|
45
|
+
* @returns {String} which describes the version of the component identified by
|
|
46
|
+
* given <tt>componentName</tt> or <tt>undefined</tt> if not found.
|
|
47
|
+
*/
|
|
48
|
+
getComponentVersion(componentName) {
|
|
49
|
+
return this.versions[componentName];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=ComponentsVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComponentsVersions.js","sourceRoot":"","sources":["../../../../modules/version/ComponentsVersions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI1C,MAAM,MAAM,GAAG,SAAS,CAAC,yBAAyB,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAInC;;;;;;;OAOG;IACH,YAAY,UAAU;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAEnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;OAMG;IACH,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,MAAM;QAChC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,MAAM,CAAC,IAAI,CACP,8CAA8C,QAAQ,EAAE,EACxD,MAAM,CAAC,CAAC;YAEZ,OAAO;QACX,CAAC;QAED,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAClC,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;YACvC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;YAEhC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,aAAa,OAAO,EAAE,CAAC,CAAC;YACnD,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,aAAa;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IACxC,CAAC;CACJ"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { $iq } from 'strophe.js';
|
|
3
|
+
import Listenable from '../util/Listenable';
|
|
4
|
+
import { handleStropheError } from '../xmpp/StropheErrorHandler';
|
|
5
|
+
import * as VideoSIPGWConstants from './VideoSIPGWConstants';
|
|
6
|
+
const logger = getLogger('videosipgw:JitsiVideoSIPGWSession');
|
|
7
|
+
/**
|
|
8
|
+
* The event name for current sip video session state changed.
|
|
9
|
+
* @type {string} event name for sip video session state changed.
|
|
10
|
+
*/
|
|
11
|
+
const STATE_CHANGED = 'STATE_CHANGED';
|
|
12
|
+
/**
|
|
13
|
+
* Jitsi video SIP GW session. Holding its state and able to start/stop it.
|
|
14
|
+
* When session is in OFF or FAILED stated it cannot be used anymore.
|
|
15
|
+
*/
|
|
16
|
+
export default class JitsiVideoSIPGWSession extends Listenable {
|
|
17
|
+
/**
|
|
18
|
+
* Creates new session with the desired sip address and display name.
|
|
19
|
+
*
|
|
20
|
+
* @param {string} sipAddress - The sip address to use when
|
|
21
|
+
* starting the session.
|
|
22
|
+
* @param {string} displayName - The display name to use for
|
|
23
|
+
* that participant.
|
|
24
|
+
* @param {ChatRoom} chatRoom - The chat room this session is bound to.
|
|
25
|
+
*/
|
|
26
|
+
constructor(sipAddress, displayName, chatRoom) {
|
|
27
|
+
super();
|
|
28
|
+
this.sipAddress = sipAddress;
|
|
29
|
+
this.displayName = displayName;
|
|
30
|
+
this.chatRoom = chatRoom;
|
|
31
|
+
/*
|
|
32
|
+
* The initial state is undefined. Initial state cannot be STATE_OFF,
|
|
33
|
+
* the session enters this state when it was in STATE_ON and was stopped
|
|
34
|
+
* and such session cannot be used anymore.
|
|
35
|
+
*
|
|
36
|
+
* @type {VideoSIPGWConstants|undefined}
|
|
37
|
+
*/
|
|
38
|
+
this.state = undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Sends a jibri command using an iq.
|
|
42
|
+
*
|
|
43
|
+
* @private
|
|
44
|
+
* @param {string} action - The action to send ('start' or 'stop').
|
|
45
|
+
*/
|
|
46
|
+
_sendJibriIQ(action) {
|
|
47
|
+
const attributes = {
|
|
48
|
+
'action': action,
|
|
49
|
+
'displayname': this.displayName,
|
|
50
|
+
'sipaddress': this.sipAddress,
|
|
51
|
+
'xmlns': 'http://jitsi.org/protocol/jibri'
|
|
52
|
+
};
|
|
53
|
+
const iq = $iq({
|
|
54
|
+
to: this.chatRoom.focusMucJid,
|
|
55
|
+
type: 'set'
|
|
56
|
+
})
|
|
57
|
+
.c('jibri', attributes)
|
|
58
|
+
.up();
|
|
59
|
+
logger.debug(`${action} video SIP GW session`, iq.nodeTree);
|
|
60
|
+
this.chatRoom.connection.sendIQ(iq, () => { }, // eslint-disable-line @typescript-eslint/no-empty-function
|
|
61
|
+
(error) => {
|
|
62
|
+
handleStropheError(error, {
|
|
63
|
+
operation: `${action} video SIP GW session`,
|
|
64
|
+
roomJid: this.chatRoom.roomjid,
|
|
65
|
+
sipAddress: this.sipAddress,
|
|
66
|
+
userJid: this.chatRoom.connection.jid
|
|
67
|
+
});
|
|
68
|
+
this.setState(VideoSIPGWConstants.STATE_FAILED);
|
|
69
|
+
}, undefined);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Stops the current session.
|
|
73
|
+
*/
|
|
74
|
+
stop() {
|
|
75
|
+
if (this.state === VideoSIPGWConstants.STATE_OFF
|
|
76
|
+
|| this.state === VideoSIPGWConstants.STATE_FAILED) {
|
|
77
|
+
logger.warn('Video SIP GW session already stopped or failed!');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
this._sendJibriIQ('stop');
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Starts a new session. Sends an iq to the focus.
|
|
84
|
+
*/
|
|
85
|
+
start() {
|
|
86
|
+
// if state is off, this session was active for some reason
|
|
87
|
+
// and we should create new one, rather than reusing it
|
|
88
|
+
if (this.state === VideoSIPGWConstants.STATE_ON
|
|
89
|
+
|| this.state === VideoSIPGWConstants.STATE_OFF
|
|
90
|
+
|| this.state === VideoSIPGWConstants.STATE_PENDING
|
|
91
|
+
|| this.state === VideoSIPGWConstants.STATE_RETRYING) {
|
|
92
|
+
logger.warn('Video SIP GW session already started!');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this._sendJibriIQ('start');
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Changes the state of this session.
|
|
99
|
+
*
|
|
100
|
+
* @param {string} newState - The new {VideoSIPGWConstants} state to set.
|
|
101
|
+
* @param {string} [optional] failureReason - The reason why a failure state
|
|
102
|
+
* was entered.
|
|
103
|
+
* @returns {void}
|
|
104
|
+
*/
|
|
105
|
+
setState(newState, failureReason) {
|
|
106
|
+
if (newState === this.state) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const oldState = this.state;
|
|
110
|
+
this.state = newState;
|
|
111
|
+
this.eventEmitter.emit(STATE_CHANGED, {
|
|
112
|
+
address: this.sipAddress,
|
|
113
|
+
displayName: this.displayName,
|
|
114
|
+
failureReason,
|
|
115
|
+
newState: this.state,
|
|
116
|
+
oldState
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Subscribes the passed listener to the event for state change of this
|
|
121
|
+
* session.
|
|
122
|
+
*
|
|
123
|
+
* @param {EventListener} listener - The function that will receive the event.
|
|
124
|
+
*/
|
|
125
|
+
addStateListener(listener) {
|
|
126
|
+
this.addListener(STATE_CHANGED, listener);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Unsubscribes the passed handler.
|
|
130
|
+
*
|
|
131
|
+
* @param {EventListener} listener - The function to be removed.
|
|
132
|
+
*/
|
|
133
|
+
removeStateListener(listener) {
|
|
134
|
+
this.removeListener(STATE_CHANGED, listener);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=JitsiVideoSIPGWSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JitsiVideoSIPGWSession.js","sourceRoot":"","sources":["../../../../modules/videosipgw/JitsiVideoSIPGWSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
const logger = getLogger('videosipgw:VideoSIPGW');
|
|
3
|
+
import { XMPPEvents } from '../../service/xmpp/XMPPEvents';
|
|
4
|
+
import JitsiVideoSIPGWSession from './JitsiVideoSIPGWSession';
|
|
5
|
+
import * as Constants from './VideoSIPGWConstants';
|
|
6
|
+
/**
|
|
7
|
+
* Main video SIP GW handler. Stores references of all created sessions.
|
|
8
|
+
*/
|
|
9
|
+
export default class VideoSIPGW {
|
|
10
|
+
/**
|
|
11
|
+
* Creates new handler.
|
|
12
|
+
*
|
|
13
|
+
* @param {ChatRoom} chatRoom - Tha chat room to handle.
|
|
14
|
+
*/
|
|
15
|
+
constructor(chatRoom) {
|
|
16
|
+
this.chatRoom = chatRoom;
|
|
17
|
+
this.eventEmitter = chatRoom.eventEmitter;
|
|
18
|
+
logger.debug('creating VideoSIPGW');
|
|
19
|
+
this.sessions = {};
|
|
20
|
+
this.sessionStateChangeListener = this.sessionStateChanged.bind(this);
|
|
21
|
+
// VideoSIPGW, JitsiConference and ChatRoom are not reusable and no
|
|
22
|
+
// more than one VideoSIPGW can be created per JitsiConference,
|
|
23
|
+
// so we don't bother to cleanup
|
|
24
|
+
chatRoom.addPresenceListener('jibri-sip-call-state', this.handleJibriSIPState.bind(this));
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Handles presence nodes with name: jibri-sip-call-state.
|
|
28
|
+
*
|
|
29
|
+
* @param {Object} node the presence node Object to handle.
|
|
30
|
+
* Object representing part of the presence received over xmpp.
|
|
31
|
+
*/
|
|
32
|
+
handleJibriSIPState(node) {
|
|
33
|
+
const attributes = node.attributes;
|
|
34
|
+
if (!attributes) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
logger.debug('Handle video sip gw state : ', attributes);
|
|
38
|
+
const newState = attributes.state;
|
|
39
|
+
if (newState === this.state) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
switch (newState) {
|
|
43
|
+
case Constants.STATE_ON:
|
|
44
|
+
case Constants.STATE_OFF:
|
|
45
|
+
case Constants.STATE_PENDING:
|
|
46
|
+
case Constants.STATE_RETRYING:
|
|
47
|
+
case Constants.STATE_FAILED: {
|
|
48
|
+
const address = attributes.sipaddress;
|
|
49
|
+
if (!address) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
// find the corresponding session and set its state
|
|
53
|
+
const session = this.sessions[address];
|
|
54
|
+
if (session) {
|
|
55
|
+
session.setState(newState, attributes.failure_reason);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logger.warn('Video SIP GW session not found:', address);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Creates new session and stores its reference if it does not exist or
|
|
65
|
+
* returns an error otherwise.
|
|
66
|
+
*
|
|
67
|
+
* @param {string} sipAddress - The sip address to use.
|
|
68
|
+
* @param {string} displayName - The display name to use.
|
|
69
|
+
* @returns {JitsiVideoSIPGWSession|Error}
|
|
70
|
+
*/
|
|
71
|
+
createVideoSIPGWSession(sipAddress, displayName) {
|
|
72
|
+
if (this.sessions[sipAddress]) {
|
|
73
|
+
logger.warn('There was already a Video SIP GW session for address', sipAddress);
|
|
74
|
+
return new Error(Constants.ERROR_SESSION_EXISTS);
|
|
75
|
+
}
|
|
76
|
+
const session = new JitsiVideoSIPGWSession(sipAddress, displayName, this.chatRoom);
|
|
77
|
+
session.addStateListener(this.sessionStateChangeListener);
|
|
78
|
+
this.sessions[sipAddress] = session;
|
|
79
|
+
return session;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Listener for session state changed. When a session goes to off or failed
|
|
83
|
+
* we delete its reference.
|
|
84
|
+
*
|
|
85
|
+
* @param {options} event - { address, oldState, newState, displayName }
|
|
86
|
+
*/
|
|
87
|
+
sessionStateChanged(event) {
|
|
88
|
+
const address = event.address;
|
|
89
|
+
if (event.newState === Constants.STATE_OFF
|
|
90
|
+
|| event.newState === Constants.STATE_FAILED) {
|
|
91
|
+
const session = this.sessions[address];
|
|
92
|
+
if (!session) {
|
|
93
|
+
logger.error('Missing Video SIP GW session with address:', address);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
session.removeStateListener(this.sessionStateChangeListener);
|
|
97
|
+
delete this.sessions[address];
|
|
98
|
+
}
|
|
99
|
+
this.eventEmitter.emit(XMPPEvents.VIDEO_SIP_GW_SESSION_STATE_CHANGED, event);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=VideoSIPGW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoSIPGW.js","sourceRoot":"","sources":["../../../../modules/videosipgw/VideoSIPGW.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,uBAAuB,CAAC,CAAC;AAElD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI3D,OAAO,sBAAsB,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,SAAS,MAAM,uBAAuB,CAAC;AAgBnD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAO3B;;;;OAIG;IACH,YAAY,QAAkB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QAC1C,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAEnB,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtE,mEAAmE;QACnE,+DAA+D;QAC/D,gCAAgC;QAChC,QAAQ,CAAC,mBAAmB,CAAC,sBAAsB,EAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,IAAuC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEnC,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,UAAU,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC;QAElC,IAAI,QAAQ,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC1B,OAAO;QACX,CAAC;QAED,QAAQ,QAAQ,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,QAAQ,CAAC;YACxB,KAAK,SAAS,CAAC,SAAS,CAAC;YACzB,KAAK,SAAS,CAAC,aAAa,CAAC;YAC7B,KAAK,SAAS,CAAC,cAAc,CAAC;YAC9B,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC;gBAEtC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,OAAO;gBACX,CAAC;gBAED,mDAAmD;gBACnD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAEvC,IAAI,OAAO,EAAE,CAAC;oBACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC;gBAC1D,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;gBAC5D,CAAC;YACL,CAAC;QACD,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,uBAAuB,CAAC,UAAkB,EAAE,WAAmB;QAC3D,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAC9D,UAAU,CAAC,CAAC;YAEhB,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,sBAAsB,CACtC,UAAU,EAAE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,0BAAsD,CAAC,CAAC;QAEtF,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;QAEpC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACH,mBAAmB,CAAC,KAA+B;QAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE9B,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,SAAS;eACnC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,YAAY,EAAE,CAAC;YAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEvC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACX,MAAM,CAAC,KAAK,CAAC,4CAA4C,EACrD,OAAO,CAAC,CAAC;gBAEb,OAAO;YACX,CAAC;YAED,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,0BAAsD,CAAC,CAAC;YACzF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAClB,UAAU,CAAC,kCAAkC,EAC7C,KAAK,CAAC,CAAC;IACf,CAAC;CACJ"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
export var VideoSIPGWStatusConstants;
|
|
2
|
+
(function (VideoSIPGWStatusConstants) {
|
|
3
|
+
/**
|
|
4
|
+
* Status that video SIP GW service is available.
|
|
5
|
+
*/
|
|
6
|
+
VideoSIPGWStatusConstants["STATUS_AVAILABLE"] = "available";
|
|
7
|
+
/**
|
|
8
|
+
* Status that video SIP GW service is available but there are no free nodes
|
|
9
|
+
* at the moment to serve new requests.
|
|
10
|
+
*/
|
|
11
|
+
VideoSIPGWStatusConstants["STATUS_BUSY"] = "busy";
|
|
12
|
+
/**
|
|
13
|
+
* Status that video SIP GW service is not available.
|
|
14
|
+
*/
|
|
15
|
+
VideoSIPGWStatusConstants["STATUS_UNDEFINED"] = "undefined";
|
|
16
|
+
})(VideoSIPGWStatusConstants || (VideoSIPGWStatusConstants = {}));
|
|
17
|
+
export var VideoSIPGWStateConstants;
|
|
18
|
+
(function (VideoSIPGWStateConstants) {
|
|
19
|
+
/**
|
|
20
|
+
* Video SIP GW session state, tried to start but it failed.
|
|
21
|
+
*/
|
|
22
|
+
VideoSIPGWStateConstants["STATE_FAILED"] = "failed";
|
|
23
|
+
/**
|
|
24
|
+
* Video SIP GW session state, currently stopped and not running.
|
|
25
|
+
*/
|
|
26
|
+
VideoSIPGWStateConstants["STATE_OFF"] = "off";
|
|
27
|
+
/**
|
|
28
|
+
* Video SIP GW session state, currently running.
|
|
29
|
+
*/
|
|
30
|
+
VideoSIPGWStateConstants["STATE_ON"] = "on";
|
|
31
|
+
/**
|
|
32
|
+
* Video SIP GW session state, currently is starting.
|
|
33
|
+
*/
|
|
34
|
+
VideoSIPGWStateConstants["STATE_PENDING"] = "pending";
|
|
35
|
+
/**
|
|
36
|
+
* Video SIP GW session state, has observed some issues and is retrying at the
|
|
37
|
+
* moment.
|
|
38
|
+
*/
|
|
39
|
+
VideoSIPGWStateConstants["STATE_RETRYING"] = "retrying";
|
|
40
|
+
})(VideoSIPGWStateConstants || (VideoSIPGWStateConstants = {}));
|
|
41
|
+
export var VideoSIPGWErrorConstants;
|
|
42
|
+
(function (VideoSIPGWErrorConstants) {
|
|
43
|
+
/**
|
|
44
|
+
* Error on trying to create video SIP GW session in conference where
|
|
45
|
+
* there is no room connection (hasn't joined or has left the room).
|
|
46
|
+
*/
|
|
47
|
+
VideoSIPGWErrorConstants["ERROR_NO_CONNECTION"] = "error_no_connection";
|
|
48
|
+
/**
|
|
49
|
+
* Error on trying to create video SIP GW session with address for which
|
|
50
|
+
* there is an already created session.
|
|
51
|
+
*/
|
|
52
|
+
VideoSIPGWErrorConstants["ERROR_SESSION_EXISTS"] = "error_session_already_exists";
|
|
53
|
+
})(VideoSIPGWErrorConstants || (VideoSIPGWErrorConstants = {}));
|
|
54
|
+
// exported for backward compatibility
|
|
55
|
+
export const STATUS_AVAILABLE = VideoSIPGWStatusConstants.STATUS_AVAILABLE;
|
|
56
|
+
export const STATUS_UNDEFINED = VideoSIPGWStatusConstants.STATUS_UNDEFINED;
|
|
57
|
+
export const STATUS_BUSY = VideoSIPGWStatusConstants.STATUS_BUSY;
|
|
58
|
+
export const STATE_ON = VideoSIPGWStateConstants.STATE_ON;
|
|
59
|
+
export const STATE_OFF = VideoSIPGWStateConstants.STATE_OFF;
|
|
60
|
+
export const STATE_PENDING = VideoSIPGWStateConstants.STATE_PENDING;
|
|
61
|
+
export const STATE_RETRYING = VideoSIPGWStateConstants.STATE_RETRYING;
|
|
62
|
+
export const STATE_FAILED = VideoSIPGWStateConstants.STATE_FAILED;
|
|
63
|
+
export const ERROR_NO_CONNECTION = VideoSIPGWErrorConstants.ERROR_NO_CONNECTION;
|
|
64
|
+
export const ERROR_SESSION_EXISTS = VideoSIPGWErrorConstants.ERROR_SESSION_EXISTS;
|
|
65
|
+
//# sourceMappingURL=VideoSIPGWConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoSIPGWConstants.js","sourceRoot":"","sources":["../../../../modules/videosipgw/VideoSIPGWConstants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,yBAiBX;AAjBD,WAAY,yBAAyB;IAEjC;;OAEG;IACH,2DAA8B,CAAA;IAE9B;;;OAGG;IACH,iDAAoB,CAAA;IAEpB;;OAEG;IACH,2DAA8B,CAAA;AAClC,CAAC,EAjBW,yBAAyB,KAAzB,yBAAyB,QAiBpC;AAED,MAAM,CAAN,IAAY,wBA2BX;AA3BD,WAAY,wBAAwB;IAEhC;;OAEG;IACH,mDAAuB,CAAA;IAEvB;;OAEG;IACH,6CAAiB,CAAA;IAEjB;;OAEG;IACH,2CAAe,CAAA;IAEf;;OAEG;IACH,qDAAyB,CAAA;IAEzB;;;OAGG;IACH,uDAA2B,CAAA;AAC/B,CAAC,EA3BW,wBAAwB,KAAxB,wBAAwB,QA2BnC;AAED,MAAM,CAAN,IAAY,wBAaX;AAbD,WAAY,wBAAwB;IAEhC;;;OAGG;IACH,uEAA2C,CAAA;IAE3C;;;OAGG;IACH,iFAAqD,CAAA;AACzD,CAAC,EAbW,wBAAwB,KAAxB,wBAAwB,QAanC;AAED,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,gBAAgB,CAAC;AAC3E,MAAM,CAAC,MAAM,WAAW,GAAG,yBAAyB,CAAC,WAAW,CAAC;AAEjE,MAAM,CAAC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,QAAQ,CAAC;AAC1D,MAAM,CAAC,MAAM,SAAS,GAAG,wBAAwB,CAAC,SAAS,CAAC;AAC5D,MAAM,CAAC,MAAM,aAAa,GAAG,wBAAwB,CAAC,aAAa,CAAC;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC,cAAc,CAAC;AACtE,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC,YAAY,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,wBAAwB,CAAC,mBAAmB,CAAC;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import Logger from '@jitsi/logger';
|
|
2
|
+
import watchRTC from '@testrtc/watchrtc-sdk';
|
|
3
|
+
import browser from '../browser';
|
|
4
|
+
import { isAnalyticsEnabled, isWatchRTCEnabled } from './functions';
|
|
5
|
+
const logger = Logger.getLogger('analytics:WatchRTC');
|
|
6
|
+
/**
|
|
7
|
+
* Class that controls the watchRTC flow, because it overwrites and proxies global function it should only be
|
|
8
|
+
* initialized once.
|
|
9
|
+
*/
|
|
10
|
+
class WatchRTCHandler {
|
|
11
|
+
/**
|
|
12
|
+
* Initialize watchRTC, it overwrites GUM and PeerConnection global functions and adds a proxy over them
|
|
13
|
+
* used to capture stats.
|
|
14
|
+
*
|
|
15
|
+
* @param {Object} options - Init options.
|
|
16
|
+
* @returns {void}
|
|
17
|
+
*/
|
|
18
|
+
init(options) {
|
|
19
|
+
if (isWatchRTCEnabled(options)) {
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
if (browser.isReactNative()) {
|
|
22
|
+
logger.warn('Cannot initialize WatchRTC in a react native environment!');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (!isAnalyticsEnabled(options)) {
|
|
26
|
+
logger.error('Cannot initialize WatchRTC when analytics or third party requests are disabled.');
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
if (options?.watchRTCConfigParams?.rtcApiKey) {
|
|
31
|
+
watchRTC.init({
|
|
32
|
+
rtcApiKey: options.watchRTCConfigParams.rtcApiKey,
|
|
33
|
+
});
|
|
34
|
+
this.options = options.watchRTCConfigParams;
|
|
35
|
+
logger.info('WatchRTC initialized.');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
logger.error('WatchRTC is enabled but missing API key.');
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
logger.error('Failed to initialize WatchRTC: ', error);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Begin watchRTC session considering roomName and userName if already not available
|
|
48
|
+
*
|
|
49
|
+
* @param {string} roomName - The room name we are currently in.
|
|
50
|
+
* @param {string} userName - The user name. This value is obtained from
|
|
51
|
+
* JitsiConference.prototype.myUserId
|
|
52
|
+
* @returns {void}
|
|
53
|
+
*/
|
|
54
|
+
start(roomName, userName) {
|
|
55
|
+
try {
|
|
56
|
+
if (this.options) {
|
|
57
|
+
this.options.rtcRoomId = this.options.rtcRoomId ? this.options.rtcRoomId : roomName;
|
|
58
|
+
this.options.rtcPeerId = this.options.rtcPeerId ? this.options.rtcPeerId : userName;
|
|
59
|
+
watchRTC.setConfig(this.options);
|
|
60
|
+
logger.info('WatchRTC setConfig.');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
logger.error('Failed to start WatchRTC session: ', error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export default new WatchRTCHandler();
|
|
69
|
+
//# sourceMappingURL=WatchRTC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WatchRTC.js","sourceRoot":"","sources":["../../../../modules/watchRTC/WatchRTC.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,eAAe,CAAC;AACnC,OAAO,QAAQ,MAAM,uBAAuB,CAAC;AAE7C,OAAO,OAAO,MAAM,YAAY,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGpE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;AAEtD;;;GAGG;AACH,MAAM,eAAe;IAGjB;;;;;;OAMG;IACH,IAAI,CAAC,OAAY;QACb,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;YAE7B,aAAa;YACb,IAAI,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;gBAEzE,OAAO;YACX,CAAC;YAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,KAAK,CAAC,iFAAiF,CAAC,CAAC;gBAEhG,OAAO;YACX,CAAC;YAED,IAAI,CAAC;gBACD,IAAI,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC;wBACV,SAAS,EAAE,OAAO,CAAC,oBAAoB,CAAC,SAAS;qBACpD,CAAC,CAAC;oBACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBAC7D,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC3D,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,QAAgB,EAAE,QAAgB;QACpC,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpF,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACpF,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACvC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;CACJ;AAED,eAAe,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks whether analytics is enabled or not.
|
|
3
|
+
*
|
|
4
|
+
* @param {Object} options - Init options.
|
|
5
|
+
* @returns {boolean}
|
|
6
|
+
*/
|
|
7
|
+
export function isAnalyticsEnabled(options) {
|
|
8
|
+
const { analytics, disableThirdPartyRequests } = options;
|
|
9
|
+
return !(analytics?.disabled || disableThirdPartyRequests);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Checks whether rtcstats is enabled or not.
|
|
13
|
+
*
|
|
14
|
+
* @param {Object} options - Init options.
|
|
15
|
+
* @returns {boolean}
|
|
16
|
+
*/
|
|
17
|
+
export function isRtcstatsEnabled(options) {
|
|
18
|
+
const { analytics } = options;
|
|
19
|
+
return analytics?.rtcstatsEnabled ?? false;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks whether watchrtc is enabled or not.
|
|
23
|
+
*
|
|
24
|
+
* @param {Object} options - Init options.
|
|
25
|
+
* @returns {boolean}
|
|
26
|
+
*/
|
|
27
|
+
export function isWatchRTCEnabled(options) {
|
|
28
|
+
const { analytics } = options;
|
|
29
|
+
return analytics?.watchRTCEnabled ?? false;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../../modules/watchRTC/functions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAO;IACtC,MAAM,EAAE,SAAS,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC;IAEzD,OAAO,CAAC,CAAC,SAAS,EAAE,QAAQ,IAAI,yBAAyB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAO;IACrC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,OAAO,SAAS,EAAE,eAAe,IAAI,KAAK,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAO;IACrC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE9B,OAAO,SAAS,EAAE,eAAe,IAAI,KAAK,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../../../modules/watchRTC/interfaces.ts"],"names":[],"mappings":""}
|