@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,524 @@
1
+ /* eslint-disable newline-per-chained-call */
2
+ import { getLogger } from '@jitsi/logger';
3
+ import { $iq } from 'strophe.js';
4
+ import { CONFERENCE_REQUEST_FAILED, NOT_LIVE_ERROR } from '../../JitsiConnectionErrors';
5
+ import { CONNECTION_FAILED, CONNECTION_REDIRECTED } from '../../JitsiConnectionEvents';
6
+ import { AuthenticationEvents } from '../../service/authentication/AuthenticationEvents';
7
+ import { XMPPEvents } from '../../service/xmpp/XMPPEvents';
8
+ import Settings from '../settings/Settings';
9
+ import Listenable from '../util/Listenable';
10
+ import { exists, findFirst, getAttribute, getText } from '../util/XMLUtils';
11
+ import { handleStropheError } from './StropheErrorHandler';
12
+ const logger = getLogger('xmpp:Moderator');
13
+ /**
14
+ * Exponential backoff timer.
15
+ * @param step the step to use.
16
+ */
17
+ function createExpBackoffTimer(step) {
18
+ let count = 1;
19
+ const maxTimeout = 120000;
20
+ return function (reset) {
21
+ // Reset call
22
+ if (reset) {
23
+ count = 1;
24
+ return;
25
+ }
26
+ // Calculate next timeout
27
+ const timeout = Math.pow(2, count - 1);
28
+ count += 1;
29
+ return Math.min(timeout * step, maxTimeout);
30
+ };
31
+ }
32
+ /**
33
+ * The moderator/focus responsible for direct communication with jicofo
34
+ */
35
+ export default class Moderator extends Listenable {
36
+ /**
37
+ * Constructs moderator.
38
+ * @param xmpp The xmpp.
39
+ */
40
+ constructor(xmpp) {
41
+ super();
42
+ this.getNextTimeout = createExpBackoffTimer(1000);
43
+ this.getNextErrorTimeout = createExpBackoffTimer(1000);
44
+ this.options = xmpp.options;
45
+ // Whether SIP gateway (jigasi) support is enabled. TODO: use presence so it can be changed based on jigasi
46
+ // availability.
47
+ this.sipGatewayEnabled = false;
48
+ // Response to conference request may contain whether visitors are supported
49
+ // in certain cases we need to know this to be able to get decisions on some errors (max-occupants reached)
50
+ this.visitorsSupported = false;
51
+ this.xmpp = xmpp;
52
+ this.connection = xmpp.connection;
53
+ // The JID to which conference-iq requests are sent over XMPP.
54
+ this.targetJid = this.options.hosts?.focus;
55
+ // If not specified default to 'focus.domain'
56
+ if (!this.targetJid) {
57
+ this.targetJid = `focus.${this.options.hosts?.domain}`;
58
+ }
59
+ this.targetUrl = this.options.conferenceRequestUrl;
60
+ // Whether to send conference requests over HTTP or XMPP
61
+ this.mode = this.targetUrl ? 'http' : 'xmpp';
62
+ logger.info(`Using ${this.mode} for conference requests.`);
63
+ // The set of JIDs known to belong to jicofo. Populated from configuration
64
+ // and responses from conference requests.
65
+ this.focusUserJids = new Set();
66
+ if (this.options.focusUserJid) {
67
+ this.focusUserJids.add(this.options.focusUserJid);
68
+ }
69
+ // FIXME: Message listener that talks to POPUP window
70
+ /**
71
+ *
72
+ * @param event
73
+ */
74
+ function listener(event) {
75
+ if (event.data && event.data.sessionId) {
76
+ if (event.origin !== window.location.origin) {
77
+ logger.warn(`Ignoring sessionId from different origin: ${event.origin}`);
78
+ return;
79
+ }
80
+ Settings.sessionId = event.data.sessionId;
81
+ // After popup is closed we will authenticate
82
+ }
83
+ }
84
+ // Register
85
+ if (window.addEventListener) {
86
+ window.addEventListener('message', listener, false);
87
+ }
88
+ else {
89
+ window.attachEvent('onmessage', listener);
90
+ }
91
+ }
92
+ /**
93
+ * Check whether the supplied jid is a known jid for focus.
94
+ * @param jid
95
+ * @returns {boolean}
96
+ */
97
+ isFocusJid(jid) {
98
+ if (!jid) {
99
+ return false;
100
+ }
101
+ for (const focusJid of this.focusUserJids) {
102
+ // jid may be a full JID, and focusUserJids may be bare JIDs
103
+ if (jid.indexOf(`${focusJid}/`) === 0) {
104
+ return true;
105
+ }
106
+ }
107
+ return false;
108
+ }
109
+ /**
110
+ * Is sip gw enabled.
111
+ * @returns {boolean}
112
+ */
113
+ isSipGatewayEnabled() {
114
+ return this.sipGatewayEnabled;
115
+ }
116
+ /**
117
+ * Create a conference request based on the configured options and saved Settings.
118
+ *
119
+ * A conference request has the following format:
120
+ * {
121
+ * room: "room@example.com",
122
+ * sessionId: "foo", // optional
123
+ * machineUdi: "bar", // optional
124
+ * identity: "baz", // optional
125
+ * properties: { } // map string to string
126
+ * }
127
+ *
128
+ * It can be encoded in either JSON or and IQ.
129
+ *
130
+ * @param roomJid - The room jid for which to send conference request.
131
+ *
132
+ * @returns the created conference request.
133
+ */
134
+ _createConferenceRequest(roomJid) {
135
+ // Session Id used for authentication
136
+ const { sessionId } = Settings;
137
+ const config = this.options;
138
+ const properties = {};
139
+ if (config.startAudioMuted !== undefined) {
140
+ properties.startAudioMuted = config.startAudioMuted;
141
+ }
142
+ if (config.startVideoMuted !== undefined) {
143
+ properties.startVideoMuted = config.startVideoMuted;
144
+ }
145
+ // this flag determines whether the bridge will include this call in its
146
+ // rtcstats reporting or not. If the site admin hasn't set the flag in
147
+ // config.js, then the client defaults to false (see
148
+ // react/features/rtcstats/functions.js in jitsi-meet). The server-side
149
+ // components default to true to match the pre-existing behavior, so we only
150
+ // signal if false.
151
+ const rtcstatsEnabled = config?.analytics?.rtcstatsEnabled ?? false;
152
+ if (!rtcstatsEnabled) {
153
+ properties.rtcstatsEnabled = false;
154
+ }
155
+ const conferenceRequest = {
156
+ machineUid: Settings.machineId,
157
+ properties,
158
+ room: roomJid
159
+ };
160
+ if (sessionId) {
161
+ conferenceRequest.sessionId = sessionId;
162
+ }
163
+ if (!config.iAmRecorder && !config.iAmSipGateway) {
164
+ conferenceRequest.properties['visitors-version'] = 1;
165
+ if (this.options.preferVisitor) {
166
+ conferenceRequest.properties.visitor = true;
167
+ }
168
+ }
169
+ return conferenceRequest;
170
+ }
171
+ /**
172
+ * Create a conference request and encode it as an IQ.
173
+ *
174
+ * @param roomJid - The room jid for which to send conference request.
175
+ */
176
+ _createConferenceIq(roomJid) {
177
+ const conferenceRequest = this._createConferenceRequest(roomJid);
178
+ // Generate create conference IQ
179
+ const elem = $iq({
180
+ to: this.targetJid,
181
+ type: 'set'
182
+ });
183
+ elem.c('conference', {
184
+ 'machine-uid': conferenceRequest.machineUid,
185
+ room: roomJid,
186
+ token: this.xmpp.token,
187
+ xmlns: 'http://jitsi.org/protocol/focus'
188
+ });
189
+ if (conferenceRequest.sessionId) {
190
+ elem.attrs({ 'session-id': conferenceRequest.sessionId });
191
+ }
192
+ for (const k in conferenceRequest.properties) {
193
+ if (conferenceRequest.properties.hasOwnProperty(k)) {
194
+ elem.c('property', {
195
+ name: k,
196
+ value: conferenceRequest.properties[k]
197
+ })
198
+ .up();
199
+ }
200
+ }
201
+ return elem;
202
+ }
203
+ /**
204
+ * Parses a conference IQ.
205
+ * @param resultIq the result IQ that is received.
206
+ * @returns {{properties: {}}} Returns an object with the parsed properties.
207
+ * @private
208
+ */
209
+ _parseConferenceIq(resultIq) {
210
+ const conferenceRequest = { properties: {} };
211
+ const conferenceEl = findFirst(resultIq, 'conference');
212
+ conferenceRequest.focusJid = getAttribute(conferenceEl, 'focusjid');
213
+ conferenceRequest.sessionId = getAttribute(conferenceEl, 'session-id');
214
+ conferenceRequest.identity = getAttribute(conferenceEl, 'identity');
215
+ conferenceRequest.ready = getAttribute(conferenceEl, 'ready') === 'true';
216
+ conferenceRequest.vnode = getAttribute(conferenceEl, 'vnode');
217
+ if (exists(resultIq, ':scope>conference>property[name="authentication"][value="true"]')) {
218
+ conferenceRequest.properties.authentication = 'true';
219
+ }
220
+ if (exists(resultIq, ':scope>conference>property[name="externalAuth"][value="true"]')) {
221
+ conferenceRequest.properties.externalAuth = 'true';
222
+ }
223
+ // Check if jicofo has jigasi support enabled.
224
+ if (exists(resultIq, ':scope>conference>property[name="sipGatewayEnabled"][value="true"]')) {
225
+ conferenceRequest.properties.sipGatewayEnabled = 'true';
226
+ }
227
+ // check for explicit false, all other cases is considered live
228
+ if (exists(resultIq, ':scope>conference>property[name="live"][value="false"]')) {
229
+ conferenceRequest.properties.live = 'false';
230
+ }
231
+ return conferenceRequest;
232
+ }
233
+ // FIXME We need to show the fact that we're waiting for the focus to the user
234
+ // (or that the focus is not available)
235
+ /**
236
+ * Allocates the conference focus.
237
+ * @param roomJid - The room jid for which to send conference request.
238
+ * @returns {Promise} - Resolved when Jicofo allows to join the room. It's never
239
+ * rejected, and it'll keep on pinging Jicofo forever.
240
+ */
241
+ sendConferenceRequest(roomJid) {
242
+ // there is no point of sending conference iq when in visitor mode (disableFocus)
243
+ // when we have sent early the conference request via http
244
+ // we want to skip sending it here, or visitors can loop
245
+ if (this.conferenceRequestSent) {
246
+ return Promise.resolve();
247
+ }
248
+ // to mark whether we have already sent a conference request
249
+ this.conferenceRequestSent = false;
250
+ return new Promise((resolve, reject) => {
251
+ if (this.mode === 'xmpp') {
252
+ logger.info(`Sending conference request over XMPP to ${this.targetJid}`);
253
+ this.connection.sendIQ(this._createConferenceIq(roomJid), result => this._handleIqSuccess(roomJid, result, resolve, reject), error => this._handleIqError(roomJid, error, resolve, reject));
254
+ // XXX We're pressed for time here because we're beginning a complex
255
+ // and/or lengthy conference-establishment process which supposedly
256
+ // involves multiple RTTs. We don't have the time to wait for Strophe to
257
+ // decide to send our IQ.
258
+ this.connection.flush();
259
+ }
260
+ else {
261
+ logger.info(`Sending conference request over HTTP to ${this.targetUrl}`);
262
+ fetch(this.targetUrl, {
263
+ body: JSON.stringify(this._createConferenceRequest(roomJid)),
264
+ headers: {
265
+ 'Content-Type': 'application/json',
266
+ ...this.xmpp.token ? { 'Authorization': `Bearer ${this.xmpp.token}` } : {}
267
+ },
268
+ method: 'POST'
269
+ })
270
+ .then(response => {
271
+ if (!response.ok) {
272
+ response.text()
273
+ .then(text => {
274
+ logger.warn(`Received HTTP ${response.status} ${response.statusText}. Body: ${text}`);
275
+ const sessionError = response.status === 400
276
+ && text.indexOf('400 invalid-session') > 0;
277
+ const notAuthorized = response.status === 403;
278
+ this._handleError(roomJid, sessionError, notAuthorized, resolve, reject);
279
+ })
280
+ .catch(error => {
281
+ logger.warn(`Error: ${error}`);
282
+ this._handleError(roomJid, undefined, undefined, resolve, () => reject(error));
283
+ });
284
+ // _handleError has either scheduled a retry or fired an event indicating failure.
285
+ return;
286
+ }
287
+ response.json()
288
+ .then(resultJson => {
289
+ this._handleSuccess(roomJid, resultJson, resolve, reject);
290
+ });
291
+ })
292
+ .catch(error => {
293
+ logger.warn(`Error: ${error}`);
294
+ this._handleError(roomJid, undefined, undefined, resolve, () => reject(error));
295
+ });
296
+ }
297
+ }).then(() => {
298
+ this.conferenceRequestSent = true;
299
+ })
300
+ .finally(() => {
301
+ this.xmpp.connection._breakoutMovingToMain = undefined;
302
+ });
303
+ }
304
+ /**
305
+ * Handles success response for conference IQ.
306
+ * @param roomJid
307
+ * @param conferenceRequest
308
+ * @param callback
309
+ * @param errorCallback
310
+ * @private
311
+ */
312
+ _handleSuccess(roomJid, conferenceRequest, callback, errorCallback) {
313
+ // Reset the error timeout (because we haven't failed here).
314
+ this.getNextErrorTimeout(true);
315
+ if (conferenceRequest.focusJid) {
316
+ logger.info(`Adding focus JID: ${conferenceRequest.focusJid}`);
317
+ this.focusUserJids.add(conferenceRequest.focusJid);
318
+ }
319
+ else {
320
+ logger.warn('Conference request response contained no focusJid.');
321
+ }
322
+ const authenticationEnabled = conferenceRequest.properties.authentication === 'true';
323
+ logger.info(`Authentication enabled: ${authenticationEnabled}`);
324
+ if (conferenceRequest.sessionId) {
325
+ logger.info(`Received sessionId: ${conferenceRequest.sessionId}`);
326
+ Settings.sessionId = conferenceRequest.sessionId;
327
+ }
328
+ this.eventEmitter.emit(AuthenticationEvents.IDENTITY_UPDATED, authenticationEnabled, conferenceRequest.identity);
329
+ this.sipGatewayEnabled = conferenceRequest.properties.sipGatewayEnabled;
330
+ logger.info(`Sip gateway enabled: ${this.sipGatewayEnabled}`);
331
+ if (conferenceRequest.properties.live === 'false') {
332
+ this.getNextTimeout(true);
333
+ logger.info('Conference is not live.');
334
+ this.xmpp.eventEmitter.emit(CONNECTION_FAILED, NOT_LIVE_ERROR);
335
+ errorCallback();
336
+ return;
337
+ }
338
+ this.visitorsSupported = conferenceRequest.properties['visitors-supported'];
339
+ if (conferenceRequest.ready) {
340
+ // Reset the non-error timeout (because we've succeeded here).
341
+ this.getNextTimeout(true);
342
+ // we want to ignore redirects when this is jibri (record/live-stream or a sip jibri)
343
+ // we ignore redirects when moving from a breakout room to the main room
344
+ if (conferenceRequest.vnode && !this.options.iAmRecorder && !this.options.iAmSipGateway) {
345
+ if (this.connection._breakoutMovingToMain === roomJid) {
346
+ logger.info('Skipping redirect as we are moving from breakout to main.');
347
+ callback();
348
+ return;
349
+ }
350
+ logger.warn(`Redirected to: ${conferenceRequest.vnode} with focusJid ${conferenceRequest.focusJid}`);
351
+ this.xmpp.eventEmitter.emit(CONNECTION_REDIRECTED, conferenceRequest.vnode, conferenceRequest.focusJid);
352
+ errorCallback();
353
+ return;
354
+ }
355
+ logger.info('Conference-request successful, ready to join the MUC.');
356
+ callback();
357
+ }
358
+ else {
359
+ const waitMs = this.getNextTimeout();
360
+ // This was a successful response, but the "ready" flag is not set. Retry after a timeout.
361
+ logger.info(`Not ready yet, will retry in ${waitMs} ms.`);
362
+ window.setTimeout(() => this.sendConferenceRequest(roomJid)
363
+ .then(callback).catch(errorCallback), waitMs);
364
+ }
365
+ }
366
+ /**
367
+ * Handles error response for conference IQ.
368
+ * @param roomJid
369
+ * @param sessionError
370
+ * @param notAuthorized
371
+ * @param callback
372
+ * @param errorCallback
373
+ * @private
374
+ */
375
+ _handleError(roomJid, sessionError, notAuthorized, callback, errorCallback) {
376
+ // If the session is invalid, remove and try again without session ID to get
377
+ // a new one
378
+ if (sessionError) {
379
+ logger.info('Session expired! - removing');
380
+ Settings.sessionId = undefined;
381
+ }
382
+ // Not authorized to create new room
383
+ if (notAuthorized) {
384
+ logger.warn('Unauthorized to start the conference');
385
+ this.eventEmitter.emit(XMPPEvents.AUTHENTICATION_REQUIRED);
386
+ errorCallback();
387
+ return;
388
+ }
389
+ const waitMs = this.getNextErrorTimeout();
390
+ if (sessionError && waitMs < 60000) {
391
+ // If the session is invalid, retry a limited number of times and then fire an error.
392
+ logger.info(`Invalid session, will retry after ${waitMs} ms.`);
393
+ this.getNextTimeout(true);
394
+ window.setTimeout(() => this.sendConferenceRequest(roomJid)
395
+ .then(callback)
396
+ .catch(errorCallback), waitMs);
397
+ }
398
+ else {
399
+ logger.error('Failed to get a successful response, giving up.');
400
+ // This is a "fatal" error and the user of the lib should handle it accordingly.
401
+ this.xmpp.eventEmitter.emit(CONNECTION_FAILED, CONFERENCE_REQUEST_FAILED);
402
+ errorCallback();
403
+ }
404
+ }
405
+ /**
406
+ * Invoked by {@link #sendConferenceRequest} upon its request receiving an xmpp error result.
407
+ *
408
+ * @param roomJid - The room jid used to send conference request.
409
+ * @param error - the error result of the request that {@link sendConferenceRequest} sent
410
+ * @param {Function} callback - the function to be called back upon the
411
+ * successful allocation of the conference focus
412
+ * @param errorCallback
413
+ */
414
+ _handleIqError(roomJid, error, callback, errorCallback) {
415
+ // Call handleStropheError for centralized error logging and analytics
416
+ handleStropheError(error, {
417
+ mode: this.mode,
418
+ operation: 'conference request (IQ)',
419
+ roomJid,
420
+ targetJid: this.targetJid,
421
+ userJid: this.connection.jid
422
+ });
423
+ // The reservation system only works over XMPP. Handle the error separately.
424
+ // Check for error returned by the reservation system
425
+ // Convert Strophe object to DOM element for XMLUtils functions
426
+ const reservationErr = findFirst(error, ':scope>error>reservation-error');
427
+ if (reservationErr) {
428
+ // Trigger error event
429
+ const errorCode = getAttribute(reservationErr, 'error-code');
430
+ const errorTextNode = findFirst(error, ':scope>error>text');
431
+ let errorMsg;
432
+ if (errorTextNode) {
433
+ errorMsg = getText(errorTextNode);
434
+ }
435
+ this.eventEmitter.emit(XMPPEvents.RESERVATION_ERROR, errorCode, errorMsg);
436
+ errorCallback();
437
+ return;
438
+ }
439
+ const invalidSession = Boolean(exists(error, ':scope>error>session-invalid') || exists(error, ':scope>error>not-acceptable'));
440
+ // Not authorized to create new room
441
+ const notAuthorized = exists(error, ':scope>error>not-authorized');
442
+ this._handleError(roomJid, invalidSession, notAuthorized, callback, errorCallback);
443
+ }
444
+ /**
445
+ * Invoked by {@link #sendConferenecRequest} upon its request receiving a
446
+ * success (i.e. non-error) result.
447
+ *
448
+ * @param roomJid - The room jid used to send conference request.
449
+ * @param result - the success (i.e. non-error) result of the request that {@link #sendConferenecRequest} sent
450
+ * @param {Function} callback - the function to be called back upon the
451
+ * successful allocation of the conference focus
452
+ * @param errorCallback
453
+ */
454
+ _handleIqSuccess(roomJid, result, callback, errorCallback) {
455
+ // Setup config options
456
+ const conferenceRequest = this._parseConferenceIq(result);
457
+ this._handleSuccess(roomJid, conferenceRequest, callback, errorCallback);
458
+ }
459
+ /**
460
+ * Authenticate by sending a conference IQ.
461
+ * @param roomJid The room jid.
462
+ * @returns {Promise<unknown>}
463
+ */
464
+ authenticate(roomJid) {
465
+ return new Promise((resolve, reject) => {
466
+ this.connection.sendIQ(this._createConferenceIq(roomJid), result => {
467
+ const sessionId = getAttribute(findFirst(result, 'conference'), 'session-id');
468
+ if (sessionId) {
469
+ logger.info(`Received sessionId: ${sessionId}`);
470
+ Settings.sessionId = sessionId;
471
+ }
472
+ else {
473
+ logger.warn('Response did not contain a session-id');
474
+ }
475
+ resolve();
476
+ }, errorIq => {
477
+ handleStropheError(errorIq, {
478
+ operation: 'authenticate conference',
479
+ roomJid,
480
+ targetJid: this.targetJid,
481
+ userJid: this.connection.jid
482
+ });
483
+ const errorEl = findFirst(errorIq, ':scope>iq>error');
484
+ const firstErrorChild = errorEl?.children?.length > 0 ? errorEl.children[0] : undefined;
485
+ reject({
486
+ error: firstErrorChild?.tagName,
487
+ message: getText(findFirst(errorIq, ':scope>iq>error>text'))
488
+ });
489
+ });
490
+ });
491
+ }
492
+ /**
493
+ * Logout by sending conference IQ.
494
+ * @param callback
495
+ */
496
+ logout(callback) {
497
+ const iq = $iq({
498
+ to: this.targetJid,
499
+ type: 'set'
500
+ });
501
+ const { sessionId } = Settings;
502
+ if (!sessionId) {
503
+ callback();
504
+ return;
505
+ }
506
+ iq.c('logout', {
507
+ 'session-id': sessionId,
508
+ xmlns: 'http://jitsi.org/protocol/focus'
509
+ });
510
+ this.connection.sendIQ(iq, result => {
511
+ logger.info('Log out OK', result);
512
+ Settings.sessionId = undefined;
513
+ callback();
514
+ }, error => {
515
+ handleStropheError(error, {
516
+ operation: 'logout',
517
+ sessionId,
518
+ targetJid: this.targetJid,
519
+ userJid: this.connection.jid
520
+ });
521
+ });
522
+ }
523
+ }
524
+ //# sourceMappingURL=moderator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moderator.js","sourceRoot":"","sources":["../../../../modules/xmpp/moderator.js"],"names":[],"mappings":"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"}