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,480 @@
|
|
|
1
|
+
import { confirmRecording } from '../../recording/confirmRecording';
|
|
2
|
+
import { startRecording } from '../../recording/startRecording';
|
|
3
|
+
import { stopRecording } from '../../recording/stopRecording';
|
|
4
|
+
import { updateRecording } from '../../recording/updateRecording';
|
|
5
|
+
import { handleCreatePoll } from '../../polls/handleCreatePoll';
|
|
6
|
+
import { handleVotePoll } from '../../polls/handleVotePoll';
|
|
7
|
+
import { handleEndPoll } from '../../polls/handleEndPoll';
|
|
8
|
+
import { HeadlessOptions, HeadlessParameters } from './headlessTypes';
|
|
9
|
+
import { getCurrentParams } from './getCurrentParams';
|
|
10
|
+
import { HeadlessActionResult } from './roomActions';
|
|
11
|
+
|
|
12
|
+
const noop = () => undefined;
|
|
13
|
+
|
|
14
|
+
/* ------------------------------------------------------------------ *
|
|
15
|
+
* Recording
|
|
16
|
+
* ------------------------------------------------------------------ */
|
|
17
|
+
|
|
18
|
+
export type RecordingStatus =
|
|
19
|
+
| 'unavailable'
|
|
20
|
+
| 'idle'
|
|
21
|
+
| 'recording'
|
|
22
|
+
| 'paused'
|
|
23
|
+
| 'stopped';
|
|
24
|
+
|
|
25
|
+
export interface RecordingState {
|
|
26
|
+
status: RecordingStatus;
|
|
27
|
+
/** True while frames are being captured right now. */
|
|
28
|
+
active: boolean;
|
|
29
|
+
/** The local user may start/stop recording. */
|
|
30
|
+
canRecord: boolean;
|
|
31
|
+
/** 'video' | 'audio' — what the room is configured to capture. */
|
|
32
|
+
mediaOptions: string;
|
|
33
|
+
/** Seconds elapsed, as reported by the SDK. */
|
|
34
|
+
elapsedSeconds: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export type GetRecordingStateType = (options: HeadlessOptions) => RecordingState;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Collapse MediaSFU's four recording booleans into one status.
|
|
41
|
+
*
|
|
42
|
+
* The SDK tracks `recordStarted`, `recordPaused`, `recordResumed` and
|
|
43
|
+
* `recordStopped` independently, and they overlap — after a pause/resume cycle
|
|
44
|
+
* `recordStarted` and `recordResumed` are both true. Deriving "is it recording?"
|
|
45
|
+
* from any single flag gives the wrong answer at least once per session.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```ts
|
|
49
|
+
* const recording = getRecordingState({ parameters });
|
|
50
|
+
* if (recording.status === 'paused') showResumeButton();
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export function getRecordingState({ parameters }: HeadlessOptions): RecordingState {
|
|
54
|
+
const source: HeadlessParameters = parameters || {};
|
|
55
|
+
const canRecord = source.canRecord === true;
|
|
56
|
+
let status: RecordingStatus = 'idle';
|
|
57
|
+
if (!canRecord && !source.recordStarted) status = 'unavailable';
|
|
58
|
+
else if (source.recordStopped) status = 'stopped';
|
|
59
|
+
else if (source.recordStarted && source.recordPaused) status = 'paused';
|
|
60
|
+
else if (source.recordStarted) status = 'recording';
|
|
61
|
+
|
|
62
|
+
return {
|
|
63
|
+
status,
|
|
64
|
+
active: status === 'recording',
|
|
65
|
+
canRecord,
|
|
66
|
+
mediaOptions: source.recordingMediaOptions || 'video',
|
|
67
|
+
elapsedSeconds: Number(source.recordElapsedTime) || 0,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type RecordingActionType = (
|
|
72
|
+
options: HeadlessOptions
|
|
73
|
+
) => Promise<HeadlessActionResult>;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Start recording.
|
|
77
|
+
*
|
|
78
|
+
* MediaSFU requires `confirmRecording` before `startRecording` — it validates
|
|
79
|
+
* the room's recording settings against the current layout and populates the
|
|
80
|
+
* state `startRecording` then reads. Calling `startRecording` alone appears to
|
|
81
|
+
* do nothing. This runs both steps in order.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```ts
|
|
85
|
+
* import { startRoomRecording } from 'mediasfu-shared';
|
|
86
|
+
*
|
|
87
|
+
* const result = await startRoomRecording({ parameters });
|
|
88
|
+
* if (!result.ok) setNotice(result.error);
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export async function startRoomRecording({
|
|
92
|
+
parameters,
|
|
93
|
+
}: HeadlessOptions): Promise<HeadlessActionResult> {
|
|
94
|
+
try {
|
|
95
|
+
const live = getCurrentParams({ parameters });
|
|
96
|
+
if (live.canRecord !== true) {
|
|
97
|
+
return { ok: false, error: 'Recording is not available in this room.' };
|
|
98
|
+
}
|
|
99
|
+
if (live.recordStarted && !live.recordStopped) {
|
|
100
|
+
return { ok: false, error: 'Recording has already started.' };
|
|
101
|
+
}
|
|
102
|
+
await confirmRecording({ parameters: live as any });
|
|
103
|
+
const refreshed = getCurrentParams({ parameters: live });
|
|
104
|
+
await startRecording({ parameters: refreshed as any });
|
|
105
|
+
return { ok: true, error: '' };
|
|
106
|
+
} catch (error: any) {
|
|
107
|
+
return { ok: false, error: error?.message || 'Recording could not be started.' };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Pause an active recording. */
|
|
112
|
+
export async function pauseRoomRecording({
|
|
113
|
+
parameters,
|
|
114
|
+
}: HeadlessOptions): Promise<HeadlessActionResult> {
|
|
115
|
+
return toggleRecordingPause(parameters, true);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Resume a paused recording. */
|
|
119
|
+
export async function resumeRoomRecording({
|
|
120
|
+
parameters,
|
|
121
|
+
}: HeadlessOptions): Promise<HeadlessActionResult> {
|
|
122
|
+
return toggleRecordingPause(parameters, false);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
async function toggleRecordingPause(
|
|
126
|
+
parameters: HeadlessParameters,
|
|
127
|
+
pause: boolean
|
|
128
|
+
): Promise<HeadlessActionResult> {
|
|
129
|
+
try {
|
|
130
|
+
const live = getCurrentParams({ parameters });
|
|
131
|
+
const state = getRecordingState({ parameters: live });
|
|
132
|
+
if (state.status !== (pause ? 'recording' : 'paused')) {
|
|
133
|
+
return {
|
|
134
|
+
ok: false,
|
|
135
|
+
error: pause
|
|
136
|
+
? 'There is no active recording to pause.'
|
|
137
|
+
: 'There is no paused recording to resume.',
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// `updateRecording` is the SDK's pause/resume toggle; it decides direction
|
|
141
|
+
// from the current recordPaused state, which we just validated.
|
|
142
|
+
await updateRecording({ parameters: live as any });
|
|
143
|
+
return { ok: true, error: '' };
|
|
144
|
+
} catch (error: any) {
|
|
145
|
+
return {
|
|
146
|
+
ok: false,
|
|
147
|
+
error: error?.message || 'The recording state could not be changed.',
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/** Stop recording. The file becomes available through the MediaSFU API. */
|
|
153
|
+
export async function stopRoomRecording({
|
|
154
|
+
parameters,
|
|
155
|
+
}: HeadlessOptions): Promise<HeadlessActionResult> {
|
|
156
|
+
try {
|
|
157
|
+
const live = getCurrentParams({ parameters });
|
|
158
|
+
if (!live.recordStarted || live.recordStopped) {
|
|
159
|
+
return { ok: false, error: 'There is no active recording to stop.' };
|
|
160
|
+
}
|
|
161
|
+
await stopRecording({ parameters: live as any });
|
|
162
|
+
return { ok: true, error: '' };
|
|
163
|
+
} catch (error: any) {
|
|
164
|
+
return { ok: false, error: error?.message || 'Recording could not be stopped.' };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/* ------------------------------------------------------------------ *
|
|
169
|
+
* Whiteboard
|
|
170
|
+
* ------------------------------------------------------------------ */
|
|
171
|
+
|
|
172
|
+
export interface WhiteboardState {
|
|
173
|
+
/** True while a whiteboard session is running. */
|
|
174
|
+
active: boolean;
|
|
175
|
+
/** The local user may start one. */
|
|
176
|
+
canStart: boolean;
|
|
177
|
+
/** Participants granted drawing rights. */
|
|
178
|
+
users: any[];
|
|
179
|
+
/** Maximum participants the room's plan allows on a whiteboard. */
|
|
180
|
+
limit: number;
|
|
181
|
+
/** The live canvas element, when the SDK has created one. */
|
|
182
|
+
canvas: HTMLCanvasElement | null;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export type GetWhiteboardStateType = (
|
|
186
|
+
options: HeadlessOptions
|
|
187
|
+
) => WhiteboardState;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Current whiteboard session state.
|
|
191
|
+
*
|
|
192
|
+
* `whiteboardStarted` alone is not enough — the SDK leaves it true after a
|
|
193
|
+
* session ends and sets `whiteboardEnded` alongside it, so "active" is
|
|
194
|
+
* `started && !ended`.
|
|
195
|
+
*/
|
|
196
|
+
export function getWhiteboardState({ parameters }: HeadlessOptions): WhiteboardState {
|
|
197
|
+
const source: HeadlessParameters = parameters || {};
|
|
198
|
+
return {
|
|
199
|
+
active: source.whiteboardStarted === true && source.whiteboardEnded !== true,
|
|
200
|
+
canStart: source.canStartWhiteboard === true,
|
|
201
|
+
users: Array.isArray(source.whiteboardUsers) ? source.whiteboardUsers : [],
|
|
202
|
+
limit: Number(source.whiteboardLimit) || 0,
|
|
203
|
+
canvas: source.canvasWhiteboard || null,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface StartWhiteboardOptions extends HeadlessOptions {
|
|
208
|
+
/** Participants allowed to draw. Defaults to the room's current selection. */
|
|
209
|
+
users?: any[];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export type StartWhiteboardType = (
|
|
213
|
+
options: StartWhiteboardOptions
|
|
214
|
+
) => Promise<HeadlessActionResult>;
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Start (or reconfigure) the shared whiteboard.
|
|
218
|
+
*
|
|
219
|
+
* Emits `startWhiteboard` for a new session and `updateWhiteboard` when one is
|
|
220
|
+
* already running, matching the SDK's own modal. Breakout rooms and the
|
|
221
|
+
* whiteboard are mutually exclusive, which is checked here.
|
|
222
|
+
*
|
|
223
|
+
* This applies the session state only. Layout follow-up (`onScreenChanges`,
|
|
224
|
+
* `prepopulateUserMedia`, main-pane sizing) is deliberately left to you, since a
|
|
225
|
+
* headless surface owns its own layout.
|
|
226
|
+
*
|
|
227
|
+
* @example
|
|
228
|
+
* ```ts
|
|
229
|
+
* await startWhiteboard({ parameters, users: [{ name: 'Paul' }] });
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export async function startWhiteboard({
|
|
233
|
+
parameters,
|
|
234
|
+
users,
|
|
235
|
+
}: StartWhiteboardOptions): Promise<HeadlessActionResult> {
|
|
236
|
+
try {
|
|
237
|
+
const live = getCurrentParams({ parameters });
|
|
238
|
+
if (live.breakOutRoomStarted && !live.breakOutRoomEnded) {
|
|
239
|
+
return {
|
|
240
|
+
ok: false,
|
|
241
|
+
error: 'The whiteboard cannot start while breakout rooms are active.',
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
const socket = live?.socket;
|
|
245
|
+
if (!socket || typeof socket.emit !== 'function' || !live?.roomName) {
|
|
246
|
+
return { ok: false, error: 'The room connection is not ready.' };
|
|
247
|
+
}
|
|
248
|
+
const state = getWhiteboardState({ parameters: live });
|
|
249
|
+
if (!state.active && !state.canStart) {
|
|
250
|
+
return { ok: false, error: 'You are not allowed to start the whiteboard.' };
|
|
251
|
+
}
|
|
252
|
+
const whiteboardUsers = users ?? state.users;
|
|
253
|
+
if (state.limit > 0 && whiteboardUsers.length > state.limit) {
|
|
254
|
+
return {
|
|
255
|
+
ok: false,
|
|
256
|
+
error: `The whiteboard allows at most ${state.limit} participants.`,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const event = state.active ? 'updateWhiteboard' : 'startWhiteboard';
|
|
261
|
+
const response = await new Promise<any>((resolve) => {
|
|
262
|
+
socket.emit(event, { whiteboardUsers, roomName: live.roomName }, resolve);
|
|
263
|
+
});
|
|
264
|
+
if (!response?.success) {
|
|
265
|
+
return {
|
|
266
|
+
ok: false,
|
|
267
|
+
error: response?.reason || 'The whiteboard could not be started.',
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
live.updateWhiteboardStarted?.(true);
|
|
271
|
+
live.updateWhiteboardEnded?.(false);
|
|
272
|
+
live.updateWhiteboardUsers?.(whiteboardUsers);
|
|
273
|
+
live.updateCanStartWhiteboard?.(false);
|
|
274
|
+
return { ok: true, error: '' };
|
|
275
|
+
} catch (error: any) {
|
|
276
|
+
return {
|
|
277
|
+
ok: false,
|
|
278
|
+
error: error?.message || 'The whiteboard could not be started.',
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
export type StopWhiteboardType = (
|
|
284
|
+
options: HeadlessOptions
|
|
285
|
+
) => Promise<HeadlessActionResult>;
|
|
286
|
+
|
|
287
|
+
/** End the shared whiteboard session. */
|
|
288
|
+
export async function stopWhiteboard({
|
|
289
|
+
parameters,
|
|
290
|
+
}: HeadlessOptions): Promise<HeadlessActionResult> {
|
|
291
|
+
try {
|
|
292
|
+
const live = getCurrentParams({ parameters });
|
|
293
|
+
const socket = live?.socket;
|
|
294
|
+
if (!socket || typeof socket.emit !== 'function' || !live?.roomName) {
|
|
295
|
+
return { ok: false, error: 'The room connection is not ready.' };
|
|
296
|
+
}
|
|
297
|
+
if (!getWhiteboardState({ parameters: live }).active) {
|
|
298
|
+
return { ok: false, error: 'The whiteboard is not running.' };
|
|
299
|
+
}
|
|
300
|
+
const response = await new Promise<any>((resolve) => {
|
|
301
|
+
socket.emit('stopWhiteboard', { roomName: live.roomName }, resolve);
|
|
302
|
+
});
|
|
303
|
+
if (!response?.success) {
|
|
304
|
+
return {
|
|
305
|
+
ok: false,
|
|
306
|
+
error: response?.reason || 'The whiteboard could not be stopped.',
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
live.updateWhiteboardStarted?.(false);
|
|
310
|
+
live.updateWhiteboardEnded?.(true);
|
|
311
|
+
return { ok: true, error: '' };
|
|
312
|
+
} catch (error: any) {
|
|
313
|
+
return {
|
|
314
|
+
ok: false,
|
|
315
|
+
error: error?.message || 'The whiteboard could not be stopped.',
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
/* ------------------------------------------------------------------ *
|
|
321
|
+
* Polls
|
|
322
|
+
* ------------------------------------------------------------------ */
|
|
323
|
+
|
|
324
|
+
export interface PollState {
|
|
325
|
+
/** Every poll the room has seen. */
|
|
326
|
+
polls: any[];
|
|
327
|
+
/** The poll currently open for voting, if any. */
|
|
328
|
+
active: any | null;
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
export type GetPollStateType = (options: HeadlessOptions) => PollState;
|
|
332
|
+
|
|
333
|
+
/** Polls in the room, plus whichever one is currently open. */
|
|
334
|
+
export function getPollState({ parameters }: HeadlessOptions): PollState {
|
|
335
|
+
const source: HeadlessParameters = parameters || {};
|
|
336
|
+
const polls = Array.isArray(source.polls) ? source.polls : [];
|
|
337
|
+
const active =
|
|
338
|
+
source.poll && source.poll.status === 'active'
|
|
339
|
+
? source.poll
|
|
340
|
+
: polls.find((entry: any) => entry?.status === 'active') || null;
|
|
341
|
+
return { polls, active };
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export interface CreatePollOptions extends HeadlessOptions {
|
|
345
|
+
question: string;
|
|
346
|
+
options: string[];
|
|
347
|
+
/** Defaults to 'custom'. */
|
|
348
|
+
type?: string;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export type CreateRoomPollType = (
|
|
352
|
+
options: CreatePollOptions
|
|
353
|
+
) => Promise<HeadlessActionResult>;
|
|
354
|
+
|
|
355
|
+
/**
|
|
356
|
+
* Open a poll.
|
|
357
|
+
*
|
|
358
|
+
* @example
|
|
359
|
+
* ```ts
|
|
360
|
+
* await createRoomPoll({
|
|
361
|
+
* parameters,
|
|
362
|
+
* question: 'Ship on Friday?',
|
|
363
|
+
* options: ['Yes', 'No'],
|
|
364
|
+
* });
|
|
365
|
+
* ```
|
|
366
|
+
*/
|
|
367
|
+
export async function createRoomPoll({
|
|
368
|
+
parameters,
|
|
369
|
+
question,
|
|
370
|
+
options,
|
|
371
|
+
type = 'custom',
|
|
372
|
+
}: CreatePollOptions): Promise<HeadlessActionResult> {
|
|
373
|
+
try {
|
|
374
|
+
const live = getCurrentParams({ parameters });
|
|
375
|
+
if (!question?.trim()) return { ok: false, error: 'The poll needs a question.' };
|
|
376
|
+
if (!Array.isArray(options) || options.length < 2) {
|
|
377
|
+
return { ok: false, error: 'The poll needs at least two options.' };
|
|
378
|
+
}
|
|
379
|
+
await handleCreatePoll({
|
|
380
|
+
poll: { question, options, type } as any,
|
|
381
|
+
socket: live.socket,
|
|
382
|
+
roomName: live.roomName || '',
|
|
383
|
+
showAlert: live.showAlert,
|
|
384
|
+
updateIsPollModalVisible: live.updateIsPollModalVisible || noop,
|
|
385
|
+
});
|
|
386
|
+
return { ok: true, error: '' };
|
|
387
|
+
} catch (error: any) {
|
|
388
|
+
return { ok: false, error: error?.message || 'The poll could not be created.' };
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export interface VotePollOptions extends HeadlessOptions {
|
|
393
|
+
pollId: string;
|
|
394
|
+
optionIndex: number;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
/** Cast a vote in an open poll. */
|
|
398
|
+
export async function voteInRoomPoll({
|
|
399
|
+
parameters,
|
|
400
|
+
pollId,
|
|
401
|
+
optionIndex,
|
|
402
|
+
}: VotePollOptions): Promise<HeadlessActionResult> {
|
|
403
|
+
try {
|
|
404
|
+
const live = getCurrentParams({ parameters });
|
|
405
|
+
await handleVotePoll({
|
|
406
|
+
pollId,
|
|
407
|
+
optionIndex,
|
|
408
|
+
socket: live.socket,
|
|
409
|
+
showAlert: live.showAlert,
|
|
410
|
+
member: live.member || '',
|
|
411
|
+
roomName: live.roomName || '',
|
|
412
|
+
updateIsPollModalVisible: live.updateIsPollModalVisible || noop,
|
|
413
|
+
});
|
|
414
|
+
return { ok: true, error: '' };
|
|
415
|
+
} catch (error: any) {
|
|
416
|
+
return { ok: false, error: error?.message || 'The vote could not be cast.' };
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
export interface EndPollOptions extends HeadlessOptions {
|
|
421
|
+
pollId: string;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/** Close a poll. Host only. */
|
|
425
|
+
export async function endRoomPoll({
|
|
426
|
+
parameters,
|
|
427
|
+
pollId,
|
|
428
|
+
}: EndPollOptions): Promise<HeadlessActionResult> {
|
|
429
|
+
try {
|
|
430
|
+
const live = getCurrentParams({ parameters });
|
|
431
|
+
if (String(live.islevel) !== '2') {
|
|
432
|
+
return { ok: false, error: 'Only the host can end a poll.' };
|
|
433
|
+
}
|
|
434
|
+
await handleEndPoll({
|
|
435
|
+
pollId,
|
|
436
|
+
socket: live.socket,
|
|
437
|
+
showAlert: live.showAlert,
|
|
438
|
+
roomName: live.roomName || '',
|
|
439
|
+
updateIsPollModalVisible: live.updateIsPollModalVisible || noop,
|
|
440
|
+
});
|
|
441
|
+
return { ok: true, error: '' };
|
|
442
|
+
} catch (error: any) {
|
|
443
|
+
return { ok: false, error: error?.message || 'The poll could not be ended.' };
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/* ------------------------------------------------------------------ *
|
|
448
|
+
* Breakout rooms
|
|
449
|
+
* ------------------------------------------------------------------ */
|
|
450
|
+
|
|
451
|
+
export interface BreakoutState {
|
|
452
|
+
/** True while breakout rooms are running. */
|
|
453
|
+
active: boolean;
|
|
454
|
+
/** The local user may start them. */
|
|
455
|
+
canStart: boolean;
|
|
456
|
+
/** Room composition as the SDK holds it. */
|
|
457
|
+
rooms: any[];
|
|
458
|
+
/** The breakout room the local user is in, or -1. */
|
|
459
|
+
currentRoom: number;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
export type GetBreakoutStateType = (options: HeadlessOptions) => BreakoutState;
|
|
463
|
+
|
|
464
|
+
/**
|
|
465
|
+
* Breakout-room state.
|
|
466
|
+
*
|
|
467
|
+
* Same `started && !ended` shape as the whiteboard, and the two are mutually
|
|
468
|
+
* exclusive — check this before offering a whiteboard control.
|
|
469
|
+
*/
|
|
470
|
+
export function getBreakoutState({ parameters }: HeadlessOptions): BreakoutState {
|
|
471
|
+
const source: HeadlessParameters = parameters || {};
|
|
472
|
+
return {
|
|
473
|
+
active:
|
|
474
|
+
source.breakOutRoomStarted === true && source.breakOutRoomEnded !== true,
|
|
475
|
+
canStart: source.canStartBreakout === true,
|
|
476
|
+
rooms: Array.isArray(source.breakoutRooms) ? source.breakoutRooms : [],
|
|
477
|
+
currentRoom:
|
|
478
|
+
typeof source.hostNewRoom === 'number' ? source.hostNewRoom : -1,
|
|
479
|
+
};
|
|
480
|
+
}
|