livekit-client 0.14.3 → 0.15.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 (119) hide show
  1. package/.github/workflows/{lint.yaml → test.yaml} +7 -4
  2. package/.gitmodules +3 -0
  3. package/README.md +46 -14
  4. package/dist/api/SignalClient.d.ts +12 -32
  5. package/dist/api/SignalClient.js +59 -8
  6. package/dist/api/SignalClient.js.map +1 -1
  7. package/dist/connect.d.ts +1 -1
  8. package/dist/connect.js +71 -73
  9. package/dist/connect.js.map +1 -1
  10. package/dist/index.d.ts +6 -4
  11. package/dist/index.js +8 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/logger.d.ts +10 -0
  14. package/dist/logger.js +15 -0
  15. package/dist/logger.js.map +1 -1
  16. package/dist/options.d.ts +83 -19
  17. package/dist/options.js +0 -10
  18. package/dist/options.js.map +1 -1
  19. package/dist/proto/livekit_models.d.ts +45 -1
  20. package/dist/proto/livekit_models.js +333 -4
  21. package/dist/proto/livekit_models.js.map +1 -1
  22. package/dist/proto/livekit_rtc.d.ts +148 -7
  23. package/dist/proto/livekit_rtc.js +1047 -30
  24. package/dist/proto/livekit_rtc.js.map +1 -1
  25. package/dist/room/PCTransport.js +4 -0
  26. package/dist/room/PCTransport.js.map +1 -1
  27. package/dist/room/RTCEngine.d.ts +4 -2
  28. package/dist/room/RTCEngine.js +36 -38
  29. package/dist/room/RTCEngine.js.map +1 -1
  30. package/dist/room/Room.d.ts +23 -17
  31. package/dist/room/Room.js +205 -71
  32. package/dist/room/Room.js.map +1 -1
  33. package/dist/room/events.d.ts +143 -14
  34. package/dist/room/events.js +142 -13
  35. package/dist/room/events.js.map +1 -1
  36. package/dist/room/participant/LocalParticipant.d.ts +53 -13
  37. package/dist/room/participant/LocalParticipant.js +244 -169
  38. package/dist/room/participant/LocalParticipant.js.map +1 -1
  39. package/dist/room/participant/Participant.d.ts +3 -1
  40. package/dist/room/participant/Participant.js +3 -1
  41. package/dist/room/participant/Participant.js.map +1 -1
  42. package/dist/room/participant/ParticipantTrackPermission.d.ts +19 -0
  43. package/dist/room/participant/ParticipantTrackPermission.js +16 -0
  44. package/dist/room/participant/ParticipantTrackPermission.js.map +1 -0
  45. package/dist/room/participant/RemoteParticipant.d.ts +2 -2
  46. package/dist/room/participant/RemoteParticipant.js +10 -15
  47. package/dist/room/participant/RemoteParticipant.js.map +1 -1
  48. package/dist/room/participant/publishUtils.d.ts +11 -0
  49. package/dist/room/participant/publishUtils.js +148 -0
  50. package/dist/room/participant/publishUtils.js.map +1 -0
  51. package/dist/room/participant/publishUtils.test.d.ts +1 -0
  52. package/dist/room/participant/publishUtils.test.js +79 -0
  53. package/dist/room/participant/publishUtils.test.js.map +1 -0
  54. package/dist/room/stats.d.ts +21 -6
  55. package/dist/room/stats.js +22 -1
  56. package/dist/room/stats.js.map +1 -1
  57. package/dist/room/track/LocalAudioTrack.d.ts +8 -3
  58. package/dist/room/track/LocalAudioTrack.js +49 -3
  59. package/dist/room/track/LocalAudioTrack.js.map +1 -1
  60. package/dist/room/track/LocalTrack.d.ts +1 -3
  61. package/dist/room/track/LocalTrack.js +3 -50
  62. package/dist/room/track/LocalTrack.js.map +1 -1
  63. package/dist/room/track/LocalTrackPublication.d.ts +3 -1
  64. package/dist/room/track/LocalTrackPublication.js +15 -5
  65. package/dist/room/track/LocalTrackPublication.js.map +1 -1
  66. package/dist/room/track/LocalVideoTrack.d.ts +14 -5
  67. package/dist/room/track/LocalVideoTrack.js +156 -62
  68. package/dist/room/track/LocalVideoTrack.js.map +1 -1
  69. package/dist/room/track/LocalVideoTrack.test.d.ts +1 -0
  70. package/dist/room/track/LocalVideoTrack.test.js +68 -0
  71. package/dist/room/track/LocalVideoTrack.test.js.map +1 -0
  72. package/dist/room/track/RemoteAudioTrack.d.ts +6 -8
  73. package/dist/room/track/RemoteAudioTrack.js +55 -19
  74. package/dist/room/track/RemoteAudioTrack.js.map +1 -1
  75. package/dist/room/track/RemoteTrack.d.ts +14 -0
  76. package/dist/room/track/RemoteTrack.js +47 -0
  77. package/dist/room/track/RemoteTrack.js.map +1 -0
  78. package/dist/room/track/RemoteTrackPublication.d.ts +10 -4
  79. package/dist/room/track/RemoteTrackPublication.js +41 -15
  80. package/dist/room/track/RemoteTrackPublication.js.map +1 -1
  81. package/dist/room/track/RemoteVideoTrack.d.ts +7 -9
  82. package/dist/room/track/RemoteVideoTrack.js +77 -41
  83. package/dist/room/track/RemoteVideoTrack.js.map +1 -1
  84. package/dist/room/track/Track.d.ts +13 -2
  85. package/dist/room/track/Track.js +34 -2
  86. package/dist/room/track/Track.js.map +1 -1
  87. package/dist/room/track/TrackPublication.d.ts +14 -1
  88. package/dist/room/track/TrackPublication.js +24 -7
  89. package/dist/room/track/TrackPublication.js.map +1 -1
  90. package/dist/room/track/create.d.ts +4 -6
  91. package/dist/room/track/create.js +10 -57
  92. package/dist/room/track/create.js.map +1 -1
  93. package/dist/room/track/defaults.d.ts +4 -0
  94. package/dist/room/track/defaults.js +21 -0
  95. package/dist/room/track/defaults.js.map +1 -0
  96. package/dist/room/track/options.d.ts +15 -65
  97. package/dist/room/track/options.js +14 -13
  98. package/dist/room/track/options.js.map +1 -1
  99. package/dist/room/track/utils.d.ts +3 -0
  100. package/dist/room/track/utils.js +68 -0
  101. package/dist/room/track/utils.js.map +1 -0
  102. package/dist/room/track/utils.test.d.ts +1 -0
  103. package/dist/room/track/utils.test.js +85 -0
  104. package/dist/room/track/utils.test.js.map +1 -0
  105. package/dist/room/utils.d.ts +1 -1
  106. package/dist/room/utils.js +5 -6
  107. package/dist/room/utils.js.map +1 -1
  108. package/dist/version.d.ts +1 -1
  109. package/dist/version.js +1 -1
  110. package/example/index.html +193 -178
  111. package/example/sample.ts +467 -327
  112. package/example/styles.css +144 -0
  113. package/example/webpack.config.js +1 -1
  114. package/jest.config.js +6 -0
  115. package/package.json +9 -6
  116. package/tsconfig.eslint.json +8 -1
  117. package/dist/room/defaults.d.ts +0 -5
  118. package/dist/room/defaults.js +0 -32
  119. package/dist/room/defaults.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RTCEngine.js","sourceRoot":"","sources":["../../src/room/RTCEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RTCEngine.js","sourceRoot":"","sources":["../../src/room/RTCEngine.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,15 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
