livekit-client 0.17.4 → 0.17.6-rc2

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 (155) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +26 -20
  3. package/dist/api/SignalClient.d.ts +1 -0
  4. package/dist/connect.d.ts +2 -0
  5. package/dist/index.d.ts +2 -2
  6. package/dist/livekit-client.esm.js +17344 -0
  7. package/dist/livekit-client.esm.js.map +1 -0
  8. package/dist/livekit-client.umd.js +2 -0
  9. package/dist/livekit-client.umd.js.map +1 -0
  10. package/dist/logger.d.ts +22 -11
  11. package/dist/options.d.ts +4 -2
  12. package/dist/proto/google/protobuf/timestamp.d.ts +12 -2
  13. package/dist/proto/livekit_models.d.ts +524 -17
  14. package/dist/proto/livekit_rtc.d.ts +3449 -31
  15. package/dist/room/DeviceManager.d.ts +1 -1
  16. package/dist/room/RTCEngine.d.ts +1 -1
  17. package/dist/room/Room.d.ts +2 -2
  18. package/dist/room/events.d.ts +1 -1
  19. package/dist/room/participant/LocalParticipant.d.ts +9 -5
  20. package/dist/room/participant/RemoteParticipant.d.ts +9 -0
  21. package/dist/room/track/RemoteAudioTrack.d.ts +11 -0
  22. package/dist/room/track/options.d.ts +1 -1
  23. package/dist/test/mocks.d.ts +11 -0
  24. package/dist/version.d.ts +1 -1
  25. package/package.json +41 -16
  26. package/.eslintrc.js +0 -17
  27. package/.gitmodules +0 -3
  28. package/dist/api/RequestQueue.js +0 -61
  29. package/dist/api/RequestQueue.js.map +0 -1
  30. package/dist/api/SignalClient.js +0 -428
  31. package/dist/api/SignalClient.js.map +0 -1
  32. package/dist/connect.js +0 -130
  33. package/dist/connect.js.map +0 -1
  34. package/dist/index.js +0 -71
  35. package/dist/index.js.map +0 -1
  36. package/dist/logger.js +0 -24
  37. package/dist/logger.js.map +0 -1
  38. package/dist/options.js +0 -3
  39. package/dist/options.js.map +0 -1
  40. package/dist/proto/google/protobuf/timestamp.js +0 -93
  41. package/dist/proto/google/protobuf/timestamp.js.map +0 -1
  42. package/dist/proto/livekit_models.js +0 -2688
  43. package/dist/proto/livekit_models.js.map +0 -1
  44. package/dist/proto/livekit_rtc.js +0 -2995
  45. package/dist/proto/livekit_rtc.js.map +0 -1
  46. package/dist/room/DeviceManager.js +0 -62
  47. package/dist/room/DeviceManager.js.map +0 -1
  48. package/dist/room/PCTransport.js +0 -91
  49. package/dist/room/PCTransport.js.map +0 -1
  50. package/dist/room/RTCEngine.js +0 -562
  51. package/dist/room/RTCEngine.js.map +0 -1
  52. package/dist/room/Room.js +0 -759
  53. package/dist/room/Room.js.map +0 -1
  54. package/dist/room/errors.js +0 -68
  55. package/dist/room/errors.js.map +0 -1
  56. package/dist/room/events.js +0 -385
  57. package/dist/room/events.js.map +0 -1
  58. package/dist/room/participant/LocalParticipant.js +0 -647
  59. package/dist/room/participant/LocalParticipant.js.map +0 -1
  60. package/dist/room/participant/Participant.js +0 -189
  61. package/dist/room/participant/Participant.js.map +0 -1
  62. package/dist/room/participant/ParticipantTrackPermission.js +0 -16
  63. package/dist/room/participant/ParticipantTrackPermission.js.map +0 -1
  64. package/dist/room/participant/RemoteParticipant.js +0 -194
  65. package/dist/room/participant/RemoteParticipant.js.map +0 -1
  66. package/dist/room/participant/publishUtils.js +0 -189
  67. package/dist/room/participant/publishUtils.js.map +0 -1
  68. package/dist/room/participant/publishUtils.test.d.ts +0 -1
  69. package/dist/room/participant/publishUtils.test.js +0 -118
  70. package/dist/room/participant/publishUtils.test.js.map +0 -1
  71. package/dist/room/stats.js +0 -26
  72. package/dist/room/stats.js.map +0 -1
  73. package/dist/room/track/LocalAudioTrack.js +0 -153
  74. package/dist/room/track/LocalAudioTrack.js.map +0 -1
  75. package/dist/room/track/LocalTrack.js +0 -158
  76. package/dist/room/track/LocalTrack.js.map +0 -1
  77. package/dist/room/track/LocalTrackPublication.js +0 -64
  78. package/dist/room/track/LocalTrackPublication.js.map +0 -1
  79. package/dist/room/track/LocalVideoTrack.js +0 -297
  80. package/dist/room/track/LocalVideoTrack.js.map +0 -1
  81. package/dist/room/track/LocalVideoTrack.test.d.ts +0 -1
  82. package/dist/room/track/LocalVideoTrack.test.js +0 -68
  83. package/dist/room/track/LocalVideoTrack.test.js.map +0 -1
  84. package/dist/room/track/RemoteAudioTrack.js +0 -64
  85. package/dist/room/track/RemoteAudioTrack.js.map +0 -1
  86. package/dist/room/track/RemoteTrack.js +0 -49
  87. package/dist/room/track/RemoteTrack.js.map +0 -1
  88. package/dist/room/track/RemoteTrackPublication.js +0 -178
  89. package/dist/room/track/RemoteTrackPublication.js.map +0 -1
  90. package/dist/room/track/RemoteVideoTrack.js +0 -201
  91. package/dist/room/track/RemoteVideoTrack.js.map +0 -1
  92. package/dist/room/track/Track.js +0 -283
  93. package/dist/room/track/Track.js.map +0 -1
  94. package/dist/room/track/TrackPublication.js +0 -92
  95. package/dist/room/track/TrackPublication.js.map +0 -1
  96. package/dist/room/track/create.js +0 -131
  97. package/dist/room/track/create.js.map +0 -1
  98. package/dist/room/track/defaults.js +0 -21
  99. package/dist/room/track/defaults.js.map +0 -1
  100. package/dist/room/track/options.js +0 -100
  101. package/dist/room/track/options.js.map +0 -1
  102. package/dist/room/track/types.js +0 -3
  103. package/dist/room/track/types.js.map +0 -1
  104. package/dist/room/track/utils.js +0 -113
  105. package/dist/room/track/utils.js.map +0 -1
  106. package/dist/room/track/utils.test.d.ts +0 -1
  107. package/dist/room/track/utils.test.js +0 -85
  108. package/dist/room/track/utils.test.js.map +0 -1
  109. package/dist/room/utils.js +0 -79
  110. package/dist/room/utils.js.map +0 -1
  111. package/dist/version.js +0 -6
  112. package/dist/version.js.map +0 -1
  113. package/jest.config.js +0 -6
  114. package/src/api/RequestQueue.ts +0 -53
  115. package/src/api/SignalClient.ts +0 -499
  116. package/src/connect.ts +0 -100
  117. package/src/index.ts +0 -47
  118. package/src/logger.ts +0 -22
  119. package/src/options.ts +0 -149
  120. package/src/proto/google/protobuf/timestamp.ts +0 -222
  121. package/src/proto/livekit_models.ts +0 -3019
  122. package/src/proto/livekit_rtc.ts +0 -3677
  123. package/src/room/DeviceManager.ts +0 -57
  124. package/src/room/PCTransport.ts +0 -86
  125. package/src/room/RTCEngine.ts +0 -652
  126. package/src/room/Room.ts +0 -943
  127. package/src/room/errors.ts +0 -65
  128. package/src/room/events.ts +0 -424
  129. package/src/room/participant/LocalParticipant.ts +0 -734
  130. package/src/room/participant/Participant.ts +0 -269
  131. package/src/room/participant/ParticipantTrackPermission.ts +0 -32
  132. package/src/room/participant/RemoteParticipant.ts +0 -243
  133. package/src/room/participant/publishUtils.test.ts +0 -145
  134. package/src/room/participant/publishUtils.ts +0 -225
  135. package/src/room/stats.ts +0 -130
  136. package/src/room/track/LocalAudioTrack.ts +0 -137
  137. package/src/room/track/LocalTrack.ts +0 -161
  138. package/src/room/track/LocalTrackPublication.ts +0 -66
  139. package/src/room/track/LocalVideoTrack.test.ts +0 -70
  140. package/src/room/track/LocalVideoTrack.ts +0 -293
  141. package/src/room/track/RemoteAudioTrack.ts +0 -58
  142. package/src/room/track/RemoteTrack.ts +0 -62
  143. package/src/room/track/RemoteTrackPublication.ts +0 -198
  144. package/src/room/track/RemoteVideoTrack.ts +0 -235
  145. package/src/room/track/Track.ts +0 -343
  146. package/src/room/track/TrackPublication.ts +0 -120
  147. package/src/room/track/create.ts +0 -121
  148. package/src/room/track/defaults.ts +0 -23
  149. package/src/room/track/options.ts +0 -281
  150. package/src/room/track/types.ts +0 -20
  151. package/src/room/track/utils.test.ts +0 -93
  152. package/src/room/track/utils.ts +0 -115
  153. package/src/room/utils.ts +0 -70
  154. package/src/version.ts +0 -2
  155. package/tsconfig.eslint.json +0 -11
