@livedigital/client 2.17.0 → 2.18.0-webrtc-issue-events.2

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.
Files changed (36) hide show
  1. package/dist/constants/common.d.ts +2 -0
  2. package/dist/constants/events.d.ts +8 -0
  3. package/dist/engine/Peer.d.ts +0 -1
  4. package/dist/engine/PeerConsumer.d.ts +2 -1
  5. package/dist/engine/index.d.ts +2 -6
  6. package/dist/engine/media/tracks/AudioTrack.d.ts +1 -0
  7. package/dist/engine/media/tracks/BaseTrack.d.ts +21 -3
  8. package/dist/engine/media/tracks/PeerTrack.d.ts +8 -5
  9. package/dist/engine/media/tracks/VideoTrack.d.ts +1 -0
  10. package/dist/engine/network/Socket.d.ts +1 -1
  11. package/dist/engine/network/index.d.ts +9 -1
  12. package/dist/engine/wid/types.d.ts +5 -0
  13. package/dist/index.d.ts +0 -4
  14. package/dist/index.es.js +1 -1
  15. package/dist/index.js +2 -2
  16. package/dist/types/common.d.ts +18 -0
  17. package/dist/types/engine.d.ts +3 -0
  18. package/package.json +1 -1
  19. package/src/constants/common.ts +3 -0
  20. package/src/constants/events.ts +9 -0
  21. package/src/engine/DefaultEngineDependenciesFactory.ts +1 -0
  22. package/src/engine/Peer.ts +24 -42
  23. package/src/engine/PeerConsumer.ts +33 -1
  24. package/src/engine/index.ts +46 -159
  25. package/src/engine/media/index.ts +18 -6
  26. package/src/engine/media/tracks/AudioTrack.ts +10 -0
  27. package/src/engine/media/tracks/BaseTrack.ts +287 -5
  28. package/src/engine/media/tracks/PeerTrack.ts +137 -24
  29. package/src/engine/media/tracks/VideoTrack.ts +12 -0
  30. package/src/engine/network/Socket.ts +4 -4
  31. package/src/engine/network/index.ts +51 -1
  32. package/src/engine/wid/WebRTCIssueDetector.ts +17 -7
  33. package/src/engine/wid/types.ts +6 -0
  34. package/src/index.ts +0 -16
  35. package/src/types/common.ts +21 -0
  36. package/src/types/engine.ts +3 -0
@@ -9,3 +9,5 @@ export declare const LogLevels: {
9
9
  Info: 6;
10
10
  Debug: 7;
11
11
  };
12
+ export declare const CONSUMER_CHECK_STATE_TIMEOUT = 5000;
13
+ export declare const PRODUCER_CHECK_STATE_TIMEOUT = 3000;
@@ -11,6 +11,13 @@ export declare const CLIENT_EVENTS: {
11
11
  channelRejoinRequired: string;
12
12
  devicesListUpdated: string;
13
13
  transportConnectionTimeout: string;
14
+ trackPublishingFailed: string;
15
+ };
16
+ export declare const INTERNAL_CLIENT_EVENTS: {
17
+ trackProduced: string;
18
+ trackUnproduced: string;
19
+ trackPaused: string;
20
+ trackResumed: string;
14
21
  };
