livekit-client 0.18.6 → 1.0.2

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 (154) hide show
  1. package/README.md +1 -1
  2. package/dist/livekit-client.esm.mjs +1034 -438
  3. package/dist/livekit-client.esm.mjs.map +1 -1
  4. package/dist/livekit-client.umd.js +1 -1
  5. package/dist/livekit-client.umd.js.map +1 -1
  6. package/dist/{api → src/api}/RequestQueue.d.ts +0 -0
  7. package/dist/src/api/RequestQueue.d.ts.map +1 -0
  8. package/dist/{api → src/api}/SignalClient.d.ts +3 -3
  9. package/dist/src/api/SignalClient.d.ts.map +1 -0
  10. package/dist/{index.d.ts → src/index.d.ts} +3 -4
  11. package/dist/src/index.d.ts.map +1 -0
  12. package/dist/{logger.d.ts → src/logger.d.ts} +0 -0
  13. package/dist/src/logger.d.ts.map +1 -0
  14. package/dist/src/options.d.ts +61 -0
  15. package/dist/src/options.d.ts.map +1 -0
  16. package/dist/{proto → src/proto}/google/protobuf/timestamp.d.ts +0 -0
  17. package/dist/src/proto/google/protobuf/timestamp.d.ts.map +1 -0
  18. package/dist/{proto → src/proto}/livekit_models.d.ts +80 -0
  19. package/dist/src/proto/livekit_models.d.ts.map +1 -0
  20. package/dist/{proto → src/proto}/livekit_rtc.d.ts +661 -0
  21. package/dist/src/proto/livekit_rtc.d.ts.map +1 -0
  22. package/dist/{room → src/room}/DeviceManager.d.ts +0 -0
  23. package/dist/src/room/DeviceManager.d.ts.map +1 -0
  24. package/dist/{room → src/room}/PCTransport.d.ts +0 -0
  25. package/dist/src/room/PCTransport.d.ts.map +1 -0
  26. package/dist/{room → src/room}/RTCEngine.d.ts +4 -2
  27. package/dist/src/room/RTCEngine.d.ts.map +1 -0
  28. package/dist/{room → src/room}/Room.d.ts +13 -7
  29. package/dist/src/room/Room.d.ts.map +1 -0
  30. package/dist/{room → src/room}/errors.d.ts +0 -0
  31. package/dist/src/room/errors.d.ts.map +1 -0
  32. package/dist/{room → src/room}/events.d.ts +11 -13
  33. package/dist/src/room/events.d.ts.map +1 -0
  34. package/dist/{room → src/room}/participant/LocalParticipant.d.ts +4 -1
  35. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -0
  36. package/dist/{room → src/room}/participant/Participant.d.ts +0 -4
  37. package/dist/src/room/participant/Participant.d.ts.map +1 -0
  38. package/dist/{room → src/room}/participant/ParticipantTrackPermission.d.ts +0 -0
  39. package/dist/src/room/participant/ParticipantTrackPermission.d.ts.map +1 -0
  40. package/dist/{room → src/room}/participant/RemoteParticipant.d.ts +3 -2
  41. package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -0
  42. package/dist/{room → src/room}/participant/publishUtils.d.ts +0 -0
  43. package/dist/src/room/participant/publishUtils.d.ts.map +1 -0
  44. package/dist/{room → src/room}/stats.d.ts +1 -0
  45. package/dist/src/room/stats.d.ts.map +1 -0
  46. package/dist/{room → src/room}/track/LocalAudioTrack.d.ts +0 -0
  47. package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -0
  48. package/dist/{room → src/room}/track/LocalTrack.d.ts +3 -0
  49. package/dist/src/room/track/LocalTrack.d.ts.map +1 -0
  50. package/dist/{room → src/room}/track/LocalTrackPublication.d.ts +0 -0
  51. package/dist/src/room/track/LocalTrackPublication.d.ts.map +1 -0
  52. package/dist/{room → src/room}/track/LocalVideoTrack.d.ts +17 -2
  53. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -0
  54. package/dist/{room → src/room}/track/RemoteAudioTrack.d.ts +0 -0
  55. package/dist/src/room/track/RemoteAudioTrack.d.ts.map +1 -0
  56. package/dist/{room → src/room}/track/RemoteTrack.d.ts +0 -1
  57. package/dist/src/room/track/RemoteTrack.d.ts.map +1 -0
  58. package/dist/{room → src/room}/track/RemoteTrackPublication.d.ts +0 -0
  59. package/dist/src/room/track/RemoteTrackPublication.d.ts.map +1 -0
  60. package/dist/{room → src/room}/track/RemoteVideoTrack.d.ts +25 -1
  61. package/dist/src/room/track/RemoteVideoTrack.d.ts.map +1 -0
  62. package/dist/{room → src/room}/track/Track.d.ts +6 -1
  63. package/dist/src/room/track/Track.d.ts.map +1 -0
  64. package/dist/{room → src/room}/track/TrackPublication.d.ts +0 -0
  65. package/dist/src/room/track/TrackPublication.d.ts.map +1 -0
  66. package/dist/{room → src/room}/track/create.d.ts +0 -0
  67. package/dist/src/room/track/create.d.ts.map +1 -0
  68. package/dist/{room → src/room}/track/defaults.d.ts +0 -0
  69. package/dist/src/room/track/defaults.d.ts.map +1 -0
  70. package/dist/{room → src/room}/track/options.d.ts +2 -31
  71. package/dist/src/room/track/options.d.ts.map +1 -0
  72. package/dist/{room → src/room}/track/types.d.ts +5 -0
  73. package/dist/src/room/track/types.d.ts.map +1 -0
  74. package/dist/{room → src/room}/track/utils.d.ts +0 -0
  75. package/dist/src/room/track/utils.d.ts.map +1 -0
  76. package/dist/{room → src/room}/utils.d.ts +0 -0
  77. package/dist/src/room/utils.d.ts.map +1 -0
  78. package/dist/src/test/MockMediaStreamTrack.d.ts +26 -0
  79. package/dist/src/test/MockMediaStreamTrack.d.ts.map +1 -0
  80. package/dist/{test → src/test}/mocks.d.ts +0 -0
  81. package/dist/src/test/mocks.d.ts.map +1 -0
  82. package/dist/src/version.d.ts +3 -0
  83. package/dist/src/version.d.ts.map +1 -0
  84. package/package.json +6 -2
  85. package/src/api/SignalClient.ts +34 -9
  86. package/src/index.ts +4 -3
  87. package/src/options.ts +0 -82
  88. package/src/proto/livekit_models.ts +90 -0
  89. package/src/proto/livekit_rtc.ts +235 -1
  90. package/src/room/DeviceManager.ts +4 -1
  91. package/src/room/RTCEngine.ts +46 -9
  92. package/src/room/Room.ts +122 -53
  93. package/src/room/events.ts +12 -14
  94. package/src/room/participant/LocalParticipant.ts +108 -23
  95. package/src/room/participant/Participant.ts +0 -5
  96. package/src/room/participant/RemoteParticipant.ts +17 -5
  97. package/src/room/participant/publishUtils.test.ts +2 -2
  98. package/src/room/stats.ts +2 -0
  99. package/src/room/track/LocalAudioTrack.ts +4 -0
  100. package/src/room/track/LocalTrack.ts +12 -5
  101. package/src/room/track/LocalVideoTrack.ts +144 -56
  102. package/src/room/track/RemoteTrack.ts +0 -2
  103. package/src/room/track/RemoteVideoTrack.test.ts +149 -0
  104. package/src/room/track/RemoteVideoTrack.ts +118 -37
  105. package/src/room/track/Track.ts +23 -2
  106. package/src/room/track/create.ts +1 -1
  107. package/src/room/track/options.ts +2 -31
  108. package/src/room/track/types.ts +5 -0
  109. package/src/room/track/utils.test.ts +6 -6
  110. package/src/test/MockMediaStreamTrack.ts +83 -0
  111. package/src/version.ts +4 -2
  112. package/dist/api/RequestQueue.d.ts.map +0 -1
  113. package/dist/api/SignalClient.d.ts.map +0 -1
  114. package/dist/connect.d.ts +0 -24
  115. package/dist/connect.d.ts.map +0 -1
  116. package/dist/index.d.ts.map +0 -1
  117. package/dist/logger.d.ts.map +0 -1
  118. package/dist/options.d.ts +0 -128
  119. package/dist/options.d.ts.map +0 -1
  120. package/dist/proto/google/protobuf/timestamp.d.ts.map +0 -1
  121. package/dist/proto/livekit_models.d.ts.map +0 -1
  122. package/dist/proto/livekit_rtc.d.ts.map +0 -1
  123. package/dist/room/DeviceManager.d.ts.map +0 -1
  124. package/dist/room/PCTransport.d.ts.map +0 -1
  125. package/dist/room/RTCEngine.d.ts.map +0 -1
  126. package/dist/room/Room.d.ts.map +0 -1
  127. package/dist/room/errors.d.ts.map +0 -1
  128. package/dist/room/events.d.ts.map +0 -1
  129. package/dist/room/participant/LocalParticipant.d.ts.map +0 -1
  130. package/dist/room/participant/Participant.d.ts.map +0 -1
  131. package/dist/room/participant/ParticipantTrackPermission.d.ts.map +0 -1
  132. package/dist/room/participant/RemoteParticipant.d.ts.map +0 -1
  133. package/dist/room/participant/publishUtils.d.ts.map +0 -1
  134. package/dist/room/stats.d.ts.map +0 -1
  135. package/dist/room/track/LocalAudioTrack.d.ts.map +0 -1
  136. package/dist/room/track/LocalTrack.d.ts.map +0 -1
  137. package/dist/room/track/LocalTrackPublication.d.ts.map +0 -1
  138. package/dist/room/track/LocalVideoTrack.d.ts.map +0 -1
  139. package/dist/room/track/RemoteAudioTrack.d.ts.map +0 -1
  140. package/dist/room/track/RemoteTrack.d.ts.map +0 -1
  141. package/dist/room/track/RemoteTrackPublication.d.ts.map +0 -1
  142. package/dist/room/track/RemoteVideoTrack.d.ts.map +0 -1
  143. package/dist/room/track/Track.d.ts.map +0 -1
  144. package/dist/room/track/TrackPublication.d.ts.map +0 -1
  145. package/dist/room/track/create.d.ts.map +0 -1
  146. package/dist/room/track/defaults.d.ts.map +0 -1
  147. package/dist/room/track/options.d.ts.map +0 -1
  148. package/dist/room/track/types.d.ts.map +0 -1
  149. package/dist/room/track/utils.d.ts.map +0 -1
  150. package/dist/room/utils.d.ts.map +0 -1
  151. package/dist/test/mocks.d.ts.map +0 -1
  152. package/dist/version.d.ts +0 -3
  153. package/dist/version.d.ts.map +0 -1
  154. package/src/connect.ts +0 -98
