mediasfu-shared 1.0.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/HEADLESS_GUIDE.md +156 -0
  2. package/README.md +130 -62
  3. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +23 -0
  4. package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -0
  5. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts +22 -0
  6. package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts.map +1 -0
  7. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +85 -0
  8. package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -0
  9. package/dist/consumers/addVideosGrid.d.ts +10 -0
  10. package/dist/consumers/addVideosGrid.d.ts.map +1 -0
  11. package/dist/consumers/autoAdjust.d.ts +41 -0
  12. package/dist/consumers/autoAdjust.d.ts.map +1 -0
  13. package/dist/consumers/calculateRowsAndColumns.d.ts +24 -0
  14. package/dist/consumers/calculateRowsAndColumns.d.ts.map +1 -0
  15. package/dist/consumers/changeVids.d.ts +252 -0
  16. package/dist/consumers/changeVids.d.ts.map +1 -0
  17. package/dist/consumers/checkGrid.d.ts +42 -0
  18. package/dist/consumers/checkGrid.d.ts.map +1 -0
  19. package/dist/consumers/checkPermission.d.ts +42 -0
  20. package/dist/consumers/checkPermission.d.ts.map +1 -0
  21. package/dist/consumers/checkScreenShare.d.ts +59 -0
  22. package/dist/consumers/checkScreenShare.d.ts.map +1 -0
  23. package/dist/consumers/closeAndResize.d.ts +157 -0
  24. package/dist/consumers/closeAndResize.d.ts.map +1 -0
  25. package/dist/consumers/compareActiveNames.d.ts +50 -0
  26. package/dist/consumers/compareActiveNames.d.ts.map +1 -0
  27. package/dist/consumers/compareScreenStates.d.ts +55 -0
  28. package/dist/consumers/compareScreenStates.d.ts.map +1 -0
  29. package/dist/consumers/connectIps.d.ts +66 -0
  30. package/dist/consumers/connectIps.d.ts.map +1 -0
  31. package/dist/consumers/connectLocalIps.d.ts +52 -0
  32. package/dist/consumers/connectLocalIps.d.ts.map +1 -0
  33. package/dist/consumers/connectRecvTransport.d.ts +64 -0
  34. package/dist/consumers/connectRecvTransport.d.ts.map +1 -0
  35. package/dist/consumers/connectSendTransport.d.ts +75 -0
  36. package/dist/consumers/connectSendTransport.d.ts.map +1 -0
  37. package/dist/consumers/connectSendTransportAudio.d.ts +62 -0
  38. package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -0
  39. package/dist/consumers/connectSendTransportScreen.d.ts +72 -0
  40. package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -0
  41. package/dist/consumers/connectSendTransportVideo.d.ts +75 -0
  42. package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -0
  43. package/dist/consumers/consumerResume.d.ts +16 -0
  44. package/dist/consumers/consumerResume.d.ts.map +1 -0
  45. package/dist/consumers/controlMedia.d.ts +61 -0
  46. package/dist/consumers/controlMedia.d.ts.map +1 -0
  47. package/dist/consumers/createSendTransport.d.ts +80 -0
  48. package/dist/consumers/createSendTransport.d.ts.map +1 -0
  49. package/dist/consumers/disconnectSendTransportAudio.d.ts +79 -0
  50. package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -0
  51. package/dist/consumers/disconnectSendTransportScreen.d.ts +61 -0
  52. package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -0
  53. package/dist/consumers/disconnectSendTransportVideo.d.ts +72 -0
  54. package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -0
  55. package/dist/consumers/dispStreams.d.ts +189 -0
  56. package/dist/consumers/dispStreams.d.ts.map +1 -0
  57. package/dist/consumers/frameworkConsumerContract.d.ts +2 -0
  58. package/dist/consumers/frameworkConsumerContract.d.ts.map +1 -0
  59. package/dist/consumers/generatePageContent.d.ts +68 -0
  60. package/dist/consumers/generatePageContent.d.ts.map +1 -0
  61. package/dist/consumers/getEstimate.d.ts +62 -0
  62. package/dist/consumers/getEstimate.d.ts.map +1 -0
  63. package/dist/consumers/getPipedProducersAlt.d.ts +62 -0
  64. package/dist/consumers/getPipedProducersAlt.d.ts.map +1 -0
  65. package/dist/consumers/getProducersPiped.d.ts +49 -0
  66. package/dist/consumers/getProducersPiped.d.ts.map +1 -0
  67. package/dist/consumers/getVideos.d.ts +49 -0
  68. package/dist/consumers/getVideos.d.ts.map +1 -0
  69. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +19 -0
  70. package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -0
  71. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts +138 -0
  72. package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts.map +1 -0
  73. package/dist/consumers/index.cjs +80 -0
  74. package/dist/consumers/index.cjs.map +1 -0
  75. package/dist/consumers/index.d.ts +62 -0
  76. package/dist/consumers/index.d.ts.map +1 -0
  77. package/dist/consumers/index.js +80 -0
  78. package/dist/consumers/index.js.map +1 -0
  79. package/dist/consumers/mixStreams.d.ts +37 -0
  80. package/dist/consumers/mixStreams.d.ts.map +1 -0
  81. package/dist/consumers/onScreenChanges.d.ts +62 -0
  82. package/dist/consumers/onScreenChanges.d.ts.map +1 -0
  83. package/dist/consumers/prepopulateUserMedia.d.ts +10 -0
  84. package/dist/consumers/prepopulateUserMedia.d.ts.map +1 -0
  85. package/dist/consumers/processConsumerTransports.d.ts +73 -0
  86. package/dist/consumers/processConsumerTransports.d.ts.map +1 -0
  87. package/dist/consumers/processConsumerTransportsAudio.d.ts +57 -0
  88. package/dist/consumers/processConsumerTransportsAudio.d.ts.map +1 -0
  89. package/dist/consumers/rePort.d.ts +63 -0
  90. package/dist/consumers/rePort.d.ts.map +1 -0
  91. package/dist/consumers/reUpdateInter.d.ts +142 -0
  92. package/dist/consumers/reUpdateInter.d.ts.map +1 -0
  93. package/dist/consumers/readjust.d.ts +68 -0
  94. package/dist/consumers/readjust.d.ts.map +1 -0
  95. package/dist/consumers/receiveAllPipedTransports.d.ts +44 -0
  96. package/dist/consumers/receiveAllPipedTransports.d.ts.map +1 -0
  97. package/dist/consumers/receiveRoomMessages.d.ts +31 -0
  98. package/dist/consumers/receiveRoomMessages.d.ts.map +1 -0
  99. package/dist/consumers/reorderStreams.d.ts +98 -0
  100. package/dist/consumers/reorderStreams.d.ts.map +1 -0
  101. package/dist/consumers/requestScreenShare.d.ts +47 -0
  102. package/dist/consumers/requestScreenShare.d.ts.map +1 -0
  103. package/dist/consumers/resumePauseAudioStreams.d.ts +85 -0
  104. package/dist/consumers/resumePauseAudioStreams.d.ts.map +1 -0
  105. package/dist/consumers/resumePauseStreams.d.ts +68 -0
  106. package/dist/consumers/resumePauseStreams.d.ts.map +1 -0
  107. package/dist/consumers/resumeSendTransportAudio.d.ts +65 -0
  108. package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -0
  109. package/dist/consumers/signalNewConsumerTransport.d.ts +59 -0
  110. package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -0
  111. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +76 -0
  112. package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -0
  113. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +119 -0
  114. package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -0
  115. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts +53 -0
  116. package/dist/consumers/socketReceiveMethods/producerClosed.d.ts.map +1 -0
  117. package/dist/consumers/startShareScreen.d.ts +58 -0
  118. package/dist/consumers/startShareScreen.d.ts.map +1 -0
  119. package/dist/consumers/stopShareScreen.d.ts +127 -0
  120. package/dist/consumers/stopShareScreen.d.ts.map +1 -0
  121. package/dist/consumers/streamSuccessAudio.d.ts +149 -0
  122. package/dist/consumers/streamSuccessAudio.d.ts.map +1 -0
  123. package/dist/consumers/streamSuccessAudioSwitch.d.ts +131 -0
  124. package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -0
  125. package/dist/consumers/streamSuccessScreen.d.ts +109 -0
  126. package/dist/consumers/streamSuccessScreen.d.ts.map +1 -0
  127. package/dist/consumers/streamSuccessVideo.d.ts +160 -0
  128. package/dist/consumers/streamSuccessVideo.d.ts.map +1 -0
  129. package/dist/consumers/switchUserAudio.d.ts +56 -0
  130. package/dist/consumers/switchUserAudio.d.ts.map +1 -0
  131. package/dist/consumers/switchUserVideo.d.ts +77 -0
  132. package/dist/consumers/switchUserVideo.d.ts.map +1 -0
  133. package/dist/consumers/switchUserVideoAlt.d.ts +69 -0
  134. package/dist/consumers/switchUserVideoAlt.d.ts.map +1 -0
  135. package/dist/consumers/translationConsumerSwitch.d.ts +67 -0
  136. package/dist/consumers/translationConsumerSwitch.d.ts.map +1 -0
  137. package/dist/consumers/trigger.d.ts +71 -0
  138. package/dist/consumers/trigger.d.ts.map +1 -0
  139. package/dist/consumers/updateMiniCardsGrid.d.ts +65 -0
  140. package/dist/consumers/updateMiniCardsGrid.d.ts.map +1 -0
  141. package/dist/consumers/updateParticipantAudioDecibels.d.ts +31 -0
  142. package/dist/consumers/updateParticipantAudioDecibels.d.ts.map +1 -0
  143. package/dist/getParticipantMedia-B0JS6d2b.js +3555 -0
  144. package/dist/getParticipantMedia-B0JS6d2b.js.map +1 -0
  145. package/dist/getParticipantMedia-CdcYqcbD.cjs +3554 -0
  146. package/dist/getParticipantMedia-CdcYqcbD.cjs.map +1 -0
  147. package/dist/index.cjs +2727 -13252
  148. package/dist/index.cjs.map +1 -1
  149. package/dist/index.d.ts +192 -11233
  150. package/dist/index.d.ts.map +1 -0
  151. package/dist/index.js +2636 -13143
  152. package/dist/index.js.map +1 -1
  153. package/dist/index.native.cjs +352 -0
  154. package/dist/index.native.cjs.map +1 -0
  155. package/dist/index.native.d.ts +204 -0
  156. package/dist/index.native.d.ts.map +1 -0
  157. package/dist/index.native.js +352 -0
  158. package/dist/index.native.js.map +1 -0
  159. package/dist/joinLocalRoom-BdM1msQt.cjs +673 -0
  160. package/dist/joinLocalRoom-BdM1msQt.cjs.map +1 -0
  161. package/dist/joinLocalRoom-CvteNe4R.js +657 -0
  162. package/dist/joinLocalRoom-CvteNe4R.js.map +1 -0
  163. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs +1222 -0
  164. package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +1 -0
  165. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js +1223 -0
  166. package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js.map +1 -0
  167. package/dist/methods/background/launchBackground.d.ts +10 -0
  168. package/dist/methods/background/launchBackground.d.ts.map +1 -0
  169. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts +67 -0
  170. package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts.map +1 -0
  171. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts +42 -0
  172. package/dist/methods/breakoutRooms/handleStartBreakout.d.ts.map +1 -0
  173. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts +33 -0
  174. package/dist/methods/breakoutRooms/handleStopBreakout.d.ts.map +1 -0
  175. package/dist/methods/breakoutRooms/index.d.ts +5 -0
  176. package/dist/methods/breakoutRooms/index.d.ts.map +1 -0
  177. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts +25 -0
  178. package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts.map +1 -0
  179. package/dist/methods/coHost/launchCoHost.d.ts +25 -0
  180. package/dist/methods/coHost/launchCoHost.d.ts.map +1 -0
  181. package/dist/methods/coHostMethods/index.d.ts +3 -0
  182. package/dist/methods/coHostMethods/index.d.ts.map +1 -0
  183. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts +49 -0
  184. package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts.map +1 -0
  185. package/dist/methods/displaySettings/index.d.ts +2 -0
  186. package/dist/methods/displaySettings/index.d.ts.map +1 -0
  187. package/dist/methods/displaySettings/launchDisplaySettings.d.ts +25 -0
  188. package/dist/methods/displaySettings/launchDisplaySettings.d.ts.map +1 -0
  189. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts +106 -0
  190. package/dist/methods/displaySettings/modifyDisplaySettings.d.ts.map +1 -0
  191. package/dist/methods/exit/confirmExit.d.ts +38 -0
  192. package/dist/methods/exit/confirmExit.d.ts.map +1 -0
  193. package/dist/methods/exit/index.d.ts +3 -0
  194. package/dist/methods/exit/index.d.ts.map +1 -0
  195. package/dist/methods/exit/launchConfirmExit.d.ts +23 -0
  196. package/dist/methods/exit/launchConfirmExit.d.ts.map +1 -0
  197. package/dist/methods/index.cjs +3975 -0
  198. package/dist/methods/index.cjs.map +1 -0
  199. package/dist/methods/index.d.ts +66 -0
  200. package/dist/methods/index.d.ts.map +1 -0
  201. package/dist/methods/index.js +3976 -0
  202. package/dist/methods/index.js.map +1 -0
  203. package/dist/methods/mediaSettings/launchMediaSettings.d.ts +38 -0
  204. package/dist/methods/mediaSettings/launchMediaSettings.d.ts.map +1 -0
  205. package/dist/methods/menu/launchMenuModal.d.ts +22 -0
  206. package/dist/methods/menu/launchMenuModal.d.ts.map +1 -0
  207. package/dist/methods/message/index.d.ts +2 -0
  208. package/dist/methods/message/index.d.ts.map +1 -0
  209. package/dist/methods/message/launchMessages.d.ts +24 -0
  210. package/dist/methods/message/launchMessages.d.ts.map +1 -0
  211. package/dist/methods/message/sendMessage.d.ts +63 -0
  212. package/dist/methods/message/sendMessage.d.ts.map +1 -0
  213. package/dist/methods/panelists/focusPanelists.d.ts +24 -0
  214. package/dist/methods/panelists/focusPanelists.d.ts.map +1 -0
  215. package/dist/methods/panelists/index.d.ts +4 -0
  216. package/dist/methods/panelists/index.d.ts.map +1 -0
  217. package/dist/methods/panelists/launchPanelists.d.ts +7 -0
  218. package/dist/methods/panelists/launchPanelists.d.ts.map +1 -0
  219. package/dist/methods/panelists/updatePanelists.d.ts +35 -0
  220. package/dist/methods/panelists/updatePanelists.d.ts.map +1 -0
  221. package/dist/methods/participants/index.d.ts +4 -0
  222. package/dist/methods/participants/index.d.ts.map +1 -0
  223. package/dist/methods/participants/launchParticipants.d.ts +22 -0
  224. package/dist/methods/participants/launchParticipants.d.ts.map +1 -0
  225. package/dist/methods/participants/messageParticipants.d.ts +43 -0
  226. package/dist/methods/participants/messageParticipants.d.ts.map +1 -0
  227. package/dist/methods/participants/muteParticipants.d.ts +41 -0
  228. package/dist/methods/participants/muteParticipants.d.ts.map +1 -0
  229. package/dist/methods/participants/removeParticipants.d.ts +47 -0
  230. package/dist/methods/participants/removeParticipants.d.ts.map +1 -0
  231. package/dist/methods/permissions/index.d.ts +4 -0
  232. package/dist/methods/permissions/index.d.ts.map +1 -0
  233. package/dist/methods/permissions/launchPermissions.d.ts +7 -0
  234. package/dist/methods/permissions/launchPermissions.d.ts.map +1 -0
  235. package/dist/methods/permissions/updateParticipantPermission.d.ts +25 -0
  236. package/dist/methods/permissions/updateParticipantPermission.d.ts.map +1 -0
  237. package/dist/methods/permissions/updatePermissionConfig.d.ts +22 -0
  238. package/dist/methods/permissions/updatePermissionConfig.d.ts.map +1 -0
  239. package/dist/methods/polls/handleCreatePoll.d.ts +39 -0
  240. package/dist/methods/polls/handleCreatePoll.d.ts.map +1 -0
  241. package/dist/methods/polls/handleEndPoll.d.ts +34 -0
  242. package/dist/methods/polls/handleEndPoll.d.ts.map +1 -0
  243. package/dist/methods/polls/handleVotePoll.d.ts +39 -0
  244. package/dist/methods/polls/handleVotePoll.d.ts.map +1 -0
  245. package/dist/methods/polls/index.d.ts +4 -0
  246. package/dist/methods/polls/index.d.ts.map +1 -0
  247. package/dist/methods/polls/launchPoll.d.ts +22 -0
  248. package/dist/methods/polls/launchPoll.d.ts.map +1 -0
  249. package/dist/methods/polls/pollUpdated.d.ts +38 -0
  250. package/dist/methods/polls/pollUpdated.d.ts.map +1 -0
  251. package/dist/methods/prejoin/handleCreateRoom.d.ts +77 -0
  252. package/dist/methods/prejoin/handleCreateRoom.d.ts.map +1 -0
  253. package/dist/methods/prejoin/handleJoinRoom.d.ts +56 -0
  254. package/dist/methods/prejoin/handleJoinRoom.d.ts.map +1 -0
  255. package/dist/methods/prejoin/index.d.ts +5 -0
  256. package/dist/methods/prejoin/index.d.ts.map +1 -0
  257. package/dist/methods/recording/checkPauseState.d.ts +34 -0
  258. package/dist/methods/recording/checkPauseState.d.ts.map +1 -0
  259. package/dist/methods/recording/checkResumeState.d.ts +30 -0
  260. package/dist/methods/recording/checkResumeState.d.ts.map +1 -0
  261. package/dist/methods/recording/confirmRecording.d.ts +46 -0
  262. package/dist/methods/recording/confirmRecording.d.ts.map +1 -0
  263. package/dist/methods/recording/launchRecording.d.ts +56 -0
  264. package/dist/methods/recording/launchRecording.d.ts.map +1 -0
  265. package/dist/methods/recording/recordPauseTimer.d.ts +31 -0
  266. package/dist/methods/recording/recordPauseTimer.d.ts.map +1 -0
  267. package/dist/methods/recording/recordResumeTimer.d.ts +29 -0
  268. package/dist/methods/recording/recordResumeTimer.d.ts.map +1 -0
  269. package/dist/methods/recording/recordStartTimer.d.ts +45 -0
  270. package/dist/methods/recording/recordStartTimer.d.ts.map +1 -0
  271. package/dist/methods/recording/recordUpdateTimer.d.ts +29 -0
  272. package/dist/methods/recording/recordUpdateTimer.d.ts.map +1 -0
  273. package/dist/methods/recording/startRecording.d.ts +122 -0
  274. package/dist/methods/recording/startRecording.d.ts.map +1 -0
  275. package/dist/methods/recording/stopRecording.d.ts +36 -0
  276. package/dist/methods/recording/stopRecording.d.ts.map +1 -0
  277. package/dist/methods/recording/timeLeftRecording.d.ts +13 -0
  278. package/dist/methods/recording/timeLeftRecording.d.ts.map +1 -0
  279. package/dist/methods/recording/updateRecording.d.ts +49 -0
  280. package/dist/methods/recording/updateRecording.d.ts.map +1 -0
  281. package/dist/methods/requests/hostRequestResponse.d.ts +33 -0
  282. package/dist/methods/requests/hostRequestResponse.d.ts.map +1 -0
  283. package/dist/methods/requests/index.d.ts +2 -0
  284. package/dist/methods/requests/index.d.ts.map +1 -0
  285. package/dist/methods/requests/launchRequests.d.ts +22 -0
  286. package/dist/methods/requests/launchRequests.d.ts.map +1 -0
  287. package/dist/methods/requests/respondToRequests.d.ts +38 -0
  288. package/dist/methods/requests/respondToRequests.d.ts.map +1 -0
  289. package/dist/methods/settings/index.d.ts +3 -0
  290. package/dist/methods/settings/index.d.ts.map +1 -0
  291. package/dist/methods/settings/launchSettings.d.ts +22 -0
  292. package/dist/methods/settings/launchSettings.d.ts.map +1 -0
  293. package/dist/methods/settings/modifySettings.d.ts +45 -0
  294. package/dist/methods/settings/modifySettings.d.ts.map +1 -0
  295. package/dist/methods/socketReceive/allMembers.d.ts +117 -0
  296. package/dist/methods/socketReceive/allMembers.d.ts.map +1 -0
  297. package/dist/methods/socketReceive/allMembersRest.d.ts +122 -0
  298. package/dist/methods/socketReceive/allMembersRest.d.ts.map +1 -0
  299. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts +24 -0
  300. package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts.map +1 -0
  301. package/dist/methods/socketReceive/banParticipant.d.ts +44 -0
  302. package/dist/methods/socketReceive/banParticipant.d.ts.map +1 -0
  303. package/dist/methods/socketReceive/controlMediaHost.d.ts +62 -0
  304. package/dist/methods/socketReceive/controlMediaHost.d.ts.map +1 -0
  305. package/dist/methods/socketReceive/disconnect.d.ts +24 -0
  306. package/dist/methods/socketReceive/disconnect.d.ts.map +1 -0
  307. package/dist/methods/socketReceive/disconnectUserSelf.d.ts +29 -0
  308. package/dist/methods/socketReceive/disconnectUserSelf.d.ts.map +1 -0
  309. package/dist/methods/socketReceive/getDomains.d.ts +48 -0
  310. package/dist/methods/socketReceive/getDomains.d.ts.map +1 -0
  311. package/dist/methods/socketReceive/meetingEnded.d.ts +27 -0
  312. package/dist/methods/socketReceive/meetingEnded.d.ts.map +1 -0
  313. package/dist/methods/socketReceive/meetingStillThere.d.ts +19 -0
  314. package/dist/methods/socketReceive/meetingStillThere.d.ts.map +1 -0
  315. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts +66 -0
  316. package/dist/methods/socketReceive/panelistReceiveMethods.d.ts.map +1 -0
  317. package/dist/methods/socketReceive/participantRequested.d.ts +28 -0
  318. package/dist/methods/socketReceive/participantRequested.d.ts.map +1 -0
  319. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts +23 -0
  320. package/dist/methods/socketReceive/permissionReceiveMethods.d.ts.map +1 -0
  321. package/dist/methods/socketReceive/personJoined.d.ts +24 -0
  322. package/dist/methods/socketReceive/personJoined.d.ts.map +1 -0
  323. package/dist/methods/socketReceive/producerMediaClosed.d.ts +66 -0
  324. package/dist/methods/socketReceive/producerMediaClosed.d.ts.map +1 -0
  325. package/dist/methods/socketReceive/producerMediaPaused.d.ts +70 -0
  326. package/dist/methods/socketReceive/producerMediaPaused.d.ts.map +1 -0
  327. package/dist/methods/socketReceive/producerMediaResumed.d.ts +53 -0
  328. package/dist/methods/socketReceive/producerMediaResumed.d.ts.map +1 -0
  329. package/dist/methods/socketReceive/reInitiateRecording.d.ts +33 -0
  330. package/dist/methods/socketReceive/reInitiateRecording.d.ts.map +1 -0
  331. package/dist/methods/socketReceive/receiveMessage.d.ts +36 -0
  332. package/dist/methods/socketReceive/receiveMessage.d.ts.map +1 -0
  333. package/dist/methods/socketReceive/recordingNotice.d.ts +98 -0
  334. package/dist/methods/socketReceive/recordingNotice.d.ts.map +1 -0
  335. package/dist/methods/socketReceive/roomRecordParams.d.ts +60 -0
  336. package/dist/methods/socketReceive/roomRecordParams.d.ts.map +1 -0
  337. package/dist/methods/socketReceive/screenProducerId.d.ts +36 -0
  338. package/dist/methods/socketReceive/screenProducerId.d.ts.map +1 -0
  339. package/dist/methods/socketReceive/startRecords.d.ts +31 -0
  340. package/dist/methods/socketReceive/startRecords.d.ts.map +1 -0
  341. package/dist/methods/socketReceive/stoppedRecording.d.ts +24 -0
  342. package/dist/methods/socketReceive/stoppedRecording.d.ts.map +1 -0
  343. package/dist/methods/socketReceive/translationReceiveMethods.d.ts +227 -0
  344. package/dist/methods/socketReceive/translationReceiveMethods.d.ts.map +1 -0
  345. package/dist/methods/socketReceive/updateConsumingDomains.d.ts +60 -0
  346. package/dist/methods/socketReceive/updateConsumingDomains.d.ts.map +1 -0
  347. package/dist/methods/socketReceive/updateMediaSettings.d.ts +28 -0
  348. package/dist/methods/socketReceive/updateMediaSettings.d.ts.map +1 -0
  349. package/dist/methods/socketReceive/updatedCoHost.d.ts +38 -0
  350. package/dist/methods/socketReceive/updatedCoHost.d.ts.map +1 -0
  351. package/dist/methods/socketReceive/userWaiting.d.ts +30 -0
  352. package/dist/methods/socketReceive/userWaiting.d.ts.map +1 -0
  353. package/dist/methods/stream/clickAudio.d.ts +71 -0
  354. package/dist/methods/stream/clickAudio.d.ts.map +1 -0
  355. package/dist/methods/stream/clickChat.d.ts +11 -0
  356. package/dist/methods/stream/clickChat.d.ts.map +1 -0
  357. package/dist/methods/stream/clickScreenShare.d.ts +45 -0
  358. package/dist/methods/stream/clickScreenShare.d.ts.map +1 -0
  359. package/dist/methods/stream/clickVideo.d.ts +101 -0
  360. package/dist/methods/stream/clickVideo.d.ts.map +1 -0
  361. package/dist/methods/stream/index.d.ts +5 -0
  362. package/dist/methods/stream/index.d.ts.map +1 -0
  363. package/dist/methods/stream/switchAudio.d.ts +40 -0
  364. package/dist/methods/stream/switchAudio.d.ts.map +1 -0
  365. package/dist/methods/stream/switchVideo.d.ts +56 -0
  366. package/dist/methods/stream/switchVideo.d.ts.map +1 -0
  367. package/dist/methods/stream/switchVideoAlt.d.ts +55 -0
  368. package/dist/methods/stream/switchVideoAlt.d.ts.map +1 -0
  369. package/dist/methods/utils/SoundPlayer.d.ts +19 -0
  370. package/dist/methods/utils/SoundPlayer.d.ts.map +1 -0
  371. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts +30 -0
  372. package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts.map +1 -0
  373. package/dist/methods/utils/createResponseJoinRoom.d.ts +24 -0
  374. package/dist/methods/utils/createResponseJoinRoom.d.ts.map +1 -0
  375. package/dist/methods/utils/createRoomOnMediaSFU.d.ts +28 -0
  376. package/dist/methods/utils/createRoomOnMediaSFU.d.ts.map +1 -0
  377. package/dist/methods/utils/formatNumber.d.ts +21 -0
  378. package/dist/methods/utils/formatNumber.d.ts.map +1 -0
  379. package/dist/methods/utils/generateRandomMessages.d.ts +11 -0
  380. package/dist/methods/utils/generateRandomMessages.d.ts.map +1 -0
  381. package/dist/methods/utils/generateRandomParticipants.d.ts +10 -0
  382. package/dist/methods/utils/generateRandomParticipants.d.ts.map +1 -0
  383. package/dist/methods/utils/generateRandomPolls.d.ts +7 -0
  384. package/dist/methods/utils/generateRandomPolls.d.ts.map +1 -0
  385. package/dist/methods/utils/generateRandomRequestList.d.ts +10 -0
  386. package/dist/methods/utils/generateRandomRequestList.d.ts.map +1 -0
  387. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts +4 -0
  388. package/dist/methods/utils/generateRandomWaitingRoomList.d.ts.map +1 -0
  389. package/dist/methods/utils/getModalPosition.d.ts +7 -0
  390. package/dist/methods/utils/getModalPosition.d.ts.map +1 -0
  391. package/dist/methods/utils/getOverlayPosition.d.ts +22 -0
  392. package/dist/methods/utils/getOverlayPosition.d.ts.map +1 -0
  393. package/dist/methods/utils/getParticipantMedia.d.ts +55 -0
  394. package/dist/methods/utils/getParticipantMedia.d.ts.map +1 -0
  395. package/dist/methods/utils/headless/getCurrentParams.d.ts +27 -0
  396. package/dist/methods/utils/headless/getCurrentParams.d.ts.map +1 -0
  397. package/dist/methods/utils/headless/getMediaStreams.d.ts +96 -0
  398. package/dist/methods/utils/headless/getMediaStreams.d.ts.map +1 -0
  399. package/dist/methods/utils/headless/getRoomReadiness.d.ts +25 -0
  400. package/dist/methods/utils/headless/getRoomReadiness.d.ts.map +1 -0
  401. package/dist/methods/utils/headless/headlessTypes.d.ts +89 -0
  402. package/dist/methods/utils/headless/headlessTypes.d.ts.map +1 -0
  403. package/dist/methods/utils/headless/index.d.ts +29 -0
  404. package/dist/methods/utils/headless/index.d.ts.map +1 -0
  405. package/dist/methods/utils/headless/mediaPermissions.d.ts +53 -0
  406. package/dist/methods/utils/headless/mediaPermissions.d.ts.map +1 -0
  407. package/dist/methods/utils/headless/mediaProduction.d.ts +177 -0
  408. package/dist/methods/utils/headless/mediaProduction.d.ts.map +1 -0
  409. package/dist/methods/utils/headless/moderation.d.ts +157 -0
  410. package/dist/methods/utils/headless/moderation.d.ts.map +1 -0
  411. package/dist/methods/utils/headless/participantState.d.ts +128 -0
  412. package/dist/methods/utils/headless/participantState.d.ts.map +1 -0
  413. package/dist/methods/utils/headless/playback.d.ts +106 -0
  414. package/dist/methods/utils/headless/playback.d.ts.map +1 -0
  415. package/dist/methods/utils/headless/roomActions.d.ts +88 -0
  416. package/dist/methods/utils/headless/roomActions.d.ts.map +1 -0
  417. package/dist/methods/utils/headless/sessionControls.d.ts +159 -0
  418. package/dist/methods/utils/headless/sessionControls.d.ts.map +1 -0
  419. package/dist/methods/utils/headless/sessionExtras.d.ts +291 -0
  420. package/dist/methods/utils/headless/sessionExtras.d.ts.map +1 -0
  421. package/dist/methods/utils/headless/sessionFeatures.d.ts +159 -0
  422. package/dist/methods/utils/headless/sessionFeatures.d.ts.map +1 -0
  423. package/dist/methods/utils/headless/viewerSession.d.ts +125 -0
  424. package/dist/methods/utils/headless/viewerSession.d.ts.map +1 -0
  425. package/dist/methods/utils/headless/virtualBackground.d.ts +72 -0
  426. package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -0
  427. package/dist/methods/utils/initialValuesState.d.ts +388 -0
  428. package/dist/methods/utils/initialValuesState.d.ts.map +1 -0
  429. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts +56 -0
  430. package/dist/methods/utils/joinRoomOnMediaSFU.d.ts.map +1 -0
  431. package/dist/methods/utils/liveSubtitle.d.ts +36 -0
  432. package/dist/methods/utils/liveSubtitle.d.ts.map +1 -0
  433. package/dist/methods/utils/meetingTimeRemaining.d.ts +15 -0
  434. package/dist/methods/utils/meetingTimeRemaining.d.ts.map +1 -0
  435. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts +35 -0
  436. package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts.map +1 -0
  437. package/dist/methods/utils/producer/aParams.d.ts +3 -0
  438. package/dist/methods/utils/producer/aParams.d.ts.map +1 -0
  439. package/dist/methods/utils/producer/hParams.d.ts +3 -0
  440. package/dist/methods/utils/producer/hParams.d.ts.map +1 -0
  441. package/dist/methods/utils/producer/screenParams.d.ts +3 -0
  442. package/dist/methods/utils/producer/screenParams.d.ts.map +1 -0
  443. package/dist/methods/utils/producer/vParams.d.ts +3 -0
  444. package/dist/methods/utils/producer/vParams.d.ts.map +1 -0
  445. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts +145 -0
  446. package/dist/methods/utils/producer/videoCaptureConstraints.d.ts.map +1 -0
  447. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts +4 -0
  448. package/dist/methods/utils/resolveMediaSFURoomApi.d.ts.map +1 -0
  449. package/dist/methods/utils/sleep.d.ts +21 -0
  450. package/dist/methods/utils/sleep.d.ts.map +1 -0
  451. package/dist/methods/utils/translationLanguages.d.ts +100 -0
  452. package/dist/methods/utils/translationLanguages.d.ts.map +1 -0
  453. package/dist/methods/utils/validateAlphanumeric.d.ts +21 -0
  454. package/dist/methods/utils/validateAlphanumeric.d.ts.map +1 -0
  455. package/dist/methods/utils/virtualBackgroundCompositor.d.ts +21 -0
  456. package/dist/methods/utils/virtualBackgroundCompositor.d.ts.map +1 -0
  457. package/dist/methods/utils/webrtc.d.ts +18 -0
  458. package/dist/methods/utils/webrtc.d.ts.map +1 -0
  459. package/dist/methods/waiting/index.d.ts +2 -0
  460. package/dist/methods/waiting/index.d.ts.map +1 -0
  461. package/dist/methods/waiting/launchWaiting.d.ts +23 -0
  462. package/dist/methods/waiting/launchWaiting.d.ts.map +1 -0
  463. package/dist/methods/waiting/respondToWaiting.d.ts +40 -0
  464. package/dist/methods/waiting/respondToWaiting.d.ts.map +1 -0
  465. package/dist/methods/welcome/handleWelcomeRequest.d.ts +47 -0
  466. package/dist/methods/welcome/handleWelcomeRequest.d.ts.map +1 -0
  467. package/dist/methods/welcome/index.d.ts +3 -0
  468. package/dist/methods/welcome/index.d.ts.map +1 -0
  469. package/dist/methods/whiteboard/captureCanvasStream.d.ts +38 -0
  470. package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -0
  471. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts +31 -0
  472. package/dist/methods/whiteboard/handleStartWhiteboard.d.ts.map +1 -0
  473. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts +25 -0
  474. package/dist/methods/whiteboard/handleStopWhiteboard.d.ts.map +1 -0
  475. package/dist/methods/whiteboard/index.d.ts +5 -0
  476. package/dist/methods/whiteboard/index.d.ts.map +1 -0
  477. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts +23 -0
  478. package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts.map +1 -0
  479. package/dist/producers/producerEmits/joinConRoom.d.ts +54 -0
  480. package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -0
  481. package/dist/producers/producerEmits/joinLocalRoom.d.ts +30 -0
  482. package/dist/producers/producerEmits/joinLocalRoom.d.ts.map +1 -0
  483. package/dist/producers/producerEmits/joinRoom.d.ts +35 -0
  484. package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -0
  485. package/dist/readme/mediasfu-platform-capabilities.webp +0 -0
  486. package/dist/sockets/SocketManager.d.ts +102 -0
  487. package/dist/sockets/SocketManager.d.ts.map +1 -0
  488. package/dist/translationConsumerSwitch-C20MfNNq.cjs +509 -0
  489. package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +1 -0
  490. package/dist/translationConsumerSwitch-zKuS5wgH.js +510 -0
  491. package/dist/translationConsumerSwitch-zKuS5wgH.js.map +1 -0
  492. package/dist/types/index.cjs +85 -0
  493. package/dist/types/index.cjs.map +1 -0
  494. package/dist/types/index.d.ts +2 -0
  495. package/dist/types/index.d.ts.map +1 -0
  496. package/dist/types/index.js +85 -0
  497. package/dist/types/index.js.map +1 -0
  498. package/dist/types/shared-base-types.d.ts +656 -0
  499. package/dist/types/shared-base-types.d.ts.map +1 -0
  500. package/dist/types/types.d.ts +124 -0
  501. package/dist/types/types.d.ts.map +1 -0
  502. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js +5392 -0
  503. package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js.map +1 -0
  504. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs +5391 -0
  505. package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs.map +1 -0
  506. package/dist/validateAlphanumeric-DKn5BsUP.cjs +15 -0
  507. package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +1 -0
  508. package/dist/validateAlphanumeric-Dk1JB80W.js +16 -0
  509. package/dist/validateAlphanumeric-Dk1JB80W.js.map +1 -0
  510. package/package.json +106 -99
  511. package/src/ProducerClient/producerClientEmits/createDeviceClient.ts +1 -2
  512. package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +1 -1
  513. package/src/consumers/connectIps.ts +1 -1
  514. package/src/consumers/connectRecvTransport.ts +1 -1
  515. package/src/consumers/connectSendTransport.ts +1 -1
  516. package/src/consumers/connectSendTransportAudio.ts +1 -1
  517. package/src/consumers/connectSendTransportScreen.ts +5 -2
  518. package/src/consumers/connectSendTransportVideo.ts +1 -1
  519. package/src/consumers/createSendTransport.ts +34 -29
  520. package/src/consumers/disconnectSendTransportAudio.ts +1 -1
  521. package/src/consumers/disconnectSendTransportScreen.ts +1 -1
  522. package/src/consumers/disconnectSendTransportVideo.ts +1 -1
  523. package/src/consumers/index.ts +61 -0
  524. package/src/consumers/resumeSendTransportAudio.ts +1 -1
  525. package/src/consumers/signalNewConsumerTransport.ts +1 -2
  526. package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +1 -1
  527. package/src/consumers/socketReceiveMethods/newPipeProducer.ts +1 -1
  528. package/src/consumers/streamSuccessAudio.ts +1 -2
  529. package/src/consumers/streamSuccessAudioSwitch.ts +1 -2
  530. package/src/consumers/streamSuccessVideo.ts +35 -6
  531. package/src/index.native.ts +24 -1
  532. package/src/index.ts +7 -0
  533. package/src/methods/exit/confirmExit.ts +11 -4
  534. package/src/methods/socketReceive/getDomains.ts +1 -1
  535. package/src/methods/utils/getParticipantMedia.ts +112 -0
  536. package/src/methods/utils/headless/getCurrentParams.ts +44 -0
  537. package/src/methods/utils/headless/getMediaStreams.ts +256 -0
  538. package/src/methods/utils/headless/getRoomReadiness.ts +49 -0
  539. package/src/methods/utils/headless/headlessTypes.ts +102 -0
  540. package/src/methods/utils/headless/index.ts +28 -0
  541. package/src/methods/utils/headless/mediaPermissions.ts +124 -0
  542. package/src/methods/utils/headless/mediaProduction.ts +505 -0
  543. package/src/methods/utils/headless/moderation.ts +455 -0
  544. package/src/methods/utils/headless/participantState.ts +254 -0
  545. package/src/methods/utils/headless/playback.ts +336 -0
  546. package/src/methods/utils/headless/roomActions.ts +230 -0
  547. package/src/methods/utils/headless/sessionControls.ts +335 -0
  548. package/src/methods/utils/headless/sessionExtras.ts +593 -0
  549. package/src/methods/utils/headless/sessionFeatures.ts +480 -0
  550. package/src/methods/utils/headless/viewerSession.ts +246 -0
  551. package/src/methods/utils/headless/virtualBackground.ts +280 -0
  552. package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
  553. package/src/methods/utils/virtualBackgroundCompositor.ts +53 -0
  554. package/src/methods/whiteboard/captureCanvasStream.ts +2 -2
  555. package/src/producers/producerEmits/joinConRoom.ts +1 -1
  556. package/src/producers/producerEmits/joinRoom.ts +1 -1
  557. package/src/types/index.ts +1 -0
  558. package/src/types/shared-base-types.ts +2 -3
