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.
Files changed (82) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.github/workflows/publish.yaml +1 -3
  3. package/README.md +76 -45
  4. package/dist/api/SignalClient.d.ts +3 -1
  5. package/dist/api/SignalClient.js +8 -0
  6. package/dist/api/SignalClient.js.map +1 -1
  7. package/dist/connect.d.ts +21 -0
  8. package/dist/connect.js +83 -0
  9. package/dist/connect.js.map +1 -0
  10. package/dist/index.d.ts +2 -1
  11. package/dist/index.js +2 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/options.d.ts +19 -13
  14. package/dist/options.js.map +1 -1
  15. package/dist/proto/livekit_models.d.ts +15 -0
  16. package/dist/proto/livekit_models.js +129 -1
  17. package/dist/proto/livekit_models.js.map +1 -1
  18. package/dist/proto/livekit_rtc.d.ts +16 -1
  19. package/dist/proto/livekit_rtc.js +116 -1
  20. package/dist/proto/livekit_rtc.js.map +1 -1
  21. package/dist/room/DeviceManager.d.ts +7 -0
  22. package/dist/room/DeviceManager.js +62 -0
  23. package/dist/room/DeviceManager.js.map +1 -0
  24. package/dist/room/RTCEngine.d.ts +1 -1
  25. package/dist/room/RTCEngine.js +8 -7
  26. package/dist/room/RTCEngine.js.map +1 -1
  27. package/dist/room/Room.d.ts +34 -2
  28. package/dist/room/Room.js +92 -2
  29. package/dist/room/Room.js.map +1 -1
  30. package/dist/room/defaults.d.ts +5 -0
  31. package/dist/room/defaults.js +29 -0
  32. package/dist/room/defaults.js.map +1 -0
  33. package/dist/room/events.d.ts +33 -4
  34. package/dist/room/events.js +32 -3
  35. package/dist/room/events.js.map +1 -1
  36. package/dist/room/participant/LocalParticipant.d.ts +25 -0
  37. package/dist/room/participant/LocalParticipant.js +162 -45
  38. package/dist/room/participant/LocalParticipant.js.map +1 -1
  39. package/dist/room/participant/Participant.d.ts +17 -0
  40. package/dist/room/participant/Participant.js +53 -0
  41. package/dist/room/participant/Participant.js.map +1 -1
  42. package/dist/room/participant/RemoteParticipant.d.ts +2 -0
  43. package/dist/room/participant/RemoteParticipant.js +23 -3
  44. package/dist/room/participant/RemoteParticipant.js.map +1 -1
  45. package/dist/room/track/LocalAudioTrack.d.ts +3 -0
  46. package/dist/room/track/LocalAudioTrack.js +37 -0
  47. package/dist/room/track/LocalAudioTrack.js.map +1 -1
  48. package/dist/room/track/LocalTrack.d.ts +6 -2
  49. package/dist/room/track/LocalTrack.js +39 -8
  50. package/dist/room/track/LocalTrack.js.map +1 -1
  51. package/dist/room/track/LocalTrackPublication.d.ts +6 -3
  52. package/dist/room/track/LocalTrackPublication.js +21 -2
  53. package/dist/room/track/LocalTrackPublication.js.map +1 -1
  54. package/dist/room/track/LocalVideoTrack.d.ts +3 -2
  55. package/dist/room/track/LocalVideoTrack.js +48 -16
  56. package/dist/room/track/LocalVideoTrack.js.map +1 -1
  57. package/dist/room/track/RemoteAudioTrack.d.ts +2 -0
  58. package/dist/room/track/RemoteAudioTrack.js +8 -0
  59. package/dist/room/track/RemoteAudioTrack.js.map +1 -1
  60. package/dist/room/track/RemoteVideoTrack.d.ts +1 -0
  61. package/dist/room/track/RemoteVideoTrack.js +6 -1
  62. package/dist/room/track/RemoteVideoTrack.js.map +1 -1
  63. package/dist/room/track/Track.d.ts +14 -2
  64. package/dist/room/track/Track.js +42 -0
  65. package/dist/room/track/Track.js.map +1 -1
  66. package/dist/room/track/TrackPublication.d.ts +1 -0
  67. package/dist/room/track/TrackPublication.js +2 -0
  68. package/dist/room/track/TrackPublication.js.map +1 -1
  69. package/dist/room/track/create.d.ts +23 -0
  70. package/dist/{livekit.js → room/track/create.js} +75 -110
  71. package/dist/room/track/create.js.map +1 -0
  72. package/dist/room/track/options.d.ts +76 -20
  73. package/dist/room/track/options.js +11 -6
  74. package/dist/room/track/options.js.map +1 -1
  75. package/dist/version.d.ts +2 -2
  76. package/dist/version.js +2 -2
  77. package/example/index.html +51 -20
  78. package/example/sample.ts +200 -87
  79. package/example/webpack.config.js +8 -2
  80. package/package.json +2 -2
  81. package/dist/livekit.d.ts +0 -44
  82. package/dist/livekit.js.map +0 -1
