@rtco/client
Version:
artico client library
232 lines (227 loc) • 7.28 kB
TypeScript
// Generated by dts-bundle-generator v9.5.1
import { EventEmitter } from 'eventemitter3';
declare enum LogLevel {
/**
* Prints no logs.
*/
Disabled = 0,
/**
* Prints only errors.
*/
Errors = 1,
/**
* Prints errors and warnings.
*/
Warnings = 2,
/**
* Prints info, errors and warnings.
*/
Info = 3,
/**
* Prints all logs (Info + Debug).
*/
All = 4
}
export type Signal = {
type: "candidate";
data: RTCIceCandidate;
} | {
type: "sdp";
data: RTCSessionDescription;
};
export interface SignalMessage {
target: string;
session: string;
metadata?: string;
signal: Signal;
}
export interface SignalMessageWithSource extends SignalMessage {
source: string;
}
export type OutSignalMessage = SignalMessage;
export type InSignalMessage = SignalMessageWithSource;
export interface SignalingEvents {
connect: (id: string) => void;
disconnect: () => void;
error: (err: Error) => void;
signal: (msg: InSignalMessage) => void;
join: (roomId: string, peerId: string, metadata?: string) => void;
}
export type SignalingState = "disconnected" | "connecting" | "connected" | "ready";
export interface Signaling extends EventEmitter<SignalingEvents> {
get id(): string;
get state(): SignalingState;
connect(): void;
disconnect(): void;
signal(msg: SignalMessage): void;
join(roomId: string, metadata?: string): void;
}
export interface CallOpts {
signaling: Signaling;
debug?: LogLevel;
metadata?: string;
/**
* Optional RTCConfiguration for the peer connections.
* @defaultValue { iceServers: [ { urls: "stun:stun.l.google.com:19302" }, { urls: "stun:stun1.l.google.com:19302" } ] }
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration
*/
rtcConfig?: RTCConfiguration;
}
export interface CallerOptions extends CallOpts {
target: string;
session?: string;
}
export interface CalleeOptions extends CallOpts {
signal: InSignalMessage;
}
export type CallOptions = CallerOptions | CalleeOptions;
export interface CallEvents {
open: () => void;
close: () => void;
error: (err: Error) => void;
data: (data: string) => void;
stream: (stream: MediaStream, metadata?: string) => void;
removestream: (stream: MediaStream, metadata?: string) => void;
track: (track: MediaStreamTrack, stream: MediaStream, metadata?: string) => void;
removetrack: (track: MediaStreamTrack, stream: MediaStream, metadata?: string) => void;
}
export interface ICall {
get session(): string;
get metadata(): string | undefined;
get initiator(): boolean;
get ready(): boolean;
answer(): void;
hangup(): void;
send(data: string): void;
addStream(stream: MediaStream, metadata?: string): void;
addTrack(track: MediaStreamTrack, stream: MediaStream): void;
removeStream(stream: MediaStream): void;
removeTrack(track: MediaStreamTrack): void;
}
export declare class Call extends EventEmitter<CallEvents> implements ICall {
#private;
static readonly SESSION_PREFIX = "call:";
constructor(options: CallOptions);
get session(): string;
get metadata(): string | undefined;
get initiator(): boolean;
get ready(): boolean;
get target(): string;
hangup: () => void;
answer: () => void;
send: (data: string) => void;
addStream: (stream: MediaStream, metadata?: string) => void;
removeStream: (stream: MediaStream) => void;
addTrack: (track: MediaStreamTrack, stream: MediaStream) => void;
removeTrack: (track: MediaStreamTrack) => void;
}
export interface RoomEvents {
close: () => void;
join: (peerId: string, metadata?: string) => void;
leave: (peerId: string) => void;
stream: (stream: MediaStream, peerId: string, metadata?: string) => void;
removestream: (stream: MediaStream, peerId: string, metadata?: string) => void;
track: (track: MediaStreamTrack, stream: MediaStream, peerId: string, metadata?: string) => void;
removetrack: (track: MediaStreamTrack, stream: MediaStream, peerId: string, metadata?: string) => void;
message: (data: string, peerId: string) => void;
}
export interface RoomOptions {
signaling: Signaling;
roomId: string;
debug?: LogLevel;
metadata?: string;
/**
* Optional RTCConfiguration for the peer connections.
* @defaultValue { iceServers: [ { urls: "stun:stun.l.google.com:19302" }, { urls: "stun:stun1.l.google.com:19302" } ] }
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration
*/
rtcConfig?: RTCConfiguration;
}
export interface IRoom {
get id(): string;
get session(): string;
get peers(): string[];
leave(): void;
send(msg: string, target?: string | string[]): void;
addStream(stream: MediaStream, metadata?: string, target?: string | string[]): void;
removeStream(stream: MediaStream, target?: string | string[]): void;
addTrack(track: MediaStreamTrack, stream: MediaStream, target?: string | string[]): void;
removeTrack(track: MediaStreamTrack, target?: string | string[]): void;
}
export declare class Room extends EventEmitter<RoomEvents> implements IRoom {
#private;
static readonly SESSION_PREFIX = "room:";
constructor(options: RoomOptions);
get id(): string;
get session(): string;
get peers(): string[];
leave(): void;
send(msg: string, target?: string | string[]): void;
addStream(stream: MediaStream, metadata?: string, target?: string | string[] | null): void;
removeStream(stream: MediaStream, target?: string | string[]): void;
addTrack(track: MediaStreamTrack, stream: MediaStream, target?: string | string[]): void;
removeTrack(track: MediaStreamTrack, target?: string | string[]): void;
}
export interface ArticoEvents {
open: (id: string) => void;
close: () => void;
error: (err: Error) => void;
call: (call: Call) => void;
}
export interface ArticoOptions {
/**
* The log level (0: none, 1: errors, 2: warnings, 3: info, 4: debug).
* @defaultValue 1
*/
debug: LogLevel;
/**
* Optional signaling implementation.
* Defaults to using Artico's built-in socket.io signaling.
*/
signaling: Signaling;
/**
* Requested peer ID. If not provided, a random ID will be generated.
*/
id: string;
/**
* Optional RTCConfiguration for the peer connections.
* @defaultValue { iceServers: [ { urls: "stun:stun.l.google.com:19302" }, { urls: "stun:stun1.l.google.com:19302" } ] }
* @see https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration
*/
rtcConfig: RTCConfiguration;
}
export interface IArtico {
get id(): string;
get state(): SignalingState;
close: () => void;
call: (target: string, metadata?: string) => Call;
join: (roomId: string, metadata?: string) => Room;
}
export declare class Artico extends EventEmitter<ArticoEvents> implements IArtico {
#private;
constructor(options?: Partial<ArticoOptions>);
get id(): string;
get state(): SignalingState;
call: (target: string, metadata?: string) => Call;
join: (roomId: string, metadata?: string) => Room;
close: () => void;
}
export interface SocketSignalingOptions {
debug: LogLevel;
url: string;
id: string;
}
export declare class SocketSignaling extends EventEmitter<SignalingEvents> implements Signaling {
#private;
constructor(options?: Partial<SocketSignalingOptions>);
get id(): string;
get state(): SignalingState;
connect(): void;
disconnect(): void;
signal(msg: OutSignalMessage): void;
join(roomId: string, metadata?: string): void;
}
export {
Artico as default,
};
export {};