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,4 +1,23 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
22
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
23
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -14,22 +33,22 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
33
  Object.defineProperty(exports, "__esModule", { value: true });
15
34
  const logger_1 = __importDefault(require("../../logger"));
16
35
  const livekit_rtc_1 = require("../../proto/livekit_rtc");
17
- const defaults_1 = require("../defaults");
18
36
  const errors_1 = require("../errors");
19
37
  const events_1 = require("../events");
20
- const create_1 = require("../track/create");
21
38
  const LocalAudioTrack_1 = __importDefault(require("../track/LocalAudioTrack"));
22
39
  const LocalTrackPublication_1 = __importDefault(require("../track/LocalTrackPublication"));
23
- const LocalVideoTrack_1 = __importDefault(require("../track/LocalVideoTrack"));
40
+ const LocalVideoTrack_1 = __importStar(require("../track/LocalVideoTrack"));
24
41
  const options_1 = require("../track/options");
25
42
  const Track_1 = require("../track/Track");
43
+ const utils_1 = require("../track/utils");
26
44
  const Participant_1 = __importDefault(require("./Participant"));
45
+ const ParticipantTrackPermission_1 = require("./ParticipantTrackPermission");
46
+ const publishUtils_1 = require("./publishUtils");
27
47
  const RemoteParticipant_1 = __importDefault(require("./RemoteParticipant"));