@@ -1,5 +1,5 @@
1
1
  import { joinConRoom } from '../../producers/producerEmits/joinConRoom';
2
- import type { Device, RtpCapabilities } from 'mediasoup-client/lib/types';
2
+ import type { Device, RtpCapabilities } from 'mediasoup-client/types';
3
3
  import { Socket } from 'socket.io-client';
4
4
  import { ReceiveAllPipedTransportsParameters, ReceiveAllPipedTransportsType, CreateDeviceClientType } from '../../types/types';
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { Socket } from 'socket.io-client';
2
2
  import { signalNewConsumerTransport } from '../signalNewConsumerTransport';
3
3
  import { ReorderStreamsParameters, ReorderStreamsType, SignalNewConsumerTransportParameters, ConnectRecvTransportParameters, ConnectRecvTransportType, ShowAlert } from '../../types/types';
4
- import type { Device } from 'mediasoup-client/lib/types';
4
+ import type { Device } from 'mediasoup-client/types';
5
5
 
6
6
  export interface TranslationMeta {
7
7
  speakerId: string;
@@ -1,7 +1,7 @@
1
1
 
2
2
 
3
3
  import { Socket } from "socket.io-client";
4
- import type { ProducerOptions } from 'mediasoup-client/lib/types';
4
+ import type { ProducerOptions } from 'mediasoup-client/types';
5
5
  import { Participant, PrepopulateUserMediaParameters, ShowAlert, CreateSendTransportParameters, ConnectSendTransportAudioParameters, ResumeSendTransportAudioParameters, PrepopulateUserMediaType, CreateSendTransportType, ConnectSendTransportAudioType, ResumeSendTransportAudioType } from "../types/types";
6
6
  export interface StreamSuccessAudioParameters extends CreateSendTransportParameters, ConnectSendTransportAudioParameters, ResumeSendTransportAudioParameters, PrepopulateUserMediaParameters {
7
7
  socket: Socket;
@@ -294,4 +294,3 @@ export const streamSuccessAudio = async ({
294
294
  }
295
295
  }
296
296
  };
297
-
@@ -1,6 +1,6 @@
1
1
 
2
2
 
3
- import type { Producer, ProducerCodecOptions, ProducerOptions } from 'mediasoup-client/lib/types';
3
+ import type { Producer, ProducerCodecOptions, ProducerOptions } from 'mediasoup-client/types';
4
4
  import { Socket } from "socket.io-client";
5
5
  import { PrepopulateUserMediaParameters, PrepopulateUserMediaType, CreateSendTransportParameters, CreateSendTransportType, ConnectSendTransportAudioParameters, ConnectSendTransportAudioType, SleepType } from "../types/types";
6
6
 
@@ -312,4 +312,3 @@ export const streamSuccessAudioSwitch = async ({
312
312
  }
313
313
  }
314
314
  };
