livekit-client 1.6.4 → 1.6.5

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.
@@ -4288,6 +4288,15 @@ function disconnectReasonToJSON(object) {
4288
4288
  return "UNRECOGNIZED";
4289
4289
  }
4290
4290
  }
4291
+ var ReconnectReason;
4292
+ (function (ReconnectReason) {
4293
+ ReconnectReason[ReconnectReason["REASON_UNKOWN"] = 0] = "REASON_UNKOWN";
4294
+ ReconnectReason[ReconnectReason["REASON_SIGNAL_DISCONNECTED"] = 1] = "REASON_SIGNAL_DISCONNECTED";
4295
+ ReconnectReason[ReconnectReason["REASON_PUBLISHER_FAILED"] = 2] = "REASON_PUBLISHER_FAILED";
4296
+ ReconnectReason[ReconnectReason["REASON_SUBSCRIBER_FAILED"] = 3] = "REASON_SUBSCRIBER_FAILED";
4297
+ ReconnectReason[ReconnectReason["REASON_SWITCH_CANDIDATE"] = 4] = "REASON_SWITCH_CANDIDATE";
4298
+ ReconnectReason[ReconnectReason["UNRECOGNIZED"] = -1] = "UNRECOGNIZED";
4299
+ })(ReconnectReason || (ReconnectReason = {}));
4291
4300
  var ParticipantInfo_State;