- import { SignalClient, SignalOptions } from '../api/SignalClient';
3
+ import { RoomConnectOptions, RoomOptions } from '../options';
4
4
  import LocalParticipant from './participant/LocalParticipant';
5
5
  import Participant from './participant/Participant';
6
6
  import RemoteParticipant from './participant/RemoteParticipant';
7
7
  import RTCEngine from './RTCEngine';
8
- import { TrackCaptureDefaults, TrackPublishDefaults } from './track/options';
9
8
  export declare enum RoomState {
10
9
  Disconnected = "disconnected",
11
10
  Connected = "connected",
12
11
  Reconnecting = "reconnecting"
13
12
  }
14
- export interface RoomOptions {
15
- autoManageVideo?: boolean;
16
- rtcConfig?: RTCConfiguration;
17
- }
18
13
  /**
19
14
  * In LiveKit, a room is the logical grouping for a list of participants.
20
15
  * Participants in a room can publish tracks, and subscribe to others' tracks.
@@ -42,12 +37,18 @@ declare class Room extends EventEmitter {
42
37
  localParticipant: LocalParticipant;
43
38
  /** room metadata */
44
39
  metadata: string | undefined;
45
- /** @internal */
40
+ /** options of room */
46
41
  options: RoomOptions;
42
+ /** connect options of room */
43
+ private connOptions?;
47
44
  private audioEnabled;