@@ -9,7 +9,8 @@ export interface TrackPublishDefaults {
9
9
  */
10
10
  screenShareEncoding?: VideoEncoding;
11
11
  /**
12
- * codec, defaults to vp8
12
+ * codec, defaults to vp8; for svc codecs, auto enable vp8
13
+ * as backup. (TBD)
13
14
  */
14
15
  videoCodec?: VideoCodec;
15
16
  /**
@@ -177,16 +178,6 @@ export declare const VideoPresets: {
177
178
  readonly h1080: VideoPreset;
178
179
  readonly h1440: VideoPreset;
179
180
  readonly h2160: VideoPreset;
180
- /** @deprecated */
181
- readonly qvga: VideoPreset;
182
- /** @deprecated */
183
- readonly vga: VideoPreset;
184
- /** @deprecated */
185
- readonly qhd: VideoPreset;
186
- /** @deprecated */
187
- readonly hd: VideoPreset;
188
- /** @deprecated */
189
- readonly fhd: VideoPreset;
190
181
  };
191
182
  /**
192
183
  * Four by three presets
@@ -201,16 +192,6 @@ export declare const VideoPresets43: {
201
192
  readonly h720: VideoPreset;
202
193
  readonly h1080: VideoPreset;
203
194
  readonly h1440: VideoPreset;
204
- /** @deprecated */
205
- readonly qvga: VideoPreset;
206
- /** @deprecated */
207
- readonly vga: VideoPreset;
208
- /** @deprecated */
209
- readonly qhd: VideoPreset;
210
- /** @deprecated */
211
- readonly hd: VideoPreset;
212
- /** @deprecated */
213
- readonly fhd: VideoPreset;
214
195
  };