28
48
  class LocalParticipant extends Participant_1.default {
29
49
  /** @internal */
30
- constructor(sid, identity, engine) {
50
+ constructor(sid, identity, engine, options) {
31
51
  super(sid, identity);
32
- /** @internal */
33
52
  this.pendingPublishing = new Set();
34
53
  /** @internal */
35
54
  this.onTrackUnmuted = (track) => {
@@ -47,32 +66,27 @@ class LocalParticipant extends Participant_1.default {
47
66
  }
48
67
  this.engine.updateMuteStatus(track.sid, muted);
49
68
  };
50
- this.presets169 = [
51
- options_1.VideoPresets.qvga,
52
- options_1.VideoPresets.vga,
53
- options_1.VideoPresets.qhd,
54
- options_1.VideoPresets.hd,
55
- options_1.VideoPresets.fhd,
56
- ];
57
- this.presets43 = [
58
- options_1.VideoPresets43.qvga,
59
- options_1.VideoPresets43.vga,
60
- options_1.VideoPresets43.qhd,
61
- options_1.VideoPresets43.hd,
62
- options_1.VideoPresets43.fhd,
63
- ];
64
- this.presetsScreenShare = [
65
- options_1.ScreenSharePresets.vga,
66
- options_1.ScreenSharePresets.hd_8,
67
- options_1.ScreenSharePresets.hd_15,
68
- options_1.ScreenSharePresets.fhd_15,
69
- options_1.ScreenSharePresets.fhd_30,
70
- ];
69
+ this.handleSubscribedQualityUpdate = (update) => {
70
+ var _a, _b;
71
+ if (!((_a = this.roomOptions) === null || _a === void 0 ? void 0 : _a.dynacast)) {
72
+ return;
73
+ }
74
+ const pub = this.videoTracks.get(update.trackSid);
75
+ if (!pub) {
76
+ logger_1.default.warn('handleSubscribedQualityUpdate', 'received subscribed quality update for unknown track', update.trackSid);
77
+ return;
78
+ }
79
+ (_b = pub.videoTrack) === null || _b === void 0 ? void 0 : _b.setPublishingLayers(update.subscribedQualities);
80
+ };
81
+ this.onTrackUnpublish = (track) => {
82
+ this.unpublishTrack(track);
83
+ };
71
84
  this.audioTracks = new Map();
72
85
  this.videoTracks = new Map();
73
86
  this.tracks = new Map();
74
87
  this.engine = engine;
75
- this.engine.on(events_1.EngineEvent.RemoteMuteChanged, (trackSid, muted) => {
88
+ this.roomOptions = options;
89
+ this.engine.client.onRemoteMuteChanged = (trackSid, muted) => {
76
90
  const pub = this.tracks.get(trackSid);
77
91
  if (!pub || !pub.track) {
78
92
  return;
@@ -83,7 +97,14 @@ class LocalParticipant extends Participant_1.default {
83
97
  else {
84
98
  pub.unmute();
85
99
  }
86
- });
100
+ };
101
+ this.engine.client.onSubscribedQualityUpdate = this.handleSubscribedQualityUpdate;
102
+ }
103
+ get lastCameraError() {
104
+ return this.cameraError;
105
+ }
106
+ get lastMicrophoneError() {
107
+ return this.microphoneError;
87
108
  }
88
109
  getTrack(source) {
89
110
  const track = super.getTrack(source);
@@ -141,13 +162,17 @@ class LocalParticipant extends Participant_1.default {
141
162
  try {
142
163
  switch (source) {
143
164
  case Track_1.Track.Source.Camera:
144
- localTrack = yield create_1.createLocalVideoTrack();
165
+ [localTrack] = yield this.createTracks({
166
+ video: true,
167
+ });
145
168
  break;
146
169
  case Track_1.Track.Source.Microphone:
147
- localTrack = yield create_1.createLocalAudioTrack();
170
+ [localTrack] = yield this.createTracks({
171
+ audio: true,
172
+ });
148
173
  break;
149
174
  case Track_1.Track.Source.ScreenShare:
150
- [localTrack] = yield create_1.createLocalScreenTracks({ audio: false });
175
+ [localTrack] = yield this.createScreenTracks({ audio: false });
151
176
  break;
152
177
  default:
153
178
  throw new errors_1.TrackInvalidError(source);
@@ -176,24 +201,145 @@ class LocalParticipant extends Participant_1.default {
176
201
  }
177
202
  });
178
203
  }
204
+ /**
205
+ * Publish both camera and microphone at the same time. This is useful for
206
+ * displaying a single Permission Dialog box to the end user.
207
+ */
208
+ enableCameraAndMicrophone() {
209
+ return __awaiter(this, void 0, void 0, function* () {
210
+ if (this.pendingPublishing.has(Track_1.Track.Source.Camera)
211
+ || this.pendingPublishing.has(Track_1.Track.Source.Microphone)) {
212
+ // no-op it's already been requested
213
+ return;
214
+ }
215
+ this.pendingPublishing.add(Track_1.Track.Source.Camera);
216
+ this.pendingPublishing.add(Track_1.Track.Source.Microphone);
217
+ try {
218
+ const tracks = yield this.createTracks({
219
+ audio: true,
220
+ video: true,
221
+ });
222
+ yield Promise.all(tracks.map((track) => this.publishTrack(track)));
223
+ }
224
+ finally {
225
+ this.pendingPublishing.delete(Track_1.Track.Source.Camera);
226
+ this.pendingPublishing.delete(Track_1.Track.Source.Microphone);
227
+ }
228
+ });
229
+ }
230
+ /**
231
+ * Create local camera and/or microphone tracks
232
+ * @param options
233
+ * @returns
234
+ */
235
+ createTracks(options) {
236
+ var _a, _b;
237
+ return __awaiter(this, void 0, void 0, function* () {
238
+ const opts = utils_1.mergeDefaultOptions(options, (_a = this.roomOptions) === null || _a === void 0 ? void 0 : _a.audioCaptureDefaults, (_b = this.roomOptions) === null || _b === void 0 ? void 0 : _b.videoCaptureDefaults);
239
+ const constraints = utils_1.constraintsForOptions(opts);
240
+ let stream;
241
+ try {
242
+ stream = yield navigator.mediaDevices.getUserMedia(constraints);
243
+ }
244
+ catch (err) {
245
+ if (err instanceof Error) {
246
+ if (constraints.audio) {
247
+ this.microphoneError = err;
248
+ }
249
+ if (constraints.video) {
250
+ this.cameraError = err;
251
+ }
252
+ }
253
+ throw err;
254
+ }
255
+ if (constraints.audio) {
256
+ this.microphoneError = undefined;
257
+ }
258
+ if (constraints.video) {
259
+ this.cameraError = undefined;
260
+ }
261
+ return stream.getTracks().map((mediaStreamTrack) => {
262
+ const isAudio = mediaStreamTrack.kind === 'audio';
263
+ let trackOptions = isAudio ? options.audio : options.video;
264
+ if (typeof trackOptions === 'boolean' || !trackOptions) {
265
+ trackOptions = {};
266
+ }
267
+ let trackConstraints;
268
+ const conOrBool = isAudio ? constraints.audio : constraints.video;
269
+ if (typeof conOrBool !== 'boolean') {
270
+ trackConstraints = conOrBool;
271
+ }
272
+ const track = publishUtils_1.mediaTrackToLocalTrack(mediaStreamTrack, trackConstraints);
273
+ if (track.kind === Track_1.Track.Kind.Video) {
274
+ track.source = Track_1.Track.Source.Camera;
275
+ }
276
+ else if (track.kind === Track_1.Track.Kind.Audio) {
277
+ track.source = Track_1.Track.Source.Microphone;
278
+ }
279
+ return track;
280
+ });
281
+ });
282
+ }
283
+ /**
284
+ * Creates a screen capture tracks with getDisplayMedia().
285
+ * A LocalVideoTrack is always created and returned.
286
+ * If { audio: true }, and the browser supports audio capture, a LocalAudioTrack is also created.
287
+ */
288
+ createScreenTracks(options) {
289
+ var _a;
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ if (options === undefined) {
292
+ options = {};
293
+ }
294
+ if (options.resolution === undefined) {
295
+ options.resolution = options_1.VideoPresets.fhd.resolution;
296
+ }
297
+ let videoConstraints = true;
298
+ if (options.resolution) {
299
+ videoConstraints = {
300
+ width: options.resolution.width,
301
+ height: options.resolution.height,
302
+ frameRate: options.resolution.frameRate,
303
+ };
304
+ }
305
+ // typescript definition is missing getDisplayMedia: https://github.com/microsoft/TypeScript/issues/33232
306
+ // @ts-ignore
307
+ const stream = yield navigator.mediaDevices.getDisplayMedia({
308
+ audio: (_a = options.audio) !== null && _a !== void 0 ? _a : false,
309
+ video: videoConstraints,
310
+ });
311
+ const tracks = stream.getVideoTracks();
312
+ if (tracks.length === 0) {
313
+ throw new errors_1.TrackInvalidError('no video track found');
314
+ }
315
+ const screenVideo = new LocalVideoTrack_1.default(tracks[0]);
316
+ screenVideo.source = Track_1.Track.Source.ScreenShare;
317
+ const localTracks = [screenVideo];
318
+ if (stream.getAudioTracks().length > 0) {
319
+ const screenAudio = new LocalAudioTrack_1.default(stream.getAudioTracks()[0]);
320
+ screenAudio.source = Track_1.Track.Source.ScreenShareAudio;
321
+ localTracks.push(screenAudio);
322
+ }
323
+ return localTracks;
324
+ });
325
+ }
179
326
  /**
180
327
  * Publish a new track to the room
181
328
  * @param track
182
329
  * @param options
183
330
  */
184
331
  publishTrack(track, options) {
185
- var _a, _b, _c, _d, _e;
332
+ var _a, _b, _c, _d, _e, _f, _g, _h;
186
333
  return __awaiter(this, void 0, void 0, function* () {
187
- const opts = {};
188
- Object.assign(opts, defaults_1.getTrackPublishDefaults(), options);
334
+ const opts = Object.assign(Object.assign({}, (_a = this.roomOptions) === null || _a === void 0 ? void 0 : _a.publishDefaults), options);
189
335
  // convert raw media track into audio or video track
190
336
  if (track instanceof MediaStreamTrack) {
191
337
  switch (track.kind) {
192
338
  case 'audio':
193
- track = new LocalAudioTrack_1.default(track, options === null || options === void 0 ? void 0 : options.name);
339
+ track = new LocalAudioTrack_1.default(track);
194
340
  break;
195
341
  case 'video':
196
- track = new LocalVideoTrack_1.default(track, options === null || options === void 0 ? void 0 : options.name);
342
+ track = new LocalVideoTrack_1.default(track);
197
343
  break;
198
344
  default:
199
345
  throw new errors_1.TrackInvalidError(`unsupported MediaStreamTrack kind ${track.kind}`);
@@ -214,44 +360,35 @@ class LocalParticipant extends Participant_1.default {
214
360
  if (opts.source) {
215
361
  track.source = opts.source;
216
362
  }
217
- if (opts.name) {
218
- track.name = opts.name;
219
- }
220
363
  if (opts.stopMicTrackOnMute && track instanceof LocalAudioTrack_1.default) {
221
364
  track.stopOnMute = true;
222
365
  }
223
366
  // handle track actions
224
367
  track.on(events_1.TrackEvent.Muted, this.onTrackMuted);
225
368
  track.on(events_1.TrackEvent.Unmuted, this.onTrackUnmuted);
226
- track.on(events_1.TrackEvent.Ended, () => {
227
- this.unpublishTrack(track);
228
- });
229
- // get local track id for use during publishing
230
- const cid = track.mediaStreamTrack.id;
369
+ track.on(events_1.TrackEvent.Ended, this.onTrackUnpublish);
231
370
  // create track publication from track
232
371
  const req = livekit_rtc_1.AddTrackRequest.fromPartial({
233
- cid,
234
- name: track.name,
372
+ // get local track id for use during publishing
373
+ cid: track.mediaStreamTrack.id,
374
+ name: options === null || options === void 0 ? void 0 : options.name,
235
375
  type: Track_1.Track.kindToProto(track.kind),
236
376
  muted: track.isMuted,
237
377
  source: Track_1.Track.sourceToProto(track.source),
238
- disableDtx: !((_a = opts === null || opts === void 0 ? void 0 : opts.dtx) !== null && _a !== void 0 ? _a : true),
378
+ disableDtx: !((_b = opts === null || opts === void 0 ? void 0 : opts.dtx) !== null && _b !== void 0 ? _b : true),
239
379
  });
240
- if (track.dimensions) {
241
- req.width = track.dimensions.width;
242
- req.height = track.dimensions.height;
243
- }
244
- const ti = yield this.engine.addTrack(req);
245
- const publication = new LocalTrackPublication_1.default(track.kind, ti, track);
246
- track.sid = ti.sid;
380
+ // compute encodings and layers for video
247
381
  let encodings;
248
- // for video
249
382
  if (track.kind === Track_1.Track.Kind.Video) {
250
383
  // TODO: support react native, which doesn't expose getSettings
251
384
  const settings = track.mediaStreamTrack.getSettings();
252
- const width = (_b = settings.width) !== null && _b !== void 0 ? _b : (_c = track.dimensions) === null || _c === void 0 ? void 0 : _c.width;
253
- const height = (_d = settings.height) !== null && _d !== void 0 ? _d : (_e = track.dimensions) === null || _e === void 0 ? void 0 : _e.height;
254
- encodings = this.computeVideoEncodings(track.source === Track_1.Track.Source.ScreenShare, width, height, opts);
385
+ const width = (_c = settings.width) !== null && _c !== void 0 ? _c : (_d = track.dimensions) === null || _d === void 0 ? void 0 : _d.width;
386
+ const height = (_e = settings.height) !== null && _e !== void 0 ? _e : (_f = track.dimensions) === null || _f === void 0 ? void 0 : _f.height;
387
+ // width and height should be defined for video
388
+ req.width = width !== null && width !== void 0 ? width : 0;
389
+ req.height = height !== null && height !== void 0 ? height : 0;
390
+ encodings = publishUtils_1.computeVideoEncodings(track.source === Track_1.Track.Source.ScreenShare, width, height, opts);
391
+ req.layers = LocalVideoTrack_1.videoLayersFromEncodings(req.width, req.height, encodings);
255
392
  }
256
393
  else if (track.kind === Track_1.Track.Kind.Audio && opts.audioBitrate) {
257
394
  encodings = [
@@ -260,6 +397,9 @@ class LocalParticipant extends Participant_1.default {
260
397
  },
261
398
  ];
262
399
  }
400
+ const ti = yield this.engine.addTrack(req);
401
+ const publication = new LocalTrackPublication_1.default(track.kind, ti, track);
402
+ track.sid = ti.sid;
263
403
  if (!this.engine.publisher) {
264
404
  throw new errors_1.UnexpectedConnectionState('publisher is closed');
265
405
  }
@@ -273,7 +413,11 @@ class LocalParticipant extends Participant_1.default {
273
413
  // store RTPSender
274
414
  track.sender = transceiver.sender;
275
415
  if (track instanceof LocalVideoTrack_1.default) {
276
- track.startMonitor(this.engine.client);
416
+ const disableLayerPause = (_h = (_g = this.roomOptions) === null || _g === void 0 ? void 0 : _g.expDisableLayerPause) !== null && _h !== void 0 ? _h : false;
417
+ track.startMonitor(this.engine.client, disableLayerPause);
418
+ }
419
+ else if (track instanceof LocalAudioTrack_1.default) {
420
+ track.startMonitor();
277
421
  }
278
422
  if (opts.videoCodec) {
279
423
  this.setPreferredCodec(transceiver, track.kind, opts.videoCodec);
@@ -285,25 +429,22 @@ class LocalParticipant extends Participant_1.default {
285
429
  });
286
430
  }
287
431
  unpublishTrack(track) {
432
+ var _a, _b;
288
433
  // look through all published tracks to find the right ones
289
434
  const publication = this.getPublicationForTrack(track);
290
435
  logger_1.default.debug('unpublishTrack', 'unpublishing track', track);
291
- if (!publication) {
436
+ if (!publication || !publication.track) {
292
437
  logger_1.default.warn('unpublishTrack', 'track was not unpublished because no publication was found', track);
293
438
  return null;
294
439
  }
295
- if (track instanceof LocalAudioTrack_1.default || track instanceof LocalVideoTrack_1.default) {
296
- track.removeListener(events_1.TrackEvent.Muted, this.onTrackMuted);
297
- track.removeListener(events_1.TrackEvent.Unmuted, this.onTrackUnmuted);
298
- }
299
- track.stop();
300
- let mediaStreamTrack;
301
- if (track instanceof MediaStreamTrack) {
302
- mediaStreamTrack = track;
303
- }
304
- else {
305
- mediaStreamTrack = track.mediaStreamTrack;
440
+ track = publication.track;
441
+ track.off(events_1.TrackEvent.Muted, this.onTrackMuted);
442
+ track.off(events_1.TrackEvent.Unmuted, this.onTrackUnmuted);
443
+ track.off(events_1.TrackEvent.Ended, this.onTrackUnpublish);
444
+ if ((_b = (_a = this.roomOptions) === null || _a === void 0 ? void 0 : _a.stopLocalTrackOnUnpublish) !== null && _b !== void 0 ? _b : true) {
445
+ track.stop();
306
446
  }
447
+ const { mediaStreamTrack } = track;
307
448
  if (this.engine.publisher) {
308
449
  const senders = this.engine.publisher.pc.getSenders();
309
450
  senders.forEach((sender) => {
@@ -331,6 +472,7 @@ class LocalParticipant extends Participant_1.default {
331
472
  default:
332
473
  break;
333
474
  }
475
+ publication.setTrack(undefined);
334
476
  this.emit(events_1.ParticipantEvent.LocalTrackUnpublished, publication);
335
477
  return publication;
336
478
  }
@@ -382,6 +524,26 @@ class LocalParticipant extends Participant_1.default {
382
524
  yield this.engine.sendDataPacket(packet, kind);
383
525
  });
384
526
  }
527
+ /**
528
+ * Control who can subscribe to LocalParticipant's published tracks.
529
+ *
530
+ * By default, all participants can subscribe. This allows fine-grained control over
531
+ * who is able to subscribe at a participant and track level.
532
+ *
533
+ * Note: if access is given at a track-level (i.e. both [allParticipantsAllowed] and
534
+ * [ParticipantTrackPermission.allTracksAllowed] are false), any newer published tracks
535
+ * will not grant permissions to any participants and will require a subsequent
536
+ * permissions update to allow subscription.
537
+ *
538
+ * @param allParticipantsAllowed Allows all participants to subscribe all tracks.
539
+ * Takes precedence over [[participantTrackPermissions]] if set to true.
540
+ * By default this is set to true.
541
+ * @param participantTrackPermissions Full list of individual permissions per
542
+ * participant/track. Any omitted participants will not receive any permissions.
543
+ */
544
+ setTrackSubscriptionPermissions(allParticipantsAllowed, participantTrackPermissions = []) {
545
+ this.engine.client.sendUpdateSubscriptionPermissions(allParticipantsAllowed, participantTrackPermissions.map((p) => ParticipantTrackPermission_1.trackPermissionToProto(p)));
546
+ }
385
547
  getPublicationForTrack(track) {
386
548
  let publication;
387
549
  this.tracks.forEach((pub) => {
@@ -426,105 +588,18 @@ class LocalParticipant extends Participant_1.default {
426
588
  transceiver.setCodecPreferences([selected]);
427
589
  }
428
590
  }
429
- computeVideoEncodings(isScreenShare, width, height, options) {
430
- let encodings;
431
- let videoEncoding = options === null || options === void 0 ? void 0 : options.videoEncoding;
432
- if (isScreenShare) {
433
- videoEncoding = options === null || options === void 0 ? void 0 : options.screenShareEncoding;
434
- }
435
- const useSimulcast = !isScreenShare && (options === null || options === void 0 ? void 0 : options.simulcast);
436
- if ((!videoEncoding && !useSimulcast) || !width || !height) {
437
- // don't set encoding when we are not simulcasting and user isn't restricting
438
- // encoding parameters
439
- return undefined;
440
- }
441
- if (!videoEncoding) {
442
- // find the right encoding based on width/height
443
- videoEncoding = this.determineAppropriateEncoding(isScreenShare, width, height);
444
- logger_1.default.debug('using video encoding', videoEncoding);
445
- }
446
- if (useSimulcast) {
447
- const presets = this.presetsForResolution(isScreenShare, width, height);
448
- const midPreset = presets[1];
449
- const lowPreset = presets[0];
450
- // if resolution is high enough, we would send [q, h, f] res..
451
- // otherwise only send [q, h]
452
- // NOTE:
453
- // 1. Ordering of these encodings is important. Chrome seems
454
- // to use the index into encodings to decide which layer
455
- // to disable when constrained (bandwidth or CPU). So,
456
- // encodings should be ordered in increasing spatial
457
- // resolution order.
458
- // 2. ion-sfu translates rids into layers. So, all encodings
459
- // should have the base layer `q` and then more added
460
- // based on other conditions.
461
- if (width >= 960) {
462
- encodings = [
463
- {
464
- rid: 'q',
465
- scaleResolutionDownBy: height / lowPreset.height,
466
- maxBitrate: lowPreset.encoding.maxBitrate,
467
- /* @ts-ignore */
468
- maxFramerate: lowPreset.encoding.maxFramerate,
469
- },
470
- {
471
- rid: 'h',
472
- scaleResolutionDownBy: height / midPreset.height,
473
- maxBitrate: midPreset.encoding.maxBitrate,
474
- /* @ts-ignore */
475
- maxFramerate: midPreset.encoding.maxFramerate,
476
- },
477
- {
478
- rid: 'f',
479
- maxBitrate: videoEncoding.maxBitrate,
480
- /* @ts-ignore */
481
- maxFramerate: videoEncoding.maxFramerate,
482
- },
483
- ];
484
- }
485
- else {
486
- encodings = [
487
- {
488
- rid: 'q',
489
- scaleResolutionDownBy: height / lowPreset.height,
490
- maxBitrate: lowPreset.encoding.maxBitrate,
491
- /* @ts-ignore */
492
- maxFramerate: lowPreset.encoding.maxFramerate,
493
- },
494
- {
495
- rid: 'h',
496
- maxBitrate: videoEncoding.maxBitrate,
497
- /* @ts-ignore */
498
- maxFramerate: videoEncoding.maxFramerate,
499
- },
500
- ];
501
- }
502
- }
503
- else {
504
- encodings = [videoEncoding];
505
- }
506
- return encodings;
507
- }
508
- determineAppropriateEncoding(isScreenShare, width, height) {
509
- const presets = this.presetsForResolution(isScreenShare, width, height);
510
- let { encoding } = presets[0];
511
- for (let i = 0; i < presets.length; i += 1) {
512
- const preset = presets[i];
513
- if (width >= preset.width && height >= preset.height) {
514
- encoding = preset.encoding;
591
+ /** @internal */
592
+ publishedTracksInfo() {
593
+ const infos = [];
594
+ this.tracks.forEach((track) => {
595
+ if (track.track !== undefined) {
596
+ infos.push({
597
+ cid: track.track.mediaStreamTrack.id,
598
+ track: track.trackInfo,
599
+ });
515
600
  }
516
- }
517
- return encoding;
518
- }
519
- presetsForResolution(isScreenShare, width, height) {
520
- if (isScreenShare) {
521
- return this.presetsScreenShare;
522
- }
523
- const aspect = width / height;
524
- if (Math.abs(aspect - 16.0 / 9) < Math.abs(aspect - 4.0 / 3)) {
525
- return this.presets169;
526
- }
527
- return this.presets43;
601
+ });
602
+ return infos;
528
603
  }
529
604
  }
530
605
  exports.default = LocalParticipant;
@@ -1 +1 @@
1
- {"version":3,"file":"LocalParticipant.js","sourceRoot":"","sources":["../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LocalParticipant.js","sourceRoot":"","sources":["../../../src/room/participant/LocalParticipant.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { EventEmitter } from 'events';
3
3
  import { ConnectionQuality as ProtoQuality, ParticipantInfo } from '../../proto/livekit_models';
4
4
  import { Track } from '../track/Track';
5
- import TrackPublication from '../track/TrackPublication';
5
+ import { TrackPublication } from '../track/TrackPublication';
6
6
  export declare enum ConnectionQuality {
7
7
  Excellent = "excellent",
8
8
  Good = "good",
@@ -23,6 +23,8 @@ export default class Participant extends EventEmitter {
23
23
  sid: string;
24
24
  /** client assigned identity, encoded in JWT token */
25
25
  identity: string;
26
+ /** client assigned display name, encoded in JWT token */
27
+ name?: string;
26
28
  /** client metadata, opaque to livekit */
27
29
  metadata?: string;
28
30
  lastSpokeAt?: Date | undefined;
@@ -112,6 +112,7 @@ class Participant extends events_1.EventEmitter {
112
112
  updateInfo(info) {
113
113
  this.identity = info.identity;
114
114
  this.sid = info.sid;
115
+ this.name = info.name;
115
116
  this.setMetadata(info.metadata);
116
117
  // set this last so setMetadata can detect changes
117
118
  this.participantInfo = info;
@@ -122,7 +123,8 @@ class Participant extends events_1.EventEmitter {
122
123
  const prevMetadata = this.metadata;
123
124
  this.metadata = md;
124
125
  if (changed) {
125
- this.emit(events_2.ParticipantEvent.MetadataChanged, prevMetadata);
126
+ this.emit(events_2.ParticipantEvent.MetadataChanged, prevMetadata, this);
127
+ this.emit(events_2.ParticipantEvent.ParticipantMetadataChanged, prevMetadata, this);
126
128
  }
127
129
  }
128
130
  /** @internal */