315
-
@@ -1,4 +1,4 @@
1
- import type { Device, Producer, ProducerOptions, RtpCodecCapability } from 'mediasoup-client/lib/types';
1
+ import type { Device, Producer, ProducerOptions, RtpCodecCapability } from 'mediasoup-client/types';
2
2
  import { Socket } from "socket.io-client";
3
3
  import { ConnectSendTransportVideoParameters, Participant, ShowAlert, CreateSendTransportParameters, ReorderStreamsParameters, SleepType, CreateSendTransportType, ConnectSendTransportVideoType, ReorderStreamsType, HParamsType, VParamsType } from "../types/types";
4
4
 
@@ -31,6 +31,7 @@ export interface StreamSuccessVideoParameters extends CreateSendTransportParamet
31
31
  appliedBackground: boolean;
32
32
  videoProducer: Producer | null;
33
33
  removeSingleVideoEncoding?: boolean;
34
+ useNativeCodecSelection?: boolean;
34
35
 
35
36
  // Update functions
36
37
  updateTransportCreatedVideo: (created: boolean) => void;
@@ -68,6 +69,30 @@ export interface StreamSuccessVideoOptions {
68
69
  // Export the type definition for the function
69
70
  export type StreamSuccessVideoType = (options: StreamSuccessVideoOptions) => Promise<void>;
70
71
 
72
+ const auxiliaryVideoCodecs = new Set([
73
+ 'video/rtx',
74
+ 'video/red',
75
+ 'video/ulpfec',
76
+ 'video/flexfec-03',
77
+ ]);
78
+
79
+ export function selectVideoProducerCodec({
80
+ device,
81
+ useNativeCodecSelection = false,
82
+ }: {
83
+ device: Pick<Device, 'rtpCapabilities'> | null;
84
+ useNativeCodecSelection?: boolean;
85
+ }): RtpCodecCapability | undefined {
86
+ if (useNativeCodecSelection) return undefined;
87
+
88
+ return device?.rtpCapabilities?.codecs?.find((codec: RtpCodecCapability) => {
89
+ const mimeType = codec.mimeType.toLowerCase();
90
+ return codec.kind === 'video' &&
91
+ mimeType !== 'video/vp9' &&
92
+ !auxiliaryVideoCodecs.has(mimeType);
93
+ });
94
+ }
95
+
71
96
 
72
97
  /**
73
98
  * Handles the successful streaming of video by managing the local stream, updating parameters, and handling video transport.
@@ -272,9 +297,14 @@ export const streamSuccessVideo = async ({
272
297
  videoParamse = { ...params };
273
298
  }
274
299
 
275
- let codec = device?.rtpCapabilities?.codecs?.filter(
276
- (codec: RtpCodecCapability) => codec.mimeType.toLowerCase() !== "video/vp9" && codec.kind === "video"
277
- ) || [];
300
+ const useNativeCodecSelection =
301
+ parameters.useNativeCodecSelection ??
302
+ parameters.removeSingleVideoEncoding ??
303
+ false;
304
+ const codec = selectVideoProducerCodec({
305
+ device,
306
+ useNativeCodecSelection,
307
+ });
278
308
 
279
309
  if (parameters.removeSingleVideoEncoding && videoParamse.encodings && videoParamse.encodings.length <= 1) {
280
310
  delete videoParamse.encodings;
@@ -283,7 +313,7 @@ export const streamSuccessVideo = async ({
283
313
  videoParams = {
284
314
  track: localStream.getVideoTracks()[0],
285
315
  ...videoParamse,
286
- codec: codec[0],
316
+ ...(codec ? { codec } : {}),
287
317
  };
288
318
  updateVideoParams(videoParams);
289
319
 
@@ -375,4 +405,3 @@ export const streamSuccessVideo = async ({
375
405
  } catch { /* Handle error */}
