livekit-client 1.15.9 → 1.15.11

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.
@@ -10614,7 +10614,7 @@ function getMatch(exp, ua) {
10614
10614
  return match && match.length >= id && match[id] || '';
10615
10615
  }
10616
10616
 
10617
- var version$1 = "1.15.9";
10617
+ var version$1 = "1.15.11";
10618
10618
 
10619
10619
  const version = version$1;
10620
10620
  const protocolVersion = 11;
@@ -14938,7 +14938,7 @@ class SignalClient {
14938
14938
  abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.addEventListener('abort', abortHandler);
14939
14939
  this.log.debug("connecting to ".concat(url + params), this.logContext);
14940
14940
  if (this.ws) {
14941
- yield this.close();
14941
+ yield this.close(false);
14942
14942
  }
14943
14943
  this.ws = new WebSocket(url + params);
14944
14944
  this.ws.binaryType = 'arraybuffer';
@@ -15005,7 +15005,7 @@ class SignalClient {
15005
15005
  shouldProcessMessage = true;
15006
15006
  }
15007
15007
  } else if (this.isEstablishingConnection && resp.message.case === 'leave') {
15008
- reject(new ConnectionError('Received leave request while trying to (re)connect'));
15008
+ reject(new ConnectionError('Received leave request while trying to (re)connect', 4 /* ConnectionErrorReason.LeaveRequest */));
15009
15009
  } else if (!opts.reconnect) {
15010
15010
  // non-reconnect case, should receive join response first
15011
15011
  reject(new ConnectionError("did not receive join response, got ".concat((_d = resp.message) === null || _d === void 0 ? void 0 : _d.case, " instead")));
@@ -15035,10 +15035,13 @@ class SignalClient {
15035
15035
  }));
15036
15036
  }
