@livekit/rtc-node 0.13.28 → 0.13.30

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 (76) hide show
  1. package/dist/audio_stream-B4hGVcKz.d.cts +498 -0
  2. package/dist/audio_stream-DEG1JKge.d.ts +498 -0
  3. package/dist/audio_stream.cjs +21 -6
  4. package/dist/audio_stream.cjs.map +1 -1
  5. package/dist/audio_stream.d.cts +12 -22
  6. package/dist/audio_stream.d.ts +12 -22
  7. package/dist/audio_stream.d.ts.map +1 -1
  8. package/dist/audio_stream.js +19 -5
  9. package/dist/audio_stream.js.map +1 -1
  10. package/dist/data_streams/index.d.cts +1 -1
  11. package/dist/data_streams/index.d.ts +1 -1
  12. package/dist/data_streams/stream_reader.d.cts +1 -1
  13. package/dist/data_streams/stream_reader.d.ts +1 -1
  14. package/dist/data_streams/stream_writer.d.cts +1 -1
  15. package/dist/data_streams/stream_writer.d.ts +1 -1
  16. package/dist/data_streams/types.d.cts +1 -1
  17. package/dist/data_streams/types.d.ts +1 -1
  18. package/dist/ffi_client.cjs +11 -7
  19. package/dist/ffi_client.cjs.map +1 -1
  20. package/dist/ffi_client.d.cts +2 -0
  21. package/dist/ffi_client.d.ts +2 -0
  22. package/dist/ffi_client.d.ts.map +1 -1
  23. package/dist/ffi_client.js +11 -7
  24. package/dist/ffi_client.js.map +1 -1
  25. package/dist/frame_processor.cjs +6 -0
  26. package/dist/frame_processor.cjs.map +1 -1
  27. package/dist/frame_processor.d.cts +2 -0
  28. package/dist/frame_processor.d.ts +2 -0
  29. package/dist/frame_processor.d.ts.map +1 -1
  30. package/dist/frame_processor.js +6 -0
  31. package/dist/frame_processor.js.map +1 -1
  32. package/dist/index.d.cts +4 -7
  33. package/dist/index.d.ts +4 -7
  34. package/dist/participant.cjs +6 -0
  35. package/dist/participant.cjs.map +1 -1
  36. package/dist/participant.d.cts +14 -153
  37. package/dist/participant.d.ts +14 -153
  38. package/dist/participant.d.ts.map +1 -1
  39. package/dist/participant.js +6 -0
  40. package/dist/participant.js.map +1 -1
  41. package/dist/room.cjs +63 -0
  42. package/dist/room.cjs.map +1 -1
  43. package/dist/room.d.cts +12 -219
  44. package/dist/room.d.ts +12 -219
  45. package/dist/room.d.ts.map +1 -1
  46. package/dist/room.js +63 -0
  47. package/dist/room.js.map +1 -1
  48. package/dist/track.cjs +123 -0
  49. package/dist/track.cjs.map +1 -1
  50. package/dist/track.d.cts +15 -42
  51. package/dist/track.d.ts +15 -42
  52. package/dist/track.d.ts.map +1 -1
  53. package/dist/track.js +123 -0
  54. package/dist/track.js.map +1 -1
  55. package/dist/track_publication.d.cts +14 -47
  56. package/dist/track_publication.d.ts +14 -47
  57. package/dist/{stream_reader-CuG4b8Y-.d.cts → types-_PdPVish.d.cts} +40 -40
  58. package/dist/{stream_reader-CuG4b8Y-.d.ts → types-_PdPVish.d.ts} +40 -40
  59. package/dist/version.cjs +1 -1
  60. package/dist/version.cjs.map +1 -1
  61. package/dist/version.d.cts +1 -1
  62. package/dist/version.d.ts +1 -1
  63. package/dist/version.js +1 -1
  64. package/dist/version.js.map +1 -1
  65. package/dist/video_stream.d.cts +12 -2
  66. package/dist/video_stream.d.ts +12 -2
  67. package/package.json +4 -4
  68. package/src/audio_stream.ts +28 -4
  69. package/src/audio_stream_room_lifecycle.test.ts +753 -0
  70. package/src/bun_runtime.test.ts +27 -0
  71. package/src/ffi_client.ts +6 -0
  72. package/src/frame_processor.ts +4 -0
  73. package/src/participant.ts +17 -0
  74. package/src/room.ts +89 -1
  75. package/src/track.ts +141 -0
  76. package/src/version.ts +1 -1
