@livedigital/client 2.4.2 → 2.4.3

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.
@@ -0,0 +1,7 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ declare class EnhancedEventEmitter extends EventEmitter {
4
+ constructor();
5
+ safeEmit(event: string, ...args: unknown[]): boolean;
6
+ }
7
+ export default EnhancedEventEmitter;
@@ -0,0 +1,54 @@
1
+ export declare const CHANNEL_EVENTS: {
2
+ channelEvent: string;
3
+ channelJoin: string;
4
+ channelGetPeers: string;
5
+ channelLeave: string;
6
+ };
7
+ export declare const CLIENT_EVENTS: {
8
+ channelEvent: string;
9
+ peerJoined: string;
10
+ peerLeft: string;
11
+ channelRejoinRequired: string;
12
+ devicesListUpdated: string;
13
+ };
14
+ export declare const PEER_EVENTS: {
15
+ mediaPublished: string;
16
+ mediaUnPublished: string;
17
+ connectionQualityChanged: string;
18
+ trackStart: string;
19
+ trackEnd: string;
20
+ };
21
+ export declare enum SocketIOEvents {
22
+ Connected = "connected",
23
+ Reconnecting = "reconnecting",
24
+ Reconnected = "reconnected",
25
+ Disconnected = "disconnected",
26
+ Reconnect = "reconnect",
27
+ Error = "error"
28
+ }
29
+ export declare const MEDIASOUP_EVENTS: {
30
+ newProducer: string;
31
+ producerClose: string;
32
+ pauseProducer: string;
33
+ resumeProducer: string;
34
+ producerScoreChanged: string;
35
+ producerSetMaxSpatialLayer: string;
36
+ producerRequestMaxSpatialLayer: string;
37
+ createConsumer: string;
38
+ closeConsumer: string;
39
+ pauseConsumer: string;
40
+ resumeConsumer: string;
41
+ consumerScoreChanged: string;
42
+ consumerChangePreferredLayers: string;
43
+ setConsumerPriority: string;
44
+ transportCreate: string;
45
+ transportClose: string;
46
+ transportConnect: string;
47
+ transportProduce: string;
48
+ transportStateChange: string;
49
+ transportGetIceParameters: string;
50
+ };
51
+ export declare const MEDIASOUP_TRANSPORT_EVENTS: {
52
+ connect: string;
53
+ produce: string;
54
+ };
@@ -0,0 +1,9 @@
1
+ export declare const WEBCAM_SIMULCAST_ENCODINGS: {
2
+ scaleResolutionDownBy: number;
3
+ maxBitrate: number;
4
+ maxFramerate: number;
5
+ }[];
6
+ export declare const SCREEN_SHARING_SIMULCAST_ENCODINGS: {
7
+ maxBitrate: number;
8
+ dtx: boolean;
9
+ }[];
@@ -0,0 +1,18 @@
1
+ export declare const VIDEO_CONSTRAINS: {
2
+ qvga: {
3
+ width: number;
4
+ height: number;
5
+ };
6
+ vga: {
7
+ width: number;
8
+ height: number;
9
+ };
10
+ hd: {
11
+ width: number;
12
+ height: number;
13
+ };
14
+ fullhd: {
15
+ width: number;
16
+ height: number;
17
+ };
18
+ };
@@ -0,0 +1,11 @@
1
+ import debug from 'debug';
2
+ declare class Logger {
3
+ private readonly _debug;
4
+ private readonly _warn;
5
+ private readonly _error;
6
+ constructor(prefix?: string);
7
+ get debug(): debug.Debugger;
8
+ get warn(): debug.Debugger;
9
+ get error(): debug.Debugger;
10
+ }
11
+ export default Logger;
@@ -0,0 +1,56 @@
1
+ import { ProducerData, ConnectionQuality, PayloadOfPublishedMedia, Role } from '../types/common';
2
+ import EnhancedEventEmitter from '../EnhancedEventEmitter';
3
+ import Engine from './index';
4
+ import PeerProducer from './PeerProducer';
5
+ import PeerConsumer from './PeerConsumer';
6
+ import PeerTrack from './media/tracks/PeerTrack';
7
+ interface PeerConstructor {
8
+ id: string;
9
+ channelIds: string[];
10
+ appId: string;
11
+ producers: ProducerData[];
12
+ videoConsumer?: PeerConsumer;
13
+ audioConsumer?: PeerConsumer;
14
+ engine: Engine;
15
+ soundLevel?: number;
16
+ loginDate: Date;
17
+ uid?: string;
18
+ appData?: Record<string, unknown>;
19
+ role: Role;
20
+ }
21
+ export declare enum ScoreThreshold {
22
+ BAD = 4,
23
+ MEDIUM = 6,
24
+ GOOD = 10
25
+ }
26
+ declare class Peer {
27
+ id: string;
28
+ channelIds: string[];
29
+ appId: string;
30
+ loginDate: Date;
31
+ uid?: string;
32
+ appData: Record<string, unknown>;
33
+ role: Role;
34
+ private producers;
35
+ readonly tracks: Map<string, PeerTrack>;
36
+ private readonly engine;
37
+ private readonly _observer;
38
+ private readonly logger;
39
+ private incomingConnectionQuality;
40
+ private outgoingConnectionQuality;
41
+ constructor({ id, channelIds, appId, loginDate, producers, engine, appData, uid, role, }: PeerConstructor);
42
+ get observer(): EnhancedEventEmitter;
43
+ get isMe(): boolean;
44
+ get publishedMedia(): PayloadOfPublishedMedia[];
45
+ subscribe(producerId: string): Promise<void>;
46
+ private createConsumer;
47
+ private handleNewProducer;
48
+ private handlePeerEvents;
49
+ private emitConnectionQuality;
50
+ static getConnectionQualityByScore(score: number): ConnectionQuality;
51
+ private getAllConsumers;
52
+ getAllProducers(): PeerProducer[];
53
+ getConsumerByProducerId(producerId: string): PeerConsumer | undefined;
54
+ getConsumerById(id: string): PeerConsumer | undefined;
55
+ }
56
+ export default Peer;
@@ -0,0 +1,37 @@
1
+ import { MediaKind, RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
2
+ import { Consumer as MediasoupConsumer } from 'mediasoup-client/lib/types';
3
+ import { ConsumerData, SpatialLayerParams } from '../types/common';
4
+ declare class PeerConsumer {
5
+ score: number;
6
+ producerScore: number;
7
+ spatialLayers: number;
8
+ temporalLayers: number;
9
+ currentSpatialLayer: number;
10
+ currentTemporalLayer: number;
11
+ requestedSpatialLayer?: number;
12
+ currentMaxSpatialLayer: number;
13
+ availableSpatialLayers: SpatialLayerParams[];
14
+ currentSpatialLayerParams?: SpatialLayerParams;
15
+ readonly id: string;
16
+ readonly kind: MediaKind;
17
+ readonly producerId: string;
18
+ readonly appData: ConsumerData;
19
+ private readonly consumer;
20
+ private readonly logger;
21
+ constructor(consumer: MediasoupConsumer);
22
+ get paused(): boolean;
23
+ pause(): void;
24
+ resume(): void;
25
+ close(): void;
26
+ get isVideo(): boolean;
27
+ get isAudio(): boolean;
28
+ parseScalabilityMode(): void;
29
+ setSpatialLayersParams(): void;
30
+ setCurrentSpatialLayerParams(): void;
31
+ parseSpatialLayerParams(encoding: RtpEncodingParameters): SpatialLayerParams;
32
+ setCurrentSpatialLayer(currentSpatialLayer: number): void;
33
+ setCurrentTemporalLayer(currentTemporalLayer: number): void;
34
+ setRequestedSpatialLayer(spatialLayer: number | undefined): void;
35
+ setCurrentMaxSpatialLayer(spatialLayer: number): void;
36
+ }
37
+ export default PeerConsumer;
@@ -0,0 +1,15 @@
1
+ import { MediaKind } from 'mediasoup-client/lib/RtpParameters';
2
+ import { RtpEncodingParameters } from 'mediasoup-client/lib/types';
3
+ import { ProducerData, TrackLabel, TrackTransformParams } from '../types/common';
4
+ declare class PeerProducer {
5
+ readonly id: string;
6
+ readonly kind: MediaKind;
7
+ readonly peerId: string;
8
+ readonly label: TrackLabel;
9
+ readonly encodings: RtpEncodingParameters[];
10
+ readonly trackTransformParams: TrackTransformParams;
11
+ readonly maxSpatialLayer: number;
12
+ score: number;
13
+ constructor(params: ProducerData);
14
+ }
15
+ export default PeerProducer;
@@ -0,0 +1,8 @@
1
+ import Engine from '../index';
2
+ declare class ChannelEventHandler {
3
+ private readonly engine;
4
+ private readonly logger;
5
+ constructor(engine: Engine);
6
+ subscribeToEvents(): void;
7
+ }
8
+ export default ChannelEventHandler;
@@ -0,0 +1,8 @@
1
+ import Engine from '../index';
2
+ declare class MediaSoupEventHandler {
3
+ private readonly engine;
4
+ private readonly logger;
5
+ constructor(engine: Engine);
6
+ subscribeToEvents(): void;
7
+ }
8
+ export default MediaSoupEventHandler;
@@ -0,0 +1,54 @@
1
+ import { CreateCameraVideoTrackOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, JoinChannelParams, PeerResponse, Role, Track } from '../types/common';
2
+ import EnhancedEventEmitter from '../EnhancedEventEmitter';
3
+ import System from './system';
4
+ import Peer from './Peer';
5
+ import Network, { NetworkParams } from './network';
6
+ import Media from './media';
7
+ declare type EngineParams = {
8
+ clientEventEmitter: EnhancedEventEmitter;
9
+ network: NetworkParams;
10
+ };
11
+ declare class Engine {
12
+ system: System;
13
+ network: Network;
14
+ media: Media;
15
+ clientEventEmitter: EnhancedEventEmitter;
16
+ private readonly peersRepository;
17
+ private channelEventsHandler;
18
+ private mediaSoupEventsHandler;
19
+ private initialized;
20
+ private isJoined;
21
+ private app?;
22
+ private channel?;
23
+ private isRoomJoining;
24
+ private logger;
25
+ constructor(params: EngineParams);
26
+ private initialize;
27
+ release(): Promise<void>;
28
+ private pauseRemoteProducer;
29
+ private resumeRemoteProducer;
30
+ private watchSocketState;
31
+ get peers(): Peer[];
32
+ get hostPeers(): Peer[];
33
+ get audiencePeers(): Peer[];
34
+ get mySocketId(): string | undefined;
35
+ join(params: JoinChannelParams): Promise<void>;
36
+ loadPeers(role?: Role): Promise<void>;
37
+ setPeer(peerData: PeerResponse): Peer;
38
+ removePeer(peerId: string): void;
39
+ pause(track: Track): Promise<void>;
40
+ resume(track: Track): Promise<void>;
41
+ createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
42
+ createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
43
+ createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
44
+ publish(tracks: Track | Track[]): Promise<void>;
45
+ unpublish(tracks?: Track | Track[]): Promise<void>;
46
+ deleteTrack(tracks: Track): void;
47
+ get channelId(): string | undefined;
48
+ get appId(): string | undefined;
49
+ private getAvailableNode;
50
+ private waitForSocketConnection;
51
+ private performJoin;
52
+ get cahPublish(): boolean;
53
+ }
54
+ export default Engine;
@@ -0,0 +1,20 @@
1
+ import { Device } from 'mediasoup-client';
2
+ import { RtpCapabilities, RtpCodecCapability } from 'mediasoup-client/lib/RtpParameters';
3
+ import { CreateScreenVideoTrackOptions, CreateVideoTrackParams, Track } from '../../types/common';
4
+ declare class Media {
5
+ #private;
6
+ isDeviceLoaded: boolean;
7
+ private device?;
8
+ private tracks;
9
+ get mediasoupDevice(): Device;
10
+ loadDevice(routerRtpCapabilities: RtpCapabilities): Promise<void>;
11
+ getTrackCodec(track: Track): RtpCodecCapability | undefined;
12
+ private createTracks;
13
+ createUserMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]>;
14
+ createDisplayMediaTracks(constraints: MediaStreamConstraints): Promise<Track[]>;
15
+ deleteTrack(track: Track): void;
16
+ getAllTracks(): Track[];
17
+ static getScreenVideoTrackParams(options?: CreateScreenVideoTrackOptions): CreateVideoTrackParams;
18
+ static getCameraVideoTrackParams(options?: CreateScreenVideoTrackOptions): CreateVideoTrackParams;
19
+ }
20
+ export default Media;
@@ -0,0 +1,9 @@
1
+ import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
2
+ import { AudioEncoderConfig } from '../../../types/common';
3
+ import BaseTrack from './BaseTrack';
4
+ import TrackWithCodecOptions from './TrackWithCodecOptions';
5
+ declare class AudioTrack extends BaseTrack implements TrackWithCodecOptions {
6
+ getEncoderConfig(): AudioEncoderConfig;
7
+ getCodecOptions(): ProducerCodecOptions;
8
+ }
9
+ export default AudioTrack;
@@ -0,0 +1,26 @@
1
+ import { Producer } from 'mediasoup-client/lib/Producer';
2
+ import { MediaKind } from 'mediasoup-client/lib/RtpParameters';
3
+ import { EncoderConfig, TrackLabel } from '../../../types/common';
4
+ import Logger from '../../Logger';
5
+ declare class BaseTrack {
6
+ #private;
7
+ protected encoderConfig: EncoderConfig;
8
+ private producer?;
9
+ private label;
10
+ protected logger: Logger;
11
+ constructor(mediaStreamTrack: MediaStreamTrack);
12
+ get mediaStreamTrack(): MediaStreamTrack;
13
+ get id(): string;
14
+ get kind(): MediaKind;
15
+ get producerId(): string | undefined;
16
+ get isPublished(): boolean;
17
+ getLabel(): TrackLabel;
18
+ setLabel(label: TrackLabel): void;
19
+ setEncoderConfig(encoderConfig: EncoderConfig): void;
20
+ getEncoderConfig(): EncoderConfig;
21
+ setProducer(producer: Producer): void;
22
+ getProducer(): Producer | undefined;
23
+ closeProducer(): void;
24
+ setPriority(priority: RTCPriorityType): Promise<void>;
25
+ }
26
+ export default BaseTrack;
@@ -0,0 +1,29 @@
1
+ import { PreferredLayersParams, SpatialLayerParams, TrackLabel } from '../../../types/common';
2
+ import PeerConsumer from '../../PeerConsumer';
3
+ import Engine from '../../index';
4
+ interface PeerTrackConstructor {
5
+ mediaStreamTrack: MediaStreamTrack;
6
+ label: TrackLabel;
7
+ consumer?: PeerConsumer;
8
+ engine: Engine;
9
+ }
10
+ declare class PeerTrack {
11
+ #private;
12
+ readonly mediaStreamTrack: MediaStreamTrack;
13
+ readonly label: TrackLabel;
14
+ readonly consumer?: PeerConsumer;
15
+ constructor(payload: PeerTrackConstructor);
16
+ get consumerId(): string | undefined;
17
+ get currentSpatialLayer(): number;
18
+ close(): void;
19
+ pause(): Promise<void>;
20
+ resume(): Promise<void>;
21
+ setPriority(priority: number): Promise<void>;
22
+ private setConsumerPriority;
23
+ private pauseRemoteConsumer;
24
+ private resumeRemoteConsumer;
25
+ requestVideoPreferredLayers({ spatialLayer, temporalLayer }: PreferredLayersParams): Promise<void>;
26
+ getVideoAvailableLayers(): SpatialLayerParams[] | undefined;
27
+ private requestMaxSpatialLayer;
28
+ }
29
+ export default PeerTrack;
@@ -0,0 +1,4 @@
1
+ import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
2
+ export default interface TrackWithCodecOptions {
3
+ getCodecOptions(): ProducerCodecOptions;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
2
+ export default interface TrackWithEncodings {
3
+ getEncodings(): RtpEncodingParameters[];
4
+ }
@@ -0,0 +1,17 @@
1
+ import { ProducerCodecOptions } from 'mediasoup-client/lib/Producer';
2
+ import { RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
3
+ import { VideoCodec, VideoEncoderConfig } from '../../../types/common';
4
+ import BaseTrack from './BaseTrack';
5
+ import TrackWithCodecOptions from './TrackWithCodecOptions';
6
+ import TrackWithEncodings from './TrackWithEncodings';
7
+ declare class VideoTrack extends BaseTrack implements TrackWithCodecOptions, TrackWithEncodings {
8
+ transformParams: {};
9
+ getEncoderConfig(): VideoEncoderConfig;
10
+ getCodecOptions(): ProducerCodecOptions;
11
+ getPreferredCodec(): VideoCodec;
12
+ getEncodings(): RtpEncodingParameters[];
13
+ setTransformParams(transformParams: {}): void;
14
+ setMaxSpatialLayer(spatialLayer: number): Promise<void>;
15
+ getMaxSpatialLayer(): number | undefined;
16
+ }
17
+ export default VideoTrack;
@@ -0,0 +1,13 @@
1
+ import { GetNodeRequest, GetNodeResponse } from '../../types/network';
2
+ export declare type LoadBalancerApiClientParams = {
3
+ baseURL?: string;
4
+ timeout?: number;
5
+ customNode?: GetNodeResponse;
6
+ };
7
+ declare class LoadBalancerApiClient {
8
+ private readonly api;
9
+ private customNode?;
10
+ constructor(params: LoadBalancerApiClientParams);
11
+ getNode(params: GetNodeRequest): Promise<GetNodeResponse>;
12
+ }
13
+ export default LoadBalancerApiClient;
@@ -0,0 +1,20 @@
1
+ import { Socket } from 'socket.io-client';
2
+ import EnhancedEventEmitter from '../../EnhancedEventEmitter';
3
+ import { SocketResponse } from '../../types/common';
4
+ declare class SocketIO {
5
+ connection?: Socket;
6
+ connectionError?: string;
7
+ disconnectReason?: string;
8
+ reconnectingAttempt: number;
9
+ private serverUrl?;
10
+ private isConnected;
11
+ private readonly _observer;
12
+ private readonly logger;
13
+ constructor();
14
+ get observer(): EnhancedEventEmitter;
15
+ get id(): string | undefined;
16
+ connect(serverUrl: string): void;
17
+ disconnect(): void;
18
+ request(type: string, data?: {}): Promise<SocketResponse>;
19
+ }
20
+ export default SocketIO;
@@ -0,0 +1,24 @@
1
+ import { IceParameters, Transport } from 'mediasoup-client/lib/Transport';
2
+ import { Device } from 'mediasoup-client';
3
+ import SocketIO from './Socket';
4
+ import LoadBalancerApiClient, { LoadBalancerApiClientParams } from './LoadBalancerClient';
5
+ export declare type NetworkParams = {
6
+ loadbalancer: LoadBalancerApiClientParams;
7
+ };
8
+ declare class Network {
9
+ readonly socket: SocketIO;
10
+ readonly loadBalancerClient: LoadBalancerApiClient;
11
+ sendTransport?: Transport;
12
+ receiveTransport?: Transport;
13
+ private readonly logger;
14
+ constructor(params: NetworkParams);
15
+ closeRemoteProducer(producerId: string): Promise<void>;
16
+ closeSendTransport(): Promise<void>;
17
+ closeReceiveTransport(): Promise<void>;
18
+ private closeTransport;
19
+ createSendTransport(mediasoupDevice: Device): Promise<void>;
20
+ createRecvTransport(mediasoupDevice: Device): Promise<void>;
21
+ getIceParameters(transport: Transport): Promise<IceParameters>;
22
+ restartIce(transport: Transport): Promise<void>;
23
+ }
24
+ export default Network;
@@ -0,0 +1,24 @@
1
+ import EnhancedEventEmitter from '../../EnhancedEventEmitter';
2
+ declare type SystemParams = {
3
+ clientEventEmitter: EnhancedEventEmitter;
4
+ };
5
+ declare class System {
6
+ isEnableVideoDevicesLock: boolean;
7
+ isEnableAudioDevicesLock: boolean;
8
+ isDevicesDetected: boolean;
9
+ availableVideoDevices: MediaDeviceInfo[];
10
+ availableAudioDevices: MediaDeviceInfo[];
11
+ private isMediaDevicesAccessGranted;
12
+ clientEventEmitter: EnhancedEventEmitter;
13
+ private readonly logger;
14
+ constructor(params: SystemParams);
15
+ setIsEnableVideoDevicesLock(value: boolean): void;
16
+ setIsEnableAudioDevicesLock(value: boolean): void;
17
+ setAvailableVideoDevices(availableVideoDevices: MediaDeviceInfo[]): void;
18
+ setAvailableAudioDevices(availableAudioDevices: MediaDeviceInfo[]): void;
19
+ requestMediaDevicesAccess(): Promise<void>;
20
+ refreshAvailableMediaDevicesList(): Promise<void>;
21
+ detectDevices(): Promise<void>;
22
+ listenDevices(): void;
23
+ }
24
+ export default System;
@@ -0,0 +1,32 @@
1
+ import { AvailableMediaDevices, CreateCameraVideoTrackOptions, CreateMicrophoneAudioTrackOptions, CreateScreenMediaOptions, JoinChannelParams, Role, Track } from './types/common';
2
+ import EnhancedEventEmitter from './EnhancedEventEmitter';
3
+ import Peer from './engine/Peer';
4
+ import { LoadBalancerApiClientParams } from './engine/network/LoadBalancerClient';
5
+ declare type ClientParams = {
6
+ network?: {
7
+ loadbalancer?: LoadBalancerApiClientParams;
8
+ };
9
+ };
10
+ declare class Client {
11
+ private readonly engine;
12
+ private readonly _observer;
13
+ constructor(params: ClientParams);
14
+ get observer(): EnhancedEventEmitter;
15
+ get id(): string | undefined;
16
+ get peers(): Peer[];
17
+ get availableVideoDevices(): MediaDeviceInfo[];
18
+ get availableAudioDevices(): MediaDeviceInfo[];
19
+ detectDevices(): Promise<AvailableMediaDevices>;
20
+ join(params: JoinChannelParams): Promise<void>;
21
+ leave(): Promise<void>;
22
+ publish(tracks: Track | Track[]): Promise<void>;
23
+ unpublish(tracks?: Track | Track[]): Promise<void>;
24
+ pause(track: Track): Promise<void>;
25
+ resume(track: Track): Promise<void>;
26
+ createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
27
+ createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
28
+ createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
29
+ deleteTrack(track: Track): void;
30
+ loadPeers(role?: Role): Promise<void>;
31
+ }
32
+ export default Client;