@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,658 @@
1
+ import { getLogger } from '@jitsi/logger';
2
+ import { cloneDeep, isEqual } from 'lodash-es';
3
+ import { JitsiConferenceEvents } from '../../JitsiConferenceEvents';
4
+ import { MediaType } from '../../service/RTC/MediaType';
5
+ import { RTCEvents } from '../../service/RTC/RTCEvents';
6
+ import { VideoType } from '../../service/RTC/VideoType';
7
+ import browser from '../browser';
8
+ import Listenable from '../util/Listenable';
9
+ import { safeCounterIncrement } from '../util/MathUtil';
10
+ import BridgeChannel from './BridgeChannel';
11
+ import JitsiLocalTrack from './JitsiLocalTrack';
12
+ import RTCUtils from './RTCUtils';
13
+ import TraceablePeerConnection from './TraceablePeerConnection';
14
+ const logger = getLogger('rtc:RTC');
15
+ /**
16
+ * The counter used to generated id numbers assigned to peer connections
17
+ * @type {number}
18
+ */
19
+ let peerConnectionIdCounter = 0;
20
+ /**
21
+ * The counter used to generate id number for the local
22
+ * <code>MediaStreamTrack</code>s.
23
+ * @type {number}
24
+ */
25
+ let rtcTrackIdCounter = 0;
26
+ /**
27
+ * Creates {@code JitsiLocalTrack} instances from the passed in meta information
28
+ * about MedieaTracks.
29
+ *
30
+ * @param {Object[]} mediaStreamMetaData - An array of meta information with
31
+ * MediaTrack instances. Each can look like:
32
+ * {{
33
+ * stream: MediaStream instance that holds a track with audio or video,
34
+ * track: MediaTrack within the MediaStream,
35
+ * videoType: "camera" or "desktop" or falsy,
36
+ * sourceId: ID of the desktopsharing source,
37
+ * sourceType: The desktopsharing source type,
38
+ * effects: Array of effect types
39
+ * }}
40
+ */
41
+ function _createLocalTracks(mediaStreamMetaData = []) {
42
+ return mediaStreamMetaData.map(metaData => {
43
+ const { constraints, sourceId, sourceType, stream, track, videoType, effects } = metaData;
44
+ const { deviceId, facingMode } = track.getSettings();
45
+ // FIXME Move rtcTrackIdCounter to a static method in JitsiLocalTrack
46
+ // so RTC does not need to handle ID management. This move would be
47
+ // safer to do once the old createLocalTracks is removed.
48
+ rtcTrackIdCounter = safeCounterIncrement(rtcTrackIdCounter);
49
+ return new JitsiLocalTrack({
50
+ constraints,
51
+ deviceId,
52
+ effects,
53
+ facingMode,
54
+ mediaType: track.kind,
55
+ rtcId: rtcTrackIdCounter,
56
+ sourceId,
57
+ sourceType,
58
+ stream,
59
+ track,
60
+ videoType: videoType || null
61
+ });
62
+ });
63
+ }
64
+ /**
65
+ *
66
+ */
67
+ export default class RTC extends Listenable {
68
+ /**
69
+ *
70
+ * @param conference
71
+ * @param options
72
+ */
73
+ constructor(conference, options = {}) {
74
+ super();
75
+ this.conference = conference;
76
+ /**
77
+ * A map of active <tt>TraceablePeerConnection</tt>.
78
+ * @type {Map.<number, TraceablePeerConnection>}
79
+ */
80
+ this.peerConnections = new Map();
81
+ this.localTracks = [];
82
+ this.options = options;
83
+ // BridgeChannel instance.
84
+ // @private
85
+ // @type {BridgeChannel}
86
+ this._channel = null;
87
+ /**
88
+ * The value specified to the last invocation of setLastN before the
89
+ * channel completed opening. If non-null, the value will be sent
90
+ * through a channel (once) as soon as it opens and will then be
91
+ * discarded.
92
+ * @private
93
+ * @type {number}
94
+ */
95
+ this._lastN = undefined;
96
+ /**
97
+ * Defines the forwarded sources list. It can be null or an array once initialised with a channel forwarded
98
+ * sources event.
99
+ *
100
+ * @type {Array<string>|null}
101
+ * @private
102
+ */
103
+ this._forwardedSources = null;
104
+ // The forwarded sources change listener.
105
+ this._forwardedSourcesChangeListener = this._onForwardedSourcesChanged.bind(this);
106
+ this._onDeviceListChanged = this._onDeviceListChanged.bind(this);
107
+ this._updateAudioOutputForAudioTracks = this._updateAudioOutputForAudioTracks.bind(this);
108
+ // Switch audio output device on all remote audio tracks. Local audio
109
+ // tracks handle this event by themselves.
110
+ if (RTCUtils.isDeviceChangeAvailable('output')) {
111
+ RTCUtils.addListener(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED, this._updateAudioOutputForAudioTracks);
112
+ RTCUtils.addListener(RTCEvents.DEVICE_LIST_CHANGED, this._onDeviceListChanged);
113
+ }
114
+ }
115
+ /**
116
+ * Removes any listeners and stored state from this {@code RTC} instance.
117
+ *
118
+ * @returns {void}
119
+ */
120
+ destroy() {
121
+ RTCUtils.removeListener(RTCEvents.AUDIO_OUTPUT_DEVICE_CHANGED, this._updateAudioOutputForAudioTracks);
122
+ RTCUtils.removeListener(RTCEvents.DEVICE_LIST_CHANGED, this._onDeviceListChanged);
123
+ if (this._channelOpenListener) {
124
+ this.removeListener(RTCEvents.DATA_CHANNEL_OPEN, this._channelOpenListener);
125
+ }
126
+ }
127
+ /**
128
+ * Exposes the private helper for converting a WebRTC MediaStream to a
129
+ * JitsiLocalTrack.
130
+ *
131
+ * @param {Array<Object>} tracksInfo
132
+ * @returns {Array<JitsiLocalTrack>}
133
+ */
134
+ static createLocalTracks(tracksInfo) {
135
+ return _createLocalTracks(tracksInfo);
136
+ }
137
+ /**
138
+ * Creates the local MediaStreams.
139
+ * @param {object} [options] Optional parameters.
140
+ * @param {Array=} options.devices The devices that will be requested.
141
+ * @param {string=} options.resolution Resolution constraints.
142
+ * @param {string=} options.cameraDeviceId
143
+ * @param {string=} options.micDeviceId
144
+ * @returns {*} Promise object that will receive the new JitsiTracks
145
+ */
146
+ static obtainAudioAndVideoPermissions(options) {
147
+ return RTCUtils.obtainAudioAndVideoPermissions(options)
148
+ .then(tracksInfo => _createLocalTracks(tracksInfo));
149
+ }
150
+ /**
151
+ * Initializes the bridge channel of this instance.
152
+ * At least one of both, peerconnection or wsUrl parameters, must be
153
+ * given.
154
+ * @param {RTCPeerConnection} [peerconnection] WebRTC peer connection
155
+ * instance.
156
+ * @param {string} [wsUrl] WebSocket URL.
157
+ */
158
+ initializeBridgeChannel(peerconnection, wsUrl) {
159
+ this._channel = new BridgeChannel(peerconnection, wsUrl, this.eventEmitter, this.conference);
160
+ this._channelOpenListener = () => {
161
+ const logError = (error, msgType, value) => {
162
+ logger.error(`Cannot send ${msgType}(${JSON.stringify(value)}) endpoint message`, error);
163
+ };
164
+ // When the channel becomes available, tell the bridge about video selections so that it can do adaptive
165
+ // simulcast, we want the notification to trigger even if userJid is undefined, or null.
166
+ if (this._receiverVideoConstraints) {
167
+ try {
168
+ this._channel.sendReceiverVideoConstraintsMessage(this._receiverVideoConstraints);
169
+ }
170
+ catch (error) {
171
+ logError(error, 'ReceiverVideoConstraints', this._receiverVideoConstraints);
172
+ }
173
+ }
174
+ if (typeof this._lastN !== 'undefined' && this._lastN !== -1) {
175
+ try {
176
+ this._channel.sendSetLastNMessage(this._lastN);
177
+ }
178
+ catch (error) {
179
+ logError(error, 'LastNChangedEvent', this._lastN);
180
+ }
181
+ }
182
+ };
183
+ this.addListener(RTCEvents.DATA_CHANNEL_OPEN, this._channelOpenListener);
184
+ // Add forwarded sources change listener.
185
+ this.addListener(RTCEvents.FORWARDED_SOURCES_CHANGED, this._forwardedSourcesChangeListener);
186
+ }
187
+ /**
188
+ * Callback invoked when the list of known audio and video devices has
189
+ * been updated. Attempts to update the known available audio output
190
+ * devices.
191
+ *
192
+ * @private
193
+ * @returns {void}
194
+ */
195
+ _onDeviceListChanged() {
196
+ this._updateAudioOutputForAudioTracks(RTCUtils.getAudioOutputDevice());
197
+ }
198
+ /**
199
+ * Receives events when forwarded sources had changed.
200
+ *
201
+ * @param {array} forwardedSources The new forwarded sources.
202
+ * @private
203
+ */
204
+ _onForwardedSourcesChanged(forwardedSources = []) {
205
+ const oldForwardedSources = this._forwardedSources || [];
206
+ let leavingForwardedSources = [];
207
+ let enteringForwardedSources = [];
208
+ const timestamp = Date.now();
209
+ this._forwardedSources = forwardedSources;
210
+ leavingForwardedSources = oldForwardedSources.filter(sourceName => !this.isInForwardedSources(sourceName));
211
+ enteringForwardedSources = forwardedSources.filter(sourceName => oldForwardedSources.indexOf(sourceName) === -1);
212
+ logger.debug(`Fowarded sources changed leaving=${leavingForwardedSources}, entering=`
213
+ + `${enteringForwardedSources} at ${timestamp}`);
214
+ this.conference.eventEmitter.emit(JitsiConferenceEvents.FORWARDED_SOURCES_CHANGED, leavingForwardedSources, enteringForwardedSources, timestamp);
215
+ }
216
+ /**
217
+ * Should be called when current media session ends and after the
218
+ * PeerConnection has been closed using PeerConnection.close() method.
219
+ */
220
+ onCallEnded() {
221
+ if (this._channel) {
222
+ // The BridgeChannel is not explicitly closed as the PeerConnection
223
+ // is closed on call ended which triggers datachannel onclose
224
+ // events. If using a WebSocket, the channel must be closed since
225
+ // it is not managed by the PeerConnection.
226
+ // The reference is cleared to disable any logic related to the
227
+ // channel.
228
+ if (this._channel && this._channel.mode === 'websocket') {
229
+ this._channel.close();
230
+ }
231
+ this._channel = null;
232
+ }
233
+ }
234
+ /**
235
+ * Sets the capture frame rate to be used for desktop tracks.
236
+ *
237
+ * @param {number} maxFps framerate to be used for desktop track capture.
238
+ */
239
+ setDesktopSharingFrameRate(maxFps) {
240
+ RTCUtils.setDesktopSharingFrameRate(maxFps);
241
+ }
242
+ /**
243
+ * Sets the receiver video constraints that determine how bitrate is allocated to each of the video streams
244
+ * requested from the bridge. The constraints are cached and sent through the bridge channel once the channel
245
+ * is established.
246
+ * @param {*} constraints
247
+ */
248
+ setReceiverVideoConstraints(constraints) {
249
+ if (isEqual(this._receiverVideoConstraints, constraints)) {
250
+ return;
251
+ }
252
+ this._receiverVideoConstraints = cloneDeep(constraints);
253
+ if (this._channel && this._channel.isOpen()) {
254
+ this._channel.sendReceiverVideoConstraintsMessage(constraints);
255
+ }
256
+ }
257
+ /**
258
+ * Sends the track's video type to the JVB.
259
+ * @param {SourceName} sourceName - the track's source name.
260
+ * @param {BridgeVideoType} videoType - the track's video type.
261
+ */
262
+ sendSourceVideoType(sourceName, videoType) {
263
+ if (this._channel && this._channel.isOpen()) {
264
+ this._channel.sendSourceVideoTypeMessage(sourceName, videoType);
265
+ }
266
+ }
267
+ /**
268
+ *
269
+ * @param eventType
270
+ * @param listener
271
+ */
272
+ static addListener(eventType, listener) {
273
+ RTCUtils.addListener(eventType, listener);
274
+ }
275
+ /**
276
+ *
277
+ * @param eventType
278
+ * @param listener
279
+ */
280
+ static removeListener(eventType, listener) {
281
+ RTCUtils.removeListener(eventType, listener);
282
+ }
283
+ /**
284
+ *
285
+ * @param options
286
+ */
287
+ static init(options = {}) {
288
+ this.options = options;
289
+ return RTCUtils.init(this.options);
290
+ }
291
+ /* eslint-disable max-params */
292
+ /**
293
+ * Creates new <tt>TraceablePeerConnection</tt>
294
+ * @param {SignalingLayer} signaling The signaling layer that will provide information about the media or
295
+ * participants which is not carried over SDP.
296
+ * @param {object} pcConfig The {@code RTCConfiguration} to use for the WebRTC peer connection.
297
+ * @param {boolean} isP2P Indicates whether or not the new TPC will be used in a peer to peer type of session.
298
+ * @param {object} options The config options.
299
+ * @param {Object} options.audioQuality - Quality settings to applied on the outbound audio stream.
300
+ * @param {boolean} options.capScreenshareBitrate if set to true, lower layers will be disabled for screenshare.
301
+ * @param {Array<CodecMimeType>} options.codecSettings - codec settings to be applied for video streams.
302
+ * @param {boolean} options.disableSimulcast if set to 'true' will disable the simulcast.
303
+ * @param {boolean} options.disableRtx if set to 'true' will disable the RTX.
304
+ * @param {boolean} options.enableInsertableStreams set to true when the insertable streams constraints is to be
305
+ * enabled on the PeerConnection.
306
+ * @param {boolean} options.forceTurnRelay If set to true, the browser will generate only Relay ICE candidates.
307
+ * @param {boolean} options.startSilent If set to 'true' no audio will be sent or received.
308
+ * @param {Object} options.videoQuality - Quality settings to applied on the outbound video streams.
309
+ * @return {TraceablePeerConnection}
310
+ */
311
+ createPeerConnection(signaling, pcConfig, isP2P, options) {
312
+ const pcConstraints = {};
313
+ if (options.enableInsertableStreams) {
314
+ logger.debug('E2EE - setting insertable streams constraints');
315
+ pcConfig.encodedInsertableStreams = true;
316
+ }
317
+ if (options.forceTurnRelay) {
318
+ pcConfig.iceTransportPolicy = 'relay';
319
+ }
320
+ // Set the RTCBundlePolicy to max-bundle so that only one set of ice candidates is generated.
321
+ // The default policy generates separate ice candidates for audio and video connections.
322
+ // This change is necessary for Unified plan to work properly on Chrome and Safari.
323
+ pcConfig.bundlePolicy = 'max-bundle';
324
+ peerConnectionIdCounter = safeCounterIncrement(peerConnectionIdCounter);
325
+ const newConnection = new TraceablePeerConnection(this, peerConnectionIdCounter, signaling, pcConfig, pcConstraints, isP2P, options);
326
+ this.peerConnections.set(newConnection.id, newConnection);
327
+ return newConnection;
328
+ }
329
+ /* eslint-enable max-params */
330
+ /**
331
+ * Removed given peer connection from this RTC module instance.
332
+ * @param {TraceablePeerConnection} traceablePeerConnection
333
+ * @return {boolean} <tt>true</tt> if the given peer connection was removed
334
+ * successfully or <tt>false</tt> if there was no peer connection mapped in
335
+ * this RTC instance.
336
+ */
337
+ _removePeerConnection(traceablePeerConnection) {
338
+ const id = traceablePeerConnection.id;
339
+ if (this.peerConnections.has(id)) {
340
+ // NOTE Remote tracks are not removed here.
341
+ this.peerConnections.delete(id);
342
+ return true;
343
+ }
344
+ return false;
345
+ }
346
+ /**
347
+ *
348
+ * @param track
349
+ */
350
+ addLocalTrack(track) {
351
+ if (!track) {
352
+ throw new Error('track must not be null nor undefined');
353
+ }
354
+ this.localTracks.push(track);
355
+ track.conference = this.conference;
356
+ }
357
+ /**
358
+ * Get forwarded sources list.
359
+ * @returns {Array<string>|null}
360
+ */
361
+ getForwardedSources() {
362
+ return this._forwardedSources;
363
+ }
364
+ /**
365
+ * Get local video track.
366
+ * @returns {JitsiLocalTrack|undefined}
367
+ */
368
+ getLocalVideoTrack() {
369
+ const localVideo = this.getLocalTracks(MediaType.VIDEO);
370
+ return localVideo.length ? localVideo[0] : undefined;
371
+ }
372
+ /**
373
+ * Returns all the local video tracks.
374
+ * @returns {Array<JitsiLocalTrack>}
375
+ */
376
+ getLocalVideoTracks() {
377
+ return this.getLocalTracks(MediaType.VIDEO);
378
+ }
379
+ /**
380
+ * Get local audio track.
381
+ * @returns {JitsiLocalTrack|undefined}
382
+ */
383
+ getLocalAudioTrack() {
384
+ const localAudio = this.getLocalTracks(MediaType.AUDIO);
385
+ return localAudio.length ? localAudio[0] : undefined;
386
+ }
387
+ /**
388
+ * Returns the endpoint id for the local user.
389
+ * @returns {string}
390
+ */
391
+ getLocalEndpointId() {
392
+ return this.conference.myUserId();
393
+ }
394
+ /**
395
+ * Returns the local tracks of the given media type, or all local tracks if
396
+ * no specific type is given.
397
+ * @param {MediaType} [mediaType] Optional media type filter.
398
+ * (audio or video).
399
+ */
400
+ getLocalTracks(mediaType) {
401
+ if (!mediaType) {
402
+ return this.localTracks.slice();
403
+ }
404
+ return this.localTracks.filter(track => track.getType() === mediaType);
405
+ }
406
+ /**
407
+ * Obtains all remote tracks currently known to this RTC module instance.
408
+ * @param {MediaType} [mediaType] The remote tracks will be filtered
409
+ * by their media type if this argument is specified.
410
+ * @return {Array<JitsiRemoteTrack>}
411
+ */
412
+ getRemoteTracks(mediaType) {
413
+ let remoteTracks = [];
414
+ for (const tpc of this.peerConnections.values()) {
415
+ const pcRemoteTracks = tpc.getRemoteTracks(undefined, mediaType);
416
+ if (pcRemoteTracks) {
417
+ remoteTracks = remoteTracks.concat(pcRemoteTracks);
418
+ }
419
+ }
420
+ return remoteTracks;
421
+ }
422
+ /**
423
+ * Set mute for all local audio streams attached to the conference.
424
+ * @returns {Promise}
425
+ */
426
+ setAudioMute() {
427
+ const mutePromises = [];
428
+ this.getLocalTracks(MediaType.AUDIO).forEach(audioTrack => {
429
+ mutePromises.push(audioTrack.mute());
430
+ });
431
+ return Promise.all(mutePromises);
432
+ }
433
+ /**
434
+ * Set mute for all local video streams attached to the conference.
435
+ * @returns {Promise}
436
+ */
437
+ setVideoMute() {
438
+ const mutePromises = [];
439
+ const tracks = this.localTracks.filter(track => track.getType() === MediaType.VIDEO
440
+ && track.getVideoType() === VideoType.CAMERA);
441
+ tracks.forEach(track => mutePromises.push(track.mute()));
442
+ return Promise.all(mutePromises);
443
+ }
444
+ /**
445
+ * Set mute for all local desktop video streams attached to the conference.
446
+ * @returns {Promise}
447
+ */
448
+ setDesktopMute() {
449
+ const mutePromises = [];
450
+ const tracks = this.localTracks.filter(track => track.getType() === MediaType.VIDEO
451
+ && track.getVideoType() === VideoType.DESKTOP);
452
+ tracks.forEach(track => mutePromises.push(track.mute()));
453
+ return Promise.all(mutePromises);
454
+ }
455
+ /**
456
+ *
457
+ * @param track
458
+ */
459
+ removeLocalTrack(track) {
460
+ const pos = this.localTracks.indexOf(track);
461
+ if (pos === -1) {
462
+ return;
463
+ }
464
+ this.localTracks.splice(pos, 1);
465
+ }
466
+ /**
467
+ *
468
+ * @param elSelector
469
+ * @param stream
470
+ */
471
+ static attachMediaStream(elSelector, stream) {
472
+ return RTCUtils.attachMediaStream(elSelector, stream);
473
+ }
474
+ /**
475
+ * Returns true if changing the input (camera / microphone) or output
476
+ * (audio) device is supported and false if not.
477
+ * @param {string} [deviceType] Type of device to change. Default is
478
+ * undefined or 'input', 'output' - for audio output device change.
479
+ * @returns {boolean} true if available, false otherwise.
480
+ */
481
+ static isDeviceChangeAvailable(deviceType) {
482
+ return RTCUtils.isDeviceChangeAvailable(deviceType);
483
+ }
484
+ /**
485
+ * Returns whether the current execution environment supports WebRTC (for
486
+ * use within this library).
487
+ *
488
+ * @returns {boolean} {@code true} if WebRTC is supported in the current
489
+ * execution environment (for use within this library); {@code false},
490
+ * otherwise.
491
+ */
492
+ static isWebRtcSupported() {
493
+ return browser.isSupported();
494
+ }
495
+ /**
496
+ * Returns currently used audio output device id, '' stands for default
497
+ * device
498
+ * @returns {string}
499
+ */
500
+ static getAudioOutputDevice() {
501
+ return RTCUtils.getAudioOutputDevice();
502
+ }
503
+ /**
504
+ * Returns list of available media devices if its obtained, otherwise an
505
+ * empty array is returned/
506
+ * @returns {array} list of available media devices.
507
+ */
508
+ static getCurrentlyAvailableMediaDevices() {
509
+ return RTCUtils.getCurrentlyAvailableMediaDevices();
510
+ }
511
+ /**
512
+ * Returns event data for device to be reported to stats.
513
+ * @returns {MediaDeviceInfo} device.
514
+ */
515
+ static getEventDataForActiveDevice(device) {
516
+ return RTCUtils.getEventDataForActiveDevice(device);
517
+ }
518
+ /**
519
+ * Sets current audio output device.
520
+ * @param {string} deviceId Id of 'audiooutput' device from
521
+ * navigator.mediaDevices.enumerateDevices().
522
+ * @returns {Promise} resolves when audio output is changed, is rejected
523
+ * otherwise
524
+ */
525
+ static setAudioOutputDevice(deviceId) {
526
+ return RTCUtils.setAudioOutputDevice(deviceId);
527
+ }
528
+ /**
529
+ * Allows to receive list of available cameras/microphones.
530
+ * @param {function} callback Would receive array of devices as an
531
+ * argument.
532
+ */
533
+ static enumerateDevices(callback) {
534
+ RTCUtils.enumerateDevices(callback);
535
+ }
536
+ /**
537
+ * A method to handle stopping of the stream.
538
+ * One point to handle the differences in various implementations.
539
+ * @param {MediaStream} mediaStream MediaStream object to stop.
540
+ */
541
+ static stopMediaStream(mediaStream) {
542
+ RTCUtils.stopMediaStream(mediaStream);
543
+ }
544
+ /**
545
+ * Returns whether the desktop sharing is enabled or not.
546
+ * @returns {boolean}
547
+ */
548
+ static isDesktopSharingEnabled() {
549
+ return RTCUtils.isDesktopSharingEnabled();
550
+ }
551
+ /**
552
+ * Closes the currently opened bridge channel.
553
+ */
554
+ closeBridgeChannel() {
555
+ if (this._channel) {
556
+ this._channel.close();
557
+ this._channel = null;
558
+ }
559
+ }
560
+ /* eslint-disable max-params */
561
+ /**
562
+ *
563
+ * @param {TraceablePeerConnection} tpc
564
+ * @param {number} ssrc
565
+ * @param {number} audioLevel
566
+ * @param {boolean} isLocal
567
+ */
568
+ setAudioLevel(tpc, ssrc, audioLevel, isLocal) {
569
+ const track = tpc.getTrackBySSRC(ssrc);
570
+ if (!track) {
571
+ return;
572
+ }
573
+ else if (!track.isAudioTrack()) {
574
+ logger.warn(`Received audio level for non-audio track: ${ssrc}`);
575
+ return;
576
+ }
577
+ else if (track.isLocal() !== isLocal) {
578
+ logger.error(`${track} was expected to ${isLocal ? 'be' : 'not be'} local`);
579
+ }
580
+ track.setAudioLevel(audioLevel, tpc);
581
+ }
582
+ /**
583
+ * Sends message via the bridge channel.
584
+ * @param {string} to The id of the endpoint that should receive the
585
+ * message. If "" the message will be sent to all participants.
586
+ * @param {object} payload The payload of the message.
587
+ * @throws NetworkError or InvalidStateError or Error if the operation
588
+ * fails or there is no data channel created.
589
+ */
590
+ sendChannelMessage(to, payload) {
591
+ if (this._channel) {
592
+ this._channel.sendMessage(to, payload);
593
+ }
594
+ else {
595
+ throw new Error('BridgeChannel has not been initialized yet');
596
+ }
597
+ }
598
+ /**
599
+ * Sends the local stats via the bridge channel.
600
+ * @param {Object} payload The payload of the message.
601
+ * @throws NetworkError/InvalidStateError/Error if the operation fails or if there is no data channel created.
602
+ */
603
+ sendEndpointStatsMessage(payload) {
604
+ if (this._channel && this._channel.isOpen()) {
605
+ this._channel.sendEndpointStatsMessage(payload);
606
+ }
607
+ }
608
+ /**
609
+ * Sends a receiver audio subscription message.
610
+ * @param {*} message
611
+ */
612
+ sendReceiverAudioSubscriptionMessage(message) {
613
+ if (this._channel && this._channel.isOpen()) {
614
+ this._channel.sendReceiverAudioSubscriptionMessage(message);
615
+ }
616
+ }
617
+ /**
618
+ * Selects a new value for "lastN". The requested amount of videos are going
619
+ * to be delivered after the value is in effect. Set to -1 for unlimited or
620
+ * all available videos.
621
+ * @param {number} value the new value for lastN.
622
+ */
623
+ setLastN(value) {
624
+ if (this._lastN !== value) {
625
+ this._lastN = value;
626
+ if (this._channel && this._channel.isOpen()) {
627
+ this._channel.sendSetLastNMessage(value);
628
+ }
629
+ this.eventEmitter.emit(RTCEvents.LASTN_VALUE_CHANGED, value);
630
+ }
631
+ }
632
+ /**
633
+ * Indicates if the source name is currently included in the forwarded sources.
634
+ *
635
+ * @param {string} sourceName The source name that we check for forwarded sources.
636
+ * @returns {boolean} true if the source name is in the forwarded sources or if we don't have bridge channel
637
+ * support, otherwise we return false.
638
+ */
639
+ isInForwardedSources(sourceName) {
640
+ return !this._forwardedSources // forwardedSources not initialised yet.
641
+ || this._forwardedSources.indexOf(sourceName) > -1;
642
+ }
643
+ /**
644
+ * Updates the target audio output device for all remote audio tracks.
645
+ *
646
+ * @param {string} deviceId - The device id of the audio ouput device to
647
+ * use for all remote tracks.
648
+ * @private
649
+ * @returns {void}
650
+ */
651
+ _updateAudioOutputForAudioTracks(deviceId) {
652
+ const remoteAudioTracks = this.getRemoteTracks(MediaType.AUDIO);
653
+ for (const track of remoteAudioTracks) {
654
+ track.setAudioOutput(deviceId);
655
+ }
656
+ }
657
+ }
658
+ //# sourceMappingURL=RTC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RTC.js","sourceRoot":"","sources":["../../../../modules/RTC/RTC.js"],"names":[],"mappings":"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"}