package/dist/room.d.ts CHANGED
@@ -1,225 +1,18 @@
1
- import { RoomInfo, ConnectionQuality, DataPacketKind, EncryptionType, ConnectionState, DisconnectReason, IceTransportType, ContinualGatheringPolicy, IceServer, SimulateScenarioKind, RoomOptions as RoomOptions$1 } from '@livekit/rtc-ffi-bindings';
2
- import { TypedEventEmitter } from '@livekit/typed-emitter';
3
- import { g as TextStreamHandler, f as ByteStreamHandler } from './stream_reader-CuG4b8Y-.js';
4
- import { E2EEManager, E2EEOptions } from './e2ee.js';
5
- import { RemoteParticipant, LocalParticipant, Participant } from './participant.js';
6
- import { LocalTrack, RemoteTrack } from './track.js';
7
- import { LocalTrackPublication, RemoteTrackPublication, TrackPublication } from './track_publication.js';
8
- import { ChatMessage } from './types.js';
1
+ import '@livekit/rtc-ffi-bindings';
2
+ import '@livekit/typed-emitter';
3
+ import './types-_PdPVish.js';
4
+ import './e2ee.js';
5
+ export { C as ConnectError, j as Room, o as RoomCallbacks, k as RoomEvent, l as RoomOptions, m as RtcConfiguration, p as defaultRoomOptions, q as defaultRtcConfiguration } from './audio_stream-DEG1JKge.js';
6
+ import './types.js';
7
+ import 'node:stream/web';
8
+ import './audio_frame.js';
9
+ import './frame_processor.js';
10
+ import './video_frame.js';
11
+ import './audio_source.js';
12
+ import './ffi_client.js';
9
13
  import '@livekit/mutex';
10
14
  import 'node:fs';
11
15
  import './data_streams/stream_writer.js';
12
- import './ffi_client.js';
13
16
  import './rpc.js';
14
17
  import './transcription.js';
15
- import './audio_source.js';
16
- import './audio_frame.js';
17
18
  import './video_source.js';
