dpg.broadcast-client
Version:
Library for broadcast DPG
193 lines (192 loc) • 5.69 kB
TypeScript
import type Peer from "peerjs";
import type { Socket } from "socket.io-client";
import type { Writable } from "svelte/store";
interface MediaConfig {
audio: {
active: boolean;
disable: boolean;
id: string;
};
camera: {
active: boolean;
disable: boolean;
id: string;
};
}
interface ConferenceConfig {
id: string;
started_at: number;
users: {
id: string;
name: string;
media: MediaConfig;
pid: string;
}[];
owner: {
id: string;
name: string;
media: MediaConfig;
};
}
interface OwnerBroadcastData {
/**
* OnAir - it is affixed exclusively when connected to socket
*/
onAir: boolean;
/**
* The value of the variable depends on the config,
* when putting CID (ID of conference)
*/
isOwner: boolean;
/**
* Status of conference
*
* @variation status
* - disable - complete lack of work with the conference
* - settings - configuring the conference configuration (owner)
* - connections - onAir
* - end - conference disable after connection
*/
status: "disable" | "settings" | "connection" | "end";
/**
* Config of connection for working with conference
*
* @property connection.socket - socket instance for connection
* @property connection.media - current media config of users
* @property connection.peer - peer settings and config to display the current data
*/
connection: {
socket: Socket;
media: MediaConfig;
/**
* Peer settings and config to display the current data
*
* @property {Peer} peer.connections - current connections for call
* @property peer.streams - current streams to display in the interface
*/
peer: {
calls: {
[socketID: string]: any;
};
connections: {
[socketID: string]: Peer;
};
streams: {
self: MediaStream;
visitors: {
[socketID: string]: MediaStream;
};
};
};
};
conference?: ConferenceConfig;
/**
* Media Stream type of MediaConfig
* @param {MediaConfig} _config - config type of MediaConfig
* @constructor
*/
SetMediaConfig(_config: MediaConfig): void;
/**
* Set current user stream for call to conference
* @param {MediaStream} _media - MediaStream for config
* @constructor
*/
SetStream(_media: MediaStream): void;
/**
* Start of Broadcast
* @constructor
*/
StartBroadcast(): void;
/**
* Initialization is store for standard projects
* @param {String} name - name of store
* @param val - default value of store
* @constructor
*/
InitStore(name: string, val: any): Writable<any>;
}
interface VisitorBroadcastData {
/**
* OnAir - it is affixed exclusively when connected to socket
*/
onAir: boolean;
/**
* The value of the variable depends on the config,
* when putting CID (ID of conference)
*/
isOwner: boolean;
/**
* Status of conference
*
* @variation status
* - disable - complete lack of work with the conference
* - connections - onAir
* - end - conference disable after connection
*/
status: "disable" | "connection" | "end";
/**
* Config of connection for working with conference
*
* @property connection.socket - socket instance for connection
* @property connection.media - current media config of users
* @property connection.peer - peer settings and config to display the current data
*/
connection: {
socket: Socket;
media: MediaConfig;
/**
* Peer settings and config to display the current data
*
* @property {Peer} peer.connections - current connections for call
* @property peer.streams - current streams to display in the interface
*/
peer: {
pids: {
[socketID: string]: any;
};
calls: {
[socketID: string]: any;
};
connections: {
self: {
[socketID: string]: Peer;
};
visitors: {
[socketID: string]: Peer;
};
};
streams: {
self: MediaStream;
visitors: {
[socketID: string]: MediaStream;
};
};
};
};
conference?: ConferenceConfig;
/**
* Media Stream type of MediaConfig
* @param {MediaConfig} _config - config type of MediaConfig
* @constructor
*/
SetMediaConfig(_config: MediaConfig): void;
/**
* Set current user stream for call to conference
* @param {MediaStream} _media - MediaStream for config
* @constructor
*/
SetStream(_media: MediaStream): void;
/**
* Join to broadcast
* @constructor
*/
JoinBroadcast(): void;
/**
* Initialization is store for standard projects
* @param name - name of store
* @param val - default value of store
* @constructor
*/
InitStore(name: string, val: any): Writable<any>;
}
export { OwnerBroadcastData, VisitorBroadcastData, MediaConfig };