package/example/sample.ts CHANGED
@@ -1,12 +1,10 @@
1
1
  import {
2
- connect, createLocalScreenTracks, CreateVideoTrackOptions, DataPacket_Kind, LocalAudioTrack,
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
- muteVideo: any;
23
- muteAudio: any;
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
- if (videoTrack) {
146
- videoTrack.stop();
147
- trackUnsubscribed(videoTrack);
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
- if (audioTrack) {
150
- audioTrack.stop();
151
- trackUnsubscribed(audioTrack);
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.muteVideo = () => {
244
- if (!currentRoom || !videoTrack) return;
258
+ window.toggleVideo = async () => {
259
+ if (!currentRoom) return;
245
260
  const video = getMyVideo();
246
- if (!videoTrack.isMuted) {
247
- appendLog('muting video');
248
- videoTrack.mute();
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('unmuting video');
255
- videoTrack.unmute();
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.muteAudio = () => {
263
- if (!currentRoom || !audioTrack) return;
264
- if (!audioTrack.isMuted) {
265
- appendLog('muting audio');
266
- audioTrack.mute();
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('unmuting audio');
269
- audioTrack.unmute();
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 (screenTrack !== undefined) {
287
- currentRoom.localParticipant.unpublishTrack(screenTrack);
288
- screenTrack = undefined;
289
- return;
290
- }
304
+ if (!currentRoom) return;
291
305
 
292
- const screenTracks = await createLocalScreenTracks({
293
- audio: true,
294
- });
295
- screenTracks.forEach((track) => {
296
- if (track instanceof LocalVideoTrack) {
297
- screenTrack = track;
298
- currentRoom.localParticipant.publishTrack(track, {
299
- videoEncoding: VideoPresets.fhd.encoding,
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 isFacingForward = true;
335
+ let isFrontFacing = true;
327
336
  window.flipVideo = () => {
328
- if (!videoTrack) {
337
+ const videoPub = currentRoom.localParticipant.getTrack(Track.Source.Camera);
338
+ if (!videoPub) {
329
339
  return;
330
340
  }
331
- isFacingForward = !isFacingForward;
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: isFacingForward ? 'user' : 'environment',
349
+ facingMode: isFrontFacing ? 'user' : 'environment',
335
350
  };
336
- videoTrack.restartTrack(options);
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
- async function publishLocalVideo(track: LocalVideoTrack) {
340
- await currentRoom.localParticipant.publishTrack(track);
341
- const video = track.attach();
342
- video.style.transform = 'scale(-1, 1)';
343
- $('local-video')!.appendChild(video);
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
- 'mute-video-button',
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
- open: true,
9
- contentBase: __dirname,
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.12.2",
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 --host 0.0.0.0 --public localhost:8080",
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>>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"livekit.js","sourceRoot":"","sources":["../src/livekit.ts"],"names":[],"mappings":"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"}