@videosdk.live/js-sdk
Version:
<h1 align="center"> <img src="https://static.videosdk.live/videosdk_logo_website_black.png"/><br/> <p align="center"> Video SDK for JavaScript<br/> <a href="https://videosdk.live/">videosdk.live</a> </p> </h1>
531 lines • 18.5 kB
TypeScript
export class Meeting {
/**
* Create a new meeting with id
* @param {string} meetingId
* @param {Participant} localParticipant
* @param {RoomClient} roomClient
*/
constructor(meetingId: string, localParticipant: Participant, roomClient: RoomClient);
/**
* @type {string}
*/
id: string;
roomClient: RoomClient;
/**
* @type {string}
*/
activeSpeakerId: string;
/**
* @type {string}
*/
activePresenterId: string;
/**
* @type {string}
*/
mainParticipantId: string;
/**
* @type {Map<string, Connection>}
*/
connections: Map<string, Connection>;
/**
* @type {Participant}
*/
localParticipant: Participant;
/**
* @type {Map<string, Participant>}
*/
participants: Map<string, Participant>;
/**
* @type {Map<string, Character>}
*/
characters: Map<string, Character>;
/**
* @type {string}
*/
baseUrl: string;
/**
* @type {string}
*/
livestreamState: string;
/**
* @type {string}
*/
recordingState: string;
/**
* @type {string}
*/
hlsState: string;
/**
* @type {string}
*/
transcriptionState: string;
/**
* @type {string}
*/
translationState: string;
/**
* @type {Object}
*/
hlsUrls: any;
messages: any[];
eventEmitter: EventEmitter<[never]>;
get isE2EEEnabled(): any;
handleError(error: any): void;
join(): void;
changeMode(mode: any): void;
leave(): void;
end(): void;
/**
*
* @param {string} participantId
* @param {boolean} decision
*/
respondEntry(participantId: string, decision: boolean): void;
/**
* @returns {Map<string, Participant>}
*/
get pinnedParticipants(): Map<string, Participant>;
muteMic(): void;
/**
* @param {MediaStream | undefined} customAudioTrack?
*/
unmuteMic(customAudioTrack?: MediaStream | undefined): void;
/**
*
* @param {MediaStream | undefined} customAudioTrack?
* @returns
*/
publishAudio(customAudioTrack?: MediaStream | undefined): Promise<void>;
unpublishAudio(): Promise<void>;
disableWebcam(): void;
/**
* @param {MediaStream | undefined} customVideoTrack?
*/
enableWebcam(customVideoTrack?: MediaStream | undefined): void;
/**
* @param {MediaStream | undefined} customVideoTrack?
*/
publishVideo(customVideoTrack?: MediaStream | undefined): Promise<void>;
unpublishVideo(): Promise<void>;
disableScreenShare(): void;
/**
* @param {MediaStream | undefined}customScreenSharingTrack?
*/
enableScreenShare(customScreenSharingTrack?: MediaStream | undefined): void;
/**
* @param {MediaStream | undefined}customScreenSharingTrack?
*/
pubblishScreenShare(customScreenSharingTrack?: MediaStream | undefined): void;
unpublishScreenShare(): void;
/**
* Send a message over the DataChannel with chunking.
*
* @param {string | Blob | ArrayBuffer | ArrayBufferView} payload - The message to send.
* @param {object} [options={}] - Additional send options.
* @param {("RELIABLE"|"UNRELIABLE")} [options.reliability="RELIABLE"] - Reliability mode for the message.
*/
send(payload: string | Blob | ArrayBuffer | ArrayBufferView, options?: {
reliability?: ("RELIABLE" | "UNRELIABLE");
}): Promise<any>;
/**
* @param {string} kind?
*/
pauseAllStreams(kind: string): void;
/**
* @param {string} kind?
*/
resumeAllStreams(kind: string): void;
/**
* @param {string} webhookUrl?
* @param {string} awsDirPath?
* @param {{layout: { type: "GRID" | "SPOTLIGHT" | "SIDEBAR" , priority: "SPEAKER" | "PIN", gridSize: number}}} config?
* @param {{enabled: boolean , summary: { enabled: boolean, prompt: string | undefined } | undefined}} transcription?
*/
startRecording(webhookUrl: string, awsDirPath: string, config: {
layout: {
type: "GRID" | "SPOTLIGHT" | "SIDEBAR";
priority: "SPEAKER" | "PIN";
gridSize: number;
};
}, transcription: {
enabled: boolean;
summary: {
enabled: boolean;
prompt: string | undefined;
} | undefined;
}): void;
stopRecording(): void;
/**
* @param {any} config?
*/
startTranscription(config: any): void;
stopTranscription(): void;
/**
* @param {any} config?
*/
startTranslation(config: any): Promise<void>;
/**
* @param {string} language?
*/
changeTranslationLanguage(language: string): Promise<void>;
stopTranslation(): Promise<void>;
/**
* @param {{layout: { type: "GRID" | "SPOTLIGHT" | "SIDEBAR" , priority: "SPEAKER" | "PIN", gridSize: number}}} config?
* @param {Array<{url : string, streamKey: string}>} outputs
*/
startLivestream(outputs: Array<{
url: string;
streamKey: string;
}>, config: {
layout: {
type: "GRID" | "SPOTLIGHT" | "SIDEBAR";
priority: "SPEAKER" | "PIN";
gridSize: number;
};
}): void;
stopLivestream(): void;
/**
* @param {{layout: { type: "GRID" | "SPOTLIGHT" | "SIDEBAR" , priority: "SPEAKER" | "PIN", gridSize: number}}} config?
* @param {{enabled: boolean , summary: { enabled: boolean, prompt: string | undefined } | undefined}} transcription?
*/
startHls(config: {
layout: {
type: "GRID" | "SPOTLIGHT" | "SIDEBAR";
priority: "SPEAKER" | "PIN";
gridSize: number;
};
}, transcription: {
enabled: boolean;
summary: {
enabled: boolean;
prompt: string | undefined;
} | undefined;
}): Promise<void>;
stopHls(): void;
createCharacter(config: any): Character;
getMics(): Promise<{
deviceId: string;
label: string;
}[]>;
getWebcams(): Promise<{
deviceId: string;
label: string;
facingMode: "front" | "environment";
}[]>;
/**
*
* @param {string | MediaStream } object
*/
changeMic(object: string | MediaStream): void;
/**
*
* @param {string | MediaStream } object
*/
changeWebcam(object: string | MediaStream): void;
/**
*
* @param { MediaStream } stream
*/
replaceWebcamStream(stream: MediaStream): void;
/**
*
* @param {"low" | "med" | "high"} quality
*/
setWebcamQuality(quality: "low" | "med" | "high"): void;
startWhiteboard(): void;
stopWhiteboard(): void;
/**
*
* @param {{link: string}} options
*/
startVideo({ link }: {
link: string;
}): void;
stopVideo(): void;
resumeVideo(): void;
refreshConnection(): void;
/**
*
* @param {{currentTime: number}} options
*/
pauseVideo({ currentTime }: {
currentTime: number;
}): void;
/**
*
* @param {{currentTime: number}} options
*/
seekVideo({ currentTime }: {
currentTime: number;
}): void;
pubSub: {
/**
* Publish message to a topic
*
* @param {String} topic
* @param {String} message
* @param {{ persist: boolean, sendOnly: Array<String> }} options
* @param {object} payload
*/
publish: (topic: string, message: string, options: {
persist: boolean;
sendOnly: Array<string>;
}, payload: object) => Promise<void>;
/**
* Subscribe to message on a topic
*
* @param {String} topic
* @param {Function} callback
*/
subscribe: (topic: string, callback: Function) => Promise<any>;
/**
* Unsubscribe from messages on a topic
*
* @param {String} topic
* @param {Function} callback
*/
unsubscribe: (topic: string, callback: Function) => Promise<void>;
};
handlePeerAdd({ peer }: {
peer: any;
}): void;
handleStreamState({ state, peerId, streamId }: {
state: any;
peerId: any;
streamId: any;
}): void;
handlePeerRemove({ peerId }: {
peerId: any;
}): void;
handleProducerAdd({ producer }: {
producer: any;
}): void;
handleUpdateProducer({ producer }: {
producer: any;
}): void;
handleProducerRemove({ producerId }: {
producerId: any;
}): void;
handleConsumerAdd({ consumer, peerId }: {
consumer: any;
peerId: any;
}): void;
handleConsumerResume({ consumerId, peerId }: {
consumerId: any;
peerId: any;
}): void;
handleConsumerPause({ consumerId, peerId }: {
consumerId: any;
peerId: any;
}): void;
handleConsumerRemove({ consumerId, peerId }: {
consumerId: any;
peerId: any;
}): void;
handleParticipantMediaStateChanged({ peerId, kind, newState }: {
peerId: any;
kind: any;
newState: any;
}): void;
handleParticipantPausedBySubManager(data: any): void;
handleParticipantResumeBySubManager(data: any): void;
handleSpeakerChange({ peerId }: {
peerId: any;
}): void;
handleNewChatMessage({ payload, from, reliability, timestamp }: {
payload: any;
from: any;
reliability: any;
timestamp: any;
}): void;
updateMainParticipant(participantId: any): void;
handleEntryRequested({ id, name }: {
id: any;
name: any;
}): void;
handleEntryResponded({ id, decision }: {
id: any;
decision: any;
}): void;
handleMeetingJoined({ peers, poll, messages, baseUrl, switchRoomId }: {
peers: any;
poll: any;
messages: any;
baseUrl: any;
switchRoomId: any;
}): void;
handleMeetingLeft(d: any): void;
handleRecordingStateChanged(d: any): void;
handleLivestreamStateChanged(d: any): void;
handleHlsStateChanged(d: any): void;
handleTranscriptionStateChanged(d: any): void;
handleTranscriptionText(d: any): void;
handleTranslationText(d: any): void;
handleTranslationStateChanged(d: any): void;
handleTranslationLanguageChanged(d: any): void;
handleRecordingStarted(): void;
handleRecordingStopped(): void;
handleLivestreamStarted(): void;
handleLivestreamStopped(): void;
handleHlsStarted(d: any): void;
handleHlsStopped(): void;
handleWhiteboardStarted(data: any): void;
handleWhiteboardStopped({}: {}): void;
handleAddCharacter(config: any): void;
handleInitCharacter(character: any): void;
handleRemoveCharacter(config: any): void;
handleCharacterStateChanged(config: any): void;
handleCharacterMessage(config: any): void;
handleUserMessage(config: any): void;
handleOnCharacterData(config: any): void;
handleOnCharacterError(config: any): void;
handleOnRemoveCurrentMeetingParticipant(): void;
handleVideoStateChanged(data: any): void;
handleVideoSeeked({ currentTime }: {
currentTime: any;
}): void;
handlePinStateChanged({ peerId, state, pinnedBy }: {
peerId: any;
state: any;
pinnedBy: any;
}): void;
handleMeetingStateChanged({ state }: {
state: any;
}): void;
handleQualityChanged({ type, state, timestamp }: {
type: any;
state: any;
timestamp: any;
}): void;
handleConsumersPaused({ kind }: {
kind: any;
}): void;
handleConsumersResumed({ kind }: {
kind: any;
}): void;
handleVideoQualityChanged({ peerId, prevQuality, currentQuality }: {
peerId: any;
prevQuality: any;
currentQuality: any;
}): void;
handleMicRequested({ peerId }: {
peerId: any;
}): void;
handleWebcamRequested({ peerId }: {
peerId: any;
}): void;
handleConnectionParticipantJoin({ roomId, peer }: {
roomId: any;
peer: any;
}): void;
handleConnectionParticipantLeft({ roomId, peerId }: {
roomId: any;
peerId: any;
}): void;
handleConnectionOpen({ peers, roomId, payload }: {
peers: any;
roomId: any;
payload: any;
}): void;
handleConnectionClose({ roomId }: {
roomId: any;
}): void;
handleMediaRelayError({ meetingId, error }: {
meetingId: any;
error: any;
}): void;
handleMediaRelayRequest({ peerId, meetingId, displayName, }: {
peerId: any;
meetingId: any;
displayName: any;
}): void;
handleMediaRelayRequestResponse({ decision, decidedBy, meetingId }: {
decision: any;
decidedBy: any;
meetingId: any;
}): void;
handleMediaRelayStart({ meetingId }: {
meetingId: any;
}): void;
handleMediaRelayStop({ meetingId, reason }: {
meetingId: any;
reason: any;
}): void;
requestMediaRelay({ destinationMeetingId, token, kinds }: {
destinationMeetingId: any;
token: any;
kinds: any;
}): Promise<void>;
stopMediaRelay(destinationMeetingId: any): Promise<void>;
enableAdaptiveSubscription(): Promise<void>;
disableAdaptiveSubscription(): Promise<void>;
enableE2EE(): Promise<void>;
disableE2EE(): Promise<void>;
handleSwitchMeeting(d: any): void;
handleConnectionChatMessage({ roomId, peerId, message }: {
roomId: any;
peerId: any;
message: any;
}): void;
handleE2EEStateChange(data: any): void;
/**
*
* @param {{meetingId: string, payload: string}} options
*/
connectTo({ meetingId, payload }: {
meetingId: string;
payload: string;
}): Promise<void>;
switchTo({ meetingId, token }: {
meetingId: any;
token: any;
}): void;
/**
*
* @param {{base64Data: string, token: string, fileName: string}} options
* @returns {Promise<string?>}
*/
uploadBase64File: ({ base64Data, token, fileName }: {
base64Data: string;
token: string;
fileName: string;
}) => Promise<string | null>;
/**
*
* @param {{url: string, token: string}} options
* @returns {Promise<string?>}
*/
fetchBase64File: ({ url, token }: {
url: string;
token: string;
}) => Promise<string | null>;
/**
*
* @returns {InputDeviceInfo}
*/
get selectedCameraDevice(): InputDeviceInfo;
/**
*
* @returns {InputDeviceInfo}
*/
get selectedMicrophoneDevice(): InputDeviceInfo;
/**
* Add event listener
* @param { EV_PARTICIPANT_JOINED | EV_PARTICIPANT_LEFT | EV_SPEAKER_CHANGED | EV_PRESENTER_CHANGED | EV_MAIN_PARTICIPANT_CHANGED | EV_ENTRY_REQUESTED | EV_ENTRY_RESPONDED | EV_RECORDING_STARTED | EV_RECORDING_STOPPED | EV_LIVESTREAM_STARTED | EV_LIVESTREAM_STOPPED | EV_HLS_STARTED | EV_HLS_STOPPED | EV_STREAM_ENABLED | EV_STREAM_DISABLED | EV_WHITEBOARD_STARTED | EV_WHITEBOARD_STOPPED | EV_MEETING_JOINED | EV_MEETING_LEFT | EV_VIDEO_STATE_CHANGED | EV_VIDEO_SEEKED | EV_MIC_REQUESTED | EV_WEBCAM_REQUESTED | EV_PIN_STATE_CHANGED | EV_CONNECTION_OPEN | EV_CONNECTION_CLOSE | EV_SWITCH_MEETING | EV_ALL_STREAMS_PAUSED | EV_ALL_STREAMS_RESUMED | EV_DATA | EV_TRANSCRIPTION_STATE_CHANGED | EV_TRANSCRIPTION_TEXT | EV_TRANSLATION_STATE_CHANGED | EV_TRANSLATION_TEXT | EV_TRANSLATION_LANGUAGE_CHANGED } eventType
* @param {Function} listener Callback function
*/
on(eventType: "participant-joined" | "participant-left" | "speaker-changed" | "presenter-changed" | "main-participant-changed" | "entry-requested" | "entry-responded" | "recording-started" | "recording-stopped" | "livestream-started" | "livestream-stopped" | "hls-started" | "hls-stopped" | "stream-enabled" | "stream-disabled" | "whiteboard-started" | "whiteboard-stopped" | "meeting-joined" | "meeting-left" | "video-state-changed" | "video-seeked" | "mic-requested" | "webcam-requested" | "pin-state-changed" | "connection-open" | "connection-close" | "switch-meeting" | "paused-all-streams" | "resumed-all-streams" | "data" | "transcription-state-changed" | "transcription-text" | "translation-state-changed" | "translation-text" | "translation-language-changed", listener: Function): void;
/**
* Remove event listener
* @param { EV_PARTICIPANT_JOINED | EV_PARTICIPANT_LEFT | EV_SPEAKER_CHANGED | EV_PRESENTER_CHANGED | EV_MAIN_PARTICIPANT_CHANGED | EV_ENTRY_REQUESTED | EV_ENTRY_RESPONDED | EV_RECORDING_STARTED | EV_RECORDING_STOPPED | EV_LIVESTREAM_STARTED | EV_LIVESTREAM_STOPPED | EV_HLS_STARTED | EV_HLS_STOPPED | EV_STREAM_ENABLED | EV_STREAM_DISABLED | EV_WHITEBOARD_STARTED | EV_WHITEBOARD_STOPPED | EV_MEETING_JOINED | EV_MEETING_LEFT | EV_VIDEO_STATE_CHANGED | EV_VIDEO_SEEKED | EV_MIC_REQUESTED | EV_WEBCAM_REQUESTED | EV_PIN_STATE_CHANGED | EV_CONNECTION_OPEN | EV_CONNECTION_CLOSE | EV_SWITCH_MEETING | EV_ALL_STREAMS_PAUSED | EV_ALL_STREAMS_RESUMED | EV_DATA | EV_TRANSCRIPTION_STATE_CHANGED | EV_TRANSCRIPTION_TEXT | EV_TRANSLATION_STATE_CHANGED | EV_TRANSLATION_TEXT | EV_TRANSLATION_LANGUAGE_CHANGED } eventType
* @param {Function} listener Callback function
*/
off(eventType: "participant-joined" | "participant-left" | "speaker-changed" | "presenter-changed" | "main-participant-changed" | "entry-requested" | "entry-responded" | "recording-started" | "recording-stopped" | "livestream-started" | "livestream-stopped" | "hls-started" | "hls-stopped" | "stream-enabled" | "stream-disabled" | "whiteboard-started" | "whiteboard-stopped" | "meeting-joined" | "meeting-left" | "video-state-changed" | "video-seeked" | "mic-requested" | "webcam-requested" | "pin-state-changed" | "connection-open" | "connection-close" | "switch-meeting" | "paused-all-streams" | "resumed-all-streams" | "data" | "transcription-state-changed" | "transcription-text" | "translation-state-changed" | "translation-text" | "translation-language-changed", listener: Function): void;
#private;
}
import RoomClient from "./lib/RoomClient";
import { Connection } from "./connection";
import { Participant } from "./participant";
import { Character } from "./character";
import { EventEmitter } from "events";
//# sourceMappingURL=meeting.d.ts.map