@sbhjt-gr/react-native-webrtc 124.0.0 → 124.0.1

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 (360) hide show
  1. package/.clang-format +11 -11
  2. package/.eslintignore +6 -6
  3. package/.nvmrc +1 -1
  4. package/ISSUE_TEMPLATE.md +40 -40
  5. package/LICENSE +22 -22
  6. package/README.md +103 -103
  7. package/android/build.gradle +37 -37
  8. package/android/consumer-rules.pro +3 -3
  9. package/android/src/main/AndroidManifest.xml +11 -11
  10. package/android/src/main/java/com/oney/WebRTCModule/AbstractVideoCaptureController.java +113 -113
  11. package/android/src/main/java/com/oney/WebRTCModule/CameraCaptureController.java +338 -338
  12. package/android/src/main/java/com/oney/WebRTCModule/CameraEventsHandler.java +49 -49
  13. package/android/src/main/java/com/oney/WebRTCModule/DataChannelWrapper.java +99 -99
  14. package/android/src/main/java/com/oney/WebRTCModule/DataPacketCryptorManager.java +62 -62
  15. package/android/src/main/java/com/oney/WebRTCModule/DisplayUtils.java +16 -16
  16. package/android/src/main/java/com/oney/WebRTCModule/EglUtils.java +66 -66
  17. package/android/src/main/java/com/oney/WebRTCModule/GetUserMediaImpl.java +539 -539
  18. package/android/src/main/java/com/oney/WebRTCModule/LibraryLoader.java +21 -21
  19. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionNotification.java +70 -70
  20. package/android/src/main/java/com/oney/WebRTCModule/MediaProjectionService.java +82 -82
  21. package/android/src/main/java/com/oney/WebRTCModule/PeerConnectionObserver.java +588 -588
  22. package/android/src/main/java/com/oney/WebRTCModule/RTCCryptoManager.java +493 -493
  23. package/android/src/main/java/com/oney/WebRTCModule/RTCVideoViewManager.java +98 -98
  24. package/android/src/main/java/com/oney/WebRTCModule/ReactBridgeUtil.java +35 -35
  25. package/android/src/main/java/com/oney/WebRTCModule/ScreenCaptureController.java +94 -94
  26. package/android/src/main/java/com/oney/WebRTCModule/SerializeUtils.java +342 -342
  27. package/android/src/main/java/com/oney/WebRTCModule/StringUtils.java +100 -100
  28. package/android/src/main/java/com/oney/WebRTCModule/ThreadUtils.java +41 -41
  29. package/android/src/main/java/com/oney/WebRTCModule/TrackCapturerEventsEmitter.java +34 -34
  30. package/android/src/main/java/com/oney/WebRTCModule/VideoTrackAdapter.java +137 -137
  31. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModule.java +1643 -1643
  32. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModuleOptions.java +33 -33
  33. package/android/src/main/java/com/oney/WebRTCModule/WebRTCModulePackage.java +21 -21
  34. package/android/src/main/java/com/oney/WebRTCModule/WebRTCView.java +583 -583
  35. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraClient.java +464 -464
  36. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraConfig.java +17 -17
  37. package/android/src/main/java/com/oney/WebRTCModule/palabra/PalabraListener.java +7 -7
  38. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/ProcessorProvider.java +38 -38
  39. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoEffectProcessor.java +59 -59
  40. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessor.java +19 -19
  41. package/android/src/main/java/com/oney/WebRTCModule/videoEffects/VideoFrameProcessorFactoryInterface.java +12 -12
  42. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoDecoderFactory.java +73 -73
  43. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/H264AndSoftwareVideoEncoderFactory.java +73 -73
  44. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoDecoderFactoryProxy.java +36 -36
  45. package/android/src/main/java/com/oney/WebRTCModule/webrtcutils/SoftwareVideoEncoderFactoryProxy.java +36 -36
  46. package/android/src/main/java/org/webrtc/Camera1Helper.java +54 -54
  47. package/android/src/main/java/org/webrtc/Camera2Helper.java +52 -52
  48. package/android/src/main/res/values/strings.xml +5 -5
  49. package/android/src/main/res/values/styles.xml +8 -8
  50. package/ios/RCTWebRTC/CaptureController.h +18 -18
  51. package/ios/RCTWebRTC/CaptureController.m +28 -28
  52. package/ios/RCTWebRTC/CapturerEventsDelegate.h +12 -12
  53. package/ios/RCTWebRTC/DataChannelWrapper.h +27 -27
  54. package/ios/RCTWebRTC/DataChannelWrapper.m +42 -42
  55. package/ios/RCTWebRTC/I420Converter.h +22 -22
  56. package/ios/RCTWebRTC/I420Converter.m +164 -164
  57. package/ios/RCTWebRTC/PIPController.h +24 -24
  58. package/ios/RCTWebRTC/PIPController.m +234 -234
  59. package/ios/RCTWebRTC/PalabraAudioSink.h +13 -13
  60. package/ios/RCTWebRTC/PalabraAudioSink.m +18 -18
  61. package/ios/RCTWebRTC/PalabraClient.h +36 -36
  62. package/ios/RCTWebRTC/PalabraClient.m +584 -584
  63. package/ios/RCTWebRTC/RCTConvert+WebRTC.h +16 -16
  64. package/ios/RCTWebRTC/RCTConvert+WebRTC.m +206 -206
  65. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.h +10 -10
  66. package/ios/RCTWebRTC/RTCMediaStreamTrack+React.m +16 -16
  67. package/ios/RCTWebRTC/RTCVideoViewManager.h +29 -29
  68. package/ios/RCTWebRTC/RTCVideoViewManager.m +411 -411
  69. package/ios/RCTWebRTC/SampleBufferVideoCallView.h +12 -12
  70. package/ios/RCTWebRTC/SampleBufferVideoCallView.m +178 -178
  71. package/ios/RCTWebRTC/ScreenCaptureController.h +20 -20
  72. package/ios/RCTWebRTC/ScreenCaptureController.m +82 -82
  73. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.h +7 -7
  74. package/ios/RCTWebRTC/ScreenCapturePickerViewManager.m +59 -59
  75. package/ios/RCTWebRTC/ScreenCapturer.h +19 -19
  76. package/ios/RCTWebRTC/ScreenCapturer.m +263 -263
  77. package/ios/RCTWebRTC/SerializeUtils.h +28 -28
  78. package/ios/RCTWebRTC/SerializeUtils.m +314 -314
  79. package/ios/RCTWebRTC/SocketConnection.h +13 -13
  80. package/ios/RCTWebRTC/SocketConnection.m +137 -137
  81. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.h +14 -14
  82. package/ios/RCTWebRTC/TrackCapturerEventsEmitter.m +36 -36
  83. package/ios/RCTWebRTC/VideoCaptureController.h +21 -21
  84. package/ios/RCTWebRTC/VideoCaptureController.m +328 -328
  85. package/ios/RCTWebRTC/WebRTCModule+Palabra.h +4 -4
  86. package/ios/RCTWebRTC/WebRTCModule+Palabra.m +83 -83
  87. package/ios/RCTWebRTC/WebRTCModule+Permissions.m +75 -75
  88. package/ios/RCTWebRTC/WebRTCModule+RTCAudioSession.m +20 -20
  89. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.h +14 -14
  90. package/ios/RCTWebRTC/WebRTCModule+RTCDataChannel.m +165 -165
  91. package/ios/RCTWebRTC/WebRTCModule+RTCFrameCryptor.m +611 -611
  92. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.h +13 -13
  93. package/ios/RCTWebRTC/WebRTCModule+RTCMediaStream.m +728 -533
  94. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.h +24 -24
  95. package/ios/RCTWebRTC/WebRTCModule+RTCPeerConnection.m +1004 -1004
  96. package/ios/RCTWebRTC/WebRTCModule+Transceivers.m +267 -267
  97. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.h +12 -12
  98. package/ios/RCTWebRTC/WebRTCModule+VideoTrackAdapter.m +166 -166
  99. package/ios/RCTWebRTC/WebRTCModule.h +58 -51
  100. package/ios/RCTWebRTC/WebRTCModule.m +169 -151
  101. package/ios/RCTWebRTC/WebRTCModuleOptions.h +24 -24
  102. package/ios/RCTWebRTC/WebRTCModuleOptions.m +31 -31
  103. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.h +9 -9
  104. package/ios/RCTWebRTC/videoEffects/ProcessorProvider.m +23 -23
  105. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.h +13 -13
  106. package/ios/RCTWebRTC/videoEffects/VideoEffectProcessor.m +23 -23
  107. package/ios/RCTWebRTC/videoEffects/VideoFrameProcessor.h +8 -8
  108. package/ios/RCTWebRTC.xcodeproj/project.pbxproj +404 -404
  109. package/ios/RCTWebRTC.xcworkspace/contents.xcworkspacedata +10 -10
  110. package/lib/commonjs/Constraints.js.map +1 -1
  111. package/lib/commonjs/EventEmitter.js.map +1 -1
  112. package/lib/commonjs/Logger.js.map +1 -1
  113. package/lib/commonjs/MediaDevices.js +17 -17
  114. package/lib/commonjs/MediaDevices.js.map +1 -1
  115. package/lib/commonjs/MediaStream.js +19 -19
  116. package/lib/commonjs/MediaStream.js.map +1 -1
  117. package/lib/commonjs/MediaStreamError.js.map +1 -1
  118. package/lib/commonjs/MediaStreamErrorEvent.js.map +1 -1
  119. package/lib/commonjs/MediaStreamTrack.js +28 -28
  120. package/lib/commonjs/MediaStreamTrack.js.map +1 -1
  121. package/lib/commonjs/MediaStreamTrackEvent.js +6 -6
  122. package/lib/commonjs/MediaStreamTrackEvent.js.map +1 -1
  123. package/lib/commonjs/MessageEvent.js +7 -7
  124. package/lib/commonjs/MessageEvent.js.map +1 -1
  125. package/lib/commonjs/Permissions.js +28 -28
  126. package/lib/commonjs/Permissions.js.map +1 -1
  127. package/lib/commonjs/RTCAudioSession.js +4 -4
  128. package/lib/commonjs/RTCAudioSession.js.map +1 -1
  129. package/lib/commonjs/RTCDataChannel.js +2 -2
  130. package/lib/commonjs/RTCDataChannel.js.map +1 -1
  131. package/lib/commonjs/RTCDataChannelEvent.js +6 -6
  132. package/lib/commonjs/RTCDataChannelEvent.js.map +1 -1
  133. package/lib/commonjs/RTCDataPacketCryptor.js.map +1 -1
  134. package/lib/commonjs/RTCDataPacketCryptorFactory.js.map +1 -1
  135. package/lib/commonjs/RTCErrorEvent.js +3 -3
  136. package/lib/commonjs/RTCErrorEvent.js.map +1 -1
  137. package/lib/commonjs/RTCFrameCryptor.js +8 -8
  138. package/lib/commonjs/RTCFrameCryptor.js.map +1 -1
  139. package/lib/commonjs/RTCFrameCryptorFactory.js.map +1 -1
  140. package/lib/commonjs/RTCIceCandidate.js.map +1 -1
  141. package/lib/commonjs/RTCIceCandidateEvent.js +7 -7
  142. package/lib/commonjs/RTCIceCandidateEvent.js.map +1 -1
  143. package/lib/commonjs/RTCKeyProvider.js.map +1 -1
  144. package/lib/commonjs/RTCPIPView.js +2 -2
  145. package/lib/commonjs/RTCPIPView.js.map +1 -1
  146. package/lib/commonjs/RTCPIPView.web.js.map +1 -1
  147. package/lib/commonjs/RTCPeerConnection.js +36 -36
  148. package/lib/commonjs/RTCPeerConnection.js.map +1 -1
  149. package/lib/commonjs/RTCRtcpParameters.js.map +1 -1
  150. package/lib/commonjs/RTCRtpCapabilities.js +2 -2
  151. package/lib/commonjs/RTCRtpCapabilities.js.map +1 -1
  152. package/lib/commonjs/RTCRtpCodecCapability.js.map +1 -1
  153. package/lib/commonjs/RTCRtpCodecParameters.js.map +1 -1
  154. package/lib/commonjs/RTCRtpEncodingParameters.js.map +1 -1
  155. package/lib/commonjs/RTCRtpHeaderExtension.js.map +1 -1
  156. package/lib/commonjs/RTCRtpParameters.js.map +1 -1
  157. package/lib/commonjs/RTCRtpReceiveParameters.js.map +1 -1
  158. package/lib/commonjs/RTCRtpReceiver.js +7 -7
  159. package/lib/commonjs/RTCRtpReceiver.js.map +1 -1
  160. package/lib/commonjs/RTCRtpSendParameters.js +3 -3
  161. package/lib/commonjs/RTCRtpSendParameters.js.map +1 -1
  162. package/lib/commonjs/RTCRtpSender.js +7 -7
  163. package/lib/commonjs/RTCRtpSender.js.map +1 -1
  164. package/lib/commonjs/RTCRtpTransceiver.js.map +1 -1
  165. package/lib/commonjs/RTCSessionDescription.js.map +1 -1
  166. package/lib/commonjs/RTCTrackEvent.js +6 -6
  167. package/lib/commonjs/RTCTrackEvent.js.map +1 -1
  168. package/lib/commonjs/RTCUtil.js +28 -28
  169. package/lib/commonjs/RTCUtil.js.map +1 -1
  170. package/lib/commonjs/RTCView.js +5 -5
  171. package/lib/commonjs/RTCView.js.map +1 -1
  172. package/lib/commonjs/RTCView.web.js.map +1 -1
  173. package/lib/commonjs/ScreenCapturePickerView.js.map +1 -1
  174. package/lib/commonjs/ScreenCapturePickerView.web.js.map +1 -1
  175. package/lib/commonjs/getDisplayMedia.js.map +1 -1
  176. package/lib/commonjs/getUserMedia.js.map +1 -1
  177. package/lib/commonjs/index.js.map +1 -1
  178. package/lib/commonjs/index.web.js.map +1 -1
  179. package/lib/commonjs/webStream.js.map +1 -1
  180. package/lib/module/Constraints.js.map +1 -1
  181. package/lib/module/EventEmitter.js.map +1 -1
  182. package/lib/module/Logger.js.map +1 -1
  183. package/lib/module/MediaDevices.js +17 -17
  184. package/lib/module/MediaDevices.js.map +1 -1
  185. package/lib/module/MediaStream.js +19 -19
  186. package/lib/module/MediaStream.js.map +1 -1
  187. package/lib/module/MediaStreamError.js.map +1 -1
  188. package/lib/module/MediaStreamErrorEvent.js.map +1 -1
  189. package/lib/module/MediaStreamTrack.js +28 -28
  190. package/lib/module/MediaStreamTrack.js.map +1 -1
  191. package/lib/module/MediaStreamTrackEvent.js +6 -6
  192. package/lib/module/MediaStreamTrackEvent.js.map +1 -1
  193. package/lib/module/MessageEvent.js +7 -7
  194. package/lib/module/MessageEvent.js.map +1 -1
  195. package/lib/module/Permissions.js +28 -28
  196. package/lib/module/Permissions.js.map +1 -1
  197. package/lib/module/RTCAudioSession.js +4 -4
  198. package/lib/module/RTCAudioSession.js.map +1 -1
  199. package/lib/module/RTCDataChannel.js +2 -2
  200. package/lib/module/RTCDataChannel.js.map +1 -1
  201. package/lib/module/RTCDataChannelEvent.js +6 -6
  202. package/lib/module/RTCDataChannelEvent.js.map +1 -1
  203. package/lib/module/RTCDataPacketCryptor.js.map +1 -1
  204. package/lib/module/RTCDataPacketCryptorFactory.js.map +1 -1
  205. package/lib/module/RTCErrorEvent.js +3 -3
  206. package/lib/module/RTCErrorEvent.js.map +1 -1
  207. package/lib/module/RTCFrameCryptor.js +8 -8
  208. package/lib/module/RTCFrameCryptor.js.map +1 -1
  209. package/lib/module/RTCFrameCryptorFactory.js.map +1 -1
  210. package/lib/module/RTCIceCandidate.js.map +1 -1
  211. package/lib/module/RTCIceCandidateEvent.js +7 -7
  212. package/lib/module/RTCIceCandidateEvent.js.map +1 -1
  213. package/lib/module/RTCKeyProvider.js.map +1 -1
  214. package/lib/module/RTCPIPView.js +2 -2
  215. package/lib/module/RTCPIPView.js.map +1 -1
  216. package/lib/module/RTCPIPView.web.js.map +1 -1
  217. package/lib/module/RTCPeerConnection.js +36 -36
  218. package/lib/module/RTCPeerConnection.js.map +1 -1
  219. package/lib/module/RTCRtcpParameters.js.map +1 -1
  220. package/lib/module/RTCRtpCapabilities.js +2 -2
  221. package/lib/module/RTCRtpCapabilities.js.map +1 -1
  222. package/lib/module/RTCRtpCodecCapability.js.map +1 -1
  223. package/lib/module/RTCRtpCodecParameters.js.map +1 -1
  224. package/lib/module/RTCRtpEncodingParameters.js.map +1 -1
  225. package/lib/module/RTCRtpHeaderExtension.js.map +1 -1
  226. package/lib/module/RTCRtpParameters.js.map +1 -1
  227. package/lib/module/RTCRtpReceiveParameters.js.map +1 -1
  228. package/lib/module/RTCRtpReceiver.js +7 -7
  229. package/lib/module/RTCRtpReceiver.js.map +1 -1
  230. package/lib/module/RTCRtpSendParameters.js +3 -3
  231. package/lib/module/RTCRtpSendParameters.js.map +1 -1
  232. package/lib/module/RTCRtpSender.js +7 -7
  233. package/lib/module/RTCRtpSender.js.map +1 -1
  234. package/lib/module/RTCRtpTransceiver.js.map +1 -1
  235. package/lib/module/RTCSessionDescription.js.map +1 -1
  236. package/lib/module/RTCTrackEvent.js +6 -6
  237. package/lib/module/RTCTrackEvent.js.map +1 -1
  238. package/lib/module/RTCUtil.js +28 -28
  239. package/lib/module/RTCUtil.js.map +1 -1
  240. package/lib/module/RTCView.js +5 -5
  241. package/lib/module/RTCView.js.map +1 -1
  242. package/lib/module/RTCView.web.js.map +1 -1
  243. package/lib/module/ScreenCapturePickerView.js.map +1 -1
  244. package/lib/module/ScreenCapturePickerView.web.js.map +1 -1
  245. package/lib/module/getDisplayMedia.js.map +1 -1
  246. package/lib/module/getUserMedia.js.map +1 -1
  247. package/lib/module/index.js.map +1 -1
  248. package/lib/module/index.web.js.map +1 -1
  249. package/lib/module/webStream.js.map +1 -1
  250. package/lib/typescript/Constraints.d.ts +19 -19
  251. package/lib/typescript/EventEmitter.d.ts +6 -6
  252. package/lib/typescript/Logger.d.ts +13 -13
  253. package/lib/typescript/MediaDevices.d.ts +30 -30
  254. package/lib/typescript/MediaStream.d.ts +48 -48
  255. package/lib/typescript/MediaStreamError.d.ts +6 -6
  256. package/lib/typescript/MediaStreamErrorEvent.d.ts +6 -6
  257. package/lib/typescript/MediaStreamTrack.d.ts +101 -101
  258. package/lib/typescript/MediaStreamTrackEvent.d.ts +19 -19
  259. package/lib/typescript/MessageEvent.d.ts +20 -20
  260. package/lib/typescript/Permissions.d.ts +55 -55
  261. package/lib/typescript/RTCAudioSession.d.ts +10 -10
  262. package/lib/typescript/RTCDataChannel.d.ts +43 -43
  263. package/lib/typescript/RTCDataChannelEvent.d.ts +19 -19
  264. package/lib/typescript/RTCDataPacketCryptor.d.ts +12 -12
  265. package/lib/typescript/RTCDataPacketCryptorFactory.d.ts +6 -6
  266. package/lib/typescript/RTCErrorEvent.d.ts +12 -12
  267. package/lib/typescript/RTCFrameCryptor.d.ts +47 -47
  268. package/lib/typescript/RTCFrameCryptorFactory.d.ts +21 -21
  269. package/lib/typescript/RTCIceCandidate.d.ts +17 -17
  270. package/lib/typescript/RTCIceCandidateEvent.d.ts +20 -20
  271. package/lib/typescript/RTCKeyProvider.d.ts +21 -21
  272. package/lib/typescript/RTCPIPView.d.ts +15 -15
  273. package/lib/typescript/RTCPIPView.web.d.ts +13 -13
  274. package/lib/typescript/RTCPeerConnection.d.ts +117 -117
  275. package/lib/typescript/RTCRtcpParameters.d.ts +10 -10
  276. package/lib/typescript/RTCRtpCapabilities.d.ts +9 -9
  277. package/lib/typescript/RTCRtpCodecCapability.d.ts +7 -7
  278. package/lib/typescript/RTCRtpCodecParameters.d.ts +16 -16
  279. package/lib/typescript/RTCRtpEncodingParameters.d.ts +23 -23
  280. package/lib/typescript/RTCRtpHeaderExtension.d.ts +12 -12
  281. package/lib/typescript/RTCRtpParameters.d.ts +19 -19
  282. package/lib/typescript/RTCRtpReceiveParameters.d.ts +4 -4
  283. package/lib/typescript/RTCRtpReceiver.d.ts +21 -21
  284. package/lib/typescript/RTCRtpSendParameters.d.ts +20 -20
  285. package/lib/typescript/RTCRtpSender.d.ts +22 -22
  286. package/lib/typescript/RTCRtpTransceiver.d.ts +31 -31
  287. package/lib/typescript/RTCSessionDescription.d.ts +12 -12
  288. package/lib/typescript/RTCTrackEvent.d.ts +29 -29
  289. package/lib/typescript/RTCUtil.d.ts +37 -37
  290. package/lib/typescript/RTCView.d.ts +117 -117
  291. package/lib/typescript/RTCView.web.d.ts +25 -25
  292. package/lib/typescript/ScreenCapturePickerView.d.ts +2 -2
  293. package/lib/typescript/ScreenCapturePickerView.web.d.ts +1 -1
  294. package/lib/typescript/getDisplayMedia.d.ts +2 -2
  295. package/lib/typescript/getUserMedia.d.ts +7 -7
  296. package/lib/typescript/index.d.ts +22 -22
  297. package/lib/typescript/index.web.d.ts +101 -101
  298. package/lib/typescript/webStream.d.ts +3 -3
  299. package/livekit-react-native-webrtc.podspec +29 -29
  300. package/macos/RCTWebRTC.xcodeproj/project.pbxproj +324 -324
  301. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -7
  302. package/macos/RCTWebRTC.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -8
  303. package/metro.config.js +7 -7
  304. package/metro.config.macos.js +14 -14
  305. package/package.json +66 -66
  306. package/react-native.config.js +11 -11
  307. package/src/.eslintrc.cjs +67 -67
  308. package/src/Constraints.ts +20 -20
  309. package/src/EventEmitter.ts +65 -65
  310. package/src/Logger.ts +49 -49
  311. package/src/MediaDevices.ts +53 -53
  312. package/src/MediaStream.ts +161 -161
  313. package/src/MediaStreamError.ts +12 -12
  314. package/src/MediaStreamErrorEvent.ts +11 -11
  315. package/src/MediaStreamTrack.ts +282 -282
  316. package/src/MediaStreamTrackEvent.ts +25 -25
  317. package/src/MessageEvent.ts +26 -26
  318. package/src/Permissions.ts +133 -133
  319. package/src/RTCAudioSession.ts +25 -25
  320. package/src/RTCDataChannel.ts +190 -190
  321. package/src/RTCDataChannelEvent.ts +28 -28
  322. package/src/RTCDataPacketCryptor.ts +90 -90
  323. package/src/RTCDataPacketCryptorFactory.ts +24 -24
  324. package/src/RTCErrorEvent.ts +20 -20
  325. package/src/RTCFrameCryptor.ts +162 -162
  326. package/src/RTCFrameCryptorFactory.ts +101 -101
  327. package/src/RTCIceCandidate.ts +29 -29
  328. package/src/RTCIceCandidateEvent.ts +26 -26
  329. package/src/RTCKeyProvider.ts +117 -117
  330. package/src/RTCPIPView.tsx +46 -46
  331. package/src/RTCPIPView.web.tsx +18 -18
  332. package/src/RTCPeerConnection.ts +832 -832
  333. package/src/RTCRtcpParameters.ts +23 -23
  334. package/src/RTCRtpCapabilities.ts +16 -16
  335. package/src/RTCRtpCodecCapability.ts +12 -12
  336. package/src/RTCRtpCodecParameters.ts +44 -44
  337. package/src/RTCRtpEncodingParameters.ts +90 -90
  338. package/src/RTCRtpHeaderExtension.ts +27 -27
  339. package/src/RTCRtpParameters.ts +37 -37
  340. package/src/RTCRtpReceiveParameters.ts +7 -7
  341. package/src/RTCRtpReceiver.ts +60 -60
  342. package/src/RTCRtpSendParameters.ts +63 -63
  343. package/src/RTCRtpSender.ts +78 -78
  344. package/src/RTCRtpTransceiver.ts +107 -107
  345. package/src/RTCSessionDescription.ts +30 -30
  346. package/src/RTCTrackEvent.ts +42 -42
  347. package/src/RTCUtil.ts +211 -211
  348. package/src/RTCView.ts +122 -122
  349. package/src/RTCView.web.tsx +80 -80
  350. package/src/ScreenCapturePickerView.ts +4 -4
  351. package/src/ScreenCapturePickerView.web.tsx +3 -3
  352. package/src/getDisplayMedia.ts +30 -30
  353. package/src/getUserMedia.ts +111 -111
  354. package/src/index.ts +107 -107
  355. package/src/index.web.ts +191 -191
  356. package/src/webStream.ts +31 -31
  357. package/tools/format.sh +6 -6
  358. package/tools/release.sh +45 -45
  359. package/tsconfig.json +17 -17
  360. package/.claude/settings.local.json +0 -9