215
196
  export declare const ScreenSharePresets: {
216
197
  readonly h360fps3: VideoPreset;
@@ -218,15 +199,5 @@ export declare const ScreenSharePresets: {
218
199
  readonly h720fps15: VideoPreset;
219
200
  readonly h1080fps15: VideoPreset;
220
201
  readonly h1080fps30: VideoPreset;
221
- /** @deprecated */
222
- readonly vga: VideoPreset;
223
- /** @deprecated */
224
- readonly hd_8: VideoPreset;
225
- /** @deprecated */
226
- readonly hd_15: VideoPreset;
227
- /** @deprecated */
228
- readonly fhd_15: VideoPreset;
229
- /** @deprecated */
230
- readonly fhd_30: VideoPreset;
231
202
  };
232
203
  //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../../src/room/track/options.ts"],"names":[],"mappings":"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"}
@@ -15,5 +15,10 @@ export declare type AdaptiveStreamSettings = {
15
15
  * streaming on high definition screens.
16
16
  */
17
17
  pixelDensity?: number | 'screen';
18
+ /**
19
+ * If true, video gets paused when switching to another tab.
20
+ * Defaults to true.
21
+ */
22
+ pauseVideoInBackground?: boolean;
18
23
  };
19
24
  //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/room/track/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,eAAe,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,gBAAgB,MAAM,oBAAoB,CAAC;AAEvD,oBAAY,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAC9D,oBAAY,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAC5D,oBAAY,UAAU,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE5D,oBAAY,sBAAsB,GAAG;IACnC;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/room/track/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,wBAAwB,EAClC,aAAa,CAAC,EAAE,mBAAmB,EACnC,aAAa,CAAC,EAAE,mBAAmB,GAClC,wBAAwB,CAqB1B;AAYD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,sBAAsB,CAqC/F;AACD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,SAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAkBzF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,GAAG,IAAI,CAMxD"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/room/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAKrE,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMvD;AAED,wBAAsB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,SAAS,IAAI,OAAO,CAGnC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAGlC;AAED,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAeD,eAAO,MAAM,iBAAiB,sBAG7B,CAAC;AAGF,eAAO,MAAM,uBAAuB,4BAOnC,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,YAAY,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,uBAAuB,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,CAAC;CACrE;AAED,wBAAgB,aAAa,IAAI,UAAU,CAO1C;AAID,wBAAgB,wBAAwB,qBAevC;AAID,wBAAgB,wBAAwB,qBAevC"}
@@ -0,0 +1,26 @@
1
+ export default class MockMediaStreamTrack implements MediaStreamTrack {
2
+ contentHint: string;
3
+ enabled: boolean;
4
+ id: string;
5
+ kind: string;
6
+ label: string;
7
+ muted: boolean;
8
+ onended: ((this: MediaStreamTrack, ev: Event) => any) | null;
9
+ onmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
10
+ onunmute: ((this: MediaStreamTrack, ev: Event) => any) | null;
11
+ readyState: MediaStreamTrackState;
12
+ isolated: boolean;
13
+ onisolationchange: ((this: MediaStreamTrack, ev: Event) => any) | null;
14
+ applyConstraints(constraints?: MediaTrackConstraints): Promise<void>;
15
+ clone(): MediaStreamTrack;
16
+ getCapabilities(): MediaTrackCapabilities;
17
+ getConstraints(): MediaTrackConstraints;
18
+ getSettings(): MediaTrackSettings;
19
+ stop(): void;
20
+ addEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
21
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
22
+ removeEventListener<K extends keyof MediaStreamTrackEventMap>(type: K, listener: (this: MediaStreamTrack, ev: MediaStreamTrackEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
23
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
24
+ dispatchEvent(event: Event): boolean;
25
+ }
26
+ //# sourceMappingURL=MockMediaStreamTrack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MockMediaStreamTrack.d.ts","sourceRoot":"","sources":["../../../src/test/MockMediaStreamTrack.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,OAAO,OAAO,oBAAqB,YAAW,gBAAgB;IACnE,WAAW,EAAE,MAAM,CAAM;IAEzB,OAAO,EAAE,OAAO,CAAQ;IAExB,EAAE,EAAE,MAAM,CAAQ;IAElB,IAAI,EAAE,MAAM,CAAW;IAEvB,KAAK,EAAE,MAAM,CAAW;IAExB,KAAK,EAAE,OAAO,CAAS;IAEvB,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAQ;IAEpE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAQ;IAEnE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAQ;IAErE,UAAU,EAAE,qBAAqB,CAAU;IAE3C,QAAQ,EAAE,OAAO,CAAS;IAE1B,iBAAiB,EAAE,CAAC,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,KAAK,GAAG,CAAC,GAAG,IAAI,CAAQ;IAG9E,gBAAgB,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpE,KAAK,IAAI,gBAAgB;IAIzB,eAAe,IAAI,sBAAsB;IAIzC,cAAc,IAAI,qBAAqB;IAIvC,WAAW,IAAI,kBAAkB;IAIjC,IAAI,IAAI,IAAI;IAIZ,gBAAgB,CAAC,CAAC,SAAS,MAAM,wBAAwB,EACvD,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC1E,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI;IACP,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,EAC5C,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAC1C,IAAI;IAKP,mBAAmB,CAAC,CAAC,SAAS,MAAM,wBAAwB,EAC1D,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC,KAAK,GAAG,EAC1E,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACvC,IAAI;IACP,mBAAmB,CACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,kCAAkC,EAC5C,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GACvC,IAAI;IAKP,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGrC"}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/test/mocks.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAO1C,QAAA,MAAM,KAAK;;;;;;CAMV,CAAC;AAEF,eAAe,KAAK,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const version: string;
2
+ export declare const protocolVersion = 8;
3
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO,QAAI,CAAC;AACzB,eAAO,MAAM,eAAe,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livekit-client",
3
- "version": "0.18.6",
3
+ "version": "1.0.2",
4
4
  "description": "JavaScript/TypeScript client SDK for LiveKit",
5
5
  "main": "./dist/livekit-client.umd.js",
6
6
  "unpkg": "./dist/livekit-client.umd.js",
@@ -29,7 +29,8 @@
29
29
  "test": "jest",
30
30
  "deploy": "gh-pages -d example/dist",
31
31
  "format": "prettier --write src",
32
- "format:check": "prettier --check src"
32
+ "format:check": "prettier --check src",
33
+ "release": "yarn build && changeset publish"
33
34
  },
34
35
  "dependencies": {
35
36
  "events": "^3.3.0",
@@ -42,8 +43,10 @@
42
43
  "devDependencies": {
43
44
  "@babel/core": "^7.17.9",
44
45
  "@babel/preset-env": "^7.16.11",
46
+ "@changesets/cli": "^2.22.0",
45
47
  "@rollup/plugin-babel": "^5.3.1",
46
48
  "@rollup/plugin-commonjs": "^21.0.3",
49
+ "@rollup/plugin-json": "^4.1.0",
47
50
  "@rollup/plugin-node-resolve": "^13.1.3",
48
51
  "@types/jest": "^27.0.3",
49
52
  "@types/ws": "^7.4.0",
@@ -57,6 +60,7 @@
57
60
  "jest": "^27.4.3",
58
61
  "prettier": "^2.6.1",
59
62
  "rollup": "^2.70.1",
63
+ "rollup-plugin-livereload": "^2.0.5",
60
64
  "rollup-plugin-re": "^1.0.7",
61
65
  "rollup-plugin-serve": "^1.1.0",
62
66
  "rollup-plugin-terser": "^7.0.2",
@@ -123,15 +123,25 @@ export class SignalClient {
123
123
  this.requestQueue = new Queue();
124
124
  }
125
125
 
126
- async join(url: string, token: string, opts?: SignalOptions): Promise<JoinResponse> {
126
+ async join(
127
+ url: string,
128
+ token: string,
129
+ opts?: SignalOptions,
130
+ abortSignal?: AbortSignal,
131
+ ): Promise<JoinResponse> {
127
132
  // during a full reconnect, we'd want to start the sequence even if currently
128
133
  // connected
129
134
  this.isConnected = false;
130
- const res = await this.connect(url, token, {
131
- autoSubscribe: opts?.autoSubscribe,
132
- publishOnly: opts?.publishOnly,
133
- adaptiveStream: opts?.adaptiveStream,
134
- });
135
+ const res = await this.connect(
136
+ url,
137
+ token,
138
+ {
139
+ autoSubscribe: opts?.autoSubscribe,
140
+ publishOnly: opts?.publishOnly,
141
+ adaptiveStream: opts?.adaptiveStream,
142
+ },
143
+ abortSignal,
144
+ );
135
145
  return res as JoinResponse;
136
146
  }
137
147
 
@@ -142,7 +152,12 @@ export class SignalClient {
142
152
  });
143
153
  }
144
154
 
145
- connect(url: string, token: string, opts: ConnectOpts): Promise<JoinResponse | void> {
155
+ connect(
156
+ url: string,
157
+ token: string,
158
+ opts: ConnectOpts,
159
+ abortSignal?: AbortSignal,
160
+ ): Promise<JoinResponse | void> {
146
161
  if (url.startsWith('http')) {
147
162
  url = url.replace('http', 'ws');
148
163
  }
@@ -154,6 +169,15 @@ export class SignalClient {
154
169
  const params = createConnectionParams(token, clientInfo, opts);
155
170
 
156
171
  return new Promise<JoinResponse | void>((resolve, reject) => {
172
+ const abortHandler = () => {
173
+ ws.close();
174
+ this.close();
175
+ reject(new ConnectionError('room connection has been cancelled'));
176
+ };
177
+ if (abortSignal?.aborted) {
178
+ abortHandler();
179
+ }
180
+ abortSignal?.addEventListener('abort', abortHandler);
157
181
  log.debug(`connecting to ${url + params}`);
158
182
  this.ws = undefined;
159
183
  const ws = new WebSocket(url + params);
@@ -204,6 +228,7 @@ export class SignalClient {
204
228
  // handle join message only
205
229
  if (msg.join) {
206
230
  this.isConnected = true;
231
+ abortSignal?.removeEventListener('abort', abortHandler);
207
232
  resolve(msg.join);
208
233
  } else {
209
234
  reject(new ConnectionError('did not receive join response'));
@@ -314,8 +339,8 @@ export class SignalClient {
314
339
  });
315
340
  }
316
341
 
317
- sendLeave() {
318
- this.sendRequest(SignalRequest.fromPartial({ leave: {} }));
342
+ async sendLeave() {
343
+ await this.sendRequest(SignalRequest.fromPartial({ leave: {} }));
319
344
  }
320
345
 
321
346
  async sendRequest(req: SignalRequest, fromQueue: boolean = false) {
package/src/index.ts CHANGED
@@ -4,7 +4,7 @@ import LocalParticipant from './room/participant/LocalParticipant';
4
4
  import Participant, { ConnectionQuality } from './room/participant/Participant';
5
5
  import { ParticipantTrackPermission } from './room/participant/ParticipantTrackPermission';
6
6
  import RemoteParticipant from './room/participant/RemoteParticipant';
7
- import Room, { RoomState } from './room/Room';
7
+ import Room, { ConnectionState, RoomState } from './room/Room';
8
8
  import LocalAudioTrack from './room/track/LocalAudioTrack';
9
9
  import LocalTrack from './room/track/LocalTrack';
10
10
  import LocalTrackPublication from './room/track/LocalTrackPublication';
@@ -12,10 +12,9 @@ import LocalVideoTrack from './room/track/LocalVideoTrack';
12
12
  import RemoteAudioTrack from './room/track/RemoteAudioTrack';
13
13
  import RemoteTrack from './room/track/RemoteTrack';
14
14
  import RemoteTrackPublication from './room/track/RemoteTrackPublication';
15
- import RemoteVideoTrack from './room/track/RemoteVideoTrack';
15
+ import RemoteVideoTrack, { ElementInfo } from './room/track/RemoteVideoTrack';
16
16
  import { TrackPublication } from './room/track/TrackPublication';
17
17
 
18
- export * from './connect';
19
18
  export * from './options';
20
19
  export * from './room/errors';
21
20
  export * from './room/events';
@@ -29,6 +28,7 @@ export {
29
28
  setLogExtension,
30
29
  LogLevel,
31
30
  Room,
31
+ ConnectionState,
32
32
  RoomState,
33
33
  DataPacket_Kind,
34
34
  Participant,
@@ -46,4 +46,5 @@ export {
46
46
  TrackPublication,
47
47
  VideoQuality,
48
48
  ConnectionQuality,
49
+ ElementInfo,
49
50
  };
package/src/options.ts CHANGED
@@ -1,7 +1,5 @@
1
- import { LogLevel } from './logger';
2
1
  import {
3
2
  AudioCaptureOptions,
4
- CreateLocalTracksOptions,
5
3
  TrackPublishDefaults,
6
4
  VideoCaptureOptions,
7
5
  } from './room/track/options';
@@ -74,83 +72,3 @@ export interface RoomConnectOptions {
74
72
  */
75
73
  publishOnly?: string;
76
74
  }
77
-
78
- /**
79
- * @deprecated use new Room([[RoomOptions]]) and room.connect([[RoomConnectOptions]]) instead
80
- *
81
- * if video or audio tracks are created as part of [[connect]], it'll automatically
82
- * publish those tracks to the room.
83
- */
84
- export interface ConnectOptions extends CreateLocalTracksOptions {
85
- /** autosubscribe to room tracks upon connect, defaults to true */
86
- autoSubscribe?: boolean;
87
-
88
- /**
89
- * publish only mode
90
- */
91
- publishOnly?: string;
92
-
93
- /**
94
- * see [[RoomOptions.adaptiveStream]]
95
- */
96
- adaptiveStream?: AdaptiveStreamSettings | boolean;
97
-
98
- /**
99
- * alias for adaptiveStream
100
- * @deprecated
101
- */
102
- autoManageVideo?: boolean;
103
-
104
- /**
105
- * see [[RoomOptions.dynacast]]
106
- */
107
- dynacast?: boolean;
108
-
109
- /** configures LiveKit internal log level */
110
- logLevel?: LogLevel;
111
-
112
- /**
113
- * set ICE servers. When deployed correctly, LiveKit automatically uses the built-in TURN servers
114
- */
115
- iceServers?: RTCIceServer[];
116
-
117
- /**
118
- * use to override any RTCConfiguration options.
119
- */
120
- rtcConfig?: RTCConfiguration;
121
-
122
- /**
123
- * capture and publish audio track on connect, defaults to false
124
- *
125
- * If this option is used, you will not be notified if user denies capture permission.
126
- */
127
- audio?: boolean;
128
-
129
- /**
130
- * capture and publish video track on connect, defaults to false
131
- *
132
- * If this option is used, you will not be notified if user denies capture permission.
133
- */
134
- video?: boolean;
135
-
136
- /**
137
- * default options to use when capturing user's audio
138
- */
139
- audioCaptureDefaults?: AudioCaptureOptions;
140
-
141
- /**
142
- * default options to use when capturing user's video
143
- */
144
- videoCaptureDefaults?: VideoCaptureOptions;
145
-
146
- /**
147
- * default options to use when publishing tracks
148
- */
149
- publishDefaults?: TrackPublishDefaults;
150
-
151
- /**
152
- * should local tracks be stopped when they are unpublished. defaults to true
153
- * set this to false if you would prefer to clean up unpublished local tracks manually.
154
- */
155
- stopLocalTrackOnUnpublish?: boolean;
156
- }
@@ -311,6 +311,12 @@ export function participantInfo_StateToJSON(object: ParticipantInfo_State): stri
311
311
  }
312
312
  }
313
313
 
314
+ export interface SimulcastCodecInfo {
315
+ mimeType: string;
316
+ mid: string;
317
+ cid: string;
318
+ }
319
+
314
320
  export interface TrackInfo {
315
321
  sid: string;
316
322
  type: TrackType;
@@ -333,6 +339,7 @@ export interface TrackInfo {
333
339
  /** mime type of codec */
334
340
  mimeType: string;
335
341
  mid: string;
342
+ codecs: SimulcastCodecInfo[];
336
343
  }
337
344
 
338
345
  /** provide information about available spatial layers */
@@ -1007,6 +1014,73 @@ export const ParticipantInfo = {
1007
1014
  },
1008
1015
  };
1009
1016
 
1017
+ function createBaseSimulcastCodecInfo(): SimulcastCodecInfo {
1018
+ return { mimeType: '', mid: '', cid: '' };
1019
+ }
1020
+
1021
+ export const SimulcastCodecInfo = {
1022
+ encode(message: SimulcastCodecInfo, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
1023
+ if (message.mimeType !== '') {
1024
+ writer.uint32(10).string(message.mimeType);
1025
+ }
1026
+ if (message.mid !== '') {
1027
+ writer.uint32(18).string(message.mid);
1028
+ }
1029
+ if (message.cid !== '') {
1030
+ writer.uint32(26).string(message.cid);
1031
+ }
1032
+ return writer;
1033
+ },
1034
+
1035
+ decode(input: _m0.Reader | Uint8Array, length?: number): SimulcastCodecInfo {
1036
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1037
+ let end = length === undefined ? reader.len : reader.pos + length;
1038
+ const message = createBaseSimulcastCodecInfo();
1039
+ while (reader.pos < end) {
1040
+ const tag = reader.uint32();
1041
+ switch (tag >>> 3) {
1042
+ case 1:
1043
+ message.mimeType = reader.string();
1044
+ break;
1045
+ case 2:
1046
+ message.mid = reader.string();
1047
+ break;
1048
+ case 3:
1049
+ message.cid = reader.string();
1050
+ break;
1051
+ default:
1052
+ reader.skipType(tag & 7);
1053
+ break;
1054
+ }
1055
+ }
1056
+ return message;
1057
+ },
1058
+
1059
+ fromJSON(object: any): SimulcastCodecInfo {
1060
+ return {
1061
+ mimeType: isSet(object.mimeType) ? String(object.mimeType) : '',
1062
+ mid: isSet(object.mid) ? String(object.mid) : '',
1063
+ cid: isSet(object.cid) ? String(object.cid) : '',
1064
+ };
1065
+ },
1066
+
1067
+ toJSON(message: SimulcastCodecInfo): unknown {
1068
+ const obj: any = {};
1069
+ message.mimeType !== undefined && (obj.mimeType = message.mimeType);
1070
+ message.mid !== undefined && (obj.mid = message.mid);
1071
+ message.cid !== undefined && (obj.cid = message.cid);
1072
+ return obj;
1073
+ },
1074
+
1075
+ fromPartial<I extends Exact<DeepPartial<SimulcastCodecInfo>, I>>(object: I): SimulcastCodecInfo {
1076
+ const message = createBaseSimulcastCodecInfo();
1077
+ message.mimeType = object.mimeType ?? '';
1078
+ message.mid = object.mid ?? '';
1079
+ message.cid = object.cid ?? '';
1080
+ return message;
1081
+ },
1082
+ };
1083
+
1010
1084
  function createBaseTrackInfo(): TrackInfo {
1011
1085
  return {
1012
1086
  sid: '',
@@ -1021,6 +1095,7 @@ function createBaseTrackInfo(): TrackInfo {
1021
1095
  layers: [],
1022
1096
  mimeType: '',
1023
1097
  mid: '',
1098
+ codecs: [],
1024
1099
  };
1025
1100
  }
1026
1101
 
@@ -1062,6 +1137,9 @@ export const TrackInfo = {
1062
1137
  if (message.mid !== '') {
1063
1138
  writer.uint32(98).string(message.mid);
1064
1139
  }
1140
+ for (const v of message.codecs) {
1141
+ SimulcastCodecInfo.encode(v!, writer.uint32(106).fork()).ldelim();
1142
+ }
1065
1143
  return writer;
1066
1144
  },
1067
1145
 
@@ -1108,6 +1186,9 @@ export const TrackInfo = {
1108
1186
  case 12:
1109
1187
  message.mid = reader.string();
1110
1188
  break;
1189
+ case 13:
1190
+ message.codecs.push(SimulcastCodecInfo.decode(reader, reader.uint32()));
1191
+ break;
1111
1192
  default:
1112
1193
  reader.skipType(tag & 7);
1113
1194
  break;
@@ -1132,6 +1213,9 @@ export const TrackInfo = {
1132
1213
  : [],
1133
1214
  mimeType: isSet(object.mimeType) ? String(object.mimeType) : '',
1134
1215
  mid: isSet(object.mid) ? String(object.mid) : '',
1216
+ codecs: Array.isArray(object?.codecs)
1217
+ ? object.codecs.map((e: any) => SimulcastCodecInfo.fromJSON(e))
1218
+ : [],
1135
1219
  };
1136
1220
  },
1137
1221
 
@@ -1153,6 +1237,11 @@ export const TrackInfo = {
1153
1237
  }
1154
1238
  message.mimeType !== undefined && (obj.mimeType = message.mimeType);
1155
1239
  message.mid !== undefined && (obj.mid = message.mid);
1240
+ if (message.codecs) {
1241
+ obj.codecs = message.codecs.map((e) => (e ? SimulcastCodecInfo.toJSON(e) : undefined));
1242
+ } else {
1243
+ obj.codecs = [];
1244
+ }
1156
1245
  return obj;
1157
1246
  },
1158
1247
 
@@ -1170,6 +1259,7 @@ export const TrackInfo = {
1170
1259
  message.layers = object.layers?.map((e) => VideoLayer.fromPartial(e)) || [];
1171
1260
  message.mimeType = object.mimeType ?? '';
1172
1261
  message.mid = object.mid ?? '';
1262
+ message.codecs = object.codecs?.map((e) => SimulcastCodecInfo.fromPartial(e)) || [];
1173
1263
  return message;
1174
1264
  },
1175
1265
  };