@fishjam-cloud/ts-client 0.10.1 → 0.11.0

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.
package/dist/index.d.mts CHANGED
@@ -1,5 +1,9 @@
1
- import TypedEmitter from 'typed-emitter';
2
1
  import { BinaryWriter, BinaryReader } from '@bufbuild/protobuf/wire';
2
+ import TypedEmitter from 'typed-emitter';
3
+
4
+ declare const AUTH_ERROR_REASONS: readonly ["missing token", "invalid token", "expired token", "room not found", "peer not found"];
5
+ type AuthErrorReason = (typeof AUTH_ERROR_REASONS)[number];
6
+ declare const isAuthError: (error: string) => error is AuthErrorReason;
3
7
 
4
8
  declare enum Variant {
5
9
  VARIANT_UNSPECIFIED = 0,
@@ -35,36 +39,6 @@ interface MessageFns$2<T> {
35
39
  fromPartial<I extends Exact$2<DeepPartial$2<T>, I>>(object: I): T;
36
40
  }
37
41
 
38
- interface MediaEvent_Track_SimulcastConfig {
39
- enabled: boolean;
40
- enabledVariants: Variant[];
41
- disabledVariants: Variant[];
42
- }
43
- declare const MediaEvent_Track_SimulcastConfig: MessageFns$1<MediaEvent_Track_SimulcastConfig>;
44
- interface MediaEvent_OfferData_TrackTypes {
45
- audio: number;
46
- video: number;
47
- }
48
- declare const MediaEvent_OfferData_TrackTypes: MessageFns$1<MediaEvent_OfferData_TrackTypes>;
49
- type Builtin$1 = Date | Function | Uint8Array | string | number | boolean | undefined;
50
- type DeepPartial$1<T> = T extends Builtin$1 ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial$1<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial$1<U>> : T extends {} ? {
51
- [K in keyof T]?: DeepPartial$1<T[K]>;
52
- } : Partial<T>;
53
- type KeysOfUnion$1<T> = T extends T ? keyof T : never;
54
- type Exact$1<P, I extends P> = P extends Builtin$1 ? P : P & {
55
- [K in keyof P]: Exact$1<P[K], I[K]>;
56
- } & {
57
- [K in Exclude<keyof I, KeysOfUnion$1<P>>]: never;
58
- };
59
- interface MessageFns$1<T> {
60
- encode(message: T, writer?: BinaryWriter): BinaryWriter;
61
- decode(input: BinaryReader | Uint8Array, length?: number): T;
62
- fromJSON(object: any): T;
63
- toJSON(message: T): unknown;
64
- create<I extends Exact$1<DeepPartial$1<T>, I>>(base?: I): T;
65
- fromPartial<I extends Exact$1<DeepPartial$1<T>, I>>(object: I): T;
66
- }
67
-
68
42
  /** Defines any type of message sent from Peer to Membrane RTC Engine */
69
43
  interface MediaEvent$1 {
70
44
  connect?: MediaEvent_Connect | undefined;
@@ -79,36 +53,36 @@ interface MediaEvent$1 {
79
53
  disableTrackVariant?: MediaEvent_DisableTrackVariant | undefined;
80
54
  setTargetTrackVariant?: MediaEvent_SetTargetTrackVariant | undefined;
81
55
  }
82
- declare const MediaEvent$1: MessageFns<MediaEvent$1>;
56
+ declare const MediaEvent$1: MessageFns$1<MediaEvent$1>;
83
57
  interface MediaEvent_VariantBitrate {
84
58
  variant: Variant;
85
59
  bitrate: number;
86
60
  }
87
- declare const MediaEvent_VariantBitrate: MessageFns<MediaEvent_VariantBitrate>;
61
+ declare const MediaEvent_VariantBitrate: MessageFns$1<MediaEvent_VariantBitrate>;
88
62
  /** Sent when a peer wants to join WebRTC Endpoint. */
89
63
  interface MediaEvent_Connect {
90
64
  metadataJson: string;
91
65
  }
92
- declare const MediaEvent_Connect: MessageFns<MediaEvent_Connect>;
66
+ declare const MediaEvent_Connect: MessageFns$1<MediaEvent_Connect>;
93
67
  /** Sent when a peer disconnects from WebRTC Endpoint. */
94
68
  interface MediaEvent_Disconnect {
95
69
  }
96
- declare const MediaEvent_Disconnect: MessageFns<MediaEvent_Disconnect>;
70
+ declare const MediaEvent_Disconnect: MessageFns$1<MediaEvent_Disconnect>;
97
71
  /** Sent when a peer wants to update its metadata */
98
72
  interface MediaEvent_UpdateEndpointMetadata {
99
73
  metadataJson: string;
100
74
  }
101
- declare const MediaEvent_UpdateEndpointMetadata: MessageFns<MediaEvent_UpdateEndpointMetadata>;
75
+ declare const MediaEvent_UpdateEndpointMetadata: MessageFns$1<MediaEvent_UpdateEndpointMetadata>;
102
76
  /** Sent when a peer wants to update its track's metadata */
103
77
  interface MediaEvent_UpdateTrackMetadata {
104
78
  trackId: string;
105
79
  metadataJson: string;
106
80
  }
107
- declare const MediaEvent_UpdateTrackMetadata: MessageFns<MediaEvent_UpdateTrackMetadata>;
81
+ declare const MediaEvent_UpdateTrackMetadata: MessageFns$1<MediaEvent_UpdateTrackMetadata>;
108
82
  /** Sent when peer wants to renegatiate connection due to adding a track or removing a track */
109
83
  interface MediaEvent_RenegotiateTracks {
110
84
  }
111
- declare const MediaEvent_RenegotiateTracks: MessageFns<MediaEvent_RenegotiateTracks>;
85
+ declare const MediaEvent_RenegotiateTracks: MessageFns$1<MediaEvent_RenegotiateTracks>;
112
86
  /**
113
87
  * Sent as a response to `offerData` media event during renegotiation
114
88
  * Maps contain only information about current peer's `sendonly` tracks.
@@ -128,31 +102,61 @@ interface MediaEvent_SdpOffer {
128
102
  [key: string]: string;
129
103
  };
130
104
  }
131
- declare const MediaEvent_SdpOffer: MessageFns<MediaEvent_SdpOffer>;
105
+ declare const MediaEvent_SdpOffer: MessageFns$1<MediaEvent_SdpOffer>;
132
106
  /** Sent when Peer wants to update its track's bitrate */
133
107
  interface MediaEvent_TrackBitrates {
134
108
  trackId: string;
135
109
  /** Bitrate of each variant. For non-simulcast tracks use VARIANT_UNSPECIFIED. */
136
110
  variantBitrates: MediaEvent_VariantBitrate[];
137
111
  }
138
- declare const MediaEvent_TrackBitrates: MessageFns<MediaEvent_TrackBitrates>;
112
+ declare const MediaEvent_TrackBitrates: MessageFns$1<MediaEvent_TrackBitrates>;
139
113
  /** Sent when client disables one of the track variants */
140
114
  interface MediaEvent_DisableTrackVariant {
141
115
  trackId: string;
142
116
  variant: Variant;
143
117
  }
144
- declare const MediaEvent_DisableTrackVariant: MessageFns<MediaEvent_DisableTrackVariant>;
118
+ declare const MediaEvent_DisableTrackVariant: MessageFns$1<MediaEvent_DisableTrackVariant>;
145
119
  /** Sent when client enables one of the track variants */
146
120
  interface MediaEvent_EnableTrackVariant {
147
121
  trackId: string;
148
122
  variant: Variant;
149
123
  }
150
- declare const MediaEvent_EnableTrackVariant: MessageFns<MediaEvent_EnableTrackVariant>;
124
+ declare const MediaEvent_EnableTrackVariant: MessageFns$1<MediaEvent_EnableTrackVariant>;
151
125
  interface MediaEvent_SetTargetTrackVariant {
152
126
  trackId: string;
153
127
  variant: Variant;
154
128
  }
155
- declare const MediaEvent_SetTargetTrackVariant: MessageFns<MediaEvent_SetTargetTrackVariant>;
129
+ declare const MediaEvent_SetTargetTrackVariant: MessageFns$1<MediaEvent_SetTargetTrackVariant>;
130
+ type Builtin$1 = Date | Function | Uint8Array | string | number | boolean | undefined;
131
+ type DeepPartial$1<T> = T extends Builtin$1 ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial$1<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial$1<U>> : T extends {} ? {
132
+ [K in keyof T]?: DeepPartial$1<T[K]>;
133
+ } : Partial<T>;
134
+ type KeysOfUnion$1<T> = T extends T ? keyof T : never;
135
+ type Exact$1<P, I extends P> = P extends Builtin$1 ? P : P & {
136
+ [K in keyof P]: Exact$1<P[K], I[K]>;
137
+ } & {
138
+ [K in Exclude<keyof I, KeysOfUnion$1<P>>]: never;
139
+ };
140
+ interface MessageFns$1<T> {
141
+ encode(message: T, writer?: BinaryWriter): BinaryWriter;
142
+ decode(input: BinaryReader | Uint8Array, length?: number): T;
143
+ fromJSON(object: any): T;
144
+ toJSON(message: T): unknown;
145
+ create<I extends Exact$1<DeepPartial$1<T>, I>>(base?: I): T;
146
+ fromPartial<I extends Exact$1<DeepPartial$1<T>, I>>(object: I): T;
147
+ }
148
+
149
+ interface MediaEvent_Track_SimulcastConfig {
150
+ enabled: boolean;
151
+ enabledVariants: Variant[];
152
+ disabledVariants: Variant[];
153
+ }
154
+ declare const MediaEvent_Track_SimulcastConfig: MessageFns<MediaEvent_Track_SimulcastConfig>;
155
+ interface MediaEvent_OfferData_TrackTypes {
156
+ audio: number;
157
+ video: number;
158
+ }
159
+ declare const MediaEvent_OfferData_TrackTypes: MessageFns<MediaEvent_OfferData_TrackTypes>;
156
160
  type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
157
161
  type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
158
162
  [K in keyof T]?: DeepPartial<T[K]>;
@@ -430,6 +434,21 @@ interface Endpoint {
430
434
  tracks: Map<string, TrackContext>;
431
435
  }
432
436
 
437
+ declare class ConnectionManager {
438
+ private readonly connection;
439
+ constructor(iceServers: RTCIceServer[]);
440
+ isConnectionUnstable: () => boolean;
441
+ getConnection: () => RTCPeerConnection;
442
+ addTransceiversIfNeeded: (serverTracks: MediaEvent_OfferData_TrackTypes) => void;
443
+ addTransceiver: (track: MediaStreamTrack, transceiverConfig: RTCRtpTransceiverInit) => void;
444
+ setOnTrackReady: (onTrackReady: (event: RTCTrackEvent) => void) => void;
445
+ setRemoteDescription: (data: RTCSessionDescriptionInit) => Promise<void>;
446
+ isTrackInUse: (track: MediaStreamTrack) => boolean;
447
+ removeTrack: (sender: RTCRtpSender) => void;
448
+ findSender: (mediaStreamTrackId: MediaStreamTrackId) => RTCRtpSender;
449
+ addIceCandidate: (iceCandidate: RTCIceCandidate) => Promise<void>;
450
+ }
451
+
433
452
  declare const TrackContextImpl_base: new () => TypedEmitter<Required<TrackContextEvents$1>>;
434
453
  declare class TrackContextImpl extends TrackContextImpl_base implements TrackContext {
435
454
  endpoint: Endpoint;
@@ -452,21 +471,6 @@ type EndpointWithTrackContext = Omit<Endpoint, 'tracks'> & {
452
471
  tracks: Map<string, TrackContextImpl>;
453
472
  };
454
473
 
455
- declare class ConnectionManager {
456
- private readonly connection;
457
- constructor(iceServers: RTCIceServer[]);
458
- isConnectionUnstable: () => boolean;
459
- getConnection: () => RTCPeerConnection;
460
- addTransceiversIfNeeded: (serverTracks: MediaEvent_OfferData_TrackTypes) => void;
461
- addTransceiver: (track: MediaStreamTrack, transceiverConfig: RTCRtpTransceiverInit) => void;
462
- setOnTrackReady: (onTrackReady: (event: RTCTrackEvent) => void) => void;
463
- setRemoteDescription: (data: RTCSessionDescriptionInit) => Promise<void>;
464
- isTrackInUse: (track: MediaStreamTrack) => boolean;
465
- removeTrack: (sender: RTCRtpSender) => void;
466
- findSender: (mediaStreamTrackId: MediaStreamTrackId) => RTCRtpSender;
467
- addIceCandidate: (iceCandidate: RTCIceCandidate) => Promise<void>;
468
- }
469
-
470
474
  declare const WebRTCEndpoint_base: new () => TypedEmitter<Required<WebRTCEndpointEvents>>;
471
475
  /**
472
476
  * Main class that is responsible for connecting to the RTC Engine, sending and receiving media.
@@ -759,12 +763,201 @@ declare class WebRTCEndpoint extends WebRTCEndpoint_base {
759
763
  private onIceConnectionStateChange;
760
764
  }
761
765
 
762
- declare const AUTH_ERROR_REASONS: readonly ["missing token", "invalid token", "expired token", "room not found", "peer not found"];
763
- type AuthErrorReason = (typeof AUTH_ERROR_REASONS)[number];
764
- declare const isAuthError: (error: string) => error is AuthErrorReason;
766
+ type ReconnectionStatus = 'reconnecting' | 'idle' | 'error';
767
+ type ReconnectConfig = {
768
+ maxAttempts?: number;
769
+ initialDelay?: number;
770
+ delay?: number;
771
+ addTracksOnReconnect?: boolean;
772
+ };
773
+
774
+ type TrackMetadata = {
775
+ type: 'camera' | 'microphone' | 'screenShareVideo' | 'screenShareAudio';
776
+ paused: boolean;
777
+ displayName?: string;
778
+ };
779
+ type GenericMetadata = Record<string, unknown> | undefined;
780
+ /**
781
+ *
782
+ * @category Connection
783
+ * @typeParam PeerMetadata Type of metadata set by peer while connecting to a room.
784
+ * @typeParam ServerMetadata Type of metadata set by the server while creating a peer.
785
+ */
786
+ type Metadata<PeerMetadata = GenericMetadata, ServerMetadata = GenericMetadata> = {
787
+ peer: PeerMetadata;
788
+ server: ServerMetadata;
789
+ };
790
+ type TrackContextEvents = {
791
+ encodingChanged: (context: FishjamTrackContext) => void;
792
+ voiceActivityChanged: (context: FishjamTrackContext) => void;
793
+ };
794
+ interface FishjamTrackContext extends TypedEmitter<TrackContextEvents> {
795
+ readonly track: MediaStreamTrack | null;
796
+ readonly stream: MediaStream | null;
797
+ readonly endpoint: Endpoint;
798
+ readonly trackId: string;
799
+ readonly simulcastConfig?: MediaEvent_Track_SimulcastConfig;
800
+ readonly metadata?: TrackMetadata;
801
+ readonly maxBandwidth?: TrackBandwidthLimit;
802
+ readonly vadStatus: VadStatus;
803
+ readonly encoding?: Variant;
804
+ readonly encodingReason?: EncodingReason;
805
+ }
806
+ type Peer<PeerMetadata = GenericMetadata, ServerMetadata = GenericMetadata> = {
807
+ id: string;
808
+ type: string;
809
+ metadata?: Metadata<PeerMetadata, ServerMetadata>;
810
+ tracks: Map<string, FishjamTrackContext>;
811
+ };
812
+ type Component = Omit<Endpoint, 'type'> & {
813
+ type: 'recording' | 'hls' | 'file' | 'rtsp' | 'sip';
814
+ };
815
+ /**
816
+ * Events emitted by the client with their arguments.
817
+ */
818
+ type MessageEvents<P, S> = {
819
+ /**
820
+ * Emitted when connect method invoked
821
+ *
822
+ */
823
+ connectionStarted: () => void;
824
+ /**
825
+ * Emitted when the websocket connection is closed
826
+ *
827
+ * @param {CloseEvent} event - Close event object from the websocket
828
+ */
829
+ socketClose: (event: CloseEvent) => void;
830
+ /**
831
+ * Emitted when occurs an error in the websocket connection
832
+ *
833
+ * @param {Event} event - Event object from the websocket
834
+ */
835
+ socketError: (event: Event) => void;
836
+ /**
837
+ * Emitted when the websocket connection is opened
838
+ *
839
+ * @param {Event} event - Event object from the websocket
840
+ */
841
+ socketOpen: (event: Event) => void;
842
+ /** Emitted when authentication is successful */
843
+ authSuccess: () => void;
844
+ /** Emitted when authentication fails */
845
+ authError: (reason: AuthErrorReason) => void;
846
+ /** Emitted when the connection is closed */
847
+ disconnected: () => void;
848
+ /** Emitted when the process of reconnection starts */
849
+ reconnectionStarted: () => void;
850
+ /** Emitted on successful reconnection */
851
+ reconnected: () => void;
852
+ /** Emitted when the maximum number of reconnection retries is reached */
853
+ reconnectionRetriesLimitReached: () => void;
854
+ /**
855
+ * Called when peer was accepted.
856
+ */
857
+ joined: (peerId: string, peers: Peer<P, S>[], components: Component[]) => void;
858
+ /**
859
+ * Called when peer was not accepted
860
+ * @param metadata - Pass through for client application to communicate further actions to frontend
861
+ */
862
+ joinError: (metadata: any) => void;
863
+ /**
864
+ * Called when data in a new track arrives.
865
+ *
866
+ * This callback is always called after {@link MessageEvents.trackAdded}.
867
+ * It informs user that data related to the given track arrives and can be played or displayed.
868
+ */
869
+ trackReady: (ctx: FishjamTrackContext) => void;
870
+ /**
871
+ * Called each time the peer which was already in the room, adds new track. Fields track and stream will be set to null.
872
+ * These fields will be set to non-null value in {@link MessageEvents.trackReady}
873
+ */
874
+ trackAdded: (ctx: FishjamTrackContext) => void;
875
+ /**
876
+ * Called when some track will no longer be sent.
877
+ *
878
+ * It will also be called before {@link MessageEvents.peerLeft} for each track of this peer.
879
+ */
880
+ trackRemoved: (ctx: FishjamTrackContext) => void;
881
+ /**
882
+ * Called each time peer has its track metadata updated.
883
+ */
884
+ trackUpdated: (ctx: FishjamTrackContext) => void;
885
+ /**
886
+ * Called each time new peer joins the room.
887
+ */
888
+ peerJoined: (peer: Peer<P, S>) => void;
889
+ /**
890
+ * Called each time peer leaves the room.
891
+ */
892
+ peerLeft: (peer: Peer<P, S>) => void;
893
+ /**
894
+ * Called each time peer has its metadata updated.
895
+ */
896
+ peerUpdated: (peer: Peer<P, S>) => void;
897
+ /**
898
+ * Called each time new peer joins the room.
899
+ */
900
+ componentAdded: (peer: Component) => void;
901
+ /**
902
+ * Called each time peer leaves the room.
903
+ */
904
+ componentRemoved: (peer: Component) => void;
905
+ /**
906
+ * Called each time peer has its metadata updated.
907
+ */
908
+ componentUpdated: (peer: Component) => void;
909
+ /**
910
+ * Called in case of errors related to multimedia session e.g. ICE connection.
911
+ */
912
+ connectionError: (error: {
913
+ message: string;
914
+ event?: Event;
915
+ }) => void;
916
+ /**
917
+ * Currently, this callback is only invoked when DisplayManager in RTC Engine is
918
+ * enabled and simulcast is disabled.
919
+ *
920
+ * Called when priority of video tracks have changed.
921
+ * @param enabledTracks - list of tracks which will be sent to client from SFU
922
+ * @param disabledTracks - list of tracks which will not be sent to client from SFU
923
+ */
924
+ tracksPriorityChanged: (enabledTracks: FishjamTrackContext[], disabledTracks: FishjamTrackContext[]) => void;
925
+ /**
926
+ * Called every time the server estimates client's bandiwdth.
927
+ *
928
+ * @param {bigint} estimation - client's available incoming bitrate estimated
929
+ * by the server. It's measured in bits per second.
930
+ */
931
+ bandwidthEstimationChanged: (estimation: bigint) => void;
932
+ targetTrackEncodingRequested: (event: Parameters<WebRTCEndpointEvents['targetTrackEncodingRequested']>[0]) => void;
933
+ localTrackAdded: (event: Parameters<WebRTCEndpointEvents['localTrackAdded']>[0]) => void;
934
+ localTrackRemoved: (event: Parameters<WebRTCEndpointEvents['localTrackRemoved']>[0]) => void;
935
+ localTrackReplaced: (event: Parameters<WebRTCEndpointEvents['localTrackReplaced']>[0]) => void;
936
+ localTrackMuted: (event: Parameters<WebRTCEndpointEvents['localTrackMuted']>[0]) => void;
937
+ localTrackUnmuted: (event: Parameters<WebRTCEndpointEvents['localTrackUnmuted']>[0]) => void;
938
+ localTrackBandwidthSet: (event: Parameters<WebRTCEndpointEvents['localTrackBandwidthSet']>[0]) => void;
939
+ localTrackEncodingBandwidthSet: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingBandwidthSet']>[0]) => void;
940
+ localTrackEncodingEnabled: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingEnabled']>[0]) => void;
941
+ localTrackEncodingDisabled: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingDisabled']>[0]) => void;
942
+ localPeerMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localEndpointMetadataChanged']>[0]) => void;
943
+ localTrackMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localTrackMetadataChanged']>[0]) => void;
944
+ disconnectRequested: (event: Parameters<WebRTCEndpointEvents['disconnectRequested']>[0]) => void;
945
+ };
946
+ /** Configuration object for the client */
947
+ interface ConnectConfig<PeerMetadata> {
948
+ /** Metadata for the peer */
949
+ peerMetadata: PeerMetadata;
950
+ /** Token for authentication */
951
+ token: string;
952
+ /** Fishjam url */
953
+ url: string;
954
+ }
955
+ type CreateConfig = {
956
+ reconnect?: ReconnectConfig | boolean;
957
+ };
765
958
 
766
959
  declare const FishjamClient_base: {
767
- new <PeerMetadata_1, ServerMetadata_1>(): TypedEmitter<MessageEvents<PeerMetadata_1, ServerMetadata_1>>;
960
+ new <P, S>(): TypedEmitter<MessageEvents<P, S>>;
768
961
  };
769
962
  /**
770
963
  * FishjamClient is the main class to interact with Fishjam.
@@ -807,6 +1000,7 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
807
1000
  status: 'new' | 'initialized';
808
1001
  private connectConfig;
809
1002
  private reconnectManager;
1003
+ private peerMessageQueue;
810
1004
  private sendStatisticsInterval;
811
1005
  constructor(config?: CreateConfig);
812
1006
  /**
@@ -855,6 +1049,7 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
855
1049
  getRemoteComponents(): Record<string, Component>;
856
1050
  getLocalPeer(): Peer<PeerMetadata, ServerMetadata> | null;
857
1051
  getBandwidthEstimation(): bigint;
1052
+ private isConnectingRelatedEvent;
858
1053
  private setupCallbacks;
859
1054
  private sendStatistics;
860
1055
  /**
@@ -1118,191 +1313,4 @@ declare class FishjamClient<PeerMetadata = GenericMetadata, ServerMetadata = Gen
1118
1313
  cleanup(): void;
1119
1314
  }
1120
1315
 
1121
- type ReconnectionStatus = 'reconnecting' | 'idle' | 'error';
1122
- type ReconnectConfig = {
1123
- maxAttempts?: number;
1124
- initialDelay?: number;
1125
- delay?: number;
1126
- addTracksOnReconnect?: boolean;
1127
- };
1128
-
1129
- type TrackMetadata = {
1130
- type: 'camera' | 'microphone' | 'screenShareVideo' | 'screenShareAudio';
1131
- paused: boolean;
1132
- displayName?: string;
1133
- };
1134
- type GenericMetadata = Record<string, unknown> | undefined;
1135
- type Metadata<P = GenericMetadata, S = GenericMetadata> = {
1136
- peer: P;
1137
- server: S;
1138
- };
1139
- type TrackContextEvents = {
1140
- encodingChanged: (context: FishjamTrackContext) => void;
1141
- voiceActivityChanged: (context: FishjamTrackContext) => void;
1142
- };
1143
- interface FishjamTrackContext extends TypedEmitter<TrackContextEvents> {
1144
- readonly track: MediaStreamTrack | null;
1145
- readonly stream: MediaStream | null;
1146
- readonly endpoint: Endpoint;
1147
- readonly trackId: string;
1148
- readonly simulcastConfig?: MediaEvent_Track_SimulcastConfig;
1149
- readonly metadata?: TrackMetadata;
1150
- readonly maxBandwidth?: TrackBandwidthLimit;
1151
- readonly vadStatus: VadStatus;
1152
- readonly encoding?: Variant;
1153
- readonly encodingReason?: EncodingReason;
1154
- }
1155
- type Peer<PeerMetadata = GenericMetadata, ServerMetadata = GenericMetadata> = {
1156
- id: string;
1157
- type: string;
1158
- metadata?: Metadata<PeerMetadata, ServerMetadata>;
1159
- tracks: Map<string, FishjamTrackContext>;
1160
- };
1161
- type Component = Omit<Endpoint, 'type'> & {
1162
- type: 'recording' | 'hls' | 'file' | 'rtsp' | 'sip';
1163
- };
1164
- /**
1165
- * Events emitted by the client with their arguments.
1166
- */
1167
- type MessageEvents<P, S> = {
1168
- /**
1169
- * Emitted when connect method invoked
1170
- *
1171
- */
1172
- connectionStarted: () => void;
1173
- /**
1174
- * Emitted when the websocket connection is closed
1175
- *
1176
- * @param {CloseEvent} event - Close event object from the websocket
1177
- */
1178
- socketClose: (event: CloseEvent) => void;
1179
- /**
1180
- * Emitted when occurs an error in the websocket connection
1181
- *
1182
- * @param {Event} event - Event object from the websocket
1183
- */
1184
- socketError: (event: Event) => void;
1185
- /**
1186
- * Emitted when the websocket connection is opened
1187
- *
1188
- * @param {Event} event - Event object from the websocket
1189
- */
1190
- socketOpen: (event: Event) => void;
1191
- /** Emitted when authentication is successful */
1192
- authSuccess: () => void;
1193
- /** Emitted when authentication fails */
1194
- authError: (reason: AuthErrorReason) => void;
1195
- /** Emitted when the connection is closed */
1196
- disconnected: () => void;
1197
- /** Emitted when the process of reconnection starts */
1198
- reconnectionStarted: () => void;
1199
- /** Emitted on successful reconnection */
1200
- reconnected: () => void;
1201
- /** Emitted when the maximum number of reconnection retries is reached */
1202
- reconnectionRetriesLimitReached: () => void;
1203
- /**
1204
- * Called when peer was accepted.
1205
- */
1206
- joined: (peerId: string, peers: Peer<P, S>[], components: Component[]) => void;
1207
- /**
1208
- * Called when peer was not accepted
1209
- * @param metadata - Pass through for client application to communicate further actions to frontend
1210
- */
1211
- joinError: (metadata: any) => void;
1212
- /**
1213
- * Called when data in a new track arrives.
1214
- *
1215
- * This callback is always called after {@link MessageEvents.trackAdded}.
1216
- * It informs user that data related to the given track arrives and can be played or displayed.
1217
- */
1218
- trackReady: (ctx: FishjamTrackContext) => void;
1219
- /**
1220
- * Called each time the peer which was already in the room, adds new track. Fields track and stream will be set to null.
1221
- * These fields will be set to non-null value in {@link MessageEvents.trackReady}
1222
- */
1223
- trackAdded: (ctx: FishjamTrackContext) => void;
1224
- /**
1225
- * Called when some track will no longer be sent.
1226
- *
1227
- * It will also be called before {@link MessageEvents.peerLeft} for each track of this peer.
1228
- */
1229
- trackRemoved: (ctx: FishjamTrackContext) => void;
1230
- /**
1231
- * Called each time peer has its track metadata updated.
1232
- */
1233
- trackUpdated: (ctx: FishjamTrackContext) => void;
1234
- /**
1235
- * Called each time new peer joins the room.
1236
- */
1237
- peerJoined: (peer: Peer<P, S>) => void;
1238
- /**
1239
- * Called each time peer leaves the room.
1240
- */
1241
- peerLeft: (peer: Peer<P, S>) => void;
1242
- /**
1243
- * Called each time peer has its metadata updated.
1244
- */
1245
- peerUpdated: (peer: Peer<P, S>) => void;
1246
- /**
1247
- * Called each time new peer joins the room.
1248
- */
1249
- componentAdded: (peer: Component) => void;
1250
- /**
1251
- * Called each time peer leaves the room.
1252
- */
1253
- componentRemoved: (peer: Component) => void;
1254
- /**
1255
- * Called each time peer has its metadata updated.
1256
- */
1257
- componentUpdated: (peer: Component) => void;
1258
- /**
1259
- * Called in case of errors related to multimedia session e.g. ICE connection.
1260
- */
1261
- connectionError: (error: {
1262
- message: string;
1263
- event?: Event;
1264
- }) => void;
1265
- /**
1266
- * Currently, this callback is only invoked when DisplayManager in RTC Engine is
1267
- * enabled and simulcast is disabled.
1268
- *
1269
- * Called when priority of video tracks have changed.
1270
- * @param enabledTracks - list of tracks which will be sent to client from SFU
1271
- * @param disabledTracks - list of tracks which will not be sent to client from SFU
1272
- */
1273
- tracksPriorityChanged: (enabledTracks: FishjamTrackContext[], disabledTracks: FishjamTrackContext[]) => void;
1274
- /**
1275
- * Called every time the server estimates client's bandiwdth.
1276
- *
1277
- * @param {bigint} estimation - client's available incoming bitrate estimated
1278
- * by the server. It's measured in bits per second.
1279
- */
1280
- bandwidthEstimationChanged: (estimation: bigint) => void;
1281
- targetTrackEncodingRequested: (event: Parameters<WebRTCEndpointEvents['targetTrackEncodingRequested']>[0]) => void;
1282
- localTrackAdded: (event: Parameters<WebRTCEndpointEvents['localTrackAdded']>[0]) => void;
1283
- localTrackRemoved: (event: Parameters<WebRTCEndpointEvents['localTrackRemoved']>[0]) => void;
1284
- localTrackReplaced: (event: Parameters<WebRTCEndpointEvents['localTrackReplaced']>[0]) => void;
1285
- localTrackMuted: (event: Parameters<WebRTCEndpointEvents['localTrackMuted']>[0]) => void;
1286
- localTrackUnmuted: (event: Parameters<WebRTCEndpointEvents['localTrackUnmuted']>[0]) => void;
1287
- localTrackBandwidthSet: (event: Parameters<WebRTCEndpointEvents['localTrackBandwidthSet']>[0]) => void;
1288
- localTrackEncodingBandwidthSet: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingBandwidthSet']>[0]) => void;
1289
- localTrackEncodingEnabled: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingEnabled']>[0]) => void;
1290
- localTrackEncodingDisabled: (event: Parameters<WebRTCEndpointEvents['localTrackEncodingDisabled']>[0]) => void;
1291
- localPeerMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localEndpointMetadataChanged']>[0]) => void;
1292
- localTrackMetadataChanged: (event: Parameters<WebRTCEndpointEvents['localTrackMetadataChanged']>[0]) => void;
1293
- disconnectRequested: (event: Parameters<WebRTCEndpointEvents['disconnectRequested']>[0]) => void;
1294
- };
1295
- /** Configuration object for the client */
1296
- interface ConnectConfig<PeerMetadata> {
1297
- /** Metadata for the peer */
1298
- peerMetadata: PeerMetadata;
1299
- /** Token for authentication */
1300
- token: string;
1301
- /** Fishjam url */
1302
- url: string;
1303
- }
1304
- type CreateConfig = {
1305
- reconnect?: ReconnectConfig | boolean;
1306
- };
1307
-
1308
1316
  export { AUTH_ERROR_REASONS, type AuthErrorReason, type BandwidthLimit, type Component, type ConnectConfig, type CreateConfig, type EncodingReason, type Endpoint, FishjamClient, type FishjamTrackContext, type GenericMetadata, type MediaEvent, type MessageEvents, type Metadata, type Peer, type ReconnectConfig, type ReconnectionStatus, type SerializedMediaEvent, type SimulcastBandwidthLimit, MediaEvent_Track_SimulcastConfig as SimulcastConfig, type TrackBandwidthLimit, type TrackContext, type TrackContextEvents$1 as TrackContextEvents, type TrackKind, type TrackMetadata, type VadStatus, Variant, WebRTCEndpoint, type WebRTCEndpointEvents, isAuthError };