livekit-client 1.7.0 → 1.8.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/README.md +20 -1
- package/dist/livekit-client.esm.mjs +2240 -1067
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/options.d.ts +5 -0
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/proto/google/protobuf/timestamp.d.ts.map +1 -1
- package/dist/src/proto/livekit_models.d.ts +32 -0
- package/dist/src/proto/livekit_models.d.ts.map +1 -1
- package/dist/src/proto/livekit_rtc.d.ts +315 -75
- package/dist/src/proto/livekit_rtc.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +9 -1
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/ReconnectPolicy.d.ts +1 -0
- package/dist/src/room/ReconnectPolicy.d.ts.map +1 -1
- package/dist/src/room/RegionUrlProvider.d.ts +14 -0
- package/dist/src/room/RegionUrlProvider.d.ts.map +1 -0
- package/dist/src/room/Room.d.ts +6 -1
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/defaults.d.ts.map +1 -1
- package/dist/src/room/errors.d.ts +2 -1
- package/dist/src/room/errors.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +15 -2
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts +3 -2
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts +1 -1
- package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/RemoteVideoTrack.d.ts +2 -1
- package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/Track.d.ts +3 -1
- package/dist/src/room/track/Track.d.ts.map +1 -1
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/types.d.ts +4 -0
- package/dist/src/room/types.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +4 -0
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/ts4.2/src/index.d.ts +3 -1
- package/dist/ts4.2/src/options.d.ts +5 -0
- package/dist/ts4.2/src/proto/livekit_models.d.ts +32 -0
- package/dist/ts4.2/src/proto/livekit_rtc.d.ts +348 -84
- package/dist/ts4.2/src/room/RTCEngine.d.ts +9 -1
- package/dist/ts4.2/src/room/ReconnectPolicy.d.ts +1 -0
- package/dist/ts4.2/src/room/RegionUrlProvider.d.ts +14 -0
- package/dist/ts4.2/src/room/Room.d.ts +6 -1
- package/dist/ts4.2/src/room/errors.d.ts +2 -1
- package/dist/ts4.2/src/room/events.d.ts +15 -2
- package/dist/ts4.2/src/room/track/LocalAudioTrack.d.ts +1 -1
- package/dist/ts4.2/src/room/track/LocalTrack.d.ts +3 -2
- package/dist/ts4.2/src/room/track/RemoteTrackPublication.d.ts +1 -1
- package/dist/ts4.2/src/room/track/RemoteVideoTrack.d.ts +2 -1
- package/dist/ts4.2/src/room/track/Track.d.ts +3 -1
- package/dist/ts4.2/src/room/types.d.ts +4 -0
- package/dist/ts4.2/src/room/utils.d.ts +4 -0
- package/package.json +19 -19
- package/src/api/SignalClient.ts +4 -4
- package/src/index.ts +3 -0
- package/src/options.ts +6 -0
- package/src/proto/google/protobuf/timestamp.ts +15 -6
- package/src/proto/livekit_models.ts +903 -222
- package/src/proto/livekit_rtc.ts +1053 -279
- package/src/room/RTCEngine.ts +168 -56
- package/src/room/ReconnectPolicy.ts +2 -0
- package/src/room/RegionUrlProvider.ts +73 -0
- package/src/room/Room.ts +212 -133
- package/src/room/defaults.ts +1 -0
- package/src/room/errors.ts +1 -0
- package/src/room/events.ts +15 -0
- package/src/room/track/LocalAudioTrack.ts +14 -6
- package/src/room/track/LocalTrack.ts +22 -8
- package/src/room/track/LocalVideoTrack.ts +12 -6
- package/src/room/track/RemoteTrackPublication.ts +10 -4
- package/src/room/track/RemoteVideoTrack.test.ts +2 -0
- package/src/room/track/RemoteVideoTrack.ts +53 -9
- package/src/room/track/Track.ts +46 -31
- package/src/room/track/utils.ts +3 -2
- package/src/room/types.ts +6 -0
- package/src/room/utils.ts +53 -0
@@ -21,6 +21,7 @@ export default class RTCEngine extends RTCEngine_base {
|
|
21
21
|
private lossyDC?;
|
22
22
|
private lossyDCSub?;
|
23
23
|
private reliableDC?;
|
24
|
+
private dcBufferStatus;
|
24
25
|
private reliableDCSub?;
|
25
26
|
private subscriberPrimary;
|
26
27
|
private primaryPC?;
|
@@ -44,7 +45,9 @@ export default class RTCEngine extends RTCEngine_base {
|
|
44
45
|
/** specifies how often an initial join connection is allowed to retry */
|
45
46
|
private maxJoinAttempts;
|
46
47
|
private closingLock;
|
48
|
+
private dataProcessLock;
|
47
49
|
private shouldFailNext;
|
50
|
+
private regionUrlProvider?;
|
48
51
|
constructor(options: InternalRoomOptions);
|
49
52
|
join(url: string, token: string, opts: SignalOptions, abortSignal?: AbortSignal): Promise<JoinResponse>;
|
50
53
|
close(): Promise<void>;
|
@@ -65,6 +68,7 @@ export default class RTCEngine extends RTCEngine_base {
|
|
65
68
|
private handleDataChannel;
|
66
69
|
private handleDataMessage;
|
67
70
|
private handleDataError;
|
71
|
+
private handleBufferedAmountLow;
|
68
72
|
private setPreferredCodec;
|
69
73
|
createSender(track: LocalTrack, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender>;
|
70
74
|
createSimulcastSender(track: LocalVideoTrack, simulcastTrack: SimulcastTrackInfo, opts: TrackPublishOptions, encodings?: RTCRtpEncodingParameters[]): Promise<RTCRtpSender | undefined>;
|
@@ -76,8 +80,11 @@ export default class RTCEngine extends RTCEngine_base {
|
|
76
80
|
private getNextRetryDelay;
|
77
81
|
private restartConnection;
|
78
82
|
private resumeConnection;
|
79
|
-
|
83
|
+
waitForPCInitialConnection(timeout?: number, abortController?: AbortController): Promise<void>;
|
84
|
+
waitForPCReconnected(): Promise<void>;
|
80
85
|
sendDataPacket(packet: DataPacket, kind: DataPacket_Kind): Promise<void>;
|
86
|
+
private updateAndEmitDCBufferStatus;
|
87
|
+
private isBufferStatusLow;
|
81
88
|
/**
|
82
89
|
* @internal
|
83
90
|
*/
|
@@ -106,6 +113,7 @@ export type EngineEventCallbacks = {
|
|
106
113
|
activeSpeakersUpdate: (speakers: Array<SpeakerInfo>) => void;
|
107
114
|
dataPacketReceived: (userPacket: UserPacket, kind: DataPacket_Kind) => void;
|
108
115
|
transportsCreated: (publisher: PCTransport, subscriber: PCTransport) => void;
|
116
|
+
dcBufferStatusChanged: (isLow: boolean, kind: DataPacket_Kind) => void;
|
109
117
|
};
|
110
118
|
export {};
|
111
119
|
//# sourceMappingURL=RTCEngine.d.ts.map
|
@@ -0,0 +1,14 @@
|
|
1
|
+
export declare class RegionUrlProvider {
|
2
|
+
private serverUrl;
|
3
|
+
private token;
|
4
|
+
private regionSettings;
|
5
|
+
private lastUpdateAt;
|
6
|
+
private settingsCacheTime;
|
7
|
+
private attemptedRegions;
|
8
|
+
constructor(url: string, token: string);
|
9
|
+
isCloud(): boolean;
|
10
|
+
getNextBestRegionUrl(abortSignal?: AbortSignal): Promise<string | null>;
|
11
|
+
resetAttempts(): void;
|
12
|
+
private fetchRegionSettings;
|
13
|
+
}
|
14
|
+
//# sourceMappingURL=RegionUrlProvider.d.ts.map
|
@@ -86,6 +86,9 @@ declare class Room extends Room_base {
|
|
86
86
|
*/
|
87
87
|
prepareConnection(url: string): Promise<void>;
|
88
88
|
connect: (url: string, token: string, opts?: RoomConnectOptions) => Promise<void>;
|
89
|
+
private connectSignal;
|
90
|
+
private applyJoinResponse;
|
91
|
+
private attemptConnection;
|
89
92
|
/**
|
90
93
|
* disconnects the room, emits [[RoomEvent.Disconnected]]
|
91
94
|
*/
|
@@ -105,7 +108,7 @@ declare class Room extends Room_base {
|
|
105
108
|
* @internal for testing
|
106
109
|
*/
|
107
110
|
simulateScenario(scenario: string): Promise<void>;
|
108
|
-
private
|
111
|
+
private onPageLeave;
|
109
112
|
/**
|
110
113
|
* Browsers have different policies regarding audio playback. Most requiring
|
111
114
|
* some form of user interaction (click/tap/etc).
|
@@ -203,6 +206,7 @@ export type RoomEventCallbacks = {
|
|
203
206
|
trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
|
204
207
|
localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
|
205
208
|
localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
|
209
|
+
localAudioSilenceDetected: (publication: LocalTrackPublication) => void;
|
206
210
|
participantMetadataChanged: (metadata: string | undefined, participant: RemoteParticipant | LocalParticipant) => void;
|
207
211
|
participantPermissionsChanged: (prevPermissions: ParticipantPermission | undefined, participant: RemoteParticipant | LocalParticipant) => void;
|
208
212
|
activeSpeakersChanged: (speakers: Array<Participant>) => void;
|
@@ -216,5 +220,6 @@ export type RoomEventCallbacks = {
|
|
216
220
|
audioPlaybackChanged: (playing: boolean) => void;
|
217
221
|
signalConnected: () => void;
|
218
222
|
recordingStatusChanged: (recording: boolean) => void;
|
223
|
+
dcBufferStatusChanged: (isLow: boolean, kind: DataPacket_Kind) => void;
|
219
224
|
};
|
220
225
|
//# sourceMappingURL=Room.d.ts.map
|
@@ -5,7 +5,8 @@ export declare class LivekitError extends Error {
|
|
5
5
|
export declare const enum ConnectionErrorReason {
|
6
6
|
NotAllowed = 0,
|
7
7
|
ServerUnreachable = 1,
|
8
|
-
InternalError = 2
|
8
|
+
InternalError = 2,
|
9
|
+
Cancelled = 3
|
9
10
|
}
|
10
11
|
export declare class ConnectionError extends LivekitError {
|
11
12
|
status?: number;
|
@@ -120,6 +120,13 @@ export declare enum RoomEvent {
|
|
120
120
|
* args: ([[LocalTrackPublication]], [[LocalParticipant]])
|
121
121
|
*/
|
122
122
|
LocalTrackUnpublished = "localTrackUnpublished",
|
123
|
+
/**
|
124
|
+
* When a local audio track is published the SDK checks whether there is complete silence
|
125
|
+
* on that track and emits the LocalAudioSilenceDetected event in that case.
|
126
|
+
* This allows for applications to show UI informing users that they might have to
|
127
|
+
* reset their audio hardware or check for proper device connectivity.
|
128
|
+
*/
|
129
|
+
LocalAudioSilenceDetected = "localAudioSilenceDetected",
|
123
130
|
/**
|
124
131
|
* Active speakers changed. List of speakers are ordered by their audio level.
|
125
132
|
* loudest speakers first. This will include the LocalParticipant too.
|
@@ -224,7 +231,12 @@ export declare enum RoomEvent {
|
|
224
231
|
* Recording of a room has started/stopped. Room.isRecording will be updated too.
|
225
232
|
* args: (isRecording: boolean)
|
226
233
|
*/
|
227
|
-
RecordingStatusChanged = "recordingStatusChanged"
|
234
|
+
RecordingStatusChanged = "recordingStatusChanged",
|
235
|
+
/**
|
236
|
+
* Emits whenever the current buffer status of a data channel changes
|
237
|
+
* args: (isLow: boolean, kind: [[DataPacket_Kind]])
|
238
|
+
*/
|
239
|
+
DCBufferStatusChanged = "dcBufferStatusChanged"
|
228
240
|
}
|
229
241
|
export declare enum ParticipantEvent {
|
230
242
|
/**
|
@@ -371,7 +383,8 @@ export declare enum EngineEvent {
|
|
371
383
|
Closing = "closing",
|
372
384
|
MediaTrackAdded = "mediaTrackAdded",
|
373
385
|
ActiveSpeakersUpdate = "activeSpeakersUpdate",
|
374
|
-
DataPacketReceived = "dataPacketReceived"
|
386
|
+
DataPacketReceived = "dataPacketReceived",
|
387
|
+
DCBufferStatusChanged = "dcBufferStatusChanged"
|
375
388
|
}
|
376
389
|
export declare enum TrackEvent {
|
377
390
|
Message = "message",
|
@@ -20,6 +20,6 @@ export default class LocalAudioTrack extends LocalTrack {
|
|
20
20
|
startMonitor(): void;
|
21
21
|
protected monitorSender: () => Promise<void>;
|
22
22
|
getSenderStats(): Promise<AudioSenderStats | undefined>;
|
23
|
-
checkForSilence(): Promise<
|
23
|
+
checkForSilence(): Promise<boolean>;
|
24
24
|
}
|
25
25
|
//# sourceMappingURL=LocalAudioTrack.d.ts.map
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import { Mutex } from '../utils';
|
2
2
|
import type { VideoCodec } from './options';
|
3
3
|
import { Track } from './Track';
|
4
4
|
export default abstract class LocalTrack extends Track {
|
@@ -9,7 +9,8 @@ export default abstract class LocalTrack extends Track {
|
|
9
9
|
protected constraints: MediaTrackConstraints;
|
10
10
|
protected reacquireTrack: boolean;
|
11
11
|
protected providedByUser: boolean;
|
12
|
-
protected
|
12
|
+
protected muteLock: Mutex;
|
13
|
+
protected pauseUpstreamLock: Mutex;
|
13
14
|
/**
|
14
15
|
*
|
15
16
|
* @param mediaTrack
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { TrackInfo, VideoQuality } from '../../proto/livekit_models';
|
2
2
|
import type RemoteTrack from './RemoteTrack';
|
3
|
-
import
|
3
|
+
import { Track } from './Track';
|
4
4
|
import { TrackPublication } from './TrackPublication';
|
5
5
|
export default class RemoteTrackPublication extends TrackPublication {
|
6
6
|
track?: RemoteTrack;
|
@@ -6,7 +6,7 @@ export default class RemoteVideoTrack extends RemoteTrack {
|
|
6
6
|
private adaptiveStreamSettings?;
|
7
7
|
private lastVisible?;
|
8
8
|
private lastDimensions?;
|
9
|
-
private
|
9
|
+
private isObserved;
|
10
10
|
constructor(mediaTrack: MediaStreamTrack, sid: string, receiver?: RTCRtpReceiver, adaptiveStreamSettings?: AdaptiveStreamSettings);
|
11
11
|
get isAdaptiveStream(): boolean;
|
12
12
|
get mediaStreamTrack(): MediaStreamTrack;
|
@@ -43,6 +43,7 @@ export interface ElementInfo {
|
|
43
43
|
width(): number;
|
44
44
|
height(): number;
|
45
45
|
visible: boolean;
|
46
|
+
pictureInPicture: boolean;
|
46
47
|
visibilityChangedAt: number | undefined;
|
47
48
|
handleResize?: () => void;
|
48
49
|
handleVisibilityChanged?: () => void;
|
@@ -58,10 +58,12 @@ export declare abstract class Track extends Track_base {
|
|
58
58
|
protected enable(): void;
|
59
59
|
protected disable(): void;
|
60
60
|
abstract startMonitor(signalClient?: SignalClient): void;
|
61
|
-
|
61
|
+
stopMonitor(): void;
|
62
62
|
private recycleElement;
|
63
63
|
protected appVisibilityChangedListener: () => void;
|
64
64
|
protected handleAppVisibilityChanged(): Promise<void>;
|
65
|
+
protected addAppVisibilityListener(): void;
|
66
|
+
protected removeAppVisibilityListener(): void;
|
65
67
|
}
|
66
68
|
/** @internal */
|
67
69
|
export declare function attachToElement(track: MediaStreamTrack, element: HTMLMediaElement): void;
|
@@ -18,4 +18,8 @@ export type DataPublishOptions = {
|
|
18
18
|
/** the topic under which the message gets published */
|
19
19
|
topic?: string;
|
20
20
|
};
|
21
|
+
export type LiveKitReactNativeInfo = {
|
22
|
+
platform: 'ios' | 'android' | 'windows' | 'macos' | 'web' | 'native';
|
23
|
+
devicePixelRatio: number;
|
24
|
+
};
|
21
25
|
//# sourceMappingURL=types.d.ts.map
|
@@ -17,6 +17,10 @@ export declare function isFireFox(): boolean;
|
|
17
17
|
export declare function isSafari(): boolean;
|
18
18
|
export declare function isMobile(): boolean;
|
19
19
|
export declare function isWeb(): boolean;
|
20
|
+
export declare function isReactNative(): boolean;
|
21
|
+
export declare function isCloud(serverUrl: URL): boolean;
|
22
|
+
export declare function getReactNativeOs(): string | undefined;
|
23
|
+
export declare function getDevicePixelRatio(): number;
|
20
24
|
export declare function compareVersions(v1: string, v2: string): number;
|
21
25
|
export declare const getResizeObserver: () => ResizeObserver;
|
22
26
|
export declare const getIntersectionObserver: () => IntersectionObserver;
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.8.0",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "./dist/livekit-client.umd.js",
|
6
6
|
"unpkg": "./dist/livekit-client.umd.js",
|
@@ -51,40 +51,40 @@
|
|
51
51
|
"webrtc-adapter": "^8.1.1"
|
52
52
|
},
|
53
53
|
"devDependencies": {
|
54
|
-
"@babel/core": "7.21.
|
55
|
-
"@babel/preset-env": "7.
|
54
|
+
"@babel/core": "7.21.4",
|
55
|
+
"@babel/preset-env": "7.21.4",
|
56
56
|
"@changesets/changelog-github": "0.4.8",
|
57
|
-
"@changesets/cli": "2.26.
|
57
|
+
"@changesets/cli": "2.26.1",
|
58
58
|
"@rollup/plugin-babel": "6.0.3",
|
59
|
-
"@rollup/plugin-commonjs": "24.0
|
59
|
+
"@rollup/plugin-commonjs": "24.1.0",
|
60
60
|
"@rollup/plugin-json": "6.0.0",
|
61
|
-
"@rollup/plugin-node-resolve": "15.0.
|
61
|
+
"@rollup/plugin-node-resolve": "15.0.2",
|
62
62
|
"@rollup/plugin-terser": "^0.4.0",
|
63
|
-
"@types/jest": "29.
|
64
|
-
"@types/sdp-transform": "2.4.
|
63
|
+
"@types/jest": "29.5.0",
|
64
|
+
"@types/sdp-transform": "2.4.6",
|
65
65
|
"@types/ua-parser-js": "0.7.36",
|
66
66
|
"@types/ws": "8.5.4",
|
67
|
-
"@typescript-eslint/eslint-plugin": "5.
|
68
|
-
"@typescript-eslint/parser": "5.
|
67
|
+
"@typescript-eslint/eslint-plugin": "5.58.0",
|
68
|
+
"@typescript-eslint/parser": "5.58.0",
|
69
69
|
"downlevel-dts": "^0.11.0",
|
70
|
-
"eslint": "8.
|
70
|
+
"eslint": "8.38.0",
|
71
71
|
"eslint-config-airbnb-typescript": "17.0.0",
|
72
|
-
"eslint-config-prettier": "8.
|
72
|
+
"eslint-config-prettier": "8.8.0",
|
73
73
|
"eslint-plugin-import": "2.27.5",
|
74
74
|
"gh-pages": "5.0.0",
|
75
|
-
"jest": "29.
|
76
|
-
"prettier": "2.8.
|
77
|
-
"rollup": "3.
|
75
|
+
"jest": "29.5.0",
|
76
|
+
"prettier": "2.8.7",
|
77
|
+
"rollup": "3.20.2",
|
78
78
|
"rollup-plugin-delete": "^2.0.0",
|
79
79
|
"rollup-plugin-filesize": "10.0.0",
|
80
80
|
"rollup-plugin-re": "1.0.7",
|
81
81
|
"rollup-plugin-typescript2": "0.34.1",
|
82
|
-
"ts-jest": "29.0
|
83
|
-
"ts-proto": "1.
|
84
|
-
"typedoc": "0.
|
82
|
+
"ts-jest": "29.1.0",
|
83
|
+
"ts-proto": "1.146.0",
|
84
|
+
"typedoc": "0.24.1",
|
85
85
|
"typedoc-plugin-no-inherit": "1.4.0",
|
86
86
|
"typescript": "4.9.5",
|
87
|
-
"vite": "4.1
|
87
|
+
"vite": "4.2.1"
|
88
88
|
},
|
89
89
|
"browserslist": [
|
90
90
|
"safari >= 11",
|
package/src/api/SignalClient.ts
CHANGED
@@ -33,7 +33,7 @@ import {
|
|
33
33
|
} from '../proto/livekit_rtc';
|
34
34
|
import { ConnectionError, ConnectionErrorReason } from '../room/errors';
|
35
35
|
import CriticalTimers from '../room/timers';
|
36
|
-
import { getClientInfo, Mutex, sleep } from '../room/utils';
|
36
|
+
import { getClientInfo, isReactNative, Mutex, sleep } from '../room/utils';
|
37
37
|
|
38
38
|
// internal options
|
39
39
|
interface ConnectOpts {
|
@@ -216,7 +216,7 @@ export class SignalClient {
|
|
216
216
|
return new Promise<JoinResponse | ReconnectResponse | void>(async (resolve, reject) => {
|
217
217
|
const abortHandler = async () => {
|
218
218
|
await this.close();
|
219
|
-
reject(new ConnectionError('room connection has been cancelled'));
|
219
|
+
reject(new ConnectionError('room connection has been cancelled (signal)'));
|
220
220
|
};
|
221
221
|
|
222
222
|
if (abortSignal?.aborted) {
|
@@ -234,7 +234,7 @@ export class SignalClient {
|
|
234
234
|
if (!this.isConnected) {
|
235
235
|
try {
|
236
236
|
const resp = await fetch(`http${url.substring(2)}/validate${params}`);
|
237
|
-
if (
|
237
|
+
if (resp.status.toFixed(0).startsWith('4')) {
|
238
238
|
const msg = await resp.text();
|
239
239
|
reject(new ConnectionError(msg, ConnectionErrorReason.NotAllowed, resp.status));
|
240
240
|
} else {
|
@@ -706,7 +706,7 @@ function createConnectionParams(token: string, info: ClientInfo, opts: ConnectOp
|
|
706
706
|
params.set('auto_subscribe', opts.autoSubscribe ? '1' : '0');
|
707
707
|
|
708
708
|
// ClientInfo
|
709
|
-
params.set('sdk', 'js');
|
709
|
+
params.set('sdk', isReactNative() ? 'reactnative' : 'js');
|
710
710
|
params.set('version', info.version!);
|
711
711
|
params.set('protocol', info.protocol!.toString());
|
712
712
|
if (info.deviceModel) {
|
package/src/index.ts
CHANGED
@@ -28,10 +28,12 @@ import {
|
|
28
28
|
} from './room/utils';
|
29
29
|
|
30
30
|
import type { AudioAnalyserOptions } from './room/utils';
|
31
|
+
import type { LiveKitReactNativeInfo } from './room/types';
|
31
32
|
|
32
33
|
export * from './options';
|
33
34
|
export * from './room/errors';
|
34
35
|
export * from './room/events';
|
36
|
+
export type { DataPublishOptions } from './room/types';
|
35
37
|
export * from './room/track/create';
|
36
38
|
export * from './room/track/options';
|
37
39
|
export * from './room/track/Track';
|
@@ -73,4 +75,5 @@ export {
|
|
73
75
|
ElementInfo,
|
74
76
|
DefaultReconnectPolicy,
|
75
77
|
CriticalTimers,
|
78
|
+
LiveKitReactNativeInfo,
|
76
79
|
};
|
package/src/options.ts
CHANGED
@@ -64,6 +64,12 @@ export interface InternalRoomOptions {
|
|
64
64
|
*/
|
65
65
|
reconnectPolicy: ReconnectPolicy;
|
66
66
|
|
67
|
+
/**
|
68
|
+
* specifies whether the sdk should automatically disconnect the room
|
69
|
+
* on 'pagehide' and 'beforeunload' events
|
70
|
+
*/
|
71
|
+
disconnectOnPageLeave: boolean;
|
72
|
+
|
67
73
|
/**
|
68
74
|
* @internal
|
69
75
|
* experimental flag, introduce a delay before sending signaling messages
|
@@ -127,22 +127,31 @@ export const Timestamp = {
|
|
127
127
|
},
|
128
128
|
|
129
129
|
decode(input: _m0.Reader | Uint8Array, length?: number): Timestamp {
|
130
|
-
const reader = input instanceof _m0.Reader ? input :
|
130
|
+
const reader = input instanceof _m0.Reader ? input : _m0.Reader.create(input);
|
131
131
|
let end = length === undefined ? reader.len : reader.pos + length;
|
132
132
|
const message = createBaseTimestamp();
|
133
133
|
while (reader.pos < end) {
|
134
134
|
const tag = reader.uint32();
|
135
135
|
switch (tag >>> 3) {
|
136
136
|
case 1:
|
137
|
+
if (tag != 8) {
|
138
|
+
break;
|
139
|
+
}
|
140
|
+
|
137
141
|
message.seconds = longToNumber(reader.int64() as Long);
|
138
|
-
|
142
|
+
continue;
|
139
143
|
case 2:
|
144
|
+
if (tag != 16) {
|
145
|
+
break;
|
146
|
+
}
|
147
|
+
|
140
148
|
message.nanos = reader.int32();
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
149
|
+
continue;
|
150
|
+
}
|
151
|
+
if ((tag & 7) == 4 || tag == 0) {
|
152
|
+
break;
|
145
153
|
}
|
154
|
+
reader.skipType(tag & 7);
|
146
155
|
}
|
147
156
|
return message;
|
148
157
|
},
|