mediasfu-shared 1.0.6 → 1.1.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.
- package/HEADLESS_GUIDE.md +156 -0
- package/README.md +113 -62
- package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts +23 -0
- package/dist/ProducerClient/producerClientEmits/createDeviceClient.d.ts.map +1 -0
- package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts +22 -0
- package/dist/ProducerClient/producerClientEmits/joinRoomClient.d.ts.map +1 -0
- package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts +85 -0
- package/dist/ProducerClient/producerClientEmits/updateRoomParametersClient.d.ts.map +1 -0
- package/dist/consumers/addVideosGrid.d.ts +10 -0
- package/dist/consumers/addVideosGrid.d.ts.map +1 -0
- package/dist/consumers/autoAdjust.d.ts +41 -0
- package/dist/consumers/autoAdjust.d.ts.map +1 -0
- package/dist/consumers/calculateRowsAndColumns.d.ts +24 -0
- package/dist/consumers/calculateRowsAndColumns.d.ts.map +1 -0
- package/dist/consumers/changeVids.d.ts +252 -0
- package/dist/consumers/changeVids.d.ts.map +1 -0
- package/dist/consumers/checkGrid.d.ts +42 -0
- package/dist/consumers/checkGrid.d.ts.map +1 -0
- package/dist/consumers/checkPermission.d.ts +42 -0
- package/dist/consumers/checkPermission.d.ts.map +1 -0
- package/dist/consumers/checkScreenShare.d.ts +59 -0
- package/dist/consumers/checkScreenShare.d.ts.map +1 -0
- package/dist/consumers/closeAndResize.d.ts +157 -0
- package/dist/consumers/closeAndResize.d.ts.map +1 -0
- package/dist/consumers/compareActiveNames.d.ts +50 -0
- package/dist/consumers/compareActiveNames.d.ts.map +1 -0
- package/dist/consumers/compareScreenStates.d.ts +55 -0
- package/dist/consumers/compareScreenStates.d.ts.map +1 -0
- package/dist/consumers/connectIps.d.ts +66 -0
- package/dist/consumers/connectIps.d.ts.map +1 -0
- package/dist/consumers/connectLocalIps.d.ts +52 -0
- package/dist/consumers/connectLocalIps.d.ts.map +1 -0
- package/dist/consumers/connectRecvTransport.d.ts +64 -0
- package/dist/consumers/connectRecvTransport.d.ts.map +1 -0
- package/dist/consumers/connectSendTransport.d.ts +75 -0
- package/dist/consumers/connectSendTransport.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportAudio.d.ts +62 -0
- package/dist/consumers/connectSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportScreen.d.ts +72 -0
- package/dist/consumers/connectSendTransportScreen.d.ts.map +1 -0
- package/dist/consumers/connectSendTransportVideo.d.ts +75 -0
- package/dist/consumers/connectSendTransportVideo.d.ts.map +1 -0
- package/dist/consumers/consumerResume.d.ts +16 -0
- package/dist/consumers/consumerResume.d.ts.map +1 -0
- package/dist/consumers/controlMedia.d.ts +61 -0
- package/dist/consumers/controlMedia.d.ts.map +1 -0
- package/dist/consumers/createSendTransport.d.ts +80 -0
- package/dist/consumers/createSendTransport.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportAudio.d.ts +79 -0
- package/dist/consumers/disconnectSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportScreen.d.ts +61 -0
- package/dist/consumers/disconnectSendTransportScreen.d.ts.map +1 -0
- package/dist/consumers/disconnectSendTransportVideo.d.ts +72 -0
- package/dist/consumers/disconnectSendTransportVideo.d.ts.map +1 -0
- package/dist/consumers/dispStreams.d.ts +189 -0
- package/dist/consumers/dispStreams.d.ts.map +1 -0
- package/dist/consumers/frameworkConsumerContract.d.ts +2 -0
- package/dist/consumers/frameworkConsumerContract.d.ts.map +1 -0
- package/dist/consumers/generatePageContent.d.ts +68 -0
- package/dist/consumers/generatePageContent.d.ts.map +1 -0
- package/dist/consumers/getEstimate.d.ts +62 -0
- package/dist/consumers/getEstimate.d.ts.map +1 -0
- package/dist/consumers/getPipedProducersAlt.d.ts +62 -0
- package/dist/consumers/getPipedProducersAlt.d.ts.map +1 -0
- package/dist/consumers/getProducersPiped.d.ts +49 -0
- package/dist/consumers/getProducersPiped.d.ts.map +1 -0
- package/dist/consumers/getVideos.d.ts +49 -0
- package/dist/consumers/getVideos.d.ts.map +1 -0
- package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts +19 -0
- package/dist/consumers/gridLayout/addVideosGrid.engine.d.ts.map +1 -0
- package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts +138 -0
- package/dist/consumers/gridLayout/prepopulateUserMedia.engine.d.ts.map +1 -0
- package/dist/consumers/mixStreams.d.ts +37 -0
- package/dist/consumers/mixStreams.d.ts.map +1 -0
- package/dist/consumers/onScreenChanges.d.ts +62 -0
- package/dist/consumers/onScreenChanges.d.ts.map +1 -0
- package/dist/consumers/prepopulateUserMedia.d.ts +10 -0
- package/dist/consumers/prepopulateUserMedia.d.ts.map +1 -0
- package/dist/consumers/processConsumerTransports.d.ts +73 -0
- package/dist/consumers/processConsumerTransports.d.ts.map +1 -0
- package/dist/consumers/processConsumerTransportsAudio.d.ts +57 -0
- package/dist/consumers/processConsumerTransportsAudio.d.ts.map +1 -0
- package/dist/consumers/rePort.d.ts +63 -0
- package/dist/consumers/rePort.d.ts.map +1 -0
- package/dist/consumers/reUpdateInter.d.ts +142 -0
- package/dist/consumers/reUpdateInter.d.ts.map +1 -0
- package/dist/consumers/readjust.d.ts +68 -0
- package/dist/consumers/readjust.d.ts.map +1 -0
- package/dist/consumers/receiveAllPipedTransports.d.ts +44 -0
- package/dist/consumers/receiveAllPipedTransports.d.ts.map +1 -0
- package/dist/consumers/receiveRoomMessages.d.ts +31 -0
- package/dist/consumers/receiveRoomMessages.d.ts.map +1 -0
- package/dist/consumers/reorderStreams.d.ts +98 -0
- package/dist/consumers/reorderStreams.d.ts.map +1 -0
- package/dist/consumers/requestScreenShare.d.ts +47 -0
- package/dist/consumers/requestScreenShare.d.ts.map +1 -0
- package/dist/consumers/resumePauseAudioStreams.d.ts +85 -0
- package/dist/consumers/resumePauseAudioStreams.d.ts.map +1 -0
- package/dist/consumers/resumePauseStreams.d.ts +68 -0
- package/dist/consumers/resumePauseStreams.d.ts.map +1 -0
- package/dist/consumers/resumeSendTransportAudio.d.ts +65 -0
- package/dist/consumers/resumeSendTransportAudio.d.ts.map +1 -0
- package/dist/consumers/signalNewConsumerTransport.d.ts +59 -0
- package/dist/consumers/signalNewConsumerTransport.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts +76 -0
- package/dist/consumers/socketReceiveMethods/joinConsumeRoom.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts +119 -0
- package/dist/consumers/socketReceiveMethods/newPipeProducer.d.ts.map +1 -0
- package/dist/consumers/socketReceiveMethods/producerClosed.d.ts +53 -0
- package/dist/consumers/socketReceiveMethods/producerClosed.d.ts.map +1 -0
- package/dist/consumers/startShareScreen.d.ts +58 -0
- package/dist/consumers/startShareScreen.d.ts.map +1 -0
- package/dist/consumers/stopShareScreen.d.ts +127 -0
- package/dist/consumers/stopShareScreen.d.ts.map +1 -0
- package/dist/consumers/streamSuccessAudio.d.ts +149 -0
- package/dist/consumers/streamSuccessAudio.d.ts.map +1 -0
- package/dist/consumers/streamSuccessAudioSwitch.d.ts +131 -0
- package/dist/consumers/streamSuccessAudioSwitch.d.ts.map +1 -0
- package/dist/consumers/streamSuccessScreen.d.ts +109 -0
- package/dist/consumers/streamSuccessScreen.d.ts.map +1 -0
- package/dist/consumers/streamSuccessVideo.d.ts +160 -0
- package/dist/consumers/streamSuccessVideo.d.ts.map +1 -0
- package/dist/consumers/switchUserAudio.d.ts +56 -0
- package/dist/consumers/switchUserAudio.d.ts.map +1 -0
- package/dist/consumers/switchUserVideo.d.ts +77 -0
- package/dist/consumers/switchUserVideo.d.ts.map +1 -0
- package/dist/consumers/switchUserVideoAlt.d.ts +69 -0
- package/dist/consumers/switchUserVideoAlt.d.ts.map +1 -0
- package/dist/consumers/translationConsumerSwitch.d.ts +67 -0
- package/dist/consumers/translationConsumerSwitch.d.ts.map +1 -0
- package/dist/consumers/trigger.d.ts +71 -0
- package/dist/consumers/trigger.d.ts.map +1 -0
- package/dist/consumers/updateMiniCardsGrid.d.ts +65 -0
- package/dist/consumers/updateMiniCardsGrid.d.ts.map +1 -0
- package/dist/consumers/updateParticipantAudioDecibels.d.ts +31 -0
- package/dist/consumers/updateParticipantAudioDecibels.d.ts.map +1 -0
- package/dist/getParticipantMedia-D9ChmEqq.js +15265 -0
- package/dist/getParticipantMedia-D9ChmEqq.js.map +1 -0
- package/dist/getParticipantMedia-DWvIhPPY.cjs +15281 -0
- package/dist/getParticipantMedia-DWvIhPPY.cjs.map +1 -0
- package/dist/index.cjs +2677 -13249
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +191 -11233
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2668 -13222
- package/dist/index.js.map +1 -1
- package/dist/index.native.cjs +346 -0
- package/dist/index.native.cjs.map +1 -0
- package/dist/index.native.d.ts +204 -0
- package/dist/index.native.d.ts.map +1 -0
- package/dist/index.native.js +346 -0
- package/dist/index.native.js.map +1 -0
- package/dist/methods/background/launchBackground.d.ts +10 -0
- package/dist/methods/background/launchBackground.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts +67 -0
- package/dist/methods/breakoutRooms/breakoutRoomUpdated.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/handleStartBreakout.d.ts +42 -0
- package/dist/methods/breakoutRooms/handleStartBreakout.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/handleStopBreakout.d.ts +33 -0
- package/dist/methods/breakoutRooms/handleStopBreakout.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/index.d.ts +5 -0
- package/dist/methods/breakoutRooms/index.d.ts.map +1 -0
- package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts +25 -0
- package/dist/methods/breakoutRooms/launchBreakoutRooms.d.ts.map +1 -0
- package/dist/methods/coHost/launchCoHost.d.ts +25 -0
- package/dist/methods/coHost/launchCoHost.d.ts.map +1 -0
- package/dist/methods/coHostMethods/index.d.ts +3 -0
- package/dist/methods/coHostMethods/index.d.ts.map +1 -0
- package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts +49 -0
- package/dist/methods/coHostMethods/modifyCoHostSettings.d.ts.map +1 -0
- package/dist/methods/displaySettings/index.d.ts +2 -0
- package/dist/methods/displaySettings/index.d.ts.map +1 -0
- package/dist/methods/displaySettings/launchDisplaySettings.d.ts +25 -0
- package/dist/methods/displaySettings/launchDisplaySettings.d.ts.map +1 -0
- package/dist/methods/displaySettings/modifyDisplaySettings.d.ts +106 -0
- package/dist/methods/displaySettings/modifyDisplaySettings.d.ts.map +1 -0
- package/dist/methods/exit/confirmExit.d.ts +38 -0
- package/dist/methods/exit/confirmExit.d.ts.map +1 -0
- package/dist/methods/exit/index.d.ts +3 -0
- package/dist/methods/exit/index.d.ts.map +1 -0
- package/dist/methods/exit/launchConfirmExit.d.ts +23 -0
- package/dist/methods/exit/launchConfirmExit.d.ts.map +1 -0
- package/dist/methods/index.d.ts +66 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/mediaSettings/launchMediaSettings.d.ts +38 -0
- package/dist/methods/mediaSettings/launchMediaSettings.d.ts.map +1 -0
- package/dist/methods/menu/launchMenuModal.d.ts +22 -0
- package/dist/methods/menu/launchMenuModal.d.ts.map +1 -0
- package/dist/methods/message/index.d.ts +2 -0
- package/dist/methods/message/index.d.ts.map +1 -0
- package/dist/methods/message/launchMessages.d.ts +24 -0
- package/dist/methods/message/launchMessages.d.ts.map +1 -0
- package/dist/methods/message/sendMessage.d.ts +63 -0
- package/dist/methods/message/sendMessage.d.ts.map +1 -0
- package/dist/methods/panelists/focusPanelists.d.ts +24 -0
- package/dist/methods/panelists/focusPanelists.d.ts.map +1 -0
- package/dist/methods/panelists/index.d.ts +4 -0
- package/dist/methods/panelists/index.d.ts.map +1 -0
- package/dist/methods/panelists/launchPanelists.d.ts +7 -0
- package/dist/methods/panelists/launchPanelists.d.ts.map +1 -0
- package/dist/methods/panelists/updatePanelists.d.ts +35 -0
- package/dist/methods/panelists/updatePanelists.d.ts.map +1 -0
- package/dist/methods/participants/index.d.ts +4 -0
- package/dist/methods/participants/index.d.ts.map +1 -0
- package/dist/methods/participants/launchParticipants.d.ts +22 -0
- package/dist/methods/participants/launchParticipants.d.ts.map +1 -0
- package/dist/methods/participants/messageParticipants.d.ts +43 -0
- package/dist/methods/participants/messageParticipants.d.ts.map +1 -0
- package/dist/methods/participants/muteParticipants.d.ts +41 -0
- package/dist/methods/participants/muteParticipants.d.ts.map +1 -0
- package/dist/methods/participants/removeParticipants.d.ts +47 -0
- package/dist/methods/participants/removeParticipants.d.ts.map +1 -0
- package/dist/methods/permissions/index.d.ts +4 -0
- package/dist/methods/permissions/index.d.ts.map +1 -0
- package/dist/methods/permissions/launchPermissions.d.ts +7 -0
- package/dist/methods/permissions/launchPermissions.d.ts.map +1 -0
- package/dist/methods/permissions/updateParticipantPermission.d.ts +25 -0
- package/dist/methods/permissions/updateParticipantPermission.d.ts.map +1 -0
- package/dist/methods/permissions/updatePermissionConfig.d.ts +22 -0
- package/dist/methods/permissions/updatePermissionConfig.d.ts.map +1 -0
- package/dist/methods/polls/handleCreatePoll.d.ts +39 -0
- package/dist/methods/polls/handleCreatePoll.d.ts.map +1 -0
- package/dist/methods/polls/handleEndPoll.d.ts +34 -0
- package/dist/methods/polls/handleEndPoll.d.ts.map +1 -0
- package/dist/methods/polls/handleVotePoll.d.ts +39 -0
- package/dist/methods/polls/handleVotePoll.d.ts.map +1 -0
- package/dist/methods/polls/index.d.ts +4 -0
- package/dist/methods/polls/index.d.ts.map +1 -0
- package/dist/methods/polls/launchPoll.d.ts +22 -0
- package/dist/methods/polls/launchPoll.d.ts.map +1 -0
- package/dist/methods/polls/pollUpdated.d.ts +38 -0
- package/dist/methods/polls/pollUpdated.d.ts.map +1 -0
- package/dist/methods/prejoin/handleCreateRoom.d.ts +77 -0
- package/dist/methods/prejoin/handleCreateRoom.d.ts.map +1 -0
- package/dist/methods/prejoin/handleJoinRoom.d.ts +56 -0
- package/dist/methods/prejoin/handleJoinRoom.d.ts.map +1 -0
- package/dist/methods/prejoin/index.d.ts +5 -0
- package/dist/methods/prejoin/index.d.ts.map +1 -0
- package/dist/methods/recording/checkPauseState.d.ts +34 -0
- package/dist/methods/recording/checkPauseState.d.ts.map +1 -0
- package/dist/methods/recording/checkResumeState.d.ts +30 -0
- package/dist/methods/recording/checkResumeState.d.ts.map +1 -0
- package/dist/methods/recording/confirmRecording.d.ts +46 -0
- package/dist/methods/recording/confirmRecording.d.ts.map +1 -0
- package/dist/methods/recording/launchRecording.d.ts +56 -0
- package/dist/methods/recording/launchRecording.d.ts.map +1 -0
- package/dist/methods/recording/recordPauseTimer.d.ts +31 -0
- package/dist/methods/recording/recordPauseTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordResumeTimer.d.ts +29 -0
- package/dist/methods/recording/recordResumeTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordStartTimer.d.ts +45 -0
- package/dist/methods/recording/recordStartTimer.d.ts.map +1 -0
- package/dist/methods/recording/recordUpdateTimer.d.ts +29 -0
- package/dist/methods/recording/recordUpdateTimer.d.ts.map +1 -0
- package/dist/methods/recording/startRecording.d.ts +122 -0
- package/dist/methods/recording/startRecording.d.ts.map +1 -0
- package/dist/methods/recording/stopRecording.d.ts +36 -0
- package/dist/methods/recording/stopRecording.d.ts.map +1 -0
- package/dist/methods/recording/timeLeftRecording.d.ts +13 -0
- package/dist/methods/recording/timeLeftRecording.d.ts.map +1 -0
- package/dist/methods/recording/updateRecording.d.ts +49 -0
- package/dist/methods/recording/updateRecording.d.ts.map +1 -0
- package/dist/methods/requests/hostRequestResponse.d.ts +33 -0
- package/dist/methods/requests/hostRequestResponse.d.ts.map +1 -0
- package/dist/methods/requests/index.d.ts +2 -0
- package/dist/methods/requests/index.d.ts.map +1 -0
- package/dist/methods/requests/launchRequests.d.ts +22 -0
- package/dist/methods/requests/launchRequests.d.ts.map +1 -0
- package/dist/methods/requests/respondToRequests.d.ts +38 -0
- package/dist/methods/requests/respondToRequests.d.ts.map +1 -0
- package/dist/methods/settings/index.d.ts +3 -0
- package/dist/methods/settings/index.d.ts.map +1 -0
- package/dist/methods/settings/launchSettings.d.ts +22 -0
- package/dist/methods/settings/launchSettings.d.ts.map +1 -0
- package/dist/methods/settings/modifySettings.d.ts +45 -0
- package/dist/methods/settings/modifySettings.d.ts.map +1 -0
- package/dist/methods/socketReceive/allMembers.d.ts +117 -0
- package/dist/methods/socketReceive/allMembers.d.ts.map +1 -0
- package/dist/methods/socketReceive/allMembersRest.d.ts +122 -0
- package/dist/methods/socketReceive/allMembersRest.d.ts.map +1 -0
- package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts +24 -0
- package/dist/methods/socketReceive/allWaitingRoomMembers.d.ts.map +1 -0
- package/dist/methods/socketReceive/banParticipant.d.ts +44 -0
- package/dist/methods/socketReceive/banParticipant.d.ts.map +1 -0
- package/dist/methods/socketReceive/controlMediaHost.d.ts +62 -0
- package/dist/methods/socketReceive/controlMediaHost.d.ts.map +1 -0
- package/dist/methods/socketReceive/disconnect.d.ts +24 -0
- package/dist/methods/socketReceive/disconnect.d.ts.map +1 -0
- package/dist/methods/socketReceive/disconnectUserSelf.d.ts +29 -0
- package/dist/methods/socketReceive/disconnectUserSelf.d.ts.map +1 -0
- package/dist/methods/socketReceive/getDomains.d.ts +48 -0
- package/dist/methods/socketReceive/getDomains.d.ts.map +1 -0
- package/dist/methods/socketReceive/meetingEnded.d.ts +27 -0
- package/dist/methods/socketReceive/meetingEnded.d.ts.map +1 -0
- package/dist/methods/socketReceive/meetingStillThere.d.ts +19 -0
- package/dist/methods/socketReceive/meetingStillThere.d.ts.map +1 -0
- package/dist/methods/socketReceive/panelistReceiveMethods.d.ts +66 -0
- package/dist/methods/socketReceive/panelistReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/participantRequested.d.ts +28 -0
- package/dist/methods/socketReceive/participantRequested.d.ts.map +1 -0
- package/dist/methods/socketReceive/permissionReceiveMethods.d.ts +23 -0
- package/dist/methods/socketReceive/permissionReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/personJoined.d.ts +24 -0
- package/dist/methods/socketReceive/personJoined.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaClosed.d.ts +66 -0
- package/dist/methods/socketReceive/producerMediaClosed.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaPaused.d.ts +70 -0
- package/dist/methods/socketReceive/producerMediaPaused.d.ts.map +1 -0
- package/dist/methods/socketReceive/producerMediaResumed.d.ts +53 -0
- package/dist/methods/socketReceive/producerMediaResumed.d.ts.map +1 -0
- package/dist/methods/socketReceive/reInitiateRecording.d.ts +33 -0
- package/dist/methods/socketReceive/reInitiateRecording.d.ts.map +1 -0
- package/dist/methods/socketReceive/receiveMessage.d.ts +36 -0
- package/dist/methods/socketReceive/receiveMessage.d.ts.map +1 -0
- package/dist/methods/socketReceive/recordingNotice.d.ts +98 -0
- package/dist/methods/socketReceive/recordingNotice.d.ts.map +1 -0
- package/dist/methods/socketReceive/roomRecordParams.d.ts +60 -0
- package/dist/methods/socketReceive/roomRecordParams.d.ts.map +1 -0
- package/dist/methods/socketReceive/screenProducerId.d.ts +36 -0
- package/dist/methods/socketReceive/screenProducerId.d.ts.map +1 -0
- package/dist/methods/socketReceive/startRecords.d.ts +31 -0
- package/dist/methods/socketReceive/startRecords.d.ts.map +1 -0
- package/dist/methods/socketReceive/stoppedRecording.d.ts +24 -0
- package/dist/methods/socketReceive/stoppedRecording.d.ts.map +1 -0
- package/dist/methods/socketReceive/translationReceiveMethods.d.ts +227 -0
- package/dist/methods/socketReceive/translationReceiveMethods.d.ts.map +1 -0
- package/dist/methods/socketReceive/updateConsumingDomains.d.ts +60 -0
- package/dist/methods/socketReceive/updateConsumingDomains.d.ts.map +1 -0
- package/dist/methods/socketReceive/updateMediaSettings.d.ts +28 -0
- package/dist/methods/socketReceive/updateMediaSettings.d.ts.map +1 -0
- package/dist/methods/socketReceive/updatedCoHost.d.ts +38 -0
- package/dist/methods/socketReceive/updatedCoHost.d.ts.map +1 -0
- package/dist/methods/socketReceive/userWaiting.d.ts +30 -0
- package/dist/methods/socketReceive/userWaiting.d.ts.map +1 -0
- package/dist/methods/stream/clickAudio.d.ts +71 -0
- package/dist/methods/stream/clickAudio.d.ts.map +1 -0
- package/dist/methods/stream/clickChat.d.ts +11 -0
- package/dist/methods/stream/clickChat.d.ts.map +1 -0
- package/dist/methods/stream/clickScreenShare.d.ts +45 -0
- package/dist/methods/stream/clickScreenShare.d.ts.map +1 -0
- package/dist/methods/stream/clickVideo.d.ts +101 -0
- package/dist/methods/stream/clickVideo.d.ts.map +1 -0
- package/dist/methods/stream/index.d.ts +5 -0
- package/dist/methods/stream/index.d.ts.map +1 -0
- package/dist/methods/stream/switchAudio.d.ts +40 -0
- package/dist/methods/stream/switchAudio.d.ts.map +1 -0
- package/dist/methods/stream/switchVideo.d.ts +56 -0
- package/dist/methods/stream/switchVideo.d.ts.map +1 -0
- package/dist/methods/stream/switchVideoAlt.d.ts +55 -0
- package/dist/methods/stream/switchVideoAlt.d.ts.map +1 -0
- package/dist/methods/utils/SoundPlayer.d.ts +19 -0
- package/dist/methods/utils/SoundPlayer.d.ts.map +1 -0
- package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts +30 -0
- package/dist/methods/utils/checkLimitsAndMakeRequest.d.ts.map +1 -0
- package/dist/methods/utils/createResponseJoinRoom.d.ts +24 -0
- package/dist/methods/utils/createResponseJoinRoom.d.ts.map +1 -0
- package/dist/methods/utils/createRoomOnMediaSFU.d.ts +28 -0
- package/dist/methods/utils/createRoomOnMediaSFU.d.ts.map +1 -0
- package/dist/methods/utils/formatNumber.d.ts +21 -0
- package/dist/methods/utils/formatNumber.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomMessages.d.ts +11 -0
- package/dist/methods/utils/generateRandomMessages.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomParticipants.d.ts +10 -0
- package/dist/methods/utils/generateRandomParticipants.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomPolls.d.ts +7 -0
- package/dist/methods/utils/generateRandomPolls.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomRequestList.d.ts +10 -0
- package/dist/methods/utils/generateRandomRequestList.d.ts.map +1 -0
- package/dist/methods/utils/generateRandomWaitingRoomList.d.ts +4 -0
- package/dist/methods/utils/generateRandomWaitingRoomList.d.ts.map +1 -0
- package/dist/methods/utils/getModalPosition.d.ts +7 -0
- package/dist/methods/utils/getModalPosition.d.ts.map +1 -0
- package/dist/methods/utils/getOverlayPosition.d.ts +22 -0
- package/dist/methods/utils/getOverlayPosition.d.ts.map +1 -0
- package/dist/methods/utils/getParticipantMedia.d.ts +55 -0
- package/dist/methods/utils/getParticipantMedia.d.ts.map +1 -0
- package/dist/methods/utils/headless/getCurrentParams.d.ts +27 -0
- package/dist/methods/utils/headless/getCurrentParams.d.ts.map +1 -0
- package/dist/methods/utils/headless/getMediaStreams.d.ts +96 -0
- package/dist/methods/utils/headless/getMediaStreams.d.ts.map +1 -0
- package/dist/methods/utils/headless/getRoomReadiness.d.ts +25 -0
- package/dist/methods/utils/headless/getRoomReadiness.d.ts.map +1 -0
- package/dist/methods/utils/headless/headlessTypes.d.ts +89 -0
- package/dist/methods/utils/headless/headlessTypes.d.ts.map +1 -0
- package/dist/methods/utils/headless/index.d.ts +29 -0
- package/dist/methods/utils/headless/index.d.ts.map +1 -0
- package/dist/methods/utils/headless/mediaPermissions.d.ts +53 -0
- package/dist/methods/utils/headless/mediaPermissions.d.ts.map +1 -0
- package/dist/methods/utils/headless/mediaProduction.d.ts +177 -0
- package/dist/methods/utils/headless/mediaProduction.d.ts.map +1 -0
- package/dist/methods/utils/headless/moderation.d.ts +157 -0
- package/dist/methods/utils/headless/moderation.d.ts.map +1 -0
- package/dist/methods/utils/headless/participantState.d.ts +128 -0
- package/dist/methods/utils/headless/participantState.d.ts.map +1 -0
- package/dist/methods/utils/headless/playback.d.ts +106 -0
- package/dist/methods/utils/headless/playback.d.ts.map +1 -0
- package/dist/methods/utils/headless/roomActions.d.ts +88 -0
- package/dist/methods/utils/headless/roomActions.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionControls.d.ts +159 -0
- package/dist/methods/utils/headless/sessionControls.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionExtras.d.ts +291 -0
- package/dist/methods/utils/headless/sessionExtras.d.ts.map +1 -0
- package/dist/methods/utils/headless/sessionFeatures.d.ts +159 -0
- package/dist/methods/utils/headless/sessionFeatures.d.ts.map +1 -0
- package/dist/methods/utils/headless/viewerSession.d.ts +125 -0
- package/dist/methods/utils/headless/viewerSession.d.ts.map +1 -0
- package/dist/methods/utils/headless/virtualBackground.d.ts +72 -0
- package/dist/methods/utils/headless/virtualBackground.d.ts.map +1 -0
- package/dist/methods/utils/initialValuesState.d.ts +388 -0
- package/dist/methods/utils/initialValuesState.d.ts.map +1 -0
- package/dist/methods/utils/joinRoomOnMediaSFU.d.ts +56 -0
- package/dist/methods/utils/joinRoomOnMediaSFU.d.ts.map +1 -0
- package/dist/methods/utils/liveSubtitle.d.ts +36 -0
- package/dist/methods/utils/liveSubtitle.d.ts.map +1 -0
- package/dist/methods/utils/meetingTimeRemaining.d.ts +15 -0
- package/dist/methods/utils/meetingTimeRemaining.d.ts.map +1 -0
- package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts +35 -0
- package/dist/methods/utils/meetingTimer/startMeetingProgressTimer.d.ts.map +1 -0
- package/dist/methods/utils/producer/aParams.d.ts +3 -0
- package/dist/methods/utils/producer/aParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/hParams.d.ts +3 -0
- package/dist/methods/utils/producer/hParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/screenParams.d.ts +3 -0
- package/dist/methods/utils/producer/screenParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/vParams.d.ts +3 -0
- package/dist/methods/utils/producer/vParams.d.ts.map +1 -0
- package/dist/methods/utils/producer/videoCaptureConstraints.d.ts +145 -0
- package/dist/methods/utils/producer/videoCaptureConstraints.d.ts.map +1 -0
- package/dist/methods/utils/resolveMediaSFURoomApi.d.ts +4 -0
- package/dist/methods/utils/resolveMediaSFURoomApi.d.ts.map +1 -0
- package/dist/methods/utils/sleep.d.ts +21 -0
- package/dist/methods/utils/sleep.d.ts.map +1 -0
- package/dist/methods/utils/translationLanguages.d.ts +100 -0
- package/dist/methods/utils/translationLanguages.d.ts.map +1 -0
- package/dist/methods/utils/validateAlphanumeric.d.ts +21 -0
- package/dist/methods/utils/validateAlphanumeric.d.ts.map +1 -0
- package/dist/methods/utils/webrtc.d.ts +18 -0
- package/dist/methods/utils/webrtc.d.ts.map +1 -0
- package/dist/methods/waiting/index.d.ts +2 -0
- package/dist/methods/waiting/index.d.ts.map +1 -0
- package/dist/methods/waiting/launchWaiting.d.ts +23 -0
- package/dist/methods/waiting/launchWaiting.d.ts.map +1 -0
- package/dist/methods/waiting/respondToWaiting.d.ts +40 -0
- package/dist/methods/waiting/respondToWaiting.d.ts.map +1 -0
- package/dist/methods/welcome/handleWelcomeRequest.d.ts +47 -0
- package/dist/methods/welcome/handleWelcomeRequest.d.ts.map +1 -0
- package/dist/methods/welcome/index.d.ts +3 -0
- package/dist/methods/welcome/index.d.ts.map +1 -0
- package/dist/methods/whiteboard/captureCanvasStream.d.ts +38 -0
- package/dist/methods/whiteboard/captureCanvasStream.d.ts.map +1 -0
- package/dist/methods/whiteboard/handleStartWhiteboard.d.ts +31 -0
- package/dist/methods/whiteboard/handleStartWhiteboard.d.ts.map +1 -0
- package/dist/methods/whiteboard/handleStopWhiteboard.d.ts +25 -0
- package/dist/methods/whiteboard/handleStopWhiteboard.d.ts.map +1 -0
- package/dist/methods/whiteboard/index.d.ts +5 -0
- package/dist/methods/whiteboard/index.d.ts.map +1 -0
- package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts +23 -0
- package/dist/methods/whiteboard/launchConfigureWhiteboard.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinConRoom.d.ts +54 -0
- package/dist/producers/producerEmits/joinConRoom.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinLocalRoom.d.ts +30 -0
- package/dist/producers/producerEmits/joinLocalRoom.d.ts.map +1 -0
- package/dist/producers/producerEmits/joinRoom.d.ts +35 -0
- package/dist/producers/producerEmits/joinRoom.d.ts.map +1 -0
- package/dist/readme/mediasfu-platform-capabilities.webp +0 -0
- package/dist/sockets/SocketManager.d.ts +102 -0
- package/dist/sockets/SocketManager.d.ts.map +1 -0
- package/dist/types/shared-base-types.d.ts +656 -0
- package/dist/types/shared-base-types.d.ts.map +1 -0
- package/dist/types/types.d.ts +124 -0
- package/dist/types/types.d.ts.map +1 -0
- package/package.json +106 -99
- package/src/consumers/connectSendTransportScreen.ts +4 -1
- package/src/consumers/createSendTransport.ts +33 -28
- package/src/consumers/streamSuccessVideo.ts +34 -5
- package/src/index.native.ts +24 -1
- package/src/index.ts +5 -0
- package/src/methods/exit/confirmExit.ts +11 -4
- package/src/methods/utils/getParticipantMedia.ts +112 -0
- package/src/methods/utils/headless/getCurrentParams.ts +44 -0
- package/src/methods/utils/headless/getMediaStreams.ts +256 -0
- package/src/methods/utils/headless/getRoomReadiness.ts +49 -0
- package/src/methods/utils/headless/headlessTypes.ts +102 -0
- package/src/methods/utils/headless/index.ts +28 -0
- package/src/methods/utils/headless/mediaPermissions.ts +124 -0
- package/src/methods/utils/headless/mediaProduction.ts +505 -0
- package/src/methods/utils/headless/moderation.ts +455 -0
- package/src/methods/utils/headless/participantState.ts +254 -0
- package/src/methods/utils/headless/playback.ts +336 -0
- package/src/methods/utils/headless/roomActions.ts +230 -0
- package/src/methods/utils/headless/sessionControls.ts +335 -0
- package/src/methods/utils/headless/sessionExtras.ts +593 -0
- package/src/methods/utils/headless/sessionFeatures.ts +480 -0
- package/src/methods/utils/headless/viewerSession.ts +246 -0
- package/src/methods/utils/headless/virtualBackground.ts +265 -0
- package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
import { HeadlessActionResult } from './roomActions';
|
|
3
|
+
export type ProducerKind = 'video' | 'audio' | 'screen';
|
|
4
|
+
export interface CaptureLimits {
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
frameRate: number;
|
|
8
|
+
}
|
|
9
|
+
export interface GetCaptureLimitsOptions extends HeadlessOptions {
|
|
10
|
+
/** Camera and screen share have separate ceilings. Defaults to camera. */
|
|
11
|
+
kind?: ProducerKind;
|
|
12
|
+
}
|
|
13
|
+
export type GetCaptureLimitsType = (options: GetCaptureLimitsOptions) => CaptureLimits;
|
|
14
|
+
/**
|
|
15
|
+
* The room's allowed capture ceiling — the same `vidCons` / `frameRate` that
|
|
16
|
+
* `clickVideo` feeds to `getUserMedia`. Zero means "no ceiling published".
|
|
17
|
+
*/
|
|
18
|
+
export declare function getCaptureLimits({ parameters, kind }: GetCaptureLimitsOptions): CaptureLimits;
|
|
19
|
+
export interface ProduceMediaOptions extends HeadlessOptions {
|
|
20
|
+
/** The stream to publish. Must carry at least one live track of the right kind. */
|
|
21
|
+
stream: MediaStream;
|
|
22
|
+
/** What to publish it as. */
|
|
23
|
+
kind: ProducerKind;
|
|
24
|
+
/**
|
|
25
|
+
* Publish even when the source exceeds the room's `vidCons`/`frameRate`
|
|
26
|
+
* ceiling and cannot be clamped. Off by default: the ceiling is a room
|
|
27
|
+
* entitlement, so bypassing it must be a deliberate, visible choice.
|
|
28
|
+
*/
|
|
29
|
+
allowUnconstrained?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export type ProduceMediaType = (options: ProduceMediaOptions) => Promise<HeadlessActionResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Publish **any** MediaStream to the room — not just the camera or microphone.
|
|
34
|
+
*
|
|
35
|
+
* `clickVideo` / `clickAudio` call `getUserMedia` internally, so they can only
|
|
36
|
+
* ever publish a real device. Anything else — a `<canvas>` capture, a `<video>`
|
|
37
|
+
* element playing a file, a Web Audio destination, a processed or synthesised
|
|
38
|
+
* track, a virtual camera — previously required monkey-patching
|
|
39
|
+
* `navigator.mediaDevices.getUserMedia` around the call, which is racy and
|
|
40
|
+
* leaks if the control throws. This publishes your stream directly.
|
|
41
|
+
*
|
|
42
|
+
* The stream stays yours: stop its tracks when you are done, or call
|
|
43
|
+
* {@link stopProducing} to tear the producer down first.
|
|
44
|
+
*
|
|
45
|
+
* @example Publish a canvas as your camera
|
|
46
|
+
* ```ts
|
|
47
|
+
* import { produceMedia } from 'mediasfu-shared';
|
|
48
|
+
*
|
|
49
|
+
* const canvas = document.querySelector('canvas')!;
|
|
50
|
+
* const stream = canvas.captureStream(30);
|
|
51
|
+
* await produceMedia({ parameters, stream, kind: 'video' });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @example Publish a video file's audio and video
|
|
55
|
+
* ```ts
|
|
56
|
+
* const el = document.querySelector('video')!;
|
|
57
|
+
* const stream = (el as any).captureStream();
|
|
58
|
+
* await produceMedia({ parameters, stream, kind: 'video' });
|
|
59
|
+
* await produceMedia({ parameters, stream, kind: 'audio' });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function produceMedia({ parameters, stream, kind, allowUnconstrained, }: ProduceMediaOptions): Promise<HeadlessActionResult>;
|
|
63
|
+
export interface StopProducingOptions extends HeadlessOptions {
|
|
64
|
+
kind: ProducerKind;
|
|
65
|
+
}
|
|
66
|
+
export type StopProducingType = (options: StopProducingOptions) => Promise<HeadlessActionResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Tear down one of your producers without touching the others.
|
|
69
|
+
*
|
|
70
|
+
* `clickVideo`/`clickAudio` toggle capture *and* transport together. When you
|
|
71
|
+
* published a custom stream you usually want to stop only the transport and
|
|
72
|
+
* keep owning the stream (to swap sources without a visible gap, for example).
|
|
73
|
+
*
|
|
74
|
+
* @example Swap the published camera for a canvas without dropping the call
|
|
75
|
+
* ```ts
|
|
76
|
+
* await stopProducing({ parameters, kind: 'video' });
|
|
77
|
+
* await produceMedia({ parameters, stream: canvasStream, kind: 'video' });
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function stopProducing({ parameters, kind, }: StopProducingOptions): Promise<HeadlessActionResult>;
|
|
81
|
+
export interface ProduceCanvasOptions extends HeadlessOptions {
|
|
82
|
+
canvas: HTMLCanvasElement;
|
|
83
|
+
/** Capture frame rate. Defaults to 30. */
|
|
84
|
+
frameRate?: number;
|
|
85
|
+
/** Publish as the camera (default) or as a screen share. */
|
|
86
|
+
as?: 'video' | 'screen';
|
|
87
|
+
}
|
|
88
|
+
export type ProduceCanvasType = (options: ProduceCanvasOptions) => Promise<HeadlessActionResult & {
|
|
89
|
+
stream: MediaStream | null;
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Publish a `<canvas>` as video — slides, a whiteboard, a game, a generated
|
|
93
|
+
* overlay, a test pattern.
|
|
94
|
+
*
|
|
95
|
+
* Returns the captured stream so you can stop its tracks when finished.
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* ```ts
|
|
99
|
+
* const { ok, stream } = await produceCanvas({ parameters, canvas, frameRate: 15 });
|
|
100
|
+
* // later
|
|
101
|
+
* stream?.getTracks().forEach((track) => track.stop());
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare function produceCanvas({ parameters, canvas, frameRate, as, }: ProduceCanvasOptions): Promise<HeadlessActionResult & {
|
|
105
|
+
stream: MediaStream | null;
|
|
106
|
+
}>;
|
|
107
|
+
export interface ProduceElementOptions extends HeadlessOptions {
|
|
108
|
+
/** A playing `<video>` or `<audio>` element. */
|
|
109
|
+
element: HTMLMediaElement;
|
|
110
|
+
/** Publish the video track. Defaults to true for `<video>`. */
|
|
111
|
+
withVideo?: boolean;
|
|
112
|
+
/** Publish the audio track. Defaults to true. */
|
|
113
|
+
withAudio?: boolean;
|
|
114
|
+
}
|
|
115
|
+
export type ProduceElementType = (options: ProduceElementOptions) => Promise<HeadlessActionResult & {
|
|
116
|
+
stream: MediaStream | null;
|
|
117
|
+
}>;
|
|
118
|
+
/**
|
|
119
|
+
* Publish a playing `<video>` or `<audio>` element — media co-watching, a
|
|
120
|
+
* pre-recorded intro, background music, an HLS or MP4 source.
|
|
121
|
+
*
|
|
122
|
+
* The element must actually be playing: a paused element captures no frames, and
|
|
123
|
+
* browsers block autoplay with audio until the user has interacted with the page.
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```ts
|
|
127
|
+
* const el = document.querySelector('video')!;
|
|
128
|
+
* await el.play();
|
|
129
|
+
* await produceElement({ parameters, element: el });
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare function produceElement({ parameters, element, withVideo, withAudio, }: ProduceElementOptions): Promise<HeadlessActionResult & {
|
|
133
|
+
stream: MediaStream | null;
|
|
134
|
+
}>;
|
|
135
|
+
export interface ProduceDisplayOptions extends HeadlessOptions {
|
|
136
|
+
/** Passed to `getDisplayMedia`. Defaults to `{ video: true }`. */
|
|
137
|
+
constraints?: DisplayMediaStreamOptions;
|
|
138
|
+
/** Also publish the captured system/tab audio when the user shares it. */
|
|
139
|
+
withAudio?: boolean;
|
|
140
|
+
}
|
|
141
|
+
export type ProduceDisplayType = (options: ProduceDisplayOptions) => Promise<HeadlessActionResult & {
|
|
142
|
+
stream: MediaStream | null;
|
|
143
|
+
}>;
|
|
144
|
+
/**
|
|
145
|
+
* Start a screen share from a headless surface.
|
|
146
|
+
*
|
|
147
|
+
* `getDisplayMedia` must be called from a user gesture, so invoke this directly
|
|
148
|
+
* in a click handler — not after an `await`.
|
|
149
|
+
*
|
|
150
|
+
* @example
|
|
151
|
+
* ```tsx
|
|
152
|
+
* <button onClick={() => produceDisplay({ parameters })}>Share screen</button>
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
export declare function produceDisplay({ parameters, constraints, withAudio, }: ProduceDisplayOptions): Promise<HeadlessActionResult & {
|
|
156
|
+
stream: MediaStream | null;
|
|
157
|
+
}>;
|
|
158
|
+
export interface ReplaceProducerTrackOptions extends HeadlessOptions {
|
|
159
|
+
/** The replacement track. Its kind decides which producer is swapped. */
|
|
160
|
+
track: MediaStreamTrack;
|
|
161
|
+
}
|
|
162
|
+
export type ReplaceProducerTrackType = (options: ReplaceProducerTrackOptions) => Promise<HeadlessActionResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Swap the track on a live producer without renegotiating.
|
|
165
|
+
*
|
|
166
|
+
* This is the seamless path for switching camera, applying or removing a
|
|
167
|
+
* background effect, or moving between media sources: remote participants see
|
|
168
|
+
* no interruption, because the producer and its transport stay up.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```ts
|
|
172
|
+
* const processed = applyBackgroundBlur(cameraTrack);
|
|
173
|
+
* await replaceProducerTrack({ parameters, track: processed });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function replaceProducerTrack({ parameters, track, }: ReplaceProducerTrackOptions): Promise<HeadlessActionResult>;
|
|
177
|
+
//# sourceMappingURL=mediaProduction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaProduction.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/mediaProduction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
import { HeadlessActionResult } from './roomActions';
|
|
3
|
+
/** The co-host responsibility keys MediaSFU recognises. */
|
|
4
|
+
export type ModerationArea = 'media' | 'participants' | 'chat' | 'waiting';
|
|
5
|
+
export interface ModerationPermissions {
|
|
6
|
+
/** True when the local user is the host (islevel '2'). */
|
|
7
|
+
isHost: boolean;
|
|
8
|
+
/** True when the local user is the room's co-host. */
|
|
9
|
+
isCoHost: boolean;
|
|
10
|
+
/** Turn other participants' camera/mic/screen off. */
|
|
11
|
+
canControlMedia: boolean;
|
|
12
|
+
/** Remove or ban participants. */
|
|
13
|
+
canManageParticipants: boolean;
|
|
14
|
+
/** Moderate chat. */
|
|
15
|
+
canManageChat: boolean;
|
|
16
|
+
/** Admit or deny people in the waiting room. */
|
|
17
|
+
canManageWaitingRoom: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type GetModerationPermissionsType = (options: HeadlessOptions) => ModerationPermissions;
|
|
20
|
+
/**
|
|
21
|
+
* What the local user is allowed to moderate.
|
|
22
|
+
*
|
|
23
|
+
* MediaSFU's rule is `islevel === '2' || (coHost === member && <area>.value)`,
|
|
24
|
+
* and it is enforced *inside* each action — an unauthorised call is swallowed
|
|
25
|
+
* with an alert rather than returning an error. That makes it very easy to ship
|
|
26
|
+
* a moderation button that silently does nothing for co-hosts. Gate your UI on
|
|
27
|
+
* this instead.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```ts
|
|
31
|
+
* import { getModerationPermissions } from 'mediasfu-shared';
|
|
32
|
+
*
|
|
33
|
+
* const perms = getModerationPermissions({ parameters });
|
|
34
|
+
* <button disabled={!perms.canControlMedia}>Mute everyone</button>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function getModerationPermissions({ parameters, }: HeadlessOptions): ModerationPermissions;
|
|
38
|
+
export interface SetParticipantMediaOptions extends HeadlessOptions {
|
|
39
|
+
/** Participant display name. */
|
|
40
|
+
name?: string;
|
|
41
|
+
/** Participant id. Takes precedence over `name`. */
|
|
42
|
+
id?: string;
|
|
43
|
+
/** Which media to switch off. */
|
|
44
|
+
kind: 'audio' | 'video' | 'screenshare' | 'all';
|
|
45
|
+
}
|
|
46
|
+
export type SetParticipantMediaType = (options: SetParticipantMediaOptions) => Promise<HeadlessActionResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Turn a participant's media off as host or authorised co-host.
|
|
49
|
+
*
|
|
50
|
+
* This is one-directional by design: MediaSFU lets a moderator *stop* someone's
|
|
51
|
+
* camera, microphone or screen share, but cannot start it on their behalf — the
|
|
52
|
+
* participant must re-enable it themselves.
|
|
53
|
+
*
|
|
54
|
+
* The SDK's own `controlMedia` consumer only emits for `type: 'audio'` and
|
|
55
|
+
* `type: 'video'`; `'all'` and `'screenshare'` fall through its guard and do
|
|
56
|
+
* nothing. This helper emits the `controlMedia` event directly with the same
|
|
57
|
+
* permission and self-protection checks applied uniformly, so every kind works.
|
|
58
|
+
* Hosts (`islevel === '2'`) cannot be muted by anyone, including other hosts.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import { setParticipantMedia } from 'mediasfu-shared';
|
|
63
|
+
*
|
|
64
|
+
* await setParticipantMedia({ parameters, name: 'Paul', kind: 'video' });
|
|
65
|
+
* await setParticipantMedia({ parameters, name: 'Paul', kind: 'all' });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function setParticipantMedia({ parameters, name, id, kind, }: SetParticipantMediaOptions): Promise<HeadlessActionResult>;
|
|
69
|
+
export interface ModerateParticipantOptions extends HeadlessOptions {
|
|
70
|
+
name?: string;
|
|
71
|
+
id?: string;
|
|
72
|
+
}
|
|
73
|
+
/** Mute a participant's microphone. See {@link setParticipantMedia}. */
|
|
74
|
+
export declare function muteParticipant(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
|
|
75
|
+
/** Turn a participant's camera off. See {@link setParticipantMedia}. */
|
|
76
|
+
export declare function disableParticipantVideo(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
|
|
77
|
+
/** Stop a participant's screen share. See {@link setParticipantMedia}. */
|
|
78
|
+
export declare function stopParticipantScreenShare(options: ModerateParticipantOptions): Promise<HeadlessActionResult>;
|
|
79
|
+
export interface MuteEveryoneOptions extends HeadlessOptions {
|
|
80
|
+
/** Which media to switch off for everyone. Defaults to `audio`. */
|
|
81
|
+
kind?: 'audio' | 'video' | 'screenshare' | 'all';
|
|
82
|
+
}
|
|
83
|
+
export type MuteEveryoneType = (options: MuteEveryoneOptions) => Promise<HeadlessActionResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Turn media off for every non-host participant.
|
|
86
|
+
*
|
|
87
|
+
* MediaSFU has no bulk primitive, so this fans out per participant. Hosts and
|
|
88
|
+
* the local user are skipped. Succeeds if at least one participant was
|
|
89
|
+
* actioned; reports the failure otherwise.
|
|
90
|
+
*/
|
|
91
|
+
export declare function muteEveryone({ parameters, kind, }: MuteEveryoneOptions): Promise<HeadlessActionResult>;
|
|
92
|
+
export type RemoveParticipantType = (options: ModerateParticipantOptions) => Promise<HeadlessActionResult>;
|
|
93
|
+
/**
|
|
94
|
+
* Remove a participant from the room.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* await removeParticipant({ parameters, name: 'Paul' });
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare function removeParticipant({ parameters, name, id, }: ModerateParticipantOptions): Promise<HeadlessActionResult>;
|
|
102
|
+
export interface RespondToWaitingParticipantOptions extends HeadlessOptions {
|
|
103
|
+
name?: string;
|
|
104
|
+
id?: string;
|
|
105
|
+
/** True to admit, false to deny. */
|
|
106
|
+
admit: boolean;
|
|
107
|
+
}
|
|
108
|
+
export type RespondToWaitingParticipantType = (options: RespondToWaitingParticipantOptions) => Promise<HeadlessActionResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Admit or deny somebody waiting to join.
|
|
111
|
+
*
|
|
112
|
+
* Reads `waitingRoomList` off the bag, so you only supply the person's name or
|
|
113
|
+
* id and whether to let them in.
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* ```ts
|
|
117
|
+
* for (const person of parameters.waitingRoomList ?? []) {
|
|
118
|
+
* await respondToWaitingParticipant({ parameters, id: person.id, admit: true });
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function respondToWaitingParticipant({ parameters, name, id, admit, }: RespondToWaitingParticipantOptions): Promise<HeadlessActionResult>;
|
|
123
|
+
export interface RespondToParticipantRequestOptions extends HeadlessOptions {
|
|
124
|
+
/** The request id from `parameters.requestList`. */
|
|
125
|
+
requestId?: string;
|
|
126
|
+
/** Or match by requester name. */
|
|
127
|
+
name?: string;
|
|
128
|
+
/** True to approve, false to reject. */
|
|
129
|
+
approve: boolean;
|
|
130
|
+
}
|
|
131
|
+
export type RespondToParticipantRequestType = (options: RespondToParticipantRequestOptions) => Promise<HeadlessActionResult>;
|
|
132
|
+
/**
|
|
133
|
+
* Approve or reject a participant request (raise hand, ask to share, ask to
|
|
134
|
+
* speak). Requests live on `parameters.requestList`; each carries an `icon`
|
|
135
|
+
* naming the capability being asked for.
|
|
136
|
+
*/
|
|
137
|
+
export declare function respondToParticipantRequest({ parameters, requestId, name, approve, }: RespondToParticipantRequestOptions): Promise<HeadlessActionResult>;
|
|
138
|
+
export interface SetCoHostOptions extends HeadlessOptions {
|
|
139
|
+
/** Participant to promote. Pass '' to clear the current co-host. */
|
|
140
|
+
name: string;
|
|
141
|
+
/** Areas the co-host may moderate. Defaults to media + participants. */
|
|
142
|
+
areas?: ModerationArea[];
|
|
143
|
+
}
|
|
144
|
+
export type SetCoHostType = (options: SetCoHostOptions) => Promise<HeadlessActionResult>;
|
|
145
|
+
/**
|
|
146
|
+
* Promote a participant to co-host and choose what they may moderate.
|
|
147
|
+
*
|
|
148
|
+
* Only the host may do this. Areas not listed are explicitly disabled, so this
|
|
149
|
+
* sets the complete responsibility set rather than merging with the previous one.
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```ts
|
|
153
|
+
* await setCoHost({ parameters, name: 'Paul', areas: ['media', 'waiting'] });
|
|
154
|
+
* ```
|
|
155
|
+
*/
|
|
156
|
+
export declare function setCoHost({ parameters, name, areas, }: SetCoHostOptions): Promise<HeadlessActionResult>;
|
|
157
|
+
//# sourceMappingURL=moderation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moderation.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/moderation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Participant } from '../../../types/types';
|
|
2
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
3
|
+
export interface ParticipantMediaState {
|
|
4
|
+
participant: Participant | null;
|
|
5
|
+
/** The participant's own display name, or '' when unresolved. */
|
|
6
|
+
name: string;
|
|
7
|
+
/** True when this row is the local user. */
|
|
8
|
+
isSelf: boolean;
|
|
9
|
+
/** True when the participant is a host (islevel '2'). */
|
|
10
|
+
isHost: boolean;
|
|
11
|
+
/** True when the participant is publishing a camera. */
|
|
12
|
+
hasVideo: boolean;
|
|
13
|
+
/** True when the participant is publishing a microphone. */
|
|
14
|
+
hasAudio: boolean;
|
|
15
|
+
/** True when the participant's microphone is muted. */
|
|
16
|
+
muted: boolean;
|
|
17
|
+
/** The camera producer id, or '' when not publishing. */
|
|
18
|
+
videoProducerId: string;
|
|
19
|
+
/** The microphone producer id, or '' when not publishing. */
|
|
20
|
+
audioProducerId: string;
|
|
21
|
+
}
|
|
22
|
+
export interface GetParticipantMediaStateOptions extends HeadlessOptions {
|
|
23
|
+
/** Match by display name. */
|
|
24
|
+
name?: string;
|
|
25
|
+
/** Match by participant id. Takes precedence over `name`. */
|
|
26
|
+
id?: string;
|
|
27
|
+
}
|
|
28
|
+
export type GetParticipantMediaStateType = (options: GetParticipantMediaStateOptions) => ParticipantMediaState;
|
|
29
|
+
/**
|
|
30
|
+
* Whether a participant is publishing, and what to label them.
|
|
31
|
+
*
|
|
32
|
+
* "Is this person on camera?" is not `participant.muted` and not the presence of
|
|
33
|
+
* a stream in your grid — it is whether `videoID` holds a real producer
|
|
34
|
+
* reference. MediaSFU writes the string `'none'` rather than an empty value when
|
|
35
|
+
* there is no producer, which is why a naive truthiness check reports everyone
|
|
36
|
+
* as publishing.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { getParticipantMediaState } from 'mediasfu-shared';
|
|
41
|
+
*
|
|
42
|
+
* const paul = getParticipantMediaState({ parameters, name: 'Paul' });
|
|
43
|
+
* if (paul.hasVideo) renderCamera(paul.videoProducerId);
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export declare function getParticipantMediaState({ parameters, name, id, }: GetParticipantMediaStateOptions): ParticipantMediaState;
|
|
47
|
+
export type ListParticipantMediaStatesType = (options: HeadlessOptions) => ParticipantMediaState[];
|
|
48
|
+
/** {@link getParticipantMediaState} for everyone currently in the room. */
|
|
49
|
+
export declare function listParticipantMediaStates({ parameters, }: HeadlessOptions): ParticipantMediaState[];
|
|
50
|
+
export interface ActiveSpeaker {
|
|
51
|
+
/** Loudest participant's display name, or '' when the room is quiet. */
|
|
52
|
+
name: string;
|
|
53
|
+
/** That participant's average loudness. */
|
|
54
|
+
level: number;
|
|
55
|
+
participant: Participant | null;
|
|
56
|
+
}
|
|
57
|
+
export type GetActiveSpeakerType = (options: HeadlessOptions) => ActiveSpeaker;
|
|
58
|
+
/**
|
|
59
|
+
* The loudest participant right now.
|
|
60
|
+
*
|
|
61
|
+
* Reads `audioDecibels`, which the SDK maintains per participant. MediaSFU's own
|
|
62
|
+
* grids treat roughly 127.5 as the noise floor, so quieter rooms report no
|
|
63
|
+
* active speaker rather than flickering between people.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* const speaker = getActiveSpeaker({ parameters });
|
|
68
|
+
* if (speaker.name) highlight(speaker.name);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function getActiveSpeaker({ parameters }: HeadlessOptions): ActiveSpeaker;
|
|
72
|
+
export interface MediaDeviceList {
|
|
73
|
+
cameras: MediaDeviceInfo[];
|
|
74
|
+
microphones: MediaDeviceInfo[];
|
|
75
|
+
}
|
|
76
|
+
export type ListMediaDevicesType = (options: HeadlessOptions) => Promise<MediaDeviceList>;
|
|
77
|
+
/**
|
|
78
|
+
* Cameras and microphones available for a device picker.
|
|
79
|
+
*
|
|
80
|
+
* Uses the SDK's own `getMediaDevicesList` when the bag exposes it, so the
|
|
81
|
+
* result reflects the same `mediaDevices` instance the SDK captures with;
|
|
82
|
+
* otherwise falls back to `navigator.mediaDevices.enumerateDevices()`.
|
|
83
|
+
*
|
|
84
|
+
* Labels are blank until the user has granted permission once — call this after
|
|
85
|
+
* the first successful capture if you need readable device names.
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```ts
|
|
89
|
+
* const { cameras } = await listMediaDevices({ parameters });
|
|
90
|
+
* await runMediaControl({
|
|
91
|
+
* parameters,
|
|
92
|
+
* control: 'switchVideo',
|
|
93
|
+
* extra: { videoPreference: cameras[1].deviceId },
|
|
94
|
+
* });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function listMediaDevices({ parameters, }: HeadlessOptions): Promise<MediaDeviceList>;
|
|
98
|
+
export interface SelectedDevices {
|
|
99
|
+
/** Device id of the camera currently in use, or '' when none is selected. */
|
|
100
|
+
cameraId: string;
|
|
101
|
+
/** Device id of the microphone currently in use, or '' when none is selected. */
|
|
102
|
+
microphoneId: string;
|
|
103
|
+
/** Cameras the SDK has enumerated for this room. */
|
|
104
|
+
cameras: MediaDeviceInfo[];
|
|
105
|
+
/** Microphones the SDK has enumerated for this room. */
|
|
106
|
+
microphones: MediaDeviceInfo[];
|
|
107
|
+
}
|
|
108
|
+
export type GetSelectedDevicesType = (options: HeadlessOptions) => SelectedDevices;
|
|
109
|
+
/**
|
|
110
|
+
* Which camera and microphone the SDK is actually using, plus the device lists
|
|
111
|
+
* it has already enumerated.
|
|
112
|
+
*
|
|
113
|
+
* Unlike {@link listMediaDevices} this is synchronous and needs no permission
|
|
114
|
+
* prompt: it reads `userDefaultVideoInputDevice` / `userDefaultAudioInputDevice`
|
|
115
|
+
* and the `videoInputs` / `audioInputs` the SDK populated during setup. Use it
|
|
116
|
+
* to mark the current entry in a device picker; use `listMediaDevices` when you
|
|
117
|
+
* need a freshly enumerated list.
|
|
118
|
+
*
|
|
119
|
+
* @example
|
|
120
|
+
* ```tsx
|
|
121
|
+
* const { cameras, cameraId } = getSelectedDevices({ parameters });
|
|
122
|
+
* <select value={cameraId} onChange={(e) => room.controls.selectCamera(e.target.value)}>
|
|
123
|
+
* {cameras.map((d) => <option key={d.deviceId} value={d.deviceId}>{d.label}</option>)}
|
|
124
|
+
* </select>
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export declare function getSelectedDevices({ parameters }: HeadlessOptions): SelectedDevices;
|
|
128
|
+
//# sourceMappingURL=participantState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"participantState.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/participantState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AAkBtE,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,OAAO,CAAC;IAChB,yDAAyD;IACzD,MAAM,EAAE,OAAO,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,EAAE,OAAO,CAAC;IAClB,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAC;IACf,yDAAyD;IACzD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,+BAAgC,SAAQ,eAAe;IACtE,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,4BAA4B,GAAG,CACzC,OAAO,EAAE,+BAA+B,KACrC,qBAAqB,CAAC;AAE3B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CAAC,EACvC,UAAU,EACV,IAAS,EACT,EAAO,GACR,EAAE,+BAA+B,GAAG,qBAAqB,CA0BzD;AAED,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,eAAe,KACrB,qBAAqB,EAAE,CAAC;AAE7B,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,EACzC,UAAU,GACX,EAAE,eAAe,GAAG,qBAAqB,EAAE,CAS3C;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,aAAa,CAAC;AAE/E;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,aAAa,CAkB/E;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,CACjC,OAAO,EAAE,eAAe,KACrB,OAAO,CAAC,eAAe,CAAC,CAAC;AAE9B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,gBAAgB,CAAC,EACrC,UAAU,GACX,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAqB5C;AAED,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,wDAAwD;IACxD,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,eAAe,KAAK,eAAe,CAAC;AAEnF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,eAAe,CAQnF"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
/**
|
|
3
|
+
* Explicit playback: HLS and WHEP.
|
|
4
|
+
*
|
|
5
|
+
* **This is deliberately not part of the media-card surface.** WebRTC media is
|
|
6
|
+
* *auto-consumed* — the SDK subscribes for you, and `getRemoteVideoStreams` /
|
|
7
|
+
* `getAudioGridComponents` hand you what already arrived. HLS and WHEP are the
|
|
8
|
+
* opposite: nothing is consumed until you ask, because each one opens a
|
|
9
|
+
* connection the room did not ask for and would otherwise pay for.
|
|
10
|
+
*
|
|
11
|
+
* So the API here is imperative — `attachPlayback` / `detachPlayback` — rather
|
|
12
|
+
* than a reactive getter. Mixing these into the media cards would mean every
|
|
13
|
+
* room silently opened an HLS or WHEP connection whether or not anything
|
|
14
|
+
* rendered it.
|
|
15
|
+
*
|
|
16
|
+
* When to reach for which:
|
|
17
|
+
*
|
|
18
|
+
* | | latency | cost per viewer | use it for |
|
|
19
|
+
* | --- | --- | --- | --- |
|
|
20
|
+
* | WebRTC (auto) | sub-second | an SFU consumer | anyone who takes part |
|
|
21
|
+
* | WHEP | sub-second | an SFU consumer | standards-based egress to non-SDK players |
|
|
22
|
+
* | HLS | seconds | a CDN request | audiences too large to fan out over the SFU |
|
|
23
|
+
*
|
|
24
|
+
* A large passive audience on HLS is the reason this exists: it moves the
|
|
25
|
+
* expensive part — media fan-out — off the SFU.
|
|
26
|
+
*/
|
|
27
|
+
export type PlaybackProtocol = 'hls' | 'whep';
|
|
28
|
+
export interface PlaybackSource {
|
|
29
|
+
protocol: PlaybackProtocol;
|
|
30
|
+
url: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Playback URLs the server has published for this room.
|
|
34
|
+
*
|
|
35
|
+
* Returns nothing when the room has none — HLS and WHEP are provisioned
|
|
36
|
+
* server-side, so absence means "not enabled for this room", not an error.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getPlaybackSources({ parameters }: HeadlessOptions): PlaybackSource[];
|
|
39
|
+
/** A running playback. Always `detachPlayback` it — none of this is garbage-collected. */
|
|
40
|
+
export interface PlaybackHandle {
|
|
41
|
+
protocol: PlaybackProtocol;
|
|
42
|
+
url: string;
|
|
43
|
+
/** The media, when the protocol produces one directly (WHEP). */
|
|
44
|
+
stream: MediaStream | null;
|
|
45
|
+
/** Release the connection, the player, and the element's source. */
|
|
46
|
+
detach: () => void;
|
|
47
|
+
}
|
|
48
|
+
export interface AttachPlaybackOptions {
|
|
49
|
+
/** Playback URL, or a `PlaybackSource` from `getPlaybackSources`. */
|
|
50
|
+
source: string | PlaybackSource;
|
|
51
|
+
/** The element to play into. Required for HLS; optional for WHEP. */
|
|
52
|
+
video?: HTMLVideoElement | null;
|
|
53
|
+
/** Force a protocol. Inferred from the URL when omitted. */
|
|
54
|
+
protocol?: PlaybackProtocol;
|
|
55
|
+
/**
|
|
56
|
+
* Factory returning an hls.js instance, e.g. `() => new Hls({ lowLatencyMode: true })`.
|
|
57
|
+
*
|
|
58
|
+
* Required for HLS anywhere except Safari, and injected rather than imported
|
|
59
|
+
* so hls.js never becomes a dependency of this SDK — most rooms never play
|
|
60
|
+
* HLS, and React Native cannot use it at all.
|
|
61
|
+
*/
|
|
62
|
+
hlsFactory?: () => any;
|
|
63
|
+
/** Extra headers for the WHEP POST, e.g. an auth token. */
|
|
64
|
+
headers?: Record<string, string>;
|
|
65
|
+
/** ICE servers for WHEP. Defaults to the room's own when available. */
|
|
66
|
+
iceServers?: RTCIceServer[];
|
|
67
|
+
}
|
|
68
|
+
export type AttachPlaybackType = (options: AttachPlaybackOptions) => Promise<PlaybackHandle>;
|
|
69
|
+
/**
|
|
70
|
+
* Start an explicit playback.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* import Hls from 'hls.js';
|
|
75
|
+
*
|
|
76
|
+
* const [source] = getPlaybackSources({ parameters });
|
|
77
|
+
* const handle = await attachPlayback({
|
|
78
|
+
* source,
|
|
79
|
+
* video: videoRef.current,
|
|
80
|
+
* hlsFactory: () => new Hls({ lowLatencyMode: true }),
|
|
81
|
+
* });
|
|
82
|
+
* // later, always:
|
|
83
|
+
* detachPlayback(handle);
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare function attachPlayback({ source, video, protocol, hlsFactory, headers, iceServers, }: AttachPlaybackOptions): Promise<PlaybackHandle>;
|
|
87
|
+
/** Stop a playback and release everything it holds. Safe to call twice. */
|
|
88
|
+
export declare function detachPlayback(handle: PlaybackHandle | null | undefined): void;
|
|
89
|
+
export interface PublishWhipOptions {
|
|
90
|
+
/** The WHIP endpoint. */
|
|
91
|
+
url: string;
|
|
92
|
+
/** The stream to publish. */
|
|
93
|
+
stream: MediaStream;
|
|
94
|
+
headers?: Record<string, string>;
|
|
95
|
+
iceServers?: RTCIceServer[];
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Publish a stream to a WHIP endpoint.
|
|
99
|
+
*
|
|
100
|
+
* The symmetric counterpart of WHEP, and equally explicit. This is *not* how
|
|
101
|
+
* you publish into a MediaSFU room — use `produceMedia` for that, which goes
|
|
102
|
+
* through the room's own transport and respects its capture entitlements. WHIP
|
|
103
|
+
* is for pushing to a standards-based ingest that is not this room.
|
|
104
|
+
*/
|
|
105
|
+
export declare function publishWhip({ url, stream, headers, iceServers, }: PublishWhipOptions): Promise<PlaybackHandle>;
|
|
106
|
+
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/playback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAsB,MAAM,iBAAiB,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,GAAG,cAAc,EAAE,CASpF;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,oEAAoE;IACpE,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,qEAAqE;IACrE,KAAK,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,CAAC;IACvB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,uEAAuE;IACvE,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAkJD,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE7F;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAAC,EACnC,MAAM,EACN,KAAK,EACL,QAAQ,EACR,UAAU,EACV,OAAO,EACP,UAAU,GACX,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAUjD;AAED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAG9E;AAMD,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAC,EAChC,GAAG,EACH,MAAM,EACN,OAAY,EACZ,UAAU,GACX,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsC9C"}
|