livekit-client 1.6.2 → 1.6.4

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 (64) hide show
  1. package/dist/livekit-client.esm.mjs +468 -140
  2. package/dist/livekit-client.esm.mjs.map +1 -1
  3. package/dist/livekit-client.umd.js +1 -1
  4. package/dist/livekit-client.umd.js.map +1 -1
  5. package/dist/src/api/SignalClient.d.ts +3 -3
  6. package/dist/src/api/SignalClient.d.ts.map +1 -1
  7. package/dist/src/connectionHelper/ConnectionCheck.d.ts +2 -2
  8. package/dist/src/connectionHelper/ConnectionCheck.d.ts.map +1 -1
  9. package/dist/src/index.d.ts +2 -1
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/proto/livekit_models.d.ts +53 -4
  12. package/dist/src/proto/livekit_models.d.ts.map +1 -1
  13. package/dist/src/proto/livekit_rtc.d.ts +650 -91
  14. package/dist/src/proto/livekit_rtc.d.ts.map +1 -1
  15. package/dist/src/room/PCTransport.d.ts +1 -0
  16. package/dist/src/room/PCTransport.d.ts.map +1 -1
  17. package/dist/src/room/RTCEngine.d.ts +2 -0
  18. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  19. package/dist/src/room/Room.d.ts +1 -1
  20. package/dist/src/room/Room.d.ts.map +1 -1
  21. package/dist/src/room/errors.d.ts +3 -0
  22. package/dist/src/room/errors.d.ts.map +1 -1
  23. package/dist/src/room/participant/LocalParticipant.d.ts +1 -3
  24. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  25. package/dist/src/room/participant/Participant.d.ts +1 -1
  26. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  27. package/dist/src/room/timers.d.ts +13 -0
  28. package/dist/src/room/timers.d.ts.map +1 -0
  29. package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -1
  30. package/dist/src/room/track/create.d.ts.map +1 -1
  31. package/dist/src/room/track/options.d.ts +2 -2
  32. package/dist/src/room/track/options.d.ts.map +1 -1
  33. package/dist/src/test/mocks.d.ts +1 -1
  34. package/dist/ts4.2/src/api/SignalClient.d.ts +3 -3
  35. package/dist/ts4.2/src/connectionHelper/ConnectionCheck.d.ts +2 -2
  36. package/dist/ts4.2/src/index.d.ts +2 -1
  37. package/dist/ts4.2/src/proto/livekit_models.d.ts +59 -4
  38. package/dist/ts4.2/src/proto/livekit_rtc.d.ts +739 -120
  39. package/dist/ts4.2/src/room/PCTransport.d.ts +1 -0
  40. package/dist/ts4.2/src/room/RTCEngine.d.ts +2 -0
  41. package/dist/ts4.2/src/room/Room.d.ts +1 -1
  42. package/dist/ts4.2/src/room/errors.d.ts +3 -0
  43. package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +1 -3
  44. package/dist/ts4.2/src/room/participant/Participant.d.ts +1 -1
  45. package/dist/ts4.2/src/room/timers.d.ts +13 -0
  46. package/dist/ts4.2/src/room/track/options.d.ts +2 -2
  47. package/dist/ts4.2/src/test/mocks.d.ts +1 -1
  48. package/package.json +17 -17
  49. package/src/api/SignalClient.ts +33 -21
  50. package/src/connectionHelper/ConnectionCheck.ts +1 -1
  51. package/src/index.ts +2 -0
  52. package/src/proto/google/protobuf/timestamp.ts +2 -2
  53. package/src/proto/livekit_models.ts +158 -10
  54. package/src/proto/livekit_rtc.ts +205 -6
  55. package/src/room/PCTransport.ts +22 -6
  56. package/src/room/RTCEngine.ts +58 -45
  57. package/src/room/Room.ts +8 -10
  58. package/src/room/errors.ts +6 -0
  59. package/src/room/participant/LocalParticipant.ts +12 -17
  60. package/src/room/participant/Participant.ts +10 -2
  61. package/src/room/timers.ts +16 -0
  62. package/src/room/track/RemoteVideoTrack.ts +2 -1
  63. package/src/room/track/create.ts +6 -1
  64. package/src/room/track/options.ts +2 -2
@@ -312,6 +312,8 @@ export interface ParticipantPermission {
312
312
  canPublish: boolean;
313
313
  /** allow participant to publish data */
314
314
  canPublishData: boolean;
315
+ /** sources that are allowed to be published */
316
+ canPublishSources: TrackSource[];
315
317
  /** indicates that it's hidden to others */
316
318
  hidden: boolean;
317
319
  /** indicates it's a recorder instance */
@@ -386,6 +388,48 @@ export function participantInfo_StateToJSON(object: ParticipantInfo_State): stri
386
388
  }
