@livekit/rtc-node 0.3.0-rc.2 → 0.4.0
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 +2 -1
- package/dist/audio_frame.d.ts +2 -1
- package/dist/audio_frame.d.ts.map +1 -1
- package/dist/audio_frame.js +3 -3
- package/dist/audio_frame.js.map +1 -1
- package/dist/audio_source.d.ts +2 -2
- package/dist/audio_source.d.ts.map +1 -1
- package/dist/audio_source.js +6 -9
- package/dist/audio_source.js.map +1 -1
- package/dist/audio_stream.d.ts +3 -3
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/audio_stream.js +6 -6
- package/dist/audio_stream.js.map +1 -1
- package/dist/e2ee.d.ts.map +1 -1
- package/dist/e2ee.js +16 -16
- package/dist/e2ee.js.map +1 -1
- package/dist/ffi_client.d.ts +4 -3
- package/dist/ffi_client.d.ts.map +1 -1
- package/dist/ffi_client.js +11 -11
- package/dist/ffi_client.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/napi/native.cjs +9 -2
- package/dist/napi/native.d.ts +1 -0
- package/dist/napi/native.js +2 -2
- package/dist/participant.d.ts +5 -4
- package/dist/participant.d.ts.map +1 -1
- package/dist/participant.js +15 -15
- package/dist/participant.js.map +1 -1
- package/dist/room.d.ts +25 -22
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +58 -55
- package/dist/room.js.map +1 -1
- package/dist/track.d.ts +3 -3
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +5 -8
- package/dist/track.js.map +1 -1
- package/dist/track_publication.d.ts +3 -3
- package/dist/track_publication.d.ts.map +1 -1
- package/dist/track_publication.js +1 -1
- package/dist/track_publication.js.map +1 -1
- package/dist/video_frame.d.ts +2 -1
- package/dist/video_frame.d.ts.map +1 -1
- package/dist/video_frame.js +1 -1
- package/dist/video_frame.js.map +1 -1
- package/dist/video_source.d.ts +3 -2
- package/dist/video_source.d.ts.map +1 -1
- package/dist/video_source.js +3 -3
- package/dist/video_source.js.map +1 -1
- package/dist/video_stream.d.ts +3 -3
- package/dist/video_stream.d.ts.map +1 -1
- package/dist/video_stream.js +8 -8
- package/dist/video_stream.js.map +1 -1
- package/package.json +8 -8
- package/src/audio_frame.ts +5 -5
- package/src/audio_source.ts +13 -14
- package/src/audio_stream.ts +13 -17
- package/src/e2ee.ts +25 -24
- package/src/ffi_client.ts +15 -11
- package/src/index.ts +1 -3
- package/src/napi/native.cjs +9 -2
- package/src/napi/native.d.ts +1 -0
- package/src/napi/native.js +2 -2
- package/src/nodejs.rs +5 -0
- package/src/participant.ts +27 -29
- package/src/room.ts +94 -91
- package/src/track.ts +9 -11
- package/src/track_publication.ts +7 -7
- package/src/video_frame.ts +9 -16
- package/src/video_source.ts +10 -9
- package/src/video_stream.ts +17 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track_publication.js","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;
|
|
1
|
+
{"version":3,"file":"track_publication.js","sourceRoot":"","sources":["../src/track_publication.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAS1D,MAAM,OAAgB,gBAAgB;IAQpC,YAAY,SAAgC;QAC1C,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IACvB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACxB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,gBAAgB;IACzD,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;IACnB,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,gBAAgB;IAG1D,YAAY,SAAgC;QAC1C,KAAK,CAAC,SAAS,CAAC,CAAC;QAHnB,eAAU,GAAY,KAAK,CAAC;IAI5B,CAAC;IAED,aAAa,CAAC,UAAmB;QAC/B,MAAM,GAAG,GAAG,IAAI,oBAAoB,CAAC;YACnC,SAAS,EAAE,UAAU;YACrB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;SACzC,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAwB;YAChD,OAAO,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE;SAC/C,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/video_frame.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { OwnedVideoBuffer
|
|
1
|
+
import type { OwnedVideoBuffer } from './proto/video_frame_pb.js';
|
|
2
|
+
import { VideoBufferInfo, VideoBufferType } from './proto/video_frame_pb.js';
|
|
2
3
|
export declare class VideoFrame {
|
|
3
4
|
data: Uint8Array;
|
|
4
5
|
width: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_frame.d.ts","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"video_frame.d.ts","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAwB,MAAM,2BAA2B,CAAC;AACxF,OAAO,EACL,eAAe,EAEf,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAEnC,qBAAa,UAAU;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;gBAEV,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe;IAOlF,gBAAgB;IAChB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,gBAAgB;IAChB,SAAS,IAAI,eAAe;IAuB5B,gBAAgB;IAChB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU;IAazD,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQ7C,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,UAAQ,GAAG,UAAU;CAkB7D"}
|
package/dist/video_frame.js
CHANGED
|
@@ -36,7 +36,7 @@ export class VideoFrame {
|
|
|
36
36
|
}
|
|
37
37
|
/** @internal */
|
|
38
38
|
static fromOwnedInfo(owned) {
|
|
39
|
-
|
|
39
|
+
const info = owned.info;
|
|
40
40
|
return new VideoFrame(FfiClient.instance.copyBuffer(info.dataPtr, getPlaneLength(info.type, info.width, info.height)), info.width, info.height, info.type);
|
|
41
41
|
}
|
|
42
42
|
getPlane(planeNth) {
|
package/dist/video_frame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_frame.js","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;
|
|
1
|
+
{"version":3,"file":"video_frame.js","sourceRoot":"","sources":["../src/video_frame.ts"],"names":[],"mappings":"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"}
|
package/dist/video_source.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { FfiHandle } from './ffi_client.js';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import type { VideoSourceInfo } from './proto/video_frame_pb.js';
|
|
3
|
+
import { VideoRotation } from './proto/video_frame_pb.js';
|
|
4
|
+
import type { VideoFrame } from './video_frame.js';
|
|
4
5
|
export declare class VideoSource {
|
|
5
6
|
/** @internal */
|
|
6
7
|
info: VideoSourceInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_source.d.ts","sourceRoot":"","sources":["../src/video_source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"video_source.d.ts","sourceRoot":"","sources":["../src/video_source.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,aAAa,EAEd,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,qBAAa,WAAW;IACtB,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;gBAEH,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAuBzC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,SAAK,EAAE,QAAQ,gBAAiC;CAY5F"}
|
package/dist/video_source.js
CHANGED
|
@@ -7,14 +7,14 @@ export class VideoSource {
|
|
|
7
7
|
constructor(width, height) {
|
|
8
8
|
this.width = width;
|
|
9
9
|
this.height = height;
|
|
10
|
-
|
|
10
|
+
const req = new NewVideoSourceRequest({
|
|
11
11
|
type: VideoSourceType.VIDEO_SOURCE_NATIVE,
|
|
12
12
|
resolution: {
|
|
13
13
|
width: width,
|
|
14
14
|
height: height,
|
|
15
15
|
},
|
|
16
16
|
});
|
|
17
|
-
|
|
17
|
+
const res = FfiClient.instance.request({
|
|
18
18
|
message: {
|
|
19
19
|
case: 'newVideoSource',
|
|
20
20
|
value: req,
|
|
@@ -24,7 +24,7 @@ export class VideoSource {
|
|
|
24
24
|
this.ffiHandle = new FfiHandle(res.source.handle.id);
|
|
25
25
|
}
|
|
26
26
|
captureFrame(frame, timestampUs = 0n, rotation = VideoRotation.VIDEO_ROTATION_0) {
|
|
27
|
-
|
|
27
|
+
const req = new CaptureVideoFrameRequest({
|
|
28
28
|
sourceHandle: this.ffiHandle.handle,
|
|
29
29
|
buffer: frame.protoInfo(),
|
|
30
30
|
rotation,
|
package/dist/video_source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_source.js","sourceRoot":"","sources":["../src/video_source.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;
|
|
1
|
+
{"version":3,"file":"video_source.js","sourceRoot":"","sources":["../src/video_source.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMvD,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,aAAa,EACb,eAAe,GAChB,MAAM,2BAA2B,CAAC;AAGnC,MAAM,OAAO,WAAW;IAStB,YAAY,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC;YACpC,IAAI,EAAE,eAAe,CAAC,mBAAmB;YACzC,UAAU,EAAE;gBACV,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,MAAM;aACf;SACF,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAyB;YAC7D,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,GAAG;aACX;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,YAAY,CAAC,KAAiB,EAAE,WAAW,GAAG,EAAE,EAAE,QAAQ,GAAG,aAAa,CAAC,gBAAgB;QACzF,MAAM,GAAG,GAAG,IAAI,wBAAwB,CAAC;YACvC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YACnC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE;YACzB,QAAQ;YACR,WAAW;SACZ,CAAC,CAAC;QAEH,SAAS,CAAC,QAAQ,CAAC,OAAO,CAA4B;YACpD,OAAO,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE;SACnD,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/dist/video_stream.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type TypedEmitter from 'typed-emitter';
|
|
1
2
|
import { FfiHandle } from './ffi_client.js';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
3
|
+
import type { VideoRotation, VideoStreamInfo } from './proto/video_frame_pb.js';
|
|
4
|
+
import type { Track } from './track.js';
|
|
4
5
|
import { VideoFrame } from './video_frame.js';
|
|
5
|
-
import { VideoRotation, VideoStreamInfo } from './proto/video_frame_pb.js';
|
|
6
6
|
export type VideoFrameEvent = {
|
|
7
7
|
frame: VideoFrame;
|
|
8
8
|
timestampUs: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_stream.d.ts","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"video_stream.d.ts","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAEV,aAAa,EACb,eAAe,EAChB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,UAAU,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;CAC/C,CAAC;AAEF,oBAAY,gBAAgB;IAC1B,aAAa,kBAAkB;CAChC;0CAE2D,aAAa,oBAAoB,CAAC;AAA9F,qBAAa,WAAY,SAAQ,gBAA8D;IAC7F,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IAErB,KAAK,EAAE,KAAK,CAAC;gBAED,KAAK,EAAE,KAAK;IAsBxB,OAAO,CAAC,OAAO,CAoBb;IAEF,KAAK;CAGN"}
|
package/dist/video_stream.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
|
|
5
4
|
import EventEmitter from 'events';
|
|
5
|
+
import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
|
|
6
|
+
import { NewVideoStreamRequest, VideoStreamType } from './proto/video_frame_pb.js';
|
|
6
7
|
import { VideoFrame } from './video_frame.js';
|
|
7
|
-
import { NewVideoStreamRequest, VideoStreamType, } from './proto/video_frame_pb.js';
|
|
8
8
|
export var VideoStreamEvent;
|
|
9
9
|
(function (VideoStreamEvent) {
|
|
10
10
|
VideoStreamEvent["FrameReceived"] = "frameReceived";
|
|
@@ -17,12 +17,12 @@ export class VideoStream extends EventEmitter {
|
|
|
17
17
|
ev.message.value.streamHandle != this.ffiHandle.handle) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
|
-
|
|
20
|
+
const streamEvent = ev.message.value.message;
|
|
21
21
|
switch (streamEvent.case) {
|
|
22
22
|
case 'frameReceived':
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const rotation = streamEvent.value.rotation;
|
|
24
|
+
const timestampUs = streamEvent.value.timestampUs;
|
|
25
|
+
const frame = VideoFrame.fromOwnedInfo(streamEvent.value.buffer);
|
|
26
26
|
this.emit(VideoStreamEvent.FrameReceived, { frame, timestampUs, rotation });
|
|
27
27
|
break;
|
|
28
28
|
case 'eos':
|
|
@@ -31,11 +31,11 @@ export class VideoStream extends EventEmitter {
|
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
33
|
this.track = track;
|
|
34
|
-
|
|
34
|
+
const req = new NewVideoStreamRequest({
|
|
35
35
|
type: VideoStreamType.VIDEO_STREAM_NATIVE,
|
|
36
36
|
trackHandle: track.ffi_handle.handle,
|
|
37
37
|
});
|
|
38
|
-
|
|
38
|
+
const res = FfiClient.instance.request({
|
|
39
39
|
message: {
|
|
40
40
|
case: 'newVideoStream',
|
|
41
41
|
value: req,
|
package/dist/video_stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video_stream.js","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;
|
|
1
|
+
{"version":3,"file":"video_stream.js","sourceRoot":"","sources":["../src/video_stream.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,YAAY,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMvE,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAY9C,MAAM,CAAN,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,mDAA+B,CAAA;AACjC,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,QAE3B;AAED,MAAM,OAAO,WAAY,SAAS,YAA6D;IAQ7F,YAAY,KAAY;QACtB,KAAK,EAAE,CAAC;QAqBF,YAAO,GAAG,CAAC,EAAY,EAAE,EAAE;YACjC,IACE,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB;gBACrC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EACtD,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;YAC7C,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,eAAe;oBAClB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC;oBAC5C,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC;oBAClD,MAAM,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACjE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC5E,MAAM;gBACR,KAAK,KAAK;oBACR,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9D,MAAM;YACV,CAAC;QACH,CAAC,CAAC;QAxCA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,MAAM,GAAG,GAAG,IAAI,qBAAqB,CAAC;YACpC,IAAI,EAAE,eAAe,CAAC,mBAAmB;YACzC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM;SACrC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAyB;YAC7D,OAAO,EAAE;gBACP,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,GAAG;aACX;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAErD,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IAwBD,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -2,10 +2,16 @@
|
|
|
2
2
|
"name": "@livekit/rtc-node",
|
|
3
3
|
"description": "LiveKit RTC Node",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
|
-
"
|
|
5
|
+
"author": "LiveKit",
|
|
6
|
+
"version": "0.4.0",
|
|
6
7
|
"main": "dist/index.js",
|
|
7
8
|
"types": "dist/index.d.ts",
|
|
8
9
|
"type": "module",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/livekit/node-sdks-temp.git",
|
|
13
|
+
"directory": "rtc-node"
|
|
14
|
+
},
|
|
9
15
|
"files": [
|
|
10
16
|
"dist",
|
|
11
17
|
"src",
|
|
@@ -39,18 +45,12 @@
|
|
|
39
45
|
"engines": {
|
|
40
46
|
"node": ">= 18"
|
|
41
47
|
},
|
|
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"
|
|
48
|
-
},
|
|
49
48
|
"scripts": {
|
|
50
49
|
"build:tsc": "tsc && cp -r src/napi dist/napi",
|
|
51
50
|
"build": "pnpm build:tsc && napi build --platform --release --dts native.d.ts --js native.cjs --pipe \"prettier -w\" src/napi",
|
|
52
51
|
"artifacts": "pnpm build:tsc && napi artifacts",
|
|
53
52
|
"build:debug": "napi build --platform",
|
|
53
|
+
"lint": "eslint -f unix \"src/**/*.ts\" --ignore-pattern \"src/proto/*\"",
|
|
54
54
|
"universal": "napi universal",
|
|
55
55
|
"version": "napi version"
|
|
56
56
|
}
|
package/src/audio_frame.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
4
|
import { FfiClient, FfiHandle } from './ffi_client.js';
|
|
6
|
-
import {
|
|
5
|
+
import type { OwnedAudioFrameBuffer } from './proto/audio_frame_pb.js';
|
|
6
|
+
import { AudioFrameBufferInfo } from './proto/audio_frame_pb.js';
|
|
7
7
|
|
|
8
8
|
export class AudioFrame {
|
|
9
9
|
data: Uint16Array;
|
|
@@ -25,9 +25,9 @@ export class AudioFrame {
|
|
|
25
25
|
|
|
26
26
|
/** @internal */
|
|
27
27
|
static fromOwnedInfo(owned: OwnedAudioFrameBuffer): AudioFrame {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
const info = owned.info;
|
|
29
|
+
const len = info.numChannels * info.samplesPerChannel * 2; // c_int16
|
|
30
|
+
const data = FfiClient.instance.copyBuffer(info.dataPtr, len);
|
|
31
31
|
new FfiHandle(owned.handle.id).dispose();
|
|
32
32
|
return new AudioFrame(
|
|
33
33
|
new Uint16Array(data.buffer),
|
package/src/audio_source.ts
CHANGED
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
import
|
|
6
|
-
import TypedEmitter from 'typed-emitter';
|
|
4
|
+
import type { AudioFrame } from './audio_frame.js';
|
|
5
|
+
import { FfiClient } from './ffi_client.js';
|
|
7
6
|
import { FfiHandle } from './napi/native.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
7
|
+
import type {
|
|
10
8
|
AudioSourceInfo,
|
|
11
|
-
AudioSourceType,
|
|
12
9
|
CaptureAudioFrameCallback,
|
|
13
|
-
CaptureAudioFrameRequest,
|
|
14
10
|
CaptureAudioFrameResponse,
|
|
15
|
-
NewAudioSourceRequest,
|
|
16
11
|
NewAudioSourceResponse,
|
|
17
12
|
} from './proto/audio_frame_pb.js';
|
|
18
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
AudioSourceType,
|
|
15
|
+
CaptureAudioFrameRequest,
|
|
16
|
+
NewAudioSourceRequest,
|
|
17
|
+
} from './proto/audio_frame_pb.js';
|
|
19
18
|
|
|
20
19
|
export class AudioSource {
|
|
21
20
|
/** @internal */
|
|
@@ -30,13 +29,13 @@ export class AudioSource {
|
|
|
30
29
|
this.sampleRate = sampleRate;
|
|
31
30
|
this.numChannels = numChannels;
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
const req = new NewAudioSourceRequest({
|
|
34
33
|
type: AudioSourceType.AUDIO_SOURCE_NATIVE,
|
|
35
34
|
sampleRate: sampleRate,
|
|
36
35
|
numChannels: numChannels,
|
|
37
36
|
});
|
|
38
37
|
|
|
39
|
-
|
|
38
|
+
const res = FfiClient.instance.request<NewAudioSourceResponse>({
|
|
40
39
|
message: {
|
|
41
40
|
case: 'newAudioSource',
|
|
42
41
|
value: req,
|
|
@@ -48,16 +47,16 @@ export class AudioSource {
|
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
async captureFrame(frame: AudioFrame) {
|
|
51
|
-
|
|
50
|
+
const req = new CaptureAudioFrameRequest({
|
|
52
51
|
sourceHandle: this.ffiHandle.handle,
|
|
53
52
|
buffer: frame.protoInfo(),
|
|
54
53
|
});
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
const res = FfiClient.instance.request<CaptureAudioFrameResponse>({
|
|
57
56
|
message: { case: 'captureAudioFrame', value: req },
|
|
58
57
|
});
|
|
59
58
|
|
|
60
|
-
|
|
59
|
+
const cb = await FfiClient.instance.waitFor<CaptureAudioFrameCallback>((ev) => {
|
|
61
60
|
return ev.message.case == 'captureAudioFrame' && ev.message.value.asyncId == res.asyncId;
|
|
62
61
|
});
|
|
63
62
|
|
package/src/audio_stream.ts
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
import { AudioFrame } from './audio_frame.js';
|
|
6
|
-
import { FfiClient, FfiClientEvent, FfiEvent, FfiHandle, FfiRequest } from './ffi_client.js';
|
|
7
|
-
import {
|
|
8
|
-
AudioStreamInfo,
|
|
9
|
-
AudioStreamType,
|
|
10
|
-
NewAudioStreamRequest,
|
|
11
|
-
NewAudioStreamResponse,
|
|
12
|
-
} from './proto/audio_frame_pb.js';
|
|
13
|
-
import { Track } from './track.js';
|
|
14
4
|
import EventEmitter from 'events';
|
|
15
|
-
import TypedEmitter from 'typed-emitter';
|
|
5
|
+
import type TypedEmitter from 'typed-emitter';
|
|
6
|
+
import { AudioFrame } from './audio_frame.js';
|
|
7
|
+
import type { FfiEvent } from './ffi_client.js';
|
|
8
|
+
import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
|
|
9
|
+
import type { AudioStreamInfo, NewAudioStreamResponse } from './proto/audio_frame_pb.js';
|
|
10
|
+
import { AudioStreamType, NewAudioStreamRequest } from './proto/audio_frame_pb.js';
|
|
11
|
+
import type { Track } from './track.js';
|
|
16
12
|
|
|
17
13
|
export type AudioFrameEvent = {
|
|
18
|
-
frame: AudioFrame
|
|
19
|
-
}
|
|
14
|
+
frame: AudioFrame;
|
|
15
|
+
};
|
|
20
16
|
|
|
21
17
|
export type AudioStreamCallbacks = {
|
|
22
18
|
frameReceived: (frame: AudioFrameEvent) => void;
|
|
@@ -38,12 +34,12 @@ export class AudioStream extends (EventEmitter as new () => TypedEmitter<AudioSt
|
|
|
38
34
|
super();
|
|
39
35
|
this.track = track;
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
const req = new NewAudioStreamRequest({
|
|
42
38
|
type: AudioStreamType.AUDIO_STREAM_NATIVE,
|
|
43
39
|
trackHandle: track.ffi_handle.handle,
|
|
44
40
|
});
|
|
45
41
|
|
|
46
|
-
|
|
42
|
+
const res = FfiClient.instance.request<NewAudioStreamResponse>({
|
|
47
43
|
message: {
|
|
48
44
|
case: 'newAudioStream',
|
|
49
45
|
value: req,
|
|
@@ -64,10 +60,10 @@ export class AudioStream extends (EventEmitter as new () => TypedEmitter<AudioSt
|
|
|
64
60
|
return;
|
|
65
61
|
}
|
|
66
62
|
|
|
67
|
-
|
|
63
|
+
const streamEvent = ev.message.value.message;
|
|
68
64
|
switch (streamEvent.case) {
|
|
69
65
|
case 'frameReceived':
|
|
70
|
-
|
|
66
|
+
const frame = AudioFrame.fromOwnedInfo(streamEvent.value.frame);
|
|
71
67
|
this.emit(AudioStreamEvent.FrameReceived, { frame });
|
|
72
68
|
break;
|
|
73
69
|
case 'eos':
|
package/src/e2ee.ts
CHANGED
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { FfiClient } from './ffi_client.js';
|
|
5
|
+
import type {
|
|
7
6
|
E2eeManagerGetFrameCryptorsResponse,
|
|
7
|
+
E2eeResponse,
|
|
8
|
+
GetKeyResponse,
|
|
9
|
+
GetSharedKeyResponse,
|
|
10
|
+
RatchetKeyResponse,
|
|
11
|
+
RatchetSharedKeyResponse,
|
|
12
|
+
} from './proto/e2ee_pb.js';
|
|
13
|
+
import {
|
|
8
14
|
E2eeManagerSetEnabledRequest,
|
|
9
15
|
E2eeRequest,
|
|
10
|
-
E2eeResponse,
|
|
11
16
|
EncryptionType,
|
|
12
17
|
FrameCryptorSetEnabledRequest,
|
|
13
18
|
FrameCryptorSetKeyIndexRequest,
|
|
14
19
|
GetKeyRequest,
|
|
15
|
-
GetKeyResponse,
|
|
16
20
|
GetSharedKeyRequest,
|
|
17
|
-
GetSharedKeyResponse,
|
|
18
21
|
RatchetKeyRequest,
|
|
19
|
-
RatchetKeyResponse,
|
|
20
22
|
RatchetSharedKeyRequest,
|
|
21
|
-
RatchetSharedKeyResponse,
|
|
22
23
|
SetKeyRequest,
|
|
23
24
|
SetSharedKeyRequest,
|
|
24
25
|
} from './proto/e2ee_pb.js';
|
|
@@ -61,7 +62,7 @@ export class KeyProvider {
|
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
setSharedKey(sharedKey: Uint8Array, keyIndex: number) {
|
|
64
|
-
|
|
65
|
+
const req = new E2eeRequest({
|
|
65
66
|
roomHandle: this.roomHandle,
|
|
66
67
|
message: {
|
|
67
68
|
case: 'setSharedKey',
|
|
@@ -81,7 +82,7 @@ export class KeyProvider {
|
|
|
81
82
|
}
|
|
82
83
|
|
|
83
84
|
exportSharedKey(keyIndex: number): Uint8Array {
|
|
84
|
-
|
|
85
|
+
const req = new E2eeRequest({
|
|
85
86
|
roomHandle: this.roomHandle,
|
|
86
87
|
message: {
|
|
87
88
|
case: 'getSharedKey',
|
|
@@ -91,7 +92,7 @@ export class KeyProvider {
|
|
|
91
92
|
},
|
|
92
93
|
});
|
|
93
94
|
|
|
94
|
-
|
|
95
|
+
const res = FfiClient.instance.request<E2eeResponse>({
|
|
95
96
|
message: {
|
|
96
97
|
case: 'e2ee',
|
|
97
98
|
value: req,
|
|
@@ -102,7 +103,7 @@ export class KeyProvider {
|
|
|
102
103
|
}
|
|
103
104
|
|
|
104
105
|
ratchetSharedKey(keyIndex: number): Uint8Array {
|
|
105
|
-
|
|
106
|
+
const req = new E2eeRequest({
|
|
106
107
|
roomHandle: this.roomHandle,
|
|
107
108
|
message: {
|
|
108
109
|
case: 'ratchetSharedKey',
|
|
@@ -112,7 +113,7 @@ export class KeyProvider {
|
|
|
112
113
|
},
|
|
113
114
|
});
|
|
114
115
|
|
|
115
|
-
|
|
116
|
+
const res = FfiClient.instance.request<E2eeResponse>({
|
|
116
117
|
message: {
|
|
117
118
|
case: 'e2ee',
|
|
118
119
|
value: req,
|
|
@@ -123,7 +124,7 @@ export class KeyProvider {
|
|
|
123
124
|
}
|
|
124
125
|
|
|
125
126
|
setKey(participantIdentity: string, keyIndex: number) {
|
|
126
|
-
|
|
127
|
+
const req = new E2eeRequest({
|
|
127
128
|
roomHandle: this.roomHandle,
|
|
128
129
|
message: {
|
|
129
130
|
case: 'setKey',
|
|
@@ -143,7 +144,7 @@ export class KeyProvider {
|
|
|
143
144
|
}
|
|
144
145
|
|
|
145
146
|
exportKey(participantIdentity: string, keyIndex: number): Uint8Array {
|
|
146
|
-
|
|
147
|
+
const req = new E2eeRequest({
|
|
147
148
|
roomHandle: this.roomHandle,
|
|
148
149
|
message: {
|
|
149
150
|
case: 'getKey',
|
|
@@ -154,7 +155,7 @@ export class KeyProvider {
|
|
|
154
155
|
},
|
|
155
156
|
});
|
|
156
157
|
|
|
157
|
-
|
|
158
|
+
const res = FfiClient.instance.request<E2eeResponse>({
|
|
158
159
|
message: {
|
|
159
160
|
case: 'e2ee',
|
|
160
161
|
value: req,
|
|
@@ -165,7 +166,7 @@ export class KeyProvider {
|
|
|
165
166
|
}
|
|
166
167
|
|
|
167
168
|
ratchetKey(participantIdentity: string, keyIndex: number): Uint8Array {
|
|
168
|
-
|
|
169
|
+
const req = new E2eeRequest({
|
|
169
170
|
roomHandle: this.roomHandle,
|
|
170
171
|
message: {
|
|
171
172
|
case: 'ratchetKey',
|
|
@@ -176,7 +177,7 @@ export class KeyProvider {
|
|
|
176
177
|
},
|
|
177
178
|
});
|
|
178
179
|
|
|
179
|
-
|
|
180
|
+
const res = FfiClient.instance.request<E2eeResponse>({
|
|
180
181
|
message: {
|
|
181
182
|
case: 'e2ee',
|
|
182
183
|
value: req,
|
|
@@ -202,7 +203,7 @@ export class FrameCryptor {
|
|
|
202
203
|
|
|
203
204
|
setEnabled(enabled: boolean) {
|
|
204
205
|
this.enabled = enabled;
|
|
205
|
-
|
|
206
|
+
const req = new E2eeRequest({
|
|
206
207
|
roomHandle: this.roomHandle,
|
|
207
208
|
message: {
|
|
208
209
|
case: 'cryptorSetEnabled',
|
|
@@ -223,7 +224,7 @@ export class FrameCryptor {
|
|
|
223
224
|
|
|
224
225
|
setKeyIndex(keyIndex: number) {
|
|
225
226
|
this.keyIndex = keyIndex;
|
|
226
|
-
|
|
227
|
+
const req = new E2eeRequest({
|
|
227
228
|
roomHandle: this.roomHandle,
|
|
228
229
|
message: {
|
|
229
230
|
case: 'cryptorSetKeyIndex',
|
|
@@ -264,7 +265,7 @@ export class E2EEManager {
|
|
|
264
265
|
|
|
265
266
|
setEnabled(enabled: boolean) {
|
|
266
267
|
this.enabled = enabled;
|
|
267
|
-
|
|
268
|
+
const req = new E2eeRequest({
|
|
268
269
|
roomHandle: this.roomHandle,
|
|
269
270
|
message: {
|
|
270
271
|
case: 'managerSetEnabled',
|
|
@@ -283,7 +284,7 @@ export class E2EEManager {
|
|
|
283
284
|
}
|
|
284
285
|
|
|
285
286
|
frameCryptors(): FrameCryptor[] {
|
|
286
|
-
|
|
287
|
+
const req = new E2eeRequest({
|
|
287
288
|
roomHandle: this.roomHandle,
|
|
288
289
|
message: {
|
|
289
290
|
case: 'managerGetFrameCryptors',
|
|
@@ -291,14 +292,14 @@ export class E2EEManager {
|
|
|
291
292
|
},
|
|
292
293
|
});
|
|
293
294
|
|
|
294
|
-
|
|
295
|
+
const res = FfiClient.instance.request<E2eeResponse>({
|
|
295
296
|
message: {
|
|
296
297
|
case: 'e2ee',
|
|
297
298
|
value: req,
|
|
298
299
|
},
|
|
299
300
|
});
|
|
300
301
|
|
|
301
|
-
|
|
302
|
+
const frameCryptors = (
|
|
302
303
|
res.message.value as E2eeManagerGetFrameCryptorsResponse
|
|
303
304
|
).frameCryptors.map(
|
|
304
305
|
(cryptor) =>
|
package/src/ffi_client.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
|
-
import { FfiRequest, FfiResponse, FfiEvent } from './proto/ffi_pb.js';
|
|
4
|
+
import type { PartialMessage } from '@bufbuild/protobuf';
|
|
6
5
|
import EventEmitter from 'events';
|
|
7
|
-
import TypedEmitter from 'typed-emitter';
|
|
6
|
+
import type TypedEmitter from 'typed-emitter';
|
|
8
7
|
import {
|
|
9
8
|
FfiHandle,
|
|
9
|
+
livekitCopyBuffer,
|
|
10
|
+
livekitDispose,
|
|
10
11
|
livekitFfiRequest,
|
|
11
12
|
livekitInitialize,
|
|
12
|
-
livekitCopyBuffer,
|
|
13
13
|
livekitRetrievePtr,
|
|
14
14
|
} from './napi/native.js';
|
|
15
|
-
import {
|
|
15
|
+
import { FfiEvent, FfiRequest, FfiResponse } from './proto/ffi_pb.js';
|
|
16
16
|
|
|
17
17
|
export { FfiHandle, FfiEvent, FfiResponse, FfiRequest };
|
|
18
18
|
|
|
@@ -38,15 +38,15 @@ export class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClient
|
|
|
38
38
|
super();
|
|
39
39
|
|
|
40
40
|
livekitInitialize((event_data: Uint8Array) => {
|
|
41
|
-
|
|
41
|
+
const event = FfiEvent.fromBinary(event_data);
|
|
42
42
|
this.emit(FfiClientEvent.FfiEvent, event);
|
|
43
43
|
}, true);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
request<T>(req: PartialMessage<FfiRequest>): T {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
const request = new FfiRequest(req);
|
|
48
|
+
const req_data = request.toBinary();
|
|
49
|
+
const res_data = livekitFfiRequest(req_data);
|
|
50
50
|
return FfiResponse.fromBinary(res_data).message.value as T;
|
|
51
51
|
}
|
|
52
52
|
|
|
@@ -58,9 +58,13 @@ export class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClient
|
|
|
58
58
|
return livekitRetrievePtr(data);
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
+
async dispose() {
|
|
62
|
+
return await livekitDispose();
|
|
63
|
+
}
|
|
64
|
+
|
|
61
65
|
async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {
|
|
62
|
-
return new Promise<T>((resolve
|
|
63
|
-
|
|
66
|
+
return new Promise<T>((resolve) => {
|
|
67
|
+
const listener = (ev: FfiEvent) => {
|
|
64
68
|
if (predicate(ev)) {
|
|
65
69
|
this.off(FfiClientEvent.FfiEvent, listener);
|
|
66
70
|
resolve(ev.message.value as T);
|
package/src/index.ts
CHANGED
|
@@ -15,9 +15,7 @@ export {
|
|
|
15
15
|
RemoteVideoTrack,
|
|
16
16
|
AudioTrack,
|
|
17
17
|
} from './track.js';
|
|
18
|
-
export {
|
|
19
|
-
VideoFrame,
|
|
20
|
-
} from './video_frame.js';
|
|
18
|
+
export { VideoFrame } from './video_frame.js';
|
|
21
19
|
export { AudioFrame } from './audio_frame.js';
|
|
22
20
|
export { AudioStream, AudioFrameEvent } from './audio_stream.js';
|
|
23
21
|
export { VideoStream, VideoFrameEvent } from './video_stream.js';
|