376
406
  }
377
407
  };
378
-
@@ -1,3 +1,4 @@
1
+ export * from './types/types';
1
2
  export * from './consumers/autoAdjust';
2
3
  export * from './consumers/calculateRowsAndColumns';
3
4
  export * from './consumers/changeVids';
@@ -217,4 +218,26 @@ export * from './producers/producerEmits/joinRoom';
217
218
 
218
219
  export * from './sockets/SocketManager';
219
220
 
220
- export * from './methods/stream/clickVideo';
221
+ export * from './methods/stream/clickVideo';
222
+
223
+ // Native headless exports deliberately omit virtualBackground because native
224
+ // runtimes do not provide the browser canvas-backed captureStream() pipeline.
225
+ export * from './methods/utils/headless/headlessTypes';
226
+ export * from './methods/utils/headless/getRoomReadiness';
227
+ export * from './methods/utils/headless/getMediaStreams';
228
+ export * from './methods/utils/headless/getCurrentParams';
229
+ export * from './methods/utils/headless/roomActions';
230
+ export * from './methods/utils/headless/participantState';
231
+ export * from './methods/utils/headless/mediaPermissions';
232
+ export * from './methods/utils/headless/moderation';
233
+ export * from './methods/utils/headless/sessionFeatures';
234
+ export * from './methods/utils/headless/sessionExtras';
235
+ export * from './methods/utils/headless/sessionControls';
236
+ // WHEP works through a compatible native WebRTC implementation. HLS requires a
237
+ // platform player and reports a clear unsupported error when none is supplied.
238
+ export * from './methods/utils/headless/playback';
239
+ export * from './methods/utils/headless/viewerSession';
240
+ export * from './methods/utils/headless/mediaProduction';
241
+ export * from './methods/utils/getParticipantMedia';
242
+
243
+ export * from './ProducerClient/producerClientEmits/createDeviceClient';
package/src/index.ts CHANGED
@@ -223,3 +223,10 @@ export * from './producers/producerEmits/joinRoom';
223
223
  export * from './sockets/SocketManager';
