@livekit/rtc-node 0.10.4 → 0.11.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/README.md +54 -2
- package/build.rs +1 -1
- package/dist/audio_frame.d.ts +1 -1
- package/dist/audio_frame.d.ts.map +1 -1
- package/dist/audio_frame.js +4 -4
- package/dist/audio_frame.js.map +1 -1
- package/dist/audio_resampler.d.ts.map +1 -1
- package/dist/audio_resampler.js +8 -7
- package/dist/audio_resampler.js.map +1 -1
- package/dist/audio_source.d.ts.map +1 -1
- package/dist/audio_source.js +8 -4
- package/dist/audio_source.js.map +1 -1
- package/dist/audio_stream.d.ts +1 -1
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/audio_stream.js +4 -3
- package/dist/audio_stream.js.map +1 -1
- package/dist/e2ee.d.ts.map +1 -1
- package/dist/e2ee.js +25 -25
- 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 +9 -7
- package/dist/ffi_client.js.map +1 -1
- package/dist/index.d.ts +29 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -4
- package/dist/index.js.map +1 -1
- package/dist/napi/native.d.ts +1 -0
- package/dist/participant.d.ts +48 -2
- package/dist/participant.d.ts.map +1 -1
- package/dist/participant.js +143 -24
- package/dist/participant.js.map +1 -1
- package/dist/proto/audio_frame_pb.d.ts +451 -526
- package/dist/proto/audio_frame_pb.d.ts.map +1 -1
- package/dist/proto/audio_frame_pb.js +200 -1179
- package/dist/proto/audio_frame_pb.js.map +1 -1
- package/dist/proto/e2ee_pb.d.ts +264 -333
- package/dist/proto/e2ee_pb.d.ts.map +1 -1
- package/dist/proto/e2ee_pb.js +136 -810
- package/dist/proto/e2ee_pb.js.map +1 -1
- package/dist/proto/ffi_pb.d.ts +175 -129
- package/dist/proto/ffi_pb.d.ts.map +1 -1
- package/dist/proto/ffi_pb.js +58 -395
- package/dist/proto/ffi_pb.js.map +1 -1
- package/dist/proto/handle_pb.d.ts +14 -13
- package/dist/proto/handle_pb.d.ts.map +1 -1
- package/dist/proto/handle_pb.js +8 -39
- package/dist/proto/handle_pb.js.map +1 -1
- package/dist/proto/participant_pb.d.ts +54 -52
- package/dist/proto/participant_pb.d.ts.map +1 -1
- package/dist/proto/participant_pb.js +18 -90
- package/dist/proto/participant_pb.js.map +1 -1
- package/dist/proto/room_pb.d.ts +1042 -1187
- package/dist/proto/room_pb.d.ts.map +1 -1
- package/dist/proto/room_pb.js +470 -2938
- package/dist/proto/room_pb.js.map +1 -1
- package/dist/proto/rpc_pb.d.ts +235 -0
- package/dist/proto/rpc_pb.d.ts.map +1 -0
- package/dist/proto/rpc_pb.js +74 -0
- package/dist/proto/rpc_pb.js.map +1 -0
- package/dist/proto/stats_pb.d.ts +738 -800
- package/dist/proto/stats_pb.d.ts.map +1 -1
- package/dist/proto/stats_pb.js +218 -1960
- package/dist/proto/stats_pb.js.map +1 -1
- package/dist/proto/track_pb.d.ts +225 -258
- package/dist/proto/track_pb.d.ts.map +1 -1
- package/dist/proto/track_pb.js +98 -591
- package/dist/proto/track_pb.js.map +1 -1
- package/dist/proto/video_frame_pb.d.ts +357 -390
- package/dist/proto/video_frame_pb.d.ts.map +1 -1
- package/dist/proto/video_frame_pb.js +137 -790
- package/dist/proto/video_frame_pb.js.map +1 -1
- package/dist/room.d.ts +21 -7
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +134 -54
- package/dist/room.js.map +1 -1
- package/dist/rpc.d.ts +78 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +69 -0
- package/dist/rpc.js.map +1 -0
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +7 -3
- package/dist/track.js.map +1 -1
- package/dist/track_publication.d.ts.map +1 -1
- package/dist/track_publication.js +3 -2
- package/dist/track_publication.js.map +1 -1
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/dist/video_frame.d.ts +2 -2
- package/dist/video_frame.d.ts.map +1 -1
- package/dist/video_frame.js +47 -25
- package/dist/video_frame.js.map +1 -1
- package/dist/video_source.d.ts.map +1 -1
- package/dist/video_source.js +4 -3
- package/dist/video_source.js.map +1 -1
- package/dist/video_stream.d.ts +1 -1
- package/dist/video_stream.d.ts.map +1 -1
- package/dist/video_stream.js +7 -3
- package/dist/video_stream.js.map +1 -1
- package/package.json +13 -10
- package/src/audio_frame.ts +6 -6
- package/src/audio_resampler.ts +10 -9
- package/src/audio_source.ts +9 -8
- package/src/audio_stream.ts +7 -6
- package/src/e2ee.ts +34 -34
- package/src/ffi_client.ts +23 -10
- package/src/index.ts +61 -2
- package/src/napi/native.d.ts +1 -0
- package/src/nodejs.rs +6 -3
- package/src/participant.ts +207 -47
- package/src/proto/audio_frame_pb.ts +562 -1279
- package/src/proto/e2ee_pb.ts +365 -886
- package/src/proto/ffi_pb.ts +206 -405
- package/src/proto/handle_pb.ts +21 -35
- package/src/proto/participant_pb.ts +71 -112
- package/src/proto/room_pb.ts +1284 -2995
- package/src/proto/rpc_pb.ts +310 -0
- package/src/proto/stats_pb.ts +1028 -1947
- package/src/proto/track_pb.ts +287 -621
- package/src/proto/video_frame_pb.ts +445 -905
- package/src/room.ts +181 -75
- package/src/rpc.ts +121 -0
- package/src/track.ts +8 -7
- package/src/track_publication.ts +5 -4
- package/src/version.ts +1 -0
- package/src/video_frame.ts +54 -27
- package/src/video_source.ts +7 -6
- package/src/video_stream.ts +7 -6
- package/dist/utils.d.ts +0 -7
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -48
- package/dist/utils.js.map +0 -1
- package/src/utils.test.ts +0 -47
- package/src/utils.ts +0 -44
package/README.md
CHANGED
|
@@ -76,10 +76,62 @@ await room.localParticipant.publishTrack(track, options);
|
|
|
76
76
|
await source.captureFrame(new AudioFrame(buffer, 16000, 1, buffer.byteLength / 2));
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
### RPC
|
|
80
|
+
|
|
81
|
+
Perform your own predefined method calls from one participant to another.
|
|
82
|
+
|
|
83
|
+
This feature is especially powerful when used with [Agents](https://docs.livekit.io/agents), for instance to forward LLM function calls to your client application.
|
|
84
|
+
|
|
85
|
+
#### Registering an RPC method
|
|
86
|
+
|
|
87
|
+
The participant who implements the method and will receive its calls must first register support:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
room.localParticipant?.registerRpcMethod(
|
|
91
|
+
// method name - can be any string that makes sense for your application
|
|
92
|
+
'greet',
|
|
93
|
+
|
|
94
|
+
// method handler - will be called when the method is invoked by a RemoteParticipant
|
|
95
|
+
async (data: RpcInvocationData) => {
|
|
96
|
+
console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);
|
|
97
|
+
return `Hello, ${data.callerIdentity}!`;
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
In addition to the payload, your handler will also receive `responseTimeout`, which informs you the maximum time available to return a response. If you are unable to respond in time, the call will result in an error on the caller's side.
|
|
103
|
+
|
|
104
|
+
#### Performing an RPC request
|
|
105
|
+
|
|
106
|
+
The caller may then initiate an RPC call like so:
|
|
107
|
+
|
|
108
|
+
```typescript
|
|
109
|
+
try {
|
|
110
|
+
const response = await room.localParticipant!.performRpc({
|
|
111
|
+
destinationIdentity: 'recipient-identity',
|
|
112
|
+
method: 'greet',
|
|
113
|
+
payload: 'Hello from RPC!',
|
|
114
|
+
});
|
|
115
|
+
console.log('RPC response:', response);
|
|
116
|
+
} catch (error) {
|
|
117
|
+
console.error('RPC call failed:', error);
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
You may find it useful to adjust the `responseTimeout` parameter, which indicates the amount of time you will wait for a response. We recommend keeping this value as low as possible while still satisfying the constraints of your application.
|
|
122
|
+
|
|
123
|
+
#### Errors
|
|
124
|
+
|
|
125
|
+
LiveKit is a dynamic realtime environment and calls can fail for various reasons.
|
|
126
|
+
|
|
127
|
+
You may throw errors of the type `RpcError` with a string `message` in an RPC method handler and they will be received on the caller's side with the message intact. Other errors will not be transmitted and will instead arrive to the caller as `1500` ("Application Error"). Other built-in errors are detailed in `RpcError`.
|
|
128
|
+
|
|
79
129
|
## Examples
|
|
80
130
|
|
|
81
|
-
- [`publish-wav`](https://github.com/livekit/node-sdks/tree/main/examples/publish-wav): connect to a room and publish a wave file
|
|
131
|
+
- [`publish-wav`](https://github.com/livekit/node-sdks/tree/main/examples/publish-wav): connect to a room and publish a .wave file
|
|
132
|
+
- [`rpc`](https://github.com/livekit/node-sdks/tree/main/examples/rpc): simple back-and-forth RPC interaction
|
|
133
|
+
|
|
82
134
|
|
|
83
135
|
## Getting help / Contributing
|
|
84
136
|
|
|
85
|
-
Please join us on [Slack](https://livekit.io/join-slack) to get help from our devs
|
|
137
|
+
Please join us on [Slack](https://livekit.io/join-slack) to get help from our devs & community. We welcome your contributions and details can be discussed there.
|
package/build.rs
CHANGED
package/dist/audio_frame.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { OwnedAudioFrameBuffer } from './proto/audio_frame_pb.js';
|
|
2
|
-
import { AudioFrameBufferInfo } from './proto/audio_frame_pb.js';
|
|
2
|
+
import { type AudioFrameBufferInfo } from './proto/audio_frame_pb.js';
|
|
3
3
|
export declare class AudioFrame {
|
|
4
4
|
data: Int16Array;
|
|
5
5
|
sampleRate: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_frame.d.ts","sourceRoot":"","sources":["../src/audio_frame.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio_frame.d.ts","sourceRoot":"","sources":["../src/audio_frame.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,KAAK,oBAAoB,EAA8B,MAAM,2BAA2B,CAAC;AAElG,qBAAa,UAAU;IACrB,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;gBAOd,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;IAO7F,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,UAAU;IAK1F,gBAAgB;IAChB,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU;IAa9D,gBAAgB;IAChB,SAAS,IAAI,oBAAoB;CAQlC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,WAAY,UAAU,GAAG,UAAU,EAAE,KAAG,UA2BtE,CAAC"}
|
package/dist/audio_frame.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { create } from '@bufbuild/protobuf';
|
|
4
5
|
import { FfiClient, FfiHandle } from './ffi_client.js';
|
|
5
|
-
import {
|
|
6
|
+
import { AudioFrameBufferInfoSchema } from './proto/audio_frame_pb.js';
|
|
6
7
|
export class AudioFrame {
|
|
7
8
|
// note: if converting from Uint8Array to Int16Array, *do not* use buffer.slice!
|
|
8
9
|
// it is marked unstable by Node and can cause undefined behaviour, such as massive chunks of
|
|
@@ -29,7 +30,7 @@ export class AudioFrame {
|
|
|
29
30
|
}
|
|
30
31
|
/** @internal */
|
|
31
32
|
protoInfo() {
|
|
32
|
-
return
|
|
33
|
+
return create(AudioFrameBufferInfoSchema, {
|
|
33
34
|
dataPtr: FfiClient.instance.retrievePtr(new Uint8Array(this.data.buffer)),
|
|
34
35
|
sampleRate: this.sampleRate,
|
|
35
36
|
numChannels: this.channels,
|
|
@@ -47,10 +48,9 @@ export class AudioFrame {
|
|
|
47
48
|
* @param buffer - a single AudioFrame or list thereof
|
|
48
49
|
*/
|
|
49
50
|
export const combineAudioFrames = (buffer) => {
|
|
50
|
-
if (!buffer
|
|
51
|
+
if (!Array.isArray(buffer)) {
|
|
51
52
|
return buffer;
|
|
52
53
|
}
|
|
53
|
-
buffer = buffer;
|
|
54
54
|
if (buffer.length === 0) {
|
|
55
55
|
throw new Error('buffer is empty');
|
|
56
56
|
}
|
package/dist/audio_frame.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_frame.js","sourceRoot":"","sources":["../src/audio_frame.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,
|
|
1
|
+
{"version":3,"file":"audio_frame.js","sourceRoot":"","sources":["../src/audio_frame.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_resampler.d.ts","sourceRoot":"","sources":["../src/audio_resampler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio_resampler.d.ts","sourceRoot":"","sources":["../src/audio_resampler.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAe9C;;;GAGG;AACH,oBAAY,qBAAqB;IAC/B,KAAK,IAAsC;IAC3C,GAAG,IAAoC;IACvC,MAAM,IAAuC;IAC7C,IAAI,IAAqC;IACzC,SAAS,IAAyC;CACnD;AAED;;;;GAIG;AACH,qBAAa,cAAc;;IAMzB;;;;;;;;OAQG;gBAED,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,SAAI,EACZ,OAAO,wBAA+B;IA8BxC;;;;;;;;;;OAUG;IACH,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,EAAE;IAiCpC;;;;;;OAMG;IACH,KAAK,IAAI,UAAU,EAAE;CA8BtB"}
|
package/dist/audio_resampler.js
CHANGED
|
@@ -13,9 +13,10 @@ var _AudioResampler_inputRate, _AudioResampler_outputRate, _AudioResampler_chann
|
|
|
13
13
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
14
14
|
//
|
|
15
15
|
// SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
import { create } from '@bufbuild/protobuf';
|
|
16
17
|
import { AudioFrame } from './audio_frame.js';
|
|
17
18
|
import { FfiClient, FfiHandle } from './ffi_client.js';
|
|
18
|
-
import {
|
|
19
|
+
import { FlushSoxResamplerRequestSchema, NewSoxResamplerRequestSchema, PushSoxResamplerRequestSchema, SoxResamplerDataType, } from './proto/audio_frame_pb.js';
|
|
19
20
|
/**
|
|
20
21
|
* Resampler quality. Higher quality settings result in better audio quality but require more
|
|
21
22
|
* processing power.
|
|
@@ -51,7 +52,7 @@ export class AudioResampler {
|
|
|
51
52
|
__classPrivateFieldSet(this, _AudioResampler_inputRate, inputRate, "f");
|
|
52
53
|
__classPrivateFieldSet(this, _AudioResampler_outputRate, outputRate, "f");
|
|
53
54
|
__classPrivateFieldSet(this, _AudioResampler_channels, channels, "f");
|
|
54
|
-
const req =
|
|
55
|
+
const req = create(NewSoxResamplerRequestSchema, {
|
|
55
56
|
inputRate,
|
|
56
57
|
outputRate,
|
|
57
58
|
numChannels: channels,
|
|
@@ -66,10 +67,10 @@ export class AudioResampler {
|
|
|
66
67
|
value: req,
|
|
67
68
|
},
|
|
68
69
|
});
|
|
69
|
-
if (res.
|
|
70
|
-
throw new Error(res.
|
|
70
|
+
if (res.message.case !== 'resampler') {
|
|
71
|
+
throw new Error(res.message.value ?? 'Unknown Error');
|
|
71
72
|
}
|
|
72
|
-
__classPrivateFieldSet(this, _AudioResampler_ffiHandle, new FfiHandle(res.
|
|
73
|
+
__classPrivateFieldSet(this, _AudioResampler_ffiHandle, new FfiHandle(res.message.value.handle.id), "f");
|
|
73
74
|
}
|
|
74
75
|
/**
|
|
75
76
|
* Push audio data into the resampler and retrieve any available resampled data.
|
|
@@ -83,7 +84,7 @@ export class AudioResampler {
|
|
|
83
84
|
* be empty if no output data is available yet.
|
|
84
85
|
*/
|
|
85
86
|
push(data) {
|
|
86
|
-
const req =
|
|
87
|
+
const req = create(PushSoxResamplerRequestSchema, {
|
|
87
88
|
resamplerHandle: __classPrivateFieldGet(this, _AudioResampler_ffiHandle, "f").handle,
|
|
88
89
|
dataPtr: data.protoInfo().dataPtr,
|
|
89
90
|
size: data.data.byteLength,
|
|
@@ -113,7 +114,7 @@ export class AudioResampler {
|
|
|
113
114
|
* internal buffers are processed and all resampled data is output.
|
|
114
115
|
*/
|
|
115
116
|
flush() {
|
|
116
|
-
const req =
|
|
117
|
+
const req = create(FlushSoxResamplerRequestSchema, {
|
|
117
118
|
resamplerHandle: __classPrivateFieldGet(this, _AudioResampler_ffiHandle, "f").handle,
|
|
118
119
|
});
|
|
119
120
|
const res = FfiClient.instance.request({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_resampler.js","sourceRoot":"","sources":["../src/audio_resampler.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMvD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"audio_resampler.js","sourceRoot":"","sources":["../src/audio_resampler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_source.d.ts","sourceRoot":"","sources":["../src/audio_source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio_source.d.ts","sourceRoot":"","sources":["../src/audio_source.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EAKhB,MAAM,2BAA2B,CAAC;AAQnC,qBAAa,WAAW;IACtB,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB;IAChB,OAAO,aAAY;IACnB,OAAO,gBAAqB;IAC5B,gBAAgB;IAChB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAa;IAEpD,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;gBAEN,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,SAAO;IA0BrE,IAAI,cAAc,IAAI,MAAM,CAK3B;IAED,UAAU;IAeV,gBAAgB;IACV,UAAU;IAMV,cAAc;IAQd,YAAY,CAAC,KAAK,EAAE,UAAU;CAiCrC"}
|
package/dist/audio_source.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
|
+
//
|
|
3
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { create } from '@bufbuild/protobuf';
|
|
1
5
|
import { FfiClient } from './ffi_client.js';
|
|
2
6
|
import { FfiHandle } from './napi/native.js';
|
|
3
|
-
import { AudioSourceType,
|
|
7
|
+
import { AudioSourceType, CaptureAudioFrameRequestSchema, ClearAudioBufferRequestSchema, NewAudioSourceRequestSchema, } from './proto/audio_frame_pb.js';
|
|
4
8
|
export class AudioSource {
|
|
5
9
|
constructor(sampleRate, numChannels, queueSize = 1000) {
|
|
6
10
|
/** @internal */
|
|
@@ -13,7 +17,7 @@ export class AudioSource {
|
|
|
13
17
|
this.queueSize = queueSize;
|
|
14
18
|
this.lastCapture = 0;
|
|
15
19
|
this.currentQueueSize = 0;
|
|
16
|
-
const req =
|
|
20
|
+
const req = create(NewAudioSourceRequestSchema, {
|
|
17
21
|
type: AudioSourceType.AUDIO_SOURCE_NATIVE,
|
|
18
22
|
sampleRate: sampleRate,
|
|
19
23
|
numChannels: numChannels,
|
|
@@ -32,7 +36,7 @@ export class AudioSource {
|
|
|
32
36
|
return Math.max(this.currentQueueSize - Number(process.hrtime.bigint() / 1000000n) + this.lastCapture, 0);
|
|
33
37
|
}
|
|
34
38
|
clearQueue() {
|
|
35
|
-
const req =
|
|
39
|
+
const req = create(ClearAudioBufferRequestSchema, {
|
|
36
40
|
sourceHandle: this.ffiHandle.handle,
|
|
37
41
|
});
|
|
38
42
|
FfiClient.instance.request({
|
|
@@ -68,7 +72,7 @@ export class AudioSource {
|
|
|
68
72
|
// remove 50ms to account for processing time
|
|
69
73
|
// (e.g. using wait_for_playout for very small chunks)
|
|
70
74
|
this.timeout = setTimeout(this.release, this.currentQueueSize - 50);
|
|
71
|
-
const req =
|
|
75
|
+
const req = create(CaptureAudioFrameRequestSchema, {
|
|
72
76
|
sourceHandle: this.ffiHandle.handle,
|
|
73
77
|
buffer: frame.protoInfo(),
|
|
74
78
|
});
|
package/dist/audio_source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_source.js","sourceRoot":"","sources":["../src/audio_source.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio_source.js","sourceRoot":"","sources":["../src/audio_source.ts"],"names":[],"mappings":"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"}
|
package/dist/audio_stream.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { Mutex } from '@livekit/mutex';
|
|
1
2
|
import { AudioFrame } from './audio_frame.js';
|
|
2
3
|
import { FfiHandle } from './ffi_client.js';
|
|
3
4
|
import type { AudioStreamInfo } from './proto/audio_frame_pb.js';
|
|
4
5
|
import type { Track } from './track.js';
|
|
5
|
-
import { Mutex } from './utils.js';
|
|
6
6
|
export declare class AudioStream implements AsyncIterableIterator<AudioFrame> {
|
|
7
7
|
/** @internal */
|
|
8
8
|
info: AudioStreamInfo;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_stream.d.ts","sourceRoot":"","sources":["../src/audio_stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audio_stream.d.ts","sourceRoot":"","sources":["../src/audio_stream.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAA6B,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAA0B,MAAM,2BAA2B,CAAC;AAEzF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,qBAAa,WAAY,YAAW,qBAAqB,CAAC,UAAU,CAAC;IACnE,gBAAgB;IAChB,IAAI,EAAE,eAAe,CAAC;IACtB,gBAAgB;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,gBAAgB;IAChB,UAAU,EAAE,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAM;IACvC,gBAAgB;IAChB,YAAY,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAC1E,gBAAgB;IAChB,KAAK,QAAe;IAEpB,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;gBAER,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,MAAc,EAAE,WAAW,GAAE,MAAU;IAyB7E,OAAO,CAAC,OAAO,CAsBb;IAEI,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAkBjD,KAAK;IAKL,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,WAAW;CAGtC"}
|
package/dist/audio_stream.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { create } from '@bufbuild/protobuf';
|
|
5
|
+
import { Mutex } from '@livekit/mutex';
|
|
4
6
|
import { AudioFrame } from './audio_frame.js';
|
|
5
7
|
import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
|
|
6
|
-
import { AudioStreamType,
|
|
7
|
-
import { Mutex } from './utils.js';
|
|
8
|
+
import { AudioStreamType, NewAudioStreamRequestSchema } from './proto/audio_frame_pb.js';
|
|
8
9
|
export class AudioStream {
|
|
9
10
|
constructor(track, sampleRate = 48000, numChannels = 1) {
|
|
10
11
|
/** @internal */
|
|
@@ -37,7 +38,7 @@ export class AudioStream {
|
|
|
37
38
|
this.track = track;
|
|
38
39
|
this.sampleRate = sampleRate;
|
|
39
40
|
this.numChannels = numChannels;
|
|
40
|
-
const req =
|
|
41
|
+
const req = create(NewAudioStreamRequestSchema, {
|
|
41
42
|
type: AudioStreamType.AUDIO_STREAM_NATIVE,
|
|
42
43
|
trackHandle: track.ffi_handle.handle,
|
|
43
44
|
sampleRate: sampleRate,
|
package/dist/audio_stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio_stream.js","sourceRoot":"","sources":["../src/audio_stream.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"audio_stream.js","sourceRoot":"","sources":["../src/audio_stream.ts"],"names":[],"mappings":"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"}
|
package/dist/e2ee.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"e2ee.d.ts","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,cAAc,EASf,MAAM,oBAAoB,CAAC;AAM5B,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,UAAU,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,yBAAyB,EAAE,kBAIvC,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,eAAO,MAAM,kBAAkB,EAAE,WAGhC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,EAAE,kBAAkB,CAAC;IAE5B,eAAe;gBACH,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAKxD,YAAY,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM;IAoBpD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB7C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAqB9C,MAAM,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAoBpD,SAAS,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;IAsBpE,UAAU,CAAC,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU;CAqBtE;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAM;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAO/F,UAAU,CAAC,OAAO,EAAE,OAAO;IAqB3B,WAAW,CAAC,QAAQ,EAAE,MAAM;CAoB7B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC,OAAO,EAAE,OAAO,CAAC;gBAEL,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW;IAWlD,UAAU,CAAC,OAAO,EAAE,OAAO;IAoB3B,aAAa,IAAI,YAAY,EAAE;CA8BhC"}
|
package/dist/e2ee.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// SPDX-FileCopyrightText: 2024 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
import { create } from '@bufbuild/protobuf';
|
|
4
5
|
import { FfiClient } from './ffi_client.js';
|
|
5
|
-
import {
|
|
6
|
+
import { E2eeManagerSetEnabledRequestSchema, E2eeRequestSchema, EncryptionType, FrameCryptorSetEnabledRequestSchema, FrameCryptorSetKeyIndexRequestSchema, GetKeyRequestSchema, GetSharedKeyRequestSchema, RatchetKeyRequestSchema, RatchetSharedKeyRequestSchema, SetKeyRequestSchema, SetSharedKeyRequestSchema, } from './proto/e2ee_pb.js';
|
|
6
7
|
const DEFAULT_RATCHET_SALT = new TextEncoder().encode('LKFrameEncryptionKey');
|
|
7
8
|
const DEFAULT_RATCHET_WINDOW_SIZE = 16;
|
|
8
9
|
const DEFAULT_FAILURE_TOLERANCE = -1;
|
|
@@ -22,11 +23,11 @@ export class KeyProvider {
|
|
|
22
23
|
this.options = opts;
|
|
23
24
|
}
|
|
24
25
|
setSharedKey(sharedKey, keyIndex) {
|
|
25
|
-
const req =
|
|
26
|
+
const req = create(E2eeRequestSchema, {
|
|
26
27
|
roomHandle: this.roomHandle,
|
|
27
28
|
message: {
|
|
28
29
|
case: 'setSharedKey',
|
|
29
|
-
value:
|
|
30
|
+
value: create(SetSharedKeyRequestSchema, {
|
|
30
31
|
keyIndex: keyIndex,
|
|
31
32
|
sharedKey: sharedKey,
|
|
32
33
|
}),
|
|
@@ -40,11 +41,11 @@ export class KeyProvider {
|
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
exportSharedKey(keyIndex) {
|
|
43
|
-
const req =
|
|
44
|
+
const req = create(E2eeRequestSchema, {
|
|
44
45
|
roomHandle: this.roomHandle,
|
|
45
46
|
message: {
|
|
46
47
|
case: 'getSharedKey',
|
|
47
|
-
value:
|
|
48
|
+
value: create(GetSharedKeyRequestSchema, {
|
|
48
49
|
keyIndex: keyIndex,
|
|
49
50
|
}),
|
|
50
51
|
},
|
|
@@ -58,11 +59,11 @@ export class KeyProvider {
|
|
|
58
59
|
return res.message.value.key;
|
|
59
60
|
}
|
|
60
61
|
ratchetSharedKey(keyIndex) {
|
|
61
|
-
const req =
|
|
62
|
+
const req = create(E2eeRequestSchema, {
|
|
62
63
|
roomHandle: this.roomHandle,
|
|
63
64
|
message: {
|
|
64
65
|
case: 'ratchetSharedKey',
|
|
65
|
-
value:
|
|
66
|
+
value: create(RatchetSharedKeyRequestSchema, {
|
|
66
67
|
keyIndex: keyIndex,
|
|
67
68
|
}),
|
|
68
69
|
},
|
|
@@ -76,11 +77,11 @@ export class KeyProvider {
|
|
|
76
77
|
return res.message.value.newKey;
|
|
77
78
|
}
|
|
78
79
|
setKey(participantIdentity, keyIndex) {
|
|
79
|
-
const req =
|
|
80
|
+
const req = create(E2eeRequestSchema, {
|
|
80
81
|
roomHandle: this.roomHandle,
|
|
81
82
|
message: {
|
|
82
83
|
case: 'setKey',
|
|
83
|
-
value:
|
|
84
|
+
value: create(SetKeyRequestSchema, {
|
|
84
85
|
keyIndex: keyIndex,
|
|
85
86
|
participantIdentity: participantIdentity,
|
|
86
87
|
}),
|
|
@@ -94,11 +95,11 @@ export class KeyProvider {
|
|
|
94
95
|
});
|
|
95
96
|
}
|
|
96
97
|
exportKey(participantIdentity, keyIndex) {
|
|
97
|
-
const req =
|
|
98
|
+
const req = create(E2eeRequestSchema, {
|
|
98
99
|
roomHandle: this.roomHandle,
|
|
99
100
|
message: {
|
|
100
101
|
case: 'getKey',
|
|
101
|
-
value:
|
|
102
|
+
value: create(GetKeyRequestSchema, {
|
|
102
103
|
keyIndex: keyIndex,
|
|
103
104
|
participantIdentity: participantIdentity,
|
|
104
105
|
}),
|
|
@@ -113,11 +114,11 @@ export class KeyProvider {
|
|
|
113
114
|
return res.message.value.key;
|
|
114
115
|
}
|
|
115
116
|
ratchetKey(participantIdentity, keyIndex) {
|
|
116
|
-
const req =
|
|
117
|
+
const req = create(E2eeRequestSchema, {
|
|
117
118
|
roomHandle: this.roomHandle,
|
|
118
119
|
message: {
|
|
119
120
|
case: 'ratchetKey',
|
|
120
|
-
value:
|
|
121
|
+
value: create(RatchetKeyRequestSchema, {
|
|
121
122
|
keyIndex: keyIndex,
|
|
122
123
|
participantIdentity: participantIdentity,
|
|
123
124
|
}),
|
|
@@ -142,11 +143,11 @@ export class FrameCryptor {
|
|
|
142
143
|
}
|
|
143
144
|
setEnabled(enabled) {
|
|
144
145
|
this.enabled = enabled;
|
|
145
|
-
const req =
|
|
146
|
+
const req = create(E2eeRequestSchema, {
|
|
146
147
|
roomHandle: this.roomHandle,
|
|
147
148
|
message: {
|
|
148
149
|
case: 'cryptorSetEnabled',
|
|
149
|
-
value:
|
|
150
|
+
value: create(FrameCryptorSetEnabledRequestSchema, {
|
|
150
151
|
participantIdentity: this.participantIdentity,
|
|
151
152
|
enabled: this.enabled,
|
|
152
153
|
}),
|
|
@@ -161,11 +162,11 @@ export class FrameCryptor {
|
|
|
161
162
|
}
|
|
162
163
|
setKeyIndex(keyIndex) {
|
|
163
164
|
this.keyIndex = keyIndex;
|
|
164
|
-
const req =
|
|
165
|
+
const req = create(E2eeRequestSchema, {
|
|
165
166
|
roomHandle: this.roomHandle,
|
|
166
167
|
message: {
|
|
167
168
|
case: 'cryptorSetKeyIndex',
|
|
168
|
-
value:
|
|
169
|
+
value: create(FrameCryptorSetKeyIndexRequestSchema, {
|
|
169
170
|
participantIdentity: this.participantIdentity,
|
|
170
171
|
keyIndex: this.keyIndex,
|
|
171
172
|
}),
|
|
@@ -184,19 +185,18 @@ export class E2EEManager {
|
|
|
184
185
|
this.roomHandle = 0n;
|
|
185
186
|
this.roomHandle = roomHandle;
|
|
186
187
|
this.enabled = opts !== undefined;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
188
|
+
opts ?? (opts = defaultE2EEOptions);
|
|
189
|
+
const options = { ...defaultE2EEOptions, ...opts };
|
|
190
|
+
this.options = options;
|
|
191
|
+
this.keyProvider = new KeyProvider(roomHandle, options.keyProviderOptions);
|
|
192
192
|
}
|
|
193
193
|
setEnabled(enabled) {
|
|
194
194
|
this.enabled = enabled;
|
|
195
|
-
const req =
|
|
195
|
+
const req = create(E2eeRequestSchema, {
|
|
196
196
|
roomHandle: this.roomHandle,
|
|
197
197
|
message: {
|
|
198
198
|
case: 'managerSetEnabled',
|
|
199
|
-
value:
|
|
199
|
+
value: create(E2eeManagerSetEnabledRequestSchema, {
|
|
200
200
|
enabled: this.enabled,
|
|
201
201
|
}),
|
|
202
202
|
},
|
|
@@ -209,7 +209,7 @@ export class E2EEManager {
|
|
|
209
209
|
});
|
|
210
210
|
}
|
|
211
211
|
frameCryptors() {
|
|
212
|
-
const req =
|
|
212
|
+
const req = create(E2eeRequestSchema, {
|
|
213
213
|
roomHandle: this.roomHandle,
|
|
214
214
|
message: {
|
|
215
215
|
case: 'managerGetFrameCryptors',
|
package/dist/e2ee.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"e2ee.js","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,sCAAsC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"e2ee.js","sourceRoot":"","sources":["../src/e2ee.ts"],"names":[],"mappings":"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"}
|
package/dist/ffi_client.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MessageInitShape } from '@bufbuild/protobuf';
|
|
2
2
|
import type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';
|
|
3
3
|
import { FfiHandle, livekitDispose } from './napi/native.js';
|
|
4
|
-
import { FfiEvent, FfiRequest, FfiResponse } from './proto/ffi_pb.js';
|
|
4
|
+
import { FfiEvent, FfiRequest, FfiRequestSchema, FfiResponse } from './proto/ffi_pb.js';
|
|
5
5
|
export { FfiHandle, FfiEvent, FfiResponse, FfiRequest, livekitDispose as dispose };
|
|
6
6
|
export type FfiClientCallbacks = {
|
|
7
7
|
ffi_event: (event: FfiEvent) => void;
|
|
@@ -15,7 +15,7 @@ export declare class FfiClient extends FfiClient_base {
|
|
|
15
15
|
/** @internal */
|
|
16
16
|
static get instance(): FfiClient;
|
|
17
17
|
constructor();
|
|
18
|
-
request<T>(req:
|
|
18
|
+
request<T>(req: MessageInitShape<typeof FfiRequestSchema>): T;
|
|
19
19
|
copyBuffer(ptr: bigint, len: number): Uint8Array;
|
|
20
20
|
retrievePtr(data: Uint8Array): bigint;
|
|
21
21
|
waitFor<T>(predicate: (ev: FfiEvent) => boolean): Promise<T>;
|
package/dist/ffi_client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ffi_client.d.ts","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,iBAAiB,IAAI,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEhF,OAAO,EACL,SAAS,EAET,cAAc,EAIf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,QAAQ,EAER,UAAU,EACV,gBAAgB,EAChB,WAAW,EAEZ,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,IAAI,OAAO,EAAE,CAAC;AAEnF,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,YAAY,CAAC,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;;IAgBD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,gBAAgB,CAAC,OAAO,gBAAgB,CAAC,GAAG,CAAC;IAO7D,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"}
|
package/dist/ffi_client.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { create, fromBinary, toBinary } from '@bufbuild/protobuf';
|
|
1
2
|
import EventEmitter from 'events';
|
|
2
3
|
import { FfiHandle, livekitCopyBuffer, livekitDispose, livekitFfiRequest, livekitInitialize, livekitRetrievePtr, } from './napi/native.js';
|
|
3
|
-
import {
|
|
4
|
-
|
|
4
|
+
import { FfiEventSchema, FfiRequestSchema, FfiResponseSchema, } from './proto/ffi_pb.js';
|
|
5
|
+
import { SDK_VERSION } from './version.js';
|
|
6
|
+
export { FfiHandle, livekitDispose as dispose };
|
|
5
7
|
export var FfiClientEvent;
|
|
6
8
|
(function (FfiClientEvent) {
|
|
7
9
|
FfiClientEvent["FfiEvent"] = "ffi_event";
|
|
@@ -17,15 +19,15 @@ export class FfiClient extends EventEmitter {
|
|
|
17
19
|
super();
|
|
18
20
|
this.setMaxListeners(0);
|
|
19
21
|
livekitInitialize((event_data) => {
|
|
20
|
-
const event =
|
|
22
|
+
const event = fromBinary(FfiEventSchema, event_data);
|
|
21
23
|
this.emit(FfiClientEvent.FfiEvent, event);
|
|
22
|
-
}, true);
|
|
24
|
+
}, true, SDK_VERSION);
|
|
23
25
|
}
|
|
24
26
|
request(req) {
|
|
25
|
-
const request =
|
|
26
|
-
const req_data =
|
|
27
|
+
const request = create(FfiRequestSchema, req);
|
|
28
|
+
const req_data = toBinary(FfiRequestSchema, request);
|
|
27
29
|
const res_data = livekitFfiRequest(req_data);
|
|
28
|
-
return
|
|
30
|
+
return fromBinary(FfiResponseSchema, res_data).message.value;
|
|
29
31
|
}
|
|
30
32
|
copyBuffer(ptr, len) {
|
|
31
33
|
return livekitCopyBuffer(ptr, len);
|
package/dist/ffi_client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffi_client.js","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ffi_client.js","sourceRoot":"","sources":["../src/ffi_client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,cAAc,EAEd,gBAAgB,EAEhB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,SAAS,EAAqC,cAAc,IAAI,OAAO,EAAE,CAAC;AAMnF,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;QACR,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAExB,iBAAiB,CACf,CAAC,UAAsB,EAAE,EAAE;YACzB,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC,EACD,IAAI,EACJ,WAAW,CACZ,CAAC;IACJ,CAAC;IAED,OAAO,CAAI,GAA8C;QACvD,MAAM,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,UAAU,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAU,CAAC;IACpE,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,EAAE;YAChC,MAAM,QAAQ,GAAG,CAAC,EAAY,EAAE,EAAE;gBAChC,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"}
|