18
- import './video_frame.js';
19
-
20
- interface RtcConfiguration {
21
- iceTransportType: IceTransportType;
22
- continualGatheringPolicy: ContinualGatheringPolicy;
23
- iceServers: IceServer[];
24
- }
25
- declare const defaultRtcConfiguration: RtcConfiguration;
26
- interface RoomOptions {
27
- autoSubscribe: boolean;
28
- dynacast: boolean;
29
- /**
30
- * @deprecated Use `encryption` instead. See x for details
31
- */
32
- e2ee?: E2EEOptions;
33
- encryption?: E2EEOptions;
34
- rtcConfig?: RtcConfiguration;
35
- }
36
- declare const defaultRoomOptions: RoomOptions$1;
37
- declare const Room_base: new () => TypedEventEmitter<RoomCallbacks>;
38
- declare class Room extends Room_base {
39
- private info?;
40
- private ffiHandle?;
41
- /**
42
- * used to ensure events are processed sequentially and allow for
43
- * the local participant to acquire the lock while doing state updates related to FFI events
44
- * before processing the next events
45
- */
46
- private ffiEventLock;
47
- private byteStreamControllers;
48
- private textStreamControllers;
49
- private byteStreamHandlers;
50
- private textStreamHandlers;
51
- private preConnectEvents;
52
- private disconnectController;
53
- private hasCleanedUp;
54
- private _token?;
55
- private _serverUrl?;
56
- private _connectionState;
57
- e2eeManager?: E2EEManager;
58
- remoteParticipants: Map<string, RemoteParticipant>;
59
- localParticipant?: LocalParticipant;
60
- constructor();
61
- get connectionState(): ConnectionState;
62
- get name(): string | undefined;
63
- get metadata(): string | undefined;
64
- get isConnected(): boolean;
65
- /** @internal */
66
- get token(): string | undefined;
67
- /** @internal */
68
- get serverUrl(): string | undefined;
69
- private sidPromise?;
70
- /**
71
- * Gets the room's server ID. This ID is assigned by the LiveKit server
72
- * and is unique for each room session.
73
- * SID is assigned asynchronously after connection.
74
- * @returns Promise that resolves to the room's server ID, or empty string if not connected
75
- */
76
- getSid(): Promise<string>;
77
- get numParticipants(): number;
78
- get numPublishers(): number;
79
- get creationTime(): Date;
80
- get isRecording(): boolean;
81
- /**
82
- * The time in seconds after which a room will be closed after the last
83
- * participant has disconnected.
84
- */
85
- get departureTimeout(): number;
86
- /**
87
- * The time in seconds after which an empty room will be automatically closed.
88
- */
89
- get emptyTimeout(): number;
90
- /**
91
- * Connects to a LiveKit room using the provided URL and access token.
92
- * @param url - The WebSocket URL of the LiveKit server
93
- * @param token - A valid LiveKit access token for authentication
94
- * @param opts - Optional room configuration options
95
- * @throws ConnectError - if connection fails
96
- */
97
- connect(url: string, token: string, opts?: RoomOptions): Promise<void>;
98
- /**
99
- * Disconnects from the room and cleans up all resources.
100
- * This will stop all tracks and close the connection.
101
- */
102
- disconnect(): Promise<void>;
103
- /**
104
- * Trigger a reconnection / chaos scenario for testing. Most useful in
105
- * tests to deterministically force a Resume (signal-only reconnect that
106
- * preserves the PeerConnection and existing publications) or a full
107
- * reconnect (the SDK rebuilds the RtcSession and re-publishes existing
108
- * local tracks; `RoomEvent.Reconnected` fires).
109
- */
110
- simulateScenario(scenario: SimulateScenarioKind): Promise<void>;
111
- private updateConnectionState;
112
- private cleanupOnDisconnect;
113
- /**
114
- * Registers a handler for incoming text data streams on a specific topic.
115
- * Text streams are used for receiving structured text data from other participants.
116
- * @param topic - The topic to listen for text streams on
117
- * @param callback - Function to handle incoming text stream data
118
- * @throws Error - if a handler for this topic is already registered
119
- */
120
- registerTextStreamHandler(topic: string, callback: TextStreamHandler): void;
121
- unregisterTextStreamHandler(topic: string): void;
122
- /**
123
- * Registers a handler for incoming byte data streams on a specific topic.
124
- * Byte streams are used for receiving binary data like files from other participants.
125
- * @param topic - The topic to listen for byte streams on
126
- * @param callback - Function to handle incoming byte stream data
127
- * @throws Error - if a handler for this topic is already registered
128
- */
129
- registerByteStreamHandler(topic: string, callback: ByteStreamHandler): void;
130
- unregisterByteStreamHandler(topic: string): void;
131
- private onFfiEvent;
132
- private processFfiEvent;
133
- private retrieveParticipantByIdentity;
134
- private requireParticipantByIdentity;
135
- private requireRemoteParticipant;
136
- private requirePublicationOfParticipant;
137
- private requirePublicationOfRemoteParticipant;
138
- private createRemoteParticipant;
139
- private handleStreamHeader;
140
- private handleStreamChunk;
141
- private handleStreamTrailer;
142
- }
143
- declare class ConnectError extends Error {
144
- constructor(message: string);
145
- }
146
- type RoomCallbacks = {
147
- participantConnected: (participant: RemoteParticipant) => void;
148
- participantDisconnected: (participant: RemoteParticipant) => void;
149
- localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
150
- localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
151
- /**
152
- * Fired when the SDK auto-republished a local track during a full
153
- * reconnect. The publication object's identity is preserved (the same
154
- * instance is updated in place with the new server-assigned SIDs);
155
- * `previousSid` is provided for callers that key external state on the
156
- * old SID and need to reconcile.
157
- */
158
- localTrackRepublished: (publication: LocalTrackPublication, previousSid: string, participant: LocalParticipant) => void;
159
- localTrackSubscribed: (track: LocalTrack) => void;
160
- trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
161
- trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
162
- trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
163
- trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
164
- trackSubscriptionFailed: (trackSid: string, participant: RemoteParticipant, reason?: string) => void;
165
- trackMuted: (publication: TrackPublication, participant: Participant) => void;
166
- trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
167
- activeSpeakersChanged: (speakers: Participant[]) => void;
168
- roomMetadataChanged: (metadata: string) => void;
169
- roomInfoUpdated: (info: RoomInfo) => void;
170
- participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;
171
- participantNameChanged: (name: string, participant: Participant) => void;
172
- participantAttributesChanged: (changedAttributes: Record<string, string>, participant: Participant) => void;
173
- participantEncryptionStatusChanged: (isEncrypted: boolean, participant: Participant) => void;
174
- connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
175
- dataReceived: (payload: Uint8Array, participant?: RemoteParticipant, kind?: DataPacketKind, topic?: string, encryptionType?: EncryptionType) => void;
176
- chatMessage: (message: ChatMessage, participant?: Participant) => void;
177
- dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;
178
- encryptionError: (error: Error) => void;
179
- connectionStateChanged: (state: ConnectionState) => void;
180
- connected: () => void;
181
- disconnected: (reason: DisconnectReason) => void;
182
- reconnecting: () => void;
183
- reconnected: () => void;
184
- roomSidChanged: (sid: string) => void;
185
- roomUpdated: () => void;
186
- moved: () => void;
187
- tokenRefreshed: () => void;
188
- };
189
- declare enum RoomEvent {
190
- ParticipantConnected = "participantConnected",
191
- ParticipantDisconnected = "participantDisconnected",
192
- LocalTrackPublished = "localTrackPublished",
193
- LocalTrackUnpublished = "localTrackUnpublished",
194
- LocalTrackRepublished = "localTrackRepublished",
195
- LocalTrackSubscribed = "localTrackSubscribed",
196
- TrackPublished = "trackPublished",
197
- TrackUnpublished = "trackUnpublished",
198
- TrackSubscribed = "trackSubscribed",
199
- TrackUnsubscribed = "trackUnsubscribed",
200
- TrackSubscriptionFailed = "trackSubscriptionFailed",
201
- TrackMuted = "trackMuted",
202
- TrackUnmuted = "trackUnmuted",
203
- ActiveSpeakersChanged = "activeSpeakersChanged",
204
- RoomMetadataChanged = "roomMetadataChanged",
205
- RoomSidChanged = "roomSidChanged",
206
- ParticipantMetadataChanged = "participantMetadataChanged",
207
- ParticipantNameChanged = "participantNameChanged",
208
- ParticipantAttributesChanged = "participantAttributesChanged",
209
- ParticipantEncryptionStatusChanged = "participantEncryptionStatusChanged",
210
- ConnectionQualityChanged = "connectionQualityChanged",
211
- DataReceived = "dataReceived",
212
- ChatMessage = "chatMessage",
213
- DtmfReceived = "dtmfReceived",
214
- EncryptionError = "encryptionError",
215
- ConnectionStateChanged = "connectionStateChanged",
216
- Connected = "connected",
217
- Disconnected = "disconnected",
218
- Reconnecting = "reconnecting",
219
- Reconnected = "reconnected",
220
- RoomUpdated = "roomUpdated",
221
- Moved = "moved",
222
- TokenRefreshed = "tokenRefreshed"
223
- }
224
-
225
- export { ConnectError, Room, type RoomCallbacks, RoomEvent, type RoomOptions, type RtcConfiguration, defaultRoomOptions, defaultRtcConfiguration };
@@ -1 +1 @@
1
- {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
package/dist/room.js CHANGED
@@ -72,6 +72,7 @@ class Room extends EventEmitter {
72
72
  }
73
73
  };