4292
4301
  (function (ParticipantInfo_State) {
4293
4302
  /** JOINING - websocket' connected, but not offered yet */
@@ -9417,7 +9426,7 @@ function createBaseSignalRequest() {
9417
9426
  const SignalRequest = {
9418
9427
  encode(message) {
9419
9428
  let writer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _m0.Writer.create();
9420
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
9429
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
9421
9430
  if (((_a = message.message) === null || _a === void 0 ? void 0 : _a.$case) === "offer") {
9422
9431
  SessionDescription.encode(message.message.offer, writer.uint32(10).fork()).ldelim();
9423
9432
  }
@@ -9460,6 +9469,9 @@ const SignalRequest = {
9460
9469
  if (((_p = message.message) === null || _p === void 0 ? void 0 : _p.$case) === "updateMetadata") {
9461
9470
  UpdateParticipantMetadata.encode(message.message.updateMetadata, writer.uint32(122).fork()).ldelim();
9462
9471
  }
9472
+ if (((_q = message.message) === null || _q === void 0 ? void 0 : _q.$case) === "pingReq") {
9473
+ Ping.encode(message.message.pingReq, writer.uint32(130).fork()).ldelim();
9474
+ }
9463
9475
  return writer;
9464
9476
  },
9465
9477
  decode(input, length) {
@@ -9553,6 +9565,12 @@ const SignalRequest = {
9553
9565
  updateMetadata: UpdateParticipantMetadata.decode(reader, reader.uint32())
9554
9566
  };
9555
9567
  break;
9568
+ case 16:
9569
+ message.message = {
9570
+ $case: "pingReq",
9571
+ pingReq: Ping.decode(reader, reader.uint32())
9572
+ };
9573
+ break;
9556
9574
  default:
9557
9575
  reader.skipType(tag & 7);
9558
9576
  break;
@@ -9604,11 +9622,14 @@ const SignalRequest = {
9604
9622
  } : isSet(object.updateMetadata) ? {
9605
9623
  $case: "updateMetadata",
9606
9624
  updateMetadata: UpdateParticipantMetadata.fromJSON(object.updateMetadata)
9625
+ } : isSet(object.pingReq) ? {
9626
+ $case: "pingReq",
9627
+ pingReq: Ping.fromJSON(object.pingReq)
9607
9628
  } : undefined
9608
9629
  };
9609
9630
  },
9610
9631
  toJSON(message) {
9611
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16;
9632
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19;
9612
9633
  const obj = {};
9613
9634
  ((_a = message.message) === null || _a === void 0 ? void 0 : _a.$case) === "offer" && (obj.offer = ((_b = message.message) === null || _b === void 0 ? void 0 : _b.offer) ? SessionDescription.toJSON((_c = message.message) === null || _c === void 0 ? void 0 : _c.offer) : undefined);
9614
9635
  ((_d = message.message) === null || _d === void 0 ? void 0 : _d.$case) === "answer" && (obj.answer = ((_e = message.message) === null || _e === void 0 ? void 0 : _e.answer) ? SessionDescription.toJSON((_f = message.message) === null || _f === void 0 ? void 0 : _f.answer) : undefined);
@@ -9624,10 +9645,11 @@ const SignalRequest = {
9624
9645
  ((_9 = message.message) === null || _9 === void 0 ? void 0 : _9.$case) === "simulate" && (obj.simulate = ((_10 = message.message) === null || _10 === void 0 ? void 0 : _10.simulate) ? SimulateScenario.toJSON((_11 = message.message) === null || _11 === void 0 ? void 0 : _11.simulate) : undefined);
9625
9646
  ((_12 = message.message) === null || _12 === void 0 ? void 0 : _12.$case) === "ping" && (obj.ping = Math.round((_13 = message.message) === null || _13 === void 0 ? void 0 : _13.ping));
9626
9647
  ((_14 = message.message) === null || _14 === void 0 ? void 0 : _14.$case) === "updateMetadata" && (obj.updateMetadata = ((_15 = message.message) === null || _15 === void 0 ? void 0 : _15.updateMetadata) ? UpdateParticipantMetadata.toJSON((_16 = message.message) === null || _16 === void 0 ? void 0 : _16.updateMetadata) : undefined);
9648
+ ((_17 = message.message) === null || _17 === void 0 ? void 0 : _17.$case) === "pingReq" && (obj.pingReq = ((_18 = message.message) === null || _18 === void 0 ? void 0 : _18.pingReq) ? Ping.toJSON((_19 = message.message) === null || _19 === void 0 ? void 0 : _19.pingReq) : undefined);
9627
9649
  return obj;
9628
9650
  },
9629
9651
  fromPartial(object) {
9630
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17;
9652
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20;
9631
9653
  const message = createBaseSignalRequest();
9632
9654
  if (((_a = object.message) === null || _a === void 0 ? void 0 : _a.$case) === "offer" && ((_b = object.message) === null || _b === void 0 ? void 0 : _b.offer) !== undefined && ((_c = object.message) === null || _c === void 0 ? void 0 : _c.offer) !== null) {
9633
9655
  message.message = {
@@ -9713,6 +9735,12 @@ const SignalRequest = {
9713
9735
  updateMetadata: UpdateParticipantMetadata.fromPartial(object.message.updateMetadata)
9714
9736
  };
9715
9737
  }
9738
+ if (((_18 = object.message) === null || _18 === void 0 ? void 0 : _18.$case) === "pingReq" && ((_19 = object.message) === null || _19 === void 0 ? void 0 : _19.pingReq) !== undefined && ((_20 = object.message) === null || _20 === void 0 ? void 0 : _20.pingReq) !== null) {
9739
+ message.message = {
9740
+ $case: "pingReq",
9741
+ pingReq: Ping.fromPartial(object.message.pingReq)
9742
+ };
9743
+ }
9716
9744
  return message;
9717
9745
  }
9718
9746
  };
@@ -9724,7 +9752,7 @@ function createBaseSignalResponse() {
9724
9752
  const SignalResponse = {
9725
9753
  encode(message) {
9726
9754
  let writer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _m0.Writer.create();
9727
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
9755
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u;
9728
9756
  if (((_a = message.message) === null || _a === void 0 ? void 0 : _a.$case) === "join") {
9729
9757
  JoinResponse.encode(message.message.join, writer.uint32(10).fork()).ldelim();
9730
9758
  }
@@ -9779,6 +9807,9 @@ const SignalResponse = {
9779
9807
  if (((_t = message.message) === null || _t === void 0 ? void 0 : _t.$case) === "reconnect") {
9780
9808
  ReconnectResponse.encode(message.message.reconnect, writer.uint32(154).fork()).ldelim();
9781
9809
  }
9810
+ if (((_u = message.message) === null || _u === void 0 ? void 0 : _u.$case) === "pongResp") {
9811
+ Pong.encode(message.message.pongResp, writer.uint32(162).fork()).ldelim();
9812
+ }
9782
9813
  return writer;
9783
9814
  },
9784
9815
  decode(input, length) {
@@ -9896,6 +9927,12 @@ const SignalResponse = {
9896
9927
  reconnect: ReconnectResponse.decode(reader, reader.uint32())
9897
9928
  };
9898
9929
  break;
9930
+ case 20:
9931
+ message.message = {
9932
+ $case: "pongResp",
9933
+ pongResp: Pong.decode(reader, reader.uint32())
9934
+ };
9935
+ break;
9899
9936
  default:
9900
9937
  reader.skipType(tag & 7);
9901
9938
  break;
@@ -9959,11 +9996,14 @@ const SignalResponse = {
9959
9996
  } : isSet(object.reconnect) ? {
9960
9997
  $case: "reconnect",
9961
9998
  reconnect: ReconnectResponse.fromJSON(object.reconnect)
9999
+ } : isSet(object.pongResp) ? {
10000
+ $case: "pongResp",
10001
+ pongResp: Pong.fromJSON(object.pongResp)
9962
10002
  } : undefined
9963
10003
  };
9964
10004
  },
9965
10005
  toJSON(message) {
9966
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27;
10006
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30;
9967
10007
  const obj = {};
9968
10008
  ((_a = message.message) === null || _a === void 0 ? void 0 : _a.$case) === "join" && (obj.join = ((_b = message.message) === null || _b === void 0 ? void 0 : _b.join) ? JoinResponse.toJSON((_c = message.message) === null || _c === void 0 ? void 0 : _c.join) : undefined);
9969
10009
  ((_d = message.message) === null || _d === void 0 ? void 0 : _d.$case) === "answer" && (obj.answer = ((_e = message.message) === null || _e === void 0 ? void 0 : _e.answer) ? SessionDescription.toJSON((_f = message.message) === null || _f === void 0 ? void 0 : _f.answer) : undefined);
@@ -9983,10 +10023,11 @@ const SignalResponse = {
9983
10023
  ((_20 = message.message) === null || _20 === void 0 ? void 0 : _20.$case) === "trackUnpublished" && (obj.trackUnpublished = ((_21 = message.message) === null || _21 === void 0 ? void 0 : _21.trackUnpublished) ? TrackUnpublishedResponse.toJSON((_22 = message.message) === null || _22 === void 0 ? void 0 : _22.trackUnpublished) : undefined);
9984
10024
  ((_23 = message.message) === null || _23 === void 0 ? void 0 : _23.$case) === "pong" && (obj.pong = Math.round((_24 = message.message) === null || _24 === void 0 ? void 0 : _24.pong));
9985
10025
  ((_25 = message.message) === null || _25 === void 0 ? void 0 : _25.$case) === "reconnect" && (obj.reconnect = ((_26 = message.message) === null || _26 === void 0 ? void 0 : _26.reconnect) ? ReconnectResponse.toJSON((_27 = message.message) === null || _27 === void 0 ? void 0 : _27.reconnect) : undefined);
10026
+ ((_28 = message.message) === null || _28 === void 0 ? void 0 : _28.$case) === "pongResp" && (obj.pongResp = ((_29 = message.message) === null || _29 === void 0 ? void 0 : _29.pongResp) ? Pong.toJSON((_30 = message.message) === null || _30 === void 0 ? void 0 : _30.pongResp) : undefined);
9986
10027
  return obj;
9987
10028
  },
9988
10029
  fromPartial(object) {
9989
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29;
10030
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
9990
10031
  const message = createBaseSignalResponse();
9991
10032
  if (((_a = object.message) === null || _a === void 0 ? void 0 : _a.$case) === "join" && ((_b = object.message) === null || _b === void 0 ? void 0 : _b.join) !== undefined && ((_c = object.message) === null || _c === void 0 ? void 0 : _c.join) !== null) {
9992
10033
  message.message = {
@@ -10096,6 +10137,12 @@ const SignalResponse = {
10096
10137
  reconnect: ReconnectResponse.fromPartial(object.message.reconnect)
10097
10138
  };
10098
10139
  }
10140
+ if (((_30 = object.message) === null || _30 === void 0 ? void 0 : _30.$case) === "pongResp" && ((_31 = object.message) === null || _31 === void 0 ? void 0 : _31.pongResp) !== undefined && ((_32 = object.message) === null || _32 === void 0 ? void 0 : _32.pongResp) !== null) {
10141
+ message.message = {
10142
+ $case: "pongResp",
10143
+ pongResp: Pong.fromPartial(object.message.pongResp)
10144
+ };
10145
+ }
10099
10146
  return message;
10100
10147
  }
10101
10148
  };
@@ -10633,7 +10680,10 @@ const JoinResponse = {
10633
10680
  function createBaseReconnectResponse() {
10634
10681
  return {
10635
10682
  iceServers: [],
10636
- clientConfiguration: undefined
10683
+ clientConfiguration: undefined,
10684
+ room: undefined,
10685
+ participant: undefined,
10686
+ otherParticipants: []
10637
10687
  };
10638
10688
  }
10639
10689
  const ReconnectResponse = {
@@ -10645,6 +10695,15 @@ const ReconnectResponse = {
10645
10695
  if (message.clientConfiguration !== undefined) {
10646
10696
  ClientConfiguration.encode(message.clientConfiguration, writer.uint32(18).fork()).ldelim();
10647
10697
  }
10698
+ if (message.room !== undefined) {
10699
+ Room$1.encode(message.room, writer.uint32(26).fork()).ldelim();
10700
+ }
10701
+ if (message.participant !== undefined) {
10702
+ ParticipantInfo.encode(message.participant, writer.uint32(34).fork()).ldelim();
10703
+ }
10704
+ for (const v of message.otherParticipants) {
10705
+ ParticipantInfo.encode(v, writer.uint32(42).fork()).ldelim();
10706
+ }
10648
10707
  return writer;
10649
10708
  },
10650
10709
  decode(input, length) {
@@ -10660,6 +10719,15 @@ const ReconnectResponse = {
10660
10719
  case 2:
10661
10720
  message.clientConfiguration = ClientConfiguration.decode(reader, reader.uint32());
10662
10721
  break;
10722
+ case 3:
10723
+ message.room = Room$1.decode(reader, reader.uint32());
10724
+ break;
10725
+ case 4:
10726
+ message.participant = ParticipantInfo.decode(reader, reader.uint32());
10727
+ break;
10728
+ case 5:
10729
+ message.otherParticipants.push(ParticipantInfo.decode(reader, reader.uint32()));
10730
+ break;
10663
10731
  default:
10664
10732
  reader.skipType(tag & 7);
10665
10733
  break;
@@ -10670,7 +10738,10 @@ const ReconnectResponse = {
10670
10738
  fromJSON(object) {
10671
10739
  return {
10672
10740
  iceServers: Array.isArray(object === null || object === void 0 ? void 0 : object.iceServers) ? object.iceServers.map(e => ICEServer.fromJSON(e)) : [],
10673
- clientConfiguration: isSet(object.clientConfiguration) ? ClientConfiguration.fromJSON(object.clientConfiguration) : undefined
10741
+ clientConfiguration: isSet(object.clientConfiguration) ? ClientConfiguration.fromJSON(object.clientConfiguration) : undefined,
10742
+ room: isSet(object.room) ? Room$1.fromJSON(object.room) : undefined,
10743
+ participant: isSet(object.participant) ? ParticipantInfo.fromJSON(object.participant) : undefined,
10744
+ otherParticipants: Array.isArray(object === null || object === void 0 ? void 0 : object.otherParticipants) ? object.otherParticipants.map(e => ParticipantInfo.fromJSON(e)) : []
10674
10745
  };
10675
10746
  },
10676
10747
  toJSON(message) {
@@ -10681,13 +10752,23 @@ const ReconnectResponse = {
10681
10752
  obj.iceServers = [];
10682
10753
  }
10683
10754
  message.clientConfiguration !== undefined && (obj.clientConfiguration = message.clientConfiguration ? ClientConfiguration.toJSON(message.clientConfiguration) : undefined);
10755
+ message.room !== undefined && (obj.room = message.room ? Room$1.toJSON(message.room) : undefined);
10756
+ message.participant !== undefined && (obj.participant = message.participant ? ParticipantInfo.toJSON(message.participant) : undefined);
10757
+ if (message.otherParticipants) {
10758
+ obj.otherParticipants = message.otherParticipants.map(e => e ? ParticipantInfo.toJSON(e) : undefined);
10759
+ } else {
10760
+ obj.otherParticipants = [];
10761
+ }
10684
10762
  return obj;
10685
10763
  },
10686
10764
  fromPartial(object) {
10687
- var _a;
10765
+ var _a, _b;
10688
10766
  const message = createBaseReconnectResponse();
10689
10767
  message.iceServers = ((_a = object.iceServers) === null || _a === void 0 ? void 0 : _a.map(e => ICEServer.fromPartial(e))) || [];
10690
10768
  message.clientConfiguration = object.clientConfiguration !== undefined && object.clientConfiguration !== null ? ClientConfiguration.fromPartial(object.clientConfiguration) : undefined;
10769
+ message.room = object.room !== undefined && object.room !== null ? Room$1.fromPartial(object.room) : undefined;
10770
+ message.participant = object.participant !== undefined && object.participant !== null ? ParticipantInfo.fromPartial(object.participant) : undefined;
10771
+ message.otherParticipants = ((_b = object.otherParticipants) === null || _b === void 0 ? void 0 : _b.map(e => ParticipantInfo.fromPartial(e))) || [];
10691
10772
  return message;
10692
10773
  }
10693
10774
  };
@@ -12358,6 +12439,120 @@ const SimulateScenario = {
12358
12439
  return message;
12359
12440
  }
12360
12441
  };
12442
+ function createBasePing() {
12443
+ return {
12444
+ timestamp: 0,
12445
+ rtt: 0
12446
+ };
12447
+ }
12448
+ const Ping = {
12449
+ encode(message) {
12450
+ let writer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _m0.Writer.create();
12451
+ if (message.timestamp !== 0) {
12452
+ writer.uint32(8).int64(message.timestamp);
12453
+ }
12454
+ if (message.rtt !== 0) {
12455
+ writer.uint32(16).int64(message.rtt);
12456
+ }
12457
+ return writer;
12458
+ },
12459
+ decode(input, length) {
12460
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
12461
+ let end = length === undefined ? reader.len : reader.pos + length;
12462
+ const message = createBasePing();
12463
+ while (reader.pos < end) {
12464
+ const tag = reader.uint32();
12465
+ switch (tag >>> 3) {
12466
+ case 1:
12467
+ message.timestamp = longToNumber(reader.int64());
12468
+ break;
12469
+ case 2:
12470
+ message.rtt = longToNumber(reader.int64());
12471
+ break;
12472
+ default:
12473
+ reader.skipType(tag & 7);
12474
+ break;
12475
+ }
12476
+ }
12477
+ return message;
12478
+ },
12479
+ fromJSON(object) {
12480
+ return {
12481
+ timestamp: isSet(object.timestamp) ? Number(object.timestamp) : 0,
12482
+ rtt: isSet(object.rtt) ? Number(object.rtt) : 0
12483
+ };
12484
+ },
12485
+ toJSON(message) {
12486
+ const obj = {};
12487
+ message.timestamp !== undefined && (obj.timestamp = Math.round(message.timestamp));
12488
+ message.rtt !== undefined && (obj.rtt = Math.round(message.rtt));
12489
+ return obj;
12490
+ },
12491
+ fromPartial(object) {
12492
+ var _a, _b;
12493
+ const message = createBasePing();
12494
+ message.timestamp = (_a = object.timestamp) !== null && _a !== void 0 ? _a : 0;
12495
+ message.rtt = (_b = object.rtt) !== null && _b !== void 0 ? _b : 0;
12496
+ return message;
12497
+ }
12498
+ };
12499
+ function createBasePong() {
12500
+ return {
12501
+ lastPingTimestamp: 0,
12502
+ timestamp: 0
12503
+ };
12504
+ }
12505
+ const Pong = {
12506
+ encode(message) {
12507
+ let writer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _m0.Writer.create();
12508
+ if (message.lastPingTimestamp !== 0) {
12509
+ writer.uint32(8).int64(message.lastPingTimestamp);
12510
+ }
12511
+ if (message.timestamp !== 0) {
12512
+ writer.uint32(16).int64(message.timestamp);
12513
+ }
12514
+ return writer;
12515
+ },
12516
+ decode(input, length) {
12517
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
12518
+ let end = length === undefined ? reader.len : reader.pos + length;
12519
+ const message = createBasePong();
12520
+ while (reader.pos < end) {
12521
+ const tag = reader.uint32();
12522
+ switch (tag >>> 3) {
12523
+ case 1:
12524
+ message.lastPingTimestamp = longToNumber(reader.int64());
12525
+ break;
12526
+ case 2:
12527
+ message.timestamp = longToNumber(reader.int64());
12528
+ break;
12529
+ default:
12530
+ reader.skipType(tag & 7);
12531
+ break;
12532
+ }
12533
+ }
12534
+ return message;
12535
+ },
12536
+ fromJSON(object) {
12537
+ return {
12538
+ lastPingTimestamp: isSet(object.lastPingTimestamp) ? Number(object.lastPingTimestamp) : 0,
12539
+ timestamp: isSet(object.timestamp) ? Number(object.timestamp) : 0
12540
+ };
12541
+ },
12542
+ toJSON(message) {
12543
+ const obj = {};
12544
+ message.lastPingTimestamp !== undefined && (obj.lastPingTimestamp = Math.round(message.lastPingTimestamp));
12545
+ message.timestamp !== undefined && (obj.timestamp = Math.round(message.timestamp));
12546
+ return obj;
12547
+ },
12548
+ fromPartial(object) {
12549
+ var _a, _b;
12550
+ const message = createBasePong();
12551
+ message.lastPingTimestamp = (_a = object.lastPingTimestamp) !== null && _a !== void 0 ? _a : 0;
12552
+ message.timestamp = (_b = object.timestamp) !== null && _b !== void 0 ? _b : 0;
12553
+ return message;
12554
+ }
12555
+ };
12361
12556
  var tsProtoGlobalThis = (() => {
12362
12557
  if (typeof globalThis !== "undefined") {
12363
12558
  return globalThis;
@@ -13604,7 +13799,7 @@ var uaParser = {
13604
13799
  })(uaParser, uaParserExports);
13605
13800
  var UAParser = uaParserExports;
13606
13801
 
13607
- var version$1 = "1.6.4";
13802
+ var version$1 = "1.6.5";
13608
13803
 
13609
13804
  const version = version$1;
13610
13805
  const protocolVersion = 8;
@@ -15160,7 +15355,7 @@ class LocalAudioTrack extends LocalTrack {
15160
15355
  }
15161
15356
  async unmute() {
15162
15357
  await this.muteQueue.run(async () => {
15163
- if (this.source === Track.Source.Microphone && this.stopOnMute && !this.isUserProvided) {
15358
+ if (this.source === Track.Source.Microphone && (this.stopOnMute || this._mediaStreamTrack.readyState === 'ended') && !this.isUserProvided) {
15164
15359
  livekitLogger.debug('reacquiring mic track');
15165
15360
  await this.restartTrack();
15166
15361
  }
@@ -17429,7 +17624,9 @@ class LocalParticipant extends Participant {
17429
17624
  // detect granted change after permissions were denied to try and resume then
17430
17625
  currentPermissions.onchange = () => {
17431
17626
  if (currentPermissions.state !== 'denied') {
17432
- track.restartTrack();
17627
+ if (!track.isMuted) {
17628
+ track.restartTrack();
17629
+ }
17433
17630
  currentPermissions.onchange = null;
17434
17631
  }
17435
17632
  };
@@ -17439,8 +17636,10 @@ class LocalParticipant extends Participant {
17439
17636
  // permissions query fails for firefox, we continue and try to restart the track
17440
17637
  }
17441
17638
  }
17442
- livekitLogger.debug('track ended, attempting to use a different device');
17443
- await track.restartTrack();
17639
+ if (!track.isMuted) {
17640
+ livekitLogger.debug('track ended, attempting to use a different device');
17641
+ await track.restartTrack();
17642
+ }
17444
17643
  } catch (e) {
17445
17644
  livekitLogger.warn("could not restart track, muting instead");
17446
17645
  await track.mute();
@@ -18176,6 +18375,8 @@ function canPassThroughQueue(req) {
18176
18375
  class SignalClient {
18177
18376
  constructor() {
18178
18377
  let useJSON = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
18378
+ /** signal rtt in milliseconds */
18379
+ this.rtt = 0;
18179
18380
  this.isConnected = false;
18180
18381
  this.isReconnecting = false;
18181
18382
  this.useJSON = useJSON;
@@ -18191,7 +18392,7 @@ class SignalClient {
18191
18392
  const res = await this.connect(url, token, opts, abortSignal);
18192
18393
  return res;
18193
18394
  }
18194
- async reconnect(url, token, sid) {
18395
+ async reconnect(url, token, sid, reason) {
18195
18396
  if (!this.options) {
18196
18397
  livekitLogger.warn('attempted to reconnect without signal options being set, ignoring');
18197
18398
  return;
@@ -18201,7 +18402,8 @@ class SignalClient {
18201
18402
  this.clearPingInterval();
18202
18403
  const res = await this.connect(url, token, _objectSpread2(_objectSpread2({}, this.options), {}, {
18203
18404
  reconnect: true,
18204
- sid
18405
+ sid,
18406
+ reconnectReason: reason
18205
18407
  }));
18206
18408
  return res;
18207
18409
  }
@@ -18423,10 +18625,18 @@ class SignalClient {
18423
18625
  });
18424
18626
  }
18425
18627
  sendPing() {
18628
+ /** send both of ping and pingReq for compatibility to old and new server */
18426
18629
  this.sendRequest({
18427
18630
  $case: 'ping',
18428
18631
  ping: Date.now()
18429
18632
  });
18633
+ this.sendRequest({
18634
+ $case: 'pingReq',
18635
+ pingReq: {
18636
+ timestamp: Date.now(),
18637
+ rtt: this.rtt
18638
+ }
18639
+ });
18430
18640
  }
18431
18641
  async sendLeave() {
18432
18642
  await this.sendRequest({
@@ -18546,6 +18756,9 @@ class SignalClient {
18546
18756
  }
18547
18757
  } else if (msg.$case === 'pong') {
18548
18758
  this.resetPingTimeout();
18759
+ } else if (msg.$case === 'pongResp') {
18760
+ this.rtt = Date.now() - msg.pongResp.lastPingTimestamp;
18761
+ this.resetPingTimeout();
18549
18762
  } else {
18550
18763
  livekitLogger.debug('unsupported message', msg);
18551
18764
  }
@@ -18562,6 +18775,10 @@ class SignalClient {
18562
18775
  handleWSError(ev) {
18563
18776
  livekitLogger.error('websocket error', ev);
18564
18777
  }
18778
+ /**
18779
+ * Resets the ping timeout and starts a new timeout.
18780
+ * Call this after receiving a pong message
18781
+ */
18565
18782
  resetPingTimeout() {
18566
18783
  this.clearPingTimeout();
18567
18784
  if (!this.pingTimeoutDuration) {
@@ -18575,6 +18792,9 @@ class SignalClient {
18575
18792
  }
18576
18793
  }, this.pingTimeoutDuration * 1000);
18577
18794
  }
18795
+ /**
18796
+ * Clears ping timeout (does not start a new timeout)
18797
+ */
18578
18798
  clearPingTimeout() {
18579
18799
  if (this.pingTimeout) {
18580
18800
  CriticalTimers.clearTimeout(this.pingTimeout);
@@ -18659,6 +18879,9 @@ function createConnectionParams(token, info, opts) {
18659
18879
  if (opts.adaptiveStream) {
18660
18880
  params.set('adaptive_stream', '1');
18661
18881
  }
18882
+ if (opts.reconnectReason) {
18883
+ params.set('reconnect_reason', opts.reconnectReason.toString());
18884
+ }
18662
18885
  // @ts-ignore
18663
18886
  if ((_a = navigator.connection) === null || _a === void 0 ? void 0 : _a.type) {
18664
18887
  // @ts-ignore
@@ -19720,6 +19943,7 @@ class RTCEngine extends eventsExports.EventEmitter {
19720
19943
  // after a number of retries, we'll close and give up permanently
19721
19944
  this.handleDisconnect = function (connection) {
19722
19945
  let signalEvents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
19946
+ let disconnectReason = arguments.length > 2 ? arguments[2] : undefined;
19723
19947
  if (_this._isClosed) {
19724
19948
  return;
19725
19949
  }
@@ -19747,13 +19971,13 @@ class RTCEngine extends eventsExports.EventEmitter {
19747
19971
  }
19748
19972
  livekitLogger.debug("reconnecting in ".concat(delay, "ms"));
19749
19973
  _this.clearReconnectTimeout();
19750
- _this.reconnectTimeout = CriticalTimers.setTimeout(() => _this.attemptReconnect(signalEvents), delay);
19974
+ _this.reconnectTimeout = CriticalTimers.setTimeout(() => _this.attemptReconnect(signalEvents, disconnectReason), delay);
19751
19975
  };
19752
19976
  this.handleBrowserOnLine = () => {
19753
19977
  // in case the engine is currently reconnecting, attempt a reconnect immediately after the browser state has changed to 'onLine'
19754
19978
  if (this.client.isReconnecting) {
19755
19979
  this.clearReconnectTimeout();
19756
- this.attemptReconnect(true);
19980
+ this.attemptReconnect(true, ReconnectReason.REASON_SIGNAL_DISCONNECTED);
19757
19981
  }
19758
19982
  };
19759
19983
  this.client = new SignalClient();
@@ -19907,7 +20131,8 @@ class RTCEngine extends eventsExports.EventEmitter {
19907
20131
  };
19908
20132
  let primaryPC = this.publisher.pc;
19909
20133
  let secondaryPC = this.subscriber.pc;
19910
- if (joinResponse.subscriberPrimary) {
20134
+ let subscriberPrimary = joinResponse.subscriberPrimary;
20135
+ if (subscriberPrimary) {
19911
20136
  primaryPC = this.subscriber.pc;
19912
20137
  secondaryPC = this.publisher.pc;
19913
20138
  // in subscriber primary mode, server side opens sub data channels.
@@ -19933,7 +20158,7 @@ class RTCEngine extends eventsExports.EventEmitter {
19933
20158
  // on Safari, PeerConnection will switch to 'disconnected' during renegotiation
19934
20159
  if (this.pcState === PCState.Connected) {
19935
20160
  this.pcState = PCState.Disconnected;
19936
- this.handleDisconnect('primary peerconnection');
20161
+ this.handleDisconnect('primary peerconnection', false, subscriberPrimary ? ReconnectReason.REASON_SUBSCRIBER_FAILED : ReconnectReason.REASON_PUBLISHER_FAILED);
19937
20162
  }
19938
20163
  }
19939
20164
  };
@@ -19941,7 +20166,7 @@ class RTCEngine extends eventsExports.EventEmitter {
19941
20166
  livekitLogger.debug("secondary PC state changed ".concat(secondaryPC.connectionState));
19942
20167
  // also reconnect if secondary peerconnection fails
19943
20168
  if (secondaryPC.connectionState === 'failed') {
19944
- this.handleDisconnect('secondary peerconnection');
20169
+ this.handleDisconnect('secondary peerconnection', false, subscriberPrimary ? ReconnectReason.REASON_PUBLISHER_FAILED : ReconnectReason.REASON_SUBSCRIBER_FAILED);
19945
20170
  }
19946
20171
  };
19947
20172
  this.subscriber.pc.ontrack = ev => {
@@ -20004,7 +20229,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20004
20229
  this.token = token;
20005
20230
  };
20006
20231
  this.client.onClose = () => {
20007
- this.handleDisconnect('signal');
20232
+ this.handleDisconnect('signal', false, ReconnectReason.REASON_SIGNAL_DISCONNECTED);
20008
20233
  };
20009
20234
  this.client.onLeave = leave => {
20010
20235
  if (leave === null || leave === void 0 ? void 0 : leave.canReconnect) {
@@ -20180,6 +20405,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20180
20405
  }
20181
20406
  async attemptReconnect() {
20182
20407
  let signalEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
20408
+ let reason = arguments.length > 1 ? arguments[1] : undefined;
20183
20409
  var _a, _b, _c;
20184
20410
  if (this._isClosed) {
20185
20411
  return;
@@ -20199,7 +20425,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20199
20425
  if (this.fullReconnectOnNext) {
20200
20426
  await this.restartConnection(signalEvents);
20201
20427
  } else {
20202
- await this.resumeConnection(signalEvents);
20428
+ await this.resumeConnection(signalEvents, reason);
20203
20429
  }
20204
20430
  this.clearPendingReconnect();
20205
20431
  this.fullReconnectOnNext = false;
@@ -20225,7 +20451,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20225
20451
  requireSignalEvents = true;
20226
20452
  }
20227
20453
  if (recoverable) {
20228
- this.handleDisconnect('reconnect', requireSignalEvents);
20454
+ this.handleDisconnect('reconnect', requireSignalEvents, ReconnectReason.REASON_UNKOWN);
20229
20455
  } else {
20230
20456
  livekitLogger.info("could not recover connection after ".concat(this.reconnectAttempts, " attempts, ").concat(Date.now() - this.reconnectStart, "ms. giving up"));
20231
20457
  this.emit(EngineEvent.Disconnected);
@@ -20283,6 +20509,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20283
20509
  }
20284
20510
  async resumeConnection() {
20285
20511
  let emitResuming = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
20512
+ let reason = arguments.length > 1 ? arguments[1] : undefined;
20286
20513
  var _a;
20287
20514
  if (!this.url || !this.token) {
20288
20515
  // permanent failure, don't attempt reconnection
@@ -20297,7 +20524,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20297
20524
  this.emit(EngineEvent.Resuming);
20298
20525
  }
20299
20526
  try {
20300
- const res = await this.client.reconnect(this.url, this.token, this.participantSid);
20527
+ const res = await this.client.reconnect(this.url, this.token, this.participantSid, reason);
20301
20528
  if (res) {
20302
20529
  const rtcConfig = this.makeRTCConfiguration(res);
20303
20530
  this.publisher.pc.setConfiguration(rtcConfig);
@@ -20422,7 +20649,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20422
20649
  this.on(EngineEvent.Closing, handleClosed);
20423
20650
  const negotiationTimeout = setTimeout(() => {
20424
20651
  reject('negotiation timed out');
20425
- this.handleDisconnect('negotiation');
20652
+ this.handleDisconnect('negotiation', false, ReconnectReason.REASON_SIGNAL_DISCONNECTED);
20426
20653
  }, this.peerConnectionTimeout);
20427
20654
  const cleanup = () => {
20428
20655
  clearTimeout(negotiationTimeout);
@@ -20441,7 +20668,7 @@ class RTCEngine extends eventsExports.EventEmitter {
20441
20668
  if (e instanceof NegotiationError) {
20442
20669
  this.fullReconnectOnNext = true;
20443
20670
  }
20444
- this.handleDisconnect('negotiation');
20671
+ this.handleDisconnect('negotiation', false, ReconnectReason.REASON_UNKOWN);
20445
20672
  });
20446
20673
  });
20447
20674
  }
@@ -20648,14 +20875,18 @@ class Room extends eventsExports.EventEmitter {
20648
20875
  } catch (err) {
20649
20876
  this.recreateEngine();
20650
20877
  this.handleDisconnect(this.options.stopLocalTrackOnUnpublish);
20651
- let errorMessage = '';
20878
+ const resultingError = new ConnectionError("could not establish signal connection");
20652
20879
  if (err instanceof Error) {
20653
- errorMessage = err.message;
20654
- livekitLogger.debug("error trying to establish signal connection", {
20655
- error: err
20656
- });
20880
+ resultingError.message = "".concat(resultingError.message, ": ").concat(err.message);
20657
20881
  }
20658
- reject(new ConnectionError("could not establish signal connection: ".concat(errorMessage)));
20882
+ if (err instanceof ConnectionError) {
20883
+ resultingError.reason = err.reason;
20884
+ resultingError.status = err.status;
20885
+ }
20886
+ livekitLogger.debug("error trying to establish signal connection", {
20887
+ error: err
20888
+ });
20889
+ reject(resultingError);
20659
20890
  return;
20660
20891
  }
20661
20892
  // don't return until ICE connected