@livekit/rtc-node 0.12.2 → 0.13.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/dist/audio_frame.cjs +2 -2
- package/dist/audio_frame.cjs.map +1 -1
- package/dist/audio_frame.d.cts +2 -3
- package/dist/audio_frame.d.ts +2 -3
- 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_resampler.cjs +10 -7
- package/dist/audio_resampler.cjs.map +1 -1
- package/dist/audio_resampler.d.cts +2 -3
- package/dist/audio_resampler.d.ts +2 -3
- package/dist/audio_resampler.d.ts.map +1 -1
- package/dist/audio_resampler.js +13 -10
- package/dist/audio_resampler.js.map +1 -1
- package/dist/audio_source.cjs +6 -4
- package/dist/audio_source.cjs.map +1 -1
- package/dist/audio_source.d.cts +3 -3
- package/dist/audio_source.d.ts +3 -3
- package/dist/audio_source.d.ts.map +1 -1
- package/dist/audio_source.js +9 -7
- package/dist/audio_source.js.map +1 -1
- package/dist/audio_stream.cjs +1 -2
- package/dist/audio_stream.cjs.map +1 -1
- package/dist/audio_stream.d.cts +2 -3
- package/dist/audio_stream.d.ts +2 -3
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/audio_stream.js +2 -3
- package/dist/audio_stream.js.map +1 -1
- package/dist/e2ee.cjs +19 -20
- package/dist/e2ee.cjs.map +1 -1
- package/dist/e2ee.d.cts +5 -6
- package/dist/e2ee.d.ts +5 -6
- package/dist/e2ee.d.ts.map +1 -1
- package/dist/e2ee.js +29 -30
- package/dist/e2ee.js.map +1 -1
- package/dist/ffi_client.cjs +6 -5
- package/dist/ffi_client.cjs.map +1 -1
- package/dist/ffi_client.d.cts +10 -10
- package/dist/ffi_client.d.ts +10 -10
- package/dist/ffi_client.d.ts.map +1 -1
- package/dist/ffi_client.js +6 -10
- package/dist/ffi_client.js.map +1 -1
- package/dist/index.cjs +16 -49
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +6 -35
- package/dist/index.d.ts +6 -35
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -46
- package/dist/index.js.map +1 -1
- package/dist/napi/native.d.cjs.map +1 -1
- package/dist/napi/native.d.ts +5 -5
- package/dist/native.d.ts +5 -5
- package/dist/participant.cjs +60 -36
- package/dist/participant.cjs.map +1 -1
- package/dist/participant.d.cts +11 -11
- package/dist/participant.d.ts +11 -11
- package/dist/participant.d.ts.map +1 -1
- package/dist/participant.js +78 -52
- package/dist/participant.js.map +1 -1
- package/dist/proto/audio_frame_pb.cjs +977 -125
- package/dist/proto/audio_frame_pb.cjs.map +1 -1
- package/dist/proto/audio_frame_pb.d.cts +502 -417
- package/dist/proto/audio_frame_pb.d.ts +502 -417
- package/dist/proto/audio_frame_pb.d.ts.map +1 -1
- package/dist/proto/audio_frame_pb.js +943 -85
- package/dist/proto/audio_frame_pb.js.map +1 -1
- package/dist/proto/e2ee_pb.cjs +700 -85
- package/dist/proto/e2ee_pb.cjs.map +1 -1
- package/dist/proto/e2ee_pb.d.cts +331 -263
- package/dist/proto/e2ee_pb.d.ts +331 -263
- package/dist/proto/e2ee_pb.d.ts.map +1 -1
- package/dist/proto/e2ee_pb.js +675 -57
- package/dist/proto/e2ee_pb.js.map +1 -1
- package/dist/proto/ffi_pb.cjs +369 -36
- package/dist/proto/ffi_pb.cjs.map +1 -1
- package/dist/proto/ffi_pb.d.cts +156 -109
- package/dist/proto/ffi_pb.d.ts +156 -109
- package/dist/proto/ffi_pb.d.ts.map +1 -1
- package/dist/proto/ffi_pb.js +364 -29
- package/dist/proto/ffi_pb.js.map +1 -1
- package/dist/proto/handle_pb.cjs +27 -7
- package/dist/proto/handle_pb.cjs.map +1 -1
- package/dist/proto/handle_pb.d.cts +13 -15
- package/dist/proto/handle_pb.d.ts +13 -15
- package/dist/proto/handle_pb.d.ts.map +1 -1
- package/dist/proto/handle_pb.js +26 -5
- package/dist/proto/handle_pb.js.map +1 -1
- package/dist/proto/participant_pb.cjs +112 -15
- package/dist/proto/participant_pb.cjs.map +1 -1
- package/dist/proto/participant_pb.d.cts +140 -52
- package/dist/proto/participant_pb.d.ts +140 -52
- package/dist/proto/participant_pb.d.ts.map +1 -1
- package/dist/proto/participant_pb.js +109 -11
- package/dist/proto/participant_pb.js.map +1 -1
- package/dist/proto/room_pb.cjs +2693 -302
- package/dist/proto/room_pb.cjs.map +1 -1
- package/dist/proto/room_pb.d.cts +1265 -862
- package/dist/proto/room_pb.d.ts +1265 -862
- package/dist/proto/room_pb.d.ts.map +1 -1
- package/dist/proto/room_pb.js +2603 -210
- package/dist/proto/room_pb.js.map +1 -1
- package/dist/proto/rpc_pb.cjs +302 -37
- package/dist/proto/rpc_pb.cjs.map +1 -1
- package/dist/proto/rpc_pb.d.cts +138 -108
- package/dist/proto/rpc_pb.d.ts +138 -108
- package/dist/proto/rpc_pb.d.ts.map +1 -1
- package/dist/proto/rpc_pb.js +291 -25
- package/dist/proto/rpc_pb.js.map +1 -1
- package/dist/proto/stats_pb.cjs +1253 -139
- package/dist/proto/stats_pb.cjs.map +1 -1
- package/dist/proto/stats_pb.d.cts +803 -692
- package/dist/proto/stats_pb.d.ts +803 -692
- package/dist/proto/stats_pb.d.ts.map +1 -1
- package/dist/proto/stats_pb.js +1216 -93
- package/dist/proto/stats_pb.js.map +1 -1
- package/dist/proto/track_pb.cjs +462 -64
- package/dist/proto/track_pb.cjs.map +1 -1
- package/dist/proto/track_pb.d.cts +250 -218
- package/dist/proto/track_pb.d.ts +250 -218
- package/dist/proto/track_pb.d.ts.map +1 -1
- package/dist/proto/track_pb.js +447 -45
- package/dist/proto/track_pb.js.map +1 -1
- package/dist/proto/track_publication_pb.cjs +130 -0
- package/dist/proto/track_publication_pb.cjs.map +1 -0
- package/dist/proto/track_publication_pb.d.cts +80 -0
- package/dist/proto/track_publication_pb.d.ts +80 -0
- package/dist/proto/track_publication_pb.d.ts.map +1 -0
- package/dist/proto/track_publication_pb.js +103 -0
- package/dist/proto/track_publication_pb.js.map +1 -0
- package/dist/proto/video_frame_pb.cjs +648 -88
- package/dist/proto/video_frame_pb.cjs.map +1 -1
- package/dist/proto/video_frame_pb.d.cts +371 -328
- package/dist/proto/video_frame_pb.d.ts +371 -328
- package/dist/proto/video_frame_pb.d.ts.map +1 -1
- package/dist/proto/video_frame_pb.js +626 -60
- package/dist/proto/video_frame_pb.js.map +1 -1
- package/dist/room.cjs +85 -125
- package/dist/room.cjs.map +1 -1
- package/dist/room.d.cts +6 -17
- package/dist/room.d.ts +6 -17
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +85 -123
- package/dist/room.js.map +1 -1
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.cts +0 -1
- package/dist/rpc.d.ts +0 -1
- package/dist/rpc.js.map +1 -1
- package/dist/track.cjs +12 -8
- package/dist/track.cjs.map +1 -1
- package/dist/track.d.cts +8 -9
- package/dist/track.d.ts +8 -9
- package/dist/track.d.ts.map +1 -1
- package/dist/track.js +13 -9
- package/dist/track.js.map +1 -1
- package/dist/track_publication.cjs +21 -12
- package/dist/track_publication.cjs.map +1 -1
- package/dist/track_publication.d.cts +12 -13
- package/dist/track_publication.d.ts +12 -13
- package/dist/track_publication.d.ts.map +1 -1
- package/dist/track_publication.js +22 -13
- package/dist/track_publication.js.map +1 -1
- 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 +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/video_frame.cjs +26 -45
- package/dist/video_frame.cjs.map +1 -1
- package/dist/video_frame.d.cts +2 -3
- package/dist/video_frame.d.ts +2 -3
- package/dist/video_frame.d.ts.map +1 -1
- package/dist/video_frame.js +29 -48
- package/dist/video_frame.js.map +1 -1
- package/dist/video_source.cjs +7 -4
- package/dist/video_source.cjs.map +1 -1
- package/dist/video_source.d.cts +4 -4
- package/dist/video_source.d.ts +4 -4
- package/dist/video_source.d.ts.map +1 -1
- package/dist/video_source.js +9 -6
- package/dist/video_source.js.map +1 -1
- package/dist/video_stream.cjs +16 -5
- package/dist/video_stream.cjs.map +1 -1
- package/dist/video_stream.d.cts +3 -4
- package/dist/video_stream.d.ts +3 -4
- package/dist/video_stream.d.ts.map +1 -1
- package/dist/video_stream.js +17 -6
- package/dist/video_stream.js.map +1 -1
- package/package.json +9 -9
- package/src/audio_frame.ts +10 -10
- package/src/audio_resampler.ts +15 -13
- package/src/audio_source.ts +11 -8
- package/src/audio_stream.ts +3 -4
- package/src/e2ee.ts +41 -42
- package/src/ffi_client.ts +8 -16
- package/src/index.ts +5 -68
- package/src/napi/native.d.ts +5 -5
- package/src/participant.ts +102 -73
- package/src/proto/audio_frame_pb.ts +1220 -496
- package/src/proto/e2ee_pb.ts +858 -337
- package/src/proto/ffi_pb.ts +442 -135
- package/src/proto/handle_pb.ts +33 -19
- package/src/proto/participant_pb.ts +225 -60
- package/src/proto/room_pb.ts +3149 -1013
- package/src/proto/rpc_pb.ts +358 -129
- package/src/proto/stats_pb.ts +1891 -877
- package/src/proto/track_pb.ts +587 -253
- package/src/proto/track_publication_pb.ts +180 -0
- package/src/proto/video_frame_pb.ts +861 -394
- package/src/room.ts +137 -189
- package/src/rpc.ts +1 -1
- package/src/track.ts +16 -17
- package/src/track_publication.ts +25 -26
- package/src/version.ts +1 -1
- package/src/video_frame.ts +48 -72
- package/src/video_source.ts +11 -8
- package/src/video_stream.ts +18 -8
package/dist/participant.cjs
CHANGED
|
@@ -23,8 +23,8 @@ __export(participant_exports, {
|
|
|
23
23
|
RemoteParticipant: () => RemoteParticipant
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(participant_exports);
|
|
26
|
-
var import_protobuf = require("@bufbuild/protobuf");
|
|
27
26
|
var import_ffi_client = require("./ffi_client.cjs");
|
|
27
|
+
var import_participant_pb = require("./proto/participant_pb.cjs");
|
|
28
28
|
var import_room_pb = require("./proto/room_pb.cjs");
|
|
29
29
|
var import_room_pb2 = require("./proto/room_pb.cjs");
|
|
30
30
|
var import_rpc_pb = require("./proto/rpc_pb.cjs");
|
|
@@ -54,6 +54,12 @@ class Participant {
|
|
|
54
54
|
get kind() {
|
|
55
55
|
return this.info.kind;
|
|
56
56
|
}
|
|
57
|
+
get disconnectReason() {
|
|
58
|
+
if (this.info.disconnectReason === import_participant_pb.DisconnectReason.UNKNOWN_REASON) {
|
|
59
|
+
return void 0;
|
|
60
|
+
}
|
|
61
|
+
return this.info.disconnectReason;
|
|
62
|
+
}
|
|
57
63
|
}
|
|
58
64
|
class LocalParticipant extends Participant {
|
|
59
65
|
constructor() {
|
|
@@ -62,7 +68,7 @@ class LocalParticipant extends Participant {
|
|
|
62
68
|
this.trackPublications = /* @__PURE__ */ new Map();
|
|
63
69
|
}
|
|
64
70
|
async publishData(data, options) {
|
|
65
|
-
const req =
|
|
71
|
+
const req = new import_room_pb2.PublishDataRequest({
|
|
66
72
|
localParticipantHandle: this.ffi_handle.handle,
|
|
67
73
|
dataPtr: import_ffi_client.FfiClient.instance.retrievePtr(data),
|
|
68
74
|
dataLen: BigInt(data.byteLength),
|
|
@@ -81,7 +87,7 @@ class LocalParticipant extends Participant {
|
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
89
|
async publishDtmf(code, digit) {
|
|
84
|
-
const req =
|
|
90
|
+
const req = new import_room_pb2.PublishSipDtmfRequest({
|
|
85
91
|
localParticipantHandle: this.ffi_handle.handle,
|
|
86
92
|
code,
|
|
87
93
|
digit
|
|
@@ -97,11 +103,11 @@ class LocalParticipant extends Participant {
|
|
|
97
103
|
}
|
|
98
104
|
}
|
|
99
105
|
async publishTranscription(transcription) {
|
|
100
|
-
const req =
|
|
106
|
+
const req = new import_room_pb2.PublishTranscriptionRequest({
|
|
101
107
|
localParticipantHandle: this.ffi_handle.handle,
|
|
102
108
|
participantIdentity: transcription.participantIdentity,
|
|
103
109
|
segments: transcription.segments.map(
|
|
104
|
-
(s) =>
|
|
110
|
+
(s) => new import_room_pb2.TranscriptionSegment({
|
|
105
111
|
id: s.id,
|
|
106
112
|
text: s.text,
|
|
107
113
|
startTime: s.startTime,
|
|
@@ -123,7 +129,7 @@ class LocalParticipant extends Participant {
|
|
|
123
129
|
}
|
|
124
130
|
}
|
|
125
131
|
async updateMetadata(metadata) {
|
|
126
|
-
const req =
|
|
132
|
+
const req = new import_room_pb2.SetLocalMetadataRequest({
|
|
127
133
|
localParticipantHandle: this.ffi_handle.handle,
|
|
128
134
|
metadata
|
|
129
135
|
});
|
|
@@ -143,7 +149,7 @@ class LocalParticipant extends Participant {
|
|
|
143
149
|
*
|
|
144
150
|
*/
|
|
145
151
|
async sendChatMessage(text, destinationIdentities, senderIdentity) {
|
|
146
|
-
const req =
|
|
152
|
+
const req = new import_room_pb2.SendChatMessageRequest({
|
|
147
153
|
localParticipantHandle: this.ffi_handle.handle,
|
|
148
154
|
message: text,
|
|
149
155
|
destinationIdentities,
|
|
@@ -155,20 +161,28 @@ class LocalParticipant extends Participant {
|
|
|
155
161
|
const cb = await import_ffi_client.FfiClient.instance.waitFor((ev) => {
|
|
156
162
|
return ev.message.case == "chatMessage" && ev.message.value.asyncId == res.asyncId;
|
|
157
163
|
});
|
|
158
|
-
|
|
159
|
-
|
|
164
|
+
switch (cb.message.case) {
|
|
165
|
+
case "chatMessage":
|
|
166
|
+
const { id, timestamp, editTimestamp, message } = cb.message.value;
|
|
167
|
+
return {
|
|
168
|
+
id,
|
|
169
|
+
timestamp: Number(timestamp),
|
|
170
|
+
editTimestamp: Number(editTimestamp),
|
|
171
|
+
message
|
|
172
|
+
};
|
|
173
|
+
case "error":
|
|
174
|
+
default:
|
|
175
|
+
throw new Error(cb.message.value);
|
|
160
176
|
}
|
|
161
|
-
const { id, timestamp, editTimestamp, message } = cb.message.value;
|
|
162
|
-
return { id, timestamp: Number(timestamp), editTimestamp: Number(editTimestamp), message };
|
|
163
177
|
}
|
|
164
178
|
/**
|
|
165
179
|
* @experimental
|
|
166
180
|
*/
|
|
167
181
|
async editChatMessage(editText, originalMessage, destinationIdentities, senderIdentity) {
|
|
168
|
-
const req =
|
|
182
|
+
const req = new import_room_pb2.EditChatMessageRequest({
|
|
169
183
|
localParticipantHandle: this.ffi_handle.handle,
|
|
170
184
|
editText,
|
|
171
|
-
originalMessage:
|
|
185
|
+
originalMessage: new import_room_pb.ChatMessage({
|
|
172
186
|
...originalMessage,
|
|
173
187
|
timestamp: BigInt(originalMessage.timestamp),
|
|
174
188
|
editTimestamp: originalMessage.editTimestamp ? BigInt(originalMessage.editTimestamp) : void 0
|
|
@@ -182,14 +196,22 @@ class LocalParticipant extends Participant {
|
|
|
182
196
|
const cb = await import_ffi_client.FfiClient.instance.waitFor((ev) => {
|
|
183
197
|
return ev.message.case == "chatMessage" && ev.message.value.asyncId == res.asyncId;
|
|
184
198
|
});
|
|
185
|
-
|
|
186
|
-
|
|
199
|
+
switch (cb.message.case) {
|
|
200
|
+
case "chatMessage":
|
|
201
|
+
const { id, timestamp, editTimestamp, message } = cb.message.value;
|
|
202
|
+
return {
|
|
203
|
+
id,
|
|
204
|
+
timestamp: Number(timestamp),
|
|
205
|
+
editTimestamp: Number(editTimestamp),
|
|
206
|
+
message
|
|
207
|
+
};
|
|
208
|
+
case "error":
|
|
209
|
+
default:
|
|
210
|
+
throw new Error(cb.message.value);
|
|
187
211
|
}
|
|
188
|
-
const { id, timestamp, editTimestamp, message } = cb.message.value;
|
|
189
|
-
return { id, timestamp: Number(timestamp), editTimestamp: Number(editTimestamp), message };
|
|
190
212
|
}
|
|
191
213
|
async updateName(name) {
|
|
192
|
-
const req =
|
|
214
|
+
const req = new import_room_pb2.SetLocalNameRequest({
|
|
193
215
|
localParticipantHandle: this.ffi_handle.handle,
|
|
194
216
|
name
|
|
195
217
|
});
|
|
@@ -201,11 +223,9 @@ class LocalParticipant extends Participant {
|
|
|
201
223
|
});
|
|
202
224
|
}
|
|
203
225
|
async setAttributes(attributes) {
|
|
204
|
-
const req =
|
|
226
|
+
const req = new import_room_pb2.SetLocalAttributesRequest({
|
|
205
227
|
localParticipantHandle: this.ffi_handle.handle,
|
|
206
|
-
attributes:
|
|
207
|
-
return { key, value };
|
|
208
|
-
})
|
|
228
|
+
attributes: Object.entries(attributes).map(([key, value]) => ({ key, value }))
|
|
209
229
|
});
|
|
210
230
|
const res = import_ffi_client.FfiClient.instance.request({
|
|
211
231
|
message: { case: "setLocalAttributes", value: req }
|
|
@@ -215,7 +235,7 @@ class LocalParticipant extends Participant {
|
|
|
215
235
|
});
|
|
216
236
|
}
|
|
217
237
|
async publishTrack(track, options) {
|
|
218
|
-
const req =
|
|
238
|
+
const req = new import_room_pb2.PublishTrackRequest({
|
|
219
239
|
localParticipantHandle: this.ffi_handle.handle,
|
|
220
240
|
trackHandle: track.ffi_handle.handle,
|
|
221
241
|
options
|
|
@@ -226,18 +246,22 @@ class LocalParticipant extends Participant {
|
|
|
226
246
|
const cb = await import_ffi_client.FfiClient.instance.waitFor((ev) => {
|
|
227
247
|
return ev.message.case == "publishTrack" && ev.message.value.asyncId == res.asyncId;
|
|
228
248
|
});
|
|
229
|
-
|
|
230
|
-
|
|
249
|
+
switch (cb.message.case) {
|
|
250
|
+
case "publication":
|
|
251
|
+
const track_publication = new import_track_publication.LocalTrackPublication(cb.message.value);
|
|
252
|
+
track_publication.track = track;
|
|
253
|
+
this.trackPublications.set(track_publication.sid, track_publication);
|
|
254
|
+
return track_publication;
|
|
255
|
+
case "error":
|
|
256
|
+
default:
|
|
257
|
+
throw new Error(cb.message.value);
|
|
231
258
|
}
|
|
232
|
-
const track_publication = new import_track_publication.LocalTrackPublication(cb.message.value);
|
|
233
|
-
track_publication.track = track;
|
|
234
|
-
this.trackPublications.set(track_publication.sid, track_publication);
|
|
235
|
-
return track_publication;
|
|
236
259
|
}
|
|
237
|
-
async unpublishTrack(trackSid) {
|
|
238
|
-
const req =
|
|
260
|
+
async unpublishTrack(trackSid, stopOnUnpublish) {
|
|
261
|
+
const req = new import_room_pb2.UnpublishTrackRequest({
|
|
239
262
|
localParticipantHandle: this.ffi_handle.handle,
|
|
240
|
-
trackSid
|
|
263
|
+
trackSid,
|
|
264
|
+
stopOnUnpublish: stopOnUnpublish ?? true
|
|
241
265
|
});
|
|
242
266
|
const res = import_ffi_client.FfiClient.instance.request({
|
|
243
267
|
message: { case: "unpublishTrack", value: req }
|
|
@@ -266,7 +290,7 @@ class LocalParticipant extends Participant {
|
|
|
266
290
|
payload,
|
|
267
291
|
responseTimeout
|
|
268
292
|
}) {
|
|
269
|
-
const req =
|
|
293
|
+
const req = new import_rpc_pb.PerformRpcRequest({
|
|
270
294
|
localParticipantHandle: this.ffi_handle.handle,
|
|
271
295
|
destinationIdentity,
|
|
272
296
|
method,
|
|
@@ -314,7 +338,7 @@ class LocalParticipant extends Participant {
|
|
|
314
338
|
*/
|
|
315
339
|
registerRpcMethod(method, handler) {
|
|
316
340
|
this.rpcHandlers.set(method, handler);
|
|
317
|
-
const req =
|
|
341
|
+
const req = new import_rpc_pb.RegisterRpcMethodRequest({
|
|
318
342
|
localParticipantHandle: this.ffi_handle.handle,
|
|
319
343
|
method
|
|
320
344
|
});
|
|
@@ -329,7 +353,7 @@ class LocalParticipant extends Participant {
|
|
|
329
353
|
*/
|
|
330
354
|
unregisterRpcMethod(method) {
|
|
331
355
|
this.rpcHandlers.delete(method);
|
|
332
|
-
const req =
|
|
356
|
+
const req = new import_rpc_pb.UnregisterRpcMethodRequest({
|
|
333
357
|
localParticipantHandle: this.ffi_handle.handle,
|
|
334
358
|
method
|
|
335
359
|
});
|
|
@@ -359,7 +383,7 @@ class LocalParticipant extends Participant {
|
|
|
359
383
|
}
|
|
360
384
|
}
|
|
361
385
|
}
|
|
362
|
-
const req =
|
|
386
|
+
const req = new import_rpc_pb.RpcMethodInvocationResponseRequest({
|
|
363
387
|
localParticipantHandle: this.ffi_handle.handle,
|
|
364
388
|
invocationId,
|
|
365
389
|
error: responseError ? responseError.toProto() : void 0,
|
package/dist/participant.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/participant.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { create } from '@bufbuild/protobuf';\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport type { OwnedParticipant, ParticipantInfo, ParticipantKind } from './proto/participant_pb.js';\nimport type {\n PublishDataCallback,\n PublishDataResponse,\n PublishSipDtmfCallback,\n PublishSipDtmfResponse,\n PublishTrackCallback,\n PublishTrackResponse,\n PublishTranscriptionCallback,\n PublishTranscriptionResponse,\n SendChatMessageCallback,\n SendChatMessageResponse,\n SetLocalAttributesCallback,\n SetLocalAttributesResponse,\n SetLocalMetadataCallback,\n SetLocalMetadataResponse,\n SetLocalNameCallback,\n SetLocalNameResponse,\n TrackPublishOptions,\n UnpublishTrackCallback,\n UnpublishTrackResponse,\n} from './proto/room_pb.js';\nimport {\n ChatMessageSchema,\n EditChatMessageRequestSchema,\n PublishDataRequestSchema,\n PublishSipDtmfRequestSchema,\n PublishTrackRequestSchema,\n PublishTranscriptionRequestSchema,\n SendChatMessageRequestSchema,\n SetLocalAttributesRequestSchema,\n SetLocalMetadataRequestSchema,\n SetLocalNameRequestSchema,\n UnpublishTrackRequestSchema,\n} from './proto/room_pb.js';\nimport { TranscriptionSegmentSchema } from './proto/room_pb.js';\nimport {\n PerformRpcRequestSchema,\n RegisterRpcMethodRequestSchema,\n RpcMethodInvocationResponseRequestSchema,\n UnregisterRpcMethodRequestSchema,\n} from './proto/rpc_pb.js';\nimport type {\n PerformRpcCallback,\n PerformRpcResponse,\n RegisterRpcMethodResponse,\n RpcMethodInvocationResponseResponse,\n UnregisterRpcMethodResponse,\n} from './proto/rpc_pb.js';\nimport { type PerformRpcParams, RpcError, type RpcInvocationData } from './rpc.js';\nimport type { LocalTrack } from './track.js';\nimport type { RemoteTrackPublication, TrackPublication } from './track_publication.js';\nimport { LocalTrackPublication } from './track_publication.js';\nimport type { Transcription } from './transcription.js';\nimport type { ChatMessage } from './types.js';\n\nexport abstract class Participant {\n /** @internal */\n info: ParticipantInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n trackPublications = new Map<string, TrackPublication>();\n\n constructor(owned_info: OwnedParticipant) {\n this.info = owned_info.info!;\n this.ffi_handle = new FfiHandle(owned_info.handle!.id);\n }\n\n get sid(): string {\n return this.info.sid;\n }\n\n get name(): string {\n return this.info.name;\n }\n\n get identity(): string {\n return this.info.identity;\n }\n\n get metadata(): string {\n return this.info.metadata;\n }\n\n get attributes(): Record<string, string> {\n return this.info.attributes;\n }\n\n get kind(): ParticipantKind {\n return this.info.kind;\n }\n}\n\nexport type DataPublishOptions = {\n /**\n * whether to send this as reliable or lossy.\n * For data that you need delivery guarantee (such as chat messages), use Reliable.\n * For data that should arrive as quickly as possible, but you are ok with dropped\n * packets, use Lossy.\n */\n reliable?: boolean;\n /**\n * the identities of participants who will receive the message, will be sent to every one if empty\n */\n destination_identities?: string[];\n /** the topic under which the message gets published */\n topic?: string;\n};\n\nexport class LocalParticipant extends Participant {\n private rpcHandlers: Map<string, (data: RpcInvocationData) => Promise<string>> = new Map();\n\n trackPublications: Map<string, LocalTrackPublication> = new Map();\n\n async publishData(data: Uint8Array, options: DataPublishOptions) {\n const req = create(PublishDataRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n dataPtr: FfiClient.instance.retrievePtr(data),\n dataLen: BigInt(data.byteLength),\n reliable: options.reliable,\n topic: options.topic,\n destinationIdentities: options.destination_identities,\n });\n\n const res = FfiClient.instance.request<PublishDataResponse>({\n message: { case: 'publishData', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishDataCallback>((ev) => {\n return ev.message.case == 'publishData' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async publishDtmf(code: number, digit: string) {\n const req = create(PublishSipDtmfRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n code,\n digit,\n });\n\n const res = FfiClient.instance.request<PublishSipDtmfResponse>({\n message: { case: 'publishSipDtmf', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishSipDtmfCallback>((ev) => {\n return ev.message.case == 'publishSipDtmf' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async publishTranscription(transcription: Transcription) {\n const req = create(PublishTranscriptionRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n participantIdentity: transcription.participantIdentity,\n segments: transcription.segments.map((s) =>\n create(TranscriptionSegmentSchema, {\n id: s.id,\n text: s.text,\n startTime: s.startTime,\n endTime: s.endTime,\n final: s.final,\n language: s.language,\n }),\n ),\n trackId: transcription.trackSid,\n });\n\n const res = FfiClient.instance.request<PublishTranscriptionResponse>({\n message: { case: 'publishTranscription', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishTranscriptionCallback>((ev) => {\n return ev.message.case == 'publishTranscription' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async updateMetadata(metadata: string) {\n const req = create(SetLocalMetadataRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n metadata: metadata,\n });\n\n const res = FfiClient.instance.request<SetLocalMetadataResponse>({\n message: { case: 'setLocalMetadata', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalMetadataCallback>((ev) => {\n return ev.message.case == 'setLocalMetadata' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n /**\n * Sends a chat message to participants in the room\n *\n * @param text - The text content of the chat message.\n * @param destinationIdentities - An optional array of recipient identities to whom the message will be sent. If omitted, the message is broadcast to all participants.\n * @param senderIdentity - An optional identity of the sender. If omitted, the default sender identity is used.\n *\n */\n async sendChatMessage(\n text: string,\n destinationIdentities?: Array<string>,\n senderIdentity?: string,\n ): Promise<ChatMessage> {\n const req = create(SendChatMessageRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n message: text,\n destinationIdentities,\n senderIdentity,\n });\n\n const res = FfiClient.instance.request<SendChatMessageResponse>({\n message: { case: 'sendChatMessage', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<SendChatMessageCallback>((ev) => {\n return ev.message.case == 'chatMessage' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.message.case !== 'chatMessage') {\n throw new Error(cb.message.value ?? 'Unknown Error');\n }\n const { id, timestamp, editTimestamp, message } = cb.message.value;\n return { id, timestamp: Number(timestamp), editTimestamp: Number(editTimestamp), message };\n }\n\n /**\n * @experimental\n */\n async editChatMessage(\n editText: string,\n originalMessage: ChatMessage,\n destinationIdentities?: Array<string>,\n senderIdentity?: string,\n ): Promise<ChatMessage> {\n const req = create(EditChatMessageRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n editText,\n originalMessage: create(ChatMessageSchema, {\n ...originalMessage,\n timestamp: BigInt(originalMessage.timestamp),\n editTimestamp: originalMessage.editTimestamp\n ? BigInt(originalMessage.editTimestamp)\n : undefined,\n }),\n destinationIdentities,\n senderIdentity,\n });\n\n const res = FfiClient.instance.request<SendChatMessageResponse>({\n message: { case: 'editChatMessage', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<SendChatMessageCallback>((ev) => {\n return ev.message.case == 'chatMessage' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.message.case !== 'chatMessage') {\n throw new Error(cb.message.value ?? 'Unknown Error');\n }\n const { id, timestamp, editTimestamp, message } = cb.message.value;\n return { id, timestamp: Number(timestamp), editTimestamp: Number(editTimestamp), message };\n }\n\n async updateName(name: string) {\n const req = create(SetLocalNameRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n name: name,\n });\n\n const res = FfiClient.instance.request<SetLocalNameResponse>({\n message: { case: 'setLocalName', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalNameCallback>((ev) => {\n return ev.message.case == 'setLocalName' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n async setAttributes(attributes: Record<string, string>) {\n const req = create(SetLocalAttributesRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n attributes: Array.from(Object.entries(attributes)).map(([key, value]) => {\n return { key, value };\n }),\n });\n\n const res = FfiClient.instance.request<SetLocalAttributesResponse>({\n message: { case: 'setLocalAttributes', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalAttributesCallback>((ev) => {\n return ev.message.case == 'setLocalAttributes' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n async publishTrack(\n track: LocalTrack,\n options: TrackPublishOptions,\n ): Promise<LocalTrackPublication> {\n const req = create(PublishTrackRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n trackHandle: track.ffi_handle.handle,\n options: options,\n });\n\n const res = FfiClient.instance.request<PublishTrackResponse>({\n message: { case: 'publishTrack', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishTrackCallback>((ev) => {\n return ev.message.case == 'publishTrack' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.message.case !== 'publication') {\n throw new Error(cb.message.value ?? 'Unknown Error');\n }\n\n const track_publication = new LocalTrackPublication(cb.message.value!);\n track_publication.track = track;\n this.trackPublications.set(track_publication.sid, track_publication);\n\n return track_publication;\n }\n\n async unpublishTrack(trackSid: string) {\n const req = create(UnpublishTrackRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n trackSid: trackSid,\n });\n\n const res = FfiClient.instance.request<UnpublishTrackResponse>({\n message: { case: 'unpublishTrack', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<UnpublishTrackCallback>((ev) => {\n return ev.message.case == 'unpublishTrack' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n\n const pub = this.trackPublications.get(trackSid);\n if (pub) {\n pub.track = undefined;\n }\n this.trackPublications.delete(trackSid);\n }\n\n /**\n * Initiate an RPC call to a remote participant.\n * @param params - Parameters for initiating the RPC call, see {@link PerformRpcParams}\n * @returns A promise that resolves with the response payload or rejects with an error.\n * @throws Error on failure. Details in `message`.\n */\n async performRpc({\n destinationIdentity,\n method,\n payload,\n responseTimeout,\n }: PerformRpcParams): Promise<string> {\n const req = create(PerformRpcRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n destinationIdentity,\n method,\n payload,\n responseTimeoutMs: responseTimeout,\n });\n\n const res = FfiClient.instance.request<PerformRpcResponse>({\n message: { case: 'performRpc', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PerformRpcCallback>((ev) => {\n return ev.message.case === 'performRpc' && ev.message.value.asyncId === res.asyncId;\n });\n\n if (cb.error) {\n throw RpcError.fromProto(cb.error);\n }\n\n return cb.payload;\n }\n\n /**\n * Establishes the participant as a receiver for calls of the specified RPC method.\n * Will overwrite any existing callback for the same method.\n *\n * @param method - The name of the indicated RPC method\n * @param handler - Will be invoked when an RPC request for this method is received\n * @returns A promise that resolves when the method is successfully registered\n *\n * @example\n * ```typescript\n * room.localParticipant?.registerRpcMethod(\n * 'greet',\n * async (data: RpcInvocationData) => {\n * console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);\n * return `Hello, ${data.callerIdentity}!`;\n * }\n * );\n * ```\n *\n * See {@link RpcInvocationData} for more details on invocation params.\n *\n * The handler should return a Promise that resolves to a string.\n * If unable to respond within `responseTimeout`, the request will result in an error on the caller's side.\n *\n * You may throw errors of type `RpcError` with a string `message` in the handler,\n * and they will be received on the caller's side with the message intact.\n * Other errors thrown in your handler will not be transmitted as-is, and will instead arrive to the caller as `1500` (\"Application Error\").\n */\n registerRpcMethod(method: string, handler: (data: RpcInvocationData) => Promise<string>) {\n this.rpcHandlers.set(method, handler);\n\n const req = create(RegisterRpcMethodRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n method,\n });\n\n FfiClient.instance.request<RegisterRpcMethodResponse>({\n message: { case: 'registerRpcMethod', value: req },\n });\n }\n\n /**\n * Unregisters a previously registered RPC method.\n *\n * @param method - The name of the RPC method to unregister\n */\n unregisterRpcMethod(method: string) {\n this.rpcHandlers.delete(method);\n\n const req = create(UnregisterRpcMethodRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n method,\n });\n\n FfiClient.instance.request<UnregisterRpcMethodResponse>({\n message: { case: 'unregisterRpcMethod', value: req },\n });\n }\n\n /** @internal */\n async handleRpcMethodInvocation(\n invocationId: bigint,\n method: string,\n requestId: string,\n callerIdentity: string,\n payload: string,\n responseTimeout: number,\n ) {\n let responseError: RpcError | null = null;\n let responsePayload: string | null = null;\n\n const handler = this.rpcHandlers.get(method);\n\n if (!handler) {\n responseError = RpcError.builtIn('UNSUPPORTED_METHOD');\n } else {\n try {\n responsePayload = await handler({ requestId, callerIdentity, payload, responseTimeout });\n } catch (error) {\n if (error instanceof RpcError) {\n responseError = error;\n } else {\n console.warn(\n `Uncaught error returned by RPC handler for ${method}. Returning APPLICATION_ERROR instead.`,\n error,\n );\n responseError = RpcError.builtIn('APPLICATION_ERROR');\n }\n }\n }\n\n const req = create(RpcMethodInvocationResponseRequestSchema, {\n localParticipantHandle: this.ffi_handle.handle,\n invocationId,\n error: responseError ? responseError.toProto() : undefined,\n payload: responsePayload ?? undefined,\n });\n\n const res = FfiClient.instance.request<RpcMethodInvocationResponseResponse>({\n message: { case: 'rpcMethodInvocationResponse', value: req },\n });\n\n if (res.error) {\n console.warn(`error sending rpc method invocation response: ${res.error}`);\n }\n }\n}\n\nexport class RemoteParticipant extends Participant {\n trackPublications: Map<string, RemoteTrackPublication> = new Map();\n\n constructor(owned_info: OwnedParticipant) {\n super(owned_info);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,sBAAuB;AACvB,wBAAqC;AAuBrC,qBAYO;AACP,IAAAA,kBAA2C;AAC3C,oBAKO;AAQP,iBAAwE;AAGxE,+BAAsC;AAI/B,MAAe,YAAY;AAAA,EAShC,YAAY,YAA8B;AAF1C,6BAAoB,oBAAI,IAA8B;AAGpD,SAAK,OAAO,WAAW;AACvB,SAAK,aAAa,IAAI,4BAAU,WAAW,OAAQ,EAAE;AAAA,EACvD;AAAA,EAEA,IAAI,MAAc;AAChB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,OAAe;AACjB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,WAAmB;AACrB,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,aAAqC;AACvC,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,OAAwB;AAC1B,WAAO,KAAK,KAAK;AAAA,EACnB;AACF;AAkBO,MAAM,yBAAyB,YAAY;AAAA,EAA3C;AAAA;AACL,SAAQ,cAAyE,oBAAI,IAAI;AAEzF,6BAAwD,oBAAI,IAAI;AAAA;AAAA,EAEhE,MAAM,YAAY,MAAkB,SAA6B;AAC/D,UAAM,UAAM,wBAAO,yCAA0B;AAAA,MAC3C,wBAAwB,KAAK,WAAW;AAAA,MACxC,SAAS,4BAAU,SAAS,YAAY,IAAI;AAAA,MAC5C,SAAS,OAAO,KAAK,UAAU;AAAA,MAC/B,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,MACf,uBAAuB,QAAQ;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA6B;AAAA,MAC1D,SAAS,EAAE,MAAM,eAAe,OAAO,IAAI;AAAA,IAC7C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA6B,CAAC,OAAO;AACvE,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,MAAc,OAAe;AAC7C,UAAM,UAAM,wBAAO,4CAA6B;AAAA,MAC9C,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAgC;AAAA,MAC7D,SAAS,EAAE,MAAM,kBAAkB,OAAO,IAAI;AAAA,IAChD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAgC,CAAC,OAAO;AAC1E,aAAO,GAAG,QAAQ,QAAQ,oBAAoB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAChF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,qBAAqB,eAA8B;AACvD,UAAM,UAAM,wBAAO,kDAAmC;AAAA,MACpD,wBAAwB,KAAK,WAAW;AAAA,MACxC,qBAAqB,cAAc;AAAA,MACnC,UAAU,cAAc,SAAS;AAAA,QAAI,CAAC,UACpC,wBAAO,4CAA4B;AAAA,UACjC,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,WAAW,EAAE;AAAA,UACb,SAAS,EAAE;AAAA,UACX,OAAO,EAAE;AAAA,UACT,UAAU,EAAE;AAAA,QACd,CAAC;AAAA,MACH;AAAA,MACA,SAAS,cAAc;AAAA,IACzB,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAsC;AAAA,MACnE,SAAS,EAAE,MAAM,wBAAwB,OAAO,IAAI;AAAA,IACtD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAsC,CAAC,OAAO;AAChF,aAAO,GAAG,QAAQ,QAAQ,0BAA0B,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IACtF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,UAAkB;AACrC,UAAM,UAAM,wBAAO,8CAA+B;AAAA,MAChD,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,UAAM,4BAAU,SAAS,QAAkC,CAAC,OAAO;AACjE,aAAO,GAAG,QAAQ,QAAQ,sBAAsB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAClF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,gBACJ,MACA,uBACA,gBACsB;AACtB,UAAM,UAAM,wBAAO,6CAA8B;AAAA,MAC/C,wBAAwB,KAAK,WAAW;AAAA,MACxC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAiC;AAAA,MAC9D,SAAS,EAAE,MAAM,mBAAmB,OAAO,IAAI;AAAA,IACjD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAiC,CAAC,OAAO;AAC3E,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,QAAI,GAAG,QAAQ,SAAS,eAAe;AACrC,YAAM,IAAI,MAAM,GAAG,QAAQ,SAAS,eAAe;AAAA,IACrD;AACA,UAAM,EAAE,IAAI,WAAW,eAAe,QAAQ,IAAI,GAAG,QAAQ;AAC7D,WAAO,EAAE,IAAI,WAAW,OAAO,SAAS,GAAG,eAAe,OAAO,aAAa,GAAG,QAAQ;AAAA,EAC3F;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBACJ,UACA,iBACA,uBACA,gBACsB;AACtB,UAAM,UAAM,wBAAO,6CAA8B;AAAA,MAC/C,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA,qBAAiB,wBAAO,kCAAmB;AAAA,QACzC,GAAG;AAAA,QACH,WAAW,OAAO,gBAAgB,SAAS;AAAA,QAC3C,eAAe,gBAAgB,gBAC3B,OAAO,gBAAgB,aAAa,IACpC;AAAA,MACN,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAiC;AAAA,MAC9D,SAAS,EAAE,MAAM,mBAAmB,OAAO,IAAI;AAAA,IACjD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAiC,CAAC,OAAO;AAC3E,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,QAAI,GAAG,QAAQ,SAAS,eAAe;AACrC,YAAM,IAAI,MAAM,GAAG,QAAQ,SAAS,eAAe;AAAA,IACrD;AACA,UAAM,EAAE,IAAI,WAAW,eAAe,QAAQ,IAAI,GAAG,QAAQ;AAC7D,WAAO,EAAE,IAAI,WAAW,OAAO,SAAS,GAAG,eAAe,OAAO,aAAa,GAAG,QAAQ;AAAA,EAC3F;AAAA,EAEA,MAAM,WAAW,MAAc;AAC7B,UAAM,UAAM,wBAAO,0CAA2B;AAAA,MAC5C,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA8B;AAAA,MAC3D,SAAS,EAAE,MAAM,gBAAgB,OAAO,IAAI;AAAA,IAC9C,CAAC;AAED,UAAM,4BAAU,SAAS,QAA8B,CAAC,OAAO;AAC7D,aAAO,GAAG,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC9E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cAAc,YAAoC;AACtD,UAAM,UAAM,wBAAO,gDAAiC;AAAA,MAClD,wBAAwB,KAAK,WAAW;AAAA,MACxC,YAAY,MAAM,KAAK,OAAO,QAAQ,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACvE,eAAO,EAAE,KAAK,MAAM;AAAA,MACtB,CAAC;AAAA,IACH,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAoC;AAAA,MACjE,SAAS,EAAE,MAAM,sBAAsB,OAAO,IAAI;AAAA,IACpD,CAAC;AAED,UAAM,4BAAU,SAAS,QAAoC,CAAC,OAAO;AACnE,aAAO,GAAG,QAAQ,QAAQ,wBAAwB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IACpF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,OACA,SACgC;AAChC,UAAM,UAAM,wBAAO,0CAA2B;AAAA,MAC5C,wBAAwB,KAAK,WAAW;AAAA,MACxC,aAAa,MAAM,WAAW;AAAA,MAC9B;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA8B;AAAA,MAC3D,SAAS,EAAE,MAAM,gBAAgB,OAAO,IAAI;AAAA,IAC9C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA8B,CAAC,OAAO;AACxE,aAAO,GAAG,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC9E,CAAC;AAED,QAAI,GAAG,QAAQ,SAAS,eAAe;AACrC,YAAM,IAAI,MAAM,GAAG,QAAQ,SAAS,eAAe;AAAA,IACrD;AAEA,UAAM,oBAAoB,IAAI,+CAAsB,GAAG,QAAQ,KAAM;AACrE,sBAAkB,QAAQ;AAC1B,SAAK,kBAAkB,IAAI,kBAAkB,KAAK,iBAAiB;AAEnE,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,eAAe,UAAkB;AACrC,UAAM,UAAM,wBAAO,4CAA6B;AAAA,MAC9C,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAgC;AAAA,MAC7D,SAAS,EAAE,MAAM,kBAAkB,OAAO,IAAI;AAAA,IAChD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAgC,CAAC,OAAO;AAC1E,aAAO,GAAG,QAAQ,QAAQ,oBAAoB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAChF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAEA,UAAM,MAAM,KAAK,kBAAkB,IAAI,QAAQ;AAC/C,QAAI,KAAK;AACP,UAAI,QAAQ;AAAA,IACd;AACA,SAAK,kBAAkB,OAAO,QAAQ;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsC;AACpC,UAAM,UAAM,wBAAO,uCAAyB;AAAA,MAC1C,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,IACrB,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA4B;AAAA,MACzD,SAAS,EAAE,MAAM,cAAc,OAAO,IAAI;AAAA,IAC5C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA4B,CAAC,OAAO;AACtE,aAAO,GAAG,QAAQ,SAAS,gBAAgB,GAAG,QAAQ,MAAM,YAAY,IAAI;AAAA,IAC9E,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,oBAAS,UAAU,GAAG,KAAK;AAAA,IACnC;AAEA,WAAO,GAAG;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BA,kBAAkB,QAAgB,SAAuD;AACvF,SAAK,YAAY,IAAI,QAAQ,OAAO;AAEpC,UAAM,UAAM,wBAAO,8CAAgC;AAAA,MACjD,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,gCAAU,SAAS,QAAmC;AAAA,MACpD,SAAS,EAAE,MAAM,qBAAqB,OAAO,IAAI;AAAA,IACnD,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAoB,QAAgB;AAClC,SAAK,YAAY,OAAO,MAAM;AAE9B,UAAM,UAAM,wBAAO,gDAAkC;AAAA,MACnD,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,gCAAU,SAAS,QAAqC;AAAA,MACtD,SAAS,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IACrD,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,0BACJ,cACA,QACA,WACA,gBACA,SACA,iBACA;AACA,QAAI,gBAAiC;AACrC,QAAI,kBAAiC;AAErC,UAAM,UAAU,KAAK,YAAY,IAAI,MAAM;AAE3C,QAAI,CAAC,SAAS;AACZ,sBAAgB,oBAAS,QAAQ,oBAAoB;AAAA,IACvD,OAAO;AACL,UAAI;AACF,0BAAkB,MAAM,QAAQ,EAAE,WAAW,gBAAgB,SAAS,gBAAgB,CAAC;AAAA,MACzF,SAAS,OAAO;AACd,YAAI,iBAAiB,qBAAU;AAC7B,0BAAgB;AAAA,QAClB,OAAO;AACL,kBAAQ;AAAA,YACN,8CAA8C,MAAM;AAAA,YACpD;AAAA,UACF;AACA,0BAAgB,oBAAS,QAAQ,mBAAmB;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,UAAM,wBAAO,wDAA0C;AAAA,MAC3D,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA,OAAO,gBAAgB,cAAc,QAAQ,IAAI;AAAA,MACjD,SAAS,mBAAmB;AAAA,IAC9B,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA6C;AAAA,MAC1E,SAAS,EAAE,MAAM,+BAA+B,OAAO,IAAI;AAAA,IAC7D,CAAC;AAED,QAAI,IAAI,OAAO;AACb,cAAQ,KAAK,iDAAiD,IAAI,KAAK,EAAE;AAAA,IAC3E;AAAA,EACF;AACF;AAEO,MAAM,0BAA0B,YAAY;AAAA,EAGjD,YAAY,YAA8B;AACxC,UAAM,UAAU;AAHlB,6BAAyD,oBAAI,IAAI;AAAA,EAIjE;AACF;","names":["import_room_pb"]}
|
|
1
|
+
{"version":3,"sources":["../src/participant.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { FfiClient, FfiHandle } from './ffi_client.js';\nimport {\n DisconnectReason,\n type OwnedParticipant,\n type ParticipantInfo,\n type ParticipantKind,\n} from './proto/participant_pb.js';\nimport type {\n PublishDataCallback,\n PublishDataResponse,\n PublishSipDtmfCallback,\n PublishSipDtmfResponse,\n PublishTrackCallback,\n PublishTrackResponse,\n PublishTranscriptionCallback,\n PublishTranscriptionResponse,\n SendChatMessageCallback,\n SendChatMessageResponse,\n SetLocalAttributesCallback,\n SetLocalAttributesResponse,\n SetLocalMetadataCallback,\n SetLocalMetadataResponse,\n SetLocalNameCallback,\n SetLocalNameResponse,\n TrackPublishOptions,\n UnpublishTrackCallback,\n UnpublishTrackResponse,\n} from './proto/room_pb.js';\nimport { ChatMessage as ChatMessageModel } from './proto/room_pb.js';\nimport {\n EditChatMessageRequest,\n TranscriptionSegment as ProtoTranscriptionSegment,\n PublishDataRequest,\n PublishSipDtmfRequest,\n PublishTrackRequest,\n PublishTranscriptionRequest,\n SendChatMessageRequest,\n SetLocalAttributesRequest,\n SetLocalMetadataRequest,\n SetLocalNameRequest,\n UnpublishTrackRequest,\n} from './proto/room_pb.js';\nimport type {\n PerformRpcCallback,\n PerformRpcResponse,\n RegisterRpcMethodResponse,\n RpcMethodInvocationResponseResponse,\n UnregisterRpcMethodResponse,\n} from './proto/rpc_pb.js';\nimport {\n PerformRpcRequest,\n RegisterRpcMethodRequest,\n RpcMethodInvocationResponseRequest,\n UnregisterRpcMethodRequest,\n} from './proto/rpc_pb.js';\nimport { type PerformRpcParams, RpcError, type RpcInvocationData } from './rpc.js';\nimport type { LocalTrack } from './track.js';\nimport type { RemoteTrackPublication, TrackPublication } from './track_publication.js';\nimport { LocalTrackPublication } from './track_publication.js';\nimport type { Transcription } from './transcription.js';\nimport type { ChatMessage } from './types.js';\n\nexport abstract class Participant {\n /** @internal */\n info: ParticipantInfo;\n\n /** @internal */\n ffi_handle: FfiHandle;\n\n trackPublications = new Map<string, TrackPublication>();\n\n constructor(owned_info: OwnedParticipant) {\n this.info = owned_info!.info!;\n this.ffi_handle = new FfiHandle(owned_info.handle!.id!);\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 identity(): string | undefined {\n return this.info.identity;\n }\n\n get metadata(): string | undefined {\n return this.info.metadata;\n }\n\n get attributes(): Record<string, string> | undefined {\n return this.info.attributes;\n }\n\n get kind(): ParticipantKind | undefined {\n return this.info.kind;\n }\n\n get disconnectReason(): DisconnectReason | undefined {\n if (this.info.disconnectReason === DisconnectReason.UNKNOWN_REASON) {\n return undefined;\n }\n return this.info.disconnectReason;\n }\n}\n\nexport type DataPublishOptions = {\n /**\n * whether to send this as reliable or lossy.\n * For data that you need delivery guarantee (such as chat messages), use Reliable.\n * For data that should arrive as quickly as possible, but you are ok with dropped\n * packets, use Lossy.\n */\n reliable?: boolean;\n /**\n * the identities of participants who will receive the message, will be sent to every one if empty\n */\n destination_identities?: string[];\n /** the topic under which the message gets published */\n topic?: string;\n};\n\nexport class LocalParticipant extends Participant {\n private rpcHandlers: Map<string, (data: RpcInvocationData) => Promise<string>> = new Map();\n\n trackPublications: Map<string, LocalTrackPublication> = new Map();\n\n async publishData(data: Uint8Array, options: DataPublishOptions) {\n const req = new PublishDataRequest({\n localParticipantHandle: this.ffi_handle.handle,\n dataPtr: FfiClient.instance.retrievePtr(data),\n dataLen: BigInt(data.byteLength),\n reliable: options.reliable,\n topic: options.topic,\n destinationIdentities: options.destination_identities,\n });\n\n const res = FfiClient.instance.request<PublishDataResponse>({\n message: { case: 'publishData', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishDataCallback>((ev) => {\n return ev.message.case == 'publishData' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async publishDtmf(code: number, digit: string) {\n const req = new PublishSipDtmfRequest({\n localParticipantHandle: this.ffi_handle.handle,\n code,\n digit,\n });\n\n const res = FfiClient.instance.request<PublishSipDtmfResponse>({\n message: { case: 'publishSipDtmf', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishSipDtmfCallback>((ev) => {\n return ev.message.case == 'publishSipDtmf' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async publishTranscription(transcription: Transcription) {\n const req = new PublishTranscriptionRequest({\n localParticipantHandle: this.ffi_handle.handle,\n participantIdentity: transcription.participantIdentity,\n segments: transcription.segments.map(\n (s) =>\n new ProtoTranscriptionSegment({\n id: s.id,\n text: s.text,\n startTime: s.startTime,\n endTime: s.endTime,\n final: s.final,\n language: s.language,\n }),\n ),\n trackId: transcription.trackSid,\n });\n\n const res = FfiClient.instance.request<PublishTranscriptionResponse>({\n message: { case: 'publishTranscription', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishTranscriptionCallback>((ev) => {\n return ev.message.case == 'publishTranscription' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n }\n\n async updateMetadata(metadata: string) {\n const req = new SetLocalMetadataRequest({\n localParticipantHandle: this.ffi_handle.handle,\n metadata: metadata,\n });\n\n const res = FfiClient.instance.request<SetLocalMetadataResponse>({\n message: { case: 'setLocalMetadata', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalMetadataCallback>((ev) => {\n return ev.message.case == 'setLocalMetadata' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n /**\n * Sends a chat message to participants in the room\n *\n * @param text - The text content of the chat message.\n * @param destinationIdentities - An optional array of recipient identities to whom the message will be sent. If omitted, the message is broadcast to all participants.\n * @param senderIdentity - An optional identity of the sender. If omitted, the default sender identity is used.\n *\n */\n async sendChatMessage(\n text: string,\n destinationIdentities?: Array<string>,\n senderIdentity?: string,\n ): Promise<ChatMessage> {\n const req = new SendChatMessageRequest({\n localParticipantHandle: this.ffi_handle.handle,\n message: text,\n destinationIdentities,\n senderIdentity,\n });\n\n const res = FfiClient.instance.request<SendChatMessageResponse>({\n message: { case: 'sendChatMessage', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<SendChatMessageCallback>((ev) => {\n return ev.message.case == 'chatMessage' && ev.message.value.asyncId == res.asyncId;\n });\n\n switch (cb.message.case) {\n case 'chatMessage':\n const { id, timestamp, editTimestamp, message } = cb.message.value!;\n return {\n id: id!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n message: message!,\n };\n case 'error':\n default:\n throw new Error(cb.message.value);\n }\n }\n\n /**\n * @experimental\n */\n async editChatMessage(\n editText: string,\n originalMessage: ChatMessage,\n destinationIdentities?: Array<string>,\n senderIdentity?: string,\n ): Promise<ChatMessage> {\n const req = new EditChatMessageRequest({\n localParticipantHandle: this.ffi_handle.handle,\n editText,\n originalMessage: new ChatMessageModel({\n ...originalMessage,\n timestamp: BigInt(originalMessage.timestamp),\n editTimestamp: originalMessage.editTimestamp\n ? BigInt(originalMessage.editTimestamp)\n : undefined,\n }),\n destinationIdentities,\n senderIdentity,\n });\n\n const res = FfiClient.instance.request<SendChatMessageResponse>({\n message: { case: 'editChatMessage', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<SendChatMessageCallback>((ev) => {\n return ev.message.case == 'chatMessage' && ev.message.value.asyncId == res.asyncId;\n });\n\n switch (cb.message.case) {\n case 'chatMessage':\n const { id, timestamp, editTimestamp, message } = cb.message.value!;\n return {\n id: id!,\n timestamp: Number(timestamp),\n editTimestamp: Number(editTimestamp),\n message: message!,\n };\n case 'error':\n default:\n throw new Error(cb.message.value);\n }\n }\n\n async updateName(name: string) {\n const req = new SetLocalNameRequest({\n localParticipantHandle: this.ffi_handle.handle,\n name: name,\n });\n\n const res = FfiClient.instance.request<SetLocalNameResponse>({\n message: { case: 'setLocalName', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalNameCallback>((ev) => {\n return ev.message.case == 'setLocalName' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n async setAttributes(attributes: Record<string, string>) {\n const req = new SetLocalAttributesRequest({\n localParticipantHandle: this.ffi_handle.handle,\n attributes: Object.entries(attributes).map(([key, value]) => ({ key, value })),\n });\n\n const res = FfiClient.instance.request<SetLocalAttributesResponse>({\n message: { case: 'setLocalAttributes', value: req },\n });\n\n await FfiClient.instance.waitFor<SetLocalAttributesCallback>((ev) => {\n return ev.message.case == 'setLocalAttributes' && ev.message.value.asyncId == res.asyncId;\n });\n }\n\n async publishTrack(\n track: LocalTrack,\n options: TrackPublishOptions,\n ): Promise<LocalTrackPublication> {\n const req = new PublishTrackRequest({\n localParticipantHandle: this.ffi_handle.handle,\n trackHandle: track.ffi_handle.handle,\n options: options,\n });\n\n const res = FfiClient.instance.request<PublishTrackResponse>({\n message: { case: 'publishTrack', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PublishTrackCallback>((ev) => {\n return ev.message.case == 'publishTrack' && ev.message.value.asyncId == res.asyncId;\n });\n\n switch (cb.message.case) {\n case 'publication':\n const track_publication = new LocalTrackPublication(cb.message.value!);\n track_publication.track = track;\n this.trackPublications.set(track_publication.sid!, track_publication);\n\n return track_publication;\n case 'error':\n default:\n throw new Error(cb.message.value);\n }\n }\n\n async unpublishTrack(trackSid: string, stopOnUnpublish?: boolean) {\n const req = new UnpublishTrackRequest({\n localParticipantHandle: this.ffi_handle.handle,\n trackSid: trackSid,\n stopOnUnpublish: stopOnUnpublish ?? true,\n });\n\n const res = FfiClient.instance.request<UnpublishTrackResponse>({\n message: { case: 'unpublishTrack', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<UnpublishTrackCallback>((ev) => {\n return ev.message.case == 'unpublishTrack' && ev.message.value.asyncId == res.asyncId;\n });\n\n if (cb.error) {\n throw new Error(cb.error);\n }\n\n const pub = this.trackPublications.get(trackSid);\n if (pub) {\n pub.track = undefined;\n }\n this.trackPublications.delete(trackSid);\n }\n\n /**\n * Initiate an RPC call to a remote participant.\n * @param params - Parameters for initiating the RPC call, see {@link PerformRpcParams}\n * @returns A promise that resolves with the response payload or rejects with an error.\n * @throws Error on failure. Details in `message`.\n */\n async performRpc({\n destinationIdentity,\n method,\n payload,\n responseTimeout,\n }: PerformRpcParams): Promise<string> {\n const req = new PerformRpcRequest({\n localParticipantHandle: this.ffi_handle.handle,\n destinationIdentity,\n method,\n payload,\n responseTimeoutMs: responseTimeout,\n });\n\n const res = FfiClient.instance.request<PerformRpcResponse>({\n message: { case: 'performRpc', value: req },\n });\n\n const cb = await FfiClient.instance.waitFor<PerformRpcCallback>((ev) => {\n return ev.message.case === 'performRpc' && ev.message.value.asyncId === res.asyncId;\n });\n\n if (cb.error) {\n throw RpcError.fromProto(cb.error);\n }\n\n return cb.payload!;\n }\n\n /**\n * Establishes the participant as a receiver for calls of the specified RPC method.\n * Will overwrite any existing callback for the same method.\n *\n * @param method - The name of the indicated RPC method\n * @param handler - Will be invoked when an RPC request for this method is received\n * @returns A promise that resolves when the method is successfully registered\n *\n * @example\n * ```typescript\n * room.localParticipant?.registerRpcMethod(\n * 'greet',\n * async (data: RpcInvocationData) => {\n * console.log(`Received greeting from ${data.callerIdentity}: ${data.payload}`);\n * return `Hello, ${data.callerIdentity}!`;\n * }\n * );\n * ```\n *\n * See {@link RpcInvocationData} for more details on invocation params.\n *\n * The handler should return a Promise that resolves to a string.\n * If unable to respond within `responseTimeout`, the request will result in an error on the caller's side.\n *\n * You may throw errors of type `RpcError` with a string `message` in the handler,\n * and they will be received on the caller's side with the message intact.\n * Other errors thrown in your handler will not be transmitted as-is, and will instead arrive to the caller as `1500` (\"Application Error\").\n */\n registerRpcMethod(method: string, handler: (data: RpcInvocationData) => Promise<string>) {\n this.rpcHandlers.set(method, handler);\n\n const req = new RegisterRpcMethodRequest({\n localParticipantHandle: this.ffi_handle.handle,\n method,\n });\n\n FfiClient.instance.request<RegisterRpcMethodResponse>({\n message: { case: 'registerRpcMethod', value: req },\n });\n }\n\n /**\n * Unregisters a previously registered RPC method.\n *\n * @param method - The name of the RPC method to unregister\n */\n unregisterRpcMethod(method: string) {\n this.rpcHandlers.delete(method);\n\n const req = new UnregisterRpcMethodRequest({\n localParticipantHandle: this.ffi_handle.handle,\n method,\n });\n\n FfiClient.instance.request<UnregisterRpcMethodResponse>({\n message: { case: 'unregisterRpcMethod', value: req },\n });\n }\n\n /** @internal */\n async handleRpcMethodInvocation(\n invocationId: bigint,\n method: string,\n requestId: string,\n callerIdentity: string,\n payload: string,\n responseTimeout: number,\n ) {\n let responseError: RpcError | null = null;\n let responsePayload: string | null = null;\n\n const handler = this.rpcHandlers.get(method);\n\n if (!handler) {\n responseError = RpcError.builtIn('UNSUPPORTED_METHOD');\n } else {\n try {\n responsePayload = await handler({ requestId, callerIdentity, payload, responseTimeout });\n } catch (error) {\n if (error instanceof RpcError) {\n responseError = error;\n } else {\n console.warn(\n `Uncaught error returned by RPC handler for ${method}. Returning APPLICATION_ERROR instead.`,\n error,\n );\n responseError = RpcError.builtIn('APPLICATION_ERROR');\n }\n }\n }\n\n const req = new RpcMethodInvocationResponseRequest({\n localParticipantHandle: this.ffi_handle.handle,\n invocationId,\n error: responseError ? responseError.toProto() : undefined,\n payload: responsePayload ?? undefined,\n });\n\n const res = FfiClient.instance.request<RpcMethodInvocationResponseResponse>({\n message: { case: 'rpcMethodInvocationResponse', value: req },\n });\n\n if (res.error) {\n console.warn(`error sending rpc method invocation response: ${res.error}`);\n }\n }\n}\n\nexport class RemoteParticipant extends Participant {\n trackPublications: Map<string, RemoteTrackPublication> = new Map();\n\n constructor(owned_info: OwnedParticipant) {\n super(owned_info);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,wBAAqC;AACrC,4BAKO;AAsBP,qBAAgD;AAChD,IAAAA,kBAYO;AAQP,oBAKO;AACP,iBAAwE;AAGxE,+BAAsC;AAI/B,MAAe,YAAY;AAAA,EAShC,YAAY,YAA8B;AAF1C,6BAAoB,oBAAI,IAA8B;AAGpD,SAAK,OAAO,WAAY;AACxB,SAAK,aAAa,IAAI,4BAAU,WAAW,OAAQ,EAAG;AAAA,EACxD;AAAA,EAEA,IAAI,MAA0B;AAC5B,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,OAA2B;AAC7B,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,WAA+B;AACjC,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,WAA+B;AACjC,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,aAAiD;AACnD,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,OAAoC;AACtC,WAAO,KAAK,KAAK;AAAA,EACnB;AAAA,EAEA,IAAI,mBAAiD;AACnD,QAAI,KAAK,KAAK,qBAAqB,uCAAiB,gBAAgB;AAClE,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK;AAAA,EACnB;AACF;AAkBO,MAAM,yBAAyB,YAAY;AAAA,EAA3C;AAAA;AACL,SAAQ,cAAyE,oBAAI,IAAI;AAEzF,6BAAwD,oBAAI,IAAI;AAAA;AAAA,EAEhE,MAAM,YAAY,MAAkB,SAA6B;AAC/D,UAAM,MAAM,IAAI,mCAAmB;AAAA,MACjC,wBAAwB,KAAK,WAAW;AAAA,MACxC,SAAS,4BAAU,SAAS,YAAY,IAAI;AAAA,MAC5C,SAAS,OAAO,KAAK,UAAU;AAAA,MAC/B,UAAU,QAAQ;AAAA,MAClB,OAAO,QAAQ;AAAA,MACf,uBAAuB,QAAQ;AAAA,IACjC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA6B;AAAA,MAC1D,SAAS,EAAE,MAAM,eAAe,OAAO,IAAI;AAAA,IAC7C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA6B,CAAC,OAAO;AACvE,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,MAAc,OAAe;AAC7C,UAAM,MAAM,IAAI,sCAAsB;AAAA,MACpC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAgC;AAAA,MAC7D,SAAS,EAAE,MAAM,kBAAkB,OAAO,IAAI;AAAA,IAChD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAgC,CAAC,OAAO;AAC1E,aAAO,GAAG,QAAQ,QAAQ,oBAAoB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAChF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,qBAAqB,eAA8B;AACvD,UAAM,MAAM,IAAI,4CAA4B;AAAA,MAC1C,wBAAwB,KAAK,WAAW;AAAA,MACxC,qBAAqB,cAAc;AAAA,MACnC,UAAU,cAAc,SAAS;AAAA,QAC/B,CAAC,MACC,IAAI,gBAAAC,qBAA0B;AAAA,UAC5B,IAAI,EAAE;AAAA,UACN,MAAM,EAAE;AAAA,UACR,WAAW,EAAE;AAAA,UACb,SAAS,EAAE;AAAA,UACX,OAAO,EAAE;AAAA,UACT,UAAU,EAAE;AAAA,QACd,CAAC;AAAA,MACL;AAAA,MACA,SAAS,cAAc;AAAA,IACzB,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAsC;AAAA,MACnE,SAAS,EAAE,MAAM,wBAAwB,OAAO,IAAI;AAAA,IACtD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAsC,CAAC,OAAO;AAChF,aAAO,GAAG,QAAQ,QAAQ,0BAA0B,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IACtF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,UAAkB;AACrC,UAAM,MAAM,IAAI,wCAAwB;AAAA,MACtC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAkC;AAAA,MAC/D,SAAS,EAAE,MAAM,oBAAoB,OAAO,IAAI;AAAA,IAClD,CAAC;AAED,UAAM,4BAAU,SAAS,QAAkC,CAAC,OAAO;AACjE,aAAO,GAAG,QAAQ,QAAQ,sBAAsB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAClF,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,gBACJ,MACA,uBACA,gBACsB;AACtB,UAAM,MAAM,IAAI,uCAAuB;AAAA,MACrC,wBAAwB,KAAK,WAAW;AAAA,MACxC,SAAS;AAAA,MACT;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAiC;AAAA,MAC9D,SAAS,EAAE,MAAM,mBAAmB,OAAO,IAAI;AAAA,IACjD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAiC,CAAC,OAAO;AAC3E,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,YAAQ,GAAG,QAAQ,MAAM;AAAA,MACvB,KAAK;AACH,cAAM,EAAE,IAAI,WAAW,eAAe,QAAQ,IAAI,GAAG,QAAQ;AAC7D,eAAO;AAAA,UACL;AAAA,UACA,WAAW,OAAO,SAAS;AAAA,UAC3B,eAAe,OAAO,aAAa;AAAA,UACnC;AAAA,QACF;AAAA,MACF,KAAK;AAAA,MACL;AACE,cAAM,IAAI,MAAM,GAAG,QAAQ,KAAK;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,gBACJ,UACA,iBACA,uBACA,gBACsB;AACtB,UAAM,MAAM,IAAI,uCAAuB;AAAA,MACrC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA,iBAAiB,IAAI,eAAAC,YAAiB;AAAA,QACpC,GAAG;AAAA,QACH,WAAW,OAAO,gBAAgB,SAAS;AAAA,QAC3C,eAAe,gBAAgB,gBAC3B,OAAO,gBAAgB,aAAa,IACpC;AAAA,MACN,CAAC;AAAA,MACD;AAAA,MACA;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAiC;AAAA,MAC9D,SAAS,EAAE,MAAM,mBAAmB,OAAO,IAAI;AAAA,IACjD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAiC,CAAC,OAAO;AAC3E,aAAO,GAAG,QAAQ,QAAQ,iBAAiB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC7E,CAAC;AAED,YAAQ,GAAG,QAAQ,MAAM;AAAA,MACvB,KAAK;AACH,cAAM,EAAE,IAAI,WAAW,eAAe,QAAQ,IAAI,GAAG,QAAQ;AAC7D,eAAO;AAAA,UACL;AAAA,UACA,WAAW,OAAO,SAAS;AAAA,UAC3B,eAAe,OAAO,aAAa;AAAA,UACnC;AAAA,QACF;AAAA,MACF,KAAK;AAAA,MACL;AACE,cAAM,IAAI,MAAM,GAAG,QAAQ,KAAK;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,MAAM,WAAW,MAAc;AAC7B,UAAM,MAAM,IAAI,oCAAoB;AAAA,MAClC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA8B;AAAA,MAC3D,SAAS,EAAE,MAAM,gBAAgB,OAAO,IAAI;AAAA,IAC9C,CAAC;AAED,UAAM,4BAAU,SAAS,QAA8B,CAAC,OAAO;AAC7D,aAAO,GAAG,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC9E,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,cAAc,YAAoC;AACtD,UAAM,MAAM,IAAI,0CAA0B;AAAA,MACxC,wBAAwB,KAAK,WAAW;AAAA,MACxC,YAAY,OAAO,QAAQ,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,KAAK,MAAM,EAAE;AAAA,IAC/E,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAoC;AAAA,MACjE,SAAS,EAAE,MAAM,sBAAsB,OAAO,IAAI;AAAA,IACpD,CAAC;AAED,UAAM,4BAAU,SAAS,QAAoC,CAAC,OAAO;AACnE,aAAO,GAAG,QAAQ,QAAQ,wBAAwB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IACpF,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,aACJ,OACA,SACgC;AAChC,UAAM,MAAM,IAAI,oCAAoB;AAAA,MAClC,wBAAwB,KAAK,WAAW;AAAA,MACxC,aAAa,MAAM,WAAW;AAAA,MAC9B;AAAA,IACF,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA8B;AAAA,MAC3D,SAAS,EAAE,MAAM,gBAAgB,OAAO,IAAI;AAAA,IAC9C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA8B,CAAC,OAAO;AACxE,aAAO,GAAG,QAAQ,QAAQ,kBAAkB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAC9E,CAAC;AAED,YAAQ,GAAG,QAAQ,MAAM;AAAA,MACvB,KAAK;AACH,cAAM,oBAAoB,IAAI,+CAAsB,GAAG,QAAQ,KAAM;AACrE,0BAAkB,QAAQ;AAC1B,aAAK,kBAAkB,IAAI,kBAAkB,KAAM,iBAAiB;AAEpE,eAAO;AAAA,MACT,KAAK;AAAA,MACL;AACE,cAAM,IAAI,MAAM,GAAG,QAAQ,KAAK;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,MAAM,eAAe,UAAkB,iBAA2B;AAChE,UAAM,MAAM,IAAI,sCAAsB;AAAA,MACpC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA,iBAAiB,mBAAmB;AAAA,IACtC,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAAgC;AAAA,MAC7D,SAAS,EAAE,MAAM,kBAAkB,OAAO,IAAI;AAAA,IAChD,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAAgC,CAAC,OAAO;AAC1E,aAAO,GAAG,QAAQ,QAAQ,oBAAoB,GAAG,QAAQ,MAAM,WAAW,IAAI;AAAA,IAChF,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,IAAI,MAAM,GAAG,KAAK;AAAA,IAC1B;AAEA,UAAM,MAAM,KAAK,kBAAkB,IAAI,QAAQ;AAC/C,QAAI,KAAK;AACP,UAAI,QAAQ;AAAA,IACd;AACA,SAAK,kBAAkB,OAAO,QAAQ;AAAA,EACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAsC;AACpC,UAAM,MAAM,IAAI,gCAAkB;AAAA,MAChC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA;AAAA,MACA;AAAA,MACA,mBAAmB;AAAA,IACrB,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA4B;AAAA,MACzD,SAAS,EAAE,MAAM,cAAc,OAAO,IAAI;AAAA,IAC5C,CAAC;AAED,UAAM,KAAK,MAAM,4BAAU,SAAS,QAA4B,CAAC,OAAO;AACtE,aAAO,GAAG,QAAQ,SAAS,gBAAgB,GAAG,QAAQ,MAAM,YAAY,IAAI;AAAA,IAC9E,CAAC;AAED,QAAI,GAAG,OAAO;AACZ,YAAM,oBAAS,UAAU,GAAG,KAAK;AAAA,IACnC;AAEA,WAAO,GAAG;AAAA,EACZ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BA,kBAAkB,QAAgB,SAAuD;AACvF,SAAK,YAAY,IAAI,QAAQ,OAAO;AAEpC,UAAM,MAAM,IAAI,uCAAyB;AAAA,MACvC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,gCAAU,SAAS,QAAmC;AAAA,MACpD,SAAS,EAAE,MAAM,qBAAqB,OAAO,IAAI;AAAA,IACnD,CAAC;AAAA,EACH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,oBAAoB,QAAgB;AAClC,SAAK,YAAY,OAAO,MAAM;AAE9B,UAAM,MAAM,IAAI,yCAA2B;AAAA,MACzC,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF,CAAC;AAED,gCAAU,SAAS,QAAqC;AAAA,MACtD,SAAS,EAAE,MAAM,uBAAuB,OAAO,IAAI;AAAA,IACrD,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,0BACJ,cACA,QACA,WACA,gBACA,SACA,iBACA;AACA,QAAI,gBAAiC;AACrC,QAAI,kBAAiC;AAErC,UAAM,UAAU,KAAK,YAAY,IAAI,MAAM;AAE3C,QAAI,CAAC,SAAS;AACZ,sBAAgB,oBAAS,QAAQ,oBAAoB;AAAA,IACvD,OAAO;AACL,UAAI;AACF,0BAAkB,MAAM,QAAQ,EAAE,WAAW,gBAAgB,SAAS,gBAAgB,CAAC;AAAA,MACzF,SAAS,OAAO;AACd,YAAI,iBAAiB,qBAAU;AAC7B,0BAAgB;AAAA,QAClB,OAAO;AACL,kBAAQ;AAAA,YACN,8CAA8C,MAAM;AAAA,YACpD;AAAA,UACF;AACA,0BAAgB,oBAAS,QAAQ,mBAAmB;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,MAAM,IAAI,iDAAmC;AAAA,MACjD,wBAAwB,KAAK,WAAW;AAAA,MACxC;AAAA,MACA,OAAO,gBAAgB,cAAc,QAAQ,IAAI;AAAA,MACjD,SAAS,mBAAmB;AAAA,IAC9B,CAAC;AAED,UAAM,MAAM,4BAAU,SAAS,QAA6C;AAAA,MAC1E,SAAS,EAAE,MAAM,+BAA+B,OAAO,IAAI;AAAA,IAC7D,CAAC;AAED,QAAI,IAAI,OAAO;AACb,cAAQ,KAAK,iDAAiD,IAAI,KAAK,EAAE;AAAA,IAC3E;AAAA,EACF;AACF;AAEO,MAAM,0BAA0B,YAAY;AAAA,EAGjD,YAAY,YAA8B;AACxC,UAAM,UAAU;AAHlB,6BAAyD,oBAAI,IAAI;AAAA,EAIjE;AACF;","names":["import_room_pb","ProtoTranscriptionSegment","ChatMessageModel"]}
|
package/dist/participant.d.cts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { FfiHandle } from './napi/native.d.cjs';
|
|
2
2
|
import { TrackPublishOptions } from './proto/room_pb.cjs';
|
|
3
|
-
import { ParticipantInfo, OwnedParticipant, ParticipantKind } from './proto/participant_pb.cjs';
|
|
3
|
+
import { ParticipantInfo, OwnedParticipant, ParticipantKind, DisconnectReason } from './proto/participant_pb.cjs';
|
|
4
4
|
import { PerformRpcParams, RpcInvocationData } from './rpc.cjs';
|
|
5
5
|
import { LocalTrack } from './track.cjs';
|
|
6
6
|
import { TrackPublication, LocalTrackPublication, RemoteTrackPublication } from './track_publication.cjs';
|
|
7
7
|
import { Transcription } from './transcription.cjs';
|
|
8
8
|
import { ChatMessage } from './types.cjs';
|
|
9
|
-
import '@bufbuild/protobuf/codegenv1';
|
|
10
|
-
import './proto/e2ee_pb.cjs';
|
|
11
9
|
import '@bufbuild/protobuf';
|
|
12
|
-
import './proto/handle_pb.cjs';
|
|
13
10
|
import './proto/track_pb.cjs';
|
|
14
11
|
import './proto/stats_pb.cjs';
|
|
12
|
+
import './proto/e2ee_pb.cjs';
|
|
13
|
+
import './proto/handle_pb.cjs';
|
|
15
14
|
import './proto/video_frame_pb.cjs';
|
|
16
15
|
import './proto/rpc_pb.cjs';
|
|
17
16
|
import './audio_source.cjs';
|
|
@@ -27,12 +26,13 @@ declare abstract class Participant {
|
|
|
27
26
|
ffi_handle: FfiHandle;
|
|
28
27
|
trackPublications: Map<string, TrackPublication>;
|
|
29
28
|
constructor(owned_info: OwnedParticipant);
|
|
30
|
-
get sid(): string;
|
|
31
|
-
get name(): string;
|
|
32
|
-
get identity(): string;
|
|
33
|
-
get metadata(): string;
|
|
34
|
-
get attributes(): Record<string, string
|
|
35
|
-
get kind(): ParticipantKind;
|
|
29
|
+
get sid(): string | undefined;
|
|
30
|
+
get name(): string | undefined;
|
|
31
|
+
get identity(): string | undefined;
|
|
32
|
+
get metadata(): string | undefined;
|
|
33
|
+
get attributes(): Record<string, string> | undefined;
|
|
34
|
+
get kind(): ParticipantKind | undefined;
|
|
35
|
+
get disconnectReason(): DisconnectReason | undefined;
|
|
36
36
|
}
|
|
37
37
|
type DataPublishOptions = {
|
|
38
38
|
/**
|
|
@@ -72,7 +72,7 @@ declare class LocalParticipant extends Participant {
|
|
|
72
72
|
updateName(name: string): Promise<void>;
|
|
73
73
|
setAttributes(attributes: Record<string, string>): Promise<void>;
|
|
74
74
|
publishTrack(track: LocalTrack, options: TrackPublishOptions): Promise<LocalTrackPublication>;
|
|
75
|
-
unpublishTrack(trackSid: string): Promise<void>;
|
|
75
|
+
unpublishTrack(trackSid: string, stopOnUnpublish?: boolean): Promise<void>;
|
|
76
76
|
/**
|
|
77
77
|
* Initiate an RPC call to a remote participant.
|
|
78
78
|
* @param params - Parameters for initiating the RPC call, see {@link PerformRpcParams}
|
package/dist/participant.d.ts
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { FfiHandle } from './napi/native.d.js';
|
|
2
2
|
import { TrackPublishOptions } from './proto/room_pb.js';
|
|
3
|
-
import { ParticipantInfo, OwnedParticipant, ParticipantKind } from './proto/participant_pb.js';
|
|
3
|
+
import { ParticipantInfo, OwnedParticipant, ParticipantKind, DisconnectReason } from './proto/participant_pb.js';
|
|
4
4
|
import { PerformRpcParams, RpcInvocationData } from './rpc.js';
|
|
5
5
|
import { LocalTrack } from './track.js';
|
|
6
6
|
import { TrackPublication, LocalTrackPublication, RemoteTrackPublication } from './track_publication.js';
|
|
7
7
|
import { Transcription } from './transcription.js';
|
|
8
8
|
import { ChatMessage } from './types.js';
|
|
9
|
-
import '@bufbuild/protobuf/codegenv1';
|
|
10
|
-
import './proto/e2ee_pb.js';
|
|
11
9
|
import '@bufbuild/protobuf';
|
|
12
|
-
import './proto/handle_pb.js';
|
|
13
10
|
import './proto/track_pb.js';
|
|
14
11
|
import './proto/stats_pb.js';
|
|
12
|
+
import './proto/e2ee_pb.js';
|
|
13
|
+
import './proto/handle_pb.js';
|
|
15
14
|
import './proto/video_frame_pb.js';
|
|
16
15
|
import './proto/rpc_pb.js';
|
|
17
16
|
import './audio_source.js';
|
|
@@ -27,12 +26,13 @@ declare abstract class Participant {
|
|
|
27
26
|
ffi_handle: FfiHandle;
|
|
28
27
|
trackPublications: Map<string, TrackPublication>;
|
|
29
28
|
constructor(owned_info: OwnedParticipant);
|
|
30
|
-
get sid(): string;
|
|
31
|
-
get name(): string;
|
|
32
|
-
get identity(): string;
|
|
33
|
-
get metadata(): string;
|
|
34
|
-
get attributes(): Record<string, string
|
|
35
|
-
get kind(): ParticipantKind;
|
|
29
|
+
get sid(): string | undefined;
|
|
30
|
+
get name(): string | undefined;
|
|
31
|
+
get identity(): string | undefined;
|
|
32
|
+
get metadata(): string | undefined;
|
|
33
|
+
get attributes(): Record<string, string> | undefined;
|
|
34
|
+
get kind(): ParticipantKind | undefined;
|
|
35
|
+
get disconnectReason(): DisconnectReason | undefined;
|
|
36
36
|
}
|
|
37
37
|
type DataPublishOptions = {
|
|
38
38
|
/**
|
|
@@ -72,7 +72,7 @@ declare class LocalParticipant extends Participant {
|
|
|
72
72
|
updateName(name: string): Promise<void>;
|
|
73
73
|
setAttributes(attributes: Record<string, string>): Promise<void>;
|
|
74
74
|
publishTrack(track: LocalTrack, options: TrackPublishOptions): Promise<LocalTrackPublication>;
|
|
75
|
-
unpublishTrack(trackSid: string): Promise<void>;
|
|
75
|
+
unpublishTrack(trackSid: string, stopOnUnpublish?: boolean): Promise<void>;
|
|
76
76
|
/**
|
|
77
77
|
* Initiate an RPC call to a remote participant.
|
|
78
78
|
* @param params - Parameters for initiating the RPC call, see {@link PerformRpcParams}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"participant.d.ts","sourceRoot":"","sources":["../src/participant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"participant.d.ts","sourceRoot":"","sources":["../src/participant.ts"],"names":[],"mappings":"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"}
|