@livekit/rtc-node 0.3.0-rc.2 → 1.0.0-alpha.1

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.
package/Cargo.toml CHANGED
@@ -7,12 +7,13 @@ version = "0.0.1"
7
7
  crate-type = ["cdylib"]
8
8
 
9
9
  [dependencies]
10
- napi = { version = "2.12.2", default-features = false, features = ["napi6"] }
10
+ napi = { version = "2.12.2", default-features = false, features = ["async", "napi6"] }
11
11
  napi-derive = "2.12.2"
12
12
  livekit-ffi = { path = "./rust-sdks/livekit-ffi" }
13
13
  prost = "0.12"
14
14
  prost-types = "0.12"
15
15
  log = "0.4.20"
16
+ tokio = { version = "1.37.0", features = ["full"] }
16
17
 
17
18
  [build-dependencies]
18
19
  napi-build = "2.0.1"
@@ -18,6 +18,7 @@ export declare class FfiClient extends FfiClient_base {
18
18
  request<T>(req: PartialMessage<FfiRequest>): T;
19
19
  copyBuffer(ptr: bigint, len: number): Uint8Array;
20
20
  retrievePtr(data: Uint8Array): bigint;
21
+ dispose(): Promise<void>;
21
22
  waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T>;
22
23
  }
23
24
  //# sourceMappingURL=ffi_client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,SAAS,EAKV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,oBAAY,cAAc;IACxB,QAAQ,cAAc;CACvB;wCAEyD,aAAa,kBAAkB,CAAC;AAA1F,qBAAa,SAAU,SAAQ,cAA4D;IACzF,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE3B,gBAAgB;IAChB,MAAM,KAAK,QAAQ,IAAI,SAAS,CAI/B;;IAWD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;IAO9C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAIhD,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI/B,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAWnE"}
1
+ {"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,YAAY,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,SAAS,EAMV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC;CACtC,CAAC;AAEF,oBAAY,cAAc;IACxB,QAAQ,cAAc;CACvB;wCAEyD,aAAa,kBAAkB,CAAC;AAA1F,qBAAa,SAAU,SAAQ,cAA4D;IACzF,MAAM,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC;IAE3B,gBAAgB;IAChB,MAAM,KAAK,QAAQ,IAAI,SAAS,CAI/B;;IAWD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC;IAO9C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,UAAU;IAIhD,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAI/B,OAAO;IAIP,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC;CAWnE"}
@@ -3,7 +3,7 @@
3
3
  // SPDX-License-Identifier: Apache-2.0
4
4
  import { FfiRequest, FfiResponse, FfiEvent } from './proto/ffi_pb.js';
5
5
  import EventEmitter from 'events';
6
- import { FfiHandle, livekitFfiRequest, livekitInitialize, livekitCopyBuffer, livekitRetrievePtr, } from './napi/native.js';
6
+ import { FfiHandle, livekitFfiRequest, livekitInitialize, livekitDispose, livekitCopyBuffer, livekitRetrievePtr, } from './napi/native.js';
7
7
  export { FfiHandle, FfiEvent, FfiResponse, FfiRequest };
8
8
  export var FfiClientEvent;
