@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.
Files changed (350) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +26 -0
  3. package/dist/esm/JitsiConference.js +3692 -0
  4. package/dist/esm/JitsiConference.js.map +1 -0
  5. package/dist/esm/JitsiConferenceErrors.js +126 -0
  6. package/dist/esm/JitsiConferenceErrors.js.map +1 -0
  7. package/dist/esm/JitsiConferenceEventManager.js +424 -0
  8. package/dist/esm/JitsiConferenceEventManager.js.map +1 -0
  9. package/dist/esm/JitsiConferenceEvents.js +431 -0
  10. package/dist/esm/JitsiConferenceEvents.js.map +1 -0
  11. package/dist/esm/JitsiConnection.js +187 -0
  12. package/dist/esm/JitsiConnection.js.map +1 -0
  13. package/dist/esm/JitsiConnectionErrors.js +52 -0
  14. package/dist/esm/JitsiConnectionErrors.js.map +1 -0
  15. package/dist/esm/JitsiConnectionEvents.js +57 -0
  16. package/dist/esm/JitsiConnectionEvents.js.map +1 -0
  17. package/dist/esm/JitsiMediaDevices.js +221 -0
  18. package/dist/esm/JitsiMediaDevices.js.map +1 -0
  19. package/dist/esm/JitsiMediaDevicesEvents.js +29 -0
  20. package/dist/esm/JitsiMediaDevicesEvents.js.map +1 -0
  21. package/dist/esm/JitsiMeetJS.js +499 -0
  22. package/dist/esm/JitsiMeetJS.js.map +1 -0
  23. package/dist/esm/JitsiParticipant.js +323 -0
  24. package/dist/esm/JitsiParticipant.js.map +1 -0
  25. package/dist/esm/JitsiTrackError.js +122 -0
  26. package/dist/esm/JitsiTrackError.js.map +1 -0
  27. package/dist/esm/JitsiTrackErrors.js +91 -0
  28. package/dist/esm/JitsiTrackErrors.js.map +1 -0
  29. package/dist/esm/JitsiTrackEvents.js +60 -0
  30. package/dist/esm/JitsiTrackEvents.js.map +1 -0
  31. package/dist/esm/JitsiTranscriptionStatus.js +15 -0
  32. package/dist/esm/JitsiTranscriptionStatus.js.map +1 -0
  33. package/dist/esm/modules/RTC/BridgeChannel.js +398 -0
  34. package/dist/esm/modules/RTC/BridgeChannel.js.map +1 -0
  35. package/dist/esm/modules/RTC/JitsiLocalTrack.js +896 -0
  36. package/dist/esm/modules/RTC/JitsiLocalTrack.js.map +1 -0
  37. package/dist/esm/modules/RTC/JitsiRemoteTrack.js +427 -0
  38. package/dist/esm/modules/RTC/JitsiRemoteTrack.js.map +1 -0
  39. package/dist/esm/modules/RTC/JitsiTrack.js +453 -0
  40. package/dist/esm/modules/RTC/JitsiTrack.js.map +1 -0
  41. package/dist/esm/modules/RTC/MockClasses.js +388 -0
  42. package/dist/esm/modules/RTC/MockClasses.js.map +1 -0
  43. package/dist/esm/modules/RTC/RTC.js +658 -0
  44. package/dist/esm/modules/RTC/RTC.js.map +1 -0
  45. package/dist/esm/modules/RTC/RTCUtils.js +762 -0
  46. package/dist/esm/modules/RTC/RTCUtils.js.map +1 -0
  47. package/dist/esm/modules/RTC/ScreenObtainer.js +380 -0
  48. package/dist/esm/modules/RTC/ScreenObtainer.js.map +1 -0
  49. package/dist/esm/modules/RTC/TPCUtils.js +803 -0
  50. package/dist/esm/modules/RTC/TPCUtils.js.map +1 -0
  51. package/dist/esm/modules/RTC/TraceablePeerConnection.js +2223 -0
  52. package/dist/esm/modules/RTC/TraceablePeerConnection.js.map +1 -0
  53. package/dist/esm/modules/RTCStats/DefaulLogStorage.js +35 -0
  54. package/dist/esm/modules/RTCStats/DefaulLogStorage.js.map +1 -0
  55. package/dist/esm/modules/RTCStats/RTCStats.js +219 -0
  56. package/dist/esm/modules/RTCStats/RTCStats.js.map +1 -0
  57. package/dist/esm/modules/RTCStats/RTCStatsEvents.js +92 -0
  58. package/dist/esm/modules/RTCStats/RTCStatsEvents.js.map +1 -0
  59. package/dist/esm/modules/RTCStats/interfaces.js +2 -0
  60. package/dist/esm/modules/RTCStats/interfaces.js.map +1 -0
  61. package/dist/esm/modules/browser/BrowserCapabilities.js +345 -0
  62. package/dist/esm/modules/browser/BrowserCapabilities.js.map +1 -0
  63. package/dist/esm/modules/browser/index.js +3 -0
  64. package/dist/esm/modules/browser/index.js.map +1 -0
  65. package/dist/esm/modules/connectivity/ConnectionQuality.js +389 -0
  66. package/dist/esm/modules/connectivity/ConnectionQuality.js.map +1 -0
  67. package/dist/esm/modules/connectivity/IceFailedHandling.js +84 -0
  68. package/dist/esm/modules/connectivity/IceFailedHandling.js.map +1 -0
  69. package/dist/esm/modules/connectivity/NetworkInfo.js +49 -0
  70. package/dist/esm/modules/connectivity/NetworkInfo.js.map +1 -0
  71. package/dist/esm/modules/connectivity/TrackStreamingStatus.js +453 -0
  72. package/dist/esm/modules/connectivity/TrackStreamingStatus.js.map +1 -0
  73. package/dist/esm/modules/detection/ActiveDeviceDetector.js +79 -0
  74. package/dist/esm/modules/detection/ActiveDeviceDetector.js.map +1 -0
  75. package/dist/esm/modules/detection/DetectionEvents.js +58 -0
  76. package/dist/esm/modules/detection/DetectionEvents.js.map +1 -0
  77. package/dist/esm/modules/detection/NoAudioSignalDetection.js +127 -0
  78. package/dist/esm/modules/detection/NoAudioSignalDetection.js.map +1 -0
  79. package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js +47 -0
  80. package/dist/esm/modules/detection/P2PDominantSpeakerDetection.js.map +1 -0
  81. package/dist/esm/modules/detection/TrackVADEmitter.js +190 -0
  82. package/dist/esm/modules/detection/TrackVADEmitter.js.map +1 -0
  83. package/dist/esm/modules/detection/VADAudioAnalyser.js +199 -0
  84. package/dist/esm/modules/detection/VADAudioAnalyser.js.map +1 -0
  85. package/dist/esm/modules/detection/VADNoiseDetection.js +168 -0
  86. package/dist/esm/modules/detection/VADNoiseDetection.js.map +1 -0
  87. package/dist/esm/modules/detection/VADReportingService.js +203 -0
  88. package/dist/esm/modules/detection/VADReportingService.js.map +1 -0
  89. package/dist/esm/modules/detection/VADTalkMutedDetection.js +131 -0
  90. package/dist/esm/modules/detection/VADTalkMutedDetection.js.map +1 -0
  91. package/dist/esm/modules/e2ee/Context.js +274 -0
  92. package/dist/esm/modules/e2ee/Context.js.map +1 -0
  93. package/dist/esm/modules/e2ee/E2EEContext.js +158 -0
  94. package/dist/esm/modules/e2ee/E2EEContext.js.map +1 -0
  95. package/dist/esm/modules/e2ee/E2EEErrors.js +10 -0
  96. package/dist/esm/modules/e2ee/E2EEErrors.js.map +1 -0
  97. package/dist/esm/modules/e2ee/E2EEncryption.js +87 -0
  98. package/dist/esm/modules/e2ee/E2EEncryption.js.map +1 -0
  99. package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js +24 -0
  100. package/dist/esm/modules/e2ee/ExternallyManagedKeyHandler.js.map +1 -0
  101. package/dist/esm/modules/e2ee/KeyHandler.js +137 -0
  102. package/dist/esm/modules/e2ee/KeyHandler.js.map +1 -0
  103. package/dist/esm/modules/e2ee/ManagedKeyHandler.js +182 -0
  104. package/dist/esm/modules/e2ee/ManagedKeyHandler.js.map +1 -0
  105. package/dist/esm/modules/e2ee/OlmAdapter.js +860 -0
  106. package/dist/esm/modules/e2ee/OlmAdapter.js.map +1 -0
  107. package/dist/esm/modules/e2ee/SAS.js +128 -0
  108. package/dist/esm/modules/e2ee/SAS.js.map +1 -0
  109. package/dist/esm/modules/e2ee/Worker.js +102 -0
  110. package/dist/esm/modules/e2ee/Worker.js.map +1 -0
  111. package/dist/esm/modules/e2ee/crypto-utils.js +53 -0
  112. package/dist/esm/modules/e2ee/crypto-utils.js.map +1 -0
  113. package/dist/esm/modules/e2ee/utils.js +15 -0
  114. package/dist/esm/modules/e2ee/utils.js.map +1 -0
  115. package/dist/esm/modules/e2eping/e2eping.js +314 -0
  116. package/dist/esm/modules/e2eping/e2eping.js.map +1 -0
  117. package/dist/esm/modules/flags/FeatureFlags.js +36 -0
  118. package/dist/esm/modules/flags/FeatureFlags.js.map +1 -0
  119. package/dist/esm/modules/litemode/LiteModeContext.js +50 -0
  120. package/dist/esm/modules/litemode/LiteModeContext.js.map +1 -0
  121. package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js +98 -0
  122. package/dist/esm/modules/proxyconnection/CustomSignalingLayer.js.map +1 -0
  123. package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js +348 -0
  124. package/dist/esm/modules/proxyconnection/ProxyConnectionPC.js.map +1 -0
  125. package/dist/esm/modules/proxyconnection/ProxyConnectionService.js +279 -0
  126. package/dist/esm/modules/proxyconnection/ProxyConnectionService.js.map +1 -0
  127. package/dist/esm/modules/proxyconnection/constants.js +14 -0
  128. package/dist/esm/modules/proxyconnection/constants.js.map +1 -0
  129. package/dist/esm/modules/qualitycontrol/CodecSelection.js +222 -0
  130. package/dist/esm/modules/qualitycontrol/CodecSelection.js.map +1 -0
  131. package/dist/esm/modules/qualitycontrol/MockClasses.js +120 -0
  132. package/dist/esm/modules/qualitycontrol/MockClasses.js.map +1 -0
  133. package/dist/esm/modules/qualitycontrol/QualityController.js +366 -0
  134. package/dist/esm/modules/qualitycontrol/QualityController.js.map +1 -0
  135. package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js +73 -0
  136. package/dist/esm/modules/qualitycontrol/ReceiveAudioController.js.map +1 -0
  137. package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js +216 -0
  138. package/dist/esm/modules/qualitycontrol/ReceiveVideoController.js.map +1 -0
  139. package/dist/esm/modules/qualitycontrol/SendVideoController.js +133 -0
  140. package/dist/esm/modules/qualitycontrol/SendVideoController.js.map +1 -0
  141. package/dist/esm/modules/recording/JibriSession.js +279 -0
  142. package/dist/esm/modules/recording/JibriSession.js.map +1 -0
  143. package/dist/esm/modules/recording/RecordingManager.js +257 -0
  144. package/dist/esm/modules/recording/RecordingManager.js.map +1 -0
  145. package/dist/esm/modules/recording/recordingConstants.js +21 -0
  146. package/dist/esm/modules/recording/recordingConstants.js.map +1 -0
  147. package/dist/esm/modules/recording/recordingXMLUtils.js +69 -0
  148. package/dist/esm/modules/recording/recordingXMLUtils.js.map +1 -0
  149. package/dist/esm/modules/red/red.js +108 -0
  150. package/dist/esm/modules/red/red.js.map +1 -0
  151. package/dist/esm/modules/sdp/LocalSdpMunger.js +143 -0
  152. package/dist/esm/modules/sdp/LocalSdpMunger.js.map +1 -0
  153. package/dist/esm/modules/sdp/RtxModifier.js +179 -0
  154. package/dist/esm/modules/sdp/RtxModifier.js.map +1 -0
  155. package/dist/esm/modules/sdp/SDP.js +848 -0
  156. package/dist/esm/modules/sdp/SDP.js.map +1 -0
  157. package/dist/esm/modules/sdp/SDPDiffer.js +96 -0
  158. package/dist/esm/modules/sdp/SDPDiffer.js.map +1 -0
  159. package/dist/esm/modules/sdp/SDPUtil.js +798 -0
  160. package/dist/esm/modules/sdp/SDPUtil.js.map +1 -0
  161. package/dist/esm/modules/sdp/SampleSdpStrings.js +589 -0
  162. package/dist/esm/modules/sdp/SampleSdpStrings.js.map +1 -0
  163. package/dist/esm/modules/sdp/SdpSimulcast.js +196 -0
  164. package/dist/esm/modules/sdp/SdpSimulcast.js.map +1 -0
  165. package/dist/esm/modules/sdp/SdpTransformUtil.js +337 -0
  166. package/dist/esm/modules/sdp/SdpTransformUtil.js.map +1 -0
  167. package/dist/esm/modules/sdp/constants.js +2 -0
  168. package/dist/esm/modules/sdp/constants.js.map +1 -0
  169. package/dist/esm/modules/settings/Settings.js +95 -0
  170. package/dist/esm/modules/settings/Settings.js.map +1 -0
  171. package/dist/esm/modules/statistics/AnalyticsAdapter.js +277 -0
  172. package/dist/esm/modules/statistics/AnalyticsAdapter.js.map +1 -0
  173. package/dist/esm/modules/statistics/AvgRTPStatsReporter.js +817 -0
  174. package/dist/esm/modules/statistics/AvgRTPStatsReporter.js.map +1 -0
  175. package/dist/esm/modules/statistics/LocalStatsCollector.js +149 -0
  176. package/dist/esm/modules/statistics/LocalStatsCollector.js.map +1 -0
  177. package/dist/esm/modules/statistics/PreCallTest.js +15 -0
  178. package/dist/esm/modules/statistics/PreCallTest.js.map +1 -0
  179. package/dist/esm/modules/statistics/RTPStatsCollector.js +601 -0
  180. package/dist/esm/modules/statistics/RTPStatsCollector.js.map +1 -0
  181. package/dist/esm/modules/statistics/SpeakerStats.js +163 -0
  182. package/dist/esm/modules/statistics/SpeakerStats.js.map +1 -0
  183. package/dist/esm/modules/statistics/SpeakerStatsCollector.js +161 -0
  184. package/dist/esm/modules/statistics/SpeakerStatsCollector.js.map +1 -0
  185. package/dist/esm/modules/statistics/constants.js +7 -0
  186. package/dist/esm/modules/statistics/constants.js.map +1 -0
  187. package/dist/esm/modules/statistics/statistics.js +362 -0
  188. package/dist/esm/modules/statistics/statistics.js.map +1 -0
  189. package/dist/esm/modules/util/AsyncQueue.js +102 -0
  190. package/dist/esm/modules/util/AsyncQueue.js.map +1 -0
  191. package/dist/esm/modules/util/Deferred.js +41 -0
  192. package/dist/esm/modules/util/Deferred.js.map +1 -0
  193. package/dist/esm/modules/util/EventEmitter.js +17 -0
  194. package/dist/esm/modules/util/EventEmitter.js.map +1 -0
  195. package/dist/esm/modules/util/EventEmitterForwarder.js +52 -0
  196. package/dist/esm/modules/util/EventEmitterForwarder.js.map +1 -0
  197. package/dist/esm/modules/util/Listenable.js +106 -0
  198. package/dist/esm/modules/util/Listenable.js.map +1 -0
  199. package/dist/esm/modules/util/MathUtil.js +103 -0
  200. package/dist/esm/modules/util/MathUtil.js.map +1 -0
  201. package/dist/esm/modules/util/RandomUtil.js +66 -0
  202. package/dist/esm/modules/util/RandomUtil.js.map +1 -0
  203. package/dist/esm/modules/util/Retry.js +15 -0
  204. package/dist/esm/modules/util/Retry.js.map +1 -0
  205. package/dist/esm/modules/util/ScriptUtil.js +58 -0
  206. package/dist/esm/modules/util/ScriptUtil.js.map +1 -0
  207. package/dist/esm/modules/util/StringUtils.js +21 -0
  208. package/dist/esm/modules/util/StringUtils.js.map +1 -0
  209. package/dist/esm/modules/util/TestUtils.js +14 -0
  210. package/dist/esm/modules/util/TestUtils.js.map +1 -0
  211. package/dist/esm/modules/util/UsernameGenerator.js +436 -0
  212. package/dist/esm/modules/util/UsernameGenerator.js.map +1 -0
  213. package/dist/esm/modules/util/XMLUtils.js +135 -0
  214. package/dist/esm/modules/util/XMLUtils.js.map +1 -0
  215. package/dist/esm/modules/version/ComponentsVersions.js +52 -0
  216. package/dist/esm/modules/version/ComponentsVersions.js.map +1 -0
  217. package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js +137 -0
  218. package/dist/esm/modules/videosipgw/JitsiVideoSIPGWSession.js.map +1 -0
  219. package/dist/esm/modules/videosipgw/VideoSIPGW.js +102 -0
  220. package/dist/esm/modules/videosipgw/VideoSIPGW.js.map +1 -0
  221. package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js +65 -0
  222. package/dist/esm/modules/videosipgw/VideoSIPGWConstants.js.map +1 -0
  223. package/dist/esm/modules/watchRTC/WatchRTC.js +69 -0
  224. package/dist/esm/modules/watchRTC/WatchRTC.js.map +1 -0
  225. package/dist/esm/modules/watchRTC/functions.js +31 -0
  226. package/dist/esm/modules/watchRTC/functions.js.map +1 -0
  227. package/dist/esm/modules/watchRTC/interfaces.js +2 -0
  228. package/dist/esm/modules/watchRTC/interfaces.js.map +1 -0
  229. package/dist/esm/modules/webaudio/AudioMixer.js +74 -0
  230. package/dist/esm/modules/webaudio/AudioMixer.js.map +1 -0
  231. package/dist/esm/modules/webaudio/WebAudioUtils.js +13 -0
  232. package/dist/esm/modules/webaudio/WebAudioUtils.js.map +1 -0
  233. package/dist/esm/modules/xmpp/AVModeration.js +156 -0
  234. package/dist/esm/modules/xmpp/AVModeration.js.map +1 -0
  235. package/dist/esm/modules/xmpp/BreakoutRooms.js +230 -0
  236. package/dist/esm/modules/xmpp/BreakoutRooms.js.map +1 -0
  237. package/dist/esm/modules/xmpp/Caps.js +223 -0
  238. package/dist/esm/modules/xmpp/Caps.js.map +1 -0
  239. package/dist/esm/modules/xmpp/ChatRoom.js +1877 -0
  240. package/dist/esm/modules/xmpp/ChatRoom.js.map +1 -0
  241. package/dist/esm/modules/xmpp/ConnectionPlugin.js +37 -0
  242. package/dist/esm/modules/xmpp/ConnectionPlugin.js.map +1 -0
  243. package/dist/esm/modules/xmpp/FileSharing.js +95 -0
  244. package/dist/esm/modules/xmpp/FileSharing.js.map +1 -0
  245. package/dist/esm/modules/xmpp/JingleHelperFunctions.js +168 -0
  246. package/dist/esm/modules/xmpp/JingleHelperFunctions.js.map +1 -0
  247. package/dist/esm/modules/xmpp/JingleSession.js +166 -0
  248. package/dist/esm/modules/xmpp/JingleSession.js.map +1 -0
  249. package/dist/esm/modules/xmpp/JingleSessionPC.js +1969 -0
  250. package/dist/esm/modules/xmpp/JingleSessionPC.js.map +1 -0
  251. package/dist/esm/modules/xmpp/JingleSessionState.js +23 -0
  252. package/dist/esm/modules/xmpp/JingleSessionState.js.map +1 -0
  253. package/dist/esm/modules/xmpp/Lobby.js +384 -0
  254. package/dist/esm/modules/xmpp/Lobby.js.map +1 -0
  255. package/dist/esm/modules/xmpp/MediaSessionEvents.js +12 -0
  256. package/dist/esm/modules/xmpp/MediaSessionEvents.js.map +1 -0
  257. package/dist/esm/modules/xmpp/MockClasses.js +77 -0
  258. package/dist/esm/modules/xmpp/MockClasses.js.map +1 -0
  259. package/dist/esm/modules/xmpp/Polls.js +87 -0
  260. package/dist/esm/modules/xmpp/Polls.js.map +1 -0
  261. package/dist/esm/modules/xmpp/ResumeTask.js +149 -0
  262. package/dist/esm/modules/xmpp/ResumeTask.js.map +1 -0
  263. package/dist/esm/modules/xmpp/RoomMetadata.js +96 -0
  264. package/dist/esm/modules/xmpp/RoomMetadata.js.map +1 -0
  265. package/dist/esm/modules/xmpp/SignalingLayerImpl.js +313 -0
  266. package/dist/esm/modules/xmpp/SignalingLayerImpl.js.map +1 -0
  267. package/dist/esm/modules/xmpp/StropheErrorHandler.js +53 -0
  268. package/dist/esm/modules/xmpp/StropheErrorHandler.js.map +1 -0
  269. package/dist/esm/modules/xmpp/StropheLastSuccess.js +52 -0
  270. package/dist/esm/modules/xmpp/StropheLastSuccess.js.map +1 -0
  271. package/dist/esm/modules/xmpp/XmppConnection.js +579 -0
  272. package/dist/esm/modules/xmpp/XmppConnection.js.map +1 -0
  273. package/dist/esm/modules/xmpp/moderator.js +524 -0
  274. package/dist/esm/modules/xmpp/moderator.js.map +1 -0
  275. package/dist/esm/modules/xmpp/sha1.js +165 -0
  276. package/dist/esm/modules/xmpp/sha1.js.map +1 -0
  277. package/dist/esm/modules/xmpp/strophe.disco.js +222 -0
  278. package/dist/esm/modules/xmpp/strophe.disco.js.map +1 -0
  279. package/dist/esm/modules/xmpp/strophe.emuc.js +206 -0
  280. package/dist/esm/modules/xmpp/strophe.emuc.js.map +1 -0
  281. package/dist/esm/modules/xmpp/strophe.jingle.js +404 -0
  282. package/dist/esm/modules/xmpp/strophe.jingle.js.map +1 -0
  283. package/dist/esm/modules/xmpp/strophe.logger.js +44 -0
  284. package/dist/esm/modules/xmpp/strophe.logger.js.map +1 -0
  285. package/dist/esm/modules/xmpp/strophe.ping.js +170 -0
  286. package/dist/esm/modules/xmpp/strophe.ping.js.map +1 -0
  287. package/dist/esm/modules/xmpp/strophe.rayo.js +117 -0
  288. package/dist/esm/modules/xmpp/strophe.rayo.js.map +1 -0
  289. package/dist/esm/modules/xmpp/strophe.stream-management.js +365 -0
  290. package/dist/esm/modules/xmpp/strophe.stream-management.js.map +1 -0
  291. package/dist/esm/modules/xmpp/strophe.util.js +116 -0
  292. package/dist/esm/modules/xmpp/strophe.util.js.map +1 -0
  293. package/dist/esm/modules/xmpp/xmpp.js +973 -0
  294. package/dist/esm/modules/xmpp/xmpp.js.map +1 -0
  295. package/dist/esm/service/RTC/BridgeVideoType.js +24 -0
  296. package/dist/esm/service/RTC/BridgeVideoType.js.map +1 -0
  297. package/dist/esm/service/RTC/CameraFacingMode.js +21 -0
  298. package/dist/esm/service/RTC/CameraFacingMode.js.map +1 -0
  299. package/dist/esm/service/RTC/CodecMimeType.js +36 -0
  300. package/dist/esm/service/RTC/CodecMimeType.js.map +1 -0
  301. package/dist/esm/service/RTC/MediaDirection.js +23 -0
  302. package/dist/esm/service/RTC/MediaDirection.js.map +1 -0
  303. package/dist/esm/service/RTC/MediaType.js +20 -0
  304. package/dist/esm/service/RTC/MediaType.js.map +1 -0
  305. package/dist/esm/service/RTC/RTCEvents.js +111 -0
  306. package/dist/esm/service/RTC/RTCEvents.js.map +1 -0
  307. package/dist/esm/service/RTC/ReceiverAudioSubscription.js +27 -0
  308. package/dist/esm/service/RTC/ReceiverAudioSubscription.js.map +1 -0
  309. package/dist/esm/service/RTC/Resolutions.js +56 -0
  310. package/dist/esm/service/RTC/Resolutions.js.map +1 -0
  311. package/dist/esm/service/RTC/SignalingEvents.js +42 -0
  312. package/dist/esm/service/RTC/SignalingEvents.js.map +1 -0
  313. package/dist/esm/service/RTC/SignalingLayer.js +153 -0
  314. package/dist/esm/service/RTC/SignalingLayer.js.map +1 -0
  315. package/dist/esm/service/RTC/StandardVideoQualitySettings.js +180 -0
  316. package/dist/esm/service/RTC/StandardVideoQualitySettings.js.map +1 -0
  317. package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js +36 -0
  318. package/dist/esm/service/RTC/VideoEncoderScalabilityMode.js.map +1 -0
  319. package/dist/esm/service/RTC/VideoType.js +19 -0
  320. package/dist/esm/service/RTC/VideoType.js.map +1 -0
  321. package/dist/esm/service/authentication/AuthenticationEvents.js +13 -0
  322. package/dist/esm/service/authentication/AuthenticationEvents.js.map +1 -0
  323. package/dist/esm/service/connectivity/ConnectionQualityEvents.js +13 -0
  324. package/dist/esm/service/connectivity/ConnectionQualityEvents.js.map +1 -0
  325. package/dist/esm/service/connectivity/Constants.js +3 -0
  326. package/dist/esm/service/connectivity/Constants.js.map +1 -0
  327. package/dist/esm/service/e2eping/E2ePingEvents.js +8 -0
  328. package/dist/esm/service/e2eping/E2ePingEvents.js.map +1 -0
  329. package/dist/esm/service/statistics/AnalyticsEvents.js +521 -0
  330. package/dist/esm/service/statistics/AnalyticsEvents.js.map +1 -0
  331. package/dist/esm/service/statistics/Events.js +36 -0
  332. package/dist/esm/service/statistics/Events.js.map +1 -0
  333. package/dist/esm/service/statistics/constants.js +2 -0
  334. package/dist/esm/service/statistics/constants.js.map +1 -0
  335. package/dist/esm/service/xmpp/XMPPEvents.js +359 -0
  336. package/dist/esm/service/xmpp/XMPPEvents.js.map +1 -0
  337. package/dist/esm/service/xmpp/XMPPExtensioProtocols.js +64 -0
  338. package/dist/esm/service/xmpp/XMPPExtensioProtocols.js.map +1 -0
  339. package/dist/esm/test-setup-polyfill.js +34 -0
  340. package/dist/esm/test-setup-polyfill.js.map +1 -0
  341. package/dist/esm/tools/gen-version.js +15 -0
  342. package/dist/esm/tools/gen-version.js.map +1 -0
  343. package/dist/esm/version.js +3 -0
  344. package/dist/esm/version.js.map +1 -0
  345. package/dist/umd/lib-jitsi-meet.e2ee-worker.js +484 -0
  346. package/dist/umd/lib-jitsi-meet.min.js +3 -0
  347. package/dist/umd/lib-jitsi-meet.min.js.LICENSE.txt +18 -0
  348. package/dist/umd/lib-jitsi-meet.min.map +1 -0
  349. package/package.json +93 -0
  350. package/types/index.d.ts +16180 -0