74
74
  this.processFfiEvent = async (ffiEvent) => {
75
+ var _a, _b;
75
76
  if (!this.localParticipant || !this.ffiHandle || !this.info) {
76
77
  throw new Error("processFfiEvent called before connect");
77
78
  }
@@ -109,11 +110,21 @@ class Room extends EventEmitter {
109
110
  }
110
111
  } else if (ev.case == "localTrackPublished") {
111
112
  const publication = this.localParticipant.trackPublications.get(ev.value.trackSid);
113
+ if (publication == null ? void 0 : publication.track) {
114
+ publication.track.setRoom(this);
115
+ }
112
116
  this.emit("localTrackPublished" /* LocalTrackPublished */, publication, this.localParticipant);
113
117
  } else if (ev.case == "localTrackUnpublished") {
114
118
  const publication = this.localParticipant.trackPublications.get(ev.value.publicationSid);
119
+ const track = publication == null ? void 0 : publication.track;
120
+ if (track) {
121
+ track.setRoom(null);
122
+ }
115
123
  this.localParticipant.trackPublications.delete(ev.value.publicationSid);
116
124
  this.emit("localTrackUnpublished" /* LocalTrackUnpublished */, publication, this.localParticipant);
125
+ if (track && publication) {
126
+ publication.track = void 0;
127
+ }
117
128
  } else if (ev.case == "localTrackRepublished") {
118
129
  const value = ev.value;
119
130
  const previousSid = value.previousSid;
@@ -123,6 +134,10 @@ class Room extends EventEmitter {
123
134
  publication.updateInfo(newInfo);
124
135
  this.localParticipant.trackPublications.delete(previousSid);
125
136
  this.localParticipant.trackPublications.set(publication.sid, publication);
137
+ if ((_a = publication.track) == null ? void 0 : _a.info) {
138
+ publication.track.info.sid = publication.sid;
139
+ publication.track.setRoom(this);
140
+ }
126
141
  this.emit("localTrackRepublished" /* LocalTrackRepublished */, publication, previousSid, this.localParticipant);
127
142
  } else {
128
143
  log.warn(`RoomEvent.LocalTrackRepublished: previous publication not found: ${previousSid}`);
@@ -170,6 +185,7 @@ class Room extends EventEmitter {
170
185
  } else if (trackInfo.kind == TrackKind.KIND_AUDIO) {
171
186
  publication.track = new RemoteAudioTrack(ownedTrack);
172
187
  }
188
+ (_b = publication.track) == null ? void 0 : _b.setRoom(this);
173
189
  this.emit("trackSubscribed" /* TrackSubscribed */, publication.track, publication, participant);
174
190
  } catch (e) {
175
191
  log.warn(`RoomEvent.TrackSubscribed: ${e.message}`);
@@ -181,6 +197,7 @@ class Room extends EventEmitter {
181
197
  ev.value.trackSid
182
198
  );
183
199
  const track = publication.track;
200
+ track.setRoom(null);
184
201
  publication.track = void 0;
185
202
  publication.subscribed = false;
186
203
  this.emit("trackUnsubscribed" /* TrackUnsubscribed */, track, publication, participant);
@@ -428,6 +445,33 @@ class Room extends EventEmitter {
428
445
  }
429
446
  return this.sidPromise;
430
447
  }
448
+ async getRtcStats() {
449
+ if (!this.isConnected || !this.ffiHandle) {
450
+ throw new Error("getRtcStats requires a connected room");
451
+ }
452
+ const requestId = FfiClient.instance.getNextRequestAsyncId();
453
+ const cbPromise = FfiClient.instance.waitFor(
454
+ (ev) => ev.message.case === "getSessionStats" && ev.message.value.asyncId === requestId,
455
+ { signal: this.disconnectController.signal }
456
+ );
457
+ FfiClient.instance.request({
458
+ message: {
459
+ case: "getSessionStats",
460
+ value: {
461
+ roomHandle: this.ffiHandle.handle,
462
+ requestAsyncId: requestId
463
+ }
464
+ }
465
+ });
466
+ const cb = await cbPromise;
467
+ if (cb.message.case === "error") {
468
+ throw new Error(cb.message.value);
469
+ } else if (cb.message.case === "result") {
470
+ return cb.message.value;
471
+ } else {
472
+ throw new Error("could not retrieve rtc stats");
473
+ }
474
+ }
431
475
  get numParticipants() {
432
476
  var _a;
433
477
  return ((_a = this.info) == null ? void 0 : _a.numParticipants) ?? 0;
@@ -513,6 +557,14 @@ class Room extends EventEmitter {
513
557
  }
514
558
  }
515
559
  this.updateConnectionState(ConnectionState.CONN_CONNECTED);
560
+ FfiClient.instance.request({
561
+ message: {
562
+ case: "readyForRoomEvent",
563
+ value: {
564
+ roomHandle: this.ffiHandle.handle
565
+ }
566
+ }
567
+ });
516
568
  break;
517
569
  case "error":
518
570
  default:
@@ -587,6 +639,7 @@ class Room extends EventEmitter {
587
639
  // disconnect() both race to get here — whichever wins emits the events,
588
640
  // the other is a no-op. A reconnect via connect() clears hasCleanedUp.
589
641
  cleanupOnDisconnect(reason = DisconnectReason.CLIENT_INITIATED) {
642
+ var _a, _b;
590
643
  if (this.hasCleanedUp) return;
591
644
  this.hasCleanedUp = true;
592
645
  for (const [, streamController] of this.byteStreamControllers) {
@@ -603,6 +656,16 @@ class Room extends EventEmitter {
603
656
  }
604
657
  }
605
658
  this.textStreamControllers.clear();
659
+ if (this.localParticipant) {
660
+ for (const pub of this.localParticipant.trackPublications.values()) {
661
+ (_a = pub.track) == null ? void 0 : _a.setRoom(null);
662
+ }
663
+ }
664
+ for (const participant of this.remoteParticipants.values()) {
665
+ for (const pub of participant.trackPublications.values()) {
666
+ (_b = pub.track) == null ? void 0 : _b.setRoom(null);
667
+ }
668
+ }
606
669
  this.sidPromise = void 0;
607
670
  this.disconnectController.abort();
608
671
  this.updateConnectionState(ConnectionState.CONN_DISCONNECTED);