224
224
  // Stream method exports (clickVideo)
225
225
  export * from './methods/stream/clickVideo';
226
+
227
+ // Framework-neutral headless helper suite. The web entry includes
228
+ // virtualBackground, which requires an offscreen canvas and captureStream().
229
+ export * from './methods/utils/headless';
230
+ export * from './methods/utils/getParticipantMedia';
231
+ // Shared web compositor used by headless virtual-background processing.
232
+ export * from './methods/utils/virtualBackgroundCompositor';
@@ -6,6 +6,8 @@ export interface ConfirmExitOptions {
6
6
  member: string
7
7
  roomName: string
8
8
  ban?: boolean
9
+ /** Whether a host exit should end the room for everyone. Defaults to true. */
10
+ endRoomOnHostExit?: boolean
9
11
  }
10
12
 
11
13
  // Export the type definition for the function
@@ -20,6 +22,7 @@ export type ConfirmExitType = (options: ConfirmExitOptions) => Promise<void>
20
22
  * @param {string} options.member - The member who is exiting.
21
23
  * @param {string} options.roomName - The name of the room the member is exiting from.
22
24
  * @param {boolean} [options.ban=false] - Whether to ban the member from the room.
25
+ * @param {boolean} [options.endRoomOnHostExit=true] - Whether a host exit ends the room for everyone.
23
26
  * @returns {Promise<void>} A promise that resolves when the exit is confirmed.
