@livekit/rtc-node 0.3.0 → 0.4.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 +2 -1
- package/README.md +81 -0
- 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 +3 -3
- package/dist/ffi_client.d.ts.map +1 -1
- package/dist/ffi_client.js +8 -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.js +1 -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 +57 -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 +9 -9
- 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 +10 -11
- package/src/index.ts +1 -3
- package/src/napi/native.js +1 -2
- package/src/nodejs.rs +4 -2
- package/src/participant.ts +27 -29
- package/src/room.ts +93 -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.1",
|
|
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.git",
|
|
13
|
+
"directory": "packages/livekit-rtc"
|
|
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",
|
|
44
|
-
"@livekit/rtc-node-darwin-x64": "0.3.0",
|
|
45
|
-
"@livekit/rtc-node-linux-arm64-gnu": "0.3.0",
|
|
46
|
-
"@livekit/rtc-node-linux-x64-gnu": "0.3.0",
|
|
47
|
-
"@livekit/rtc-node-win32-x64-msvc": "0.3.0"
|
|
48
|
-
},
|
|
49
48
|
"scripts": {
|
|
50
|
-
"build:tsc": "tsc && cp -r src/napi dist/
|
|
49
|
+
"build:tsc": "tsc && cp -r src/napi dist/",
|
|
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,17 @@
|
|
|
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
10
|
livekitFfiRequest,
|
|
11
11
|
livekitInitialize,
|
|
12
|
-
livekitCopyBuffer,
|
|
13
12
|
livekitRetrievePtr,
|
|
14
13
|
} from './napi/native.js';
|
|
15
|
-
import {
|
|
14
|
+
import { FfiEvent, FfiRequest, FfiResponse } from './proto/ffi_pb.js';
|
|
16
15
|
|
|
17
16
|
export { FfiHandle, FfiEvent, FfiResponse, FfiRequest };
|
|
18
17
|
|
|
@@ -38,15 +37,15 @@ export class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClient
|
|
|
38
37
|
super();
|
|
39
38
|
|
|
40
39
|
livekitInitialize((event_data: Uint8Array) => {
|
|
41
|
-
|
|
40
|
+
const event = FfiEvent.fromBinary(event_data);
|
|
42
41
|
this.emit(FfiClientEvent.FfiEvent, event);
|
|
43
42
|
}, true);
|
|
44
43
|
}
|
|
45
44
|
|
|
46
45
|
request<T>(req: PartialMessage<FfiRequest>): T {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
const request = new FfiRequest(req);
|
|
47
|
+
const req_data = request.toBinary();
|
|
48
|
+
const res_data = livekitFfiRequest(req_data);
|
|
50
49
|
return FfiResponse.fromBinary(res_data).message.value as T;
|
|
51
50
|
}
|
|
52
51
|
|
|
@@ -59,8 +58,8 @@ export class FfiClient extends (EventEmitter as new () => TypedEmitter<FfiClient
|
|
|
59
58
|
}
|
|
60
59
|
|
|
61
60
|
async waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T> {
|
|
62
|
-
return new Promise<T>((resolve
|
|
63
|
-
|
|
61
|
+
return new Promise<T>((resolve) => {
|
|
62
|
+
const listener = (ev: FfiEvent) => {
|
|
64
63
|
if (predicate(ev)) {
|
|
65
64
|
this.off(FfiClientEvent.FfiEvent, listener);
|
|
66
65
|
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';
|
package/src/napi/native.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
|
|
5
4
|
// this file exists to smoothly translate the autogenerated CommonJS code
|
|
6
5
|
// to an ES module that plays better with TypeScript.
|
|
7
|
-
|
|
8
6
|
import native from './native.cjs';
|
|
7
|
+
|
|
9
8
|
export const {
|
|
10
9
|
livekitInitialize,
|
|
11
10
|
livekitCopyBuffer,
|