387
389
  }
388
390
 
391
+ export interface Encryption {
392
+ }
393
+
394
+ export enum Encryption_Type {
395
+ NONE = 0,
396
+ GCM = 1,
397
+ CUSTOM = 2,
398
+ UNRECOGNIZED = -1,
399
+ }
400
+
401
+ export function encryption_TypeFromJSON(object: any): Encryption_Type {
402
+ switch (object) {
403
+ case 0:
404
+ case "NONE":
405
+ return Encryption_Type.NONE;
406
+ case 1:
407
+ case "GCM":
408
+ return Encryption_Type.GCM;
409
+ case 2:
410
+ case "CUSTOM":
411
+ return Encryption_Type.CUSTOM;
412
+ case -1:
413
+ case "UNRECOGNIZED":
414
+ default:
415
+ return Encryption_Type.UNRECOGNIZED;
416
+ }
417
+ }
418
+
419
+ export function encryption_TypeToJSON(object: Encryption_Type): string {
420
+ switch (object) {
421
+ case Encryption_Type.NONE:
422
+ return "NONE";
423
+ case Encryption_Type.GCM:
424
+ return "GCM";
425
+ case Encryption_Type.CUSTOM:
426
+ return "CUSTOM";
427
+ case Encryption_Type.UNRECOGNIZED:
428
+ default:
429
+ return "UNRECOGNIZED";
430
+ }
431
+ }
432
+
389
433
  export interface SimulcastCodecInfo {
390
434
  mimeType: string;
391
435
  mid: string;
@@ -416,6 +460,10 @@ export interface TrackInfo {
416
460
  mimeType: string;
417
461
  mid: string;
418
462
  codecs: SimulcastCodecInfo[];
463
+ stereo: boolean;
464
+ /** true if RED (Redundant Encoding) is disabled for audio */
465
+ disableRed: boolean;
466
+ encryption: Encryption_Type;
419
467
  }
420
468
 
421
469
  /** provide information about available spatial layers */
@@ -424,7 +472,7 @@ export interface VideoLayer {
424
472
  quality: VideoQuality;
425
473
  width: number;
426
474
  height: number;
427
- /** target bitrate, server will measure actual */
475
+ /** target bitrate in bit per second (bps), server will measure actual */
428
476
  bitrate: number;
429
477
  ssrc: number;
430
478
  }
@@ -894,7 +942,14 @@ export const Codec = {
894
942
  };
895
943
 
896
944
  function createBaseParticipantPermission(): ParticipantPermission {
897
- return { canSubscribe: false, canPublish: false, canPublishData: false, hidden: false, recorder: false };
945
+ return {
946
+ canSubscribe: false,
947
+ canPublish: false,
948
+ canPublishData: false,
949
+ canPublishSources: [],
950
+ hidden: false,
951
+ recorder: false,
952
+ };
898
953
  }
899
954
 
900
955
  export const ParticipantPermission = {
@@ -908,6 +963,11 @@ export const ParticipantPermission = {
908
963
  if (message.canPublishData === true) {
909
964
  writer.uint32(24).bool(message.canPublishData);
910
965
  }
966
+ writer.uint32(74).fork();
967
+ for (const v of message.canPublishSources) {
968
+ writer.int32(v);
969
+ }
970
+ writer.ldelim();
911
971
  if (message.hidden === true) {
912
972
  writer.uint32(56).bool(message.hidden);
913
973
  }
@@ -933,6 +993,16 @@ export const ParticipantPermission = {
933
993
  case 3:
934
994
  message.canPublishData = reader.bool();
935
995
  break;
996
+ case 9:
997
+ if ((tag & 7) === 2) {
998
+ const end2 = reader.uint32() + reader.pos;
999
+ while (reader.pos < end2) {
1000
+ message.canPublishSources.push(reader.int32() as any);
1001
+ }
1002
+ } else {
1003
+ message.canPublishSources.push(reader.int32() as any);
1004
+ }
1005
+ break;
936
1006
  case 7:
937
1007
  message.hidden = reader.bool();
938
1008
  break;
@@ -952,6 +1022,9 @@ export const ParticipantPermission = {
952
1022
  canSubscribe: isSet(object.canSubscribe) ? Boolean(object.canSubscribe) : false,
953
1023
  canPublish: isSet(object.canPublish) ? Boolean(object.canPublish) : false,
954
1024
  canPublishData: isSet(object.canPublishData) ? Boolean(object.canPublishData) : false,
1025
+ canPublishSources: Array.isArray(object?.canPublishSources)
1026
+ ? object.canPublishSources.map((e: any) => trackSourceFromJSON(e))
1027
+ : [],
955
1028
  hidden: isSet(object.hidden) ? Boolean(object.hidden) : false,
956
1029
  recorder: isSet(object.recorder) ? Boolean(object.recorder) : false,
957
1030
  };
@@ -962,6 +1035,11 @@ export const ParticipantPermission = {
962
1035
  message.canSubscribe !== undefined && (obj.canSubscribe = message.canSubscribe);
963
1036
  message.canPublish !== undefined && (obj.canPublish = message.canPublish);
964
1037
  message.canPublishData !== undefined && (obj.canPublishData = message.canPublishData);
1038
+ if (message.canPublishSources) {
1039
+ obj.canPublishSources = message.canPublishSources.map((e) => trackSourceToJSON(e));
1040
+ } else {
1041
+ obj.canPublishSources = [];
1042
+ }
965
1043
  message.hidden !== undefined && (obj.hidden = message.hidden);
966
1044
  message.recorder !== undefined && (obj.recorder = message.recorder);
967
1045
  return obj;
@@ -972,6 +1050,7 @@ export const ParticipantPermission = {
972
1050
  message.canSubscribe = object.canSubscribe ?? false;
973
1051
  message.canPublish = object.canPublish ?? false;
974
1052
  message.canPublishData = object.canPublishData ?? false;
1053
+ message.canPublishSources = object.canPublishSources?.map((e) => e) || [];
975
1054
  message.hidden = object.hidden ?? false;
976
1055
  message.recorder = object.recorder ?? false;
977
1056
  return message;
@@ -1136,6 +1215,45 @@ export const ParticipantInfo = {
1136
1215
  },
1137
1216
  };
1138
1217
 
1218
+ function createBaseEncryption(): Encryption {
1219
+ return {};
1220
+ }
1221
+
1222
+ export const Encryption = {
1223
+ encode(_: Encryption, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1224
+ return writer;
1225
+ },
1226
+
1227
+ decode(input: _m0.Reader | Uint8Array, length?: number): Encryption {
1228
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1229
+ let end = length === undefined ? reader.len : reader.pos + length;
1230
+ const message = createBaseEncryption();
1231
+ while (reader.pos < end) {
1232
+ const tag = reader.uint32();
1233
+ switch (tag >>> 3) {
1234
+ default:
1235
+ reader.skipType(tag & 7);
1236
+ break;
1237
+ }
1238
+ }
1239
+ return message;
1240
+ },
1241
+
1242
+ fromJSON(_: any): Encryption {
1243
+ return {};
1244
+ },
1245
+
1246
+ toJSON(_: Encryption): unknown {
1247
+ const obj: any = {};
1248
+ return obj;
1249
+ },
1250
+
1251
+ fromPartial<I extends Exact<DeepPartial<Encryption>, I>>(_: I): Encryption {
1252
+ const message = createBaseEncryption();
1253
+ return message;
1254
+ },
1255
+ };
1256
+
1139
1257
  function createBaseSimulcastCodecInfo(): SimulcastCodecInfo {
1140
1258
  return { mimeType: "", mid: "", cid: "", layers: [] };
1141
1259
  }
@@ -1231,6 +1349,9 @@ function createBaseTrackInfo(): TrackInfo {
1231
1349
  mimeType: "",
1232
1350
  mid: "",
1233
1351
  codecs: [],
1352
+ stereo: false,
1353
+ disableRed: false,
1354
+ encryption: 0,
1234
1355
  };
1235
1356
  }
1236
1357
 
@@ -1275,6 +1396,15 @@ export const TrackInfo = {
1275
1396
  for (const v of message.codecs) {
1276
1397
  SimulcastCodecInfo.encode(v!, writer.uint32(106).fork()).ldelim();
1277
1398
  }
1399
+ if (message.stereo === true) {
1400
+ writer.uint32(112).bool(message.stereo);
1401
+ }
1402
+ if (message.disableRed === true) {
1403
+ writer.uint32(120).bool(message.disableRed);
1404
+ }
1405
+ if (message.encryption !== 0) {
1406
+ writer.uint32(128).int32(message.encryption);
1407
+ }
1278
1408
  return writer;
1279
1409
  },
1280
1410
 
@@ -1324,6 +1454,15 @@ export const TrackInfo = {
1324
1454
  case 13:
1325
1455
  message.codecs.push(SimulcastCodecInfo.decode(reader, reader.uint32()));
1326
1456
  break;
1457
+ case 14:
1458
+ message.stereo = reader.bool();
1459
+ break;
1460
+ case 15:
1461
+ message.disableRed = reader.bool();
1462
+ break;
1463
+ case 16:
1464
+ message.encryption = reader.int32() as any;
1465
+ break;
1327
1466
  default:
1328
1467
  reader.skipType(tag & 7);
1329
1468
  break;
@@ -1347,6 +1486,9 @@ export const TrackInfo = {
1347
1486
  mimeType: isSet(object.mimeType) ? String(object.mimeType) : "",
1348
1487
  mid: isSet(object.mid) ? String(object.mid) : "",
1349
1488
  codecs: Array.isArray(object?.codecs) ? object.codecs.map((e: any) => SimulcastCodecInfo.fromJSON(e)) : [],
1489
+ stereo: isSet(object.stereo) ? Boolean(object.stereo) : false,
1490
+ disableRed: isSet(object.disableRed) ? Boolean(object.disableRed) : false,
1491
+ encryption: isSet(object.encryption) ? encryption_TypeFromJSON(object.encryption) : 0,
1350
1492
  };
1351
1493
  },
1352
1494
 
@@ -1373,6 +1515,9 @@ export const TrackInfo = {
1373
1515
  } else {
1374
1516
  obj.codecs = [];
1375
1517
  }
1518
+ message.stereo !== undefined && (obj.stereo = message.stereo);
1519
+ message.disableRed !== undefined && (obj.disableRed = message.disableRed);
1520
+ message.encryption !== undefined && (obj.encryption = encryption_TypeToJSON(message.encryption));
1376
1521
  return obj;
1377
1522
  },
1378
1523
 
@@ -1391,6 +1536,9 @@ export const TrackInfo = {
1391
1536
  message.mimeType = object.mimeType ?? "";
1392
1537
  message.mid = object.mid ?? "";
1393
1538
  message.codecs = object.codecs?.map((e) => SimulcastCodecInfo.fromPartial(e)) || [];
1539
+ message.stereo = object.stereo ?? false;
1540
+ message.disableRed = object.disableRed ?? false;
1541
+ message.encryption = object.encryption ?? 0;
1394
1542
  return message;
1395
1543
  },
1396
1544
  };
@@ -2825,7 +2973,7 @@ export const TimedVersion = {
2825
2973
  declare var self: any | undefined;
2826
2974
  declare var window: any | undefined;
2827
2975
  declare var global: any | undefined;
2828
- var globalThis: any = (() => {
2976
+ var tsProtoGlobalThis: any = (() => {
2829
2977
  if (typeof globalThis !== "undefined") {
2830
2978
  return globalThis;
2831
2979
  }
@@ -2842,10 +2990,10 @@ var globalThis: any = (() => {
2842
2990
  })();
2843
2991
 
2844
2992
  function bytesFromBase64(b64: string): Uint8Array {
2845
- if (globalThis.Buffer) {
2846
- return Uint8Array.from(globalThis.Buffer.from(b64, "base64"));
2993
+ if (tsProtoGlobalThis.Buffer) {
2994
+ return Uint8Array.from(tsProtoGlobalThis.Buffer.from(b64, "base64"));
2847
2995
  } else {
2848
- const bin = globalThis.atob(b64);
2996
+ const bin = tsProtoGlobalThis.atob(b64);
2849
2997
  const arr = new Uint8Array(bin.length);
2850
2998
  for (let i = 0; i < bin.length; ++i) {
2851
2999
  arr[i] = bin.charCodeAt(i);
@@ -2855,14 +3003,14 @@ function bytesFromBase64(b64: string): Uint8Array {
2855
3003
  }
2856
3004
 
2857
3005
  function base64FromBytes(arr: Uint8Array): string {
2858
- if (globalThis.Buffer) {
2859
- return globalThis.Buffer.from(arr).toString("base64");
3006
+ if (tsProtoGlobalThis.Buffer) {
3007
+ return tsProtoGlobalThis.Buffer.from(arr).toString("base64");
2860
3008
  } else {
2861
3009
  const bin: string[] = [];
2862
3010
  arr.forEach((byte) => {
2863
3011
  bin.push(String.fromCharCode(byte));
2864
3012
  });
2865
- return globalThis.btoa(bin.join(""));
3013
+ return tsProtoGlobalThis.btoa(bin.join(""));
2866
3014
  }
2867
3015
  }
2868
3016
 
@@ -2902,7 +3050,7 @@ function fromJsonTimestamp(o: any): Date {
2902
3050
 
2903
3051
  function longToNumber(long: Long): number {
2904
3052
  if (long.gt(Number.MAX_SAFE_INTEGER)) {
2905
- throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
3053
+ throw new tsProtoGlobalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
2906
3054
  }
2907
3055
  return long.toNumber();
2908
3056
  }