@@ -39,13 +39,13 @@ export default class RTCRtpSender {
39
39
  }
40
40
  getStats() {
41
41
  return WebRTCModule.senderGetStats(this._peerConnectionId, this._id).then(data =>
42
- /* On both Android and iOS it is faster to construct a single
43
- JSON string representing the Map of StatsReports and have it
44
- pass through the React Native bridge rather than the Map of
45
- StatsReports. While the implementations do try to be faster in
46
- general, the stress is on being faster to pass through the React
47
- Native bridge which is a bottleneck that tends to be visible in
48
- the UI when there is congestion involving UI-related passing.
42
+ /* On both Android and iOS it is faster to construct a single
43
+ JSON string representing the Map of StatsReports and have it
44
+ pass through the React Native bridge rather than the Map of
45
+ StatsReports. While the implementations do try to be faster in
46
+ general, the stress is on being faster to pass through the React
47
+ Native bridge which is a bottleneck that tends to be visible in
48
+ the UI when there is congestion involving UI-related passing.
49
49
  */
50
50
  new Map(JSON.parse(data)));
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","RTCRtpSendParameters","WebRTCModule","RTCRtpSender","constructor","info","_defineProperty","_peerConnectionId","peerConnectionId","_id","id","_rtpParameters","rtpParameters","track","_track","replaceTrack","senderReplaceTrack","e","getCapabilities","kind","senderGetCapabilities","getParameters","setParameters","parameters","_params","JSON","parse","stringify","newParameters","senderSetParameters","getStats","senderGetStats","then","data","Map"],"sources":["RTCRtpSender.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\r\n\r\nimport MediaStreamTrack from './MediaStreamTrack';\r\nimport RTCRtpCapabilities from './RTCRtpCapabilities';\r\nimport RTCRtpSendParameters, { RTCRtpSendParametersInit } from './RTCRtpSendParameters';\r\n\r\nconst { WebRTCModule } = NativeModules;\r\n\r\n\r\nexport default class RTCRtpSender {\r\n _id: string;\r\n _track: MediaStreamTrack | null = null;\r\n _peerConnectionId: number;\r\n _rtpParameters: RTCRtpSendParameters;\r\n\r\n constructor(info: {\r\n peerConnectionId: number,\r\n id: string,\r\n track?: MediaStreamTrack,\r\n rtpParameters: RTCRtpSendParametersInit\r\n }) {\r\n this._peerConnectionId = info.peerConnectionId;\r\n this._id = info.id;\r\n this._rtpParameters = new RTCRtpSendParameters(info.rtpParameters);\r\n\r\n if (info.track) {\r\n this._track = info.track;\r\n }\r\n }\r\n\r\n async replaceTrack(track: MediaStreamTrack | null): Promise<void> {\r\n try {\r\n await WebRTCModule.senderReplaceTrack(this._peerConnectionId, this._id, track ? track.id : null);\r\n } catch (e) {\r\n return;\r\n }\r\n\r\n this._track = track;\r\n }\r\n\r\n static getCapabilities(kind: 'audio' | 'video'): RTCRtpCapabilities {\r\n return WebRTCModule.senderGetCapabilities(kind);\r\n }\r\n\r\n getParameters(): RTCRtpSendParameters {\r\n return this._rtpParameters;\r\n }\r\n\r\n async setParameters(parameters: RTCRtpSendParameters): Promise<void> {\r\n // This allows us to get rid of private \"underscore properties\"\r\n const _params = JSON.parse(JSON.stringify(parameters));\r\n const newParameters = await WebRTCModule.senderSetParameters(this._peerConnectionId, this._id, _params);\r\n\r\n this._rtpParameters = new RTCRtpSendParameters(newParameters);\r\n }\r\n\r\n getStats() {\r\n return WebRTCModule.senderGetStats(this._peerConnectionId, this._id).then(data =>\r\n /* On both Android and iOS it is faster to construct a single\r\n JSON string representing the Map of StatsReports and have it\r\n pass through the React Native bridge rather than the Map of\r\n StatsReports. While the implementations do try to be faster in\r\n general, the stress is on being faster to pass through the React\r\n Native bridge which is a bottleneck that tends to be visible in\r\n the UI when there is congestion involving UI-related passing.\r\n */\r\n new Map(JSON.parse(data))\r\n );\r\n }\r\n\r\n get track() {\r\n return this._track;\r\n }\r\n\r\n get id() {\r\n return this._id;\r\n }\r\n}\r\n"],"mappings":";AAAA,SAASA,aAAa,QAAQ,cAAc;AAI5C,OAAOC,oBAAoB,MAAoC,wBAAwB;AAEvF,MAAM;EAAEC;AAAa,CAAC,GAAGF,aAAa;AAGtC,eAAe,MAAMG,YAAY,CAAC;EAM9BC,WAAWA,CAACC,IAKX,EAAE;IAAAC,eAAA;IAAAA,eAAA,iBAT+B,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAUlC,IAAI,CAACC,iBAAiB,GAAGF,IAAI,CAACG,gBAAgB;IAC9C,IAAI,CAACC,GAAG,GAAGJ,IAAI,CAACK,EAAE;IAClB,IAAI,CAACC,cAAc,GAAG,IAAIV,oBAAoB,CAACI,IAAI,CAACO,aAAa,CAAC;IAElE,IAAIP,IAAI,CAACQ,KAAK,EAAE;MACZ,IAAI,CAACC,MAAM,GAAGT,IAAI,CAACQ,KAAK;IAC5B;EACJ;EAEA,MAAME,YAAYA,CAACF,KAA8B,EAAiB;IAC9D,IAAI;MACA,MAAMX,YAAY,CAACc,kBAAkB,CAAC,IAAI,CAACT,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEI,KAAK,GAAGA,KAAK,CAACH,EAAE,GAAG,IAAI,CAAC;IACpG,CAAC,CAAC,OAAOO,CAAC,EAAE;MACR;IACJ;IAEA,IAAI,CAACH,MAAM,GAAGD,KAAK;EACvB;EAEA,OAAOK,eAAeA,CAACC,IAAuB,EAAsB;IAChE,OAAOjB,YAAY,CAACkB,qBAAqB,CAACD,IAAI,CAAC;EACnD;EAEAE,aAAaA,CAAA,EAAyB;IAClC,OAAO,IAAI,CAACV,cAAc;EAC9B;EAEA,MAAMW,aAAaA,CAACC,UAAgC,EAAiB;IACjE;IACA,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,UAAU,CAAC,CAAC;IACtD,MAAMK,aAAa,GAAG,MAAM1B,YAAY,CAAC2B,mBAAmB,CAAC,IAAI,CAACtB,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEe,OAAO,CAAC;IAEvG,IAAI,CAACb,cAAc,GAAG,IAAIV,oBAAoB,CAAC2B,aAAa,CAAC;EACjE;EAEAE,QAAQA,CAAA,EAAG;IACP,OAAO5B,YAAY,CAAC6B,cAAc,CAAC,IAAI,CAACxB,iBAAiB,EAAE,IAAI,CAACE,GAAG,CAAC,CAACuB,IAAI,CAACC,IAAI;IAC1E;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;IACY,IAAIC,GAAG,CAACT,IAAI,CAACC,KAAK,CAACO,IAAI,CAAC,CAC5B,CAAC;EACL;EAEA,IAAIpB,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;EACtB;EAEA,IAAIJ,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACD,GAAG;EACnB;AACJ"}
1
+ {"version":3,"names":["NativeModules","RTCRtpSendParameters","WebRTCModule","RTCRtpSender","constructor","info","_defineProperty","_peerConnectionId","peerConnectionId","_id","id","_rtpParameters","rtpParameters","track","_track","replaceTrack","senderReplaceTrack","e","getCapabilities","kind","senderGetCapabilities","getParameters","setParameters","parameters","_params","JSON","parse","stringify","newParameters","senderSetParameters","getStats","senderGetStats","then","data","Map"],"sources":["RTCRtpSender.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\n\nimport MediaStreamTrack from './MediaStreamTrack';\nimport RTCRtpCapabilities from './RTCRtpCapabilities';\nimport RTCRtpSendParameters, { RTCRtpSendParametersInit } from './RTCRtpSendParameters';\n\nconst { WebRTCModule } = NativeModules;\n\n\nexport default class RTCRtpSender {\n _id: string;\n _track: MediaStreamTrack | null = null;\n _peerConnectionId: number;\n _rtpParameters: RTCRtpSendParameters;\n\n constructor(info: {\n peerConnectionId: number,\n id: string,\n track?: MediaStreamTrack,\n rtpParameters: RTCRtpSendParametersInit\n }) {\n this._peerConnectionId = info.peerConnectionId;\n this._id = info.id;\n this._rtpParameters = new RTCRtpSendParameters(info.rtpParameters);\n\n if (info.track) {\n this._track = info.track;\n }\n }\n\n async replaceTrack(track: MediaStreamTrack | null): Promise<void> {\n try {\n await WebRTCModule.senderReplaceTrack(this._peerConnectionId, this._id, track ? track.id : null);\n } catch (e) {\n return;\n }\n\n this._track = track;\n }\n\n static getCapabilities(kind: 'audio' | 'video'): RTCRtpCapabilities {\n return WebRTCModule.senderGetCapabilities(kind);\n }\n\n getParameters(): RTCRtpSendParameters {\n return this._rtpParameters;\n }\n\n async setParameters(parameters: RTCRtpSendParameters): Promise<void> {\n // This allows us to get rid of private \"underscore properties\"\n const _params = JSON.parse(JSON.stringify(parameters));\n const newParameters = await WebRTCModule.senderSetParameters(this._peerConnectionId, this._id, _params);\n\n this._rtpParameters = new RTCRtpSendParameters(newParameters);\n }\n\n getStats() {\n return WebRTCModule.senderGetStats(this._peerConnectionId, this._id).then(data =>\n /* On both Android and iOS it is faster to construct a single\n JSON string representing the Map of StatsReports and have it\n pass through the React Native bridge rather than the Map of\n StatsReports. While the implementations do try to be faster in\n general, the stress is on being faster to pass through the React\n Native bridge which is a bottleneck that tends to be visible in\n the UI when there is congestion involving UI-related passing.\n */\n new Map(JSON.parse(data))\n );\n }\n\n get track() {\n return this._track;\n }\n\n get id() {\n return this._id;\n }\n}\n"],"mappings":";AAAA,SAASA,aAAa,QAAQ,cAAc;AAI5C,OAAOC,oBAAoB,MAAoC,wBAAwB;AAEvF,MAAM;EAAEC;AAAa,CAAC,GAAGF,aAAa;AAGtC,eAAe,MAAMG,YAAY,CAAC;EAM9BC,WAAWA,CAACC,IAKX,EAAE;IAAAC,eAAA;IAAAA,eAAA,iBAT+B,IAAI;IAAAA,eAAA;IAAAA,eAAA;IAUlC,IAAI,CAACC,iBAAiB,GAAGF,IAAI,CAACG,gBAAgB;IAC9C,IAAI,CAACC,GAAG,GAAGJ,IAAI,CAACK,EAAE;IAClB,IAAI,CAACC,cAAc,GAAG,IAAIV,oBAAoB,CAACI,IAAI,CAACO,aAAa,CAAC;IAElE,IAAIP,IAAI,CAACQ,KAAK,EAAE;MACZ,IAAI,CAACC,MAAM,GAAGT,IAAI,CAACQ,KAAK;IAC5B;EACJ;EAEA,MAAME,YAAYA,CAACF,KAA8B,EAAiB;IAC9D,IAAI;MACA,MAAMX,YAAY,CAACc,kBAAkB,CAAC,IAAI,CAACT,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEI,KAAK,GAAGA,KAAK,CAACH,EAAE,GAAG,IAAI,CAAC;IACpG,CAAC,CAAC,OAAOO,CAAC,EAAE;MACR;IACJ;IAEA,IAAI,CAACH,MAAM,GAAGD,KAAK;EACvB;EAEA,OAAOK,eAAeA,CAACC,IAAuB,EAAsB;IAChE,OAAOjB,YAAY,CAACkB,qBAAqB,CAACD,IAAI,CAAC;EACnD;EAEAE,aAAaA,CAAA,EAAyB;IAClC,OAAO,IAAI,CAACV,cAAc;EAC9B;EAEA,MAAMW,aAAaA,CAACC,UAAgC,EAAiB;IACjE;IACA,MAAMC,OAAO,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACJ,UAAU,CAAC,CAAC;IACtD,MAAMK,aAAa,GAAG,MAAM1B,YAAY,CAAC2B,mBAAmB,CAAC,IAAI,CAACtB,iBAAiB,EAAE,IAAI,CAACE,GAAG,EAAEe,OAAO,CAAC;IAEvG,IAAI,CAACb,cAAc,GAAG,IAAIV,oBAAoB,CAAC2B,aAAa,CAAC;EACjE;EAEAE,QAAQA,CAAA,EAAG;IACP,OAAO5B,YAAY,CAAC6B,cAAc,CAAC,IAAI,CAACxB,iBAAiB,EAAE,IAAI,CAACE,GAAG,CAAC,CAACuB,IAAI,CAACC,IAAI;IAC1E;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;IACY,IAAIC,GAAG,CAACT,IAAI,CAACC,KAAK,CAACO,IAAI,CAAC,CAC5B,CAAC;EACL;EAEA,IAAIpB,KAAKA,CAAA,EAAG;IACR,OAAO,IAAI,CAACC,MAAM;EACtB;EAEA,IAAIJ,EAAEA,CAAA,EAAG;IACL,OAAO,IAAI,CAACD,GAAG;EACnB;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","WebRTCModule","RTCRtpTransceiver","constructor","args","_args$mid","_args$currentDirectio","_defineProperty","_peerConnectionId","peerConnectionId","_mid","mid","_direction","direction","_currentDirection","currentDirection","_stopped","Boolean","isStopped","_sender","sender","_receiver","receiver","stopped","val","includes","TypeError","Error","oldDirection","transceiverSetDirection","id","catch","stop","transceiverStop","then","_setStopped","setCodecPreferences","codecs","transceiverSetCodecPreferences"],"sources":["RTCRtpTransceiver.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\r\n\r\nimport RTCRtpCodecCapability from './RTCRtpCodecCapability';\r\nimport RTCRtpReceiver from './RTCRtpReceiver';\r\nimport RTCRtpSender from './RTCRtpSender';\r\n\r\nconst { WebRTCModule } = NativeModules;\r\n\r\nexport default class RTCRtpTransceiver {\r\n _peerConnectionId: number;\r\n _sender: RTCRtpSender;\r\n _receiver: RTCRtpReceiver;\r\n\r\n _mid: string | null = null;\r\n _direction: string;\r\n _currentDirection: string;\r\n _stopped: boolean;\r\n\r\n constructor(args: {\r\n peerConnectionId: number,\r\n isStopped: boolean,\r\n direction: string,\r\n currentDirection: string,\r\n mid?: string,\r\n sender: RTCRtpSender,\r\n receiver: RTCRtpReceiver,\r\n }) {\r\n this._peerConnectionId = args.peerConnectionId;\r\n this._mid = args.mid ?? null;\r\n this._direction = args.direction;\r\n this._currentDirection = args.currentDirection ?? null;\r\n this._stopped = Boolean(args.isStopped);\r\n this._sender = args.sender;\r\n this._receiver = args.receiver;\r\n }\r\n\r\n get mid() {\r\n return this._mid;\r\n }\r\n\r\n get stopped() {\r\n return this._stopped;\r\n }\r\n\r\n get direction() {\r\n return this._direction;\r\n }\r\n\r\n set direction(val) {\r\n if (![ 'sendonly', 'recvonly', 'sendrecv', 'inactive' ].includes(val)) {\r\n throw new TypeError('Invalid direction provided');\r\n }\r\n\r\n if (this._stopped) {\r\n throw new Error('Transceiver Stopped');\r\n }\r\n\r\n if (this._direction === val) {\r\n return;\r\n }\r\n\r\n const oldDirection = this._direction;\r\n\r\n WebRTCModule.transceiverSetDirection(this._peerConnectionId, this.sender.id, val)\r\n .catch(() => {\r\n this._direction = oldDirection;\r\n });\r\n\r\n this._direction = val;\r\n }\r\n\r\n get currentDirection() {\r\n return this._currentDirection;\r\n }\r\n\r\n get sender() {\r\n return this._sender;\r\n }\r\n\r\n get receiver() {\r\n return this._receiver;\r\n }\r\n\r\n stop() {\r\n if (this._stopped) {\r\n return;\r\n }\r\n\r\n WebRTCModule.transceiverStop(this._peerConnectionId, this.sender.id)\r\n .then(() => this._setStopped());\r\n }\r\n\r\n setCodecPreferences(codecs: RTCRtpCodecCapability[]) {\r\n WebRTCModule.transceiverSetCodecPreferences(\r\n this._peerConnectionId,\r\n this.sender.id,\r\n codecs\r\n );\r\n }\r\n\r\n _setStopped() {\r\n this._stopped = true;\r\n this._direction = 'stopped';\r\n this._currentDirection = 'stopped';\r\n this._mid = null;\r\n }\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","WebRTCModule","RTCRtpTransceiver","constructor","args","_args$mid","_args$currentDirectio","_defineProperty","_peerConnectionId","peerConnectionId","_mid","mid","_direction","direction","_currentDirection","currentDirection","_stopped","Boolean","isStopped","_sender","sender","_receiver","receiver","stopped","val","includes","TypeError","Error","oldDirection","transceiverSetDirection","id","catch","stop","transceiverStop","then","_setStopped","setCodecPreferences","codecs","transceiverSetCodecPreferences"],"sources":["RTCRtpTransceiver.ts"],"sourcesContent":["import { NativeModules } from 'react-native';\n\nimport RTCRtpCodecCapability from './RTCRtpCodecCapability';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpSender from './RTCRtpSender';\n\nconst { WebRTCModule } = NativeModules;\n\nexport default class RTCRtpTransceiver {\n _peerConnectionId: number;\n _sender: RTCRtpSender;\n _receiver: RTCRtpReceiver;\n\n _mid: string | null = null;\n _direction: string;\n _currentDirection: string;\n _stopped: boolean;\n\n constructor(args: {\n peerConnectionId: number,\n isStopped: boolean,\n direction: string,\n currentDirection: string,\n mid?: string,\n sender: RTCRtpSender,\n receiver: RTCRtpReceiver,\n }) {\n this._peerConnectionId = args.peerConnectionId;\n this._mid = args.mid ?? null;\n this._direction = args.direction;\n this._currentDirection = args.currentDirection ?? null;\n this._stopped = Boolean(args.isStopped);\n this._sender = args.sender;\n this._receiver = args.receiver;\n }\n\n get mid() {\n return this._mid;\n }\n\n get stopped() {\n return this._stopped;\n }\n\n get direction() {\n return this._direction;\n }\n\n set direction(val) {\n if (![ 'sendonly', 'recvonly', 'sendrecv', 'inactive' ].includes(val)) {\n throw new TypeError('Invalid direction provided');\n }\n\n if (this._stopped) {\n throw new Error('Transceiver Stopped');\n }\n\n if (this._direction === val) {\n return;\n }\n\n const oldDirection = this._direction;\n\n WebRTCModule.transceiverSetDirection(this._peerConnectionId, this.sender.id, val)\n .catch(() => {\n this._direction = oldDirection;\n });\n\n this._direction = val;\n }\n\n get currentDirection() {\n return this._currentDirection;\n }\n\n get sender() {\n return this._sender;\n }\n\n get receiver() {\n return this._receiver;\n }\n\n stop() {\n if (this._stopped) {\n return;\n }\n\n WebRTCModule.transceiverStop(this._peerConnectionId, this.sender.id)\n .then(() => this._setStopped());\n }\n\n setCodecPreferences(codecs: RTCRtpCodecCapability[]) {\n WebRTCModule.transceiverSetCodecPreferences(\n this._peerConnectionId,\n this.sender.id,\n codecs\n );\n }\n\n _setStopped() {\n this._stopped = true;\n this._direction = 'stopped';\n this._currentDirection = 'stopped';\n this._mid = null;\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCSessionDescription","constructor","info","arguments","length","undefined","type","sdp","_defineProperty","_sdp","_type","toJSON"],"sources":["RTCSessionDescription.ts"],"sourcesContent":["\r\nexport interface RTCSessionDescriptionInit {\r\n sdp: string;\r\n type: string | null;\r\n}\r\n\r\nexport default class RTCSessionDescription {\r\n _sdp: string;\r\n _type: string | null;\r\n\r\n constructor(info: RTCSessionDescriptionInit = { type: null, sdp: '' }) {\r\n this._sdp = info.sdp;\r\n this._type = info.type;\r\n }\r\n\r\n get sdp(): string {\r\n return this._sdp;\r\n }\r\n\r\n get type(): string | null {\r\n return this._type;\r\n }\r\n\r\n toJSON(): RTCSessionDescriptionInit {\r\n return {\r\n sdp: this._sdp,\r\n type: this._type\r\n };\r\n }\r\n}\r\n"],"mappings":";AAMA,eAAe,MAAMA,qBAAqB,CAAC;EAIvCC,WAAWA,CAAA,EAA4D;IAAA,IAA3DC,IAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;MAAEG,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE;IAAG,CAAC;IAAAC,eAAA;IAAAA,eAAA;IACjE,IAAI,CAACC,IAAI,GAAGP,IAAI,CAACK,GAAG;IACpB,IAAI,CAACG,KAAK,GAAGR,IAAI,CAACI,IAAI;EAC1B;EAEA,IAAIC,GAAGA,CAAA,EAAW;IACd,OAAO,IAAI,CAACE,IAAI;EACpB;EAEA,IAAIH,IAAIA,CAAA,EAAkB;IACtB,OAAO,IAAI,CAACI,KAAK;EACrB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,OAAO;MACHJ,GAAG,EAAE,IAAI,CAACE,IAAI;MACdH,IAAI,EAAE,IAAI,CAACI;IACf,CAAC;EACL;AACJ"}
1
+ {"version":3,"names":["RTCSessionDescription","constructor","info","arguments","length","undefined","type","sdp","_defineProperty","_sdp","_type","toJSON"],"sources":["RTCSessionDescription.ts"],"sourcesContent":["\nexport interface RTCSessionDescriptionInit {\n sdp: string;\n type: string | null;\n}\n\nexport default class RTCSessionDescription {\n _sdp: string;\n _type: string | null;\n\n constructor(info: RTCSessionDescriptionInit = { type: null, sdp: '' }) {\n this._sdp = info.sdp;\n this._type = info.type;\n }\n\n get sdp(): string {\n return this._sdp;\n }\n\n get type(): string | null {\n return this._type;\n }\n\n toJSON(): RTCSessionDescriptionInit {\n return {\n sdp: this._sdp,\n type: this._type\n };\n }\n}\n"],"mappings":";AAMA,eAAe,MAAMA,qBAAqB,CAAC;EAIvCC,WAAWA,CAAA,EAA4D;IAAA,IAA3DC,IAA+B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG;MAAEG,IAAI,EAAE,IAAI;MAAEC,GAAG,EAAE;IAAG,CAAC;IAAAC,eAAA;IAAAA,eAAA;IACjE,IAAI,CAACC,IAAI,GAAGP,IAAI,CAACK,GAAG;IACpB,IAAI,CAACG,KAAK,GAAGR,IAAI,CAACI,IAAI;EAC1B;EAEA,IAAIC,GAAGA,CAAA,EAAW;IACd,OAAO,IAAI,CAACE,IAAI;EACpB;EAEA,IAAIH,IAAIA,CAAA,EAAkB;IACtB,OAAO,IAAI,CAACI,KAAK;EACrB;EAEAC,MAAMA,CAAA,EAA8B;IAChC,OAAO;MACHJ,GAAG,EAAE,IAAI,CAACE,IAAI;MACdH,IAAI,EAAE,IAAI,CAACI;IACf,CAAC;EACL;AACJ"}
@@ -1,11 +1,11 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
2
  import { Event } from 'event-target-shim/index';
3
- /**
4
- * @eventClass
5
- * This event is fired whenever the Track is changed in PeerConnection.
6
- * @param {TRACK_EVENTS} type - The type of event.
7
- * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.
8
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.
3
+ /**
4
+ * @eventClass
5
+ * This event is fired whenever the Track is changed in PeerConnection.
6
+ * @param {TRACK_EVENTS} type - The type of event.
7
+ * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.
8
+ * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.
9
9
  */
10
10
  export default class RTCTrackEvent extends Event {
11
11
  /** @eventProperty */
@@ -1 +1 @@
1
- {"version":3,"names":["Event","RTCTrackEvent","constructor","type","eventInitDict","_defineProperty","streams","transceiver","receiver","track"],"sources":["RTCTrackEvent.ts"],"sourcesContent":["import { Event } from 'event-target-shim/index';\r\n\r\nimport MediaStream from './MediaStream';\r\nimport type MediaStreamTrack from './MediaStreamTrack';\r\nimport RTCRtpReceiver from './RTCRtpReceiver';\r\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\r\n\r\ntype TRACK_EVENTS = 'track'\r\n\r\ninterface IRTCTrackEventInitDict extends Event.EventInit {\r\n streams: MediaStream[]\r\n transceiver: RTCRtpTransceiver\r\n}\r\n\r\n/**\r\n * @eventClass\r\n * This event is fired whenever the Track is changed in PeerConnection.\r\n * @param {TRACK_EVENTS} type - The type of event.\r\n * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.\r\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.\r\n */\r\nexport default class RTCTrackEvent<TEventType extends TRACK_EVENTS> extends Event<TEventType> {\r\n /** @eventProperty */\r\n readonly streams: MediaStream[] = [];\r\n\r\n /** @eventProperty */\r\n readonly transceiver: RTCRtpTransceiver;\r\n\r\n /** @eventProperty */\r\n readonly receiver: RTCRtpReceiver | null;\r\n\r\n /** @eventProperty */\r\n readonly track: MediaStreamTrack | null;\r\n\r\n constructor(type: TEventType, eventInitDict: IRTCTrackEventInitDict) {\r\n super(type, eventInitDict);\r\n this.streams = eventInitDict.streams;\r\n this.transceiver = eventInitDict.transceiver;\r\n this.receiver = eventInitDict.transceiver.receiver;\r\n this.track = eventInitDict.transceiver.receiver ? eventInitDict.transceiver.receiver.track : null;\r\n }\r\n}\r\n"],"mappings":";AAAA,SAASA,KAAK,QAAQ,yBAAyB;AAc/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,aAAa,SAA0CD,KAAK,CAAa;EAC1F;;EAGA;;EAGA;;EAGA;;EAGAE,WAAWA,CAACC,IAAgB,EAAEC,aAAqC,EAAE;IACjE,KAAK,CAACD,IAAI,EAAEC,aAAa,CAAC;IAACC,eAAA,kBAZG,EAAE;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAahC,IAAI,CAACC,OAAO,GAAGF,aAAa,CAACE,OAAO;IACpC,IAAI,CAACC,WAAW,GAAGH,aAAa,CAACG,WAAW;IAC5C,IAAI,CAACC,QAAQ,GAAGJ,aAAa,CAACG,WAAW,CAACC,QAAQ;IAClD,IAAI,CAACC,KAAK,GAAGL,aAAa,CAACG,WAAW,CAACC,QAAQ,GAAGJ,aAAa,CAACG,WAAW,CAACC,QAAQ,CAACC,KAAK,GAAG,IAAI;EACrG;AACJ"}
1
+ {"version":3,"names":["Event","RTCTrackEvent","constructor","type","eventInitDict","_defineProperty","streams","transceiver","receiver","track"],"sources":["RTCTrackEvent.ts"],"sourcesContent":["import { Event } from 'event-target-shim/index';\n\nimport MediaStream from './MediaStream';\nimport type MediaStreamTrack from './MediaStreamTrack';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\n\ntype TRACK_EVENTS = 'track'\n\ninterface IRTCTrackEventInitDict extends Event.EventInit {\n streams: MediaStream[]\n transceiver: RTCRtpTransceiver\n}\n\n/**\n * @eventClass\n * This event is fired whenever the Track is changed in PeerConnection.\n * @param {TRACK_EVENTS} type - The type of event.\n * @param {IRTCTrackEventInitDict} eventInitDict - The event init properties.\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/track_event MDN} for details.\n */\nexport default class RTCTrackEvent<TEventType extends TRACK_EVENTS> extends Event<TEventType> {\n /** @eventProperty */\n readonly streams: MediaStream[] = [];\n\n /** @eventProperty */\n readonly transceiver: RTCRtpTransceiver;\n\n /** @eventProperty */\n readonly receiver: RTCRtpReceiver | null;\n\n /** @eventProperty */\n readonly track: MediaStreamTrack | null;\n\n constructor(type: TEventType, eventInitDict: IRTCTrackEventInitDict) {\n super(type, eventInitDict);\n this.streams = eventInitDict.streams;\n this.transceiver = eventInitDict.transceiver;\n this.receiver = eventInitDict.transceiver.receiver;\n this.track = eventInitDict.transceiver.receiver ? eventInitDict.transceiver.receiver.track : null;\n }\n}\n"],"mappings":";AAAA,SAASA,KAAK,QAAQ,yBAAyB;AAc/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAMC,aAAa,SAA0CD,KAAK,CAAa;EAC1F;;EAGA;;EAGA;;EAGA;;EAGAE,WAAWA,CAACC,IAAgB,EAAEC,aAAqC,EAAE;IACjE,KAAK,CAACD,IAAI,EAAEC,aAAa,CAAC;IAACC,eAAA,kBAZG,EAAE;IAAAA,eAAA;IAAAA,eAAA;IAAAA,eAAA;IAahC,IAAI,CAACC,OAAO,GAAGF,aAAa,CAACE,OAAO;IACpC,IAAI,CAACC,WAAW,GAAGH,aAAa,CAACG,WAAW;IAC5C,IAAI,CAACC,QAAQ,GAAGJ,aAAa,CAACG,WAAW,CAACC,QAAQ;IAClD,IAAI,CAACC,KAAK,GAAGL,aAAa,CAACG,WAAW,CAACC,QAAQ,GAAGJ,aAAa,CAACG,WAAW,CAACC,QAAQ,CAACC,KAAK,GAAG,IAAI;EACrG;AACJ"}
@@ -87,52 +87,52 @@ function normalizeMediaConstraints(constraints, mediaType) {
87
87
  }
88
88
  }
89
89
 
90
- /**
91
- * Utility for creating short random strings from float point values.
92
- * We take 4 characters from the end after converting to a string.
93
- * Conversion to string gives us some letters as we don't want just numbers.
94
- * Should be suitable to pass for enough randomness.
95
- *
96
- * @return {String} 4 random characters
90
+ /**
91
+ * Utility for creating short random strings from float point values.
92
+ * We take 4 characters from the end after converting to a string.
93
+ * Conversion to string gives us some letters as we don't want just numbers.
94
+ * Should be suitable to pass for enough randomness.
95
+ *
96
+ * @return {String} 4 random characters
97
97
  */
98
98
  function chr4() {
99
99
  return Math.random().toString(16).slice(-4);
100
100
  }
101
101
 
102
- /**
103
- * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
104
- *
105
- * @return {String} uuidv4
102
+ /**
103
+ * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}
104
+ *
105
+ * @return {String} uuidv4
106
106
  */
107
107
  export function uniqueID() {
108
108
  return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;
109
109
  }
110
110
 
111
- /**
112
- * Utility for deep cloning an object. Object.assign() only does a shallow copy.
113
- *
114
- * @param {Object} obj - object to be cloned
115
- * @return {Object} cloned obj
111
+ /**
112
+ * Utility for deep cloning an object. Object.assign() only does a shallow copy.
113
+ *
114
+ * @param {Object} obj - object to be cloned
115
+ * @return {Object} cloned obj
116
116
  */
117
117
  export function deepClone(obj) {
118
118
  return JSON.parse(JSON.stringify(obj));
119
119
  }
120
120
 
121
- /**
122
- * Checks whether an SDP type is valid or not.
123
- *
124
- * @param type SDP type to check.
125
- * @returns Whether the SDP type is valid or not.
121
+ /**
122
+ * Checks whether an SDP type is valid or not.
123
+ *
124
+ * @param type SDP type to check.
125
+ * @returns Whether the SDP type is valid or not.
126
126
  */
127
127
  export function isSdpTypeValid(type) {
128
128
  return SDP_TYPES.includes(type);
129
129
  }
130
130
 
131
- /**
132
- * Normalize options passed to createOffer().
133
- *
134
- * @param options - user supplied options
135
- * @return Normalized options
131
+ /**
132
+ * Normalize options passed to createOffer().
133
+ *
134
+ * @param options - user supplied options
135
+ * @return Normalized options
136
136
  */
137
137
  export function normalizeOfferOptions(options) {
138
138
  const newOptions = {};
@@ -151,8 +151,8 @@ export function normalizeOfferOptions(options) {
151
151
  return newOptions;
152
152
  }
153
153
 
154
- /**
155
- * Normalize the given constraints in something we can work with.
154
+ /**
155
+ * Normalize the given constraints in something we can work with.
156
156
  */
157
157
  export function normalizeConstraints(constraints) {
158
158
  const c = deepClone(constraints);
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_AUDIO_CONSTRAINTS","DEFAULT_VIDEO_CONSTRAINTS","facingMode","frameRate","height","width","FACING_MODES","ASPECT_RATIO","STANDARD_OFFER_OPTIONS","icerestart","offertoreceiveaudio","offertoreceivevideo","voiceactivitydetection","SDP_TYPES","getDefaultMediaConstraints","mediaType","TypeError","extractString","constraints","prop","value","type","v","extractNumber","Number","parseInt","normalizeMediaConstraints","c","deviceId","includes","Math","round","chr4","random","toString","slice","uniqueID","deepClone","obj","JSON","parse","stringify","isSdpTypeValid","normalizeOfferOptions","options","newOptions","key","Object","entries","newKey","toLowerCase","String","Boolean","normalizeConstraints","mediaTypeConstraints","typeofMediaTypeConstraints"],"sources":["RTCUtil.ts"],"sourcesContent":["\r\nconst DEFAULT_AUDIO_CONSTRAINTS = {};\r\n\r\nconst DEFAULT_VIDEO_CONSTRAINTS = {\r\n facingMode: 'user',\r\n frameRate: 30,\r\n height: 720,\r\n width: 1280\r\n};\r\n\r\nconst FACING_MODES = [ 'user', 'environment' ];\r\n\r\nconst ASPECT_RATIO = 16 / 9;\r\n\r\nexport type RTCOfferOptions = {\r\n iceRestart?:boolean;\r\n offerToReceiveAudio?: boolean;\r\n offerToReceiveVideo?: boolean;\r\n voiceActivityDetection?:boolean\r\n};\r\n\r\nconst STANDARD_OFFER_OPTIONS = {\r\n icerestart: 'IceRestart',\r\n offertoreceiveaudio: 'OfferToReceiveAudio',\r\n offertoreceivevideo: 'OfferToReceiveVideo',\r\n voiceactivitydetection: 'VoiceActivityDetection'\r\n};\r\n\r\nconst SDP_TYPES = [\r\n 'offer',\r\n 'pranswer',\r\n 'answer',\r\n 'rollback'\r\n];\r\n\r\nfunction getDefaultMediaConstraints(mediaType) {\r\n switch (mediaType) {\r\n case 'audio':\r\n return DEFAULT_AUDIO_CONSTRAINTS;\r\n case 'video':\r\n return DEFAULT_VIDEO_CONSTRAINTS;\r\n default:\r\n throw new TypeError(`Invalid media type: ${mediaType}`);\r\n }\r\n}\r\n\r\nfunction extractString(constraints, prop) {\r\n const value = constraints[prop];\r\n const type = typeof value;\r\n\r\n if (type === 'object') {\r\n for (const v of [ 'exact', 'ideal' ]) {\r\n if (value[v]) {\r\n return value[v];\r\n }\r\n }\r\n } else if (type === 'string') {\r\n return value;\r\n }\r\n}\r\n\r\nfunction extractNumber(constraints, prop) {\r\n const value = constraints[prop];\r\n const type = typeof value;\r\n\r\n if (type === 'number') {\r\n return Number.parseInt(value);\r\n } else if (type === 'object') {\r\n for (const v of [ 'exact', 'ideal', 'max', 'min' ]) {\r\n if (value[v]) {\r\n return Number.parseInt(value[v]);\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction normalizeMediaConstraints(constraints, mediaType) {\r\n switch (mediaType) {\r\n case 'audio':\r\n return constraints;\r\n\r\n case 'video': {\r\n const c = {\r\n deviceId: extractString(constraints, 'deviceId'),\r\n facingMode: extractString(constraints, 'facingMode'),\r\n frameRate: extractNumber(constraints, 'frameRate'),\r\n height: extractNumber(constraints, 'height'),\r\n width: extractNumber(constraints, 'width')\r\n };\r\n\r\n if (!c.deviceId) {\r\n delete c.deviceId;\r\n }\r\n\r\n if (!FACING_MODES.includes(c.facingMode)) {\r\n c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;\r\n }\r\n\r\n if (!c.frameRate) {\r\n c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;\r\n }\r\n\r\n if (!c.height && !c.width) {\r\n c.height = DEFAULT_VIDEO_CONSTRAINTS.height;\r\n c.width = DEFAULT_VIDEO_CONSTRAINTS.width;\r\n } else if (!c.height && c.width) {\r\n c.height = Math.round(c.width / ASPECT_RATIO);\r\n } else if (!c.width && c.height) {\r\n c.width = Math.round(c.height * ASPECT_RATIO);\r\n }\r\n\r\n return c;\r\n }\r\n\r\n default:\r\n throw new TypeError(`Invalid media type: ${mediaType}`);\r\n }\r\n}\r\n\r\n/**\r\n * Utility for creating short random strings from float point values.\r\n * We take 4 characters from the end after converting to a string.\r\n * Conversion to string gives us some letters as we don't want just numbers.\r\n * Should be suitable to pass for enough randomness.\r\n *\r\n * @return {String} 4 random characters\r\n */\r\nfunction chr4() {\r\n return Math.random().toString(16).slice(-4);\r\n}\r\n\r\n/**\r\n * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\r\n *\r\n * @return {String} uuidv4\r\n */\r\nexport function uniqueID(): string {\r\n return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\r\n}\r\n\r\n/**\r\n * Utility for deep cloning an object. Object.assign() only does a shallow copy.\r\n *\r\n * @param {Object} obj - object to be cloned\r\n * @return {Object} cloned obj\r\n */\r\nexport function deepClone<T>(obj: T): T {\r\n return JSON.parse(JSON.stringify(obj));\r\n}\r\n\r\n/**\r\n * Checks whether an SDP type is valid or not.\r\n *\r\n * @param type SDP type to check.\r\n * @returns Whether the SDP type is valid or not.\r\n */\r\nexport function isSdpTypeValid(type: string): boolean {\r\n return SDP_TYPES.includes(type);\r\n}\r\n\r\n/**\r\n * Normalize options passed to createOffer().\r\n *\r\n * @param options - user supplied options\r\n * @return Normalized options\r\n */\r\nexport function normalizeOfferOptions(options?: RTCOfferOptions) {\r\n const newOptions: Record<string,string> = {};\r\n\r\n if (typeof options !== 'object') {\r\n return newOptions;\r\n }\r\n\r\n // Convert standard options into WebRTC internal constant names.\r\n // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113\r\n for (const [ key, value ] of Object.entries(options)) {\r\n const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];\r\n\r\n if (newKey) {\r\n newOptions[newKey] = String(Boolean(value));\r\n }\r\n }\r\n\r\n return newOptions;\r\n}\r\n\r\n/**\r\n * Normalize the given constraints in something we can work with.\r\n */\r\nexport function normalizeConstraints(constraints) {\r\n const c = deepClone(constraints);\r\n\r\n for (const mediaType of [ 'audio', 'video' ]) {\r\n const mediaTypeConstraints = c[mediaType];\r\n const typeofMediaTypeConstraints = typeof mediaTypeConstraints;\r\n\r\n if (typeofMediaTypeConstraints !== 'undefined') {\r\n if (typeofMediaTypeConstraints === 'boolean') {\r\n if (mediaTypeConstraints) {\r\n c[mediaType] = getDefaultMediaConstraints(mediaType);\r\n }\r\n } else if (typeofMediaTypeConstraints === 'object') {\r\n c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);\r\n } else {\r\n throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);\r\n }\r\n }\r\n }\r\n\r\n return c;\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["DEFAULT_AUDIO_CONSTRAINTS","DEFAULT_VIDEO_CONSTRAINTS","facingMode","frameRate","height","width","FACING_MODES","ASPECT_RATIO","STANDARD_OFFER_OPTIONS","icerestart","offertoreceiveaudio","offertoreceivevideo","voiceactivitydetection","SDP_TYPES","getDefaultMediaConstraints","mediaType","TypeError","extractString","constraints","prop","value","type","v","extractNumber","Number","parseInt","normalizeMediaConstraints","c","deviceId","includes","Math","round","chr4","random","toString","slice","uniqueID","deepClone","obj","JSON","parse","stringify","isSdpTypeValid","normalizeOfferOptions","options","newOptions","key","Object","entries","newKey","toLowerCase","String","Boolean","normalizeConstraints","mediaTypeConstraints","typeofMediaTypeConstraints"],"sources":["RTCUtil.ts"],"sourcesContent":["\nconst DEFAULT_AUDIO_CONSTRAINTS = {};\n\nconst DEFAULT_VIDEO_CONSTRAINTS = {\n facingMode: 'user',\n frameRate: 30,\n height: 720,\n width: 1280\n};\n\nconst FACING_MODES = [ 'user', 'environment' ];\n\nconst ASPECT_RATIO = 16 / 9;\n\nexport type RTCOfferOptions = {\n iceRestart?:boolean;\n offerToReceiveAudio?: boolean;\n offerToReceiveVideo?: boolean;\n voiceActivityDetection?:boolean\n};\n\nconst STANDARD_OFFER_OPTIONS = {\n icerestart: 'IceRestart',\n offertoreceiveaudio: 'OfferToReceiveAudio',\n offertoreceivevideo: 'OfferToReceiveVideo',\n voiceactivitydetection: 'VoiceActivityDetection'\n};\n\nconst SDP_TYPES = [\n 'offer',\n 'pranswer',\n 'answer',\n 'rollback'\n];\n\nfunction getDefaultMediaConstraints(mediaType) {\n switch (mediaType) {\n case 'audio':\n return DEFAULT_AUDIO_CONSTRAINTS;\n case 'video':\n return DEFAULT_VIDEO_CONSTRAINTS;\n default:\n throw new TypeError(`Invalid media type: ${mediaType}`);\n }\n}\n\nfunction extractString(constraints, prop) {\n const value = constraints[prop];\n const type = typeof value;\n\n if (type === 'object') {\n for (const v of [ 'exact', 'ideal' ]) {\n if (value[v]) {\n return value[v];\n }\n }\n } else if (type === 'string') {\n return value;\n }\n}\n\nfunction extractNumber(constraints, prop) {\n const value = constraints[prop];\n const type = typeof value;\n\n if (type === 'number') {\n return Number.parseInt(value);\n } else if (type === 'object') {\n for (const v of [ 'exact', 'ideal', 'max', 'min' ]) {\n if (value[v]) {\n return Number.parseInt(value[v]);\n }\n }\n }\n}\n\nfunction normalizeMediaConstraints(constraints, mediaType) {\n switch (mediaType) {\n case 'audio':\n return constraints;\n\n case 'video': {\n const c = {\n deviceId: extractString(constraints, 'deviceId'),\n facingMode: extractString(constraints, 'facingMode'),\n frameRate: extractNumber(constraints, 'frameRate'),\n height: extractNumber(constraints, 'height'),\n width: extractNumber(constraints, 'width')\n };\n\n if (!c.deviceId) {\n delete c.deviceId;\n }\n\n if (!FACING_MODES.includes(c.facingMode)) {\n c.facingMode = DEFAULT_VIDEO_CONSTRAINTS.facingMode;\n }\n\n if (!c.frameRate) {\n c.frameRate = DEFAULT_VIDEO_CONSTRAINTS.frameRate;\n }\n\n if (!c.height && !c.width) {\n c.height = DEFAULT_VIDEO_CONSTRAINTS.height;\n c.width = DEFAULT_VIDEO_CONSTRAINTS.width;\n } else if (!c.height && c.width) {\n c.height = Math.round(c.width / ASPECT_RATIO);\n } else if (!c.width && c.height) {\n c.width = Math.round(c.height * ASPECT_RATIO);\n }\n\n return c;\n }\n\n default:\n throw new TypeError(`Invalid media type: ${mediaType}`);\n }\n}\n\n/**\n * Utility for creating short random strings from float point values.\n * We take 4 characters from the end after converting to a string.\n * Conversion to string gives us some letters as we don't want just numbers.\n * Should be suitable to pass for enough randomness.\n *\n * @return {String} 4 random characters\n */\nfunction chr4() {\n return Math.random().toString(16).slice(-4);\n}\n\n/**\n * Put together a random string in UUIDv4 format {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\n *\n * @return {String} uuidv4\n */\nexport function uniqueID(): string {\n return `${chr4()}${chr4()}-${chr4()}-${chr4()}-${chr4()}-${chr4()}${chr4()}${chr4()}`;\n}\n\n/**\n * Utility for deep cloning an object. Object.assign() only does a shallow copy.\n *\n * @param {Object} obj - object to be cloned\n * @return {Object} cloned obj\n */\nexport function deepClone<T>(obj: T): T {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n * Checks whether an SDP type is valid or not.\n *\n * @param type SDP type to check.\n * @returns Whether the SDP type is valid or not.\n */\nexport function isSdpTypeValid(type: string): boolean {\n return SDP_TYPES.includes(type);\n}\n\n/**\n * Normalize options passed to createOffer().\n *\n * @param options - user supplied options\n * @return Normalized options\n */\nexport function normalizeOfferOptions(options?: RTCOfferOptions) {\n const newOptions: Record<string,string> = {};\n\n if (typeof options !== 'object') {\n return newOptions;\n }\n\n // Convert standard options into WebRTC internal constant names.\n // See: https://github.com/jitsi/webrtc/blob/0cd6ce4de669bed94ba47b88cb71b9be0341bb81/sdk/media_constraints.cc#L113\n for (const [ key, value ] of Object.entries(options)) {\n const newKey = STANDARD_OFFER_OPTIONS[key.toLowerCase()];\n\n if (newKey) {\n newOptions[newKey] = String(Boolean(value));\n }\n }\n\n return newOptions;\n}\n\n/**\n * Normalize the given constraints in something we can work with.\n */\nexport function normalizeConstraints(constraints) {\n const c = deepClone(constraints);\n\n for (const mediaType of [ 'audio', 'video' ]) {\n const mediaTypeConstraints = c[mediaType];\n const typeofMediaTypeConstraints = typeof mediaTypeConstraints;\n\n if (typeofMediaTypeConstraints !== 'undefined') {\n if (typeofMediaTypeConstraints === 'boolean') {\n if (mediaTypeConstraints) {\n c[mediaType] = getDefaultMediaConstraints(mediaType);\n }\n } else if (typeofMediaTypeConstraints === 'object') {\n c[mediaType] = normalizeMediaConstraints(mediaTypeConstraints, mediaType);\n } else {\n throw new TypeError(`constraints.${mediaType} is neither a boolean nor a dictionary`);\n }\n }\n }\n\n return c;\n}\n"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { requireNativeComponent } from 'react-native';
2
2
 
3
- /**
4
- * Native prop validation was removed from RN in:
5
- * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34
6
- *
7
- * So we list them here for documentation purposes.
3
+ /**
4
+ * Native prop validation was removed from RN in:
5
+ * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34
6
+ *
7
+ * So we list them here for documentation purposes.
8
8
  */
9
9
 
10
10
  export default requireNativeComponent('RTCVideoView');
@@ -1 +1 @@
1
- {"version":3,"names":["requireNativeComponent"],"sources":["RTCView.ts"],"sourcesContent":["import { requireNativeComponent, ViewProps } from 'react-native';\r\n\r\n/**\r\n * Native prop validation was removed from RN in:\r\n * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34\r\n *\r\n * So we list them here for documentation purposes.\r\n */\r\nexport interface RTCVideoViewProps extends ViewProps {\r\n /**\r\n * Indicates whether the video specified by {@link #streamURL} should be\r\n * mirrored during rendering. Commonly, applications choose to mirror the\r\n * user-facing camera.\r\n *\r\n * mirror: boolean\r\n */\r\n mirror?: boolean;\r\n\r\n /**\r\n * In the fashion of\r\n * https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth\r\n * and https://www.w3.org/TR/html5/rendering.html#video-object-fit,\r\n * resembles the CSS style object-fit.\r\n *\r\n * objectFit: 'contain' | 'cover'\r\n *\r\n * Defaults to 'cover'.\r\n */\r\n objectFit?: 'contain' | 'cover';\r\n\r\n /**\r\n * URL / id of the stream that should be rendered.\r\n *\r\n * streamURL: string\r\n */\r\n streamURL?: string;\r\n /**\r\n * Similarly to the CSS property z-index, specifies the z-order of this\r\n * RTCView in the stacking space of all RTCViews. When RTCViews overlap,\r\n * zOrder determines which one covers the other. An RTCView with a larger\r\n * zOrder generally covers an RTCView with a lower one.\r\n *\r\n * Non-overlapping RTCViews may safely share a z-order (because one does not\r\n * have to cover the other).\r\n *\r\n * The support for zOrder is platform-dependent and/or\r\n * implementation-specific. Thus, specifying a value for zOrder is to be\r\n * thought of as giving a hint rather than as imposing a requirement. For\r\n * example, video renderers such as RTCView are commonly implemented using\r\n * OpenGL and OpenGL views may have different numbers of layers in their\r\n * stacking space. Android has three: a layer bellow the window (aka\r\n * default), a layer bellow the window again but above the previous layer\r\n * (aka media overlay), and above the window. Consequently, it is advisable\r\n * to limit the number of utilized layers in the stacking space to the\r\n * minimum sufficient for the desired display. For example, a video call\r\n * application usually needs a maximum of two zOrder values: 0 for the\r\n * remote video(s) which appear in the background, and 1 for the local\r\n * video(s) which appear above the remote video(s).\r\n *\r\n * zOrder: number\r\n */\r\n zOrder?: number;\r\n\r\n\r\n /**\r\n * Picture in picture options for this view. Disabled if not supplied.\r\n *\r\n * Note: this should only be generally only used with remote video tracks,\r\n * as the local camera may stop while in the background.\r\n *\r\n * iOS only. Requires iOS 15.0 or above, and the PIP background mode capability.\r\n */\r\n iosPIP?: RTCIOSPIPOptions;\r\n\r\n /**\r\n * Callback function that is called when the dimensions of the video change.\r\n *\r\n * @param {Object} event - The event object containing the new dimensions.\r\n * @param {Object} event.nativeEvent - The native event data.\r\n * @param {number} event.nativeEvent.width - The width of the video.\r\n * @param {number} event.nativeEvent.height - The height of the video.\r\n */\r\n onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;\r\n}\r\n\r\nexport interface RTCIOSPIPOptions {\r\n\r\n /**\r\n * Whether PIP can be launched from this view.\r\n *\r\n * Defaults to true.\r\n */\r\n enabled?: boolean;\r\n\r\n /**\r\n * The preferred size of the PIP window.\r\n */\r\n preferredSize?: {\r\n width: number;\r\n height: number;\r\n },\r\n\r\n /**\r\n * Indicates whether Picture in Picture starts automatically\r\n * when the controller embeds its content inline and the app\r\n * transitions to the background.\r\n *\r\n * Defaults to true.\r\n *\r\n * See: AVPictureInPictureController.canStartPictureInPictureAutomaticallyFromInline\r\n */\r\n startAutomatically?: boolean;\r\n\r\n /**\r\n * Indicates whether Picture in Picture should stop automatically\r\n * when the app returns to the foreground.\r\n *\r\n * Defaults to true.\r\n */\r\n stopAutomatically?: boolean;\r\n}\r\nexport default requireNativeComponent<RTCVideoViewProps>('RTCVideoView');\r\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAmB,cAAc;;AAEhE;AACA;AACA;AACA;AACA;AACA;;AAkHA,eAAeA,sBAAsB,CAAoB,cAAc,CAAC"}
1
+ {"version":3,"names":["requireNativeComponent"],"sources":["RTCView.ts"],"sourcesContent":["import { requireNativeComponent, ViewProps } from 'react-native';\n\n/**\n * Native prop validation was removed from RN in:\n * https://github.com/facebook/react-native/commit/8dc3ba0444c94d9bbb66295b5af885bff9b9cd34\n *\n * So we list them here for documentation purposes.\n */\nexport interface RTCVideoViewProps extends ViewProps {\n /**\n * Indicates whether the video specified by {@link #streamURL} should be\n * mirrored during rendering. Commonly, applications choose to mirror the\n * user-facing camera.\n *\n * mirror: boolean\n */\n mirror?: boolean;\n\n /**\n * In the fashion of\n * https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth\n * and https://www.w3.org/TR/html5/rendering.html#video-object-fit,\n * resembles the CSS style object-fit.\n *\n * objectFit: 'contain' | 'cover'\n *\n * Defaults to 'cover'.\n */\n objectFit?: 'contain' | 'cover';\n\n /**\n * URL / id of the stream that should be rendered.\n *\n * streamURL: string\n */\n streamURL?: string;\n /**\n * Similarly to the CSS property z-index, specifies the z-order of this\n * RTCView in the stacking space of all RTCViews. When RTCViews overlap,\n * zOrder determines which one covers the other. An RTCView with a larger\n * zOrder generally covers an RTCView with a lower one.\n *\n * Non-overlapping RTCViews may safely share a z-order (because one does not\n * have to cover the other).\n *\n * The support for zOrder is platform-dependent and/or\n * implementation-specific. Thus, specifying a value for zOrder is to be\n * thought of as giving a hint rather than as imposing a requirement. For\n * example, video renderers such as RTCView are commonly implemented using\n * OpenGL and OpenGL views may have different numbers of layers in their\n * stacking space. Android has three: a layer bellow the window (aka\n * default), a layer bellow the window again but above the previous layer\n * (aka media overlay), and above the window. Consequently, it is advisable\n * to limit the number of utilized layers in the stacking space to the\n * minimum sufficient for the desired display. For example, a video call\n * application usually needs a maximum of two zOrder values: 0 for the\n * remote video(s) which appear in the background, and 1 for the local\n * video(s) which appear above the remote video(s).\n *\n * zOrder: number\n */\n zOrder?: number;\n\n\n /**\n * Picture in picture options for this view. Disabled if not supplied.\n *\n * Note: this should only be generally only used with remote video tracks,\n * as the local camera may stop while in the background.\n *\n * iOS only. Requires iOS 15.0 or above, and the PIP background mode capability.\n */\n iosPIP?: RTCIOSPIPOptions;\n\n /**\n * Callback function that is called when the dimensions of the video change.\n *\n * @param {Object} event - The event object containing the new dimensions.\n * @param {Object} event.nativeEvent - The native event data.\n * @param {number} event.nativeEvent.width - The width of the video.\n * @param {number} event.nativeEvent.height - The height of the video.\n */\n onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;\n}\n\nexport interface RTCIOSPIPOptions {\n\n /**\n * Whether PIP can be launched from this view.\n *\n * Defaults to true.\n */\n enabled?: boolean;\n\n /**\n * The preferred size of the PIP window.\n */\n preferredSize?: {\n width: number;\n height: number;\n },\n\n /**\n * Indicates whether Picture in Picture starts automatically\n * when the controller embeds its content inline and the app\n * transitions to the background.\n *\n * Defaults to true.\n *\n * See: AVPictureInPictureController.canStartPictureInPictureAutomaticallyFromInline\n */\n startAutomatically?: boolean;\n\n /**\n * Indicates whether Picture in Picture should stop automatically\n * when the app returns to the foreground.\n *\n * Defaults to true.\n */\n stopAutomatically?: boolean;\n}\nexport default requireNativeComponent<RTCVideoViewProps>('RTCVideoView');\n"],"mappings":"AAAA,SAASA,sBAAsB,QAAmB,cAAc;;AAEhE;AACA;AACA;AACA;AACA;AACA;;AAkHA,eAAeA,sBAAsB,CAAoB,cAAc,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useMemo","useRef","StyleSheet","View","getStream","RTCView","_ref","mirror","objectFit","streamURL","style","onDimensionsChange","ref","stream","current","srcObject","flatStyle","flatten","createElement","styles","container","autoPlay","muted","playsInline","onLoadedMetadata","event","target","currentTarget","nativeEvent","width","videoWidth","height","videoHeight","transform","undefined","create","overflow"],"sources":["RTCView.web.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\r\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\r\nimport { getStream } from './webStream';\r\n\r\nexport interface RTCVideoViewProps extends ViewProps {\r\n mirror?: boolean;\r\n objectFit?: 'contain' | 'cover';\r\n streamURL?: string;\r\n zOrder?: number;\r\n iosPIP?: RTCIOSPIPOptions;\r\n onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;\r\n}\r\n\r\nexport interface RTCIOSPIPOptions {\r\n enabled?: boolean;\r\n preferredSize?: {\r\n width: number;\r\n height: number;\r\n };\r\n startAutomatically?: boolean;\r\n stopAutomatically?: boolean;\r\n}\r\n\r\nexport default function RTCView({\r\n mirror,\r\n objectFit = 'cover',\r\n streamURL,\r\n style,\r\n onDimensionsChange,\r\n}: RTCVideoViewProps) {\r\n const ref = useRef<HTMLVideoElement | null>(null);\r\n const stream = useMemo(() => getStream(streamURL), [ streamURL ]);\r\n\r\n useEffect(() => {\r\n if (!ref.current) {\r\n return;\r\n }\r\n\r\n ref.current.srcObject = stream;\r\n }, [ stream ]);\r\n\r\n const flatStyle = StyleSheet.flatten(style) as React.CSSProperties | undefined;\r\n\r\n return (\r\n <View style={[ styles.container, style ]}>\r\n {React.createElement('video', {\r\n autoPlay: true,\r\n muted: true,\r\n playsInline: true,\r\n ref,\r\n onLoadedMetadata: (event: Event) => {\r\n const target = event.currentTarget as HTMLVideoElement | null;\n\r\n if (!target || !onDimensionsChange) {\r\n return;\r\n }\r\n\r\n onDimensionsChange({\r\n nativeEvent: {\r\n width: target.videoWidth,\r\n height: target.videoHeight,\r\n },\r\n });\r\n },\r\n style: {\r\n ...flatStyle,\r\n width: '100%',\r\n height: '100%',\r\n objectFit,\r\n transform: mirror ? 'scaleX(-1)' : undefined,\r\n },\r\n })}\r\n </View>\r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n overflow: 'hidden',\r\n },\r\n});\r\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAE1D,SAASC,SAAS,QAAQ,aAAa;AAqBvC,eAAe,SAASC,OAAOA,CAAAC,IAAA,EAMT;EAAA,IANU;IAC5BC,MAAM;IACNC,SAAS,GAAG,OAAO;IACnBC,SAAS;IACTC,KAAK;IACLC;EACe,CAAC,GAAAL,IAAA;EAChB,MAAMM,GAAG,GAAGX,MAAM,CAA0B,IAAI,CAAC;EACjD,MAAMY,MAAM,GAAGb,OAAO,CAAC,MAAMI,SAAS,CAACK,SAAS,CAAC,EAAE,CAAEA,SAAS,CAAE,CAAC;EAEjEV,SAAS,CAAC,MAAM;IACZ,IAAI,CAACa,GAAG,CAACE,OAAO,EAAE;MACd;IACJ;IAEAF,GAAG,CAACE,OAAO,CAACC,SAAS,GAAGF,MAAM;EAClC,CAAC,EAAE,CAAEA,MAAM,CAAE,CAAC;EAEd,MAAMG,SAAS,GAAGd,UAAU,CAACe,OAAO,CAACP,KAAK,CAAoC;EAE9E,oBACIZ,KAAA,CAAAoB,aAAA,CAACf,IAAI;IAACO,KAAK,EAAE,CAAES,MAAM,CAACC,SAAS,EAAEV,KAAK;EAAG,gBACpCZ,KAAK,CAACoB,aAAa,CAAC,OAAO,EAAE;IAC1BG,QAAQ,EAAE,IAAI;IACdC,KAAK,EAAE,IAAI;IACXC,WAAW,EAAE,IAAI;IACjBX,GAAG;IACHY,gBAAgB,EAAGC,KAAY,IAAK;MAChC,MAAMC,MAAM,GAAGD,KAAK,CAACE,aAAwC;MAE7D,IAAI,CAACD,MAAM,IAAI,CAACf,kBAAkB,EAAE;QAChC;MACJ;MAEAA,kBAAkB,CAAC;QACfiB,WAAW,EAAE;UACTC,KAAK,EAAEH,MAAM,CAACI,UAAU;UACxBC,MAAM,EAAEL,MAAM,CAACM;QACnB;MACJ,CAAC,CAAC;IACN,CAAC;IACDtB,KAAK,EAAE;MACH,GAAGM,SAAS;MACZa,KAAK,EAAE,MAAM;MACbE,MAAM,EAAE,MAAM;MACdvB,SAAS;MACTyB,SAAS,EAAE1B,MAAM,GAAG,YAAY,GAAG2B;IACvC;EACJ,CAAC,CACC,CAAC;AAEf;AAEA,MAAMf,MAAM,GAAGjB,UAAU,CAACiC,MAAM,CAAC;EAC7Bf,SAAS,EAAE;IACPgB,QAAQ,EAAE;EACd;AACJ,CAAC,CAAC"}
1
+ {"version":3,"names":["React","useEffect","useMemo","useRef","StyleSheet","View","getStream","RTCView","_ref","mirror","objectFit","streamURL","style","onDimensionsChange","ref","stream","current","srcObject","flatStyle","flatten","createElement","styles","container","autoPlay","muted","playsInline","onLoadedMetadata","event","target","currentTarget","nativeEvent","width","videoWidth","height","videoHeight","transform","undefined","create","overflow"],"sources":["RTCView.web.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef } from 'react';\nimport { StyleSheet, View, ViewProps } from 'react-native';\n\nimport { getStream } from './webStream';\n\nexport interface RTCVideoViewProps extends ViewProps {\n mirror?: boolean;\n objectFit?: 'contain' | 'cover';\n streamURL?: string;\n zOrder?: number;\n iosPIP?: RTCIOSPIPOptions;\n onDimensionsChange?: (event: { nativeEvent: { width: number; height: number } }) => void;\n}\n\nexport interface RTCIOSPIPOptions {\n enabled?: boolean;\n preferredSize?: {\n width: number;\n height: number;\n };\n startAutomatically?: boolean;\n stopAutomatically?: boolean;\n}\n\nexport default function RTCView({\n mirror,\n objectFit = 'cover',\n streamURL,\n style,\n onDimensionsChange,\n}: RTCVideoViewProps) {\n const ref = useRef<HTMLVideoElement | null>(null);\n const stream = useMemo(() => getStream(streamURL), [ streamURL ]);\n\n useEffect(() => {\n if (!ref.current) {\n return;\n }\n\n ref.current.srcObject = stream;\n }, [ stream ]);\n\n const flatStyle = StyleSheet.flatten(style) as React.CSSProperties | undefined;\n\n return (\n <View style={[ styles.container, style ]}>\n {React.createElement('video', {\n autoPlay: true,\n muted: true,\n playsInline: true,\n ref,\n onLoadedMetadata: (event: Event) => {\n const target = event.currentTarget as HTMLVideoElement | null;\n\n if (!target || !onDimensionsChange) {\n return;\n }\n\n onDimensionsChange({\n nativeEvent: {\n width: target.videoWidth,\n height: target.videoHeight,\n },\n });\n },\n style: {\n ...flatStyle,\n width: '100%',\n height: '100%',\n objectFit,\n transform: mirror ? 'scaleX(-1)' : undefined,\n },\n })}\n </View>\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n overflow: 'hidden',\n },\n});\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACzD,SAASC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAE1D,SAASC,SAAS,QAAQ,aAAa;AAqBvC,eAAe,SAASC,OAAOA,CAAAC,IAAA,EAMT;EAAA,IANU;IAC5BC,MAAM;IACNC,SAAS,GAAG,OAAO;IACnBC,SAAS;IACTC,KAAK;IACLC;EACe,CAAC,GAAAL,IAAA;EAChB,MAAMM,GAAG,GAAGX,MAAM,CAA0B,IAAI,CAAC;EACjD,MAAMY,MAAM,GAAGb,OAAO,CAAC,MAAMI,SAAS,CAACK,SAAS,CAAC,EAAE,CAAEA,SAAS,CAAE,CAAC;EAEjEV,SAAS,CAAC,MAAM;IACZ,IAAI,CAACa,GAAG,CAACE,OAAO,EAAE;MACd;IACJ;IAEAF,GAAG,CAACE,OAAO,CAACC,SAAS,GAAGF,MAAM;EAClC,CAAC,EAAE,CAAEA,MAAM,CAAE,CAAC;EAEd,MAAMG,SAAS,GAAGd,UAAU,CAACe,OAAO,CAACP,KAAK,CAAoC;EAE9E,oBACIZ,KAAA,CAAAoB,aAAA,CAACf,IAAI;IAACO,KAAK,EAAE,CAAES,MAAM,CAACC,SAAS,EAAEV,KAAK;EAAG,gBACpCZ,KAAK,CAACoB,aAAa,CAAC,OAAO,EAAE;IAC1BG,QAAQ,EAAE,IAAI;IACdC,KAAK,EAAE,IAAI;IACXC,WAAW,EAAE,IAAI;IACjBX,GAAG;IACHY,gBAAgB,EAAGC,KAAY,IAAK;MAChC,MAAMC,MAAM,GAAGD,KAAK,CAACE,aAAwC;MAE7D,IAAI,CAACD,MAAM,IAAI,CAACf,kBAAkB,EAAE;QAChC;MACJ;MAEAA,kBAAkB,CAAC;QACfiB,WAAW,EAAE;UACTC,KAAK,EAAEH,MAAM,CAACI,UAAU;UACxBC,MAAM,EAAEL,MAAM,CAACM;QACnB;MACJ,CAAC,CAAC;IACN,CAAC;IACDtB,KAAK,EAAE;MACH,GAAGM,SAAS;MACZa,KAAK,EAAE,MAAM;MACbE,MAAM,EAAE,MAAM;MACdvB,SAAS;MACTyB,SAAS,EAAE1B,MAAM,GAAG,YAAY,GAAG2B;IACvC;EACJ,CAAC,CACC,CAAC;AAEf;AAEA,MAAMf,MAAM,GAAGjB,UAAU,CAACiC,MAAM,CAAC;EAC7Bf,SAAS,EAAE;IACPgB,QAAQ,EAAE;EACd;AACJ,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["requireNativeComponent"],"sources":["ScreenCapturePickerView.ts"],"sourcesContent":["\r\nimport { requireNativeComponent } from 'react-native';\r\n\r\nexport default requireNativeComponent('ScreenCapturePickerView');\r\n"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,cAAc;AAErD,eAAeA,sBAAsB,CAAC,yBAAyB,CAAC"}
1
+ {"version":3,"names":["requireNativeComponent"],"sources":["ScreenCapturePickerView.ts"],"sourcesContent":["\nimport { requireNativeComponent } from 'react-native';\n\nexport default requireNativeComponent('ScreenCapturePickerView');\n"],"mappings":"AACA,SAASA,sBAAsB,QAAQ,cAAc;AAErD,eAAeA,sBAAsB,CAAC,yBAAyB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":["ScreenCapturePickerView"],"sources":["ScreenCapturePickerView.web.tsx"],"sourcesContent":["export default function ScreenCapturePickerView() {\r\n return null;\r\n}\r\n"],"mappings":"AAAA,eAAe,SAASA,uBAAuBA,CAAA,EAAG;EAC9C,OAAO,IAAI;AACf"}
1
+ {"version":3,"names":["ScreenCapturePickerView"],"sources":["ScreenCapturePickerView.web.tsx"],"sourcesContent":["export default function ScreenCapturePickerView() {\n return null;\n}\n"],"mappings":"AAAA,eAAe,SAASA,uBAAuBA,CAAA,EAAG;EAC9C,OAAO,IAAI;AACf"}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","MediaStream","MediaStreamError","WebRTCModule","getDisplayMedia","Promise","resolve","reject","then","data","streamId","track","info","streamReactTag","tracks","stream","error"],"sources":["getDisplayMedia.ts"],"sourcesContent":["\r\nimport { NativeModules } from 'react-native';\r\n\r\nimport MediaStream from './MediaStream';\r\nimport MediaStreamError from './MediaStreamError';\r\n\r\nconst { WebRTCModule } = NativeModules;\r\n\r\nexport default function getDisplayMedia(): Promise<MediaStream> {\r\n return new Promise((resolve, reject) => {\r\n WebRTCModule.getDisplayMedia().then(\r\n data => {\r\n const { streamId, track } = data;\r\n\r\n const info = {\r\n streamId: streamId,\r\n streamReactTag: streamId,\r\n tracks: [ track ]\r\n };\r\n\r\n const stream = new MediaStream(info);\r\n\r\n resolve(stream);\r\n },\r\n error => {\r\n reject(new MediaStreamError(error));\r\n }\r\n );\r\n });\r\n}\r\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,cAAc;AAE5C,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,gBAAgB,MAAM,oBAAoB;AAEjD,MAAM;EAAEC;AAAa,CAAC,GAAGH,aAAa;AAEtC,eAAe,SAASI,eAAeA,CAAA,EAAyB;EAC5D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpCJ,YAAY,CAACC,eAAe,CAAC,CAAC,CAACI,IAAI,CAC/BC,IAAI,IAAI;MACJ,MAAM;QAAEC,QAAQ;QAAEC;MAAM,CAAC,GAAGF,IAAI;MAEhC,MAAMG,IAAI,GAAG;QACTF,QAAQ,EAAEA,QAAQ;QAClBG,cAAc,EAAEH,QAAQ;QACxBI,MAAM,EAAE,CAAEH,KAAK;MACnB,CAAC;MAED,MAAMI,MAAM,GAAG,IAAId,WAAW,CAACW,IAAI,CAAC;MAEpCN,OAAO,CAACS,MAAM,CAAC;IACnB,CAAC,EACDC,KAAK,IAAI;MACLT,MAAM,CAAC,IAAIL,gBAAgB,CAACc,KAAK,CAAC,CAAC;IACvC,CACJ,CAAC;EACL,CAAC,CAAC;AACN"}
1
+ {"version":3,"names":["NativeModules","MediaStream","MediaStreamError","WebRTCModule","getDisplayMedia","Promise","resolve","reject","then","data","streamId","track","info","streamReactTag","tracks","stream","error"],"sources":["getDisplayMedia.ts"],"sourcesContent":["\nimport { NativeModules } from 'react-native';\n\nimport MediaStream from './MediaStream';\nimport MediaStreamError from './MediaStreamError';\n\nconst { WebRTCModule } = NativeModules;\n\nexport default function getDisplayMedia(): Promise<MediaStream> {\n return new Promise((resolve, reject) => {\n WebRTCModule.getDisplayMedia().then(\n data => {\n const { streamId, track } = data;\n\n const info = {\n streamId: streamId,\n streamReactTag: streamId,\n tracks: [ track ]\n };\n\n const stream = new MediaStream(info);\n\n resolve(stream);\n },\n error => {\n reject(new MediaStreamError(error));\n }\n );\n });\n}\n"],"mappings":"AACA,SAASA,aAAa,QAAQ,cAAc;AAE5C,OAAOC,WAAW,MAAM,eAAe;AACvC,OAAOC,gBAAgB,MAAM,oBAAoB;AAEjD,MAAM;EAAEC;AAAa,CAAC,GAAGH,aAAa;AAEtC,eAAe,SAASI,eAAeA,CAAA,EAAyB;EAC5D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACpCJ,YAAY,CAACC,eAAe,CAAC,CAAC,CAACI,IAAI,CAC/BC,IAAI,IAAI;MACJ,MAAM;QAAEC,QAAQ;QAAEC;MAAM,CAAC,GAAGF,IAAI;MAEhC,MAAMG,IAAI,GAAG;QACTF,QAAQ,EAAEA,QAAQ;QAClBG,cAAc,EAAEH,QAAQ;QACxBI,MAAM,EAAE,CAAEH,KAAK;MACnB,CAAC;MAED,MAAMI,MAAM,GAAG,IAAId,WAAW,CAACW,IAAI,CAAC;MAEpCN,OAAO,CAACS,MAAM,CAAC;IACnB,CAAC,EACDC,KAAK,IAAI;MACLT,MAAM,CAAC,IAAIL,gBAAgB,CAACc,KAAK,CAAC,CAAC;IACvC,CACJ,CAAC;EACL,CAAC,CAAC;AACN"}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","MediaStream","MediaStreamError","permissions","RTCUtil","WebRTCModule","getUserMedia","constraints","arguments","length","undefined","Promise","reject","TypeError","audio","video","normalizeConstraints","reqPermissions","push","request","name","resolve","all","then","results","audioPerm","videoPerm","error","message","success","id","tracks","trackInfo","c","kind","deepClone","info","streamId","streamReactTag","failure","type"],"sources":["getUserMedia.ts"],"sourcesContent":["\r\nimport { NativeModules } from 'react-native';\r\n\r\n\r\nimport { MediaTrackConstraints } from './Constraints';\r\nimport MediaStream from './MediaStream';\r\nimport MediaStreamError from './MediaStreamError';\r\nimport permissions from './Permissions';\r\nimport * as RTCUtil from './RTCUtil';\r\n\r\nconst { WebRTCModule } = NativeModules;\r\n\r\nexport interface Constraints {\r\n audio?: boolean | MediaTrackConstraints;\r\n video?: boolean | MediaTrackConstraints;\r\n}\r\n\r\nexport default function getUserMedia(constraints: Constraints = {}): Promise<MediaStream> {\r\n // According to\r\n // https://www.w3.org/TR/mediacapture-streams/#dom-mediadevices-getusermedia,\r\n // the constraints argument is a dictionary of type MediaStreamConstraints.\r\n if (typeof constraints !== 'object') {\r\n return Promise.reject(new TypeError('constraints is not a dictionary'));\r\n }\r\n\r\n if (\r\n (typeof constraints.audio === 'undefined' || !constraints.audio) &&\r\n (typeof constraints.video === 'undefined' || !constraints.video)\r\n ) {\r\n return Promise.reject(new TypeError('audio and/or video is required'));\r\n }\r\n\r\n // Normalize constraints.\r\n constraints = RTCUtil.normalizeConstraints(constraints);\r\n\r\n // Request required permissions\r\n const reqPermissions: Promise<boolean>[] = [];\r\n\r\n if (constraints.audio) {\r\n reqPermissions.push(permissions.request({ name: 'microphone' }));\r\n } else {\r\n reqPermissions.push(Promise.resolve(false));\r\n }\r\n\r\n if (constraints.video) {\r\n reqPermissions.push(permissions.request({ name: 'camera' }));\r\n } else {\r\n reqPermissions.push(Promise.resolve(false));\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n Promise.all(reqPermissions).then(results => {\r\n const [ audioPerm, videoPerm ] = results;\r\n\r\n // Check permission results and remove unneeded permissions.\r\n\r\n if (!audioPerm && !videoPerm) {\r\n // https://www.w3.org/TR/mediacapture-streams/#dom-mediadevices-getusermedia\r\n // step 4\r\n const error = {\r\n message: 'Permission denied.',\r\n name: 'SecurityError'\r\n };\r\n\r\n reject(new MediaStreamError(error));\r\n\r\n return;\r\n }\r\n\r\n audioPerm || delete constraints.audio;\r\n videoPerm || delete constraints.video;\r\n\r\n const success = (id, tracks) => {\r\n // Store initial constraints.\r\n for (const trackInfo of tracks) {\r\n const c = constraints[trackInfo.kind];\r\n\r\n if (typeof c === 'object') {\r\n trackInfo.constraints = RTCUtil.deepClone(c);\r\n }\r\n }\r\n\r\n const info = {\r\n streamId: id,\r\n streamReactTag: id,\r\n tracks\r\n };\r\n\r\n resolve(new MediaStream(info));\r\n };\r\n\r\n const failure = (type, message) => {\r\n let error;\r\n\r\n switch (type) {\r\n case 'TypeError':\r\n error = new TypeError(message);\r\n break;\r\n }\r\n\r\n if (!error) {\r\n error = new MediaStreamError({ message, name: type });\r\n }\r\n\r\n reject(error);\r\n };\r\n\r\n WebRTCModule.getUserMedia(constraints, success, failure);\r\n });\r\n });\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","MediaStream","MediaStreamError","permissions","RTCUtil","WebRTCModule","getUserMedia","constraints","arguments","length","undefined","Promise","reject","TypeError","audio","video","normalizeConstraints","reqPermissions","push","request","name","resolve","all","then","results","audioPerm","videoPerm","error","message","success","id","tracks","trackInfo","c","kind","deepClone","info","streamId","streamReactTag","failure","type"],"sources":["getUserMedia.ts"],"sourcesContent":["\nimport { NativeModules } from 'react-native';\n\n\nimport { MediaTrackConstraints } from './Constraints';\nimport MediaStream from './MediaStream';\nimport MediaStreamError from './MediaStreamError';\nimport permissions from './Permissions';\nimport * as RTCUtil from './RTCUtil';\n\nconst { WebRTCModule } = NativeModules;\n\nexport interface Constraints {\n audio?: boolean | MediaTrackConstraints;\n video?: boolean | MediaTrackConstraints;\n}\n\nexport default function getUserMedia(constraints: Constraints = {}): Promise<MediaStream> {\n // According to\n // https://www.w3.org/TR/mediacapture-streams/#dom-mediadevices-getusermedia,\n // the constraints argument is a dictionary of type MediaStreamConstraints.\n if (typeof constraints !== 'object') {\n return Promise.reject(new TypeError('constraints is not a dictionary'));\n }\n\n if (\n (typeof constraints.audio === 'undefined' || !constraints.audio) &&\n (typeof constraints.video === 'undefined' || !constraints.video)\n ) {\n return Promise.reject(new TypeError('audio and/or video is required'));\n }\n\n // Normalize constraints.\n constraints = RTCUtil.normalizeConstraints(constraints);\n\n // Request required permissions\n const reqPermissions: Promise<boolean>[] = [];\n\n if (constraints.audio) {\n reqPermissions.push(permissions.request({ name: 'microphone' }));\n } else {\n reqPermissions.push(Promise.resolve(false));\n }\n\n if (constraints.video) {\n reqPermissions.push(permissions.request({ name: 'camera' }));\n } else {\n reqPermissions.push(Promise.resolve(false));\n }\n\n return new Promise((resolve, reject) => {\n Promise.all(reqPermissions).then(results => {\n const [ audioPerm, videoPerm ] = results;\n\n // Check permission results and remove unneeded permissions.\n\n if (!audioPerm && !videoPerm) {\n // https://www.w3.org/TR/mediacapture-streams/#dom-mediadevices-getusermedia\n // step 4\n const error = {\n message: 'Permission denied.',\n name: 'SecurityError'\n };\n\n reject(new MediaStreamError(error));\n\n return;\n }\n\n audioPerm || delete constraints.audio;\n videoPerm || delete constraints.video;\n\n const success = (id, tracks) => {\n // Store initial constraints.\n for (const trackInfo of tracks) {\n const c = constraints[trackInfo.kind];\n\n if (typeof c === 'object') {\n trackInfo.constraints = RTCUtil.deepClone(c);\n }\n }\n\n const info = {\n streamId: id,\n streamReactTag: id,\n tracks\n };\n\n resolve(new MediaStream(info));\n };\n\n const failure = (type, message) => {\n let error;\n\n switch (type) {\n case 'TypeError':\n error = new TypeError(message);\n break;\n }\n\n if (!error) {\n error = new MediaStreamError({ message, name: type });\n }\n\n reject(error);\n };\n\n WebRTCModule.getUserMedia(constraints, success, failure);\n });\n });\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","WebRTCModule","Error","OS","setupNativeEvents","Logger","mediaDevices","MediaStream","MediaStreamTrack","MediaStreamTrackEvent","permissions","RTCAudioSession","RTCDataPacketCryptor","RTCEncryptedPacket","RTCDataPacketCryptorFactory","RTCErrorEvent","RTCFrameCryptor","RTCFrameCryptorState","RTCFrameCryptorFactory","RTCFrameCryptorAlgorithm","RTCKeyProviderOptions","RTCIceCandidate","RTCKeyProvider","RTCPIPView","startIOSPIP","stopIOSPIP","RTCPeerConnection","RTCRtpReceiver","RTCRtpSender","RTCRtpTransceiver","RTCSessionDescription","RTCView","ScreenCapturePickerView","enable","ROOT_PREFIX","registerGlobals","global","navigator","getUserMedia","bind","getDisplayMedia","enumerateDevices"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\r\nconst { WebRTCModule } = NativeModules;\r\n\r\nif (WebRTCModule === null) {\r\n throw new Error(`WebRTC native module not found.\\n${Platform.OS === 'ios' ?\r\n 'Try executing the \"pod install\" command inside your projects ios folder.' :\r\n 'Try executing the \"npm install\" command inside your projects folder.'\r\n }`);\r\n}\r\n\r\nimport { setupNativeEvents } from './EventEmitter';\r\nimport Logger from './Logger';\r\nimport mediaDevices from './MediaDevices';\r\nimport MediaStream from './MediaStream';\r\nimport MediaStreamTrack, {\r\n type MediaTrackSettings,\r\n type PalabraConfig,\r\n type PalabraTranscription,\r\n} from './MediaStreamTrack';\r\nimport MediaStreamTrackEvent from './MediaStreamTrackEvent';\r\nimport permissions from './Permissions';\r\nimport RTCAudioSession from './RTCAudioSession';\r\nimport RTCDataPacketCryptor, { RTCEncryptedPacket } from './RTCDataPacketCryptor';\r\nimport RTCDataPacketCryptorFactory from './RTCDataPacketCryptorFactory';\r\nimport RTCErrorEvent from './RTCErrorEvent';\r\nimport RTCFrameCryptor, { RTCFrameCryptorState } from './RTCFrameCryptor';\r\nimport RTCFrameCryptorFactory, { RTCFrameCryptorAlgorithm, RTCKeyProviderOptions } from './RTCFrameCryptorFactory';\r\nimport RTCIceCandidate from './RTCIceCandidate';\r\nimport RTCKeyProvider from './RTCKeyProvider';\r\nimport RTCPIPView, { startIOSPIP, stopIOSPIP } from './RTCPIPView';\r\nimport RTCPeerConnection from './RTCPeerConnection';\r\nimport RTCRtpReceiver from './RTCRtpReceiver';\r\nimport RTCRtpSender from './RTCRtpSender';\r\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\r\nimport RTCSessionDescription from './RTCSessionDescription';\r\nimport RTCView, { type RTCVideoViewProps, type RTCIOSPIPOptions } from './RTCView';\r\nimport ScreenCapturePickerView from './ScreenCapturePickerView';\r\n\r\nLogger.enable(`${Logger.ROOT_PREFIX}:*`);\r\n\r\n// Add listeners for the native events early, since they are added asynchronously.\r\nsetupNativeEvents();\r\n\r\nexport {\r\n RTCIceCandidate,\r\n RTCPeerConnection,\r\n RTCSessionDescription,\r\n RTCView,\r\n RTCPIPView,\r\n ScreenCapturePickerView,\r\n RTCRtpTransceiver,\r\n RTCRtpReceiver,\r\n RTCRtpSender,\r\n RTCErrorEvent,\r\n RTCAudioSession,\r\n RTCDataPacketCryptor,\r\n RTCDataPacketCryptorFactory,\r\n RTCEncryptedPacket,\r\n RTCFrameCryptor,\r\n RTCFrameCryptorAlgorithm,\r\n RTCFrameCryptorState,\r\n RTCFrameCryptorFactory,\r\n RTCKeyProvider,\r\n RTCKeyProviderOptions,\r\n MediaStream,\r\n MediaStreamTrack,\r\n type MediaTrackSettings,\r\n type PalabraConfig,\r\n type PalabraTranscription,\r\n type RTCVideoViewProps,\r\n type RTCIOSPIPOptions,\r\n mediaDevices,\r\n permissions,\r\n registerGlobals,\r\n startIOSPIP,\r\n stopIOSPIP,\r\n};\r\n\r\ndeclare const global: any;\r\n\r\nfunction registerGlobals(): void {\r\n // Should not happen. React Native has a global navigator object.\r\n if (typeof global.navigator !== 'object') {\r\n throw new Error('navigator is not an object');\r\n }\r\n\r\n if (!global.navigator.mediaDevices) {\r\n global.navigator.mediaDevices = {};\r\n }\r\n\r\n global.navigator.mediaDevices.getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\r\n global.navigator.mediaDevices.getDisplayMedia = mediaDevices.getDisplayMedia.bind(mediaDevices);\r\n global.navigator.mediaDevices.enumerateDevices = mediaDevices.enumerateDevices.bind(mediaDevices);\r\n\r\n global.RTCIceCandidate = RTCIceCandidate;\r\n global.RTCPeerConnection = RTCPeerConnection;\r\n global.RTCRtpReceiver = RTCRtpReceiver;\r\n global.RTCRtpSender = RTCRtpReceiver;\r\n global.RTCSessionDescription = RTCSessionDescription;\r\n global.MediaStream = MediaStream;\r\n global.MediaStreamTrack = MediaStreamTrack;\r\n global.MediaStreamTrackEvent = MediaStreamTrackEvent;\r\n global.RTCRtpTransceiver = RTCRtpTransceiver;\r\n global.RTCRtpReceiver = RTCRtpReceiver;\r\n global.RTCRtpSender = RTCRtpSender;\r\n global.RTCErrorEvent = RTCErrorEvent;\r\n}\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["NativeModules","Platform","WebRTCModule","Error","OS","setupNativeEvents","Logger","mediaDevices","MediaStream","MediaStreamTrack","MediaStreamTrackEvent","permissions","RTCAudioSession","RTCDataPacketCryptor","RTCEncryptedPacket","RTCDataPacketCryptorFactory","RTCErrorEvent","RTCFrameCryptor","RTCFrameCryptorState","RTCFrameCryptorFactory","RTCFrameCryptorAlgorithm","RTCKeyProviderOptions","RTCIceCandidate","RTCKeyProvider","RTCPIPView","startIOSPIP","stopIOSPIP","RTCPeerConnection","RTCRtpReceiver","RTCRtpSender","RTCRtpTransceiver","RTCSessionDescription","RTCView","ScreenCapturePickerView","enable","ROOT_PREFIX","registerGlobals","global","navigator","getUserMedia","bind","getDisplayMedia","enumerateDevices"],"sources":["index.ts"],"sourcesContent":["import { NativeModules, Platform } from 'react-native';\nconst { WebRTCModule } = NativeModules;\n\nif (WebRTCModule === null) {\n throw new Error(`WebRTC native module not found.\\n${Platform.OS === 'ios' ?\n 'Try executing the \"pod install\" command inside your projects ios folder.' :\n 'Try executing the \"npm install\" command inside your projects folder.'\n }`);\n}\n\nimport { setupNativeEvents } from './EventEmitter';\nimport Logger from './Logger';\nimport mediaDevices from './MediaDevices';\nimport MediaStream from './MediaStream';\nimport MediaStreamTrack, {\n type MediaTrackSettings,\n type PalabraConfig,\n type PalabraTranscription,\n} from './MediaStreamTrack';\nimport MediaStreamTrackEvent from './MediaStreamTrackEvent';\nimport permissions from './Permissions';\nimport RTCAudioSession from './RTCAudioSession';\nimport RTCDataPacketCryptor, { RTCEncryptedPacket } from './RTCDataPacketCryptor';\nimport RTCDataPacketCryptorFactory from './RTCDataPacketCryptorFactory';\nimport RTCErrorEvent from './RTCErrorEvent';\nimport RTCFrameCryptor, { RTCFrameCryptorState } from './RTCFrameCryptor';\nimport RTCFrameCryptorFactory, { RTCFrameCryptorAlgorithm, RTCKeyProviderOptions } from './RTCFrameCryptorFactory';\nimport RTCIceCandidate from './RTCIceCandidate';\nimport RTCKeyProvider from './RTCKeyProvider';\nimport RTCPIPView, { startIOSPIP, stopIOSPIP } from './RTCPIPView';\nimport RTCPeerConnection from './RTCPeerConnection';\nimport RTCRtpReceiver from './RTCRtpReceiver';\nimport RTCRtpSender from './RTCRtpSender';\nimport RTCRtpTransceiver from './RTCRtpTransceiver';\nimport RTCSessionDescription from './RTCSessionDescription';\nimport RTCView, { type RTCVideoViewProps, type RTCIOSPIPOptions } from './RTCView';\nimport ScreenCapturePickerView from './ScreenCapturePickerView';\n\nLogger.enable(`${Logger.ROOT_PREFIX}:*`);\n\n// Add listeners for the native events early, since they are added asynchronously.\nsetupNativeEvents();\n\nexport {\n RTCIceCandidate,\n RTCPeerConnection,\n RTCSessionDescription,\n RTCView,\n RTCPIPView,\n ScreenCapturePickerView,\n RTCRtpTransceiver,\n RTCRtpReceiver,\n RTCRtpSender,\n RTCErrorEvent,\n RTCAudioSession,\n RTCDataPacketCryptor,\n RTCDataPacketCryptorFactory,\n RTCEncryptedPacket,\n RTCFrameCryptor,\n RTCFrameCryptorAlgorithm,\n RTCFrameCryptorState,\n RTCFrameCryptorFactory,\n RTCKeyProvider,\n RTCKeyProviderOptions,\n MediaStream,\n MediaStreamTrack,\n type MediaTrackSettings,\n type PalabraConfig,\n type PalabraTranscription,\n type RTCVideoViewProps,\n type RTCIOSPIPOptions,\n mediaDevices,\n permissions,\n registerGlobals,\n startIOSPIP,\n stopIOSPIP,\n};\n\ndeclare const global: any;\n\nfunction registerGlobals(): void {\n // Should not happen. React Native has a global navigator object.\n if (typeof global.navigator !== 'object') {\n throw new Error('navigator is not an object');\n }\n\n if (!global.navigator.mediaDevices) {\n global.navigator.mediaDevices = {};\n }\n\n global.navigator.mediaDevices.getUserMedia = mediaDevices.getUserMedia.bind(mediaDevices);\n global.navigator.mediaDevices.getDisplayMedia = mediaDevices.getDisplayMedia.bind(mediaDevices);\n global.navigator.mediaDevices.enumerateDevices = mediaDevices.enumerateDevices.bind(mediaDevices);\n\n global.RTCIceCandidate = RTCIceCandidate;\n global.RTCPeerConnection = RTCPeerConnection;\n global.RTCRtpReceiver = RTCRtpReceiver;\n global.RTCRtpSender = RTCRtpReceiver;\n global.RTCSessionDescription = RTCSessionDescription;\n global.MediaStream = MediaStream;\n global.MediaStreamTrack = MediaStreamTrack;\n global.MediaStreamTrackEvent = MediaStreamTrackEvent;\n global.RTCRtpTransceiver = RTCRtpTransceiver;\n global.RTCRtpReceiver = RTCRtpReceiver;\n global.RTCRtpSender = RTCRtpSender;\n global.RTCErrorEvent = RTCErrorEvent;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["RTCPIPView","startIOSPIP","stopIOSPIP","RTCView","ScreenCapturePickerView","patchMediaStream","RTCFrameCryptorAlgorithm","RTCFrameCryptorState","UnsupportedFeature","unsupported","Error","RTCDataPacketCryptor","RTCDataPacketCryptorFactory","createDataPacketCryptor","RTCErrorEvent","Event","RTCFrameCryptor","RTCFrameCryptorFactory","createDefaultKeyProvider","RTCKeyProvider","setSharedKey","setKey","ratchetKey","ratchetSharedKey","setSifTrailer","dispose","RTCAudioSession","setConfiguration","mediaDevices","navigator","enumerateDevices","getDisplayMedia","getUserMedia","permissions","check","request","RTCIceCandidateRef","globalThis","RTCIceCandidate","RTCPeerConnectionRef","RTCPeerConnection","RTCSessionDescriptionRef","RTCSessionDescription","RTCRtpReceiverRef","RTCRtpReceiver","RTCRtpSenderRef","RTCRtpSender","RTCRtpTransceiverRef","RTCRtpTransceiver","MediaStreamRef","MediaStream","MediaStreamTrackRef","MediaStreamTrack","MediaStreamTrackEventRef","MediaStreamTrackEvent","registerGlobals","_globalThis$navigator","nav","globalRef"],"sources":["index.web.ts"],"sourcesContent":["import RTCPIPView, { startIOSPIP, stopIOSPIP } from './RTCPIPView.web';\r\nimport RTCView, { type RTCIOSPIPOptions, type RTCVideoViewProps } from './RTCView.web';\r\nimport ScreenCapturePickerView from './ScreenCapturePickerView.web';\r\nimport { patchMediaStream } from './webStream';\r\n\r\nexport type MediaTrackSettings = Record<string, unknown>;\r\nexport type PalabraConfig = Record<string, never>;\r\nexport type PalabraTranscription = {\r\n text: string;\r\n lang: string;\r\n isFinal: boolean;\r\n};\r\nexport type RTCEncryptedPacket = {\r\n payload: Uint8Array;\r\n iv: Uint8Array;\r\n keyIndex: number;\r\n};\r\n\r\nexport enum RTCFrameCryptorAlgorithm {\r\n kAesGcm = 'kAesGcm',\r\n}\r\n\r\nexport enum RTCFrameCryptorState {\r\n kNew = 'kNew',\r\n kOk = 'kOk',\r\n}\r\n\r\nexport type RTCKeyProviderOptions = Record<string, unknown>;\r\n\r\nclass UnsupportedFeature {\r\n protected unsupported(): never {\r\n throw new Error('This WebRTC native feature is not available on web.');\r\n }\r\n}\r\n\r\nclass RTCDataPacketCryptor extends UnsupportedFeature {}\r\n\r\nclass RTCDataPacketCryptorFactory extends UnsupportedFeature {\r\n static async createDataPacketCryptor() {\r\n throw new Error('Data packet cryptor is not available on web.');\r\n }\r\n}\r\n\r\nclass RTCErrorEvent extends Event {}\r\n\r\nclass RTCFrameCryptor extends UnsupportedFeature {}\r\n\r\nclass RTCFrameCryptorFactory extends UnsupportedFeature {\r\n static createDefaultKeyProvider() {\r\n return new RTCKeyProvider();\r\n }\r\n}\r\n\r\nclass RTCKeyProvider extends UnsupportedFeature {\r\n setSharedKey() {\r\n this.unsupported();\r\n }\r\n\r\n setKey() {\r\n this.unsupported();\r\n }\r\n\r\n ratchetKey() {\r\n this.unsupported();\r\n }\r\n\r\n ratchetSharedKey() {\r\n this.unsupported();\r\n }\r\n\r\n setSifTrailer() {\r\n this.unsupported();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n dispose() {}\r\n}\r\n\r\nclass RTCAudioSession {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n static async setConfiguration() {}\r\n}\r\n\r\nconst mediaDevices = typeof navigator !== 'undefined' && navigator.mediaDevices\r\n ? navigator.mediaDevices\r\n : {\r\n enumerateDevices: async () => [],\r\n getDisplayMedia: async () => {\r\n throw new Error('Display capture is not available.');\r\n },\r\n getUserMedia: async () => {\r\n throw new Error('User media is not available.');\r\n },\r\n };\r\n\r\nconst permissions = {\r\n async check() {\r\n return true;\r\n },\r\n async request() {\r\n return true;\r\n },\r\n};\r\n\r\nconst RTCIceCandidateRef =\r\n typeof globalThis.RTCIceCandidate === 'function' ? globalThis.RTCIceCandidate : class {};\r\nconst RTCPeerConnectionRef =\r\n typeof globalThis.RTCPeerConnection === 'function' ? globalThis.RTCPeerConnection : class {};\r\nconst RTCSessionDescriptionRef =\r\n typeof globalThis.RTCSessionDescription === 'function'\r\n ? globalThis.RTCSessionDescription\r\n : class {};\r\nconst RTCRtpReceiverRef =\r\n typeof globalThis.RTCRtpReceiver === 'function' ? globalThis.RTCRtpReceiver : class {};\r\nconst RTCRtpSenderRef =\r\n typeof globalThis.RTCRtpSender === 'function' ? globalThis.RTCRtpSender : class {};\r\nconst RTCRtpTransceiverRef =\r\n typeof globalThis.RTCRtpTransceiver === 'function'\r\n ? globalThis.RTCRtpTransceiver\r\n : class {};\r\nconst MediaStreamRef =\r\n typeof globalThis.MediaStream === 'function' ? globalThis.MediaStream : class {};\r\nconst MediaStreamTrackRef =\r\n typeof globalThis.MediaStreamTrack === 'function'\r\n ? globalThis.MediaStreamTrack\r\n : class {};\r\nconst MediaStreamTrackEventRef =\r\n typeof globalThis.MediaStreamTrackEvent === 'function'\r\n ? globalThis.MediaStreamTrackEvent\r\n : class extends Event {};\r\n\r\nexport const RTCIceCandidate = RTCIceCandidateRef as typeof globalThis.RTCIceCandidate;\r\nexport const RTCPeerConnection = RTCPeerConnectionRef as typeof globalThis.RTCPeerConnection;\r\nexport const RTCSessionDescription =\r\n RTCSessionDescriptionRef as typeof globalThis.RTCSessionDescription;\r\nexport const RTCRtpReceiver = RTCRtpReceiverRef as typeof globalThis.RTCRtpReceiver;\r\nexport const RTCRtpSender = RTCRtpSenderRef as typeof globalThis.RTCRtpSender;\r\nexport const RTCRtpTransceiver =\r\n RTCRtpTransceiverRef as typeof globalThis.RTCRtpTransceiver;\r\nexport const MediaStream = MediaStreamRef as typeof globalThis.MediaStream;\r\nexport const MediaStreamTrack = MediaStreamTrackRef as typeof globalThis.MediaStreamTrack;\r\nexport const MediaStreamTrackEvent =\r\n MediaStreamTrackEventRef as typeof globalThis.MediaStreamTrackEvent;\r\n\r\nexport function registerGlobals(): void {\r\n patchMediaStream();\r\n\r\n const nav = (globalThis.navigator ?? {}) as unknown as Record<string, unknown> & {\r\n mediaDevices?: typeof mediaDevices;\r\n };\r\n\r\n if (typeof globalThis.navigator === 'undefined') {\r\n (globalThis as typeof globalThis & { navigator: typeof nav }).navigator = nav as any;\r\n }\r\n\r\n if (!nav.mediaDevices) {\r\n nav.mediaDevices = mediaDevices;\r\n }\r\n\r\n const globalRef = globalThis as typeof globalThis & Record<string, unknown>;\r\n\r\n globalRef.RTCIceCandidate = RTCIceCandidate;\r\n globalRef.RTCPeerConnection = RTCPeerConnection;\r\n globalRef.RTCSessionDescription = RTCSessionDescription;\r\n globalRef.MediaStream = MediaStream;\r\n globalRef.MediaStreamTrack = MediaStreamTrack;\r\n globalRef.MediaStreamTrackEvent = MediaStreamTrackEvent;\r\n globalRef.RTCRtpTransceiver = RTCRtpTransceiver;\r\n globalRef.RTCRtpReceiver = RTCRtpReceiver;\r\n globalRef.RTCRtpSender = RTCRtpSender;\r\n globalRef.RTCErrorEvent = RTCErrorEvent;\r\n}\r\n\r\nexport {\r\n mediaDevices,\r\n permissions,\r\n RTCView,\r\n RTCPIPView,\r\n ScreenCapturePickerView,\r\n RTCAudioSession,\r\n RTCDataPacketCryptor,\r\n RTCDataPacketCryptorFactory,\r\n RTCErrorEvent,\r\n RTCFrameCryptor,\r\n RTCFrameCryptorFactory,\r\n RTCKeyProvider,\r\n startIOSPIP,\r\n stopIOSPIP,\r\n type RTCVideoViewProps,\r\n type RTCIOSPIPOptions,\r\n};\r\n"],"mappings":"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"}
1
+ {"version":3,"names":["RTCPIPView","startIOSPIP","stopIOSPIP","RTCView","ScreenCapturePickerView","patchMediaStream","RTCFrameCryptorAlgorithm","RTCFrameCryptorState","UnsupportedFeature","unsupported","Error","RTCDataPacketCryptor","RTCDataPacketCryptorFactory","createDataPacketCryptor","RTCErrorEvent","Event","RTCFrameCryptor","RTCFrameCryptorFactory","createDefaultKeyProvider","RTCKeyProvider","setSharedKey","setKey","ratchetKey","ratchetSharedKey","setSifTrailer","dispose","RTCAudioSession","setConfiguration","mediaDevices","navigator","enumerateDevices","getDisplayMedia","getUserMedia","permissions","check","request","RTCIceCandidateRef","globalThis","RTCIceCandidate","RTCPeerConnectionRef","RTCPeerConnection","RTCSessionDescriptionRef","RTCSessionDescription","RTCRtpReceiverRef","RTCRtpReceiver","RTCRtpSenderRef","RTCRtpSender","RTCRtpTransceiverRef","RTCRtpTransceiver","MediaStreamRef","MediaStream","MediaStreamTrackRef","MediaStreamTrack","MediaStreamTrackEventRef","MediaStreamTrackEvent","registerGlobals","_globalThis$navigator","nav","globalRef"],"sources":["index.web.ts"],"sourcesContent":["import RTCPIPView, { startIOSPIP, stopIOSPIP } from './RTCPIPView.web';\nimport RTCView, { type RTCIOSPIPOptions, type RTCVideoViewProps } from './RTCView.web';\nimport ScreenCapturePickerView from './ScreenCapturePickerView.web';\nimport { patchMediaStream } from './webStream';\n\nexport type MediaTrackSettings = Record<string, unknown>;\nexport type PalabraConfig = Record<string, never>;\nexport type PalabraTranscription = {\n text: string;\n lang: string;\n isFinal: boolean;\n};\nexport type RTCEncryptedPacket = {\n payload: Uint8Array;\n iv: Uint8Array;\n keyIndex: number;\n};\n\nexport enum RTCFrameCryptorAlgorithm {\n kAesGcm = 'kAesGcm',\n}\n\nexport enum RTCFrameCryptorState {\n kNew = 'kNew',\n kOk = 'kOk',\n}\n\nexport type RTCKeyProviderOptions = Record<string, unknown>;\n\nclass UnsupportedFeature {\n protected unsupported(): never {\n throw new Error('This WebRTC native feature is not available on web.');\n }\n}\n\nclass RTCDataPacketCryptor extends UnsupportedFeature {}\n\nclass RTCDataPacketCryptorFactory extends UnsupportedFeature {\n static async createDataPacketCryptor() {\n throw new Error('Data packet cryptor is not available on web.');\n }\n}\n\nclass RTCErrorEvent extends Event {}\n\nclass RTCFrameCryptor extends UnsupportedFeature {}\n\nclass RTCFrameCryptorFactory extends UnsupportedFeature {\n static createDefaultKeyProvider() {\n return new RTCKeyProvider();\n }\n}\n\nclass RTCKeyProvider extends UnsupportedFeature {\n setSharedKey() {\n this.unsupported();\n }\n\n setKey() {\n this.unsupported();\n }\n\n ratchetKey() {\n this.unsupported();\n }\n\n ratchetSharedKey() {\n this.unsupported();\n }\n\n setSifTrailer() {\n this.unsupported();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n dispose() {}\n}\n\nclass RTCAudioSession {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n static async setConfiguration() {}\n}\n\nconst mediaDevices = typeof navigator !== 'undefined' && navigator.mediaDevices\n ? navigator.mediaDevices\n : {\n enumerateDevices: async () => [],\n getDisplayMedia: async () => {\n throw new Error('Display capture is not available.');\n },\n getUserMedia: async () => {\n throw new Error('User media is not available.');\n },\n };\n\nconst permissions = {\n async check() {\n return true;\n },\n async request() {\n return true;\n },\n};\n\nconst RTCIceCandidateRef =\n typeof globalThis.RTCIceCandidate === 'function' ? globalThis.RTCIceCandidate : class {};\nconst RTCPeerConnectionRef =\n typeof globalThis.RTCPeerConnection === 'function' ? globalThis.RTCPeerConnection : class {};\nconst RTCSessionDescriptionRef =\n typeof globalThis.RTCSessionDescription === 'function'\n ? globalThis.RTCSessionDescription\n : class {};\nconst RTCRtpReceiverRef =\n typeof globalThis.RTCRtpReceiver === 'function' ? globalThis.RTCRtpReceiver : class {};\nconst RTCRtpSenderRef =\n typeof globalThis.RTCRtpSender === 'function' ? globalThis.RTCRtpSender : class {};\nconst RTCRtpTransceiverRef =\n typeof globalThis.RTCRtpTransceiver === 'function'\n ? globalThis.RTCRtpTransceiver\n : class {};\nconst MediaStreamRef =\n typeof globalThis.MediaStream === 'function' ? globalThis.MediaStream : class {};\nconst MediaStreamTrackRef =\n typeof globalThis.MediaStreamTrack === 'function'\n ? globalThis.MediaStreamTrack\n : class {};\nconst MediaStreamTrackEventRef =\n typeof globalThis.MediaStreamTrackEvent === 'function'\n ? globalThis.MediaStreamTrackEvent\n : class extends Event {};\n\nexport const RTCIceCandidate = RTCIceCandidateRef as typeof globalThis.RTCIceCandidate;\nexport const RTCPeerConnection = RTCPeerConnectionRef as typeof globalThis.RTCPeerConnection;\nexport const RTCSessionDescription =\n RTCSessionDescriptionRef as typeof globalThis.RTCSessionDescription;\nexport const RTCRtpReceiver = RTCRtpReceiverRef as typeof globalThis.RTCRtpReceiver;\nexport const RTCRtpSender = RTCRtpSenderRef as typeof globalThis.RTCRtpSender;\nexport const RTCRtpTransceiver =\n RTCRtpTransceiverRef as typeof globalThis.RTCRtpTransceiver;\nexport const MediaStream = MediaStreamRef as typeof globalThis.MediaStream;\nexport const MediaStreamTrack = MediaStreamTrackRef as typeof globalThis.MediaStreamTrack;\nexport const MediaStreamTrackEvent =\n MediaStreamTrackEventRef as typeof globalThis.MediaStreamTrackEvent;\n\nexport function registerGlobals(): void {\n patchMediaStream();\n\n const nav = (globalThis.navigator ?? {}) as unknown as Record<string, unknown> & {\n mediaDevices?: typeof mediaDevices;\n };\n\n if (typeof globalThis.navigator === 'undefined') {\n (globalThis as typeof globalThis & { navigator: typeof nav }).navigator = nav as any;\n }\n\n if (!nav.mediaDevices) {\n nav.mediaDevices = mediaDevices;\n }\n\n const globalRef = globalThis as typeof globalThis & Record<string, unknown>;\n\n globalRef.RTCIceCandidate = RTCIceCandidate;\n globalRef.RTCPeerConnection = RTCPeerConnection;\n globalRef.RTCSessionDescription = RTCSessionDescription;\n globalRef.MediaStream = MediaStream;\n globalRef.MediaStreamTrack = MediaStreamTrack;\n globalRef.MediaStreamTrackEvent = MediaStreamTrackEvent;\n globalRef.RTCRtpTransceiver = RTCRtpTransceiver;\n globalRef.RTCRtpReceiver = RTCRtpReceiver;\n globalRef.RTCRtpSender = RTCRtpSender;\n globalRef.RTCErrorEvent = RTCErrorEvent;\n}\n\nexport {\n mediaDevices,\n permissions,\n RTCView,\n RTCPIPView,\n ScreenCapturePickerView,\n RTCAudioSession,\n RTCDataPacketCryptor,\n RTCDataPacketCryptorFactory,\n RTCErrorEvent,\n RTCFrameCryptor,\n RTCFrameCryptorFactory,\n RTCKeyProvider,\n startIOSPIP,\n stopIOSPIP,\n type RTCVideoViewProps,\n type RTCIOSPIPOptions,\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["streams","Map","rememberStream","stream","set","id","getStream","streamURL","_streams$get","get","patchMediaStream","MediaStream","proto","prototype","toURL"],"sources":["webStream.ts"],"sourcesContent":["const streams = new Map<string, MediaStream>();\r\n\r\nexport function rememberStream(stream: MediaStream | null | undefined): string {\r\n if (!stream) {\r\n return '';\r\n }\r\n\r\n streams.set(stream.id, stream);\n\r\n return stream.id;\r\n}\r\n\r\nexport function getStream(streamURL?: string): MediaStream | null {\r\n if (!streamURL) {\r\n return null;\r\n }\r\n\r\n return streams.get(streamURL) ?? null;\r\n}\r\n\r\nexport function patchMediaStream() {\r\n if (typeof MediaStream === 'undefined') {\r\n return;\r\n }\r\n\r\n const proto = MediaStream.prototype as MediaStream & { toURL?: () => string };\n\r\n if (typeof proto.toURL !== 'function') {\r\n proto.toURL = function toURL() {\r\n return rememberStream(this);\r\n };\r\n }\r\n}\r\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,IAAIC,GAAG,CAAsB,CAAC;AAE9C,OAAO,SAASC,cAAcA,CAACC,MAAsC,EAAU;EAC3E,IAAI,CAACA,MAAM,EAAE;IACT,OAAO,EAAE;EACb;EAEAH,OAAO,CAACI,GAAG,CAACD,MAAM,CAACE,EAAE,EAAEF,MAAM,CAAC;EAE9B,OAAOA,MAAM,CAACE,EAAE;AACpB;AAEA,OAAO,SAASC,SAASA,CAACC,SAAkB,EAAsB;EAAA,IAAAC,YAAA;EAC9D,IAAI,CAACD,SAAS,EAAE;IACZ,OAAO,IAAI;EACf;EAEA,QAAAC,YAAA,GAAOR,OAAO,CAACS,GAAG,CAACF,SAAS,CAAC,cAAAC,YAAA,cAAAA,YAAA,GAAI,IAAI;AACzC;AAEA,OAAO,SAASE,gBAAgBA,CAAA,EAAG;EAC/B,IAAI,OAAOC,WAAW,KAAK,WAAW,EAAE;IACpC;EACJ;EAEA,MAAMC,KAAK,GAAGD,WAAW,CAACE,SAAmD;EAE7E,IAAI,OAAOD,KAAK,CAACE,KAAK,KAAK,UAAU,EAAE;IACnCF,KAAK,CAACE,KAAK,GAAG,SAASA,KAAKA,CAAA,EAAG;MAC3B,OAAOZ,cAAc,CAAC,IAAI,CAAC;IAC/B,CAAC;EACL;AACJ"}
1
+ {"version":3,"names":["streams","Map","rememberStream","stream","set","id","getStream","streamURL","_streams$get","get","patchMediaStream","MediaStream","proto","prototype","toURL"],"sources":["webStream.ts"],"sourcesContent":["const streams = new Map<string, MediaStream>();\n\nexport function rememberStream(stream: MediaStream | null | undefined): string {\n if (!stream) {\n return '';\n }\n\n streams.set(stream.id, stream);\n\n return stream.id;\n}\n\nexport function getStream(streamURL?: string): MediaStream | null {\n if (!streamURL) {\n return null;\n }\n\n return streams.get(streamURL) ?? null;\n}\n\nexport function patchMediaStream() {\n if (typeof MediaStream === 'undefined') {\n return;\n }\n\n const proto = MediaStream.prototype as MediaStream & { toURL?: () => string };\n\n if (typeof proto.toURL !== 'function') {\n proto.toURL = function toURL() {\n return rememberStream(this);\n };\n }\n}\n"],"mappings":"AAAA,MAAMA,OAAO,GAAG,IAAIC,GAAG,CAAsB,CAAC;AAE9C,OAAO,SAASC,cAAcA,CAACC,MAAsC,EAAU;EAC3E,IAAI,CAACA,MAAM,EAAE;IACT,OAAO,EAAE;EACb;EAEAH,OAAO,CAACI,GAAG,CAACD,MAAM,CAACE,EAAE,EAAEF,MAAM,CAAC;EAE9B,OAAOA,MAAM,CAACE,EAAE;AACpB;AAEA,OAAO,SAASC,SAASA,CAACC,SAAkB,EAAsB;EAAA,IAAAC,YAAA;EAC9D,IAAI,CAACD,SAAS,EAAE;IACZ,OAAO,IAAI;EACf;EAEA,QAAAC,YAAA,GAAOR,OAAO,CAACS,GAAG,CAACF,SAAS,CAAC,cAAAC,YAAA,cAAAA,YAAA,GAAI,IAAI;AACzC;AAEA,OAAO,SAASE,gBAAgBA,CAAA,EAAG;EAC/B,IAAI,OAAOC,WAAW,KAAK,WAAW,EAAE;IACpC;EACJ;EAEA,MAAMC,KAAK,GAAGD,WAAW,CAACE,SAAmD;EAE7E,IAAI,OAAOD,KAAK,CAACE,KAAK,KAAK,UAAU,EAAE;IACnCF,KAAK,CAACE,KAAK,GAAG,SAASA,KAAKA,CAAA,EAAG;MAC3B,OAAOZ,cAAc,CAAC,IAAI,CAAC;IAC/B,CAAC;EACL;AACJ"}
@@ -1,19 +1,19 @@
1
- export declare type MediaTrackConstraints = {
2
- width?: ConstrainNumber;
3
- height?: ConstrainNumber;
4
- frameRate?: ConstrainNumber;
5
- facingMode?: ConstrainString;
6
- deviceId?: ConstrainString;
7
- groupId?: ConstrainString;
8
- };
9
- declare type ConstrainNumber = number | {
10
- exact?: number;
11
- ideal?: number;
12
- max?: number;
13
- min?: number;
14
- };
15
- declare type ConstrainString = string | {
16
- exact?: string;
17
- ideal?: string;
18
- };
19
- export {};
1
+ export declare type MediaTrackConstraints = {
2
+ width?: ConstrainNumber;
3
+ height?: ConstrainNumber;
4
+ frameRate?: ConstrainNumber;
5
+ facingMode?: ConstrainString;
6
+ deviceId?: ConstrainString;
7
+ groupId?: ConstrainString;
8
+ };
9
+ declare type ConstrainNumber = number | {
10
+ exact?: number;
11
+ ideal?: number;
12
+ max?: number;
13
+ min?: number;
14
+ };
15
+ declare type ConstrainString = string | {
16
+ exact?: string;
17
+ ideal?: string;
18
+ };
19
+ export {};
@@ -1,6 +1,6 @@
1
- export declare function setupNativeEvents(): void;
2
- declare type EventHandler = (event: unknown) => void;
3
- declare type Listener = unknown;
4
- export declare function addListener(listener: Listener, eventName: string, eventHandler: EventHandler): void;
5
- export declare function removeListener(listener: Listener): void;
6
- export {};
1
+ export declare function setupNativeEvents(): void;
2
+ declare type EventHandler = (event: unknown) => void;
3
+ declare type Listener = unknown;
4
+ export declare function addListener(listener: Listener, eventName: string, eventHandler: EventHandler): void;
5
+ export declare function removeListener(listener: Listener): void;
6
+ export {};