@@ -0,0 +1,398 @@
1
+ import { safeJsonParse } from '@jitsi/js-utils/json';
2
+ import { getLogger } from '@jitsi/logger';
3
+ import { RTCEvents } from '../../service/RTC/RTCEvents';
4
+ import { createBridgeChannelClosedEvent } from '../../service/statistics/AnalyticsEvents';
5
+ import Statistics from '../statistics/statistics';
6
+ const logger = getLogger('rtc:BridgeChannel');
7
+ /**
8
+ * Handles a WebRTC RTCPeerConnection or a WebSocket instance to communicate
9
+ * with the videobridge.
10
+ */
11
+ export default class BridgeChannel {
12
+ /**
13
+ * Binds "ondatachannel" event listener on the given RTCPeerConnection
14
+ * instance, or creates a WebSocket connection with the videobridge.
15
+ * At least one of both, peerconnection or wsUrl parameters, must be
16
+ * given.
17
+ * @param {Nullable<RTCPeerConnection>} [peerconnection] WebRTC peer connection
18
+ * instance.
19
+ * @param {Nullable<string>} [wsUrl] WebSocket URL.
20
+ * @param {EventEmitter} emitter the EventEmitter instance to use for event emission.
21
+ * @param {JitsiConference} conference the conference instance.
22
+ */
23
+ constructor(peerconnection, wsUrl, emitter, conference) {
24
+ this._channel = null;
25
+ this._connected = undefined;
26
+ this._mode = null;
27
+ this._areRetriesEnabled = false;
28
+ this._closedFromClient = false;
29
+ if (!peerconnection && !wsUrl) {
30
+ throw new TypeError('At least peerconnection or wsUrl must be given');
31
+ }
32
+ else if (peerconnection && wsUrl) {
33
+ throw new TypeError('Just one of peerconnection or wsUrl must be given');
34
+ }
35
+ if (peerconnection) {
36
+ logger.debug('constructor() with peerconnection');
37
+ }
38
+ else {
39
+ logger.debug(`constructor() with wsUrl:"${wsUrl}"`);
40
+ }
41
+ // The underlying WebRTC RTCDataChannel or WebSocket instance.
42
+ // @type {RTCDataChannel|WebSocket}
43
+ this._channel = null;
44
+ // The conference that uses this bridge channel.
45
+ this._conference = conference;
46
+ // Whether the channel is connected or not. It will start as undefined
47
+ // for the first connection attempt. Then transition to either true or false.
48
+ this._connected = undefined;
49
+ // @type {EventEmitter}
50
+ this._eventEmitter = emitter;
51
+ // Whether a RTCDataChannel or WebSocket is internally used.
52
+ // @type {string} "datachannel" / "websocket"
53
+ this._mode = null;
54
+ // Indicates whether the connection retries are enabled or not.
55
+ this._areRetriesEnabled = false;
56
+ // Indicates whether the connection was closed from the client or not.
57
+ this._closedFromClient = false;
58
+ // If a RTCPeerConnection is given, listen for new RTCDataChannel
59
+ // event.
60
+ if (peerconnection) {
61
+ const datachannel = peerconnection.createDataChannel('JVB data channel', {
62
+ protocol: 'http://jitsi.org/protocols/colibri'
63
+ });
64
+ // Handle the RTCDataChannel.
65
+ this._handleChannel(datachannel);
66
+ this._mode = 'datachannel';
67
+ // Otherwise create a WebSocket connection.
68
+ }
69
+ else if (wsUrl) {
70
+ this._areRetriesEnabled = true;
71
+ this._wsUrl = wsUrl;
72
+ this._initWebSocket();
73
+ }
74
+ }
75
+ /**
76
+ * Initializes the web socket channel.
77
+ *
78
+ * @returns {void}
79
+ */
80
+ _initWebSocket() {
81
+ // Create a WebSocket instance.
82
+ const ws = new WebSocket(this._wsUrl);
83
+ // Handle the WebSocket.
84
+ this._handleChannel(ws);
85
+ this._mode = 'websocket';
86
+ }
87
+ /**
88
+ * Starts the websocket connection retries.
89
+ *
90
+ * @returns {void}
91
+ */
92
+ _startConnectionRetries() {
93
+ let timeoutS = 1;
94
+ const reload = () => {
95
+ const isConnecting = this._channel && (this._channel.readyState === 'connecting'
96
+ || this._channel.readyState === WebSocket.CONNECTING);
97
+ // Should not spawn new websockets while one is already trying to connect.
98
+ if (isConnecting) {
99
+ // Timeout is still required as there is flag `_areRetriesEnabled` that
100
+ // blocks new retrying cycles until any channel opens in current cycle.
101
+ this._retryTimeout = setTimeout(reload, timeoutS * 1000);
102
+ return;
103
+ }
104
+ if (this.isOpen()) {
105
+ return;
106
+ }
107
+ this._initWebSocket();
108
+ timeoutS = Math.min(timeoutS * 2, 60);
109
+ this._retryTimeout = setTimeout(reload, timeoutS * 1000);
110
+ };
111
+ this._retryTimeout = setTimeout(reload, timeoutS * 1000);
112
+ }
113
+ /**
114
+ * Stops the websocket connection retries.
115
+ *
116
+ * @returns {void}
117
+ */
118
+ _stopConnectionRetries() {
119
+ if (this._retryTimeout) {
120
+ clearTimeout(this._retryTimeout);
121
+ this._retryTimeout = undefined;
122
+ }
123
+ }
124
+ /**
125
+ * Retries to establish the websocket connection after the connection was closed by the server.
126
+ *
127
+ * @param {CloseEvent} closeEvent - The close event that triggered the retries.
128
+ * @returns {void}
129
+ */
130
+ _retryWebSocketConnection(closeEvent) {
131
+ if (!this._areRetriesEnabled) {
132
+ return;
133
+ }
134
+ const { code, reason } = closeEvent;
135
+ Statistics.sendAnalytics(createBridgeChannelClosedEvent(code.toString(), reason));
136
+ this._areRetriesEnabled = false;
137
+ this._eventEmitter.once(RTCEvents.DATA_CHANNEL_OPEN, () => {
138
+ this._stopConnectionRetries();
139
+ this._areRetriesEnabled = true;
140
+ });
141
+ this._startConnectionRetries();
142
+ }
143
+ /**
144
+ * The channel mode.
145
+ * @return {string} "datachannel" or "websocket" (or null if not yet set).
146
+ */
147
+ get mode() {
148
+ return this._mode;
149
+ }
150
+ /**
151
+ * Closes the currently opened channel.
152
+ */
153
+ close() {
154
+ this._closedFromClient = true;
155
+ this._stopConnectionRetries();
156
+ this._areRetriesEnabled = false;
157
+ if (this._channel) {
158
+ try {
159
+ this._channel.close();
160
+ }
161
+ catch (error) { } // eslint-disable-line no-empty
162
+ this._channel = null;
163
+ }
164
+ }
165
+ /**
166
+ * Whether there is an underlying RTCDataChannel or WebSocket and it's
167
+ * open.
168
+ * @return {boolean}
169
+ */
170
+ isOpen() {
171
+ return this._channel && (this._channel.readyState === 'open'
172
+ || this._channel.readyState === WebSocket.OPEN);
173
+ }
174
+ /**
175
+ * Sends local stats via the bridge channel.
176
+ * @param {Object} payload The payload of the message.
177
+ * @throws NetworkError/InvalidStateError/Error if the operation fails or if there is no data channel created.
178
+ */
179
+ sendEndpointStatsMessage(payload) {
180
+ this._send({
181
+ colibriClass: 'EndpointStats',
182
+ ...payload
183
+ });
184
+ }
185
+ /**
186
+ * Sends message via the channel.
187
+ * @param {string} to The id of the endpoint that should receive the
188
+ * message. If "" the message will be sent to all participants.
189
+ * @param {object} payload The payload of the message.
190
+ * @throws NetworkError or InvalidStateError from RTCDataChannel#send (@see
191
+ * {@link https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send})
192
+ * or from WebSocket#send or Error with "No opened channel" message.
193
+ */
194
+ sendMessage(to, payload) {
195
+ this._send({
196
+ colibriClass: 'EndpointMessage',
197
+ msgPayload: payload,
198
+ to
199
+ });
200
+ }
201
+ /**
202
+ * Sends a "lastN value changed" message via the channel.
203
+ * @param {number} value The new value for lastN. -1 means unlimited.
204
+ */
205
+ sendSetLastNMessage(value) {
206
+ logger.debug(`Sending lastN=${value}.`);
207
+ this._send({
208
+ colibriClass: 'LastNChangedEvent',
209
+ lastN: value
210
+ });
211
+ }
212
+ /**
213
+ * Sends a message for audio subscription updates.
214
+ *
215
+ * @param {IReceiverAudioSubscriptionMessage} message - The audio subscription message.
216
+ * @returns {void}
217
+ */
218
+ sendReceiverAudioSubscriptionMessage(message) {
219
+ logger.info(`Sending ReceiverAudioSubscription with mode: ${message.mode}`
220
+ + ` and ${message.list?.length ? 'list=' + message.list.join(', ') : 'no list'}`);
221
+ this._send({
222
+ colibriClass: 'ReceiverAudioSubscription',
223
+ ...message
224
+ });
225
+ }
226
+ /**
227
+ * Sends a 'ReceiverVideoConstraints' message via the bridge channel.
228
+ *
229
+ * @param {ReceiverVideoConstraints} constraints video constraints.
230
+ */
231
+ sendReceiverVideoConstraintsMessage(constraints) {
232
+ logger.info(`Sending ReceiverVideoConstraints with ${JSON.stringify(constraints)}`);
233
+ this._send({
234
+ colibriClass: 'ReceiverVideoConstraints',
235
+ ...constraints
236
+ });
237
+ }
238
+ /**
239
+ * Sends a 'SourceVideoTypeMessage' message via the bridge channel.
240
+ *
241
+ * @param {BridgeVideoType} videoType - the video type.
242
+ * @param {SourceName} sourceName - the source name of the video track.
243
+ * @returns {void}
244
+ */
245
+ sendSourceVideoTypeMessage(sourceName, videoType) {
246
+ logger.info(`Sending SourceVideoTypeMessage with video type ${sourceName}: ${videoType}`);
247
+ this._send({
248
+ colibriClass: 'SourceVideoTypeMessage',
249
+ sourceName,
250
+ videoType
251
+ });
252
+ }
253
+ /**
254
+ * Set events on the given RTCDataChannel or WebSocket instance.
255
+ */
256
+ _handleChannel(channel) {
257
+ const emitter = this._eventEmitter;
258
+ channel.onopen = () => {
259
+ logger.info(`${this._mode} channel opened`);
260
+ this._connected = true;
261
+ emitter.emit(RTCEvents.DATA_CHANNEL_OPEN);
262
+ };
263
+ channel.onerror = (event) => {
264
+ // WS error events contain no information about the failure (this is available in the onclose event) and
265
+ // the event references the WS object itself, which causes hangs on mobile.
266
+ if (this._mode !== 'websocket') {
267
+ logger.error(`Channel error: ${event.message}`);
268
+ }
269
+ };
270
+ channel.onmessage = ({ data }) => {
271
+ // JSON object.
272
+ let obj;
273
+ try {
274
+ obj = safeJsonParse(data);
275
+ }
276
+ catch (error) {
277
+ logger.error('Failed to parse channel message as JSON: ', data, error);
278
+ return;
279
+ }
280
+ const colibriClass = obj.colibriClass;
281
+ switch (colibriClass) {
282
+ case 'ConnectionStats': {
283
+ const { estimatedDownlinkBandwidth } = obj;
284
+ logger.debug(`Connection stats: bwe=${estimatedDownlinkBandwidth} bps`);
285
+ emitter.emit(RTCEvents.BRIDGE_BWE_STATS_RECEIVED, estimatedDownlinkBandwidth);
286
+ break;
287
+ }
288
+ case 'DominantSpeakerEndpointChangeEvent': {
289
+ const { dominantSpeakerEndpoint, previousSpeakers = [], silence } = obj;
290
+ logger.debug(`Dominant speaker: ${dominantSpeakerEndpoint}, previous speakers: ${previousSpeakers}`);
291
+ emitter.emit(RTCEvents.DOMINANT_SPEAKER_CHANGED, dominantSpeakerEndpoint, previousSpeakers, silence);
292
+ break;
293
+ }
294
+ case 'EndpointConnectivityStatusChangeEvent': {
295
+ const endpoint = obj.endpoint;
296
+ const isActive = obj.active === 'true';
297
+ logger.info(`Endpoint connection status changed: ${endpoint} active=${isActive}`);
298
+ emitter.emit(RTCEvents.ENDPOINT_CONN_STATUS_CHANGED, endpoint, isActive);
299
+ break;
300
+ }
301
+ case 'EndpointMessage': {
302
+ emitter.emit(RTCEvents.ENDPOINT_MESSAGE_RECEIVED, obj.from, obj.msgPayload);
303
+ break;
304
+ }
305
+ case 'EndpointStats': {
306
+ emitter.emit(RTCEvents.ENDPOINT_STATS_RECEIVED, obj.from, obj);
307
+ break;
308
+ }
309
+ case 'ForwardedSources': {
310
+ const forwardedSources = obj.forwardedSources;
311
+ logger.info(`New forwarded sources: ${forwardedSources}`);
312
+ emitter.emit(RTCEvents.FORWARDED_SOURCES_CHANGED, forwardedSources);
313
+ break;
314
+ }
315
+ case 'SenderSourceConstraints': {
316
+ if (typeof obj.sourceName === 'string' && typeof obj.maxHeight === 'number') {
317
+ logger.info(`SenderSourceConstraints: ${obj.sourceName} - ${obj.maxHeight}`);
318
+ emitter.emit(RTCEvents.SENDER_VIDEO_CONSTRAINTS_CHANGED, obj);
319
+ }
320
+ else {
321
+ logger.error(`Invalid SenderSourceConstraints: ${obj.sourceName} - ${obj.maxHeight}`);
322
+ }
323
+ break;
324
+ }
325
+ case 'ServerHello': {
326
+ logger.info(`Received ServerHello, version=${obj.version}.`);
327
+ break;
328
+ }
329
+ case 'VideoSourcesMap': {
330
+ logger.info(`Received VideoSourcesMap: ${JSON.stringify(obj.mappedSources)}`);
331
+ emitter.emit(RTCEvents.VIDEO_SSRCS_REMAPPED, obj);
332
+ break;
333
+ }
334
+ case 'AudioSourcesMap': {
335
+ logger.info(`Received AudioSourcesMap: ${JSON.stringify(obj.mappedSources)}`);
336
+ emitter.emit(RTCEvents.AUDIO_SSRCS_REMAPPED, obj);
337
+ break;
338
+ }
339
+ default: {
340
+ logger.debug('Channel JSON-formatted message: ', obj);
341
+ // The received message appears to be appropriately formatted
342
+ // (i.e. is a JSON object which assigns a value to the
343
+ // mandatory property colibriClass) so don't just swallow it,
344
+ // expose it to public consumption.
345
+ emitter.emit(`rtc.datachannel.${colibriClass}`, obj);
346
+ }
347
+ }
348
+ };
349
+ channel.onclose = (event) => {
350
+ logger.debug(`Channel closed by ${this._closedFromClient ? 'client' : 'server'}`);
351
+ if (channel !== this._channel) {
352
+ logger.debug('Skip close handler, channel instance is not equal to stored one');
353
+ return;
354
+ }
355
+ // When the JVB closes the connection gracefully due to the participant being alone in the meeting it uses
356
+ // code 1001. However, the same code is also used by Cloudflare when it terminates the ws. Therefore, check
357
+ // for the number of remote participants in the call and abort retries only when the endpoint is the only
358
+ // endpoint in the call.
359
+ const isGracefulClose = this._closedFromClient
360
+ || (event.code === 1001 && this._conference.getParticipantCount() === 1);
361
+ if (!isGracefulClose) {
362
+ const { code, reason } = event;
363
+ logger.error(`Channel closed: ${code} ${reason}`);
364
+ if (this._mode === 'websocket') {
365
+ this._retryWebSocketConnection(event);
366
+ // We only want to send this event the first time the failure happens.
367
+ if (this._connected !== false) {
368
+ emitter.emit(RTCEvents.DATA_CHANNEL_CLOSED, {
369
+ code,
370
+ reason
371
+ });
372
+ }
373
+ }
374
+ }
375
+ this._connected = false;
376
+ // Remove the channel.
377
+ this._channel = null;
378
+ };
379
+ // Store the channel.
380
+ this._channel = channel;
381
+ }
382
+ /**
383
+ * Sends passed object via the channel.
384
+ * @param {object} jsonObject The object that will be sent.
385
+ * @throws NetworkError or InvalidStateError from RTCDataChannel#send (@see
386
+ * {@link https://developer.mozilla.org/docs/Web/API/RTCDataChannel/send})
387
+ * or from WebSocket#send or Error with "No opened channel" message.
388
+ */
389
+ _send(jsonObject) {
390
+ const channel = this._channel;
391
+ if (!this.isOpen()) {
392
+ logger.error('Bridge Channel send: no opened channel.');
393
+ throw new Error('No opened channel');
394
+ }
395
+ channel.send(JSON.stringify(jsonObject));
396
+ }
397
+ }
398
+ //# sourceMappingURL=BridgeChannel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeChannel.js","sourceRoot":"","sources":["../../../../modules/RTC/BridgeChannel.ts"],"names":[],"mappings":"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"}