15
22
  export declare const PEER_EVENTS: {
16
23
  mediaPublished: string;
@@ -20,6 +27,7 @@ export declare const PEER_EVENTS: {
20
27
  trackEnd: string;
21
28
  trackPaused: string;
22
29
  trackResumed: string;
30
+ trackFailed: string;
23
31
  };
24
32
  export declare enum SocketIOEvents {
25
33
  Connected = "connected",
@@ -43,7 +43,6 @@ declare class Peer {
43
43
  get isMe(): boolean;
44
44
  get publishedMedia(): PayloadOfPublishedMedia[];
45
45
  subscribe(producerId: string): Promise<void>;
46
- private createConsumer;
47
46
  private handleNewProducer;
48
47
  private handlePeerEvents;
49
48
  private emitConnectionQuality;
@@ -1,6 +1,6 @@
1
1
  import { MediaKind, RtpEncodingParameters } from 'mediasoup-client/lib/RtpParameters';
2
2
  import { Consumer as MediasoupConsumer } from 'mediasoup-client/lib/types';
3
- import { ConsumerData, LogLevel, SpatialLayerParams } from '../types/common';
3
+ import { ConsumerData, ExtendedRTCInboundRtpStreamStats, LogLevel, SpatialLayerParams } from '../types/common';
4
4
  export declare type PeerConsumerConstructorParams = {
5
5
  consumer: MediasoupConsumer;
6
6
  logLevel: LogLevel;
@@ -37,5 +37,6 @@ declare class PeerConsumer {
37
37
  setCurrentTemporalLayer(currentTemporalLayer: number): void;
38
38
  setRequestedSpatialLayer(spatialLayer: number | undefined): void;
39
39
  setCurrentMaxSpatialLayer(spatialLayer: number): void;
40
+ getInboundRTPStreamStats(): Promise<ExtendedRTCInboundRtpStreamStats>;
40
41
  }
41
42
  export default PeerConsumer;
@@ -35,8 +35,6 @@ declare class Engine {
35
35
  constructor(params: EngineParams);
36
36
  private initialize;
37
37
  release(): Promise<void>;
38
- private pauseRemoteProducer;
39
- private resumeRemoteProducer;
40
38
  private watchSocketState;
41
39
  get peers(): Peer[];
42
40
  get hostPeers(): Peer[];
@@ -46,13 +44,9 @@ declare class Engine {
46
44
  loadPeers(role?: Role): Promise<void>;
47
45
  setPeer(peerData: PeerResponse): Peer;
48
46
  removePeer(peerId: string): void;
49
- pause(track: Track): Promise<void>;
50
- resume(track: Track): Promise<void>;
51
47
  createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
52
48
  createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
53
49
  createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;
54
- publish(tracks: Track | Track[]): Promise<void>;
55
- unpublish(tracks?: Track | Track[]): Promise<void>;
56
50
  deleteTrack(tracks: Track): void;
57
51
  get channelId(): string | undefined;
58
52
  get appId(): string | undefined;
@@ -65,5 +59,7 @@ declare class Engine {
65
59
  private sendJoinChannelRequest;
66
60
  get cahPublish(): boolean;
67
61
  private get myPeer();
62
+ private unpublishAllTracks;
63
+ private watchClientEvents;
68
64
  }
69
65
  export default Engine;
@@ -6,5 +6,6 @@ declare class AudioTrack extends BaseTrack implements TrackWithCodecOptions {
6
6
  getEncoderConfig(): AudioEncoderConfig;
7
7
  getCodecOptions(): ProducerCodecOptions;
8
8
  getPreferredCodec(): AudioCodec;
9
+ publish(): Promise<void>;
9
10
  }
10
11
  export default AudioTrack;
@@ -1,30 +1,48 @@
1
1
  import { Producer } from 'mediasoup-client/lib/Producer';
2
2
  import { MediaKind } from 'mediasoup-client/lib/RtpParameters';
3
- import { EncoderConfig, LogLevel, TrackLabel } from '../../../types/common';
3
+ import { EncoderConfig, LogLevel, TrackLabel, TrackProduceParams } from '../../../types/common';
4
4
  import Logger from '../../Logger';
5
+ import Engine from '../../index';
6
+ import EnhancedEventEmitter from '../../../EnhancedEventEmitter';
5
7
  export declare type BaseTrackConstructorParams = {
6
8
  mediaStreamTrack: MediaStreamTrack;
7
9
  logLevel: LogLevel;
10
+ engine: Engine;
11
+ clientEventEmitter: EnhancedEventEmitter;
8
12
  };
9
13
  declare class BaseTrack {
10
14
  #private;
11
15
  protected encoderConfig: EncoderConfig;
12
16
  private producer?;
13
17
  private label;
14
- protected logger: Logger;
18
+ readonly logger: Logger;
15
19
  constructor(params: BaseTrackConstructorParams);
16
20
  get mediaStreamTrack(): MediaStreamTrack;
17
21
  get id(): string;
18
22
  get kind(): MediaKind;
19
23
  get producerId(): string | undefined;
20
24
  get isPublished(): boolean;
25
+ get isPaused(): boolean;
26
+ get clientEventEmitter(): EnhancedEventEmitter;
21
27
  getLabel(): TrackLabel;
22
28
  setLabel(label: TrackLabel): void;
23
29
  setEncoderConfig(encoderConfig: EncoderConfig): void;
24
30
  getEncoderConfig(): EncoderConfig;
25
31
  setProducer(producer: Producer): void;
26
32
  getProducer(): Producer | undefined;
27
- closeProducer(): void;
33
+ closeProducer(stopTrack?: boolean): Promise<void>;
28
34
  setPriority(priority: RTCPriorityType): Promise<void>;
35
+ private checkProducerState;
36
+ private createSelfConsumer;
37
+ private closeSelfConsumer;
38
+ private restartProducer;
39
+ private isCodecsMatched;
40
+ private cancelProducerCheckState;
41
+ produce({ encodings, codecOptions, preferredCodec, transformParams, }: TrackProduceParams): Promise<void>;
42
+ unpublish(): Promise<void>;
43
+ private pauseRemoteProducer;
44
+ private resumeRemoteProducer;
45
+ pause(): Promise<void>;
46
+ resume(): Promise<void>;
29
47
  }
30
48
  export default BaseTrack;
@@ -12,22 +12,25 @@ interface PeerTrackConstructor {
12
12
  }
13
13
  declare class PeerTrack {
14
14
  #private;
15
- readonly mediaStreamTrack: MediaStreamTrack;
16
15
  readonly label: TrackLabel;
17
- readonly consumer?: PeerConsumer;
16
+ consumer?: PeerConsumer;
18
17
  constructor(payload: PeerTrackConstructor);
18
+ get mediaStreamTrack(): MediaStreamTrack;
19
19
  get isPaused(): boolean;
20
20
  get consumerId(): string | undefined;
21
21
  get currentSpatialLayer(): number;
22
- close(): void;
22
+ close(): Promise<void>;
23
23
  pause(): Promise<void>;
24
24
  resume(): Promise<void>;
25
25
  setPriority(priority: number): Promise<void>;
26
26
  private setConsumerPriority;
27
- private pauseRemoteConsumer;
28
- private resumeRemoteConsumer;
29
27
  requestVideoPreferredLayers({ spatialLayer, temporalLayer }: PreferredLayersParams): Promise<void>;
30
28
  getVideoAvailableLayers(): SpatialLayerParams[] | undefined;
31
29
  private requestMaxSpatialLayer;
30
+ private checkConsumerState;
31
+ private closeConsumer;
32
+ private restartConsumer;
33
+ private isInboundRTPStreamActive;
34
+ private clearCheckStateTimeout;
32
35
  }
33
36
  export default PeerTrack;
@@ -13,5 +13,6 @@ declare class VideoTrack extends BaseTrack implements TrackWithCodecOptions, Tra
13
13
  setTransformParams(transformParams: {}): void;
14
14
  setMaxSpatialLayer(spatialLayer: number): Promise<void>;
15
15
  getMaxSpatialLayer(): number | undefined;
16
+ publish(): Promise<void>;
16
17
  }
17
18
  export default VideoTrack;
@@ -19,7 +19,7 @@ declare class SocketIO {
19
19
  get id(): string | undefined;
20
20
  connect(serverUrl: string): void;
21
21
  disconnect(): void;
22
- request(type: string, data?: {}): Promise<SocketResponse>;
22
+ request(event: string, payload?: {}): Promise<SocketResponse>;
23
23
  private getDisconnectReasonCode;
24
24
  private setReconnectingAttempt;
25
25
  }
@@ -1,7 +1,8 @@
1
1
  import { IceParameters, Transport } from 'mediasoup-client/lib/Transport';
2
2
  import { Device } from 'mediasoup-client';
3
+ import { Consumer } from 'mediasoup-client/lib/Consumer';
3
4
  import SocketIO from './Socket';
4
- import { LogLevel } from '../../types/common';
5
+ import { CreateConsumerPayload, LogLevel, SocketResponse } from '../../types/common';
5
6
  import LoadBalancerApiClient from './LoadBalancerClient';
6
7
  export declare type NetworkParams = {
7
8
  socketClient: SocketIO;
@@ -23,5 +24,12 @@ declare class Network {
23
24
  createRecvTransport(mediasoupDevice: Device): Promise<void>;
24
25
  getIceParameters(transport: Transport): Promise<IceParameters>;
25
26
  restartIce(transport: Transport): Promise<void>;
27
+ createConsumer({ producerId, rtpCapabilities, appId, channelId, producerPeerId, }: CreateConsumerPayload): Promise<{
28
+ consumer: Consumer;
29
+ isProducerPaused: boolean;
30
+ }>;
31
+ closeRemoteConsumer(consumerId: string): Promise<SocketResponse>;
32
+ resumeRemoteConsumer(consumerId: string): Promise<SocketResponse>;
33
+ pauseRemoteConsumer(consumerId: string): Promise<SocketResponse>;
26
34
  }
27
35
  export default Network;
@@ -14,6 +14,7 @@ export declare enum EventType {
14
14
  export declare type EventPayload = IssueDetectorResult;
15
15
  export declare type WebRTCIssueDetectorConstructorParams = {
16
16
  onIssues?: (payload: IssueDetectorResult) => void;
17
+ ignoreSSRCList?: number[];
17
18
  };
18
19
  export declare enum IssueType {
19
20
  Network = "network",
@@ -45,3 +46,7 @@ export declare type IssuePayload = {
45
46
  debug?: string;
46
47
  trackIdentifier?: string;
47
48
  };
49
+ export declare type DetectIssuesPayload = {
50
+ data: WebRTCStatsEventData;
51
+ ignoreSSRCList?: number[];
52
+ };
package/dist/index.d.ts CHANGED
@@ -24,10 +24,6 @@ declare class Client {
24
24
  detectDevices(): Promise<AvailableMediaDevices>;
25
25
  join(params: JoinChannelParams): Promise<void>;
26
26
  leave(): Promise<void>;
27
- publish(tracks: Track | Track[]): Promise<void>;
28
- unpublish(tracks?: Track | Track[]): Promise<void>;
29
- pause(track: Track): Promise<void>;
30
- resume(track: Track): Promise<void>;
31
27
  createCameraVideoTrack(options?: CreateCameraVideoTrackOptions): Promise<Track>;
32
28
  createMicrophoneAudioTrack(options?: CreateMicrophoneAudioTrackOptions): Promise<Track>;
33
29
  createScreenMediaTracks(options?: CreateScreenMediaOptions): Promise<Track[]>;