48
45
  private audioContext?;
49
- /** @internal */
50
- constructor(client: SignalClient, options?: RoomOptions);
46
+ /**
47
+ * Creates a new Room, the primary construct for a LiveKit session.
48
+ * @param options
49
+ */
50
+ constructor(options?: RoomOptions);
51
+ private createEngine;
51
52
  /**
52
53
  * getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.
53
54
  * In particular, it handles Chrome's unique behavior of creating `default`
@@ -57,20 +58,22 @@ declare class Room extends EventEmitter {
57
58
  * @returns a list of available local devices
58
59
  */
59
60
  static getLocalDevices(kind: MediaDeviceKind): Promise<MediaDeviceInfo[]>;
60
- /** @internal */
61
- connect: (url: string, token: string, opts?: SignalOptions | undefined) => Promise<Room>;
61
+ connect: (url: string, token: string, opts?: RoomConnectOptions | undefined) => Promise<Room | undefined>;
62
62
  /**
63
63
  * disconnects the room, emits [[RoomEvent.Disconnected]]
64
64
  */
65
65
  disconnect: (stopTracks?: boolean) => void;
66
- private onBeforeUnload;
67
66
  /**
68
- * Set default publish options
67
+ * retrieves a participant by identity
68
+ * @param identity
69
+ * @returns
69
70
  */
70
- set defaultPublishOptions(opts: TrackPublishDefaults);
71
- get defaultPublishOptions(): TrackPublishDefaults;
72
- set defaultCaptureOptions(opts: TrackCaptureDefaults);
73
- get defaultCaptureOptions(): TrackCaptureDefaults;
71
+ getParticipantByIdentity(identity: string): Participant | undefined;
72
+ /**
73
+ * @internal for testing
74
+ */
75
+ simulateScenario(scenario: string): void;
76
+ private onBeforeUnload;
74
77
  /**
75
78
  * Browsers have different policies regarding audio playback. Most requiring
76
79
  * some form of user interaction (click/tap/etc).
@@ -100,6 +103,8 @@ declare class Room extends EventEmitter {
100
103
  private handleParticipantDisconnected;
101
104
  private handleActiveSpeakersUpdate;
102
105
  private handleSpeakersChanged;
106
+ private handleStreamStateUpdate;
107
+ private handleSubscriptionPermissionUpdate;
103
108
  private handleDataPacket;
104
109
  private handleAudioPlaybackStarted;
105
110
  private handleAudioPlaybackFailed;
@@ -108,6 +113,7 @@ declare class Room extends EventEmitter {
108
113
  private handleConnectionQualityUpdate;
109
114
  private acquireAudioContext;
110
115
  private getOrCreateParticipant;
116
+ private sendSyncState;
111
117
  /** @internal */
112
118
  emit(event: string | symbol, ...args: any[]): boolean;
113
119
  }
package/dist/room/Room.js CHANGED
@@ -33,15 +33,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
34
  exports.RoomState = void 0;
35
35
  const events_1 = require("events");
36
+ const SignalClient_1 = require("../api/SignalClient");
36
37
  const logger_1 = __importDefault(require("../logger"));
37
38
  const livekit_models_1 = require("../proto/livekit_models");
38
- const defaults_1 = require("./defaults");
39
+ const livekit_rtc_1 = require("../proto/livekit_rtc");
39
40
  const DeviceManager_1 = __importDefault(require("./DeviceManager"));
40
41
  const errors_1 = require("./errors");
41
42
  const events_2 = require("./events");
42
43
  const LocalParticipant_1 = __importDefault(require("./participant/LocalParticipant"));
43
44
  const RemoteParticipant_1 = __importDefault(require("./participant/RemoteParticipant"));