9
9
  (function (FfiClientEvent) {
@@ -35,6 +35,9 @@ export class FfiClient extends EventEmitter {
35
35
  retrievePtr(data) {
36
36
  return livekitRetrievePtr(data);
37
37
  }
38
+ async dispose() {
39
+ return await livekitDispose();
40
+ }
38
41
  async waitFor(predicate) {
39
42
  return new Promise((resolve, _) => {
40
43
  let listener = (ev) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ffi_client.js","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAMxD,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,wCAAsB,CAAA;AACxB,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB;AAED,MAAM,OAAO,SAAU,SAAS,YAA2D;IAGzF,gBAAgB;IAChB,MAAM,KAAK,QAAQ;QACjB,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,SAAS,CAAC,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAE5D,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAER,iBAAiB,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAI,GAA+B;QACxC,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAU,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,GAAW;QACjC,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,IAAgB;QAC1B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,SAAoC;QACnD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,QAAQ,GAAG,CAAC,EAAY,EAAE,EAAE;gBAC9B,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAU,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"ffi_client.js","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AAEtC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AAMxD,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,wCAAsB,CAAA;AACxB,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB;AAED,MAAM,OAAO,SAAU,SAAS,YAA2D;IAGzF,gBAAgB;IAChB,MAAM,KAAK,QAAQ;QACjB,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,SAAS,CAAC,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAE5D,OAAO,SAAS,CAAC,OAAO,CAAC;IAC3B,CAAC;IAED;QACE,KAAK,EAAE,CAAC;QAER,iBAAiB,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC;IAED,OAAO,CAAI,GAA+B;QACxC,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC3C,OAAO,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAU,CAAC;IAC7D,CAAC;IAED,UAAU,CAAC,GAAW,EAAE,GAAW;QACjC,OAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,WAAW,CAAC,IAAgB;QAC1B,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,OAAO;QACX,OAAO,MAAM,cAAc,EAAE,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,SAAoC;QACnD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,QAAQ,GAAG,CAAC,EAAY,EAAE,EAAE;gBAC9B,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;oBAClB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;oBAC5C,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,KAAU,CAAC,CAAC;gBACjC,CAAC;YACH,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -271,10 +271,17 @@ if (!nativeBinding) {
271
271
  throw new Error(`Failed to load native binding`);
272
272
  }
273
273
 
274
- const { livekitInitialize, livekitFfiRequest, livekitRetrievePtr, livekitCopyBuffer, FfiHandle } =
275
- nativeBinding;
274
+ const {
275
+ livekitInitialize,
276
+ livekitDispose,
277
+ livekitFfiRequest,
278
+ livekitRetrievePtr,
279
+ livekitCopyBuffer,
280
+ FfiHandle,
281
+ } = nativeBinding;
276
282
 
277
283
  module.exports.livekitInitialize = livekitInitialize;
284
+ module.exports.livekitDispose = livekitDispose;
278
285
  module.exports.livekitFfiRequest = livekitFfiRequest;
279
286
  module.exports.livekitRetrievePtr = livekitRetrievePtr;
280
287
  module.exports.livekitCopyBuffer = livekitCopyBuffer;
@@ -4,6 +4,7 @@
4
4
  /* auto-generated by NAPI-RS */
5
5
 
6
6
  export function livekitInitialize(callback: (data: Uint8Array) => void, captureLogs: boolean): void;
7
+ export function livekitDispose(): Promise<void>;
7
8
  export function livekitFfiRequest(data: Uint8Array): Uint8Array;
8
9
  export function livekitRetrievePtr(handle: Uint8Array): bigint;
9
10
  export function livekitCopyBuffer(ptr: bigint, len: number): Uint8Array;
@@ -8,6 +8,7 @@
8
8
  import native from './native.cjs';
9
9
  export const {
10
10
  livekitInitialize,
11
+ livekitDispose,
11
12
  livekitCopyBuffer,
12
13
  livekitRetrievePtr,
13
14
  livekitFfiRequest,
package/dist/room.d.ts CHANGED
@@ -3,8 +3,7 @@ import { LocalParticipant, Participant, RemoteParticipant } from './participant.
3
3
  import { ConnectionQuality, ConnectionState, ContinualGatheringPolicy, DataPacketKind, IceServer, IceTransportType } from './proto/room_pb.js';
4
4
  import { E2EEManager, E2EEOptions } from './e2ee.js';
5
5
  import { LocalTrackPublication, RemoteTrackPublication, TrackPublication } from './track_publication.js';
6
- import { LocalTrack, RemoteTrack } from './track.js';
7
- import { EncryptionState } from './proto/e2ee_pb.js';
6
+ import { RemoteTrack } from './track.js';
8
7
  export interface RtcConfiguration {
9
8
  iceTransportType: IceTransportType;
10
9
  continualGatheringPolicy: ContinualGatheringPolicy;
@@ -44,25 +43,25 @@ export declare class ConnectError extends Error {
44
43
  export type RoomCallbacks = {
45
44
  participantConnected: (participant: RemoteParticipant) => void;
46
45
  participantDisconnected: (participant: RemoteParticipant) => void;
47
- localTrackPublished: (publication: LocalTrackPublication, track: LocalTrack) => void;
48
- localTrackUnpublished: (publication: LocalTrackPublication) => void;
46
+ localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
47
+ localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
49
48
  trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
50
49
  trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
51
50
  trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
52
51
  trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
53
- trackSubscriptionFailed: (participant: RemoteParticipant, publicationSid: string, error: string) => void;
54
- trackMuted: (participant: Participant, publication: TrackPublication) => void;
55
- trackUnmuted: (participant: Participant, publication: TrackPublication) => void;
56
- activeSpeakersChanged: (speakers: RemoteParticipant[]) => void;
57
- roomMetadataChanged: (oldMetadata: string, metadata: string) => void;
58
- participantMetadataChanged: (participant: Participant, oldMetadata: string, metadata: string) => void;
59
- participantNameChanged: (participant: Participant, oldName: string, name: string) => void;
60
- connectionQualityChanged: (participant: Participant, quality: ConnectionQuality) => void;
61
- dataReceived: (data: Uint8Array, kind: DataPacketKind, participant?: RemoteParticipant) => void;
62
- e2eeStateChanged: (participant: Participant, state: EncryptionState) => void;
52
+ trackSubscriptionFailed: (trackSid: string, participant: RemoteParticipant, reason?: string) => void;
53
+ trackMuted: (publication: TrackPublication, participant: Participant) => void;
54
+ trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
55
+ activeSpeakersChanged: (speakers: Participant[]) => void;
56
+ roomMetadataChanged: (metadata: string) => void;
57
+ participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;
58
+ participantNameChanged: (name: string, participant: Participant) => void;
59
+ connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
60
+ dataReceived: (payload: Uint8Array, participant?: RemoteParticipant, kind?: DataPacketKind, topic?: string) => void;
61
+ encryptionError: (error: Error) => void;
63
62
  connectionStateChanged: (state: ConnectionState) => void;
64
63
  connected: () => void;
65
- disconnected: () => void;
64
+ disconnected: (reason?: string) => void;
66
65
  reconnecting: () => void;
67
66
  reconnected: () => void;
68
67
  };
@@ -84,8 +83,8 @@ export declare enum RoomEvent {
84
83
  ParticipantNameChanged = "participantNameChanged",
85
84
  ConnectionQualityChanged = "connectionQualityChanged",
86
85
  DataReceived = "dataReceived",
87
- E2EEStateChanged = "e2eeStateChanged",
88
- ConenctionStateChanged = "connectionStateChanged",
86
+ EncryptionError = "encryptionError",
87
+ ConnectionStateChanged = "connectionStateChanged",
89
88
  Connected = "connected",
90
89
  Disconnected = "disconnected",
91
90
  Reconnecting = "reconnecting",
@@ -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
@@ -9,6 +9,7 @@ import { E2EEManager } from './e2ee.js';
9
9
  import { RemoteTrackPublication, } from './track_publication.js';
10
10
  import { RemoteAudioTrack, RemoteVideoTrack } from './track.js';
11
11
  import { TrackKind } from './proto/track_pb.js';
12
+ import { EncryptionState } from './proto/e2ee_pb.js';
12
13
  export const defaultRtcConfiguration = {
13
14
  iceTransportType: IceTransportType.TRANSPORT_ALL,
14
15
  continualGatheringPolicy: ContinualGatheringPolicy.GATHER_CONTINUALLY,
@@ -43,12 +44,12 @@ export class Room extends EventEmitter {
43
44
  }
44
45
  else if (ev.case == 'localTrackPublished') {
45
46
  let publication = this.localParticipant.trackPublications.get(ev.value.trackSid);
46
- this.emit(RoomEvent.LocalTrackPublished, publication, publication.track);
47
+ this.emit(RoomEvent.LocalTrackPublished, publication, this.localParticipant);
47
48
  }
48
49
  else if (ev.case == 'localTrackUnpublished') {
49
50
  let publication = this.localParticipant.trackPublications.get(ev.value.publicationSid);
50
51
  this.localParticipant.trackPublications.delete(ev.value.publicationSid);
51
- this.emit(RoomEvent.LocalTrackUnpublished, publication);
52
+ this.emit(RoomEvent.LocalTrackUnpublished, publication, this.localParticipant);
52
53
  }
53
54
  else if (ev.case == 'trackPublished') {
54
55
  let participant = this.getRemoteParticipantBySid(ev.value.participantSid);
@@ -84,7 +85,7 @@ export class Room extends EventEmitter {
84
85
  }
85
86
  else if (ev.case == 'trackSubscriptionFailed') {
86
87
  let participant = this.getRemoteParticipantBySid(ev.value.participantSid);
87
- this.emit(RoomEvent.TrackSubscriptionFailed, participant, ev.value.trackSid, ev.value.error);
88
+ this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid, participant, ev.value.error);
88
89
  }
89
90
  else if (ev.case == 'trackMuted') {
90
91
  let participant = this.retrieveParticipant(ev.value.participantSid);
@@ -93,7 +94,7 @@ export class Room extends EventEmitter {
93
94
  if (publication.track) {
94
95
  publication.track.info.muted = true;
95
96
  }
96
- this.emit(RoomEvent.TrackMuted, participant, publication);
97
+ this.emit(RoomEvent.TrackMuted, publication, participant);
97
98
  }
98
99
  else if (ev.case == 'trackUnmuted') {
99
100
  let participant = this.retrieveParticipant(ev.value.participantSid);
@@ -102,32 +103,29 @@ export class Room extends EventEmitter {
102
103
  if (publication.track) {
103
104
  publication.track.info.muted = false;
104
105
  }
105
- this.emit(RoomEvent.TrackUnmuted, participant, publication);
106
+ this.emit(RoomEvent.TrackUnmuted, publication, participant);
106
107
  }
107
108
  else if (ev.case == 'activeSpeakersChanged') {
108
109
  let activeSpeakers = ev.value.participantSids.map((sid) => this.getRemoteParticipantBySid(sid));
109
110
  this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);
110
111
  }
111
112
  else if (ev.case == 'roomMetadataChanged') {
112
- let oldMetadata = this.info.metadata;
113
113
  this.info.metadata = ev.value.metadata;
114
- this.emit(RoomEvent.RoomMetadataChanged, oldMetadata, this.info.metadata);
114
+ this.emit(RoomEvent.RoomMetadataChanged, this.info.metadata);
115
115
  }
116
116
  else if (ev.case == 'participantMetadataChanged') {
117
117
  let participant = this.retrieveParticipant(ev.value.participantSid);
118
- let oldMetadata = participant.metadata;
119
118
  participant.info.metadata = ev.value.metadata;
120
- this.emit(RoomEvent.ParticipantMetadataChanged, participant, oldMetadata, participant.metadata);
119
+ this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);
121
120
  }
122
121
  else if (ev.case == 'participantNameChanged') {
123
122
  let participant = this.retrieveParticipant(ev.value.participantSid);
124
- let oldName = participant.name;
125
123
  participant.info.name = ev.value.name;
126
- this.emit(RoomEvent.ParticipantNameChanged, participant, oldName, participant.name);
124
+ this.emit(RoomEvent.ParticipantNameChanged, participant.name, participant);
127
125
  }
128
126
  else if (ev.case == 'connectionQualityChanged') {
129
127
  let participant = this.retrieveParticipant(ev.value.participantSid);
130
- this.emit(RoomEvent.ConnectionQualityChanged, participant, ev.value.quality);
128
+ this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality, participant);
131
129
  }
132
130
  else if (ev.case == 'dataReceived') {
133
131
  // Can be undefined if the data is sent from a Server SDK
@@ -135,15 +133,17 @@ export class Room extends EventEmitter {
135
133
  let info = ev.value.data;
136
134
  let buffer = FfiClient.instance.copyBuffer(info.data.dataPtr, Number(info.data.dataLen));
137
135
  new FfiHandle(info.handle.id).dispose();
138
- this.emit(RoomEvent.DataReceived, buffer, ev.value.kind, participant);
136
+ this.emit(RoomEvent.DataReceived, buffer, participant, ev.value.kind, ev.value.topic);
139
137
  }
140
138
  else if (ev.case == 'e2eeStateChanged') {
141
- let participant = this.retrieveParticipant(ev.value.participantSid);
142
- this.emit(RoomEvent.E2EEStateChanged, participant, ev.value.state);
139
+ if (ev.value.state == EncryptionState.INTERNAL_ERROR) {
140
+ // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR
141
+ this.emit(RoomEvent.EncryptionError, new Error('internal server error'));
142
+ }
143
143
  }
144
144
  else if (ev.case == 'connectionStateChanged') {
145
145
  this.connectionState = ev.value.state;
146
- this.emit(RoomEvent.ConenctionStateChanged, this.connectionState);
146
+ this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);
147
147
  /*} else if (ev.case == 'connected') {
148
148
  this.emit(RoomEvent.Connected);*/
149
149
  }
@@ -227,6 +227,9 @@ export class Room extends EventEmitter {
227
227
  },
228
228
  },
229
229
  });
230
+ FfiClient.instance.removeAllListeners();
231
+ await FfiClient.instance.dispose();
232
+ this.removeAllListeners();
230
233
  }
231
234
  getRemoteParticipantBySid(sid) {
232
235
  return Array.from(this.remoteParticipants.values()).find((p) => p.sid === sid);
@@ -272,8 +275,8 @@ export var RoomEvent;
272
275
  RoomEvent["ParticipantNameChanged"] = "participantNameChanged";
273
276
  RoomEvent["ConnectionQualityChanged"] = "connectionQualityChanged";
274
277
  RoomEvent["DataReceived"] = "dataReceived";
275
- RoomEvent["E2EEStateChanged"] = "e2eeStateChanged";
276
- RoomEvent["ConenctionStateChanged"] = "connectionStateChanged";
278
+ RoomEvent["EncryptionError"] = "encryptionError";
279
+ RoomEvent["ConnectionStateChanged"] = "connectionStateChanged";
277
280
  RoomEvent["Connected"] = "connected";
278
281
  RoomEvent["Disconnected"] = "disconnected";
279
282
  RoomEvent["Reconnecting"] = "reconnecting";
package/dist/room.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"room.js","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@livekit/rtc-node",
3
3
  "description": "LiveKit RTC Node",
4
4
  "license": "Apache-2.0",
5
- "version": "0.3.0-rc.2",
5
+ "version": "1.0.0-alpha.1",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "type": "module",
@@ -40,11 +40,11 @@
40
40
  "node": ">= 18"
41
41
  },
42
42
  "optionalDependencies": {
43
- "@livekit/rtc-node-darwin-arm64": "0.3.0-rc.2",
44
- "@livekit/rtc-node-darwin-x64": "0.3.0-rc.2",
45
- "@livekit/rtc-node-linux-arm64-gnu": "0.3.0-rc.2",
46
- "@livekit/rtc-node-linux-x64-gnu": "0.3.0-rc.2",
47
- "@livekit/rtc-node-win32-x64-msvc": "0.3.0-rc.2"
43
+ "@livekit/rtc-node-darwin-arm64": "1.0.0-alpha.1",
44
+ "@livekit/rtc-node-darwin-x64": "1.0.0-alpha.1",
45
+ "@livekit/rtc-node-linux-arm64-gnu": "1.0.0-alpha.1",
46
+ "@livekit/rtc-node-linux-x64-gnu": "1.0.0-alpha.1",
47
+ "@livekit/rtc-node-win32-x64-msvc": "1.0.0-alpha.1"
48
48
  },
49
49
  "scripts": {
50
50
  "build:tsc": "tsc && cp -r src/napi dist/napi",
package/src/ffi_client.ts CHANGED
@@ -9,6 +9,7 @@ import {
9
9
  FfiHandle,
10
10
  livekitFfiRequest,
11
11
  livekitInitialize,
12
+ livekitDispose,
12
13
  livekitCopyBuffer,
13
14
  livekitRetrievePtr,
14
15
  } from './napi/native.js';
@@ -58,6 +59,10 @@ export class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClient
58
59
  return livekitRetrievePtr(data);
59
60
  }
60
61
 
62
+ async dispose() {
63
+ return await livekitDispose();
64
+ }
65
+
61
66
  async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {
62
67
  return new Promise<T>((resolve, _) => {
63
68
  let listener = (ev: FfiEvent) => {
@@ -271,10 +271,17 @@ if (!nativeBinding) {
271
271
  throw new Error(`Failed to load native binding`);
272
272
  }
273
273
 
274
- const { livekitInitialize, livekitFfiRequest, livekitRetrievePtr, livekitCopyBuffer, FfiHandle } =
275
- nativeBinding;
274
+ const {
275
+ livekitInitialize,
276
+ livekitDispose,
277
+ livekitFfiRequest,
278
+ livekitRetrievePtr,
279
+ livekitCopyBuffer,
280
+ FfiHandle,
281
+ } = nativeBinding;
276
282
 
277
283
  module.exports.livekitInitialize = livekitInitialize;
284
+ module.exports.livekitDispose = livekitDispose;
278
285
  module.exports.livekitFfiRequest = livekitFfiRequest;
279
286
  module.exports.livekitRetrievePtr = livekitRetrievePtr;
280
287
  module.exports.livekitCopyBuffer = livekitCopyBuffer;
@@ -4,6 +4,7 @@
4
4
  /* auto-generated by NAPI-RS */
5
5
 
6
6
  export function livekitInitialize(callback: (data: Uint8Array) => void, captureLogs: boolean): void;
7
+ export function livekitDispose(): Promise<void>;
7
8
  export function livekitFfiRequest(data: Uint8Array): Uint8Array;
8
9
  export function livekitRetrievePtr(handle: Uint8Array): bigint;
9
10
  export function livekitCopyBuffer(ptr: bigint, len: number): Uint8Array;
@@ -8,6 +8,7 @@
8
8
  import native from './native.cjs';
9
9
  export const {
10
10
  livekitInitialize,
11
+ livekitDispose,
11
12
  livekitCopyBuffer,
12
13
  livekitRetrievePtr,
13
14
  livekitFfiRequest,
package/src/nodejs.rs CHANGED
@@ -36,6 +36,11 @@ fn livekit_initialize(cb: JsFunction, capture_logs: bool) {
36
36
  });
37
37
  }
38
38
 
39
+ #[napi]
40
+ async fn livekit_dispose() {
41
+ FFI_SERVER.dispose().await;
42
+ }
43
+
39
44
  #[napi]
40
45
  fn livekit_ffi_request(data: Uint8Array) -> Uint8Array {
41
46
  let data = data.to_vec();
package/src/room.ts CHANGED
@@ -20,14 +20,14 @@ import {
20
20
  IceTransportType,
21
21
  RoomInfo,
22
22
  } from './proto/room_pb.js';
23
- import { E2EEManager, E2EEOptions, defaultE2EEOptions } from './e2ee.js';
23
+ import { E2EEManager, E2EEOptions } from './e2ee.js';
24
24
  import { OwnedParticipant } from './proto/participant_pb.js';
25
25
  import {
26
26
  LocalTrackPublication,
27
27
  RemoteTrackPublication,
28
28
  TrackPublication,
29
29
  } from './track_publication.js';
30
- import { LocalTrack, RemoteAudioTrack, RemoteTrack, RemoteVideoTrack } from './track.js';
30
+ import { RemoteAudioTrack, RemoteTrack, RemoteVideoTrack } from './track.js';
31
31
  import { TrackKind } from './proto/track_pb.js';
32
32
  import { EncryptionState } from './proto/e2ee_pb.js';
33
33
 
@@ -155,6 +155,10 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
155
155
  },
156
156
  },
157
157
  });
158
+
159
+ FfiClient.instance.removeAllListeners();
160
+ await FfiClient.instance.dispose();
161
+ this.removeAllListeners();
158
162
  }
159
163
 
160
164
  private onFfiEvent = (ffiEvent: FfiEvent) => {
@@ -176,11 +180,11 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
176
180
  this.emit(RoomEvent.ParticipantDisconnected, participant);
177
181
  } else if (ev.case == 'localTrackPublished') {
178
182
  let publication = this.localParticipant.trackPublications.get(ev.value.trackSid);
179
- this.emit(RoomEvent.LocalTrackPublished, publication, publication.track);
183
+ this.emit(RoomEvent.LocalTrackPublished, publication, this.localParticipant);
180
184
  } else if (ev.case == 'localTrackUnpublished') {
181
185
  let publication = this.localParticipant.trackPublications.get(ev.value.publicationSid);
182
186
  this.localParticipant.trackPublications.delete(ev.value.publicationSid);
183
- this.emit(RoomEvent.LocalTrackUnpublished, publication);
187
+ this.emit(RoomEvent.LocalTrackUnpublished, publication, this.localParticipant);
184
188
  } else if (ev.case == 'trackPublished') {
185
189
  let participant = this.getRemoteParticipantBySid(ev.value.participantSid);
186
190
  let publication = new RemoteTrackPublication(ev.value.publication);
@@ -211,7 +215,7 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
211
215
  this.emit(RoomEvent.TrackUnsubscribed, publication.track, publication, participant);
212
216
  } else if (ev.case == 'trackSubscriptionFailed') {
213
217
  let participant = this.getRemoteParticipantBySid(ev.value.participantSid);
214
- this.emit(RoomEvent.TrackSubscriptionFailed, participant, ev.value.trackSid, ev.value.error);
218
+ this.emit(RoomEvent.TrackSubscriptionFailed, ev.value.trackSid, participant, ev.value.error);
215
219
  } else if (ev.case == 'trackMuted') {
216
220
  let participant = this.retrieveParticipant(ev.value.participantSid);
217
221
  let publication = participant.trackPublications.get(ev.value.trackSid);
@@ -219,7 +223,7 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
219
223
  if (publication.track) {
220
224
  publication.track.info.muted = true;
221
225
  }
222
- this.emit(RoomEvent.TrackMuted, participant, publication);
226
+ this.emit(RoomEvent.TrackMuted, publication, participant);
223
227
  } else if (ev.case == 'trackUnmuted') {
224
228
  let participant = this.retrieveParticipant(ev.value.participantSid);
225
229
  let publication = participant.trackPublications.get(ev.value.trackSid);
@@ -227,47 +231,41 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
227
231
  if (publication.track) {
228
232
  publication.track.info.muted = false;
229
233
  }
230
- this.emit(RoomEvent.TrackUnmuted, participant, publication);
234
+ this.emit(RoomEvent.TrackUnmuted, publication, participant);
231
235
  } else if (ev.case == 'activeSpeakersChanged') {
232
236
  let activeSpeakers = ev.value.participantSids.map((sid) =>
233
237
  this.getRemoteParticipantBySid(sid),
234
238
  );
235
239
  this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);
236
240
  } else if (ev.case == 'roomMetadataChanged') {
237
- let oldMetadata = this.info.metadata;
238
241
  this.info.metadata = ev.value.metadata;
239
- this.emit(RoomEvent.RoomMetadataChanged, oldMetadata, this.info.metadata);
242
+ this.emit(RoomEvent.RoomMetadataChanged, this.info.metadata);
240
243
  } else if (ev.case == 'participantMetadataChanged') {
241
244
  let participant = this.retrieveParticipant(ev.value.participantSid);
242
- let oldMetadata = participant.metadata;
243
245
  participant.info.metadata = ev.value.metadata;
244
- this.emit(
245
- RoomEvent.ParticipantMetadataChanged,
246
- participant,
247
- oldMetadata,
248
- participant.metadata,
249
- );
246
+ this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);
250
247
  } else if (ev.case == 'participantNameChanged') {
251
248
  let participant = this.retrieveParticipant(ev.value.participantSid);
252
- let oldName = participant.name;
253
249
  participant.info.name = ev.value.name;
254
- this.emit(RoomEvent.ParticipantNameChanged, participant, oldName, participant.name);
250
+ this.emit(RoomEvent.ParticipantNameChanged, participant.name, participant);
255
251
  } else if (ev.case == 'connectionQualityChanged') {
256
252
  let participant = this.retrieveParticipant(ev.value.participantSid);
257
- this.emit(RoomEvent.ConnectionQualityChanged, participant, ev.value.quality);
253
+ this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality, participant);
258
254
  } else if (ev.case == 'dataReceived') {
259
255
  // Can be undefined if the data is sent from a Server SDK
260
256
  let participant = this.getRemoteParticipantBySid(ev.value.participantSid);
261
257
  let info = ev.value.data;
262
258
  let buffer = FfiClient.instance.copyBuffer(info.data.dataPtr, Number(info.data.dataLen));
263
259
  new FfiHandle(info.handle.id).dispose();
264
- this.emit(RoomEvent.DataReceived, buffer, ev.value.kind, participant);
260
+ this.emit(RoomEvent.DataReceived, buffer, participant, ev.value.kind, ev.value.topic);
265
261
  } else if (ev.case == 'e2eeStateChanged') {
266
- let participant = this.retrieveParticipant(ev.value.participantSid);
267
- this.emit(RoomEvent.E2EEStateChanged, participant, ev.value.state);
262
+ if (ev.value.state == EncryptionState.INTERNAL_ERROR) {
263
+ // throw generic error until Rust SDK is updated to supply the error alongside INTERNAL_ERROR
264
+ this.emit(RoomEvent.EncryptionError, new Error('internal server error'));
265
+ }
268
266
  } else if (ev.case == 'connectionStateChanged') {
269
267
  this.connectionState = ev.value.state;
270
- this.emit(RoomEvent.ConenctionStateChanged, this.connectionState);
268
+ this.emit(RoomEvent.ConnectionStateChanged, this.connectionState);
271
269
  /*} else if (ev.case == 'connected') {
272
270
  this.emit(RoomEvent.Connected);*/
273
271
  } else if (ev.case == 'disconnected') {
@@ -311,8 +309,11 @@ export class ConnectError extends Error {
311
309
  export type RoomCallbacks = {
312
310
  participantConnected: (participant: RemoteParticipant) => void;
313
311
  participantDisconnected: (participant: RemoteParticipant) => void;
314
- localTrackPublished: (publication: LocalTrackPublication, track: LocalTrack) => void;
315
- localTrackUnpublished: (publication: LocalTrackPublication) => void;
312
+ localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
313
+ localTrackUnpublished: (
314
+ publication: LocalTrackPublication,
315
+ participant: LocalParticipant,
316
+ ) => void;
316
317
  trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
317
318
  trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
318
319
  trackSubscribed: (
@@ -326,26 +327,27 @@ export type RoomCallbacks = {
326
327
  participant: RemoteParticipant,
327
328
  ) => void;
328
329
  trackSubscriptionFailed: (
330
+ trackSid: string,
329
331
  participant: RemoteParticipant,
330
- publicationSid: string,
331
- error: string,
332
+ reason?: string,
332
333
  ) => void;
333
- trackMuted: (participant: Participant, publication: TrackPublication) => void;
334
- trackUnmuted: (participant: Participant, publication: TrackPublication) => void;
335
- activeSpeakersChanged: (speakers: RemoteParticipant[]) => void;
336
- roomMetadataChanged: (oldMetadata: string, metadata: string) => void;
337
- participantMetadataChanged: (
338
- participant: Participant,
339
- oldMetadata: string,
340
- metadata: string,
334
+ trackMuted: (publication: TrackPublication, participant: Participant) => void;
335
+ trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
336
+ activeSpeakersChanged: (speakers: Participant[]) => void;
337
+ roomMetadataChanged: (metadata: string) => void;
338
+ participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;
339
+ participantNameChanged: (name: string, participant: Participant) => void;
340
+ connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
341
+ dataReceived: (
342
+ payload: Uint8Array,
343
+ participant?: RemoteParticipant,
344
+ kind?: DataPacketKind,
345
+ topic?: string,
341
346
  ) => void;
342
- participantNameChanged: (participant: Participant, oldName: string, name: string) => void;
343
- connectionQualityChanged: (participant: Participant, quality: ConnectionQuality) => void;
344
- dataReceived: (data: Uint8Array, kind: DataPacketKind, participant?: RemoteParticipant) => void;
345
- e2eeStateChanged: (participant: Participant, state: EncryptionState) => void;
347
+ encryptionError: (error: Error) => void;
346
348
  connectionStateChanged: (state: ConnectionState) => void;
347
349
  connected: () => void;
348
- disconnected: () => void;
350
+ disconnected: (reason?: string) => void;
349
351
  reconnecting: () => void;
350
352
  reconnected: () => void;
351
353
  };
@@ -368,8 +370,8 @@ export enum RoomEvent {
368
370
  ParticipantNameChanged = 'participantNameChanged',
369
371
  ConnectionQualityChanged = 'connectionQualityChanged',
370
372
  DataReceived = 'dataReceived',
371
- E2EEStateChanged = 'e2eeStateChanged',
372
- ConenctionStateChanged = 'connectionStateChanged',
373
+ EncryptionError = 'encryptionError',
374
+ ConnectionStateChanged = 'connectionStateChanged',
373
375
  Connected = 'connected',
374
376
  Disconnected = 'disconnected',
375
377
  Reconnecting = 'reconnecting',