@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,348 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { getAttribute } from '../../modules/util/XMLUtils';
|
|
3
|
+
import { RTCEvents } from '../../service/RTC/RTCEvents';
|
|
4
|
+
import { XMPPEvents } from '../../service/xmpp/XMPPEvents';
|
|
5
|
+
import RTC from '../RTC/RTC';
|
|
6
|
+
import JingleSessionPC from '../xmpp/JingleSessionPC';
|
|
7
|
+
import { DEFAULT_STUN_SERVERS } from '../xmpp/xmpp';
|
|
8
|
+
import CustomSignalingLayer from './CustomSignalingLayer';
|
|
9
|
+
import { ACTIONS } from './constants';
|
|
10
|
+
const logger = getLogger('proxyconnection:ProxyConnectionPC');
|
|
11
|
+
/**
|
|
12
|
+
* An adapter around {@code JingleSessionPC} so its logic can be re-used without
|
|
13
|
+
* an XMPP connection. It is being re-used for consistency with the rest of the
|
|
14
|
+
* codebase and to leverage existing peer connection event handling. Also
|
|
15
|
+
* this class provides a facade to hide most of the API for
|
|
16
|
+
* {@code JingleSessionPC}.
|
|
17
|
+
*/
|
|
18
|
+
export default class ProxyConnectionPC {
|
|
19
|
+
/**
|
|
20
|
+
* Initializes a new {@code ProxyConnectionPC} instance.
|
|
21
|
+
*
|
|
22
|
+
* @param {Object} options - Values to initialize the instance with.
|
|
23
|
+
* @param {Object} [options.pcConfig] - The {@code RTCConfiguration} to use for the WebRTC peer connection.
|
|
24
|
+
* @param {boolean} [options.isInitiator] - If true, the local client should send offers. If false, the local
|
|
25
|
+
* client should send answers. Defaults to false.
|
|
26
|
+
* @param {Function} options.onRemoteStream - Callback to invoke when a remote media stream has been received
|
|
27
|
+
* through the peer connection.
|
|
28
|
+
* @param {string} options.peerJid - The jid of the remote client with which the peer connection is being establish
|
|
29
|
+
* and which should receive direct messages regarding peer connection updates.
|
|
30
|
+
* @param {boolean} [options.receiveVideo] - Whether or not the peer connection should accept incoming video
|
|
31
|
+
* streams. Defaults to false.
|
|
32
|
+
* @param {Function} options.onSendMessage - Callback to invoke when a message has to be sent (signaled) out.
|
|
33
|
+
*/
|
|
34
|
+
constructor(options = {}) {
|
|
35
|
+
this._options = {
|
|
36
|
+
isInitiator: false,
|
|
37
|
+
pcConfig: {},
|
|
38
|
+
receiveAudio: false,
|
|
39
|
+
receiveVideo: false,
|
|
40
|
+
...options
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Instances of {@code JitsiTrack} associated with this instance of
|
|
44
|
+
* {@code ProxyConnectionPC}.
|
|
45
|
+
*
|
|
46
|
+
* @type {Array<JitsiTrack>}
|
|
47
|
+
*/
|
|
48
|
+
this._tracks = [];
|
|
49
|
+
/**
|
|
50
|
+
* The active instance of {@code JingleSessionPC}.
|
|
51
|
+
*
|
|
52
|
+
* @type {JingleSessionPC|null}
|
|
53
|
+
*/
|
|
54
|
+
this._peerConnection = null;
|
|
55
|
+
// Bind event handlers so they are only bound once for every instance.
|
|
56
|
+
this._onError = this._onError.bind(this);
|
|
57
|
+
this._onRemoteStream = this._onRemoteStream.bind(this);
|
|
58
|
+
this._onSendMessage = this._onSendMessage.bind(this);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Returns the jid of the remote peer with which this peer connection should
|
|
62
|
+
* be established with.
|
|
63
|
+
*
|
|
64
|
+
* @returns {string}
|
|
65
|
+
*/
|
|
66
|
+
getPeerJid() {
|
|
67
|
+
return this._options.peerJid;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Updates the peer connection based on the passed in jingle.
|
|
71
|
+
*
|
|
72
|
+
* @param {Element} jingleElement - An XML jingle element describing how the peer connection should be updated.
|
|
73
|
+
* @returns {void}
|
|
74
|
+
*/
|
|
75
|
+
processMessage(jingleElement) {
|
|
76
|
+
switch (getAttribute(jingleElement, 'action')) {
|
|
77
|
+
case ACTIONS.ACCEPT:
|
|
78
|
+
this._onSessionAccept(jingleElement);
|
|
79
|
+
break;
|
|
80
|
+
case ACTIONS.INITIATE:
|
|
81
|
+
this._onSessionInitiate(jingleElement);
|
|
82
|
+
break;
|
|
83
|
+
case ACTIONS.TERMINATE:
|
|
84
|
+
this._onSessionTerminate(jingleElement);
|
|
85
|
+
break;
|
|
86
|
+
case ACTIONS.TRANSPORT_INFO:
|
|
87
|
+
this._onTransportInfo(jingleElement);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Instantiates a peer connection and starts the offer/answer cycle to
|
|
93
|
+
* establish a connection with a remote peer.
|
|
94
|
+
*
|
|
95
|
+
* @param {Array<JitsiLocalTrack>} localTracks - Initial local tracks to add
|
|
96
|
+
* to add to the peer connection.
|
|
97
|
+
* @returns {void}
|
|
98
|
+
*/
|
|
99
|
+
start(localTracks = []) {
|
|
100
|
+
if (this._peerConnection) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this._tracks = this._tracks.concat(localTracks);
|
|
104
|
+
this._peerConnection = this._createPeerConnection();
|
|
105
|
+
this._peerConnection.invite(localTracks);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Begins the process of disconnecting from a remote peer and cleaning up
|
|
109
|
+
* the peer connection.
|
|
110
|
+
*
|
|
111
|
+
* @returns {void}
|
|
112
|
+
*/
|
|
113
|
+
stop() {
|
|
114
|
+
if (this._peerConnection) {
|
|
115
|
+
this._peerConnection.terminate();
|
|
116
|
+
}
|
|
117
|
+
this._onSessionTerminate();
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Instantiates a new {@code JingleSessionPC} by stubbing out the various
|
|
121
|
+
* dependencies of {@code JingleSessionPC}.
|
|
122
|
+
*
|
|
123
|
+
* @private
|
|
124
|
+
* @returns {JingleSessionPC}
|
|
125
|
+
*/
|
|
126
|
+
_createPeerConnection() {
|
|
127
|
+
/**
|
|
128
|
+
* {@code JingleSessionPC} takes in the entire jitsi-meet config.js
|
|
129
|
+
* object, which may not be accessible from the caller.
|
|
130
|
+
*
|
|
131
|
+
* @type {Object}
|
|
132
|
+
*/
|
|
133
|
+
const configStub = {};
|
|
134
|
+
/**
|
|
135
|
+
* {@code JingleSessionPC} assumes an XMPP/Strophe connection object is
|
|
136
|
+
* passed through, which also has the jingle plugin initialized on it.
|
|
137
|
+
* This connection object is used to signal out peer connection updates
|
|
138
|
+
* via iqs, and those updates need to be piped back out to the remote
|
|
139
|
+
* peer.
|
|
140
|
+
*
|
|
141
|
+
* @type {Object}
|
|
142
|
+
*/
|
|
143
|
+
const connectionStub = {
|
|
144
|
+
// At the time this is used for Spot and it's okay to say the connection is always connected, because if
|
|
145
|
+
// spot has no signalling it will not be in a meeting where this is used.
|
|
146
|
+
// eslint-disable-next-line no-empty-function
|
|
147
|
+
addCancellableListener: () => () => { },
|
|
148
|
+
// eslint-disable-next-line no-empty-function
|
|
149
|
+
addEventListener: () => () => { },
|
|
150
|
+
connected: true,
|
|
151
|
+
jingle: {
|
|
152
|
+
terminate: () => { }
|
|
153
|
+
},
|
|
154
|
+
sendIQ: this._onSendMessage
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* {@code JingleSessionPC} can take in a custom ice configuration,
|
|
158
|
+
* depending on the peer connection type, peer-to-peer or other.
|
|
159
|
+
* However, {@code ProxyConnectionPC} always assume a peer-to-peer
|
|
160
|
+
* connection so the ice configuration is hard-coded with defaults.
|
|
161
|
+
*
|
|
162
|
+
* @type {Object}
|
|
163
|
+
*/
|
|
164
|
+
const pcConfigStub = {
|
|
165
|
+
iceServers: DEFAULT_STUN_SERVERS,
|
|
166
|
+
...this._options.pcConfig
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* {@code JingleSessionPC} expects an instance of
|
|
170
|
+
* {@code JitsiConference}, which has an event emitter that is used
|
|
171
|
+
* to signal various connection updates that the local client should
|
|
172
|
+
* act upon. The conference instance is not a dependency of a proxy
|
|
173
|
+
* connection, but the emitted events can be relevant to the proxy
|
|
174
|
+
* connection so the event emitter is stubbed.
|
|
175
|
+
*
|
|
176
|
+
* @param {string} event - The constant for the event type.
|
|
177
|
+
* @type {Function}
|
|
178
|
+
* @returns {void}
|
|
179
|
+
*/
|
|
180
|
+
const emitter = event => {
|
|
181
|
+
switch (event) {
|
|
182
|
+
case XMPPEvents.CONNECTION_ICE_FAILED:
|
|
183
|
+
case XMPPEvents.CONNECTION_FAILED:
|
|
184
|
+
this._onError(ACTIONS.CONNECTION_ERROR, event);
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* {@link JingleSessionPC} expects an instance of
|
|
190
|
+
* {@link ChatRoom} to be passed in. {@link ProxyConnectionPC}
|
|
191
|
+
* is instantiated outside of the {@code JitsiConference}, so it must be
|
|
192
|
+
* stubbed to prevent errors.
|
|
193
|
+
*
|
|
194
|
+
* @type {Object}
|
|
195
|
+
*/
|
|
196
|
+
const roomStub = {
|
|
197
|
+
addEventListener: () => { },
|
|
198
|
+
addPresenceListener: () => { },
|
|
199
|
+
connectionTimes: [],
|
|
200
|
+
eventEmitter: { emit: emitter },
|
|
201
|
+
removeEventListener: () => { },
|
|
202
|
+
removePresenceListener: () => { }
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* A {@code JitsiConference} stub passed to the {@link RTC} module.
|
|
206
|
+
* @type {Object}
|
|
207
|
+
*/
|
|
208
|
+
const conferenceStub = {
|
|
209
|
+
myUserId: () => ''
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Create an instance of {@code RTC} as it is required for peer
|
|
213
|
+
* connection creation by {@code JingleSessionPC}. An existing instance
|
|
214
|
+
* of {@code RTC} from elsewhere should not be re-used because it is
|
|
215
|
+
* a stateful grouping of utilities.
|
|
216
|
+
*/
|
|
217
|
+
this._rtc = new RTC(conferenceStub, {});
|
|
218
|
+
/**
|
|
219
|
+
* Add the remote track listener here as {@code JingleSessionPC} has
|
|
220
|
+
* {@code TraceablePeerConnection} which uses {@code RTC}'s event
|
|
221
|
+
* emitter.
|
|
222
|
+
*/
|
|
223
|
+
this._rtc.addListener(RTCEvents.REMOTE_TRACK_ADDED, this._onRemoteStream);
|
|
224
|
+
const peerConnection = new JingleSessionPC(undefined, // sid
|
|
225
|
+
undefined, // localJid
|
|
226
|
+
this._options.peerJid, // remoteJid
|
|
227
|
+
connectionStub, // connection
|
|
228
|
+
{
|
|
229
|
+
offerToReceiveAudio: this._options.receiveAudio,
|
|
230
|
+
offerToReceiveVideo: this._options.receiveVideo
|
|
231
|
+
}, // mediaConstraints
|
|
232
|
+
pcConfigStub, // pcConfig
|
|
233
|
+
true, // isP2P
|
|
234
|
+
this._options.isInitiator // isInitiator
|
|
235
|
+
);
|
|
236
|
+
const signalingLayer = new CustomSignalingLayer();
|
|
237
|
+
signalingLayer.setChatRoom(roomStub);
|
|
238
|
+
/**
|
|
239
|
+
* An additional initialize call is necessary to properly set instance
|
|
240
|
+
* variable for calling.
|
|
241
|
+
*/
|
|
242
|
+
peerConnection.initialize(roomStub, this._rtc, signalingLayer, configStub);
|
|
243
|
+
return peerConnection;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* Invoked when a connection related issue has been encountered.
|
|
247
|
+
*
|
|
248
|
+
* @param {string} errorType - The constant indicating the type of the error
|
|
249
|
+
* that occurred.
|
|
250
|
+
* @param {string} details - Optional additional data about the error.
|
|
251
|
+
* @private
|
|
252
|
+
* @returns {void}
|
|
253
|
+
*/
|
|
254
|
+
_onError(errorType, details = '') {
|
|
255
|
+
this._options.onError(this._options.peerJid, errorType, details);
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Callback invoked when the peer connection has received a remote media
|
|
259
|
+
* stream.
|
|
260
|
+
*
|
|
261
|
+
* @param {JitsiRemoteTrack} jitsiRemoteTrack - The remote media stream
|
|
262
|
+
* wrapped in {@code JitsiRemoteTrack}.
|
|
263
|
+
* @private
|
|
264
|
+
* @returns {void}
|
|
265
|
+
*/
|
|
266
|
+
_onRemoteStream(jitsiRemoteTrack) {
|
|
267
|
+
this._tracks.push(jitsiRemoteTrack);
|
|
268
|
+
this._options.onRemoteStream(jitsiRemoteTrack);
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Callback invoked when {@code JingleSessionPC} needs to signal a message
|
|
272
|
+
* out to the remote peer.
|
|
273
|
+
*
|
|
274
|
+
* @param {XML} iq - The message to signal out.
|
|
275
|
+
* @param {Function} callback - Callback when the IQ was acknowledged.
|
|
276
|
+
* @private
|
|
277
|
+
* @returns {void}
|
|
278
|
+
*/
|
|
279
|
+
_onSendMessage(iq, callback) {
|
|
280
|
+
this._options.onSendMessage(this._options.peerJid, iq);
|
|
281
|
+
if (callback) {
|
|
282
|
+
// Fake some time to receive the acknowledge.
|
|
283
|
+
setTimeout(callback, 250);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Callback invoked in response to an agreement to start a proxy connection.
|
|
288
|
+
* The passed in jingle element should contain an SDP answer to a previously
|
|
289
|
+
* sent SDP offer.
|
|
290
|
+
*
|
|
291
|
+
* @param {Element} jingleElement - The jingle element.
|
|
292
|
+
* @private
|
|
293
|
+
* @returns {void}
|
|
294
|
+
*/
|
|
295
|
+
_onSessionAccept(jingleElement) {
|
|
296
|
+
if (!this._peerConnection) {
|
|
297
|
+
logger.error('Received an answer when no peer connection exists.');
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
this._peerConnection.setAnswer(jingleElement);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Callback invoked in response to a request to start a proxy connection.
|
|
304
|
+
* The passed in jingle element should contain an SDP offer.
|
|
305
|
+
*
|
|
306
|
+
* @param {Element} jingleElement - The jingle element.
|
|
307
|
+
* @private
|
|
308
|
+
* @returns {void}
|
|
309
|
+
*/
|
|
310
|
+
_onSessionInitiate(jingleElement) {
|
|
311
|
+
if (this._peerConnection) {
|
|
312
|
+
logger.error('Received an offer when an offer was already sent.');
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
this._peerConnection = this._createPeerConnection();
|
|
316
|
+
this._peerConnection.acceptOffer(jingleElement, () => { }, () => this._onError(this._options.peerJid, ACTIONS.CONNECTION_ERROR, 'session initiate error'), []);
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Callback invoked in response to a request to disconnect an active proxy
|
|
320
|
+
* connection. Cleans up tracks and the peer connection.
|
|
321
|
+
*
|
|
322
|
+
* @private
|
|
323
|
+
* @returns {void}
|
|
324
|
+
*/
|
|
325
|
+
_onSessionTerminate() {
|
|
326
|
+
this._tracks.forEach(track => track.dispose());
|
|
327
|
+
this._tracks = [];
|
|
328
|
+
if (this._peerConnection) {
|
|
329
|
+
this._peerConnection.onTerminated();
|
|
330
|
+
}
|
|
331
|
+
if (this._rtc) {
|
|
332
|
+
this._rtc.removeListener(RTCEvents.REMOTE_TRACK_ADDED, this._onRemoteStream);
|
|
333
|
+
this._rtc.destroy();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Callback invoked in response to ICE candidates from the remote peer.
|
|
338
|
+
* The passed in jingle element should contain an ICE candidate.
|
|
339
|
+
*
|
|
340
|
+
* @param {Element} jingleElement - The jingle element.
|
|
341
|
+
* @private
|
|
342
|
+
* @returns {void}
|
|
343
|
+
*/
|
|
344
|
+
_onTransportInfo(jingleElement) {
|
|
345
|
+
this._peerConnection.addIceCandidates(jingleElement);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
//# sourceMappingURL=ProxyConnectionPC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyConnectionPC.js","sourceRoot":"","sources":["../../../../modules/proxyconnection/ProxyConnectionPC.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,eAAe,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,MAAM,MAAM,GAAG,SAAS,CAAC,mCAAmC,CAAC,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAClC;;;;;;;;;;;;;;OAcG;IACH,YAAY,OAAO,GAAG,EAAE;QACpB,IAAI,CAAC,QAAQ,GAAG;YACZ,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,EAAE;YACZ,YAAY,EAAE,KAAK;YACnB,YAAY,EAAE,KAAK;YACnB,GAAG,OAAO;SACb,CAAC;QAEF;;;;;WAKG;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB;;;;WAIG;QACH,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,sEAAsE;QACtE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IACjC,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,aAAa;QACxB,QAAQ,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;YAChD,KAAK,OAAO,CAAC,MAAM;gBACf,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACrC,MAAM;YAEV,KAAK,OAAO,CAAC,QAAQ;gBACjB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACvC,MAAM;YAEV,KAAK,OAAO,CAAC,SAAS;gBAClB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBACxC,MAAM;YAEV,KAAK,OAAO,CAAC,cAAc;gBACvB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;gBACrC,MAAM;QACV,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,WAAW,GAAG,EAAE;QAClB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,OAAO;QACX,CAAC;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAEhD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEpD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;OAKG;IACH,IAAI;QACA,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC;QACrC,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACH,qBAAqB;QACjB;;;;;WAKG;QACH,MAAM,UAAU,GAAG,EAAE,CAAC;QAEtB;;;;;;;;WAQG;QACH,MAAM,cAAc,GAAG;YACnB,wGAAwG;YACxG,yEAAyE;YACzE,6CAA6C;YAC7C,sBAAsB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACvC,6CAA6C;YAC7C,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACjC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE;gBACJ,SAAS,EAAE,GAAG,EAAE,GAAgB,CAAC;aACpC;YACD,MAAM,EAAE,IAAI,CAAC,cAAc;SAC9B,CAAC;QAEF;;;;;;;WAOG;QACH,MAAM,YAAY,GAAG;YACjB,UAAU,EAAE,oBAAoB;YAChC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ;SAC5B,CAAC;QAEF;;;;;;;;;;;WAWG;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE;YACpB,QAAQ,KAAK,EAAE,CAAC;gBAChB,KAAK,UAAU,CAAC,qBAAqB,CAAC;gBACtC,KAAK,UAAU,CAAC,iBAAiB;oBAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;oBAC/C,MAAM;YACV,CAAC;QACL,CAAC,CAAC;QAEF;;;;;;;WAOG;QACH,MAAM,QAAQ,GAAG;YACb,gBAAgB,EAAE,GAAG,EAAE,GAAe,CAAC;YACvC,mBAAmB,EAAE,GAAG,EAAE,GAAe,CAAC;YAC1C,eAAe,EAAE,EAAE;YACnB,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;YAC/B,mBAAmB,EAAE,GAAG,EAAE,GAAe,CAAC;YAC1C,sBAAsB,EAAE,GAAG,EAAE,GAAe,CAAC;SAChD,CAAC;QAEF;;;WAGG;QACH,MAAM,cAAc,GAAG;YACnB,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE;SACrB,CAAC;QAEF;;;;;WAKG;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAExC;;;;WAIG;QACH,IAAI,CAAC,IAAI,CAAC,WAAW,CACjB,SAAS,CAAC,kBAAkB,EAC5B,IAAI,CAAC,eAAe,CACvB,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,eAAe,CACtC,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,WAAW;QACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY;QACnC,cAAc,EAAE,aAAa;QAC7B;YACI,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;YAC/C,mBAAmB,EAAE,IAAI,CAAC,QAAQ,CAAC,YAAY;SAClD,EAAE,mBAAmB;QACtB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,QAAQ;QACd,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc;SAC3C,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAElD,cAAc,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAErC;;;WAGG;QACH,cAAc,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QAE3E,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,GAAG,EAAE;QAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;;OAQG;IACH,eAAe,CAAC,gBAAgB;QAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,EAAE,QAAQ;QACvB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEvD,IAAI,QAAQ,EAAE,CAAC;YACX,6CAA6C;YAC7C,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IAED;;;;;;;;OAQG;IACH,gBAAgB,CAAC,aAAa;QAC1B,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAEnE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;OAOG;IACH,kBAAkB,CAAC,aAAa;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAElE,OAAO;QACX,CAAC;QAED,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAEpD,IAAI,CAAC,eAAe,CAAC,WAAW,CAC5B,aAAa,EACb,GAAG,EAAE,GAAgB,CAAC,EACtB,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EACrB,OAAO,CAAC,gBAAgB,EACxB,wBAAwB,CAC3B,EACD,EAAE,CACL,CAAC;IACN,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB;QACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,cAAc,CACpB,SAAS,CAAC,kBAAkB,EAC5B,IAAI,CAAC,eAAe,CACvB,CAAC;YAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB,CAAC,aAAa;QAC1B,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACzD,CAAC;CACJ"}
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { $iq } from 'strophe.js';
|
|
3
|
+
import { findFirst, getAttribute, parseXML } from '../../modules/util/XMLUtils';
|
|
4
|
+
import { MediaType } from '../../service/RTC/MediaType';
|
|
5
|
+
import { getSourceNameForJitsiTrack } from '../../service/RTC/SignalingLayer';
|
|
6
|
+
import { VideoType } from '../../service/RTC/VideoType';
|
|
7
|
+
import RTC from '../RTC/RTC';
|
|
8
|
+
import ProxyConnectionPC from './ProxyConnectionPC';
|
|
9
|
+
import { ACTIONS } from './constants';
|
|
10
|
+
const logger = getLogger('proxyconnection:ProxyConnectionService');
|
|
11
|
+
/**
|
|
12
|
+
* Instantiates a new ProxyConnectionPC and ensures only one exists at a given
|
|
13
|
+
* time. Currently it assumes ProxyConnectionPC is used only for screensharing
|
|
14
|
+
* and assumes IQs to be used for communication.
|
|
15
|
+
*/
|
|
16
|
+
export default class ProxyConnectionService {
|
|
17
|
+
/**
|
|
18
|
+
* Initializes a new {@code ProxyConnectionService} instance.
|
|
19
|
+
*
|
|
20
|
+
* @param {Object} options - Values to initialize the instance with.
|
|
21
|
+
* @param {boolean} [options.convertVideoToDesktop] - Whether or not proxied video should be returned as a desktop
|
|
22
|
+
* stream. Defaults to false.
|
|
23
|
+
* @param {Object} [options.pcConfig] - The {@code RTCConfiguration} to use for the WebRTC peer connection.
|
|
24
|
+
* @param {JitsiConnection} [options.jitsiConnection] - The {@code JitsiConnection} which will be used to fetch
|
|
25
|
+
* TURN credentials for the P2P connection.
|
|
26
|
+
* @param {Function} options.onRemoteStream - Callback to invoke when a remote video stream has been received and
|
|
27
|
+
* converted to a {@code JitsiLocakTrack}. The {@code JitsiLocakTrack} will be passed in.
|
|
28
|
+
* @param {Function} options.onSendMessage - Callback to invoke when a message has to be sent (signaled) out. The
|
|
29
|
+
* arguments passed in are the jid to send the message to and the message.
|
|
30
|
+
*/
|
|
31
|
+
constructor(options = {}) {
|
|
32
|
+
const { jitsiConnection, ...otherOptions } = options;
|
|
33
|
+
/**
|
|
34
|
+
* Holds a reference to the collection of all callbacks.
|
|
35
|
+
*
|
|
36
|
+
* @type {Object}
|
|
37
|
+
*/
|
|
38
|
+
this._options = {
|
|
39
|
+
pcConfig: jitsiConnection && jitsiConnection.xmpp.connection.jingle.p2pIceConfig,
|
|
40
|
+
...otherOptions
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* The active instance of {@code ProxyConnectionService}.
|
|
44
|
+
*
|
|
45
|
+
* @type {ProxyConnectionPC|null}
|
|
46
|
+
*/
|
|
47
|
+
this._peerConnection = null;
|
|
48
|
+
// Bind event handlers so they are only bound once for every instance.
|
|
49
|
+
this._onFatalError = this._onFatalError.bind(this);
|
|
50
|
+
this._onSendMessage = this._onSendMessage.bind(this);
|
|
51
|
+
this._onRemoteStream = this._onRemoteStream.bind(this);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Parses a message object regarding a proxy connection to create a new
|
|
55
|
+
* proxy connection or update and existing connection.
|
|
56
|
+
*
|
|
57
|
+
* @param {Object} message - A message object regarding establishing or
|
|
58
|
+
* updating a proxy connection.
|
|
59
|
+
* @param {Object} message.data - An object containing additional message
|
|
60
|
+
* details.
|
|
61
|
+
* @param {string} message.data.iq - The stringified iq which explains how
|
|
62
|
+
* and what to update regarding the proxy connection.
|
|
63
|
+
* @param {string} message.from - The message sender's full jid. Used for
|
|
64
|
+
* sending replies.
|
|
65
|
+
* @returns {void}
|
|
66
|
+
*/
|
|
67
|
+
processMessage(message) {
|
|
68
|
+
const peerJid = message.from;
|
|
69
|
+
if (!peerJid) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// If a proxy connection has already been established and messages come
|
|
73
|
+
// from another peer jid then those messages should be replied to with
|
|
74
|
+
// a rejection.
|
|
75
|
+
if (this._peerConnection
|
|
76
|
+
&& this._peerConnection.getPeerJid() !== peerJid) {
|
|
77
|
+
this._onFatalError(peerJid, ACTIONS.CONNECTION_ERROR, 'rejected');
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const iq = this._convertStringToXML(message.data.iq);
|
|
81
|
+
const jingleElement = findFirst(iq, 'jingle');
|
|
82
|
+
const action = getAttribute(jingleElement, 'action');
|
|
83
|
+
if (action === ACTIONS.INITIATE) {
|
|
84
|
+
this._peerConnection = this._createPeerConnection(peerJid, {
|
|
85
|
+
isInitiator: false,
|
|
86
|
+
receiveVideo: true
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
// Truthy check for peer connection added to protect against possibly
|
|
90
|
+
// receiving actions before an ACTIONS.INITIATE.
|
|
91
|
+
if (this._peerConnection && jingleElement) {
|
|
92
|
+
this._peerConnection.processMessage(jingleElement);
|
|
93
|
+
}
|
|
94
|
+
// Take additional steps to ensure the peer connection is cleaned up
|
|
95
|
+
// if it is to be closed.
|
|
96
|
+
if (action === ACTIONS.CONNECTION_ERROR
|
|
97
|
+
|| action === ACTIONS.UNAVAILABLE
|
|
98
|
+
|| action === ACTIONS.TERMINATE) {
|
|
99
|
+
this._selfCloseConnection();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Instantiates and initiates a proxy peer connection.
|
|
104
|
+
*
|
|
105
|
+
* @param {string} peerJid - The jid of the remote client that should
|
|
106
|
+
* receive messages.
|
|
107
|
+
* @param {Array<JitsiLocalTrack>} localTracks - Initial media tracks to
|
|
108
|
+
* send through to the peer.
|
|
109
|
+
* @returns {void}
|
|
110
|
+
*/
|
|
111
|
+
start(peerJid, localTracks = []) {
|
|
112
|
+
this._peerConnection = this._createPeerConnection(peerJid, {
|
|
113
|
+
isInitiator: true,
|
|
114
|
+
receiveVideo: false
|
|
115
|
+
});
|
|
116
|
+
localTracks.forEach((localTrack, localTrackIndex) => {
|
|
117
|
+
const localSourceNameTrack = getSourceNameForJitsiTrack('peer', localTrack.getType(), localTrackIndex);
|
|
118
|
+
localTrack.setSourceName(localSourceNameTrack);
|
|
119
|
+
});
|
|
120
|
+
this._peerConnection.start(localTracks);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Terminates any active proxy peer connection.
|
|
124
|
+
*
|
|
125
|
+
* @returns {void}
|
|
126
|
+
*/
|
|
127
|
+
stop() {
|
|
128
|
+
if (this._peerConnection) {
|
|
129
|
+
this._peerConnection.stop();
|
|
130
|
+
}
|
|
131
|
+
this._peerConnection = null;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Transforms a stringified xML into a XML element.
|
|
135
|
+
*
|
|
136
|
+
* @param {string} xml - The XML in string form.
|
|
137
|
+
* @private
|
|
138
|
+
* @returns {Object|null} An element version of the xml. Null will be returned
|
|
139
|
+
* if an error is encountered during transformation.
|
|
140
|
+
*/
|
|
141
|
+
_convertStringToXML(xml) {
|
|
142
|
+
try {
|
|
143
|
+
const xmlDom = parseXML(xml);
|
|
144
|
+
return xmlDom;
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
logger.error('Attempted to convert incorrectly formatted xml');
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Helper for creating an instance of {@code ProxyConnectionPC}.
|
|
153
|
+
*
|
|
154
|
+
* @param {string} peerJid - The jid of the remote peer with which the
|
|
155
|
+
* {@code ProxyConnectionPC} will be established with.
|
|
156
|
+
* @param {Object} options - Additional defaults to instantiate the
|
|
157
|
+
* {@code ProxyConnectionPC} with. See the constructor of ProxyConnectionPC
|
|
158
|
+
* for more details.
|
|
159
|
+
* @private
|
|
160
|
+
* @returns {ProxyConnectionPC}
|
|
161
|
+
*/
|
|
162
|
+
_createPeerConnection(peerJid, options = {}) {
|
|
163
|
+
if (!peerJid) {
|
|
164
|
+
throw new Error('Cannot create ProxyConnectionPC without a peer.');
|
|
165
|
+
}
|
|
166
|
+
const pcOptions = {
|
|
167
|
+
onError: this._onFatalError,
|
|
168
|
+
onRemoteStream: this._onRemoteStream,
|
|
169
|
+
onSendMessage: this._onSendMessage,
|
|
170
|
+
pcConfig: this._options.pcConfig,
|
|
171
|
+
peerJid,
|
|
172
|
+
...options
|
|
173
|
+
};
|
|
174
|
+
return new ProxyConnectionPC(pcOptions);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Callback invoked when an error occurs that should cause
|
|
178
|
+
* {@code ProxyConnectionPC} to be closed if the peer is currently
|
|
179
|
+
* connected. Sends an error message/reply back to the peer.
|
|
180
|
+
*
|
|
181
|
+
* @param {string} peerJid - The peer jid with which the connection was
|
|
182
|
+
* attempted or started, and to which an iq with error details should be
|
|
183
|
+
* sent.
|
|
184
|
+
* @param {string} errorType - The constant indicating the type of the error
|
|
185
|
+
* that occurred.
|
|
186
|
+
* @param {string} details - Optional additional data about the error.
|
|
187
|
+
* @private
|
|
188
|
+
* @returns {void}
|
|
189
|
+
*/
|
|
190
|
+
_onFatalError(peerJid, errorType, details = '') {
|
|
191
|
+
logger.error('Received a proxy connection error', peerJid, errorType, details);
|
|
192
|
+
const iq = $iq({
|
|
193
|
+
to: peerJid,
|
|
194
|
+
type: 'set'
|
|
195
|
+
})
|
|
196
|
+
.c('jingle', {
|
|
197
|
+
action: errorType,
|
|
198
|
+
xmlns: 'urn:xmpp:jingle:1'
|
|
199
|
+
})
|
|
200
|
+
.c('details')
|
|
201
|
+
.t(details)
|
|
202
|
+
.up();
|
|
203
|
+
this._onSendMessage(peerJid, iq);
|
|
204
|
+
if (this._peerConnection
|
|
205
|
+
&& this._peerConnection.getPeerJid() === peerJid) {
|
|
206
|
+
this._selfCloseConnection();
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Callback invoked when the remote peer of the {@code ProxyConnectionPC}
|
|
211
|
+
* has offered a media stream. The stream is converted into a
|
|
212
|
+
* {@code JitsiLocalTrack} for local usage if the {@code onRemoteStream}
|
|
213
|
+
* callback is defined.
|
|
214
|
+
*
|
|
215
|
+
* @param {JitsiRemoteTrack} jitsiRemoteTrack - The {@code JitsiRemoteTrack}
|
|
216
|
+
* for the peer's media stream.
|
|
217
|
+
* @private
|
|
218
|
+
* @returns {void}
|
|
219
|
+
*/
|
|
220
|
+
_onRemoteStream(jitsiRemoteTrack) {
|
|
221
|
+
if (!this._options.onRemoteStream) {
|
|
222
|
+
logger.error('Remote track received without callback.');
|
|
223
|
+
jitsiRemoteTrack.dispose();
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
const isVideo = jitsiRemoteTrack.isVideoTrack();
|
|
227
|
+
let videoType;
|
|
228
|
+
if (isVideo) {
|
|
229
|
+
videoType = this._options.convertVideoToDesktop
|
|
230
|
+
? VideoType.DESKTOP : VideoType.CAMERA;
|
|
231
|
+
}
|
|
232
|
+
// Grab the webrtc media stream and pipe it through the same processing
|
|
233
|
+
// that would occur for a locally obtained media stream.
|
|
234
|
+
const mediaStream = jitsiRemoteTrack.getOriginalStream();
|
|
235
|
+
const jitsiLocalTracks = RTC.createLocalTracks([
|
|
236
|
+
{
|
|
237
|
+
deviceId: `proxy:${this._peerConnection.getPeerJid()}`,
|
|
238
|
+
mediaType: isVideo ? MediaType.VIDEO : MediaType.AUDIO,
|
|
239
|
+
sourceType: 'proxy',
|
|
240
|
+
stream: mediaStream,
|
|
241
|
+
track: mediaStream.getVideoTracks()[0],
|
|
242
|
+
videoType
|
|
243
|
+
}
|
|
244
|
+
]);
|
|
245
|
+
this._options.onRemoteStream(jitsiLocalTracks[0]);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Formats and forwards a message an iq to be sent to a peer jid.
|
|
249
|
+
*
|
|
250
|
+
* @param {string} peerJid - The jid the iq should be sent to.
|
|
251
|
+
* @param {Object} iq - The iq which would be sent to the peer jid.
|
|
252
|
+
* @private
|
|
253
|
+
* @returns {void}
|
|
254
|
+
*/
|
|
255
|
+
_onSendMessage(peerJid, iq) {
|
|
256
|
+
if (!this._options.onSendMessage) {
|
|
257
|
+
return;
|
|
258
|
+
}
|
|
259
|
+
try {
|
|
260
|
+
const stringifiedIq = new XMLSerializer().serializeToString(iq.nodeTree || iq);
|
|
261
|
+
this._options.onSendMessage(peerJid, { iq: stringifiedIq });
|
|
262
|
+
}
|
|
263
|
+
catch (e) {
|
|
264
|
+
logger.error('Attempted to send an incorrectly formatted iq.');
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Invoked when preemptively closing the {@code ProxyConnectionPC}.
|
|
269
|
+
*
|
|
270
|
+
* @private
|
|
271
|
+
* @returns {void}
|
|
272
|
+
*/
|
|
273
|
+
_selfCloseConnection() {
|
|
274
|
+
this.stop();
|
|
275
|
+
this._options.onConnectionClosed
|
|
276
|
+
&& this._options.onConnectionClosed();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=ProxyConnectionService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProxyConnectionService.js","sourceRoot":"","sources":["../../../../modules/proxyconnection/ProxyConnectionService.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The know jingle actions that can be sent and should be acted upon by
|
|
3
|
+
* {@code ProxyConnectionService} and {@code ProxyConnectionPC}.
|
|
4
|
+
*/
|
|
5
|
+
export var ACTIONS;
|
|
6
|
+
(function (ACTIONS) {
|
|
7
|
+
ACTIONS["ACCEPT"] = "session-accept";
|
|
8
|
+
ACTIONS["CONNECTION_ERROR"] = "connection-error-encountered";
|
|
9
|
+
ACTIONS["INITIATE"] = "session-initiate";
|
|
10
|
+
ACTIONS["TERMINATE"] = "session-terminate";
|
|
11
|
+
ACTIONS["TRANSPORT_INFO"] = "transport-info";
|
|
12
|
+
ACTIONS["UNAVAILABLE"] = "unavailable";
|
|
13
|
+
})(ACTIONS || (ACTIONS = {}));
|
|
14
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../modules/proxyconnection/constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAN,IAAY,OAOX;AAPD,WAAY,OAAO;IACf,oCAAyB,CAAA;IACzB,4DAAiD,CAAA;IACjD,wCAA6B,CAAA;IAC7B,0CAA+B,CAAA;IAC/B,4CAAiC,CAAA;IACjC,sCAA2B,CAAA;AAC/B,CAAC,EAPW,OAAO,KAAP,OAAO,QAOlB"}
|