44
45
  const RTCEngine_1 = __importStar(require("./RTCEngine"));
46
+ const defaults_1 = require("./track/defaults");
45
47
  const Track_1 = require("./track/Track");
46
48
  const utils_1 = require("./utils");
47
49
  var RoomState;
@@ -59,8 +61,11 @@ var RoomState;
59
61
  * @noInheritDoc
60
62
  */
61
63
  class Room extends events_1.EventEmitter {
62
- /** @internal */
63
- constructor(client, options) {
64
+ /**
65
+ * Creates a new Room, the primary construct for a LiveKit session.
66
+ * @param options
67
+ */
68
+ constructor(options) {
64
69
  super();
65
70
  this.state = RoomState.Disconnected;
66
71
  /**
@@ -68,35 +73,49 @@ class Room extends events_1.EventEmitter {
68
73
  * a [[RoomEvent.ActiveSpeakersChanged]] event is fired
69
74
  */
70
75
  this.activeSpeakers = [];
76
+ // available after connected
77
+ /** server assigned unique room id */
78
+ this.sid = '';
79
+ /** user assigned name, derived from JWT token */
80
+ this.name = '';
71
81
  /** room metadata */
72
82
  this.metadata = undefined;
73
- /** @internal */
74
- this.options = {};
75
83
  this.audioEnabled = true;
76
- /** @internal */
77
84
  this.connect = (url, token, opts) => __awaiter(this, void 0, void 0, function* () {
78
85
  // guard against calling connect
79
- if (this.localParticipant) {
86
+ if (this.state !== RoomState.Disconnected) {
80
87
  logger_1.default.warn('already connected to room', this.name);
81
- return this;
88
+ return;
82
89
  }
90
+ // recreate engine if previously disconnected
91
+ this.createEngine();
92
+ this.acquireAudioContext();
93
+ if (opts === null || opts === void 0 ? void 0 : opts.rtcConfig) {
94
+ this.engine.rtcConfig = opts.rtcConfig;
95
+ }
96
+ this.connOptions = opts;
83
97
  try {
84
98
  const joinResponse = yield this.engine.join(url, token, opts);
85
99
  logger_1.default.debug('connected to Livekit Server', joinResponse.serverVersion);
86
100
  if (!joinResponse.serverVersion) {
87
101
  throw new errors_1.UnsupportedServer('unknown server version');
88
102
  }
103
+ if (joinResponse.serverVersion === '0.15.1' && this.options.dynacast) {
104
+ logger_1.default.debug('disabling dynacast due to server version');
105
+ // dynacast has a bug in 0.15.1, so we cannot use it then
106
+ this.options.dynacast = false;
107
+ }
89
108
  this.state = RoomState.Connected;
90
109
  const pi = joinResponse.participant;
91
- this.localParticipant = new LocalParticipant_1.default(pi.sid, pi.identity, this.engine);
110
+ this.localParticipant = new LocalParticipant_1.default(pi.sid, pi.identity, this.engine, this.options);
92
111
  this.localParticipant.updateInfo(pi);
93
112
  // forward metadata changed for the local participant
94
113
  this.localParticipant
95
- .on(events_2.ParticipantEvent.MetadataChanged, (metadata, p) => {
96
- this.emit(events_2.RoomEvent.MetadataChanged, metadata, p);
114
+ .on(events_2.ParticipantEvent.MetadataChanged, (metadata) => {
115
+ this.emit(events_2.RoomEvent.MetadataChanged, metadata, this.localParticipant);
97
116
  })
98
- .on(events_2.ParticipantEvent.ParticipantMetadataChanged, (metadata, p) => {
99
- this.emit(events_2.RoomEvent.ParticipantMetadataChanged, metadata, p);
117
+ .on(events_2.ParticipantEvent.ParticipantMetadataChanged, (metadata) => {
118
+ this.emit(events_2.RoomEvent.ParticipantMetadataChanged, metadata, this.localParticipant);
100
119
  })
101
120
  .on(events_2.ParticipantEvent.TrackMuted, (pub) => {
102
121
  this.emit(events_2.RoomEvent.TrackMuted, pub, this.localParticipant);
@@ -122,6 +141,7 @@ class Room extends events_1.EventEmitter {
122
141
  });
123
142
  this.name = joinResponse.room.name;
124
143
  this.sid = joinResponse.room.sid;
144
+ this.metadata = joinResponse.room.metadata;
125
145
  }
126
146
  catch (err) {
127
147
  this.engine.close();
@@ -148,13 +168,42 @@ class Room extends events_1.EventEmitter {
148
168
  */
149
169
  this.disconnect = (stopTracks = true) => {
150
170
  // send leave
151
- this.engine.client.sendLeave();
152
- this.engine.close();
171
+ if (this.engine) {
172
+ this.engine.client.sendLeave();
173
+ this.engine.close();
174
+ }
153
175
  this.handleDisconnect(stopTracks);
176
+ /* @ts-ignore */
177
+ this.engine = undefined;
154
178
  };
155
179
  this.onBeforeUnload = () => {
156
180
  this.disconnect();
157
181
  };
182
+ this.handleParticipantUpdates = (participantInfos) => {
183
+ // handle changes to participant state, and send events
184
+ participantInfos.forEach((info) => {
185
+ if (info.sid === this.localParticipant.sid) {
186
+ this.localParticipant.updateInfo(info);
187
+ return;
188
+ }
189
+ let remoteParticipant = this.participants.get(info.sid);
190
+ const isNewParticipant = !remoteParticipant;
191
+ // create participant if doesn't exist
192
+ remoteParticipant = this.getOrCreateParticipant(info.sid, info);
193
+ // when it's disconnected, send updates
194
+ if (info.state === livekit_models_1.ParticipantInfo_State.DISCONNECTED) {
195
+ this.handleParticipantDisconnected(info.sid, remoteParticipant);
196
+ }
197
+ else if (isNewParticipant) {
198
+ // fire connected event
199
+ this.emit(events_2.RoomEvent.ParticipantConnected, remoteParticipant);
200
+ }
201
+ else {
202
+ // just update, no events
203
+ remoteParticipant.updateInfo(info);
204
+ }
205
+ });
206
+ };
158
207
  // updates are sent only when there's a change to speaker ordering
159
208
  this.handleActiveSpeakersUpdate = (speakers) => {
160
209
  const activeSpeakers = [];
@@ -216,6 +265,34 @@ class Room extends events_1.EventEmitter {
216
265
  this.activeSpeakers = activeSpeakers;
217
266
  this.emit(events_2.RoomEvent.ActiveSpeakersChanged, activeSpeakers);
218
267
  };
268
+ this.handleStreamStateUpdate = (streamStateUpdate) => {
269
+ streamStateUpdate.streamStates.forEach((streamState) => {
270
+ const participant = this.participants.get(streamState.participantSid);
271
+ if (!participant) {
272
+ return;
273
+ }
274
+ const pub = participant.getTrackPublication(streamState.trackSid);
275
+ if (!pub || !pub.track) {
276
+ return;
277
+ }
278
+ pub.track.streamState = Track_1.Track.streamStateFromProto(streamState.state);
279
+ participant.emit(events_2.ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState);
280
+ this.emit(events_2.ParticipantEvent.TrackStreamStateChanged, pub, pub.track.streamState, participant);
281
+ });
282
+ };
283
+ this.handleSubscriptionPermissionUpdate = (update) => {
284
+ const participant = this.participants.get(update.participantSid);
285
+ if (!participant) {
286
+ return;
287
+ }
288
+ const pub = participant.getTrackPublication(update.trackSid);
289
+ if (!pub) {
290
+ return;
291
+ }
292
+ pub._allowed = update.allowed;
293
+ participant.emit(events_2.ParticipantEvent.TrackSubscriptionPermissionChanged, pub, pub.subscriptionStatus);
294
+ this.emit(events_2.ParticipantEvent.TrackSubscriptionPermissionChanged, pub, pub.subscriptionStatus, participant);
295
+ };
219
296
  this.handleDataPacket = (userPacket, kind) => {
220
297
  // find the participant
221
298
  const participant = this.participants.get(userPacket.participantSid);
@@ -259,20 +336,29 @@ class Room extends events_1.EventEmitter {
259
336
  };
260
337
  this.participants = new Map();
261
338
  this.options = options || {};
262
- this.engine = new RTCEngine_1.default(client, this.options.rtcConfig);
263
- this.acquireAudioContext();
339
+ this.options.audioCaptureDefaults = Object.assign(Object.assign({}, defaults_1.audioDefaults), options === null || options === void 0 ? void 0 : options.audioCaptureDefaults);
340
+ this.options.videoCaptureDefaults = Object.assign(Object.assign({}, defaults_1.videoDefaults), options === null || options === void 0 ? void 0 : options.videoCaptureDefaults);
341
+ this.options.publishDefaults = Object.assign(Object.assign({}, defaults_1.publishDefaults), options === null || options === void 0 ? void 0 : options.publishDefaults);
342
+ this.createEngine();
343
+ this.localParticipant = new LocalParticipant_1.default('', '', this.engine, this.options);
344
+ }
345
+ createEngine() {
346
+ if (this.engine) {
347
+ return;
348
+ }
349
+ this.engine = new RTCEngine_1.default();
264
350
  this.engine.on(events_2.EngineEvent.MediaTrackAdded, (mediaTrack, stream, receiver) => {
265
351
  this.onTrackAdded(mediaTrack, stream, receiver);
266
352
  });
267
353
  this.engine.on(events_2.EngineEvent.Disconnected, () => {
268
354
  this.handleDisconnect();
269
355
  });
270
- this.engine.on(events_2.EngineEvent.ParticipantUpdate, (participants) => {
271
- this.handleParticipantUpdates(participants);
272
- });
273
- this.engine.on(events_2.EngineEvent.RoomUpdate, this.handleRoomUpdate);
356
+ this.engine.client.onParticipantUpdate = this.handleParticipantUpdates;
357
+ this.engine.client.onRoomUpdate = this.handleRoomUpdate;
358
+ this.engine.client.onSpeakersChanged = this.handleSpeakersChanged;
359
+ this.engine.client.onStreamStateUpdate = this.handleStreamStateUpdate;
360
+ this.engine.client.onSubscriptionPermissionUpdate = this.handleSubscriptionPermissionUpdate;
274
361
  this.engine.on(events_2.EngineEvent.ActiveSpeakersUpdate, this.handleActiveSpeakersUpdate);
275
- this.engine.on(events_2.EngineEvent.SpeakersChanged, this.handleSpeakersChanged);
276
362
  this.engine.on(events_2.EngineEvent.DataPacketReceived, this.handleDataPacket);
277
363
  this.engine.on(events_2.EngineEvent.Reconnecting, () => {
278
364
  this.state = RoomState.Reconnecting;
@@ -282,7 +368,12 @@ class Room extends events_1.EventEmitter {
282
368
  this.state = RoomState.Connected;
283
369
  this.emit(events_2.RoomEvent.Reconnected);
284
370
  });
285
- this.engine.on(events_2.EngineEvent.ConnectionQualityUpdate, this.handleConnectionQualityUpdate);
371
+ this.engine.on(events_2.EngineEvent.SignalConnected, () => {
372
+ if (this.state === RoomState.Reconnecting) {
373
+ this.sendSyncState();
374
+ }
375
+ });
376
+ this.engine.client.onConnectionQuality = this.handleConnectionQualityUpdate;
286
377
  }
287
378
  /**
288
379
  * getLocalDevices abstracts navigator.mediaDevices.enumerateDevices.
@@ -296,19 +387,48 @@ class Room extends events_1.EventEmitter {
296
387
  return DeviceManager_1.default.getInstance().getDevices(kind);
297
388
  }
298
389
  /**
299
- * Set default publish options
390
+ * retrieves a participant by identity
391
+ * @param identity
392
+ * @returns
300
393
  */
301
- set defaultPublishOptions(opts) {
302
- defaults_1.setTrackPublishDefaults(opts);
303
- }
304
- get defaultPublishOptions() {
305
- return defaults_1.getTrackPublishDefaults();
306
- }
307
- set defaultCaptureOptions(opts) {
308
- defaults_1.setTrackCaptureDefaults(opts);
394
+ getParticipantByIdentity(identity) {
395
+ for (const [, p] of this.participants) {
396
+ if (p.identity === identity) {
397
+ return p;
398
+ }
399
+ }
309
400
  }
310
- get defaultCaptureOptions() {
311
- return defaults_1.getTrackCaptureDefaults();
401
+ /**
402
+ * @internal for testing
403
+ */
404
+ simulateScenario(scenario) {
405
+ let req;
406
+ switch (scenario) {
407
+ case 'speaker':
408
+ req = livekit_rtc_1.SimulateScenario.fromPartial({
409
+ speakerUpdate: 3,
410
+ });
411
+ break;
412
+ case 'node-failure':
413
+ req = livekit_rtc_1.SimulateScenario.fromPartial({
414
+ nodeFailure: true,
415
+ });
416
+ break;
417
+ case 'server-leave':
418
+ req = livekit_rtc_1.SimulateScenario.fromPartial({
419
+ serverLeave: true,
420
+ });
421
+ break;
422
+ case 'migration':
423
+ req = livekit_rtc_1.SimulateScenario.fromPartial({
424
+ migration: true,
425
+ });
426
+ break;
427
+ default:
428
+ }
429
+ if (req) {
430
+ this.engine.client.sendSimulateScenario(req);
431
+ }
312
432
  }
313
433
  /**
314
434
  * Browsers have different policies regarding audio playback. Most requiring
@@ -363,14 +483,14 @@ class Room extends events_1.EventEmitter {
363
483
  .from(this.localParticipant.audioTracks.values())
364
484
  .filter((track) => track.source === Track_1.Track.Source.Microphone);
365
485
  yield Promise.all(tracks.map((t) => { var _a; return (_a = t.audioTrack) === null || _a === void 0 ? void 0 : _a.setDeviceId(deviceId); }));
366
- this.defaultCaptureOptions.audioDeviceId = deviceId;
486
+ this.options.audioCaptureDefaults.deviceId = deviceId;
367
487
  }
368
488
  else if (kind === 'videoinput') {
369
489
  const tracks = Array
370
490
  .from(this.localParticipant.videoTracks.values())
371
491
  .filter((track) => track.source === Track_1.Track.Source.Camera);
372
492
  yield Promise.all(tracks.map((t) => { var _a; return (_a = t.videoTrack) === null || _a === void 0 ? void 0 : _a.setDeviceId(deviceId); }));
373
- this.defaultCaptureOptions.videoDeviceId = deviceId;
493
+ this.options.videoCaptureDefaults.deviceId = deviceId;
374
494
  }
375
495
  else if (kind === 'audiooutput') {
376
496
  const elements = [];
@@ -399,7 +519,7 @@ class Room extends events_1.EventEmitter {
399
519
  if (!trackId || trackId === '')
400
520
  trackId = mediaTrack.id;
401
521
  const participant = this.getOrCreateParticipant(participantId);
402
- participant.addSubscribedMediaTrack(mediaTrack, trackId, receiver, this.options.autoManageVideo);
522
+ participant.addSubscribedMediaTrack(mediaTrack, trackId, stream, receiver, this.options.adaptiveStream);
403
523
  }
404
524
  handleDisconnect(shouldStopTracks = true) {
405
525
  if (this.state === RoomState.Disconnected) {
@@ -410,13 +530,16 @@ class Room extends events_1.EventEmitter {
410
530
  p.unpublishTrack(pub.trackSid);
411
531
  });
412
532
  });
413
- if (shouldStopTracks) {
414
- this.localParticipant.tracks.forEach((pub) => {
415
- var _a, _b;
533
+ this.localParticipant.tracks.forEach((pub) => {
534
+ var _a, _b;
535
+ if (pub.track) {
536
+ this.localParticipant.unpublishTrack(pub.track);
537
+ }
538
+ if (shouldStopTracks) {
416
539
  (_a = pub.track) === null || _a === void 0 ? void 0 : _a.detach();
417
540
  (_b = pub.track) === null || _b === void 0 ? void 0 : _b.stop();
418
- });
419
- }
541
+ }
542
+ });
420
543
  this.participants.clear();
421
544
  this.activeSpeakers = [];
422
545
  if (this.audioContext) {
@@ -425,33 +548,8 @@ class Room extends events_1.EventEmitter {
425
548
  }
426
549
  window.removeEventListener('beforeunload', this.onBeforeUnload);
427
550
  navigator.mediaDevices.removeEventListener('devicechange', this.handleDeviceChange);
428
- this.emit(events_2.RoomEvent.Disconnected);
429
551
  this.state = RoomState.Disconnected;
430
- }
431
- handleParticipantUpdates(participantInfos) {
432
- // handle changes to participant state, and send events
433
- participantInfos.forEach((info) => {
434
- if (info.sid === this.localParticipant.sid) {
435
- this.localParticipant.updateInfo(info);
436
- return;
437
- }
438
- let remoteParticipant = this.participants.get(info.sid);
439
- const isNewParticipant = !remoteParticipant;
440
- // create participant if doesn't exist
441
- remoteParticipant = this.getOrCreateParticipant(info.sid, info);
442
- // when it's disconnected, send updates
443
- if (info.state === livekit_models_1.ParticipantInfo_State.DISCONNECTED) {
444
- this.handleParticipantDisconnected(info.sid, remoteParticipant);
445
- }
446
- else if (isNewParticipant) {
447
- // fire connected event
448
- this.emit(events_2.RoomEvent.ParticipantConnected, remoteParticipant);
449
- }
450
- else {
451
- // just update, no events
452
- remoteParticipant.updateInfo(info);
453
- }
454
- });
552
+ this.emit(events_2.RoomEvent.Disconnected);
455
553
  }
456
554
  handleParticipantDisconnected(sid, participant) {
457
555
  // remove and send event
@@ -518,9 +616,11 @@ class Room extends events_1.EventEmitter {
518
616
  .on(events_2.ParticipantEvent.TrackUnmuted, (pub) => {
519
617
  this.emit(events_2.RoomEvent.TrackUnmuted, pub, participant);
520
618
  })
521
- .on(events_2.ParticipantEvent.MetadataChanged, (metadata, p) => {
522
- this.emit(events_2.RoomEvent.ParticipantMetadataChanged, metadata, p);
523
- this.emit(events_2.RoomEvent.MetadataChanged, metadata, p);
619
+ .on(events_2.ParticipantEvent.MetadataChanged, (metadata) => {
620
+ this.emit(events_2.RoomEvent.MetadataChanged, metadata, participant);
621
+ })
622
+ .on(events_2.ParticipantEvent.ParticipantMetadataChanged, (metadata) => {
623
+ this.emit(events_2.RoomEvent.ParticipantMetadataChanged, metadata, participant);
524
624
  })
525
625
  .on(events_2.ParticipantEvent.ConnectionQualityChanged, (quality) => {
526
626
  this.emit(events_2.RoomEvent.ConnectionQualityChanged, quality, participant);
@@ -528,6 +628,40 @@ class Room extends events_1.EventEmitter {
528
628
  }
529
629
  return participant;
530
630
  }
631
+ sendSyncState() {
632
+ var _a;
633
+ if (this.engine.subscriber === undefined
634
+ || this.engine.subscriber.pc.localDescription === null) {
635
+ return;
636
+ }
637
+ const previousSdp = this.engine.subscriber.pc.localDescription;
638
+ /* 1. autosubscribe on, so subscribed tracks = all tracks - unsub tracks,
639
+ in this case, we send unsub tracks, so server add all tracks to this
640
+ subscribe pc and unsub special tracks from it.
641
+ 2. autosubscribe off, we send subscribed tracks.
642
+ */
643
+ const sendUnsub = ((_a = this.connOptions) === null || _a === void 0 ? void 0 : _a.autoSubscribe) || false;
644
+ const trackSids = new Array();
645
+ this.participants.forEach((participant) => {
646
+ participant.tracks.forEach((track) => {
647
+ if (track.isSubscribed !== sendUnsub) {
648
+ trackSids.push(track.trackSid);
649
+ }
650
+ });
651
+ });
652
+ this.engine.client.sendSyncState({
653
+ answer: SignalClient_1.toProtoSessionDescription({
654
+ sdp: previousSdp.sdp,
655
+ type: previousSdp.type,
656
+ }),
657
+ subscription: {
658
+ trackSids,
659
+ subscribe: !sendUnsub,
660
+ participantTracks: [],
661
+ },
662
+ publishTracks: this.localParticipant.publishedTracksInfo(),
663
+ });
664
+ }
531
665
  /** @internal */
532
666
  emit(event, ...args) {
533
667
  logger_1.default.debug('room event', event, ...args);