15037
15037
  close() {
15038
+ let updateState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
15038
15039
  return __awaiter(this, void 0, void 0, function* () {
15039
15040
  const unlock = yield this.closingLock.lock();
15040
15041
  try {
15041
- this.state = SignalConnectionState.DISCONNECTING;
15042
+ if (updateState) {
15043
+ this.state = SignalConnectionState.DISCONNECTING;
15044
+ }
15042
15045
  if (this.ws) {
15043
15046
  this.ws.onmessage = null;
15044
15047
  this.ws.onopen = null;
@@ -15061,7 +15064,9 @@ class SignalClient {
15061
15064
  this.ws = undefined;
15062
15065
  }
15063
15066
  } finally {
15064
- this.state = SignalConnectionState.DISCONNECTED;
15067
+ if (updateState) {
15068
+ this.state = SignalConnectionState.DISCONNECTED;
15069
+ }
15065
15070
  this.clearPingInterval();
15066
15071
  unlock();
15067
15072
  }
@@ -17781,6 +17786,9 @@ class RTCEngine extends eventsExports.EventEmitter {
17781
17786
  if (error instanceof ConnectionError && error.reason === 0 /* ConnectionErrorReason.NotAllowed */) {
17782
17787
  throw new UnexpectedConnectionState('could not reconnect, token might be expired');
17783
17788
  }
17789
+ if (error instanceof ConnectionError && error.reason === 4 /* ConnectionErrorReason.LeaveRequest */) {
17790
+ throw error;
17791
+ }
17784
17792
  throw new SignalReconnectError(message);
17785
17793
  }
17786
17794
  this.emit(EngineEvent.SignalResumed);
@@ -21758,6 +21766,7 @@ class Room extends eventsExports.EventEmitter {
21758
21766
  this.audioEnabled = true;
21759
21767
  this.isVideoPlaybackBlocked = false;
21760
21768
  this.log = livekitLogger;
21769
+ this.bufferedEvents = [];
21761
21770
  this.connect = (url, token, opts) => __awaiter(this, void 0, void 0, function* () {
21762
21771
  var _c;
21763
21772
  // In case a disconnect called happened right before the connect call, make sure the disconnect is completed first by awaiting its lock
@@ -22034,10 +22043,15 @@ class Room extends eventsExports.EventEmitter {
22034
22043
  }
22035
22044
  // set the srcObject to null on page hide in order to prevent lock screen controls to show up for it
22036
22045
  dummyAudioEl.srcObject = document.hidden ? null : stream;
22046
+ if (!document.hidden) {
22047
+ this.log.debug('page visible again, triggering startAudio to resume playback and update playback status', this.logContext);
22048
+ this.startAudio();
22049
+ }
22037
22050
  });
22038
22051
  document.body.append(dummyAudioEl);
22039
22052
  this.once(RoomEvent.Disconnected, () => {
22040
22053
  dummyAudioEl === null || dummyAudioEl === void 0 ? void 0 : dummyAudioEl.remove();
22054
+ dummyAudioEl = null;
22041
22055
  });
22042
22056
  }
22043
22057
  elements.push(dummyAudioEl);
@@ -22098,7 +22112,7 @@ class Room extends eventsExports.EventEmitter {
22098
22112
  this.log.debug("signal reconnected to server, region ".concat(joinResponse.serverRegion), Object.assign(Object.assign({}, this.logContext), {
22099
22113
  region: joinResponse.serverRegion
22100
22114
  }));
22101
- this.cachedParticipantSids = [];
22115
+ this.bufferedEvents = [];
22102
22116
  this.applyJoinResponse(joinResponse);
22103
22117
  try {
22104
22118
  // unpublish & republish tracks
@@ -22120,10 +22134,7 @@ class Room extends eventsExports.EventEmitter {
22120
22134
  this.setAndEmitConnectionState(ConnectionState.Connected);
22121
22135
  this.emit(RoomEvent.Reconnected);
22122
22136
  this.registerConnectionReconcile();
22123
- // emit participant connected events after connection has been re-established
22124
- this.participants.forEach(participant => {
22125
- this.emit(RoomEvent.ParticipantConnected, participant);
22126
- });
22137
+ this.emitBufferedEvents();
22127
22138
  });
22128
22139
  this.handleParticipantUpdates = participantInfos => {
22129
22140
  // handle changes to participant state, and send events
@@ -22352,7 +22363,6 @@ class Room extends eventsExports.EventEmitter {
22352
22363
  };
22353
22364
  this.setMaxListeners(100);
22354
22365
  this.participants = new Map();
22355
- this.cachedParticipantSids = [];
22356
22366
  this.identityToSid = new Map();
22357
22367
  this.options = Object.assign(Object.assign({}, roomOptionDefaults), options);
22358
22368
  this.log = getLogger((_a = this.options.loggerName) !== null && _a !== void 0 ? _a : LoggerNames.Room);
@@ -22455,17 +22465,14 @@ class Room extends eventsExports.EventEmitter {
22455
22465
  if (this.setAndEmitConnectionState(ConnectionState.Reconnecting)) {
22456
22466
  this.emit(RoomEvent.Reconnecting);
22457
22467
  }
22458
- this.cachedParticipantSids = Array.from(this.participants.keys());
22459
22468
  }).on(EngineEvent.Resumed, () => {
22460
22469
  this.setAndEmitConnectionState(ConnectionState.Connected);
22461
22470
  this.emit(RoomEvent.Reconnected);
22462
22471
  this.registerConnectionReconcile();
22463
22472
  this.updateSubscriptions();
22464
- // once reconnected, figure out if any participants connected during reconnect and emit events for it
22465
- const diffParticipants = Array.from(this.participants.values()).filter(p => !this.cachedParticipantSids.includes(p.sid));
22466
- diffParticipants.forEach(p => this.emit(RoomEvent.ParticipantConnected, p));
22467
- this.cachedParticipantSids = [];
22473
+ this.emitBufferedEvents();
22468
22474
  }).on(EngineEvent.SignalResumed, () => {
22475
+ this.bufferedEvents = [];
22469
22476
  if (this.state === ConnectionState.Reconnecting) {
22470
22477
  this.sendSyncState();
22471
22478
  }
@@ -22774,6 +22781,7 @@ class Room extends eventsExports.EventEmitter {
22774
22781
  // clear out existing remote participants, since they may have attached
22775
22782
  // the old engine
22776
22783
  this.participants.clear();
22784
+ this.bufferedEvents = [];
22777
22785
  this.maybeCreateEngine();
22778
22786
  }
22779
22787
  onTrackAdded(mediaTrack, stream, receiver) {
@@ -22832,6 +22840,7 @@ class Room extends eventsExports.EventEmitter {
22832
22840
  let reason = arguments.length > 1 ? arguments[1] : undefined;
22833
22841
  var _a;
22834
22842
  this.clearConnectionReconcile();
22843
+ this.bufferedEvents = [];
22835
22844
  if (this.state === ConnectionState.Disconnected) {
22836
22845
  return;
22837
22846
  }
@@ -23056,12 +23065,22 @@ class Room extends eventsExports.EventEmitter {
23056
23065
  this.emit(RoomEvent.ConnectionStateChanged, this.state);
23057
23066
  return true;
23058
23067
  }
23068
+ emitBufferedEvents() {
23069
+ this.bufferedEvents.forEach(_ref2 => {
23070
+ let [ev, args] = _ref2;
23071
+ this.emit(ev, ...args);
23072
+ });
23073
+ this.bufferedEvents = [];
23074
+ }
23059
23075
  emitWhenConnected(event) {
23076
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23077
+ args[_key - 1] = arguments[_key];
23078
+ }
23060
23079
  if (this.state === ConnectionState.Connected) {
23061
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
23062
- args[_key - 1] = arguments[_key];
23063
- }
23064
23080
  return this.emit(event, ...args);
23081
+ } else if (this.state === ConnectionState.Reconnecting) {
23082
+ // in case the room is reconnecting, buffer the events by firing them later after emitting RoomEvent.Reconnected
23083
+ this.bufferedEvents.push([event, args]);
23065
23084
  }
23066
23085
  return false;
23067
23086
  }