livekit-client 0.12.2 → 0.13.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.
- package/.eslintrc.js +1 -0
- package/.github/workflows/publish.yaml +1 -3
- package/README.md +76 -45
- package/dist/api/SignalClient.d.ts +3 -1
- package/dist/api/SignalClient.js +8 -0
- package/dist/api/SignalClient.js.map +1 -1
- package/dist/connect.d.ts +21 -0
- package/dist/connect.js +83 -0
- package/dist/connect.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/options.d.ts +19 -13
- package/dist/options.js.map +1 -1
- package/dist/proto/livekit_models.d.ts +15 -0
- package/dist/proto/livekit_models.js +129 -1
- package/dist/proto/livekit_models.js.map +1 -1
- package/dist/proto/livekit_rtc.d.ts +16 -1
- package/dist/proto/livekit_rtc.js +116 -1
- package/dist/proto/livekit_rtc.js.map +1 -1
- package/dist/room/DeviceManager.d.ts +7 -0
- package/dist/room/DeviceManager.js +62 -0
- package/dist/room/DeviceManager.js.map +1 -0
- package/dist/room/RTCEngine.d.ts +1 -1
- package/dist/room/RTCEngine.js +8 -7
- package/dist/room/RTCEngine.js.map +1 -1
- package/dist/room/Room.d.ts +34 -2
- package/dist/room/Room.js +92 -2
- package/dist/room/Room.js.map +1 -1
- package/dist/room/defaults.d.ts +5 -0
- package/dist/room/defaults.js +29 -0
- package/dist/room/defaults.js.map +1 -0
- package/dist/room/events.d.ts +33 -4
- package/dist/room/events.js +32 -3
- package/dist/room/events.js.map +1 -1
- package/dist/room/participant/LocalParticipant.d.ts +25 -0
- package/dist/room/participant/LocalParticipant.js +162 -45
- package/dist/room/participant/LocalParticipant.js.map +1 -1
- package/dist/room/participant/Participant.d.ts +17 -0
- package/dist/room/participant/Participant.js +53 -0
- package/dist/room/participant/Participant.js.map +1 -1
- package/dist/room/participant/RemoteParticipant.d.ts +2 -0
- package/dist/room/participant/RemoteParticipant.js +23 -3
- package/dist/room/participant/RemoteParticipant.js.map +1 -1
- package/dist/room/track/LocalAudioTrack.d.ts +3 -0
- package/dist/room/track/LocalAudioTrack.js +37 -0
- package/dist/room/track/LocalAudioTrack.js.map +1 -1
- package/dist/room/track/LocalTrack.d.ts +6 -2
- package/dist/room/track/LocalTrack.js +39 -8
- package/dist/room/track/LocalTrack.js.map +1 -1
- package/dist/room/track/LocalTrackPublication.d.ts +6 -3
- package/dist/room/track/LocalTrackPublication.js +21 -2
- package/dist/room/track/LocalTrackPublication.js.map +1 -1
- package/dist/room/track/LocalVideoTrack.d.ts +3 -2
- package/dist/room/track/LocalVideoTrack.js +48 -16
- package/dist/room/track/LocalVideoTrack.js.map +1 -1
- package/dist/room/track/RemoteAudioTrack.d.ts +2 -0
- package/dist/room/track/RemoteAudioTrack.js +8 -0
- package/dist/room/track/RemoteAudioTrack.js.map +1 -1
- package/dist/room/track/RemoteVideoTrack.d.ts +1 -0
- package/dist/room/track/RemoteVideoTrack.js +6 -1
- package/dist/room/track/RemoteVideoTrack.js.map +1 -1
- package/dist/room/track/Track.d.ts +14 -2
- package/dist/room/track/Track.js +42 -0
- package/dist/room/track/Track.js.map +1 -1
- package/dist/room/track/TrackPublication.d.ts +1 -0
- package/dist/room/track/TrackPublication.js +2 -0
- package/dist/room/track/TrackPublication.js.map +1 -1
- package/dist/room/track/create.d.ts +23 -0
- package/dist/{livekit.js → room/track/create.js} +75 -110
- package/dist/room/track/create.js.map +1 -0
- package/dist/room/track/options.d.ts +76 -20
- package/dist/room/track/options.js +11 -6
- package/dist/room/track/options.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +2 -2
- package/example/index.html +51 -20
- package/example/sample.ts +200 -87
- package/example/webpack.config.js +8 -2
- package/package.json +2 -2
- package/dist/livekit.d.ts +0 -44
- package/dist/livekit.js.map +0 -1
package/example/sample.ts
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
import {
|
2
|
-
connect,
|
3
|
-
LocalTrack,
|
4
|
-
LocalVideoTrack,
|
5
|
-
LogLevel,
|
2
|
+
connect, CreateVideoTrackOptions, DataPacket_Kind, LocalTrack, LocalTrackPublication, LogLevel,
|
6
3
|
Participant,
|
7
4
|
ParticipantEvent,
|
8
5
|
RemoteParticipant,
|
9
6
|
RemoteTrack,
|
7
|
+
RemoteTrackPublication,
|
10
8
|
Room,
|
11
9
|
RoomEvent,
|
12
10
|
Track, TrackPublication, VideoPresets,
|
@@ -18,9 +16,10 @@ declare global {
|
|
18
16
|
interface Window {
|
19
17
|
connectWithFormInput: any;
|
20
18
|
connectToRoom: any;
|
19
|
+
handleDeviceSelected: any;
|
21
20
|
shareScreen: any;
|
22
|
-
|
23
|
-
|
21
|
+
toggleVideo: any;
|
22
|
+
toggleAudio: any;
|
24
23
|
enterText: any;
|
25
24
|
disconnectSignal: any;
|
26
25
|
disconnectRoom: any;
|
@@ -61,6 +60,7 @@ function trackSubscribed(
|
|
61
60
|
|
62
61
|
function trackUnsubscribed(
|
63
62
|
track: RemoteTrack | LocalTrack,
|
63
|
+
pub?: RemoteTrackPublication,
|
64
64
|
participant?: Participant,
|
65
65
|
) {
|
66
66
|
let logName = track.name;
|
@@ -123,13 +123,8 @@ function participantConnected(participant: RemoteParticipant) {
|
|
123
123
|
participant.on(ParticipantEvent.TrackSubscribed, (track) => {
|
124
124
|
trackSubscribed(div, track, participant);
|
125
125
|
});
|
126
|
-
participant.on(ParticipantEvent.TrackUnsubscribed, (track) => {
|
127
|
-
trackUnsubscribed(track, participant);
|
128
|
-
});
|
129
|
-
|
130
|
-
participant.tracks.forEach((publication) => {
|
131
|
-
if (!publication.isSubscribed) return;
|
132
|
-
trackSubscribed(div, publication.track!, participant);
|
126
|
+
participant.on(ParticipantEvent.TrackUnsubscribed, (track, pub) => {
|
127
|
+
trackUnsubscribed(track, pub, participant);
|
133
128
|
});
|
134
129
|
}
|
135
130
|
|
@@ -142,21 +137,42 @@ function participantDisconnected(participant: RemoteParticipant) {
|
|
142
137
|
function handleRoomDisconnect() {
|
143
138
|
appendLog('disconnected from room');
|
144
139
|
setButtonsForState(false);
|
145
|
-
|
146
|
-
|
147
|
-
|
140
|
+
$('local-video')!.innerHTML = '';
|
141
|
+
|
142
|
+
// clear the chat area on disconnect
|
143
|
+
clearChat();
|
144
|
+
|
145
|
+
// clear remote area on disconnect
|
146
|
+
clearRemoteArea();
|
147
|
+
}
|
148
|
+
|
149
|
+
function setButtonState(buttonId: string, buttonText: string, isActive: boolean) {
|
150
|
+
const el = $(buttonId);
|
151
|
+
if (!el) return;
|
152
|
+
|
153
|
+
el.innerHTML = buttonText;
|
154
|
+
if (isActive) {
|
155
|
+
el.classList.add('active');
|
156
|
+
} else {
|
157
|
+
el.classList.remove('active');
|
148
158
|
}
|
149
|
-
|
150
|
-
|
151
|
-
|
159
|
+
}
|
160
|
+
|
161
|
+
function clearChat() {
|
162
|
+
const chat = <HTMLTextAreaElement>$('chat');
|
163
|
+
chat.value = '';
|
164
|
+
}
|
165
|
+
|
166
|
+
function clearRemoteArea() {
|
167
|
+
const el = $('remote-area');
|
168
|
+
if (!el) return;
|
169
|
+
|
170
|
+
while (el.firstChild) {
|
171
|
+
el.removeChild(el.firstChild);
|
152
172
|
}
|
153
|
-
$('local-video')!.innerHTML = '';
|
154
173
|
}
|
155
174
|
|
156
175
|
let currentRoom: Room;
|
157
|
-
let videoTrack: LocalVideoTrack | undefined;
|
158
|
-
let audioTrack: LocalAudioTrack;
|
159
|
-
let screenTrack: LocalVideoTrack | undefined;
|
160
176
|
window.connectWithFormInput = () => {
|
161
177
|
const url = (<HTMLInputElement>$('url')).value;
|
162
178
|
const token = (<HTMLInputElement>$('token')).value;
|
@@ -177,15 +193,17 @@ window.connectToRoom = async (
|
|
177
193
|
if (forceTURN) {
|
178
194
|
rtcConfig.iceTransportPolicy = 'relay';
|
179
195
|
}
|
196
|
+
const shouldPublish = (<HTMLInputElement>$('publish-option')).checked;
|
197
|
+
|
180
198
|
try {
|
181
199
|
room = await connect(url, token, {
|
182
200
|
logLevel: LogLevel.debug,
|
183
|
-
audio: true,
|
184
|
-
video: {
|
185
|
-
resolution: VideoPresets.qhd.resolution,
|
186
|
-
},
|
187
|
-
simulcast,
|
188
201
|
rtcConfig,
|
202
|
+
audio: shouldPublish,
|
203
|
+
video: shouldPublish,
|
204
|
+
publishDefaults: {
|
205
|
+
simulcast,
|
206
|
+
},
|
189
207
|
});
|
190
208
|
} catch (error) {
|
191
209
|
let message: any = error;
|
@@ -196,11 +214,11 @@ window.connectToRoom = async (
|
|
196
214
|
return;
|
197
215
|
}
|
198
216
|
|
199
|
-
window.currentRoom = room;
|
200
217
|
appendLog('connected to room', room.name);
|
201
|
-
setButtonsForState(true);
|
202
218
|
currentRoom = room;
|
203
219
|
window.currentRoom = room;
|
220
|
+
setButtonsForState(true);
|
221
|
+
updateButtonsForPublishState();
|
204
222
|
|
205
223
|
room
|
206
224
|
.on(RoomEvent.ParticipantConnected, participantConnected)
|
@@ -212,6 +230,15 @@ window.connectToRoom = async (
|
|
212
230
|
.on(RoomEvent.Reconnected, () => appendLog('Successfully reconnected!'))
|
213
231
|
.on(RoomEvent.TrackMuted, (pub: TrackPublication, p: Participant) => appendLog('track was muted', pub.trackSid, p.identity))
|
214
232
|
.on(RoomEvent.TrackUnmuted, (pub: TrackPublication, p: Participant) => appendLog('track was unmuted', pub.trackSid, p.identity))
|
233
|
+
.on(RoomEvent.LocalTrackPublished, (pub: LocalTrackPublication) => {
|
234
|
+
if (pub.kind === Track.Kind.Video) {
|
235
|
+
attachLocalVideo();
|
236
|
+
}
|
237
|
+
})
|
238
|
+
.on(RoomEvent.RoomMetadataChanged, (metadata) => {
|
239
|
+
appendLog('new metadata for room', metadata);
|
240
|
+
})
|
241
|
+
.on(RoomEvent.MediaDevicesChanged, handleDevicesChanged)
|
215
242
|
.on(RoomEvent.AudioPlaybackStatusChanged, () => {
|
216
243
|
if (room.canPlaybackAudio) {
|
217
244
|
$('start-audio-button')?.setAttribute('disabled', 'true');
|
@@ -226,48 +253,39 @@ window.connectToRoom = async (
|
|
226
253
|
});
|
227
254
|
|
228
255
|
$('local-video')!.innerHTML = `${room.localParticipant.identity} (me)`;
|
229
|
-
|
230
|
-
// add already published tracks
|
231
|
-
currentRoom.localParticipant.tracks.forEach((publication) => {
|
232
|
-
if (publication.kind === Track.Kind.Video) {
|
233
|
-
videoTrack = <LocalVideoTrack>publication.track;
|
234
|
-
publishLocalVideo(videoTrack);
|
235
|
-
} else if (publication.kind === Track.Kind.Audio) {
|
236
|
-
// skip adding local audio track, to avoid your own sound
|
237
|
-
// only process local video tracks
|
238
|
-
audioTrack = <LocalAudioTrack>publication.track;
|
239
|
-
}
|
240
|
-
});
|
241
256
|
};
|
242
257
|
|
243
|
-
window.
|
244
|
-
if (!currentRoom
|
258
|
+
window.toggleVideo = async () => {
|
259
|
+
if (!currentRoom) return;
|
245
260
|
const video = getMyVideo();
|
246
|
-
if (
|
247
|
-
appendLog('
|
248
|
-
|
261
|
+
if (currentRoom.localParticipant.isCameraEnabled) {
|
262
|
+
appendLog('disabling video');
|
263
|
+
await currentRoom.localParticipant.setCameraEnabled(false);
|
249
264
|
// hide from display
|
250
265
|
if (video) {
|
251
266
|
video.style.display = 'none';
|
252
267
|
}
|
253
268
|
} else {
|
254
|
-
appendLog('
|
255
|
-
|
269
|
+
appendLog('enabling video');
|
270
|
+
await currentRoom.localParticipant.setCameraEnabled(true);
|
271
|
+
attachLocalVideo();
|
256
272
|
if (video) {
|
257
273
|
video.style.display = '';
|
258
274
|
}
|
259
275
|
}
|
276
|
+
updateButtonsForPublishState();
|
260
277
|
};
|
261
278
|
|
262
|
-
window.
|
263
|
-
if (!currentRoom
|
264
|
-
if (
|
265
|
-
appendLog('
|
266
|
-
|
279
|
+
window.toggleAudio = async () => {
|
280
|
+
if (!currentRoom) return;
|
281
|
+
if (currentRoom.localParticipant.isMicrophoneEnabled) {
|
282
|
+
appendLog('disabling audio');
|
283
|
+
await currentRoom.localParticipant.setMicrophoneEnabled(false);
|
267
284
|
} else {
|
268
|
-
appendLog('
|
269
|
-
|
285
|
+
appendLog('enabling audio');
|
286
|
+
await currentRoom.localParticipant.setMicrophoneEnabled(true);
|
270
287
|
}
|
288
|
+
updateButtonsForPublishState();
|
271
289
|
};
|
272
290
|
|
273
291
|
window.enterText = () => {
|
@@ -283,26 +301,17 @@ window.enterText = () => {
|
|
283
301
|
};
|
284
302
|
|
285
303
|
window.shareScreen = async () => {
|
286
|
-
if (
|
287
|
-
currentRoom.localParticipant.unpublishTrack(screenTrack);
|
288
|
-
screenTrack = undefined;
|
289
|
-
return;
|
290
|
-
}
|
304
|
+
if (!currentRoom) return;
|
291
305
|
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
} else {
|
302
|
-
// publish audio track as well
|
303
|
-
currentRoom.localParticipant.publishTrack(track);
|
304
|
-
}
|
305
|
-
});
|
306
|
+
if (currentRoom.localParticipant.isScreenShareEnabled) {
|
307
|
+
appendLog('stopping screen share');
|
308
|
+
await currentRoom.localParticipant.setScreenShareEnabled(false);
|
309
|
+
} else {
|
310
|
+
appendLog('starting screen share');
|
311
|
+
await currentRoom.localParticipant.setScreenShareEnabled(true);
|
312
|
+
appendLog('started screen share');
|
313
|
+
}
|
314
|
+
updateButtonsForPublishState();
|
306
315
|
};
|
307
316
|
|
308
317
|
window.disconnectSignal = () => {
|
@@ -323,31 +332,61 @@ window.startAudio = () => {
|
|
323
332
|
currentRoom.startAudio();
|
324
333
|
};
|
325
334
|
|
326
|
-
let
|
335
|
+
let isFrontFacing = true;
|
327
336
|
window.flipVideo = () => {
|
328
|
-
|
337
|
+
const videoPub = currentRoom.localParticipant.getTrack(Track.Source.Camera);
|
338
|
+
if (!videoPub) {
|
329
339
|
return;
|
330
340
|
}
|
331
|
-
|
341
|
+
if (isFrontFacing) {
|
342
|
+
setButtonState('flip-video-button', 'Front Camera', false);
|
343
|
+
} else {
|
344
|
+
setButtonState('flip-video-button', 'Back Camera', false);
|
345
|
+
}
|
346
|
+
isFrontFacing = !isFrontFacing;
|
332
347
|
const options: CreateVideoTrackOptions = {
|
333
348
|
resolution: VideoPresets.qhd.resolution,
|
334
|
-
facingMode:
|
349
|
+
facingMode: isFrontFacing ? 'user' : 'environment',
|
335
350
|
};
|
336
|
-
videoTrack
|
351
|
+
videoPub.videoTrack?.restartTrack(options);
|
352
|
+
};
|
353
|
+
|
354
|
+
const defaultDevices = new Map<MediaDeviceKind, string>();
|
355
|
+
window.handleDeviceSelected = async (e: Event) => {
|
356
|
+
const deviceId = (<HTMLSelectElement>e.target).value;
|
357
|
+
const elementId = (<HTMLSelectElement>e.target).id;
|
358
|
+
const kind = elementMapping[elementId];
|
359
|
+
if (!kind) {
|
360
|
+
return;
|
361
|
+
}
|
362
|
+
|
363
|
+
defaultDevices.set(kind, deviceId);
|
364
|
+
|
365
|
+
if (currentRoom) {
|
366
|
+
await currentRoom.switchActiveDevice(kind, deviceId);
|
367
|
+
}
|
337
368
|
};
|
338
369
|
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
370
|
+
setTimeout(handleDevicesChanged, 100);
|
371
|
+
|
372
|
+
async function attachLocalVideo() {
|
373
|
+
const videoPub = currentRoom.localParticipant.getTrack(Track.Source.Camera);
|
374
|
+
const videoTrack = videoPub?.videoTrack;
|
375
|
+
if (!videoTrack) {
|
376
|
+
return;
|
377
|
+
}
|
378
|
+
|
379
|
+
if (videoTrack.attachedElements.length === 0) {
|
380
|
+
const video = videoTrack.attach();
|
381
|
+
video.style.transform = 'scale(-1, 1)';
|
382
|
+
$('local-video')!.appendChild(video);
|
383
|
+
}
|
344
384
|
}
|
345
385
|
|
346
386
|
function setButtonsForState(connected: boolean) {
|
347
387
|
const connectedSet = [
|
348
388
|
'toggle-video-button',
|
349
|
-
'
|
350
|
-
'mute-audio-button',
|
389
|
+
'toggle-audio-button',
|
351
390
|
'share-screen-button',
|
352
391
|
'disconnect-ws-button',
|
353
392
|
'disconnect-room-button',
|
@@ -365,3 +404,77 @@ function setButtonsForState(connected: boolean) {
|
|
365
404
|
function getMyVideo() {
|
366
405
|
return <HTMLVideoElement>document.querySelector('#local-video video');
|
367
406
|
}
|
407
|
+
|
408
|
+
const elementMapping: { [k: string]: MediaDeviceKind } = {
|
409
|
+
'video-input': 'videoinput',
|
410
|
+
'audio-input': 'audioinput',
|
411
|
+
'audio-output': 'audiooutput',
|
412
|
+
};
|
413
|
+
async function handleDevicesChanged() {
|
414
|
+
Promise.all(Object.keys(elementMapping).map(async (id) => {
|
415
|
+
const kind = elementMapping[id];
|
416
|
+
if (!kind) {
|
417
|
+
return;
|
418
|
+
}
|
419
|
+
const devices = await Room.getLocalDevices(kind);
|
420
|
+
const element = <HTMLSelectElement>$(id);
|
421
|
+
populateSelect(kind, element, devices, defaultDevices.get(kind));
|
422
|
+
}));
|
423
|
+
}
|
424
|
+
|
425
|
+
function populateSelect(
|
426
|
+
kind: MediaDeviceKind,
|
427
|
+
element: HTMLSelectElement,
|
428
|
+
devices: MediaDeviceInfo[],
|
429
|
+
selectedDeviceId?: string,
|
430
|
+
) {
|
431
|
+
// clear all elements
|
432
|
+
element.innerHTML = '';
|
433
|
+
const initialOption = document.createElement('option');
|
434
|
+
if (kind === 'audioinput') {
|
435
|
+
initialOption.text = 'Audio Input (default)';
|
436
|
+
} else if (kind === 'videoinput') {
|
437
|
+
initialOption.text = 'Video Input (default)';
|
438
|
+
} else if (kind === 'audiooutput') {
|
439
|
+
initialOption.text = 'Audio Output (default)';
|
440
|
+
}
|
441
|
+
element.appendChild(initialOption);
|
442
|
+
|
443
|
+
for (const device of devices) {
|
444
|
+
const option = document.createElement('option');
|
445
|
+
option.text = device.label;
|
446
|
+
option.value = device.deviceId;
|
447
|
+
if (device.deviceId === selectedDeviceId) {
|
448
|
+
option.selected = true;
|
449
|
+
}
|
450
|
+
element.appendChild(option);
|
451
|
+
}
|
452
|
+
}
|
453
|
+
|
454
|
+
function updateButtonsForPublishState() {
|
455
|
+
if (!currentRoom) {
|
456
|
+
return;
|
457
|
+
}
|
458
|
+
const lp = currentRoom.localParticipant;
|
459
|
+
|
460
|
+
// video
|
461
|
+
setButtonState(
|
462
|
+
'toggle-video-button',
|
463
|
+
`${lp.isCameraEnabled ? 'Disable' : 'Enable'} Video`,
|
464
|
+
lp.isCameraEnabled,
|
465
|
+
);
|
466
|
+
|
467
|
+
// audio
|
468
|
+
setButtonState(
|
469
|
+
'toggle-audio-button',
|
470
|
+
`${lp.isMicrophoneEnabled ? 'Disable' : 'Enable'} Audio`,
|
471
|
+
lp.isMicrophoneEnabled,
|
472
|
+
);
|
473
|
+
|
474
|
+
// screen share
|
475
|
+
setButtonState(
|
476
|
+
'share-screen-button',
|
477
|
+
lp.isScreenShareEnabled ? 'Stop Screen Share' : 'Share Screen',
|
478
|
+
lp.isScreenShareEnabled,
|
479
|
+
);
|
480
|
+
}
|
@@ -5,8 +5,14 @@ module.exports = {
|
|
5
5
|
mode: 'development',
|
6
6
|
devtool: 'inline-source-map',
|
7
7
|
devServer: {
|
8
|
-
|
9
|
-
|
8
|
+
host: '0.0.0.0',
|
9
|
+
open: {
|
10
|
+
target: 'http://localhost:8080/',
|
11
|
+
},
|
12
|
+
port: 8080,
|
13
|
+
static: {
|
14
|
+
directory: __dirname,
|
15
|
+
},
|
10
16
|
},
|
11
17
|
module: {
|
12
18
|
rules: [
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "livekit-client",
|
3
|
-
"version": "0.
|
3
|
+
"version": "0.13.3",
|
4
4
|
"description": "JavaScript/TypeScript client SDK for LiveKit",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"source": "src/index.ts",
|
@@ -12,7 +12,7 @@
|
|
12
12
|
"build": "yarn exec tsc",
|
13
13
|
"build-docs": "yarn exec typedoc",
|
14
14
|
"proto": "protoc --plugin=node_modules/ts-proto/protoc-gen-ts_proto --ts_proto_opt=esModuleInterop=true --ts_proto_out=./src/proto --ts_proto_opt=outputClientImpl=false,useOptionals=true -I../protocol ../protocol/livekit_rtc.proto ../protocol/livekit_models.proto",
|
15
|
-
"sample": "cd example && webpack serve
|
15
|
+
"sample": "cd example && webpack serve",
|
16
16
|
"build-sample": "cd example && webpack && cp index.html dist/",
|
17
17
|
"lint": "yarn exec eslint src",
|
18
18
|
"test": "jest",
|
package/dist/livekit.d.ts
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
import { ConnectOptions } from './options';
|
2
|
-
import Room from './room/Room';
|
3
|
-
import LocalAudioTrack from './room/track/LocalAudioTrack';
|
4
|
-
import LocalTrack from './room/track/LocalTrack';
|
5
|
-
import LocalVideoTrack from './room/track/LocalVideoTrack';
|
6
|
-
import { CreateAudioTrackOptions, CreateLocalTracksOptions, CreateScreenTrackOptions, CreateVideoTrackOptions } from './room/track/options';
|
7
|
-
export { version } from './version';
|
8
|
-
/**
|
9
|
-
* Connects to a LiveKit room
|
10
|
-
*
|
11
|
-
* ```typescript
|
12
|
-
* connect('wss://myhost.livekit.io', token, {
|
13
|
-
* // publish audio and video tracks on joining
|
14
|
-
* audio: true,
|
15
|
-
* video: {
|
16
|
-
* resolution: VideoPresets.hd,
|
17
|
-
* facingMode: {
|
18
|
-
* ideal: "user",
|
19
|
-
* }
|
20
|
-
* }
|
21
|
-
* })
|
22
|
-
* ```
|
23
|
-
* @param url URL to LiveKit server
|
24
|
-
* @param token AccessToken, a JWT token that includes authentication and room details
|
25
|
-
* @param options
|
26
|
-
*/
|
27
|
-
export declare function connect(url: string, token: string, options?: ConnectOptions): Promise<Room>;
|
28
|
-
/**
|
29
|
-
* Creates a [[LocalVideoTrack]] with getUserMedia()
|
30
|
-
* @param options
|
31
|
-
*/
|
32
|
-
export declare function createLocalVideoTrack(options?: CreateVideoTrackOptions): Promise<LocalVideoTrack>;
|
33
|
-
export declare function createLocalAudioTrack(options?: CreateAudioTrackOptions): Promise<LocalAudioTrack>;
|
34
|
-
/**
|
35
|
-
* Creates a screen capture tracks with getDisplayMedia().
|
36
|
-
* A LocalVideoTrack is always created and returned.
|
37
|
-
* If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
|
38
|
-
*/
|
39
|
-
export declare function createLocalScreenTracks(options?: CreateScreenTrackOptions): Promise<Array<LocalTrack>>;
|
40
|
-
/**
|
41
|
-
* creates a local video and audio track at the same time
|
42
|
-
* @param options
|
43
|
-
*/
|
44
|
-
export declare function createLocalTracks(options?: CreateLocalTracksOptions): Promise<Array<LocalTrack>>;
|
package/dist/livekit.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"livekit.js","sourceRoot":"","sources":["../src/livekit.ts"],"names":[],"mappings":"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"}
|