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.
- package/HEADLESS_GUIDE.md +156 -0
- package/README.md +130 -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/index.cjs +80 -0
- package/dist/consumers/index.cjs.map +1 -0
- package/dist/consumers/index.d.ts +62 -0
- package/dist/consumers/index.d.ts.map +1 -0
- package/dist/consumers/index.js +80 -0
- package/dist/consumers/index.js.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-B0JS6d2b.js +3555 -0
- package/dist/getParticipantMedia-B0JS6d2b.js.map +1 -0
- package/dist/getParticipantMedia-CdcYqcbD.cjs +3554 -0
- package/dist/getParticipantMedia-CdcYqcbD.cjs.map +1 -0
- package/dist/index.cjs +2727 -13252
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +192 -11233
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2636 -13143
- package/dist/index.js.map +1 -1
- package/dist/index.native.cjs +352 -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 +352 -0
- package/dist/index.native.js.map +1 -0
- package/dist/joinLocalRoom-BdM1msQt.cjs +673 -0
- package/dist/joinLocalRoom-BdM1msQt.cjs.map +1 -0
- package/dist/joinLocalRoom-CvteNe4R.js +657 -0
- package/dist/joinLocalRoom-CvteNe4R.js.map +1 -0
- package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs +1222 -0
- package/dist/joinRoomOnMediaSFU-CC8RVJgr.cjs.map +1 -0
- package/dist/joinRoomOnMediaSFU-y6vJ1OBo.js +1223 -0
- package/dist/joinRoomOnMediaSFU-y6vJ1OBo.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.cjs +3975 -0
- package/dist/methods/index.cjs.map +1 -0
- package/dist/methods/index.d.ts +66 -0
- package/dist/methods/index.d.ts.map +1 -0
- package/dist/methods/index.js +3976 -0
- package/dist/methods/index.js.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/virtualBackgroundCompositor.d.ts +21 -0
- package/dist/methods/utils/virtualBackgroundCompositor.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/translationConsumerSwitch-C20MfNNq.cjs +509 -0
- package/dist/translationConsumerSwitch-C20MfNNq.cjs.map +1 -0
- package/dist/translationConsumerSwitch-zKuS5wgH.js +510 -0
- package/dist/translationConsumerSwitch-zKuS5wgH.js.map +1 -0
- package/dist/types/index.cjs +85 -0
- package/dist/types/index.cjs.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +85 -0
- package/dist/types/index.js.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/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js +5392 -0
- package/dist/updateParticipantAudioDecibels-DLd8Y-Fh.js.map +1 -0
- package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs +5391 -0
- package/dist/updateParticipantAudioDecibels-DPmHiy3K.cjs.map +1 -0
- package/dist/validateAlphanumeric-DKn5BsUP.cjs +15 -0
- package/dist/validateAlphanumeric-DKn5BsUP.cjs.map +1 -0
- package/dist/validateAlphanumeric-Dk1JB80W.js +16 -0
- package/dist/validateAlphanumeric-Dk1JB80W.js.map +1 -0
- package/package.json +106 -99
- package/src/ProducerClient/producerClientEmits/createDeviceClient.ts +1 -2
- package/src/ProducerClient/producerClientEmits/updateRoomParametersClient.ts +1 -1
- package/src/consumers/connectIps.ts +1 -1
- package/src/consumers/connectRecvTransport.ts +1 -1
- package/src/consumers/connectSendTransport.ts +1 -1
- package/src/consumers/connectSendTransportAudio.ts +1 -1
- package/src/consumers/connectSendTransportScreen.ts +5 -2
- package/src/consumers/connectSendTransportVideo.ts +1 -1
- package/src/consumers/createSendTransport.ts +34 -29
- package/src/consumers/disconnectSendTransportAudio.ts +1 -1
- package/src/consumers/disconnectSendTransportScreen.ts +1 -1
- package/src/consumers/disconnectSendTransportVideo.ts +1 -1
- package/src/consumers/index.ts +61 -0
- package/src/consumers/resumeSendTransportAudio.ts +1 -1
- package/src/consumers/signalNewConsumerTransport.ts +1 -2
- package/src/consumers/socketReceiveMethods/joinConsumeRoom.ts +1 -1
- package/src/consumers/socketReceiveMethods/newPipeProducer.ts +1 -1
- package/src/consumers/streamSuccessAudio.ts +1 -2
- package/src/consumers/streamSuccessAudioSwitch.ts +1 -2
- package/src/consumers/streamSuccessVideo.ts +35 -6
- package/src/index.native.ts +24 -1
- package/src/index.ts +7 -0
- package/src/methods/exit/confirmExit.ts +11 -4
- package/src/methods/socketReceive/getDomains.ts +1 -1
- 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 +280 -0
- package/src/methods/utils/resolveMediaSFURoomApi.ts +2 -2
- package/src/methods/utils/virtualBackgroundCompositor.ts +53 -0
- package/src/methods/whiteboard/captureCanvasStream.ts +2 -2
- package/src/producers/producerEmits/joinConRoom.ts +1 -1
- package/src/producers/producerEmits/joinRoom.ts +1 -1
- package/src/types/index.ts +1 -0
- package/src/types/shared-base-types.ts +2 -3
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
export interface RecordingNotice {
|
|
3
|
+
/** The SDK's current recording notice, or '' when there is none. */
|
|
4
|
+
message: string;
|
|
5
|
+
/** Formatted elapsed time as the SDK reports it (e.g. "00:12:04"). */
|
|
6
|
+
elapsed: string;
|
|
7
|
+
/** Elapsed seconds. */
|
|
8
|
+
elapsedSeconds: number;
|
|
9
|
+
/** True while pause/resume is permitted (the SDK enforces a cooldown). */
|
|
10
|
+
canPauseResume: boolean;
|
|
11
|
+
/** Pauses used so far. */
|
|
12
|
+
pausesUsed: number;
|
|
13
|
+
/** Pauses allowed for the active media type; 0 when unpublished. */
|
|
14
|
+
pauseLimit: number;
|
|
15
|
+
/** True when the pause allowance is exhausted. */
|
|
16
|
+
pauseLimitReached: boolean;
|
|
17
|
+
}
|
|
18
|
+
export type GetRecordingNoticeType = (options: HeadlessOptions) => RecordingNotice;
|
|
19
|
+
/**
|
|
20
|
+
* The user-facing side of recording: the notice, the timer, and the pause
|
|
21
|
+
* allowance.
|
|
22
|
+
*
|
|
23
|
+
* Pause limits are per media type — `recordingAudioPausesLimit` vs
|
|
24
|
+
* `recordingVideoPausesLimit` — and the SDK picks by `recordingMediaOptions`.
|
|
25
|
+
* Reading the wrong one reports the wrong allowance, which is why this is a
|
|
26
|
+
* helper rather than a field read. Complements `getRecordingState`, which
|
|
27
|
+
* covers only the start/pause/resume/stop status.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getRecordingNotice({ parameters }: HeadlessOptions): RecordingNotice;
|
|
30
|
+
export interface RecordingCapabilities {
|
|
31
|
+
/** Recording audio at all. */
|
|
32
|
+
audio: boolean;
|
|
33
|
+
/** Recording video at all. */
|
|
34
|
+
video: boolean;
|
|
35
|
+
/** Recording every participant, not just the active speaker. */
|
|
36
|
+
allParticipants: boolean;
|
|
37
|
+
/** Recording every participant's video. */
|
|
38
|
+
videoParticipants: boolean;
|
|
39
|
+
/** Adding an HLS output. */
|
|
40
|
+
hls: boolean;
|
|
41
|
+
/** Max people included in an audio recording; 0 when unpublished. */
|
|
42
|
+
audioPeopleLimit: number;
|
|
43
|
+
/** Max people included in a video recording; 0 when unpublished. */
|
|
44
|
+
videoPeopleLimit: number;
|
|
45
|
+
}
|
|
46
|
+
export type GetRecordingCapabilitiesType = (options: HeadlessOptions) => RecordingCapabilities;
|
|
47
|
+
/**
|
|
48
|
+
* What this room's plan actually permits recording.
|
|
49
|
+
*
|
|
50
|
+
* These are entitlement flags the server publishes per room, so a UI should
|
|
51
|
+
* gate on them rather than offering options the room will refuse.
|
|
52
|
+
*/
|
|
53
|
+
export declare function getRecordingCapabilities({ parameters, }: HeadlessOptions): RecordingCapabilities;
|
|
54
|
+
export interface TranslationPreference {
|
|
55
|
+
/** Language applied to every speaker, or null when unset. */
|
|
56
|
+
globalLanguage: string | null;
|
|
57
|
+
/** Per-speaker overrides, keyed by speaker id. */
|
|
58
|
+
perSpeaker: {
|
|
59
|
+
speakerId: string;
|
|
60
|
+
language: string | null;
|
|
61
|
+
wantOriginal: boolean;
|
|
62
|
+
}[];
|
|
63
|
+
}
|
|
64
|
+
export interface TranslationState extends TranslationPreference {
|
|
65
|
+
/** True when any translation is currently being consumed. */
|
|
66
|
+
active: boolean;
|
|
67
|
+
/** Languages the room currently has translation producers for. */
|
|
68
|
+
availableLanguages: string[];
|
|
69
|
+
}
|
|
70
|
+
export type GetTranslationStateType = (options: HeadlessOptions) => TranslationState;
|
|
71
|
+
/**
|
|
72
|
+
* What the listener is currently hearing, and what is on offer.
|
|
73
|
+
*
|
|
74
|
+
* `listenerTranslationPreferences.perSpeaker` is a `Map` on the bag, which does
|
|
75
|
+
* not survive serialisation or spread; this returns a plain array so it can be
|
|
76
|
+
* rendered and compared normally. Translation audio itself already reaches the
|
|
77
|
+
* user through `getAudioGridComponents`, which folds in `translationStreams`.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getTranslationState({ parameters }: HeadlessOptions): TranslationState;
|
|
80
|
+
export interface SetTranslationPreferenceOptions extends HeadlessOptions {
|
|
81
|
+
/** Language for every speaker. `null` restores the original audio. */
|
|
82
|
+
language?: string | null;
|
|
83
|
+
/** Limit the change to one speaker. */
|
|
84
|
+
speakerId?: string;
|
|
85
|
+
/** Explicitly prefer the untranslated audio for this speaker. */
|
|
86
|
+
wantOriginal?: boolean;
|
|
87
|
+
}
|
|
88
|
+
export type SetTranslationPreferenceType = (options: SetTranslationPreferenceOptions) => {
|
|
89
|
+
ok: boolean;
|
|
90
|
+
error: string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Choose a translation language, globally or for one speaker.
|
|
94
|
+
*
|
|
95
|
+
* Delegates to the SDK's `updateListenerTranslationPreferences`, which is what
|
|
96
|
+
* syncs the choice to the server for routing and billing — setting the bag's
|
|
97
|
+
* fields directly would change local state without telling the server.
|
|
98
|
+
*/
|
|
99
|
+
export declare function setTranslationPreference({ parameters, language, speakerId, wantOriginal, }: SetTranslationPreferenceOptions): {
|
|
100
|
+
ok: boolean;
|
|
101
|
+
error: string;
|
|
102
|
+
};
|
|
103
|
+
export interface FocusModeState {
|
|
104
|
+
/** True while focus mode is active. */
|
|
105
|
+
active: boolean;
|
|
106
|
+
/** Participants permitted to speak/appear while focus mode is on. */
|
|
107
|
+
panelists: {
|
|
108
|
+
name: string;
|
|
109
|
+
[key: string]: any;
|
|
110
|
+
}[];
|
|
111
|
+
/** True when the local user is one of them. */
|
|
112
|
+
selfIsPanelist: boolean;
|
|
113
|
+
/** True when focus mode silences non-panelist microphones. */
|
|
114
|
+
mutesMicrophones: boolean;
|
|
115
|
+
/** True when focus mode blocks non-panelist cameras. */
|
|
116
|
+
mutesCameras: boolean;
|
|
117
|
+
}
|
|
118
|
+
export type GetFocusModeStateType = (options: HeadlessOptions) => FocusModeState;
|
|
119
|
+
/**
|
|
120
|
+
* Focus-mode ("only panelists") state.
|
|
121
|
+
*
|
|
122
|
+
* The field is `muteOthersCamera`, not `muteOthersVideo` — worth stating,
|
|
123
|
+
* because the neighbouring flag is `muteOthersMic` and the asymmetry invites a
|
|
124
|
+
* wrong guess. {@link getMediaPermissions} already applies these rules to the
|
|
125
|
+
* local user; this exposes the room-level picture for a roster UI.
|
|
126
|
+
*/
|
|
127
|
+
export declare function getFocusModeState({ parameters }: HeadlessOptions): FocusModeState;
|
|
128
|
+
export interface VirtualBackgroundState {
|
|
129
|
+
/** True when a processed (background-applied) stream is being published. */
|
|
130
|
+
active: boolean;
|
|
131
|
+
/** The processed stream, when one exists. */
|
|
132
|
+
stream: MediaStream | null;
|
|
133
|
+
/** The background currently applied, if the SDK reports one. */
|
|
134
|
+
appliedBackground: any;
|
|
135
|
+
/** The image the user selected, if any. */
|
|
136
|
+
selectedImage: string | null;
|
|
137
|
+
}
|
|
138
|
+
export type GetVirtualBackgroundStateType = (options: HeadlessOptions) => VirtualBackgroundState;
|
|
139
|
+
/**
|
|
140
|
+
* Read-only virtual-background state.
|
|
141
|
+
*
|
|
142
|
+
* **You do not need this to render the right self-view.**
|
|
143
|
+
* `getLocalVideoStream` already returns the processed `virtualStream` whenever
|
|
144
|
+
* `keepBackground` is on, and the raw camera otherwise — the same rule the SDK's
|
|
145
|
+
* own grid uses. Rendering `localStreamVideo` directly is what shows a user
|
|
146
|
+
* their *unprocessed* background, so prefer the helper and ignore this.
|
|
147
|
+
*
|
|
148
|
+
* This exists for UI that needs to *describe* the state ("Background on"), not
|
|
149
|
+
* to choose a stream.
|
|
150
|
+
*
|
|
151
|
+
* Known gap: applying or clearing a background is still modal-driven in the SDK
|
|
152
|
+
* (`isBackgroundModalVisible` / `autoClickBackground`), so a `returnUI={false}`
|
|
153
|
+
* surface cannot currently turn a background on by itself. Reading works
|
|
154
|
+
* headlessly; controlling does not.
|
|
155
|
+
*/
|
|
156
|
+
export declare function getVirtualBackgroundState({ parameters, }: HeadlessOptions): VirtualBackgroundState;
|
|
157
|
+
export interface SetParticipantPlaybackOptions extends HeadlessOptions {
|
|
158
|
+
/** Participant display name. */
|
|
159
|
+
name?: string;
|
|
160
|
+
/** Producer id, when you already hold one. */
|
|
161
|
+
producerId?: string;
|
|
162
|
+
/** Which of their tracks to affect. Defaults to both. */
|
|
163
|
+
kind?: 'audio' | 'video' | 'all';
|
|
164
|
+
/** True to stop receiving, false to resume. */
|
|
165
|
+
paused: boolean;
|
|
166
|
+
}
|
|
167
|
+
export type SetParticipantPlaybackType = (options: SetParticipantPlaybackOptions) => Promise<{
|
|
168
|
+
ok: boolean;
|
|
169
|
+
error: string;
|
|
170
|
+
affected: number;
|
|
171
|
+
}>;
|
|
172
|
+
/**
|
|
173
|
+
* Stop or resume playing one participant's media **for you only**.
|
|
174
|
+
*
|
|
175
|
+
* This is a local, per-viewer control — "don't play this person to me right
|
|
176
|
+
* now". It pauses the mediasoup consumer, so the server stops sending that
|
|
177
|
+
* track to you: it saves bandwidth as well as silencing them, and it is
|
|
178
|
+
* invisible to everyone else. It is NOT moderation — the participant keeps
|
|
179
|
+
* publishing and other people keep receiving. Use `setParticipantMedia` from
|
|
180
|
+
* the moderation module to actually stop someone's media for the room.
|
|
181
|
+
*
|
|
182
|
+
* Note this is deliberately not `resumePauseStreams`, which the SDK drives from
|
|
183
|
+
* the active-speaker layout (`dispActiveNames`) and will happily undo a manual
|
|
184
|
+
* choice on its next pass. This targets the consumer directly.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* // Stop hearing and seeing Paul locally
|
|
189
|
+
* await setParticipantPlayback({ parameters, name: 'Paul', paused: true });
|
|
190
|
+
* // Just their audio
|
|
191
|
+
* await setParticipantPlayback({ parameters, name: 'Paul', kind: 'audio', paused: true });
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export declare function setParticipantPlayback({ parameters, name, producerId, kind, paused, }: SetParticipantPlaybackOptions): Promise<{
|
|
195
|
+
ok: boolean;
|
|
196
|
+
error: string;
|
|
197
|
+
affected: number;
|
|
198
|
+
}>;
|
|
199
|
+
export type BreakoutParticipantRef = {
|
|
200
|
+
name: string;
|
|
201
|
+
breakRoom: number;
|
|
202
|
+
};
|
|
203
|
+
export interface SetBreakoutRoomsOptions extends HeadlessOptions {
|
|
204
|
+
/** Room composition: index in the outer array is the room number. */
|
|
205
|
+
rooms: BreakoutParticipantRef[][];
|
|
206
|
+
/** What happens to people who join later. Defaults to the room's setting. */
|
|
207
|
+
newParticipantAction?: string;
|
|
208
|
+
}
|
|
209
|
+
export type SetBreakoutRoomsType = (options: SetBreakoutRoomsOptions) => Promise<{
|
|
210
|
+
ok: boolean;
|
|
211
|
+
error: string;
|
|
212
|
+
}>;
|
|
213
|
+
/**
|
|
214
|
+
* Publish a full breakout-room composition.
|
|
215
|
+
*
|
|
216
|
+
* The SDK models breakout rooms as an array of arrays — outer index is the room
|
|
217
|
+
* number, inner entries are `{ name, breakRoom }`. Adding, removing, or moving
|
|
218
|
+
* someone is therefore just editing that array and re-emitting it; there is no
|
|
219
|
+
* per-participant verb. `startBreakout` opens them, `updateBreakout` amends a
|
|
220
|
+
* running set, and the SDK picks by whether they are already started.
|
|
221
|
+
*
|
|
222
|
+
* Prefer {@link assignParticipantToBreakoutRoom} for single-person changes.
|
|
223
|
+
*/
|
|
224
|
+
export declare function setBreakoutRooms({ parameters, rooms, newParticipantAction, }: SetBreakoutRoomsOptions): Promise<{
|
|
225
|
+
ok: boolean;
|
|
226
|
+
error: string;
|
|
227
|
+
}>;
|
|
228
|
+
export interface AssignParticipantToBreakoutRoomOptions extends HeadlessOptions {
|
|
229
|
+
/** Participant display name. */
|
|
230
|
+
name: string;
|
|
231
|
+
/** Destination room index, or `null` to remove them from breakout rooms. */
|
|
232
|
+
room: number | null;
|
|
233
|
+
newParticipantAction?: string;
|
|
234
|
+
}
|
|
235
|
+
export type AssignParticipantToBreakoutRoomType = (options: AssignParticipantToBreakoutRoomOptions) => Promise<{
|
|
236
|
+
ok: boolean;
|
|
237
|
+
error: string;
|
|
238
|
+
}>;
|
|
239
|
+
/**
|
|
240
|
+
* Add, move, or remove one participant, without rebuilding the whole array.
|
|
241
|
+
*
|
|
242
|
+
* Covers all three cases the composition array makes awkward by hand:
|
|
243
|
+
* `room: 1` adds them to room 1 (or moves them there from wherever they are),
|
|
244
|
+
* `room: null` removes them from breakout rooms entirely. Empty trailing rooms
|
|
245
|
+
* are preserved, because room numbers are positional and collapsing them would
|
|
246
|
+
* silently renumber everyone else.
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```ts
|
|
250
|
+
* await assignParticipantToBreakoutRoom({ parameters, name: 'Ada', room: 0 }); // add
|
|
251
|
+
* await assignParticipantToBreakoutRoom({ parameters, name: 'Ada', room: 1 }); // move 0 -> 1
|
|
252
|
+
* await assignParticipantToBreakoutRoom({ parameters, name: 'Ada', room: null }); // remove
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
export declare function assignParticipantToBreakoutRoom({ parameters, name, room, newParticipantAction, }: AssignParticipantToBreakoutRoomOptions): Promise<{
|
|
256
|
+
ok: boolean;
|
|
257
|
+
error: string;
|
|
258
|
+
}>;
|
|
259
|
+
export type StopBreakoutRoomsType = (options: HeadlessOptions) => Promise<{
|
|
260
|
+
ok: boolean;
|
|
261
|
+
error: string;
|
|
262
|
+
}>;
|
|
263
|
+
/** Close every breakout room and return everyone to the main room. */
|
|
264
|
+
export declare function stopBreakoutRooms({ parameters, }: HeadlessOptions): Promise<{
|
|
265
|
+
ok: boolean;
|
|
266
|
+
error: string;
|
|
267
|
+
}>;
|
|
268
|
+
export type ReapplyLocalPlaybackType = (options: HeadlessOptions) => Promise<{
|
|
269
|
+
ok: boolean;
|
|
270
|
+
error: string;
|
|
271
|
+
affected: number;
|
|
272
|
+
}>;
|
|
273
|
+
/**
|
|
274
|
+
* Re-assert every local playback choice.
|
|
275
|
+
*
|
|
276
|
+
* Call this whenever media changes — `onMediaChanged` is the natural place. The
|
|
277
|
+
* SDK layout pass resumes consumers it believes should be visible, which would
|
|
278
|
+
* otherwise silently undo "do not play this person to me" the moment the active
|
|
279
|
+
* speaker changes. Without this the feature appears to work and then quietly
|
|
280
|
+
* stops working, which is worse than not having it.
|
|
281
|
+
*
|
|
282
|
+
* A no-op when nothing is locally paused.
|
|
283
|
+
*/
|
|
284
|
+
export declare function reapplyLocalPlayback({ parameters, }: HeadlessOptions): Promise<{
|
|
285
|
+
ok: boolean;
|
|
286
|
+
error: string;
|
|
287
|
+
affected: number;
|
|
288
|
+
}>;
|
|
289
|
+
/** Producer ids currently muted for this viewer only. */
|
|
290
|
+
export declare function getLocallyPausedProducerIds(): string[];
|
|
291
|
+
//# sourceMappingURL=sessionExtras.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionExtras.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/sessionExtras.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
import { HeadlessActionResult } from './roomActions';
|
|
3
|
+
export type RecordingStatus = 'unavailable' | 'idle' | 'recording' | 'paused' | 'stopped';
|
|
4
|
+
export interface RecordingState {
|
|
5
|
+
status: RecordingStatus;
|
|
6
|
+
/** True while frames are being captured right now. */
|
|
7
|
+
active: boolean;
|
|
8
|
+
/** The local user may start/stop recording. */
|
|
9
|
+
canRecord: boolean;
|
|
10
|
+
/** 'video' | 'audio' — what the room is configured to capture. */
|
|
11
|
+
mediaOptions: string;
|
|
12
|
+
/** Seconds elapsed, as reported by the SDK. */
|
|
13
|
+
elapsedSeconds: number;
|
|
14
|
+
}
|
|
15
|
+
export type GetRecordingStateType = (options: HeadlessOptions) => RecordingState;
|
|
16
|
+
/**
|
|
17
|
+
* Collapse MediaSFU's four recording booleans into one status.
|
|
18
|
+
*
|
|
19
|
+
* The SDK tracks `recordStarted`, `recordPaused`, `recordResumed` and
|
|
20
|
+
* `recordStopped` independently, and they overlap — after a pause/resume cycle
|
|
21
|
+
* `recordStarted` and `recordResumed` are both true. Deriving "is it recording?"
|
|
22
|
+
* from any single flag gives the wrong answer at least once per session.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```ts
|
|
26
|
+
* const recording = getRecordingState({ parameters });
|
|
27
|
+
* if (recording.status === 'paused') showResumeButton();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare function getRecordingState({ parameters }: HeadlessOptions): RecordingState;
|
|
31
|
+
export type RecordingActionType = (options: HeadlessOptions) => Promise<HeadlessActionResult>;
|
|
32
|
+
/**
|
|
33
|
+
* Start recording.
|
|
34
|
+
*
|
|
35
|
+
* MediaSFU requires `confirmRecording` before `startRecording` — it validates
|
|
36
|
+
* the room's recording settings against the current layout and populates the
|
|
37
|
+
* state `startRecording` then reads. Calling `startRecording` alone appears to
|
|
38
|
+
* do nothing. This runs both steps in order.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```ts
|
|
42
|
+
* import { startRoomRecording } from 'mediasfu-shared';
|
|
43
|
+
*
|
|
44
|
+
* const result = await startRoomRecording({ parameters });
|
|
45
|
+
* if (!result.ok) setNotice(result.error);
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
export declare function startRoomRecording({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
49
|
+
/** Pause an active recording. */
|
|
50
|
+
export declare function pauseRoomRecording({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
51
|
+
/** Resume a paused recording. */
|
|
52
|
+
export declare function resumeRoomRecording({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
53
|
+
/** Stop recording. The file becomes available through the MediaSFU API. */
|
|
54
|
+
export declare function stopRoomRecording({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
55
|
+
export interface WhiteboardState {
|
|
56
|
+
/** True while a whiteboard session is running. */
|
|
57
|
+
active: boolean;
|
|
58
|
+
/** The local user may start one. */
|
|
59
|
+
canStart: boolean;
|
|
60
|
+
/** Participants granted drawing rights. */
|
|
61
|
+
users: any[];
|
|
62
|
+
/** Maximum participants the room's plan allows on a whiteboard. */
|
|
63
|
+
limit: number;
|
|
64
|
+
/** The live canvas element, when the SDK has created one. */
|
|
65
|
+
canvas: HTMLCanvasElement | null;
|
|
66
|
+
}
|
|
67
|
+
export type GetWhiteboardStateType = (options: HeadlessOptions) => WhiteboardState;
|
|
68
|
+
/**
|
|
69
|
+
* Current whiteboard session state.
|
|
70
|
+
*
|
|
71
|
+
* `whiteboardStarted` alone is not enough — the SDK leaves it true after a
|
|
72
|
+
* session ends and sets `whiteboardEnded` alongside it, so "active" is
|
|
73
|
+
* `started && !ended`.
|
|
74
|
+
*/
|
|
75
|
+
export declare function getWhiteboardState({ parameters }: HeadlessOptions): WhiteboardState;
|
|
76
|
+
export interface StartWhiteboardOptions extends HeadlessOptions {
|
|
77
|
+
/** Participants allowed to draw. Defaults to the room's current selection. */
|
|
78
|
+
users?: any[];
|
|
79
|
+
}
|
|
80
|
+
export type StartWhiteboardType = (options: StartWhiteboardOptions) => Promise<HeadlessActionResult>;
|
|
81
|
+
/**
|
|
82
|
+
* Start (or reconfigure) the shared whiteboard.
|
|
83
|
+
*
|
|
84
|
+
* Emits `startWhiteboard` for a new session and `updateWhiteboard` when one is
|
|
85
|
+
* already running, matching the SDK's own modal. Breakout rooms and the
|
|
86
|
+
* whiteboard are mutually exclusive, which is checked here.
|
|
87
|
+
*
|
|
88
|
+
* This applies the session state only. Layout follow-up (`onScreenChanges`,
|
|
89
|
+
* `prepopulateUserMedia`, main-pane sizing) is deliberately left to you, since a
|
|
90
|
+
* headless surface owns its own layout.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```ts
|
|
94
|
+
* await startWhiteboard({ parameters, users: [{ name: 'Paul' }] });
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function startWhiteboard({ parameters, users, }: StartWhiteboardOptions): Promise<HeadlessActionResult>;
|
|
98
|
+
export type StopWhiteboardType = (options: HeadlessOptions) => Promise<HeadlessActionResult>;
|
|
99
|
+
/** End the shared whiteboard session. */
|
|
100
|
+
export declare function stopWhiteboard({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
101
|
+
export interface PollState {
|
|
102
|
+
/** Every poll the room has seen. */
|
|
103
|
+
polls: any[];
|
|
104
|
+
/** The poll currently open for voting, if any. */
|
|
105
|
+
active: any | null;
|
|
106
|
+
}
|
|
107
|
+
export type GetPollStateType = (options: HeadlessOptions) => PollState;
|
|
108
|
+
/** Polls in the room, plus whichever one is currently open. */
|
|
109
|
+
export declare function getPollState({ parameters }: HeadlessOptions): PollState;
|
|
110
|
+
export interface CreatePollOptions extends HeadlessOptions {
|
|
111
|
+
question: string;
|
|
112
|
+
options: string[];
|
|
113
|
+
/** Defaults to 'custom'. */
|
|
114
|
+
type?: string;
|
|
115
|
+
}
|
|
116
|
+
export type CreateRoomPollType = (options: CreatePollOptions) => Promise<HeadlessActionResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Open a poll.
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```ts
|
|
122
|
+
* await createRoomPoll({
|
|
123
|
+
* parameters,
|
|
124
|
+
* question: 'Ship on Friday?',
|
|
125
|
+
* options: ['Yes', 'No'],
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function createRoomPoll({ parameters, question, options, type, }: CreatePollOptions): Promise<HeadlessActionResult>;
|
|
130
|
+
export interface VotePollOptions extends HeadlessOptions {
|
|
131
|
+
pollId: string;
|
|
132
|
+
optionIndex: number;
|
|
133
|
+
}
|
|
134
|
+
/** Cast a vote in an open poll. */
|
|
135
|
+
export declare function voteInRoomPoll({ parameters, pollId, optionIndex, }: VotePollOptions): Promise<HeadlessActionResult>;
|
|
136
|
+
export interface EndPollOptions extends HeadlessOptions {
|
|
137
|
+
pollId: string;
|
|
138
|
+
}
|
|
139
|
+
/** Close a poll. Host only. */
|
|
140
|
+
export declare function endRoomPoll({ parameters, pollId, }: EndPollOptions): Promise<HeadlessActionResult>;
|
|
141
|
+
export interface BreakoutState {
|
|
142
|
+
/** True while breakout rooms are running. */
|
|
143
|
+
active: boolean;
|
|
144
|
+
/** The local user may start them. */
|
|
145
|
+
canStart: boolean;
|
|
146
|
+
/** Room composition as the SDK holds it. */
|
|
147
|
+
rooms: any[];
|
|
148
|
+
/** The breakout room the local user is in, or -1. */
|
|
149
|
+
currentRoom: number;
|
|
150
|
+
}
|
|
151
|
+
export type GetBreakoutStateType = (options: HeadlessOptions) => BreakoutState;
|
|
152
|
+
/**
|
|
153
|
+
* Breakout-room state.
|
|
154
|
+
*
|
|
155
|
+
* Same `started && !ended` shape as the whiteboard, and the two are mutually
|
|
156
|
+
* exclusive — check this before offering a whiteboard control.
|
|
157
|
+
*/
|
|
158
|
+
export declare function getBreakoutState({ parameters }: HeadlessOptions): BreakoutState;
|
|
159
|
+
//# sourceMappingURL=sessionFeatures.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessionFeatures.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/sessionFeatures.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Viewers who are part of a session without joining the room.
|
|
3
|
+
*
|
|
4
|
+
* **Why this exists.** Joining a MediaSFU room auto-consumes WebRTC: the SDK
|
|
5
|
+
* creates consumers from the server's `newProducer` events, unconditionally —
|
|
6
|
+
* there is no receive-nothing mode. For a large passive audience watching over
|
|
7
|
+
* HLS that is pure waste: transports, consumers and layout churn for media they
|
|
8
|
+
* will never render. Joining and then pausing the consumers is worse than it
|
|
9
|
+
* looks, because the layout pass keeps resuming them.
|
|
10
|
+
*
|
|
11
|
+
* So an HLS viewer does not join at all. They hold a *viewer session* instead —
|
|
12
|
+
* enough to be counted, to raise a hand, and to be told when the host approves —
|
|
13
|
+
* and they only perform a real SDK join at the moment they reach the floor.
|
|
14
|
+
*
|
|
15
|
+
* How that session is stored is deliberately not decided here. The transport,
|
|
16
|
+
* lifecycle and state machine are the SDK's business; issuing playback URLs and
|
|
17
|
+
* tracking presence belong to whatever backend you run. You supply a
|
|
18
|
+
* `ViewerSessionProvider`; this drives it. Same reasoning as `hlsFactory`: the
|
|
19
|
+
* SDK owns the mechanism, the app owns the dependency.
|
|
20
|
+
*/
|
|
21
|
+
export type ViewerSessionPhase = 'idle' | 'joining' | 'watching' | 'requested' | 'approved' | 'left' | 'error';
|
|
22
|
+
export interface ViewerSessionIdentity {
|
|
23
|
+
/** Opaque id for this viewer, issued by the provider. */
|
|
24
|
+
viewerId: string;
|
|
25
|
+
/** The room being watched. */
|
|
26
|
+
roomName: string;
|
|
27
|
+
/** Where to play from. Absent until the provider issues one. */
|
|
28
|
+
playbackUrl?: string;
|
|
29
|
+
/** 'hls' or 'whep'; inferred from the URL when omitted. */
|
|
30
|
+
protocol?: 'hls' | 'whep';
|
|
31
|
+
/** Anything the provider needs handed back on later calls. */
|
|
32
|
+
token?: string;
|
|
33
|
+
[key: string]: any;
|
|
34
|
+
}
|
|
35
|
+
export interface ViewerSessionStatus {
|
|
36
|
+
/** True once the host has approved this viewer for the floor. */
|
|
37
|
+
approved: boolean;
|
|
38
|
+
/** True while a request is outstanding. */
|
|
39
|
+
pending?: boolean;
|
|
40
|
+
/** Free-text reason when a request was refused. */
|
|
41
|
+
reason?: string;
|
|
42
|
+
/** Provider may refresh the playback URL (signed URLs expire). */
|
|
43
|
+
playbackUrl?: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* What your backend has to do. Only `join` is required — a provider that just
|
|
47
|
+
* hands back a playback URL is a valid provider, it simply cannot support
|
|
48
|
+
* promotion.
|
|
49
|
+
*/
|
|
50
|
+
export interface ViewerSessionProvider {
|
|
51
|
+
join(options: {
|
|
52
|
+
roomName: string;
|
|
53
|
+
displayName?: string;
|
|
54
|
+
signal?: AbortSignal;
|
|
55
|
+
}): Promise<ViewerSessionIdentity>;
|
|
56
|
+
/** Keep the viewer counted as present. */
|
|
57
|
+
heartbeat?(options: {
|
|
58
|
+
session: ViewerSessionIdentity;
|
|
59
|
+
signal?: AbortSignal;
|
|
60
|
+
}): Promise<void>;
|
|
61
|
+
/** Raise a hand for the floor. */
|
|
62
|
+
requestPromotion?(options: {
|
|
63
|
+
session: ViewerSessionIdentity;
|
|
64
|
+
signal?: AbortSignal;
|
|
65
|
+
}): Promise<void>;
|
|
66
|
+
/** Has the host decided yet? */
|
|
67
|
+
poll?(options: {
|
|
68
|
+
session: ViewerSessionIdentity;
|
|
69
|
+
signal?: AbortSignal;
|
|
70
|
+
}): Promise<ViewerSessionStatus>;
|
|
71
|
+
/** Release the session. */
|
|
72
|
+
leave?(options: {
|
|
73
|
+
session: ViewerSessionIdentity;
|
|
74
|
+
}): Promise<void>;
|
|
75
|
+
}
|
|
76
|
+
export interface ViewerSessionSnapshot {
|
|
77
|
+
phase: ViewerSessionPhase;
|
|
78
|
+
session: ViewerSessionIdentity | null;
|
|
79
|
+
status: ViewerSessionStatus | null;
|
|
80
|
+
error: string;
|
|
81
|
+
/** True when the provider can accept a promotion request at all. */
|
|
82
|
+
canRequestPromotion: boolean;
|
|
83
|
+
}
|
|
84
|
+
export interface CreateViewerSessionOptions {
|
|
85
|
+
provider: ViewerSessionProvider;
|
|
86
|
+
roomName: string;
|
|
87
|
+
displayName?: string;
|
|
88
|
+
/** Poll interval for approval, ms. Defaults to 5000. */
|
|
89
|
+
pollIntervalMs?: number;
|
|
90
|
+
/** Heartbeat interval, ms. Defaults to 30000. Ignored without a heartbeat. */
|
|
91
|
+
heartbeatIntervalMs?: number;
|
|
92
|
+
/** Called on every state change. */
|
|
93
|
+
onChange?: (snapshot: ViewerSessionSnapshot) => void;
|
|
94
|
+
}
|
|
95
|
+
export interface ViewerSessionHandle {
|
|
96
|
+
/** Current state, readable at any time. */
|
|
97
|
+
getSnapshot: () => ViewerSessionSnapshot;
|
|
98
|
+
/** Register with the provider and begin watching. */
|
|
99
|
+
start: () => Promise<ViewerSessionSnapshot>;
|
|
100
|
+
/** Raise a hand for the floor. */
|
|
101
|
+
requestPromotion: () => Promise<ViewerSessionSnapshot>;
|
|
102
|
+
/** Stop everything and release the session. */
|
|
103
|
+
stop: () => Promise<void>;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Drive a viewer session.
|
|
107
|
+
*
|
|
108
|
+
* Deliberately framework-agnostic — no hooks, no observables — so the same
|
|
109
|
+
* implementation serves React, Vue and Angular. Wrap it in whatever your
|
|
110
|
+
* framework prefers.
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* ```ts
|
|
114
|
+
* const viewer = createViewerSession({
|
|
115
|
+
* provider: myProvider,
|
|
116
|
+
* roomName,
|
|
117
|
+
* onChange: (snapshot) => setState(snapshot),
|
|
118
|
+
* });
|
|
119
|
+
* await viewer.start(); // watching over HLS, never joined
|
|
120
|
+
* await viewer.requestPromotion(); // hand raised
|
|
121
|
+
* // when snapshot.phase === 'approved', perform a real SDK join.
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export declare function createViewerSession({ provider, roomName, displayName, pollIntervalMs, heartbeatIntervalMs, onChange, }: CreateViewerSessionOptions): ViewerSessionHandle;
|
|
125
|
+
//# sourceMappingURL=viewerSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewerSession.d.ts","sourceRoot":"","sources":["../../../../src/methods/utils/headless/viewerSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { HeadlessOptions } from './headlessTypes';
|
|
2
|
+
import { HeadlessActionResult } from './roomActions';
|
|
3
|
+
export interface ApplyVirtualBackgroundOptions extends HeadlessOptions {
|
|
4
|
+
/**
|
|
5
|
+
* Background image URL, or a ready `HTMLImageElement` / `HTMLCanvasElement`.
|
|
6
|
+
* Pass `null` to segment the person onto a transparent background.
|
|
7
|
+
*/
|
|
8
|
+
image: string | HTMLImageElement | HTMLCanvasElement | null;
|
|
9
|
+
/** Capture frame rate for the processed stream. Defaults to 30. */
|
|
10
|
+
frameRate?: number;
|
|
11
|
+
/** MediaPipe model: 0 = general, 1 = landscape (faster). Defaults to 1. */
|
|
12
|
+
modelSelection?: 0 | 1;
|
|
13
|
+
/**
|
|
14
|
+
* Replace the live producer's track so remote viewers see the background
|
|
15
|
+
* immediately. Defaults to true; set false to preview locally first.
|
|
16
|
+
*/
|
|
17
|
+
publish?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Where to load the MediaPipe model and wasm from. Defaults to the jsDelivr
|
|
20
|
+
* CDN. Point this at a self-hosted copy of
|
|
21
|
+
* `node_modules/@mediapipe/selfie_segmentation` for offline or air-gapped
|
|
22
|
+
* deployments, or where a Content-Security-Policy forbids the CDN.
|
|
23
|
+
* A trailing slash is added if missing.
|
|
24
|
+
*/
|
|
25
|
+
assetPath?: string;
|
|
26
|
+
}
|
|
27
|
+
export type ApplyVirtualBackgroundType = (options: ApplyVirtualBackgroundOptions) => Promise<HeadlessActionResult & {
|
|
28
|
+
stream: MediaStream | null;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Apply a virtual background headlessly — no modal, no DOM of your own.
|
|
32
|
+
*
|
|
33
|
+
* The SDK's own background support lives inside `BackgroundModal`, whose apply
|
|
34
|
+
* path is bound to that component's refs (a preview `<video>` and a `<canvas>`)
|
|
35
|
+
* and is driven by `autoClickBackground` / `isBackgroundModalVisible`. A
|
|
36
|
+
* `returnUI={false}` surface therefore had no way to turn a background on
|
|
37
|
+
* without mounting the modal off-screen and simulating a click.
|
|
38
|
+
*
|
|
39
|
+
* This runs the same MediaPipe pipeline the modal uses — identical compositing:
|
|
40
|
+
* draw the segmentation mask, retain the person with `source-in`, then paint
|
|
41
|
+
* the replacement behind them with `destination-over` — against an offscreen video and
|
|
42
|
+
* canvas it creates and owns.
|
|
43
|
+
*
|
|
44
|
+
* It also keeps the SDK's own state honest (`virtualStream`, `processedStream`,
|
|
45
|
+
* `keepBackground`), so `getLocalVideoStream` keeps returning the right
|
|
46
|
+
* self-view without the caller choosing. Callers should not select the
|
|
47
|
+
* processed stream themselves.
|
|
48
|
+
*
|
|
49
|
+
* The camera must already be on: this processes `localStreamVideo`, it does not
|
|
50
|
+
* acquire one.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* await applyVirtualBackground({ parameters, image: '/backgrounds/office.jpg' });
|
|
55
|
+
* await clearVirtualBackground({ parameters });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function applyVirtualBackground({ parameters, image, frameRate, modelSelection, publish, assetPath, }: ApplyVirtualBackgroundOptions): Promise<HeadlessActionResult & {
|
|
59
|
+
stream: MediaStream | null;
|
|
60
|
+
}>;
|
|
61
|
+
export type ClearVirtualBackgroundType = (options: HeadlessOptions) => Promise<HeadlessActionResult>;
|
|
62
|
+
/**
|
|
63
|
+
* Remove the virtual background and go back to the raw camera.
|
|
64
|
+
*
|
|
65
|
+
* Restores the original camera track on the live producer before tearing the
|
|
66
|
+
* pipeline down, so viewers transition straight from processed to raw rather
|
|
67
|
+
* than through a frozen or black frame.
|
|
68
|
+
*/
|
|
69
|
+
export declare function clearVirtualBackground({ parameters, }: HeadlessOptions): Promise<HeadlessActionResult>;
|
|
70
|
+
/** True while a headless background pipeline is running in this tab. */
|
|
71
|
+
export declare function isVirtualBackgroundRunning(): boolean;
|
|
72
|
+
//# sourceMappingURL=virtualBackground.d.ts.map
|