24
27
  *
25
28
  * @example
@@ -29,7 +32,8 @@ export type ConfirmExitType = (options: ConfirmExitOptions) => Promise<void>
29
32
  * localSocket: localSocketInstance,
30
33
  * member: "JohnDoe",
31
34
  * roomName: "Room123",
32
- * ban: true,
35
+ * ban: false,
36
+ * endRoomOnHostExit: false, // Let the host rejoin without ending the room.
33
37
  * };
34
38
  * await confirmExit(options);
35
39
  * ```
@@ -40,13 +44,15 @@ export const confirmExit = async ({
40
44
  localSocket,
41
45
  member,
42
46
  roomName,
43
- ban = false
47
+ ban = false,
48
+ endRoomOnHostExit = true
44
49
  }: ConfirmExitOptions): Promise<void> => {
45
50
  // Emit a socket event to disconnect the user from the room
46
51
  socket.emit('disconnectUser', {
47
52
  member: member,
48
53
  roomName: roomName,
49
- ban: ban
54
+ ban: ban,
55
+ endRoomOnHostExit
50
56
  })
51
57
 
52
58
  if (localSocket && localSocket.id) {
@@ -54,7 +60,8 @@ export const confirmExit = async ({
54
60
  localSocket.emit('disconnectUser', {
55
61
  member: member,
56
62
  roomName: roomName,
57
- ban: ban
63
+ ban: ban,
64
+ endRoomOnHostExit
58
65
  })
59
66
  }
60
67
  }
@@ -1,4 +1,4 @@
1
- import type { RtpCapabilities } from 'mediasoup-client/lib/types';
1
+ import type { RtpCapabilities } from 'mediasoup-client/types';
2
2
  import type {
3
3
  AltDomains,
4
4
  ConsumeSocket,
@@ -0,0 +1,112 @@
1
+ import { Participant, Stream } from '../../types/types';
2
+
3
+ export interface GetParticipantMediaOptions {
4
+ /**
5
+ * A participant id, or a producer id when the caller already holds one.
6
+ */
7
+ id?: string;
8
+ /** A participant display name. Used when `id` resolves nothing. */
9
+ name?: string;
10
+ /** Which media to resolve. Defaults to `video`. */
11
+ kind?: 'video' | 'audio';
12
+ /**
13
+ * The MediaSFU parameter bag — the object handed to `updateSourceParameters`,
14
+ * or anything exposing `participants`, `allVideoStreams` and `allAudioStreams`.
15
+ */
16
+ parameters: {
17
+ participants?: Participant[];
18
+ allVideoStreams?: (Participant | Stream)[];
19
+ allAudioStreams?: (Participant | Stream)[];
20
+ getCurrentParams?: () => any;
21
+ getUpdatedAllParams?: () => any;
22
+ [key: string]: any;
23
+ };
24
+ }
25
+
26
+ export type GetParticipantMediaType = (
27
+ options: GetParticipantMediaOptions
28
+ ) => Promise<MediaStream | null>;
29
+
30
+ /**
31
+ * Resolve a participant's live MediaStream from a MediaSFU parameter bag.
32
+ *
33
+ * This is the SDK-level counterpart of the `getParticipantMedia` helper that
34
+ * MediaSFU components publish through `sourceParameters`. That helper remains
35
+ * available for backwards compatibility; prefer this export when you drive the
36
+ * SDK headlessly (`returnUI={false}`) and only hold the parameter bag.
37
+ *
38
+ * Resolution order:
39
+ * 1. `parameters.participants` matched by `id`, then by `name`.
40
+ * 2. The matched participant's `videoID` / `audioID`, looked up against
41
+ * `allVideoStreams` / `allAudioStreams` by `producerId`. These collections
42
+ * are keyed by producer id only — a participant's `id` is its membership id
43
+ * and never matches, which is why an id-keyed lookup silently returns null.
44
+ * 3. `id` treated directly as a producer id, for callers that already hold one.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * import { getParticipantMedia } from 'mediasfu-reactjs';
49
+ *
50
+ * const stream = await getParticipantMedia({
51
+ * name: 'Paul',
52
+ * kind: 'video',
53
+ * parameters: sourceParameters.current,
54
+ * });
55
+ * if (stream) videoElement.srcObject = stream;
56
+ * ```
57
+ */
58
+ export async function getParticipantMedia({
59
+ id = '',
60
+ name = '',
61
+ kind = 'video',
62
+ parameters,
63
+ }: GetParticipantMediaOptions): Promise<MediaStream | null> {
64
+ try {
65
+ if (!parameters) return null;
66
+ // Prefer the freshest bag when the caller holds an older snapshot.
67
+ const live =
68
+ typeof parameters.getCurrentParams === 'function'
69
+ ? parameters.getCurrentParams() || parameters
70
+ : parameters;
71
+
72
+ const participants: Participant[] = Array.isArray(live.participants)
73
+ ? live.participants
74
+ : [];
75
+ const streams: (Participant | Stream)[] = Array.isArray(
76
+ kind === 'video' ? live.allVideoStreams : live.allAudioStreams
77
+ )
78
+ ? kind === 'video'
79
+ ? live.allVideoStreams
80
+ : live.allAudioStreams
81
+ : [];
82
+ if (streams.length === 0) return null;
83
+
84
+ let participant = id
85
+ ? participants.find((part) => part.id === id)
86
+ : undefined;
87
+ if (!participant && name) {
88
+ participant = participants.find((part) => part.name === name);
89
+ }
90
+
91
+ const producerId = participant
92
+ ? kind === 'video'
93
+ ? participant.videoID
94
+ : participant.audioID
95
+ : '';
96
+ if (producerId) {
97
+ const match = streams.find((stream) => stream.producerId === producerId);
98
+ if (match && match.stream) return match.stream;
99
+ }
100
+
101
+ if (id) {
102
+ const direct = streams.find((stream) => stream.producerId === id);
103
+ if (direct && direct.stream) return direct.stream;
104
+ }
105
+
106
+ return null;
107
+ } catch {
108
+ return null;
109
+ }
110
+ }
111
+
112
+ export default getParticipantMedia;
@@ -0,0 +1,44 @@
1
+ import { HeadlessOptions, HeadlessParameters } from './headlessTypes';
2
+
3
+ export type GetCurrentParamsType = (
4
+ options: HeadlessOptions
5
+ ) => HeadlessParameters;
6
+
7
+ /**
8
+ * Read the freshest parameter bag **without** triggering a republish.
9
+ *
10
+ * `parameters.getUpdatedAllParams()` looks like a getter but is not one: it
11
+ * reassigns `sourceParameters` and calls `updateSourceParameters` as a side
12
+ * effect. Calling it from a React event handler or a polling loop therefore
13
+ * re-enters your own update path, which at best causes a render storm and at
14
+ * worst locks the tab before `getUserMedia` resolves.
15
+ *
16
+ * MediaSFU components now publish a pure `getCurrentParams()` on the bag; this
17
+ * helper uses it when present and otherwise returns the bag you already hold.
18
+ * It never calls `getUpdatedAllParams()` and never throws.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import { getCurrentParams } from 'mediasfu-shared';
23
+ *
24
+ * // Safe inside a click handler — no re-entrant publish.
25
+ * const live = getCurrentParams({ parameters: parameterStore.getCurrent() });
26
+ * await live.clickVideo({ parameters: live });
27
+ * ```
28
+ */
29
+ export function getCurrentParams({
30
+ parameters,
31
+ }: HeadlessOptions): HeadlessParameters {
32
+ const source = parameters || {};
33
+ if (typeof source.getCurrentParams === 'function') {
34
+ try {
35
+ const refreshed = source.getCurrentParams();
36
+ if (refreshed && typeof refreshed === 'object') return refreshed;
37
+ } catch {
38
+ // Fall through to the bag the caller already holds.
39
+ }
40
+ }
41
+ return source;
42
+ }
43
+
44
+ export default getCurrentParams;
@@ -0,0 +1,256 @@
1
+ import { Participant, Stream } from '../../../types/types';
2
+ import { HeadlessOptions, HeadlessParameters, ResolvedMedia } from './headlessTypes';
3
+
4
+ /**
5
+ * MediaSFU seeds its own grid collections with a self marker rather than a real
6
+ * producer. Rendering it as a remote peer shows the local user twice.
7
+ */
8
+ const SELF_PRODUCER_IDS = new Set(['youyou', 'youyouyou']);
9
+
10
+ function toMediaStream(value: any): MediaStream | null {
11
+ if (value && typeof value.getTracks === 'function') return value as MediaStream;
12
+ const nested = value?.stream;
13
+ return nested && typeof nested.getTracks === 'function'
14
+ ? (nested as MediaStream)
15
+ : null;
16
+ }
17
+
18
+
19
+ /**
20
+ * A stream is only renderable if it still carries a live track of that kind.
21
+ *
22
+ * MediaSFU keeps `localStreamVideo` assigned after the camera is switched off —
23
+ * the track goes `enabled: false` or `readyState: 'ended'` rather than the
24
+ * field being cleared. Returning it regardless paints a black <video> instead
25
+ * of falling back to an audio or identity card.
26
+ *
27
+ * `enabled` is only meaningful for local media: the app clears it when the user
28
+ * turns their own camera off. It is never applied to remote tracks, where
29
+ * `muted: true` is a normal transient state before the first frame decodes.
30
+ */
31
+ function hasRenderableTrack(
32
+ stream: MediaStream | null,
33
+ kind: 'video' | 'audio',
34
+ requireEnabled: boolean
35
+ ): stream is MediaStream {
36
+ if (!stream || typeof stream.getTracks !== 'function') return false;
37
+ try {
38
+ return stream.getTracks().some(
39
+ (track) =>
40
+ track.kind === kind &&
41
+ track.readyState === 'live' &&
42
+ (!requireEnabled || track.enabled !== false)
43
+ );
44
+ } catch {
45
+ return false;
46
+ }
47
+ }
48
+
49
+ function collect(
50
+ entries: (Participant | Stream)[] | undefined
51
+ ): (Participant | Stream)[] {
52
+ return Array.isArray(entries) ? entries : [];
53
+ }
54
+
55
+ function dedupe(entries: (Participant | Stream)[]): ResolvedMedia[] {
56
+ const seen = new Set<string>();
57
+ const resolved: ResolvedMedia[] = [];
58
+ for (const entry of entries) {
59
+ const producerId = (entry as any)?.producerId || '';
60
+ if (SELF_PRODUCER_IDS.has(producerId)) continue;
61
+ const stream = toMediaStream(entry);
62
+ if (!hasRenderableTrack(stream, 'video', false)) continue;
63
+ const key = producerId || stream.id || '';
64
+ if (key && seen.has(key)) continue;
65
+ if (key) seen.add(key);
66
+ resolved.push({
67
+ stream,
68
+ producerId,
69
+ name: (entry as any)?.name || '',
70
+ });
71
+ }
72
+ return resolved;
73
+ }
74
+
75
+ export type GetRemoteVideoStreamsType = (
76
+ options: HeadlessOptions
77
+ ) => ResolvedMedia[];
78
+
79
+ /**
80
+ * Every remote camera in the room, in render order.
81
+ *
82
+ * Two details make this hard to get right by hand, and both are why headless
83
+ * integrations lose the host's video:
84
+ *
85
+ * - **`oldAllStreams` matters.** During normal conference layout processing the
86
+ * SDK moves a stream out of `allVideoStreams` into `oldAllStreams`. Reading
87
+ * only `allVideoStreams` makes the host disappear mid-call.
88
+ * - **The self marker must go.** `allVideoStreams` is seeded with a
89
+ * `producerId: 'youyou'` placeholder for the local user.
90
+ *
91
+ * Entries are de-duplicated by `producerId`, falling back to the stream id, so a
92
+ * stream present in both collections is returned once.
93
+ *
94
+ * @example
95
+ * ```ts
96
+ * import { getRemoteVideoStreams } from 'mediasfu-shared';
97
+ *
98
+ * const remotes = getRemoteVideoStreams({ parameters });
99
+ * const primary = remotes[0]?.stream ?? null;
100
+ * ```
101
+ */
102
+ export function getRemoteVideoStreams({
103
+ parameters,
104
+ }: HeadlessOptions): ResolvedMedia[] {
105
+ const source: HeadlessParameters = parameters || {};
106
+ return dedupe([
107
+ ...collect(source.oldAllStreams),
108
+ ...collect(source.allVideoStreams),
109
+ ]);
110
+ }
111
+
112
+ export type GetRemoteAudioStreamsType = (
113
+ options: HeadlessOptions
114
+ ) => ResolvedMedia[];
115
+
116
+ /**
117
+ * Every remote audio producer in the room.
118
+ *
119
+ * Note that for *hearing* participants you normally want
120
+ * {@link getAudioGridComponents} instead — MediaSFU prepares its own audio
121
+ * elements and mounting those is what actually plays sound. This helper is for
122
+ * cases where you need the raw `MediaStream` (recording, analysis, metering).
123
+ */
124
+ export function getRemoteAudioStreams({
125
+ parameters,
126
+ }: HeadlessOptions): ResolvedMedia[] {
127
+ const source: HeadlessParameters = parameters || {};
128
+ return dedupe(collect(source.allAudioStreams));
129
+ }
130
+
131
+ export type GetLocalVideoStreamType = (
132
+ options: HeadlessOptions
133
+ ) => MediaStream | null;
134
+
135
+ /**
136
+ * The local camera stream to render as the self-view.
137
+ *
138
+ * The virtual-background case is the one everyone misses: when `keepBackground`
139
+ * is on, the stream that carries the processed frames is `virtualStream`, and
140
+ * `localStreamVideo` still holds the raw camera. Rendering the wrong one shows
141
+ * the user their unprocessed background. This mirrors the SDK's own grid rule.
142
+ *
143
+ * Returns `null` when the camera is off, so a falsy result is a truthful
144
+ * "no self-view" rather than something to paint black.
145
+ *
146
+ * Note: transport state such as `videoParams` or `videoProducer` is **not**
147
+ * renderable media and is deliberately never consulted here.
148
+ */
149
+ export function getLocalVideoStream({
150
+ parameters,
151
+ }: HeadlessOptions): MediaStream | null {
152
+ const source: HeadlessParameters = parameters || {};
153
+ if (source.keepBackground && source.virtualStream) {
154
+ const virtual = toMediaStream(source.virtualStream);
155
+ if (hasRenderableTrack(virtual, 'video', true)) return virtual;
156
+ }
157
+ const camera = toMediaStream(source.localStreamVideo);
158
+ if (hasRenderableTrack(camera, 'video', true)) return camera;
159
+ const combined = toMediaStream(source.localStream);
160
+ return hasRenderableTrack(combined, 'video', true) ? combined : null;
161
+ }
162
+
163
+ export type GetLocalAudioStreamType = (
164
+ options: HeadlessOptions
165
+ ) => MediaStream | null;
166
+
167
+ /** The local microphone stream, or `null` when the mic is off. */
168
+ export function getLocalAudioStream({
169
+ parameters,
170
+ }: HeadlessOptions): MediaStream | null {
171
+ const source: HeadlessParameters = parameters || {};
172
+ const mic = toMediaStream(source.localStreamAudio);
173
+ if (hasRenderableTrack(mic, 'audio', true)) return mic;
174
+ const combined = toMediaStream(source.localStream);
175
+ return hasRenderableTrack(combined, 'audio', true) ? combined : null;
176
+ }
177
+
178
+ export interface ScreenShareState {
179
+ /** The stream to render, local or remote, or `null` when nobody is sharing. */
180
+ stream: MediaStream | null;
181
+ /** True when the stream is this user's own screen. */
182
+ isLocal: boolean;
183
+ /** True when any screen share is active in the room. */
184
+ active: boolean;
185
+ }
186
+
187
+ export type GetScreenShareStreamType = (
188
+ options: HeadlessOptions
189
+ ) => ScreenShareState;
190
+
191
+ /**
192
+ * The active screen share, remote first.
193
+ *
194
+ * `remoteScreenStream` is an array in some SDK paths and a bare object in
195
+ * others; both shapes are handled here so callers do not have to guess.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * const share = getScreenShareStream({ parameters });
200
+ * const primary = share.stream ?? remotes[0]?.stream ?? localVideo;
201
+ * ```
202
+ */
203
+ export function getScreenShareStream({
204
+ parameters,
205
+ }: HeadlessOptions): ScreenShareState {
206
+ const source: HeadlessParameters = parameters || {};
207
+ const remoteRaw: any = source.remoteScreenStream;
208
+ const remote = Array.isArray(remoteRaw)
209
+ ? toMediaStream(remoteRaw[0])
210
+ : toMediaStream(remoteRaw);
211
+ // Liveness matters most here. When a sharer stops, the SDK ends the track but
212
+ // `remoteScreenStream` keeps referencing it, so a viewer that trusts the field
213
+ // renders a dead track — a screen share that "ends" into a black stage.
214
+ // `enabled` is not required: it is a local-only flag and never set on a
215
+ // received screen track.
216
+ if (hasRenderableTrack(remote, 'video', false)) {
217
+ return { stream: remote, isLocal: false, active: true };
218
+ }
219
+
220
+ const local = toMediaStream(source.localStreamScreen);
221
+ if (hasRenderableTrack(local, 'video', true)) {
222
+ return { stream: local, isLocal: true, active: true };
223
+ }
224
+
225
+ return {
226
+ stream: null,
227
+ isLocal: false,
228
+ active: Boolean(source.shareScreenStarted || source.shared),
229
+ };
230
+ }
231
+
232
+ export type GetAudioGridComponentsType = (options: HeadlessOptions) => any[];
233
+
234
+ /**
235
+ * The prepared audio elements to mount so participants are actually audible.
236
+ *
237
+ * Mount **all** of them. Truncating this list to the participants you happen to
238
+ * draw on screen silently mutes everyone else — audio playback is decoupled from
239
+ * your video layout. The usual pattern is a visually hidden container:
240
+ *
241
+ * @example
242
+ * ```tsx
243
+ * import { getAudioGridComponents } from 'mediasfu-shared';
244
+ *
245
+ * <div style={{ position: 'absolute', width: 1, height: 1, opacity: 0 }}>
246
+ * <AudioGrid componentsToRender={getAudioGridComponents({ parameters })} />
247
+ * </div>
248
+ * ```
249
+ */
250
+ export function getAudioGridComponents({ parameters }: HeadlessOptions): any[] {
251
+ const source: HeadlessParameters = parameters || {};
252
+ return [
253
+ ...(Array.isArray(source.audioOnlyStreams) ? source.audioOnlyStreams : []),
254
+ ...(Array.isArray(source.translationStreams) ? source.translationStreams : []),
255
+ ].filter(Boolean);
256
+ }