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