@livekit/rtc-node 0.13.31 → 0.13.33
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/dist/async_queue.d.ts +2 -3
- package/dist/audio_filter.d.ts +2 -3
- package/dist/audio_frame.d.ts +5 -6
- package/dist/audio_mixer.d.ts +3 -6
- package/dist/audio_resampler.d.ts +3 -6
- package/dist/audio_source.d.ts +5 -6
- package/dist/{audio_stream-B4hGVcKz.d.cts → audio_stream-CnODFAmo.d.cts} +26 -0
- package/dist/audio_stream.cjs +31 -18
- package/dist/audio_stream.cjs.map +1 -1
- package/dist/audio_stream.d.cts +1 -1
- package/dist/audio_stream.d.ts +61 -18
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/data_streams/index.d.ts +4 -3
- package/dist/data_streams/stream_reader.d.ts +48 -2
- package/dist/data_streams/stream_writer.d.ts +5 -7
- package/dist/data_streams/types.d.ts +41 -2
- package/dist/e2ee.d.ts +8 -10
- package/dist/ffi_client.d.ts +8 -10
- package/dist/frame_processor.d.ts +8 -11
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +22 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -107
- package/dist/log.d.ts +5 -7
- package/dist/participant.cjs +7 -2
- package/dist/participant.cjs.map +1 -1
- package/dist/participant.d.cts +1 -1
- package/dist/participant.d.ts +152 -18
- package/dist/participant.d.ts.map +1 -1
- package/dist/room.cjs +7 -0
- package/dist/room.cjs.map +1 -1
- package/dist/room.d.cts +2 -2
- package/dist/room.d.ts +220 -18
- package/dist/room.d.ts.map +1 -1
- package/dist/rpc.d.ts +7 -9
- package/dist/track.cjs +16 -0
- package/dist/track.cjs.map +1 -1
- package/dist/track.d.cts +1 -1
- package/dist/track.d.ts +67 -18
- package/dist/track.d.ts.map +1 -1
- package/dist/track_publication.d.cts +1 -1
- package/dist/track_publication.d.ts +45 -18
- package/dist/transcription.d.ts +3 -4
- package/dist/types.d.ts +2 -3
- package/dist/utils.d.ts +4 -5
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +1 -1
- package/dist/version.d.ts +2 -3
- package/dist/video_frame.d.ts +4 -5
- package/dist/video_source.d.ts +6 -8
- package/dist/video_stream.d.cts +1 -1
- package/dist/video_stream.d.ts +5 -22
- package/package.json +5 -6
- package/src/audio_stream.ts +37 -24
- package/src/audio_stream_room_lifecycle.test.ts +50 -3
- package/src/index.ts +8 -1
- package/src/participant.ts +7 -1
- package/src/room.ts +14 -0
- package/src/tests/e2e.test.ts +137 -16
- package/src/track.ts +17 -0
- package/src/version.ts +1 -1
- package/dist/async_queue.js +0 -56
- package/dist/async_queue.js.map +0 -1
- package/dist/audio_filter.js +0 -24
- package/dist/audio_filter.js.map +0 -1
- package/dist/audio_frame.js +0 -78
- package/dist/audio_frame.js.map +0 -1
- package/dist/audio_mixer.js +0 -269
- package/dist/audio_mixer.js.map +0 -1
- package/dist/audio_resampler.js +0 -154
- package/dist/audio_resampler.js.map +0 -1
- package/dist/audio_source.js +0 -134
- package/dist/audio_source.js.map +0 -1
- package/dist/audio_stream-DEG1JKge.d.ts +0 -498
- package/dist/audio_stream.js +0 -109
- package/dist/audio_stream.js.map +0 -1
- package/dist/data_streams/index.js +0 -3
- package/dist/data_streams/index.js.map +0 -1
- package/dist/data_streams/stream_reader.js +0 -124
- package/dist/data_streams/stream_reader.js.map +0 -1
- package/dist/data_streams/stream_writer.js +0 -26
- package/dist/data_streams/stream_writer.js.map +0 -1
- package/dist/data_streams/types.js +0 -1
- package/dist/data_streams/types.js.map +0 -1
- package/dist/e2ee.js +0 -251
- package/dist/e2ee.js.map +0 -1
- package/dist/ffi_client.js +0 -89
- package/dist/ffi_client.js.map +0 -1
- package/dist/frame_processor.js +0 -29
- package/dist/frame_processor.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/log.js +0 -9
- package/dist/log.js.map +0 -1
- package/dist/participant.js +0 -715
- package/dist/participant.js.map +0 -1
- package/dist/room.js +0 -899
- package/dist/room.js.map +0 -1
- package/dist/rpc.js +0 -65
- package/dist/rpc.js.map +0 -1
- package/dist/track.js +0 -218
- package/dist/track.js.map +0 -1
- package/dist/track_publication.js +0 -100
- package/dist/track_publication.js.map +0 -1
- package/dist/transcription.js +0 -1
- package/dist/transcription.js.map +0 -1
- package/dist/types-_PdPVish.d.ts +0 -87
- package/dist/types.js +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.js +0 -35
- package/dist/utils.js.map +0 -1
- package/dist/version.js +0 -5
- package/dist/version.js.map +0 -1
- package/dist/video_frame.js +0 -207
- package/dist/video_frame.js.map +0 -1
- package/dist/video_source.js +0 -53
- package/dist/video_source.js.map +0 -1
- package/dist/video_stream.js +0 -70
- package/dist/video_stream.js.map +0 -1
package/dist/room.d.ts
CHANGED
|
@@ -1,18 +1,220 @@
|
|
|
1
|
-
import '@livekit/rtc-ffi-bindings';
|
|
2
|
-
import '@livekit/
|
|
3
|
-
import '
|
|
4
|
-
import '
|
|
5
|
-
|
|
6
|
-
import './
|
|
7
|
-
import '
|
|
8
|
-
import './
|
|
9
|
-
import './
|
|
10
|
-
import './
|
|
11
|
-
import './
|
|
12
|
-
import './
|
|
13
|
-
import '
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import { type EncryptionType } from '@livekit/rtc-ffi-bindings';
|
|
2
|
+
import { DisconnectReason } from '@livekit/rtc-ffi-bindings';
|
|
3
|
+
import { type ConnectionQuality, ConnectionState, ContinualGatheringPolicy, type DataPacketKind, RoomOptions as FfiRoomOptions, type IceServer, IceTransportType, RoomDataStreamOptions, type RoomInfo, type SimulateScenarioKind } from '@livekit/rtc-ffi-bindings';
|
|
4
|
+
import type { TypedEventEmitter as TypedEmitter } from '@livekit/typed-emitter';
|
|
5
|
+
import type { ByteStreamHandler, TextStreamHandler } from './data_streams/types.js';
|
|
6
|
+
import type { E2EEOptions } from './e2ee.js';
|
|
7
|
+
import { E2EEManager } from './e2ee.js';
|
|
8
|
+
import type { Participant } from './participant.js';
|
|
9
|
+
import { LocalParticipant, RemoteParticipant } from './participant.js';
|
|
10
|
+
import type { LocalTrack, RemoteTrack } from './track.js';
|
|
11
|
+
import type { LocalTrackPublication, TrackPublication } from './track_publication.js';
|
|
12
|
+
import { RemoteTrackPublication } from './track_publication.js';
|
|
13
|
+
import type { ChatMessage } from './types.js';
|
|
14
|
+
export { RoomDataStreamOptions };
|
|
15
|
+
export interface RtcConfiguration {
|
|
16
|
+
iceTransportType: IceTransportType;
|
|
17
|
+
continualGatheringPolicy: ContinualGatheringPolicy;
|
|
18
|
+
iceServers: IceServer[];
|
|
19
|
+
}
|
|
20
|
+
export declare const defaultRtcConfiguration: RtcConfiguration;
|
|
21
|
+
export interface RoomOptions {
|
|
22
|
+
autoSubscribe: boolean;
|
|
23
|
+
dynacast: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Use `encryption` instead. See x for details
|
|
26
|
+
*/
|
|
27
|
+
e2ee?: E2EEOptions;
|
|
28
|
+
encryption?: E2EEOptions;
|
|
29
|
+
rtcConfig?: RtcConfiguration;
|
|
30
|
+
}
|
|
31
|
+
export declare const defaultRoomOptions: FfiRoomOptions;
|
|
32
|
+
declare const Room_base: new () => TypedEmitter<RoomCallbacks>;
|
|
33
|
+
export declare class Room extends Room_base {
|
|
34
|
+
private info?;
|
|
35
|
+
private ffiHandle?;
|
|
36
|
+
/**
|
|
37
|
+
* used to ensure events are processed sequentially and allow for
|
|
38
|
+
* the local participant to acquire the lock while doing state updates related to FFI events
|
|
39
|
+
* before processing the next events
|
|
40
|
+
*/
|
|
41
|
+
private ffiEventLock;
|
|
42
|
+
private byteStreamControllers;
|
|
43
|
+
private textStreamControllers;
|
|
44
|
+
private byteStreamHandlers;
|
|
45
|
+
private textStreamHandlers;
|
|
46
|
+
private preConnectEvents;
|
|
47
|
+
private disconnectController;
|
|
48
|
+
private hasCleanedUp;
|
|
49
|
+
private _token?;
|
|
50
|
+
private _serverUrl?;
|
|
51
|
+
private _connectionState;
|
|
52
|
+
e2eeManager?: E2EEManager;
|
|
53
|
+
remoteParticipants: Map<string, RemoteParticipant>;
|
|
54
|
+
localParticipant?: LocalParticipant;
|
|
55
|
+
constructor();
|
|
56
|
+
get connectionState(): ConnectionState;
|
|
57
|
+
get name(): string | undefined;
|
|
58
|
+
get metadata(): string | undefined;
|
|
59
|
+
get isConnected(): boolean;
|
|
60
|
+
/** @internal */
|
|
61
|
+
get token(): string | undefined;
|
|
62
|
+
/** @internal */
|
|
63
|
+
get serverUrl(): string | undefined;
|
|
64
|
+
private sidPromise?;
|
|
65
|
+
/**
|
|
66
|
+
* Gets the room's server ID. This ID is assigned by the LiveKit server
|
|
67
|
+
* and is unique for each room session.
|
|
68
|
+
* SID is assigned asynchronously after connection.
|
|
69
|
+
* @returns Promise that resolves to the room's server ID, or empty string if not connected
|
|
70
|
+
*/
|
|
71
|
+
getSid(): Promise<string>;
|
|
72
|
+
getRtcStats(): Promise<import("@livekit/rtc-ffi-bindings").GetSessionStatsCallback_Result>;
|
|
73
|
+
get numParticipants(): number;
|
|
74
|
+
get numPublishers(): number;
|
|
75
|
+
get creationTime(): Date;
|
|
76
|
+
get isRecording(): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* The time in seconds after which a room will be closed after the last
|
|
79
|
+
* participant has disconnected.
|
|
80
|
+
*/
|
|
81
|
+
get departureTimeout(): number;
|
|
82
|
+
/**
|
|
83
|
+
* The time in seconds after which an empty room will be automatically closed.
|
|
84
|
+
*/
|
|
85
|
+
get emptyTimeout(): number;
|
|
86
|
+
/**
|
|
87
|
+
* Connects to a LiveKit room using the provided URL and access token.
|
|
88
|
+
* @param url - The WebSocket URL of the LiveKit server
|
|
89
|
+
* @param token - A valid LiveKit access token for authentication
|
|
90
|
+
* @param opts - Optional room configuration options
|
|
91
|
+
* @throws ConnectError - if connection fails
|
|
92
|
+
*/
|
|
93
|
+
connect(url: string, token: string, opts?: RoomOptions): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Disconnects from the room and cleans up all resources.
|
|
96
|
+
* This will stop all tracks and close the connection.
|
|
97
|
+
*/
|
|
98
|
+
disconnect(): Promise<void>;
|
|
99
|
+
/**
|
|
100
|
+
* Trigger a reconnection / chaos scenario for testing. Most useful in
|
|
101
|
+
* tests to deterministically force a Resume (signal-only reconnect that
|
|
102
|
+
* preserves the PeerConnection and existing publications) or a full
|
|
103
|
+
* reconnect (the SDK rebuilds the RtcSession and re-publishes existing
|
|
104
|
+
* local tracks; `RoomEvent.Reconnected` fires).
|
|
105
|
+
*/
|
|
106
|
+
simulateScenario(scenario: SimulateScenarioKind): Promise<void>;
|
|
107
|
+
private updateConnectionState;
|
|
108
|
+
private cleanupOnDisconnect;
|
|
109
|
+
/**
|
|
110
|
+
* Registers a handler for incoming text data streams on a specific topic.
|
|
111
|
+
* Text streams are used for receiving structured text data from other participants.
|
|
112
|
+
* @param topic - The topic to listen for text streams on
|
|
113
|
+
* @param callback - Function to handle incoming text stream data
|
|
114
|
+
* @throws Error - if a handler for this topic is already registered
|
|
115
|
+
*/
|
|
116
|
+
registerTextStreamHandler(topic: string, callback: TextStreamHandler): void;
|
|
117
|
+
unregisterTextStreamHandler(topic: string): void;
|
|
118
|
+
/**
|
|
119
|
+
* Registers a handler for incoming byte data streams on a specific topic.
|
|
120
|
+
* Byte streams are used for receiving binary data like files from other participants.
|
|
121
|
+
* @param topic - The topic to listen for byte streams on
|
|
122
|
+
* @param callback - Function to handle incoming byte stream data
|
|
123
|
+
* @throws Error - if a handler for this topic is already registered
|
|
124
|
+
*/
|
|
125
|
+
registerByteStreamHandler(topic: string, callback: ByteStreamHandler): void;
|
|
126
|
+
unregisterByteStreamHandler(topic: string): void;
|
|
127
|
+
private onFfiEvent;
|
|
128
|
+
private processFfiEvent;
|
|
129
|
+
private retrieveParticipantByIdentity;
|
|
130
|
+
private requireParticipantByIdentity;
|
|
131
|
+
private requireRemoteParticipant;
|
|
132
|
+
private requirePublicationOfParticipant;
|
|
133
|
+
private requirePublicationOfRemoteParticipant;
|
|
134
|
+
private createRemoteParticipant;
|
|
135
|
+
private handleStreamHeader;
|
|
136
|
+
private handleStreamChunk;
|
|
137
|
+
private handleStreamTrailer;
|
|
138
|
+
}
|
|
139
|
+
export declare class ConnectError extends Error {
|
|
140
|
+
constructor(message: string);
|
|
141
|
+
}
|
|
142
|
+
export type RoomCallbacks = {
|
|
143
|
+
participantConnected: (participant: RemoteParticipant) => void;
|
|
144
|
+
participantDisconnected: (participant: RemoteParticipant) => void;
|
|
145
|
+
localTrackPublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
|
|
146
|
+
localTrackUnpublished: (publication: LocalTrackPublication, participant: LocalParticipant) => void;
|
|
147
|
+
/**
|
|
148
|
+
* Fired when the SDK auto-republished a local track during a full
|
|
149
|
+
* reconnect. The publication object's identity is preserved (the same
|
|
150
|
+
* instance is updated in place with the new server-assigned SIDs);
|
|
151
|
+
* `previousSid` is provided for callers that key external state on the
|
|
152
|
+
* old SID and need to reconcile.
|
|
153
|
+
*/
|
|
154
|
+
localTrackRepublished: (publication: LocalTrackPublication, previousSid: string, participant: LocalParticipant) => void;
|
|
155
|
+
localTrackSubscribed: (track: LocalTrack) => void;
|
|
156
|
+
trackPublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
|
|
157
|
+
trackUnpublished: (publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
|
|
158
|
+
trackSubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
|
|
159
|
+
trackUnsubscribed: (track: RemoteTrack, publication: RemoteTrackPublication, participant: RemoteParticipant) => void;
|
|
160
|
+
trackSubscriptionFailed: (trackSid: string, participant: RemoteParticipant, reason?: string) => void;
|
|
161
|
+
trackMuted: (publication: TrackPublication, participant: Participant) => void;
|
|
162
|
+
trackUnmuted: (publication: TrackPublication, participant: Participant) => void;
|
|
163
|
+
activeSpeakersChanged: (speakers: Participant[]) => void;
|
|
164
|
+
roomMetadataChanged: (metadata: string) => void;
|
|
165
|
+
roomInfoUpdated: (info: RoomInfo) => void;
|
|
166
|
+
participantMetadataChanged: (metadata: string | undefined, participant: Participant) => void;
|
|
167
|
+
participantNameChanged: (name: string, participant: Participant) => void;
|
|
168
|
+
participantAttributesChanged: (changedAttributes: Record<string, string>, participant: Participant) => void;
|
|
169
|
+
participantEncryptionStatusChanged: (isEncrypted: boolean, participant: Participant) => void;
|
|
170
|
+
connectionQualityChanged: (quality: ConnectionQuality, participant: Participant) => void;
|
|
171
|
+
dataReceived: (payload: Uint8Array, participant?: RemoteParticipant, kind?: DataPacketKind, topic?: string, encryptionType?: EncryptionType) => void;
|
|
172
|
+
chatMessage: (message: ChatMessage, participant?: Participant) => void;
|
|
173
|
+
dtmfReceived: (code: number, digit: string, participant: RemoteParticipant) => void;
|
|
174
|
+
encryptionError: (error: Error) => void;
|
|
175
|
+
connectionStateChanged: (state: ConnectionState) => void;
|
|
176
|
+
connected: () => void;
|
|
177
|
+
disconnected: (reason: DisconnectReason) => void;
|
|
178
|
+
reconnecting: () => void;
|
|
179
|
+
reconnected: () => void;
|
|
180
|
+
roomSidChanged: (sid: string) => void;
|
|
181
|
+
roomUpdated: () => void;
|
|
182
|
+
moved: () => void;
|
|
183
|
+
tokenRefreshed: () => void;
|
|
184
|
+
};
|
|
185
|
+
export declare enum RoomEvent {
|
|
186
|
+
ParticipantConnected = "participantConnected",
|
|
187
|
+
ParticipantDisconnected = "participantDisconnected",
|
|
188
|
+
LocalTrackPublished = "localTrackPublished",
|
|
189
|
+
LocalTrackUnpublished = "localTrackUnpublished",
|
|
190
|
+
LocalTrackRepublished = "localTrackRepublished",
|
|
191
|
+
LocalTrackSubscribed = "localTrackSubscribed",
|
|
192
|
+
TrackPublished = "trackPublished",
|
|
193
|
+
TrackUnpublished = "trackUnpublished",
|
|
194
|
+
TrackSubscribed = "trackSubscribed",
|
|
195
|
+
TrackUnsubscribed = "trackUnsubscribed",
|
|
196
|
+
TrackSubscriptionFailed = "trackSubscriptionFailed",
|
|
197
|
+
TrackMuted = "trackMuted",
|
|
198
|
+
TrackUnmuted = "trackUnmuted",
|
|
199
|
+
ActiveSpeakersChanged = "activeSpeakersChanged",
|
|
200
|
+
RoomMetadataChanged = "roomMetadataChanged",
|
|
201
|
+
RoomSidChanged = "roomSidChanged",
|
|
202
|
+
ParticipantMetadataChanged = "participantMetadataChanged",
|
|
203
|
+
ParticipantNameChanged = "participantNameChanged",
|
|
204
|
+
ParticipantAttributesChanged = "participantAttributesChanged",
|
|
205
|
+
ParticipantEncryptionStatusChanged = "participantEncryptionStatusChanged",
|
|
206
|
+
ConnectionQualityChanged = "connectionQualityChanged",
|
|
207
|
+
DataReceived = "dataReceived",
|
|
208
|
+
ChatMessage = "chatMessage",
|
|
209
|
+
DtmfReceived = "dtmfReceived",
|
|
210
|
+
EncryptionError = "encryptionError",
|
|
211
|
+
ConnectionStateChanged = "connectionStateChanged",
|
|
212
|
+
Connected = "connected",
|
|
213
|
+
Disconnected = "disconnected",
|
|
214
|
+
Reconnecting = "reconnecting",
|
|
215
|
+
Reconnected = "reconnected",
|
|
216
|
+
RoomUpdated = "roomUpdated",
|
|
217
|
+
Moved = "moved",
|
|
218
|
+
TokenRefreshed = "tokenRefreshed"
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=room.d.ts.map
|
package/dist/room.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"room.d.ts","sourceRoot":"","sources":["../src/room.ts"],"names":[],"mappings":"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"}
|
package/dist/rpc.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { RpcError as
|
|
2
|
-
|
|
1
|
+
import type { RpcError as RpcError_Proto } from '@livekit/rtc-ffi-bindings';
|
|
3
2
|
/** Parameters for initiating an RPC call */
|
|
4
|
-
interface PerformRpcParams {
|
|
3
|
+
export interface PerformRpcParams {
|
|
5
4
|
/** The `identity` of the destination participant */
|
|
6
5
|
destinationIdentity: string;
|
|
7
6
|
/** The method name to call */
|
|
@@ -14,7 +13,7 @@ interface PerformRpcParams {
|
|
|
14
13
|
/**
|
|
15
14
|
* Data passed to method handler for incoming RPC invocations
|
|
16
15
|
*/
|
|
17
|
-
interface RpcInvocationData {
|
|
16
|
+
export interface RpcInvocationData {
|
|
18
17
|
/**
|
|
19
18
|
* The unique request ID. Will match at both sides of the call, useful for debugging or logging.
|
|
20
19
|
*/
|
|
@@ -40,7 +39,7 @@ interface RpcInvocationData {
|
|
|
40
39
|
*
|
|
41
40
|
* Built-in types are included but developers may use any string, with a max length of 256 bytes.
|
|
42
41
|
*/
|
|
43
|
-
declare class RpcError extends Error {
|
|
42
|
+
export declare class RpcError extends Error {
|
|
44
43
|
code: typeof RpcError.ErrorCode | number;
|
|
45
44
|
data?: string;
|
|
46
45
|
/**
|
|
@@ -51,8 +50,8 @@ declare class RpcError extends Error {
|
|
|
51
50
|
* Error codes 1001-1999 are reserved for built-in errors (see RpcError.ErrorCode for their meanings).
|
|
52
51
|
*/
|
|
53
52
|
constructor(code: number, message: string, data?: string);
|
|
54
|
-
static fromProto(proto:
|
|
55
|
-
toProto():
|
|
53
|
+
static fromProto(proto: RpcError_Proto): RpcError;
|
|
54
|
+
toProto(): RpcError_Proto;
|
|
56
55
|
static ErrorCode: {
|
|
57
56
|
readonly APPLICATION_ERROR: 1500;
|
|
58
57
|
readonly CONNECTION_TIMEOUT: 1501;
|
|
@@ -76,5 +75,4 @@ declare class RpcError extends Error {
|
|
|
76
75
|
*/
|
|
77
76
|
static builtIn(key: keyof typeof RpcError.ErrorCode, data?: string): RpcError;
|
|
78
77
|
}
|
|
79
|
-
|
|
80
|
-
export { type PerformRpcParams, RpcError, type RpcInvocationData };
|
|
78
|
+
//# sourceMappingURL=rpc.d.ts.map
|
package/dist/track.cjs
CHANGED
|
@@ -94,6 +94,22 @@ class Track {
|
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* End every {@link AudioStream} attached to this track.
|
|
99
|
+
*
|
|
100
|
+
* @remarks
|
|
101
|
+
* The FFI keeps feeding an audio stream until the stream's own handle is
|
|
102
|
+
* dropped, so streams on a track that is no longer subscribed would otherwise
|
|
103
|
+
* go on delivering audio for the lifetime of the process.
|
|
104
|
+
*
|
|
105
|
+
* @internal
|
|
106
|
+
*/
|
|
107
|
+
closeAudioStreams() {
|
|
108
|
+
for (const stream of [...this.iterateStreams()]) {
|
|
109
|
+
stream.teardown();
|
|
110
|
+
}
|
|
111
|
+
this.audioStreams.clear();
|
|
112
|
+
}
|
|
97
113
|
*iterateStreams() {
|
|
98
114
|
const dead = [];
|
|
99
115
|
for (const ref of this.audioStreams) {
|
package/dist/track.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from '@livekit/rtc-ffi-bindings';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from '@livekit/rtc-ffi-bindings';\nimport type { AudioSource } from './audio_source.js';\nimport type { AudioStreamSource } from './audio_stream.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type { Room } from './room.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n private roomRef: WeakRef<Room> | null = null;\n private audioStreams: Set<WeakRef<AudioStreamSource>> = new Set();\n private streamFinalizationRegistry: FinalizationRegistry<WeakRef<AudioStreamSource>>;\n private onRoomTokenRefreshed = () => {\n const room = this.resolveRoom();\n if (!room || !room.token || !room.serverUrl) {\n return;\n }\n for (const stream of this.iterateStreams()) {\n const processor = stream.processor;\n if (!processor) {\n continue;\n }\n processor.onCredentialsUpdated({ token: room.token, url: room.serverUrl });\n }\n };\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n this.streamFinalizationRegistry = new FinalizationRegistry<WeakRef<AudioStreamSource>>(\n (ref) => {\n this.audioStreams.delete(ref);\n },\n );\n }\n\n /** @internal */\n resolveRoom(): Room | null {\n return this.roomRef?.deref() ?? null;\n }\n\n /** @internal */\n setRoom(room: Room | null): void {\n const oldRoom = this.resolveRoom();\n if (!oldRoom && !room) {\n // Already roomless — nothing to detach and nothing to re-clear. Without\n // this guard a second setRoom(null) (e.g. the unpublishTrack /\n // localTrackUnpublished race calling it from both paths) would re-fire\n // onStreamInfoCleared / onCredentialsCleared on every registered processor.\n return;\n }\n if (oldRoom && oldRoom !== room) {\n oldRoom.off('tokenRefreshed', this.onRoomTokenRefreshed);\n }\n if (room) {\n room.off('tokenRefreshed', this.onRoomTokenRefreshed);\n room.on('tokenRefreshed', this.onRoomTokenRefreshed);\n }\n this.roomRef = room ? new WeakRef(room) : null;\n for (const stream of this.iterateStreams()) {\n this.pushProcessorMetadataToStream(stream, room);\n }\n }\n\n /** @internal */\n registerAudioStream(stream: AudioStreamSource): void {\n const ref = new WeakRef(stream);\n this.audioStreams.add(ref);\n this.streamFinalizationRegistry.register(stream, ref);\n const room = this.resolveRoom();\n if (room) {\n this.pushProcessorMetadataToStream(stream, room);\n }\n }\n\n /** @internal */\n unregisterAudioStream(stream: AudioStreamSource): void {\n for (const ref of this.audioStreams) {\n if (ref.deref() === stream) {\n this.audioStreams.delete(ref);\n return;\n }\n }\n }\n\n private *iterateStreams(): Generator<AudioStreamSource> {\n const dead: Array<WeakRef<AudioStreamSource>> = [];\n for (const ref of this.audioStreams) {\n const stream = ref.deref();\n if (stream) {\n yield stream;\n } else {\n dead.push(ref);\n }\n }\n for (const ref of dead) {\n this.audioStreams.delete(ref);\n }\n }\n\n private pushProcessorMetadataToStream(stream: AudioStreamSource, room: Room | null): void {\n const processor = stream.processor;\n if (!processor) {\n return;\n }\n\n if (!room) {\n // Guard with optional-call: plugins built against an older @livekit/rtc-node\n // inherit a FrameProcessor base class that doesn't define these methods,\n // so they could be undefined on the prototype chain.\n processor.onStreamInfoCleared?.();\n processor.onCredentialsCleared?.();\n return;\n }\n\n let identity = '';\n let publicationSid = '';\n const trackSid = this.sid;\n if (trackSid) {\n let found = false;\n for (const participant of room.remoteParticipants.values()) {\n const publication = participant.trackPublications.get(trackSid);\n if (publication) {\n identity = participant.identity;\n publicationSid = publication.sid ?? '';\n found = true;\n break;\n }\n }\n if (!found) {\n const local = room.localParticipant;\n if (local) {\n for (const publication of local.trackPublications.values()) {\n if (publication.sid === trackSid) {\n identity = local.identity;\n publicationSid = publication.sid ?? '';\n break;\n }\n }\n }\n }\n }\n\n processor.onStreamInfoUpdated({\n roomName: room.name ?? '',\n participantIdentity: identity,\n publicationSid,\n });\n if (room.token && room.serverUrl) {\n processor.onCredentialsUpdated({ token: room.token, url: room.serverUrl });\n }\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/track.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport type {\n CreateAudioTrackResponse,\n CreateVideoTrackResponse,\n OwnedTrack,\n StreamState,\n TrackInfo,\n TrackKind,\n} from '@livekit/rtc-ffi-bindings';\nimport { CreateAudioTrackRequest, CreateVideoTrackRequest } from '@livekit/rtc-ffi-bindings';\nimport type { AudioSource } from './audio_source.js';\nimport type { AudioStreamSource } from './audio_stream.js';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type { Room } from './room.js';\nimport type { VideoSource } from './video_source.js';\n\nexport abstract class Track {\n /** @internal */\n info?: TrackInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n private roomRef: WeakRef<Room> | null = null;\n private audioStreams: Set<WeakRef<AudioStreamSource>> = new Set();\n private streamFinalizationRegistry: FinalizationRegistry<WeakRef<AudioStreamSource>>;\n private onRoomTokenRefreshed = () => {\n const room = this.resolveRoom();\n if (!room || !room.token || !room.serverUrl) {\n return;\n }\n for (const stream of this.iterateStreams()) {\n const processor = stream.processor;\n if (!processor) {\n continue;\n }\n processor.onCredentialsUpdated({ token: room.token, url: room.serverUrl });\n }\n };\n\n constructor(owned: OwnedTrack) {\n this.info = owned.info;\n this.ffi_handle = new FfiHandle(owned.handle!.id!);\n this.streamFinalizationRegistry = new FinalizationRegistry<WeakRef<AudioStreamSource>>(\n (ref) => {\n this.audioStreams.delete(ref);\n },\n );\n }\n\n /** @internal */\n resolveRoom(): Room | null {\n return this.roomRef?.deref() ?? null;\n }\n\n /** @internal */\n setRoom(room: Room | null): void {\n const oldRoom = this.resolveRoom();\n if (!oldRoom && !room) {\n // Already roomless — nothing to detach and nothing to re-clear. Without\n // this guard a second setRoom(null) (e.g. the unpublishTrack /\n // localTrackUnpublished race calling it from both paths) would re-fire\n // onStreamInfoCleared / onCredentialsCleared on every registered processor.\n return;\n }\n if (oldRoom && oldRoom !== room) {\n oldRoom.off('tokenRefreshed', this.onRoomTokenRefreshed);\n }\n if (room) {\n room.off('tokenRefreshed', this.onRoomTokenRefreshed);\n room.on('tokenRefreshed', this.onRoomTokenRefreshed);\n }\n this.roomRef = room ? new WeakRef(room) : null;\n for (const stream of this.iterateStreams()) {\n this.pushProcessorMetadataToStream(stream, room);\n }\n }\n\n /** @internal */\n registerAudioStream(stream: AudioStreamSource): void {\n const ref = new WeakRef(stream);\n this.audioStreams.add(ref);\n this.streamFinalizationRegistry.register(stream, ref);\n const room = this.resolveRoom();\n if (room) {\n this.pushProcessorMetadataToStream(stream, room);\n }\n }\n\n /** @internal */\n unregisterAudioStream(stream: AudioStreamSource): void {\n for (const ref of this.audioStreams) {\n if (ref.deref() === stream) {\n this.audioStreams.delete(ref);\n return;\n }\n }\n }\n\n /**\n * End every {@link AudioStream} attached to this track.\n *\n * @remarks\n * The FFI keeps feeding an audio stream until the stream's own handle is\n * dropped, so streams on a track that is no longer subscribed would otherwise\n * go on delivering audio for the lifetime of the process.\n *\n * @internal\n */\n closeAudioStreams(): void {\n for (const stream of [...this.iterateStreams()]) {\n stream.teardown();\n }\n this.audioStreams.clear();\n }\n\n private *iterateStreams(): Generator<AudioStreamSource> {\n const dead: Array<WeakRef<AudioStreamSource>> = [];\n for (const ref of this.audioStreams) {\n const stream = ref.deref();\n if (stream) {\n yield stream;\n } else {\n dead.push(ref);\n }\n }\n for (const ref of dead) {\n this.audioStreams.delete(ref);\n }\n }\n\n private pushProcessorMetadataToStream(stream: AudioStreamSource, room: Room | null): void {\n const processor = stream.processor;\n if (!processor) {\n return;\n }\n\n if (!room) {\n // Guard with optional-call: plugins built against an older @livekit/rtc-node\n // inherit a FrameProcessor base class that doesn't define these methods,\n // so they could be undefined on the prototype chain.\n processor.onStreamInfoCleared?.();\n processor.onCredentialsCleared?.();\n return;\n }\n\n let identity = '';\n let publicationSid = '';\n const trackSid = this.sid;\n if (trackSid) {\n let found = false;\n for (const participant of room.remoteParticipants.values()) {\n const publication = participant.trackPublications.get(trackSid);\n if (publication) {\n identity = participant.identity;\n publicationSid = publication.sid ?? '';\n found = true;\n break;\n }\n }\n if (!found) {\n const local = room.localParticipant;\n if (local) {\n for (const publication of local.trackPublications.values()) {\n if (publication.sid === trackSid) {\n identity = local.identity;\n publicationSid = publication.sid ?? '';\n break;\n }\n }\n }\n }\n }\n\n processor.onStreamInfoUpdated({\n roomName: room.name ?? '',\n participantIdentity: identity,\n publicationSid,\n });\n if (room.token && room.serverUrl) {\n processor.onCredentialsUpdated({ token: room.token, url: room.serverUrl });\n }\n }\n\n get sid(): string | undefined {\n return this.info?.sid;\n }\n\n get name(): string | undefined {\n return this.info?.name;\n }\n\n get kind(): TrackKind | undefined {\n return this.info?.kind;\n }\n\n get stream_state(): StreamState | undefined {\n return this.info?.streamState;\n }\n\n get muted(): boolean | undefined {\n return this.info?.muted;\n }\n\n async close() {\n this.ffi_handle.dispose();\n }\n}\n\nexport class LocalAudioTrack extends Track {\n private source?: AudioSource;\n\n constructor(owned: OwnedTrack, source?: AudioSource) {\n super(owned);\n this.source = source;\n }\n\n static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack {\n const req = new CreateAudioTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateAudioTrackResponse>({\n message: { case: 'createAudioTrack', value: req },\n });\n\n return new LocalAudioTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class LocalVideoTrack extends Track {\n private source?: VideoSource;\n\n constructor(owned: OwnedTrack, source?: VideoSource) {\n super(owned);\n this.source = source;\n }\n\n static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack {\n const req = new CreateVideoTrackRequest({\n name: name,\n sourceHandle: source.ffiHandle.handle,\n });\n\n const res = FfiClient.instance.request<CreateVideoTrackResponse>({\n message: { case: 'createVideoTrack', value: req },\n });\n\n return new LocalVideoTrack(res.track!, source);\n }\n\n async close(closeSource = true) {\n await super.close();\n if (closeSource) {\n await this.source?.close();\n }\n }\n}\n\nexport class RemoteVideoTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport class RemoteAudioTrack extends Track {\n constructor(owned: OwnedTrack) {\n super(owned);\n }\n}\n\nexport type LocalTrack = LocalVideoTrack | LocalAudioTrack;\nexport type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;\nexport type AudioTrack = LocalAudioTrack | RemoteAudioTrack;\nexport type VideoTrack = LocalVideoTrack | RemoteVideoTrack;\n"],"mappings":"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","names":[]}
|
package/dist/track.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@livekit/rtc-ffi-bindings';
|
|
2
2
|
import './audio_source.cjs';
|
|
3
|
-
export { a as AudioTrack, L as LocalAudioTrack, c as LocalTrack, e as LocalVideoTrack, R as RemoteAudioTrack, g as RemoteTrack, i as RemoteVideoTrack, T as Track, V as VideoTrack } from './audio_stream-
|
|
3
|
+
export { a as AudioTrack, L as LocalAudioTrack, c as LocalTrack, e as LocalVideoTrack, R as RemoteAudioTrack, g as RemoteTrack, i as RemoteVideoTrack, T as Track, V as VideoTrack } from './audio_stream-CnODFAmo.cjs';
|
|
4
4
|
import './ffi_client.cjs';
|
|
5
5
|
import './video_source.cjs';
|
|
6
6
|
import './audio_frame.cjs';
|
package/dist/track.d.ts
CHANGED
|
@@ -1,18 +1,67 @@
|
|
|
1
|
-
import '@livekit/rtc-ffi-bindings';
|
|
2
|
-
import './audio_source.js';
|
|
3
|
-
|
|
4
|
-
import './ffi_client.js';
|
|
5
|
-
import './
|
|
6
|
-
import './
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import type { OwnedTrack, StreamState, TrackInfo, TrackKind } from '@livekit/rtc-ffi-bindings';
|
|
2
|
+
import type { AudioSource } from './audio_source.js';
|
|
3
|
+
import type { AudioStreamSource } from './audio_stream.js';
|
|
4
|
+
import { FfiHandle } from './ffi_client.js';
|
|
5
|
+
import type { Room } from './room.js';
|
|
6
|
+
import type { VideoSource } from './video_source.js';
|
|
7
|
+
export declare abstract class Track {
|
|
8
|
+
/** @internal */
|
|
9
|
+
info?: TrackInfo;
|
|
10
|
+
/** @internal */
|
|
11
|
+
ffi_handle: FfiHandle;
|
|
12
|
+
private roomRef;
|
|
13
|
+
private audioStreams;
|
|
14
|
+
private streamFinalizationRegistry;
|
|
15
|
+
private onRoomTokenRefreshed;
|
|
16
|
+
constructor(owned: OwnedTrack);
|
|
17
|
+
/** @internal */
|
|
18
|
+
resolveRoom(): Room | null;
|
|
19
|
+
/** @internal */
|
|
20
|
+
setRoom(room: Room | null): void;
|
|
21
|
+
/** @internal */
|
|
22
|
+
registerAudioStream(stream: AudioStreamSource): void;
|
|
23
|
+
/** @internal */
|
|
24
|
+
unregisterAudioStream(stream: AudioStreamSource): void;
|
|
25
|
+
/**
|
|
26
|
+
* End every {@link AudioStream} attached to this track.
|
|
27
|
+
*
|
|
28
|
+
* @remarks
|
|
29
|
+
* The FFI keeps feeding an audio stream until the stream's own handle is
|
|
30
|
+
* dropped, so streams on a track that is no longer subscribed would otherwise
|
|
31
|
+
* go on delivering audio for the lifetime of the process.
|
|
32
|
+
*
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
closeAudioStreams(): void;
|
|
36
|
+
private iterateStreams;
|
|
37
|
+
private pushProcessorMetadataToStream;
|
|
38
|
+
get sid(): string | undefined;
|
|
39
|
+
get name(): string | undefined;
|
|
40
|
+
get kind(): TrackKind | undefined;
|
|
41
|
+
get stream_state(): StreamState | undefined;
|
|
42
|
+
get muted(): boolean | undefined;
|
|
43
|
+
close(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export declare class LocalAudioTrack extends Track {
|
|
46
|
+
private source?;
|
|
47
|
+
constructor(owned: OwnedTrack, source?: AudioSource);
|
|
48
|
+
static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack;
|
|
49
|
+
close(closeSource?: boolean): Promise<void>;
|
|
50
|
+
}
|
|
51
|
+
export declare class LocalVideoTrack extends Track {
|
|
52
|
+
private source?;
|
|
53
|
+
constructor(owned: OwnedTrack, source?: VideoSource);
|
|
54
|
+
static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack;
|
|
55
|
+
close(closeSource?: boolean): Promise<void>;
|
|
56
|
+
}
|
|
57
|
+
export declare class RemoteVideoTrack extends Track {
|
|
58
|
+
constructor(owned: OwnedTrack);
|
|
59
|
+
}
|
|
60
|
+
export declare class RemoteAudioTrack extends Track {
|
|
61
|
+
constructor(owned: OwnedTrack);
|
|
62
|
+
}
|
|
63
|
+
export type LocalTrack = LocalVideoTrack | LocalAudioTrack;
|
|
64
|
+
export type RemoteTrack = RemoteVideoTrack | RemoteAudioTrack;
|
|
65
|
+
export type AudioTrack = LocalAudioTrack | RemoteAudioTrack;
|
|
66
|
+
export type VideoTrack = LocalVideoTrack | RemoteVideoTrack;
|
|
67
|
+
//# sourceMappingURL=track.d.ts.map
|
package/dist/track.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAa,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,KAAK;IACzB,gBAAgB;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,gBAAgB;IAChB,UAAU,EAAE,SAAS,CAAC;IAEtB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,0BAA0B,CAAmD;IACrF,OAAO,CAAC,oBAAoB,CAY1B;gBAEU,KAAK,EAAE,UAAU;IAU7B,gBAAgB;IAChB,WAAW,IAAI,IAAI,GAAG,IAAI;IAI1B,gBAAgB;IAChB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAsBhC,gBAAgB;IAChB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAUpD,gBAAgB;IAChB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAStD,OAAO,CAAE,cAAc;IAevB,OAAO,CAAC,6BAA6B;IAqDrC,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAEK,KAAK;CAGZ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"track.d.ts","sourceRoot":"","sources":["../src/track.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAGV,UAAU,EACV,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAa,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,8BAAsB,KAAK;IACzB,gBAAgB;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,gBAAgB;IAChB,UAAU,EAAE,SAAS,CAAC;IAEtB,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,0BAA0B,CAAmD;IACrF,OAAO,CAAC,oBAAoB,CAY1B;gBAEU,KAAK,EAAE,UAAU;IAU7B,gBAAgB;IAChB,WAAW,IAAI,IAAI,GAAG,IAAI;IAI1B,gBAAgB;IAChB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAsBhC,gBAAgB;IAChB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAUpD,gBAAgB;IAChB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAStD;;;;;;;;;OASG;IACH,iBAAiB,IAAI,IAAI;IAOzB,OAAO,CAAE,cAAc;IAevB,OAAO,CAAC,6BAA6B;IAqDrC,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAE5B;IAED,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAED,IAAI,IAAI,IAAI,SAAS,GAAG,SAAS,CAEhC;IAED,IAAI,YAAY,IAAI,WAAW,GAAG,SAAS,CAE1C;IAED,IAAI,KAAK,IAAI,OAAO,GAAG,SAAS,CAE/B;IAEK,KAAK;CAGZ;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,OAAO,CAAC,MAAM,CAAC,CAAc;gBAEjB,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,WAAW;IAKnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,eAAe;IAarE,KAAK,CAAC,WAAW,UAAO;CAM/B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,KAAK,EAAE,UAAU;CAG9B;AAED,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,eAAe,CAAC;AAC3D,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAC9D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,gBAAgB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import '@livekit/rtc-ffi-bindings';
|
|
2
|
-
export { d as LocalTrackPublication, h as RemoteTrackPublication, n as TrackPublication } from './audio_stream-
|
|
2
|
+
export { d as LocalTrackPublication, h as RemoteTrackPublication, n as TrackPublication } from './audio_stream-CnODFAmo.cjs';
|
|
3
3
|
import 'node:stream/web';
|
|
4
4
|
import './audio_frame.cjs';
|
|
5
5
|
import './frame_processor.cjs';
|
|
@@ -1,18 +1,45 @@
|
|
|
1
|
-
import '@livekit/rtc-ffi-bindings';
|
|
2
|
-
|
|
3
|
-
import '
|
|
4
|
-
import './
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
1
|
+
import type { EncryptionType } from '@livekit/rtc-ffi-bindings';
|
|
2
|
+
import type { OwnedTrackPublication, TrackKind, TrackPublicationInfo, TrackSource } from '@livekit/rtc-ffi-bindings';
|
|
3
|
+
import { FfiHandle } from '@livekit/rtc-ffi-bindings';
|
|
4
|
+
import type { Track } from './track.js';
|
|
5
|
+
export declare abstract class TrackPublication {
|
|
6
|
+
/** @internal */
|
|
7
|
+
ffiHandle: FfiHandle;
|
|
8
|
+
/** @internal */
|
|
9
|
+
info?: TrackPublicationInfo;
|
|
10
|
+
track?: Track;
|
|
11
|
+
constructor(ownedInfo: OwnedTrackPublication);
|
|
12
|
+
get sid(): string | undefined;
|
|
13
|
+
get name(): string | undefined;
|
|
14
|
+
get kind(): TrackKind | undefined;
|
|
15
|
+
get source(): TrackSource | undefined;
|
|
16
|
+
get simulcasted(): boolean | undefined;
|
|
17
|
+
get width(): number | undefined;
|
|
18
|
+
get height(): number | undefined;
|
|
19
|
+
get mimeType(): string | undefined;
|
|
20
|
+
get muted(): boolean | undefined;
|
|
21
|
+
get encryptionType(): EncryptionType | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Update the publication's info in place. Used by the SDK when the
|
|
24
|
+
* server re-issues IDs / metadata for an existing publication (e.g.
|
|
25
|
+
* after a full reconnect). Application code holding a cached
|
|
26
|
+
* publication reference continues to read fresh values via the
|
|
27
|
+
* unchanged object identity.
|
|
28
|
+
* @internal
|
|
29
|
+
*/
|
|
30
|
+
updateInfo(info: TrackPublicationInfo): void;
|
|
31
|
+
}
|
|
32
|
+
export declare class LocalTrackPublication extends TrackPublication {
|
|
33
|
+
private firstSubscription;
|
|
34
|
+
private firstSubscriptionResolver;
|
|
35
|
+
constructor(ownedInfo: OwnedTrackPublication);
|
|
36
|
+
waitForSubscription(): Promise<void>;
|
|
37
|
+
/** @internal */
|
|
38
|
+
resolveFirstSubscription(): void;
|
|
39
|
+
}
|
|
40
|
+
export declare class RemoteTrackPublication extends TrackPublication {
|
|
41
|
+
subscribed: boolean;
|
|
42
|
+
constructor(ownedInfo: OwnedTrackPublication);
|
|
43
|
+
setSubscribed(subscribed: boolean): void;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=track_publication.d.ts.map
|
package/dist/transcription.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface TranscriptionSegment {
|
|
1
|
+
export interface TranscriptionSegment {
|
|
2
2
|
id: string;
|
|
3
3
|
text: string;
|
|
4
4
|
startTime: bigint;
|
|
@@ -6,10 +6,9 @@ interface TranscriptionSegment {
|
|
|
6
6
|
language: string;
|
|
7
7
|
final: boolean;
|
|
8
8
|
}
|
|
9
|
-
interface Transcription {
|
|
9
|
+
export interface Transcription {
|
|
10
10
|
participantIdentity: string;
|
|
11
11
|
trackSid: string;
|
|
12
12
|
segments: TranscriptionSegment[];
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
export type { Transcription, TranscriptionSegment };
|
|
14
|
+
//# sourceMappingURL=transcription.d.ts.map
|
package/dist/types.d.ts
CHANGED
package/dist/utils.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/** convert bigints to numbers preserving undefined values */
|
|
2
|
-
declare function bigIntToNumber<T extends bigint | undefined>(value: T): T extends bigint ? number : undefined;
|
|
2
|
+
export declare function bigIntToNumber<T extends bigint | undefined>(value: T): T extends bigint ? number : undefined;
|
|
3
3
|
/** convert numbers to bigints preserving undefined values */
|
|
4
|
-
declare function numberToBigInt<T extends number | undefined>(value: T): T extends number ? bigint : undefined;
|
|
5
|
-
declare function splitUtf8(s: string, n: number): Uint8Array[];
|
|
6
|
-
|
|
7
|
-
export { bigIntToNumber, numberToBigInt, splitUtf8 };
|
|
4
|
+
export declare function numberToBigInt<T extends number | undefined>(value: T): T extends number ? bigint : undefined;
|
|
5
|
+
export declare function splitUtf8(s: string, n: number): Uint8Array[];
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
package/dist/version.cjs
CHANGED
|
@@ -21,7 +21,7 @@ __export(version_exports, {
|
|
|
21
21
|
SDK_VERSION: () => SDK_VERSION
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(version_exports);
|
|
24
|
-
const SDK_VERSION = "0.13.
|
|
24
|
+
const SDK_VERSION = "0.13.33";
|
|
25
25
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
26
|
0 && (module.exports = {
|
|
27
27
|
SDK_VERSION
|
package/dist/version.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.
|
|
1
|
+
{"version":3,"sources":["../src/version.ts"],"sourcesContent":["export const SDK_VERSION = \"0.13.33\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,cAAc;","names":[]}
|