@@ -1,57 +0,0 @@
1
- const defaultId = 'default';
2
-
3
- export default class DeviceManager {
4
- private static instance?: DeviceManager;
5
-
6
- static mediaDeviceKinds: MediaDeviceKind[] = [
7
- 'audioinput',
8
- 'audiooutput',
9
- 'videoinput',
10
- ];
11
-
12
- static getInstance(): DeviceManager {
13
- if (this.instance === undefined) {
14
- this.instance = new DeviceManager();
15
- }
16
- return this.instance;
17
- }
18
-
19
- async getDevices(kind: MediaDeviceKind): Promise<MediaDeviceInfo[]> {
20
- let devices = await navigator.mediaDevices.enumerateDevices();
21
- devices = devices.filter((device) => device.kind === kind);
22
- // Chrome returns 'default' devices, we would filter them out, but put the default
23
- // device at first
24
- // we would only do this if there are more than 1 device though
25
- if (devices.length > 1 && devices[0].deviceId === defaultId) {
26
- // find another device with matching group id, and move that to 0
27
- const defaultDevice = devices[0];
28
- for (let i = 1; i < devices.length; i += 1) {
29
- if (devices[i].groupId === defaultDevice.groupId) {
30
- const temp = devices[0];
31
- devices[0] = devices[i];
32
- devices[i] = temp;
33
- break;
34
- }
35
- }
36
- return devices.filter((device) => device !== defaultDevice);
37
- }
38
-
39
- return devices;
40
- }
41
-
42
- async normalizeDeviceId(
43
- kind: MediaDeviceKind, deviceId?: string, groupId?: string,
44
- ): Promise<string | undefined> {
45
- if (deviceId !== defaultId) {
46
- return deviceId;
47
- }
48
-
49
- // resolve actual device id if it's 'default': Chrome returns it when no
50
- // device has been chosen
51
- const devices = await this.getDevices(kind);
52
-
53
- const device = devices.find((d) => d.groupId === groupId && d.deviceId !== defaultId);
54
-
55
- return device?.deviceId;
56
- }
57
- }
@@ -1,86 +0,0 @@
1
- import { debounce } from 'ts-debounce';
2
- import log from '../logger';
3
-
4
- /** @internal */
5
- export default class PCTransport {
6
- pc: RTCPeerConnection;
7
-
8
- pendingCandidates: RTCIceCandidateInit[] = [];
9
-
10
- restartingIce: boolean = false;
11
-
12
- renegotiate: boolean = false;
13
-
14
- onOffer?: (offer: RTCSessionDescriptionInit) => void;
15
-
16
- constructor(config?: RTCConfiguration) {
17
- this.pc = new RTCPeerConnection(config);
18
- }
19
-
20
- get isICEConnected(): boolean {
21
- return this.pc.iceConnectionState === 'connected' || this.pc.iceConnectionState === 'completed';
22
- }
23
-
24
- async addIceCandidate(candidate: RTCIceCandidateInit): Promise<void> {
25
- if (this.pc.remoteDescription && !this.restartingIce) {
26
- return this.pc.addIceCandidate(candidate);
27
- }
28
- this.pendingCandidates.push(candidate);
29
- }
30
-
31
- async setRemoteDescription(sd: RTCSessionDescriptionInit): Promise<void> {
32
- await this.pc.setRemoteDescription(sd);
33
-
34
- this.pendingCandidates.forEach((candidate) => {
35
- this.pc.addIceCandidate(candidate);
36
- });
37
- this.pendingCandidates = [];
38
- this.restartingIce = false;
39
-
40
- if (this.renegotiate) {
41
- this.renegotiate = false;
42
- this.createAndSendOffer();
43
- }
44
- }
45
-
46
- // debounced negotiate interface
47
- negotiate = debounce(() => { this.createAndSendOffer(); }, 100);
48
-
49
- async createAndSendOffer(options?: RTCOfferOptions) {
50
- if (this.onOffer === undefined) {
51
- return;
52
- }
53
-
54
- if (options?.iceRestart) {
55
- log.debug('restarting ICE');
56
- this.restartingIce = true;
57
- }
58
-
59
- if (this.pc.signalingState === 'have-local-offer') {
60
- // we're waiting for the peer to accept our offer, so we'll just wait
61
- // the only exception to this is when ICE restart is needed
62
- const currentSD = this.pc.remoteDescription;
63
- if (options?.iceRestart && currentSD) {
64
- // TODO: handle when ICE restart is needed but we don't have a remote description
65
- // the best thing to do is to recreate the peerconnection
66
- await this.pc.setRemoteDescription(currentSD);
67
- } else {
68
- this.renegotiate = true;
69
- return;
70
- }
71
- } else if (this.pc.signalingState === 'closed') {
72
- log.warn('could not createOffer with closed peer connection');
73
- return;
74
- }
75
-
76
- // actually negotiate
77
- log.debug('starting to negotiate');
78
- const offer = await this.pc.createOffer(options);
79
- await this.pc.setLocalDescription(offer);
80
- this.onOffer(offer);
81
- }
82
-
83
- close() {
84
- this.pc.close();
85
- }
86
- }