@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,362 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { JitsiTrackEvents } from '../../JitsiTrackEvents';
|
|
3
|
+
import { AnalyticsEvents } from '../../service/statistics/AnalyticsEvents';
|
|
4
|
+
import { StatisticsEvents } from '../../service/statistics/Events';
|
|
5
|
+
import { LOCAL_JID } from '../../service/statistics/constants';
|
|
6
|
+
import RTCStats from '../RTCStats/RTCStats';
|
|
7
|
+
import browser from '../browser';
|
|
8
|
+
import EventEmitter from '../util/EventEmitter';
|
|
9
|
+
import WatchRTC from '../watchRTC/WatchRTC';
|
|
10
|
+
import analytics from './AnalyticsAdapter';
|
|
11
|
+
import LocalStats from './LocalStatsCollector';
|
|
12
|
+
import RTPStats from './RTPStatsCollector';
|
|
13
|
+
const logger = getLogger('stats:statistics');
|
|
14
|
+
/**
|
|
15
|
+
* Statistics class provides various functionality related to collecting and reporting statistics.
|
|
16
|
+
*/
|
|
17
|
+
class Statistics {
|
|
18
|
+
/**
|
|
19
|
+
* Static getter for instances property
|
|
20
|
+
* Returns the Set holding all active Statistics instances. Lazily
|
|
21
|
+
* initializes the Set to allow any Set polyfills to be applied.
|
|
22
|
+
* @type {Set<Statistics>}
|
|
23
|
+
*/
|
|
24
|
+
static get instances() {
|
|
25
|
+
if (!Statistics._instances) {
|
|
26
|
+
Statistics._instances = new Set();
|
|
27
|
+
}
|
|
28
|
+
return Statistics._instances;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Init statistic options
|
|
32
|
+
* @static
|
|
33
|
+
* @param {Object} options - The options to initialize statistics with
|
|
34
|
+
*/
|
|
35
|
+
static init(options) {
|
|
36
|
+
Statistics.audioLevelsEnabled = !options.disableAudioLevels;
|
|
37
|
+
if (typeof options.pcStatsInterval === 'number') {
|
|
38
|
+
Statistics.pcStatsInterval = options.pcStatsInterval;
|
|
39
|
+
}
|
|
40
|
+
if (typeof options.audioLevelsInterval === 'number') {
|
|
41
|
+
Statistics.audioLevelsInterval = options.audioLevelsInterval;
|
|
42
|
+
}
|
|
43
|
+
Statistics.disableThirdPartyRequests = options.disableThirdPartyRequests;
|
|
44
|
+
LocalStats.init();
|
|
45
|
+
WatchRTC.init(options);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Starts collecting local statistics for a track.
|
|
49
|
+
* @static
|
|
50
|
+
* @param {JitsiTrack} track - The track to collect statistics for
|
|
51
|
+
* @param {Function} callback - The callback to invoke with audio levels
|
|
52
|
+
*/
|
|
53
|
+
static startLocalStats(track, callback) {
|
|
54
|
+
if (browser.isIosBrowser()) {
|
|
55
|
+
// On iOS browsers audio is lost if the audio input device is in use by another app
|
|
56
|
+
// https://bugs.webkit.org/show_bug.cgi?id=233473
|
|
57
|
+
// The culprit was using the AudioContext, so now we close the AudioContext during
|
|
58
|
+
// the track being muted, and re-instantiate it afterwards.
|
|
59
|
+
track.addEventListener(JitsiTrackEvents.NO_DATA_FROM_SOURCE,
|
|
60
|
+
/**
|
|
61
|
+
* Closes AudioContext on no audio data, and enables it on data received again.
|
|
62
|
+
*
|
|
63
|
+
* @param {boolean} value - Whether we receive audio data or not.
|
|
64
|
+
*/
|
|
65
|
+
async (value) => {
|
|
66
|
+
if (value) {
|
|
67
|
+
for (const localStat of Statistics.localStats) {
|
|
68
|
+
localStat.stop();
|
|
69
|
+
}
|
|
70
|
+
await LocalStats.disconnectAudioContext();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
LocalStats.connectAudioContext();
|
|
74
|
+
for (const localStat of Statistics.localStats) {
|
|
75
|
+
localStat.start();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
if (!Statistics.audioLevelsEnabled) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
track.addEventListener(JitsiTrackEvents.LOCAL_TRACK_STOPPED, () => {
|
|
84
|
+
Statistics.stopLocalStats(track);
|
|
85
|
+
});
|
|
86
|
+
const stream = track.getOriginalStream();
|
|
87
|
+
const localStats = new LocalStats(stream, Statistics.audioLevelsInterval, callback);
|
|
88
|
+
this.localStats.push(localStats);
|
|
89
|
+
localStats.start();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Stops collecting local statistics for a track.
|
|
93
|
+
* @static
|
|
94
|
+
* @param {JitsiTrack} track - The track to stop collecting statistics for
|
|
95
|
+
*/
|
|
96
|
+
static stopLocalStats(track) {
|
|
97
|
+
if (!Statistics.audioLevelsEnabled) {
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const stream = track.getOriginalStream();
|
|
101
|
+
for (let i = 0; i < Statistics.localStats.length; i++) {
|
|
102
|
+
if (Statistics.localStats[i].stream === stream) {
|
|
103
|
+
const localStats = Statistics.localStats.splice(i, 1);
|
|
104
|
+
localStats[0].stop();
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Sends event to analytics and logs a message to the logger/console.
|
|
111
|
+
* @static
|
|
112
|
+
* @param {string | Object} event - The event name, or an object which represents the entire event
|
|
113
|
+
* @param {Object} properties - Properties to attach to the event
|
|
114
|
+
*/
|
|
115
|
+
static sendAnalyticsAndLog(event, properties = {}) {
|
|
116
|
+
if (!event) {
|
|
117
|
+
logger.warn('No event or event name given.');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
let eventToLog;
|
|
121
|
+
// Also support an API with a single object as an event.
|
|
122
|
+
if (typeof event === 'object') {
|
|
123
|
+
eventToLog = event;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
eventToLog = {
|
|
127
|
+
name: event,
|
|
128
|
+
properties
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
logger.debug(JSON.stringify(eventToLog));
|
|
132
|
+
// We do this last, because it may modify the object which is passed.
|
|
133
|
+
this.analytics.sendEvent(event, properties);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Sends event to analytics.
|
|
137
|
+
* @static
|
|
138
|
+
* @param {string | Object} eventName - The event name, or an object which represents the entire event
|
|
139
|
+
* @param {Object} properties - Properties to attach to the event
|
|
140
|
+
*/
|
|
141
|
+
static sendAnalytics(eventName, properties = {}) {
|
|
142
|
+
this.analytics.sendEvent(eventName, properties);
|
|
143
|
+
}
|
|
144
|
+
constructor(conference, options) {
|
|
145
|
+
/**
|
|
146
|
+
* {@link RTPStats} mapped by {@link TraceablePeerConnection.id} which
|
|
147
|
+
* collect RTP statistics for each peerconnection.
|
|
148
|
+
* @type {Map<string, RTPStats>}
|
|
149
|
+
*/
|
|
150
|
+
this.rtpStatsMap = new Map();
|
|
151
|
+
this.eventEmitter = new EventEmitter();
|
|
152
|
+
this.conference = conference;
|
|
153
|
+
this.xmpp = conference?.xmpp;
|
|
154
|
+
this.options = options || {};
|
|
155
|
+
Statistics.instances.add(this);
|
|
156
|
+
RTCStats.attachToConference(this.conference);
|
|
157
|
+
// WatchRTC is not required to work for react native
|
|
158
|
+
if (!browser.isReactNative()) {
|
|
159
|
+
WatchRTC.start(this.options.roomName, this.options.userName);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Starts collecting RTP stats for given peerconnection.
|
|
164
|
+
* @param {TraceablePeerConnection} peerconnection
|
|
165
|
+
*/
|
|
166
|
+
startRemoteStats(peerconnection) {
|
|
167
|
+
this.stopRemoteStats(peerconnection);
|
|
168
|
+
try {
|
|
169
|
+
const rtpStats = new RTPStats(peerconnection, Statistics.audioLevelsInterval, Statistics.pcStatsInterval, this.eventEmitter);
|
|
170
|
+
rtpStats.start(Statistics.audioLevelsEnabled);
|
|
171
|
+
this.rtpStatsMap.set(String(peerconnection.id), rtpStats);
|
|
172
|
+
}
|
|
173
|
+
catch (e) {
|
|
174
|
+
logger.error(`Failed to start collecting remote statistics: ${e}`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Adds a listener for audio level events.
|
|
179
|
+
* @param {Function} listener - The listener to add
|
|
180
|
+
*/
|
|
181
|
+
addAudioLevelListener(listener) {
|
|
182
|
+
if (!Statistics.audioLevelsEnabled) {
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
this.eventEmitter.on(StatisticsEvents.AUDIO_LEVEL, listener);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Removes an audio level listener.
|
|
189
|
+
* @param {Function} listener - The listener to remove
|
|
190
|
+
*/
|
|
191
|
+
removeAudioLevelListener(listener) {
|
|
192
|
+
if (!Statistics.audioLevelsEnabled) {
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
this.eventEmitter.removeListener(StatisticsEvents.AUDIO_LEVEL, listener);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Adds a listener for before disposed events.
|
|
199
|
+
* @param {Function} listener - The listener to add
|
|
200
|
+
*/
|
|
201
|
+
addBeforeDisposedListener(listener) {
|
|
202
|
+
this.eventEmitter.on(StatisticsEvents.BEFORE_DISPOSED, listener);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Removes a before disposed listener.
|
|
206
|
+
* @param {Function} listener - The listener to remove
|
|
207
|
+
*/
|
|
208
|
+
removeBeforeDisposedListener(listener) {
|
|
209
|
+
this.eventEmitter.removeListener(StatisticsEvents.BEFORE_DISPOSED, listener);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Adds a listener for connection stats events.
|
|
213
|
+
* @param {Function} listener - The listener to add
|
|
214
|
+
*/
|
|
215
|
+
addConnectionStatsListener(listener) {
|
|
216
|
+
this.eventEmitter.on(StatisticsEvents.CONNECTION_STATS, listener);
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Removes a connection stats listener.
|
|
220
|
+
* @param {Function} listener - The listener to remove
|
|
221
|
+
*/
|
|
222
|
+
removeConnectionStatsListener(listener) {
|
|
223
|
+
this.eventEmitter.removeListener(StatisticsEvents.CONNECTION_STATS, listener);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Adds a listener for encode time stats events.
|
|
227
|
+
* @param {Function} listener - The listener to add
|
|
228
|
+
*/
|
|
229
|
+
addEncodeTimeStatsListener(listener) {
|
|
230
|
+
this.eventEmitter.on(StatisticsEvents.ENCODE_TIME_STATS, listener);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Removes an encode time stats listener.
|
|
234
|
+
* @param {Function} listener - The listener to remove
|
|
235
|
+
*/
|
|
236
|
+
removeEncodeTimeStatsListener(listener) {
|
|
237
|
+
this.eventEmitter.removeListener(StatisticsEvents.ENCODE_TIME_STATS, listener);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Adds a listener for byte sent stats events.
|
|
241
|
+
* @param {Function} listener - The listener to add
|
|
242
|
+
*/
|
|
243
|
+
addByteSentStatsListener(listener) {
|
|
244
|
+
this.eventEmitter.on(StatisticsEvents.BYTE_SENT_STATS, listener);
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Removes a byte sent stats listener.
|
|
248
|
+
* @param {Function} listener - The listener to remove
|
|
249
|
+
*/
|
|
250
|
+
removeByteSentStatsListener(listener) {
|
|
251
|
+
this.eventEmitter.removeListener(StatisticsEvents.BYTE_SENT_STATS, listener);
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Updates the list of speakers for which the audio levels are to be calculated. This is needed for the jvb pc only.
|
|
255
|
+
*
|
|
256
|
+
* @param {Array<string>} speakerList The list of remote endpoint ids.
|
|
257
|
+
* @returns {void}
|
|
258
|
+
*/
|
|
259
|
+
setSpeakerList(speakerList) {
|
|
260
|
+
for (const rtpStats of Array.from(this.rtpStatsMap.values())) {
|
|
261
|
+
if (!rtpStats.peerconnection.isP2P) {
|
|
262
|
+
rtpStats.setSpeakerList(speakerList);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Disposes of this instance, stopping any ongoing stats collection.
|
|
268
|
+
*/
|
|
269
|
+
dispose() {
|
|
270
|
+
try {
|
|
271
|
+
this.eventEmitter.emit(StatisticsEvents.BEFORE_DISPOSED);
|
|
272
|
+
for (const tpcId of this.rtpStatsMap.keys()) {
|
|
273
|
+
this._stopRemoteStats(tpcId);
|
|
274
|
+
}
|
|
275
|
+
if (this.eventEmitter) {
|
|
276
|
+
this.eventEmitter.removeAllListeners();
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
finally {
|
|
280
|
+
Statistics.instances.delete(this);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Stops remote RTP stats for given peerconnection ID.
|
|
285
|
+
* @param {string} tpcId {@link TraceablePeerConnection.id}
|
|
286
|
+
* @private
|
|
287
|
+
*/
|
|
288
|
+
_stopRemoteStats(tpcId) {
|
|
289
|
+
const rtpStats = this.rtpStatsMap.get(tpcId);
|
|
290
|
+
if (rtpStats) {
|
|
291
|
+
rtpStats.stop();
|
|
292
|
+
this.rtpStatsMap.delete(tpcId);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* Stops collecting RTP stats for given peerconnection
|
|
297
|
+
* @param {TraceablePeerConnection} tpc
|
|
298
|
+
*/
|
|
299
|
+
stopRemoteStats(tpc) {
|
|
300
|
+
this._stopRemoteStats(String(tpc.id));
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Sends the given feedback
|
|
304
|
+
*
|
|
305
|
+
* @param {number} overall an integer between 1 and 5 indicating the user's rating.
|
|
306
|
+
* @param {string} comment the comment from the user.
|
|
307
|
+
* @returns {Promise} Resolves immediately.
|
|
308
|
+
*/
|
|
309
|
+
sendFeedback(overall, comment) {
|
|
310
|
+
// Statistics.analytics.sendEvent is currently fire and forget, without
|
|
311
|
+
// confirmation of successful send.
|
|
312
|
+
Statistics.analytics.sendEvent(AnalyticsEvents.FEEDBACK, {
|
|
313
|
+
comment,
|
|
314
|
+
rating: overall
|
|
315
|
+
});
|
|
316
|
+
return Promise.resolve();
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Flag indicating whether audio levels are enabled or not.
|
|
321
|
+
* @static
|
|
322
|
+
* @type {boolean}
|
|
323
|
+
*/
|
|
324
|
+
Statistics.audioLevelsEnabled = false;
|
|
325
|
+
/**
|
|
326
|
+
* The interval for audio levels stats collection.
|
|
327
|
+
* @static
|
|
328
|
+
* @type {number}
|
|
329
|
+
*/
|
|
330
|
+
Statistics.audioLevelsInterval = 200;
|
|
331
|
+
/**
|
|
332
|
+
* The interval for peer connection stats collection.
|
|
333
|
+
* @static
|
|
334
|
+
* @type {number}
|
|
335
|
+
*/
|
|
336
|
+
Statistics.pcStatsInterval = 10000;
|
|
337
|
+
/**
|
|
338
|
+
* Flag indicating whether third party requests are disabled.
|
|
339
|
+
* @static
|
|
340
|
+
* @type {boolean}
|
|
341
|
+
*/
|
|
342
|
+
Statistics.disableThirdPartyRequests = false;
|
|
343
|
+
/**
|
|
344
|
+
* Analytics adapter for sending events.
|
|
345
|
+
* @static
|
|
346
|
+
* @type {Object}
|
|
347
|
+
*/
|
|
348
|
+
Statistics.analytics = analytics;
|
|
349
|
+
/**
|
|
350
|
+
* Array holding local statistics collectors.
|
|
351
|
+
* @static
|
|
352
|
+
* @type {Array}
|
|
353
|
+
*/
|
|
354
|
+
Statistics.localStats = [];
|
|
355
|
+
/**
|
|
356
|
+
* Local JID constant.
|
|
357
|
+
* @static
|
|
358
|
+
* @type {string}
|
|
359
|
+
*/
|
|
360
|
+
Statistics.LOCAL_JID = LOCAL_JID;
|
|
361
|
+
export default Statistics;
|
|
362
|
+
//# sourceMappingURL=statistics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statistics.js","sourceRoot":"","sources":["../../../../modules/statistics/statistics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAG/D,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAC5C,OAAO,OAAO,MAAM,YAAY,CAAC;AACjC,OAAO,YAAY,MAAM,sBAAsB,CAAC;AAChD,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAE3C,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAa7C;;GAEG;AACH,MAAqB,UAAU;IAO3B;;;;;OAKG;IACH,MAAM,KAAK,SAAS;QAChB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YACzB,UAAU,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAC;QACtC,CAAC;QAED,OAAO,UAAU,CAAC,UAAU,CAAC;IACjC,CAAC;IAsDD;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAC,OAKX;QACG,UAAU,CAAC,kBAAkB,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC5D,IAAI,OAAO,OAAO,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC9C,UAAU,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QACzD,CAAC;QACD,IAAI,OAAO,OAAO,CAAC,mBAAmB,KAAK,QAAQ,EAAE,CAAC;YAClD,UAAU,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACjE,CAAC;QACD,UAAU,CAAC,yBAAyB,GAAG,OAAO,CAAC,yBAAyB,CAAC;QACzE,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,KAAiB,EAAE,QAAsC;QAC5E,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YACzB,mFAAmF;YACnF,iDAAiD;YACjD,kFAAkF;YAClF,2DAA2D;YAC3D,KAAK,CAAC,gBAAgB,CAClB,gBAAgB,CAAC,mBAAmB;YACpC;;;;eAIG;YACH,KAAK,EAAE,KAAc,EAAE,EAAE;gBACrB,IAAI,KAAK,EAAE,CAAC;oBACR,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC5C,SAAS,CAAC,IAAI,EAAE,CAAC;oBACrB,CAAC;oBACD,MAAM,UAAU,CAAC,sBAAsB,EAAE,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACJ,UAAU,CAAC,mBAAmB,EAAE,CAAC;oBACjC,KAAK,MAAM,SAAS,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;wBAC5C,SAAS,CAAC,KAAK,EAAE,CAAC;oBACtB,CAAC;gBACL,CAAC;YACL,CAAC,CACJ,CAAC;QACN,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,KAAK,CAAC,gBAAgB,CAClB,gBAAgB,CAAC,mBAAmB,EACpC,GAAG,EAAE;YACD,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CACJ,CAAC;QACF,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAEpF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,UAAU,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,cAAc,CAAC,KAAiB;QACnC,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpD,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC7C,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAEtD,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACrB,MAAM;YACV,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,KAAmC,EAAE,aAAkC,EAAE;QAChG,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;YAE7C,OAAO;QACX,CAAC;QACD,IAAI,UAAU,CAAC;QAEf,wDAAwD;QACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,UAAU,GAAG,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACJ,UAAU,GAAG;gBACT,IAAI,EAAE,KAAK;gBACX,UAAU;aACb,CAAC;QACN,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,qEAAqE;QACrE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,SAAuC,EAAE,aAAkC,EAAE;QAC9F,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpD,CAAC;IAkBD,YAAY,UAA2B,EAAE,OAA2B;QAChE;;;;WAIG;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,UAAU,EAAE,IAAI,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAK,EAAyB,CAAC;QACrD,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,oDAAoD;QACpD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;YAC3B,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACjE,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,cAAuC;QACpD,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACrC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CACzB,cAAc,EACd,UAAU,CAAC,mBAAmB,EAC9B,UAAU,CAAC,eAAe,EAC1B,IAAI,CAAC,YAAY,CACpB,CAAC;YAEF,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;YAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,qBAAqB,CAAC,QAAkC;QACpD,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,QAAkC;QACvD,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC;YACjC,OAAO;QACX,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,QAAkC;QACxD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAAC,QAAkC;QAC3D,IAAI,CAAC,YAAY,CAAC,cAAc,CAC5B,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACpD,CAAC;IAED;;;OAGG;IACH,0BAA0B,CAAC,QAAkC;QACzD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAAC,QAAkC;QAC5D,IAAI,CAAC,YAAY,CAAC,cAAc,CAC5B,gBAAgB,CAAC,gBAAgB,EACjC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,0BAA0B,CAAC,QAAkC;QACzD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACH,6BAA6B,CAAC,QAAkC;QAC5D,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACnF,CAAC;IAED;;;OAGG;IACH,wBAAwB,CAAC,QAAkC;QACvD,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;OAGG;IACH,2BAA2B,CAAC,QAAkC;QAC1D,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,eAAe,EAC7D,QAAQ,CAAC,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,WAAqB;QAChC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBACjC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,CAAC;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;YACzD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;YAC3C,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,gBAAgB,CAAC,KAAa;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,QAAQ,EAAE,CAAC;YACX,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,GAA4B;QACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,YAAY,CAAC,OAAe,EAAE,OAAe;QACzC,uEAAuE;QACvE,mCAAmC;QACnC,UAAU,CAAC,SAAS,CAAC,SAAS,CAC1B,eAAe,CAAC,QAAQ,EACxB;YACI,OAAO;YACP,MAAM,EAAE,OAAO;SAClB,CAAC,CAAC;QAEP,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;;AAjZD;;;;GAIG;AACI,6BAAkB,GAAY,KAAK,CAAC;AAE3C;;;;GAIG;AACI,8BAAmB,GAAW,GAAG,CAAC;AAEzC;;;;GAIG;AACI,0BAAe,GAAW,KAAK,CAAC;AAEvC;;;;GAIG;AACI,oCAAyB,GAAY,KAAK,CAAC;AAElD;;;;GAIG;AACI,oBAAS,GAGZ,SAAS,CAAC;AAEd;;;;GAIG;AACI,qBAAU,GAAiB,EAAE,CAAC;AAErC;;;;GAIG;AACI,oBAAS,GAAW,SAAS,CAAC;eAvEpB,UAAU"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { getLogger } from '@jitsi/logger';
|
|
2
|
+
import { queue } from 'async-es';
|
|
3
|
+
const logger = getLogger('utils:AsyncQueue');
|
|
4
|
+
/**
|
|
5
|
+
* Error to be passed to a callback of a queued task when the queue is cleared.
|
|
6
|
+
*/
|
|
7
|
+
export class ClearedQueueError extends Error {
|
|
8
|
+
/**
|
|
9
|
+
* Creates new instance.
|
|
10
|
+
*/
|
|
11
|
+
constructor(message) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.name = 'ClearedQueueError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A queue for async task execution.
|
|
18
|
+
*/
|
|
19
|
+
export default class AsyncQueue {
|
|
20
|
+
/**
|
|
21
|
+
* Creates new instance.
|
|
22
|
+
*/
|
|
23
|
+
constructor() {
|
|
24
|
+
this._queue = queue(this._processQueueTasks.bind(this), 1);
|
|
25
|
+
this._stopped = false;
|
|
26
|
+
this._taskCallbacks = new Map();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Internal task processing implementation which makes things work.
|
|
30
|
+
*/
|
|
31
|
+
_processQueueTasks(task, finishedCallback) {
|
|
32
|
+
try {
|
|
33
|
+
task(finishedCallback);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
logger.error(`Task failed: ${error?.stack}`);
|
|
37
|
+
finishedCallback(error);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
this._taskCallbacks.delete(task);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Removes any pending tasks from the queue.
|
|
45
|
+
*/
|
|
46
|
+
clear() {
|
|
47
|
+
for (const finishedCallback of this._taskCallbacks.values()) {
|
|
48
|
+
try {
|
|
49
|
+
finishedCallback?.(new ClearedQueueError('The queue has been cleared'));
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.error('Error in callback while clearing the queue:', error);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
this._queue.kill();
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pauses the execution of the tasks on the queue.
|
|
59
|
+
*/
|
|
60
|
+
pause() {
|
|
61
|
+
this._queue.pause();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The 'task' function will be given a callback it MUST call with either:
|
|
65
|
+
* 1) No arguments if it was successful or
|
|
66
|
+
* 2) An error argument if there was an error
|
|
67
|
+
* If the task wants to process the success or failure of the task, it
|
|
68
|
+
* should pass the {@code callback} to the push function, e.g.:
|
|
69
|
+
* queue.push(task, (err) => {
|
|
70
|
+
* if (err) {
|
|
71
|
+
* // error handling
|
|
72
|
+
* } else {
|
|
73
|
+
* // success handling
|
|
74
|
+
* }
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* @param {Task} task - The task to be executed. See the description above.
|
|
78
|
+
* @param {TaskCallback} [callback] - Optional callback to be called after the task has been executed.
|
|
79
|
+
*/
|
|
80
|
+
push(task, callback) {
|
|
81
|
+
if (this._stopped) {
|
|
82
|
+
callback && callback(new Error('The queue has been stopped'));
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
this._taskCallbacks.set(task, callback);
|
|
86
|
+
this._queue.push(task, callback);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Resumes the execution of the tasks on the queue.
|
|
90
|
+
*/
|
|
91
|
+
resume() {
|
|
92
|
+
this._queue.resume();
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Shutdowns the queue. All already queued tasks will execute, but no future tasks can be added. If a task is added
|
|
96
|
+
* after the queue has been shutdown then the callback will be called with an error.
|
|
97
|
+
*/
|
|
98
|
+
shutdown() {
|
|
99
|
+
this._stopped = true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=AsyncQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncQueue.js","sourceRoot":"","sources":["../../../../modules/util/AsyncQueue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAgC,KAAK,EAAE,MAAM,UAAU,CAAC;AAE/D,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IACxC;;OAEG;IACH,YAAY,OAAe;QACvB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IACpC,CAAC;CACJ;AAKD;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAK3B;;OAEG;IACH;QACI,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAU,EAAE,gBAA8B;QACjE,IAAI,CAAC;YACD,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK;QACD,KAAK,MAAM,gBAAgB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1D,IAAI,CAAC;gBACD,gBAAgB,EAAE,CAAC,IAAI,iBAAiB,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAC5E,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,IAAU,EAAE,QAAuB;QACpC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChB,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAE9D,OAAO;QACX,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,QAAQ;QACJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;CACJ"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Promise-like object which can be passed around for resolving it later. It
|
|
3
|
+
* implements the "thenable" interface, so it can be used wherever a Promise
|
|
4
|
+
* could be used.
|
|
5
|
+
*
|
|
6
|
+
* In addition a "reject on timeout" functionality is provided.
|
|
7
|
+
*/
|
|
8
|
+
export default class Deferred {
|
|
9
|
+
/**
|
|
10
|
+
* Instantiates a Deferred object.
|
|
11
|
+
*/
|
|
12
|
+
constructor() {
|
|
13
|
+
this.promise = new Promise((resolve, reject) => {
|
|
14
|
+
this.resolve = (value) => {
|
|
15
|
+
this.clearRejectTimeout();
|
|
16
|
+
resolve(value);
|
|
17
|
+
};
|
|
18
|
+
this.reject = (reason) => {
|
|
19
|
+
this.clearRejectTimeout();
|
|
20
|
+
reject(reason);
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
this.then = this.promise.then.bind(this.promise);
|
|
24
|
+
this.catch = this.promise.catch.bind(this.promise);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Clears the reject timeout.
|
|
28
|
+
*/
|
|
29
|
+
clearRejectTimeout() {
|
|
30
|
+
clearTimeout(this._timeout);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Rejects the promise after the given timeout.
|
|
34
|
+
*/
|
|
35
|
+
setRejectTimeout(ms) {
|
|
36
|
+
this._timeout = setTimeout(() => {
|
|
37
|
+
this.reject(new Error('timeout'));
|
|
38
|
+
}, ms);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Deferred.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../../../../modules/util/Deferred.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ;IAQzB;;OAEG;IACH;QACI,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,OAAO,GAAG,CAAC,KAAyB,EAAE,EAAE;gBACzC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;YACF,IAAI,CAAC,MAAM,GAAG,CAAC,MAAY,EAAE,EAAE;gBAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;QACN,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,kBAAkB;QACd,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,EAAU;QACvB,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,CAAC,EAAE,EAAE,CAAC,CAAC;IACX,CAAC;CACJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { EventEmitter as NodeEventEmitter } from 'events';
|
|
2
|
+
/**
|
|
3
|
+
* The class creates our own EventEmitter instance
|
|
4
|
+
*/
|
|
5
|
+
export default class EventEmitter extends NodeEventEmitter {
|
|
6
|
+
/**
|
|
7
|
+
* Creates new instance.
|
|
8
|
+
* @constructor
|
|
9
|
+
*/
|
|
10
|
+
constructor() {
|
|
11
|
+
super();
|
|
12
|
+
// aliases for addListener/removeListener
|
|
13
|
+
this.addEventListener = this.addListener;
|
|
14
|
+
this.removeEventListener = this.removeListener;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=EventEmitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitter.js","sourceRoot":"","sources":["../../../../modules/util/EventEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI1D;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,gBAAgB;IAItD;;;OAGG;IACH;QACI,KAAK,EAAE,CAAC;QAER,yCAAyC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;IACnD,CAAC;CACJ"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implements utility to forward events from one eventEmitter to another.
|
|
3
|
+
* @param src {object} instance of EventEmitter or another class that implements
|
|
4
|
+
* addListener method which will register listener to EventEmitter instance.
|
|
5
|
+
* @param dest {object} instance of EventEmitter or another class that
|
|
6
|
+
* implements emit method which will emit an event.
|
|
7
|
+
*/
|
|
8
|
+
export default class EventEmitterForwarder {
|
|
9
|
+
/**
|
|
10
|
+
* @constructor
|
|
11
|
+
*/
|
|
12
|
+
constructor(src, dest) {
|
|
13
|
+
if (!src || !dest || typeof src.addListener !== 'function' || typeof dest.emit !== 'function') {
|
|
14
|
+
throw new Error('Invalid arguments passed to EventEmitterForwarder');
|
|
15
|
+
}
|
|
16
|
+
this.src = src;
|
|
17
|
+
this.dest = dest;
|
|
18
|
+
this.listeners = new Map();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Adds event to be forwarded from src to dest.
|
|
22
|
+
* @param srcEvent {string} the event that EventEmitterForwarder is listening
|
|
23
|
+
* for.
|
|
24
|
+
* @param dstEvent {string} the event that will be fired from dest.
|
|
25
|
+
* @param arguments all other passed arguments are going to be fired with
|
|
26
|
+
* dstEvent.
|
|
27
|
+
*/
|
|
28
|
+
forward(...args) {
|
|
29
|
+
const srcEvent = args[0];
|
|
30
|
+
// This will be the "this" value for emit function.
|
|
31
|
+
args[0] = this.dest;
|
|
32
|
+
// Using bind.apply to pass the arguments as Array-like object ("arguments")
|
|
33
|
+
const newListener = Function.prototype.bind.apply(this.dest.emit, args);
|
|
34
|
+
this.src.addListener(srcEvent, newListener);
|
|
35
|
+
this.listeners.set(srcEvent, newListener);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Clears the listeners for the supplied events.
|
|
39
|
+
*
|
|
40
|
+
* @param args all the events which listeners to be cleaned.
|
|
41
|
+
*/
|
|
42
|
+
removeListeners(...args) {
|
|
43
|
+
args.forEach(a => {
|
|
44
|
+
const l = this.listeners.get(a);
|
|
45
|
+
if (l) {
|
|
46
|
+
this.src.removeListener(a, l);
|
|
47
|
+
this.listeners.delete(a);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=EventEmitterForwarder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventEmitterForwarder.js","sourceRoot":"","sources":["../../../../modules/util/EventEmitterForwarder.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,qBAAqB;IAKtC;;OAEG;IACH,YAAY,GAAQ,EAAE,IAAS;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,GAAG,IAAI;QACX,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEzB,mDAAmD;QACnD,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAEpB,4EAA4E;QAC5E,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAExE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,eAAe,CAAC,GAAG,IAAI;QACnB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACb,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEhC,IAAI,CAAC,EAAE,CAAC;gBACJ,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ"}
|