livekit-client 1.7.1 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +21 -1
- package/dist/livekit-client.esm.mjs +14241 -12994
- 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/api/SignalClient.d.ts +11 -10
- package/dist/src/api/SignalClient.d.ts.map +1 -1
- package/dist/src/connectionHelper/ConnectionCheck.d.ts +1 -1
- package/dist/src/connectionHelper/ConnectionCheck.d.ts.map +1 -1
- package/dist/src/connectionHelper/checks/Checker.d.ts +1 -1
- package/dist/src/connectionHelper/checks/Checker.d.ts.map +1 -1
- package/dist/src/index.d.ts +7 -7
- package/dist/src/index.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 +37 -0
- package/dist/src/proto/livekit_models.d.ts.map +1 -1
- package/dist/src/proto/livekit_rtc.d.ts +347 -75
- package/dist/src/proto/livekit_rtc.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +12 -3
- 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 +23 -15
- package/dist/src/room/Room.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 +23 -2
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts +14 -2
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +4 -2
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/participant/RemoteParticipant.d.ts +2 -2
- package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
- package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrack.d.ts +4 -3
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/LocalTrackPublication.d.ts +1 -1
- package/dist/src/room/track/LocalTrackPublication.d.ts.map +1 -1
- package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
- package/dist/src/room/track/RemoteAudioTrack.d.ts +1 -1
- package/dist/src/room/track/RemoteAudioTrack.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 +1 -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/create.d.ts.map +1 -1
- package/dist/src/room/types.d.ts +5 -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/api/SignalClient.d.ts +14 -10
- package/dist/ts4.2/src/connectionHelper/ConnectionCheck.d.ts +1 -1
- package/dist/ts4.2/src/connectionHelper/checks/Checker.d.ts +1 -1
- package/dist/ts4.2/src/index.d.ts +7 -6
- package/dist/ts4.2/src/proto/livekit_models.d.ts +37 -0
- package/dist/ts4.2/src/proto/livekit_rtc.d.ts +380 -84
- package/dist/ts4.2/src/room/RTCEngine.d.ts +12 -3
- 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 +23 -15
- package/dist/ts4.2/src/room/errors.d.ts +2 -1
- package/dist/ts4.2/src/room/events.d.ts +23 -2
- package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +14 -2
- package/dist/ts4.2/src/room/participant/Participant.d.ts +4 -2
- package/dist/ts4.2/src/room/participant/RemoteParticipant.d.ts +2 -2
- package/dist/ts4.2/src/room/track/LocalTrack.d.ts +4 -3
- package/dist/ts4.2/src/room/track/LocalTrackPublication.d.ts +1 -1
- package/dist/ts4.2/src/room/track/RemoteAudioTrack.d.ts +1 -1
- package/dist/ts4.2/src/room/track/RemoteTrackPublication.d.ts +1 -1
- package/dist/ts4.2/src/room/track/RemoteVideoTrack.d.ts +1 -1
- package/dist/ts4.2/src/room/track/Track.d.ts +3 -1
- package/dist/ts4.2/src/room/types.d.ts +5 -0
- package/dist/ts4.2/src/room/utils.d.ts +4 -0
- package/package.json +21 -20
- package/src/api/SignalClient.ts +41 -29
- package/src/connectionHelper/ConnectionCheck.ts +1 -2
- package/src/connectionHelper/checks/Checker.ts +1 -1
- package/src/connectionHelper/checks/reconnect.ts +1 -1
- package/src/index.ts +9 -8
- package/src/proto/google/protobuf/timestamp.ts +15 -6
- package/src/proto/livekit_models.ts +917 -221
- package/src/proto/livekit_rtc.ts +1053 -279
- package/src/room/RTCEngine.ts +171 -47
- package/src/room/ReconnectPolicy.ts +2 -0
- package/src/room/RegionUrlProvider.ts +73 -0
- package/src/room/Room.ts +278 -177
- package/src/room/errors.ts +1 -0
- package/src/room/events.ts +24 -0
- package/src/room/participant/LocalParticipant.ts +30 -7
- package/src/room/participant/Participant.ts +27 -3
- package/src/room/participant/RemoteParticipant.ts +6 -3
- package/src/room/participant/publishUtils.test.ts +1 -1
- package/src/room/participant/publishUtils.ts +1 -1
- package/src/room/track/LocalAudioTrack.ts +14 -7
- package/src/room/track/LocalTrack.ts +23 -9
- package/src/room/track/LocalTrackPublication.ts +1 -1
- package/src/room/track/LocalVideoTrack.ts +15 -9
- package/src/room/track/RemoteAudioTrack.ts +1 -1
- package/src/room/track/RemoteTrackPublication.ts +4 -3
- package/src/room/track/RemoteVideoTrack.test.ts +1 -1
- package/src/room/track/RemoteVideoTrack.ts +8 -7
- package/src/room/track/Track.ts +46 -31
- package/src/room/track/create.ts +2 -2
- package/src/room/types.ts +17 -0
- package/src/room/utils.ts +53 -0
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,
|
36
|
+
import { Mutex, getClientInfo, isReactNative, 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 {
|
@@ -374,7 +374,7 @@ export class SignalClient {
|
|
374
374
|
// answer a server-initiated offer
|
375
375
|
sendAnswer(answer: RTCSessionDescriptionInit) {
|
376
376
|
log.debug('sending answer');
|
377
|
-
this.sendRequest({
|
377
|
+
return this.sendRequest({
|
378
378
|
$case: 'answer',
|
379
379
|
answer: toProtoSessionDescription(answer),
|
380
380
|
});
|
@@ -382,7 +382,7 @@ export class SignalClient {
|
|
382
382
|
|
383
383
|
sendIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget) {
|
384
384
|
log.trace('sending ice candidate', candidate);
|
385
|
-
this.sendRequest({
|
385
|
+
return this.sendRequest({
|
386
386
|
$case: 'trickle',
|
387
387
|
trickle: {
|
388
388
|
candidateInit: JSON.stringify(candidate),
|
@@ -392,7 +392,7 @@ export class SignalClient {
|
|
392
392
|
}
|
393
393
|
|
394
394
|
sendMuteTrack(trackSid: string, muted: boolean) {
|
395
|
-
this.sendRequest({
|
395
|
+
return this.sendRequest({
|
396
396
|
$case: 'mute',
|
397
397
|
mute: {
|
398
398
|
sid: trackSid,
|
@@ -401,13 +401,23 @@ export class SignalClient {
|
|
401
401
|
});
|
402
402
|
}
|
403
403
|
|
404
|
-
sendAddTrack(req: AddTrackRequest)
|
405
|
-
this.sendRequest({
|
404
|
+
sendAddTrack(req: AddTrackRequest) {
|
405
|
+
return this.sendRequest({
|
406
406
|
$case: 'addTrack',
|
407
407
|
addTrack: AddTrackRequest.fromPartial(req),
|
408
408
|
});
|
409
409
|
}
|
410
410
|
|
411
|
+
sendUpdateLocalMetadata(metadata: string, name: string) {
|
412
|
+
return this.sendRequest({
|
413
|
+
$case: 'updateMetadata',
|
414
|
+
updateMetadata: {
|
415
|
+
metadata,
|
416
|
+
name,
|
417
|
+
},
|
418
|
+
});
|
419
|
+
}
|
420
|
+
|
411
421
|
sendUpdateTrackSettings(settings: UpdateTrackSettings) {
|
412
422
|
this.sendRequest({
|
413
423
|
$case: 'trackSetting',
|
@@ -416,21 +426,21 @@ export class SignalClient {
|
|
416
426
|
}
|
417
427
|
|
418
428
|
sendUpdateSubscription(sub: UpdateSubscription) {
|
419
|
-
this.sendRequest({
|
429
|
+
return this.sendRequest({
|
420
430
|
$case: 'subscription',
|
421
431
|
subscription: sub,
|
422
432
|
});
|
423
433
|
}
|
424
434
|
|
425
435
|
sendSyncState(sync: SyncState) {
|
426
|
-
this.sendRequest({
|
436
|
+
return this.sendRequest({
|
427
437
|
$case: 'syncState',
|
428
438
|
syncState: sync,
|
429
439
|
});
|
430
440
|
}
|
431
441
|
|
432
442
|
sendUpdateVideoLayers(trackSid: string, layers: VideoLayer[]) {
|
433
|
-
this.sendRequest({
|
443
|
+
return this.sendRequest({
|
434
444
|
$case: 'updateLayers',
|
435
445
|
updateLayers: {
|
436
446
|
trackSid,
|
@@ -440,7 +450,7 @@ export class SignalClient {
|
|
440
450
|
}
|
441
451
|
|
442
452
|
sendUpdateSubscriptionPermissions(allParticipants: boolean, trackPermissions: TrackPermission[]) {
|
443
|
-
this.sendRequest({
|
453
|
+
return this.sendRequest({
|
444
454
|
$case: 'subscriptionPermission',
|
445
455
|
subscriptionPermission: {
|
446
456
|
allParticipants,
|
@@ -450,7 +460,7 @@ export class SignalClient {
|
|
450
460
|
}
|
451
461
|
|
452
462
|
sendSimulateScenario(scenario: SimulateScenario) {
|
453
|
-
this.sendRequest({
|
463
|
+
return this.sendRequest({
|
454
464
|
$case: 'simulate',
|
455
465
|
simulate: scenario,
|
456
466
|
});
|
@@ -458,21 +468,23 @@ export class SignalClient {
|
|
458
468
|
|
459
469
|
sendPing() {
|
460
470
|
/** send both of ping and pingReq for compatibility to old and new server */
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
471
|
+
return Promise.all([
|
472
|
+
this.sendRequest({
|
473
|
+
$case: 'ping',
|
474
|
+
ping: Date.now(),
|
475
|
+
}),
|
476
|
+
this.sendRequest({
|
477
|
+
$case: 'pingReq',
|
478
|
+
pingReq: {
|
479
|
+
timestamp: Date.now(),
|
480
|
+
rtt: this.rtt,
|
481
|
+
},
|
482
|
+
}),
|
483
|
+
]);
|
484
|
+
}
|
485
|
+
|
486
|
+
sendLeave() {
|
487
|
+
return this.sendRequest({
|
476
488
|
$case: 'leave',
|
477
489
|
leave: {
|
478
490
|
canReconnect: false,
|
@@ -706,7 +718,7 @@ function createConnectionParams(token: string, info: ClientInfo, opts: ConnectOp
|
|
706
718
|
params.set('auto_subscribe', opts.autoSubscribe ? '1' : '0');
|
707
719
|
|
708
720
|
// ClientInfo
|
709
|
-
params.set('sdk', 'js');
|
721
|
+
params.set('sdk', isReactNative() ? 'reactnative' : 'js');
|
710
722
|
params.set('version', info.version!);
|
711
723
|
params.set('protocol', info.protocol!.toString());
|
712
724
|
if (info.deviceModel) {
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import EventEmitter from 'events';
|
2
2
|
import type TypedEmitter from 'typed-emitter';
|
3
|
-
|
4
|
-
import { Checker, CheckInfo, CheckStatus, InstantiableCheck } from './checks/Checker';
|
3
|
+
import { CheckInfo, CheckStatus, Checker, InstantiableCheck } from './checks/Checker';
|
5
4
|
import { PublishAudioCheck } from './checks/publishAudio';
|
6
5
|
import { PublishVideoCheck } from './checks/publishVideo';
|
7
6
|
import { ReconnectCheck } from './checks/reconnect';
|
@@ -1,8 +1,8 @@
|
|
1
1
|
import { EventEmitter } from 'events';
|
2
2
|
import type TypedEmitter from 'typed-emitter';
|
3
3
|
import type { RoomConnectOptions, RoomOptions } from '../../options';
|
4
|
-
import Room, { ConnectionState } from '../../room/Room';
|
5
4
|
import type RTCEngine from '../../room/RTCEngine';
|
5
|
+
import Room, { ConnectionState } from '../../room/Room';
|
6
6
|
|
7
7
|
type LogMessage = {
|
8
8
|
level: 'info' | 'warning' | 'error';
|
package/src/index.ts
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
import { LogLevel, setLogExtension, setLogLevel } from './logger';
|
2
2
|
import { DataPacket_Kind, DisconnectReason, VideoQuality } from './proto/livekit_models';
|
3
3
|
import DefaultReconnectPolicy from './room/DefaultReconnectPolicy';
|
4
|
+
import Room, { ConnectionState, RoomState } from './room/Room';
|
4
5
|
import LocalParticipant from './room/participant/LocalParticipant';
|
5
6
|
import Participant, { ConnectionQuality } from './room/participant/Participant';
|
6
7
|
import type { ParticipantTrackPermission } from './room/participant/ParticipantTrackPermission';
|
7
8
|
import RemoteParticipant from './room/participant/RemoteParticipant';
|
8
|
-
import
|
9
|
+
import CriticalTimers from './room/timers';
|
9
10
|
import LocalAudioTrack from './room/track/LocalAudioTrack';
|
10
11
|
import LocalTrack from './room/track/LocalTrack';
|
11
12
|
import LocalTrackPublication from './room/track/LocalTrackPublication';
|
@@ -13,25 +14,24 @@ import LocalVideoTrack from './room/track/LocalVideoTrack';
|
|
13
14
|
import RemoteAudioTrack from './room/track/RemoteAudioTrack';
|
14
15
|
import RemoteTrack from './room/track/RemoteTrack';
|
15
16
|
import RemoteTrackPublication from './room/track/RemoteTrackPublication';
|
16
|
-
import RemoteVideoTrack from './room/track/RemoteVideoTrack';
|
17
|
-
import type { ElementInfo } from './room/track/RemoteVideoTrack';
|
17
|
+
import RemoteVideoTrack, { type ElementInfo } from './room/track/RemoteVideoTrack';
|
18
18
|
import { TrackPublication } from './room/track/TrackPublication';
|
19
|
-
import
|
19
|
+
import type { LiveKitReactNativeInfo } from './room/types';
|
20
20
|
import {
|
21
|
+
type AudioAnalyserOptions,
|
22
|
+
createAudioAnalyser,
|
21
23
|
getEmptyAudioStreamTrack,
|
22
24
|
getEmptyVideoStreamTrack,
|
23
25
|
isBrowserSupported,
|
24
|
-
supportsAdaptiveStream,
|
25
26
|
supportsAV1,
|
27
|
+
supportsAdaptiveStream,
|
26
28
|
supportsDynacast,
|
27
|
-
createAudioAnalyser,
|
28
29
|
} from './room/utils';
|
29
30
|
|
30
|
-
import type { AudioAnalyserOptions } from './room/utils';
|
31
|
-
|
32
31
|
export * from './options';
|
33
32
|
export * from './room/errors';
|
34
33
|
export * from './room/events';
|
34
|
+
export type { DataPublishOptions, SimulationScenario } from './room/types';
|
35
35
|
export * from './room/track/create';
|
36
36
|
export * from './room/track/options';
|
37
37
|
export * from './room/track/Track';
|
@@ -73,4 +73,5 @@ export {
|
|
73
73
|
ElementInfo,
|
74
74
|
DefaultReconnectPolicy,
|
75
75
|
CriticalTimers,
|
76
|
+
LiveKitReactNativeInfo,
|
76
77
|
};
|
@@ -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
|
},
|