@voltkit-rtc/client 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,478 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CameraRecording = exports.RecordingUploader = exports.RecordingError = void 0;
4
+ exports.recordingRequest = recordingRequest;
5
+ class RecordingError extends Error {
6
+ status;
7
+ constructor(message, status = 0) {
8
+ super(message);
9
+ this.status = status;
10
+ this.name = "RecordingError";
11
+ }
12
+ }
13
+ exports.RecordingError = RecordingError;
14
+ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
15
+ async function recordingRequest(base, path, body, token) {
16
+ const response = await fetch(`${base.replace(/\/$/, "")}/recording/upload${path}`, {
17
+ method: "POST",
18
+ credentials: "omit",
19
+ headers: {
20
+ "Content-Type": "application/json",
21
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
22
+ },
23
+ body: JSON.stringify(body),
24
+ signal: AbortSignal.timeout(path.endsWith("/complete") ? 180000 : 15000),
25
+ });
26
+ const result = (await response.json());
27
+ if (!response.ok || !result.success || !result.data)
28
+ throw new RecordingError(result.error?.message ?? "Recording request failed", response.status);
29
+ return result.data;
30
+ }
31
+ /** Bounded uploader, also usable with an externally encoded native/file source. */
32
+ class RecordingUploader {
33
+ session;
34
+ options;
35
+ queue = [];
36
+ pendingBytes = 0;
37
+ bytes = 0;
38
+ uploaded = 0;
39
+ number = 0;
40
+ active = new Set();
41
+ reserve = Promise.resolve();
42
+ failure = null;
43
+ finishing = false;
44
+ sealed = false;
45
+ canceled = false;
46
+ aborter = new AbortController();
47
+ constructor(session, options) {
48
+ this.session = session;
49
+ this.options = options;
50
+ }
51
+ static async create(options, roomToken, mimeType) {
52
+ const url = new URL(options.apiUrl);
53
+ if (url.protocol !== "https:" &&
54
+ !["localhost", "127.0.0.1", "[::1]"].includes(url.hostname))
55
+ throw new RecordingError("Recording API must use HTTPS");
56
+ const requestId = crypto.randomUUID();
57
+ let session;
58
+ for (let attempt = 0; attempt < 3; attempt++) {
59
+ try {
60
+ session = await recordingRequest(options.apiUrl, "/sessions", {
61
+ roomToken,
62
+ requestId,
63
+ mimeType,
64
+ ...(options.chunkMiB ? { chunkMiB: options.chunkMiB } : {}),
65
+ });
66
+ break;
67
+ }
68
+ catch (error) {
69
+ if (attempt === 2 ||
70
+ (error instanceof RecordingError &&
71
+ ![409, 429, 503].includes(error.status)))
72
+ throw error;
73
+ await delay(500 * (attempt + 1));
74
+ }
75
+ }
76
+ if (!session ||
77
+ ![5 * 1048576, 10 * 1048576].includes(session.chunkBytes) ||
78
+ session.maxBufferBytes < session.chunkBytes * 2 ||
79
+ session.maxBufferBytes > 100 * 1048576 ||
80
+ session.uploadConcurrency < 1 ||
81
+ session.uploadConcurrency > 4)
82
+ throw new RecordingError("Invalid recording upload policy");
83
+ return new RecordingUploader(session, options);
84
+ }
85
+ get bufferedBytes() {
86
+ return this.bytes;
87
+ }
88
+ get uploadedBytes() {
89
+ return this.uploaded;
90
+ }
91
+ get hasCapacity() {
92
+ return (!this.failure &&
93
+ !this.canceled &&
94
+ this.bytes < this.session.maxBufferBytes - this.session.chunkBytes);
95
+ }
96
+ emit(state, error) {
97
+ try {
98
+ this.options.onState?.({
99
+ state,
100
+ bufferedBytes: this.bytes,
101
+ uploadedBytes: this.uploaded,
102
+ recordingId: this.session.recording.id,
103
+ ...(error ? { error } : {}),
104
+ });
105
+ }
106
+ catch {
107
+ /* UI callbacks never break accounting/cleanup. */
108
+ }
109
+ }
110
+ append(blob) {
111
+ if (this.finishing || this.canceled)
112
+ throw new RecordingError("Recording upload has ended");
113
+ if (this.failure)
114
+ throw this.failure;
115
+ if (!blob.size)
116
+ return;
117
+ if (blob.size > this.session.maxBufferBytes - this.bytes)
118
+ throw new RecordingError("Recording buffer limit reached; stop recording without stopping the live stream");
119
+ this.queue.push(blob);
120
+ this.pendingBytes += blob.size;
121
+ this.bytes += blob.size;
122
+ this.pump();
123
+ this.emit(this.hasCapacity ? "recording" : "backpressure");
124
+ }
125
+ take(size) {
126
+ const blobs = [];
127
+ let remaining = size;
128
+ while (remaining > 0) {
129
+ const blob = this.queue.shift();
130
+ const length = Math.min(remaining, blob.size);
131
+ blobs.push(blob.slice(0, length));
132
+ if (length < blob.size)
133
+ this.queue.unshift(blob.slice(length));
134
+ remaining -= length;
135
+ }
136
+ this.pendingBytes -= size;
137
+ return new Blob(blobs);
138
+ }
139
+ pump() {
140
+ while (!this.failure &&
141
+ !this.canceled &&
142
+ this.active.size < this.session.uploadConcurrency &&
143
+ this.pendingBytes >= this.session.chunkBytes)
144
+ this.upload(this.take(this.session.chunkBytes), false);
145
+ }
146
+ upload(blob, final) {
147
+ const number = ++this.number;
148
+ // Reserve in sequence, while PUT bodies upload concurrently.
149
+ const signed = this.reserve.then(() => recordingRequest(this.options.apiUrl, `/sessions/${this.session.recording.id}/parts`, { number, bytes: blob.size, final }, this.session.token));
150
+ this.reserve = signed;
151
+ let task;
152
+ task = (async () => {
153
+ let url = (await signed).url;
154
+ for (let attempt = 0; attempt < 4; attempt++) {
155
+ if (this.canceled)
156
+ throw new RecordingError("Recording canceled");
157
+ try {
158
+ const response = await fetch(url, {
159
+ method: "PUT",
160
+ body: blob,
161
+ credentials: "omit",
162
+ signal: AbortSignal.any([
163
+ this.aborter.signal,
164
+ AbortSignal.timeout(45000),
165
+ ]),
166
+ });
167
+ if (!response.ok)
168
+ throw new RecordingError("R2 upload failed", response.status);
169
+ this.bytes -= blob.size;
170
+ this.uploaded += blob.size;
171
+ return;
172
+ }
173
+ catch (error) {
174
+ if (this.canceled || attempt === 3)
175
+ throw error;
176
+ await delay(500 * 2 ** attempt);
177
+ url = (await recordingRequest(this.options.apiUrl, `/sessions/${this.session.recording.id}/parts`, { number, bytes: blob.size, final }, this.session.token)).url;
178
+ }
179
+ }
180
+ })()
181
+ .catch((error) => {
182
+ this.failure =
183
+ error instanceof Error
184
+ ? error
185
+ : new RecordingError("Recording upload failed");
186
+ this.emit("error", this.failure);
187
+ })
188
+ .finally(() => {
189
+ this.active.delete(task);
190
+ this.pump();
191
+ this.emit(this.failure
192
+ ? "error"
193
+ : this.hasCapacity
194
+ ? "recording"
195
+ : "backpressure");
196
+ });
197
+ this.active.add(task);
198
+ }
199
+ async waitForCapacity() {
200
+ while (!this.hasCapacity) {
201
+ if (this.failure)
202
+ throw this.failure;
203
+ if (this.canceled)
204
+ throw new RecordingError("Recording canceled");
205
+ await Promise.race(this.active);
206
+ }
207
+ }
208
+ async seal() {
209
+ if (this.sealed)
210
+ return;
211
+ this.finishing = true;
212
+ this.emit("uploading");
213
+ while (this.active.size) {
214
+ await Promise.all(this.active);
215
+ if (this.failure)
216
+ throw this.failure;
217
+ }
218
+ if (this.pendingBytes) {
219
+ this.upload(this.take(this.pendingBytes), true);
220
+ await Promise.all(this.active);
221
+ }
222
+ if (this.failure)
223
+ throw this.failure;
224
+ if (!this.number) {
225
+ await this.abort();
226
+ throw new RecordingError("No video was recorded");
227
+ }
228
+ this.sealed = true;
229
+ }
230
+ async complete() {
231
+ await this.seal();
232
+ const file = await recordingRequest(this.options.apiUrl, `/sessions/${this.session.recording.id}/complete`, {}, this.session.token);
233
+ this.emit("ready");
234
+ return file;
235
+ }
236
+ async abort() {
237
+ this.canceled = true;
238
+ this.aborter.abort();
239
+ await Promise.all(this.active);
240
+ this.queue = [];
241
+ this.bytes = 0;
242
+ this.pendingBytes = 0;
243
+ await recordingRequest(this.options.apiUrl, `/sessions/${this.session.recording.id}/abort`, {}, this.session.token);
244
+ this.emit("stopped");
245
+ }
246
+ }
247
+ exports.RecordingUploader = RecordingUploader;
248
+ /** Encodes a downscaled COPY of local camera/mic. Never changes RTC tracks. */
249
+ class CameraRecording {
250
+ getStream;
251
+ getRoomToken;
252
+ options;
253
+ stopped = false;
254
+ stopSegment = null;
255
+ done = null;
256
+ files = new Map();
257
+ finalizers = new Set();
258
+ finalFailure = null;
259
+ segmentNumber = 0;
260
+ constructor(getStream, getRoomToken, options) {
261
+ this.getStream = getStream;
262
+ this.getRoomToken = getRoomToken;
263
+ this.options = options;
264
+ }
265
+ start() {
266
+ const stream = this.getStream();
267
+ if (!stream
268
+ ?.getVideoTracks()
269
+ .some((track) => track.readyState === "live" && track.enabled))
270
+ throw new RecordingError("Publish an enabled camera before recording");
271
+ if (this.done)
272
+ throw new RecordingError("Recording is already started");
273
+ let ready, reject;
274
+ const started = new Promise((yes, no) => {
275
+ ready = yes;
276
+ reject = no;
277
+ });
278
+ this.done = this.run(ready)
279
+ .then((files) => {
280
+ ready();
281
+ return files;
282
+ })
283
+ .catch((error) => {
284
+ reject(error);
285
+ this.stopped = true;
286
+ try {
287
+ this.options.onState?.({
288
+ state: "error",
289
+ bufferedBytes: 0,
290
+ uploadedBytes: 0,
291
+ error: error instanceof Error
292
+ ? error
293
+ : new RecordingError("Recording failed"),
294
+ });
295
+ }
296
+ catch { }
297
+ throw error;
298
+ });
299
+ void this.done.catch(() => undefined);
300
+ return started;
301
+ }
302
+ async stop() {
303
+ this.stopped = true;
304
+ this.stopSegment?.();
305
+ return this.done ?? [];
306
+ }
307
+ async run(ready) {
308
+ while (!this.stopped) {
309
+ const stream = this.getStream(), camera = stream?.getVideoTracks()[0];
310
+ if (!stream || !camera || camera.readyState !== "live" || !camera.enabled)
311
+ break;
312
+ const mimeType = ["video/webm;codecs=vp8,opus", "video/mp4"].find((type) => MediaRecorder.isTypeSupported(type));
313
+ if (!mimeType)
314
+ throw new RecordingError("This browser cannot encode supported recording video");
315
+ const uploader = await RecordingUploader.create(this.options, this.getRoomToken(), mimeType);
316
+ let video = null, encoded = null, timer, segmentTimer;
317
+ try {
318
+ if (this.stopped) {
319
+ await uploader.abort();
320
+ break;
321
+ }
322
+ const policy = uploader.session.recording;
323
+ video = document.createElement("video");
324
+ video.srcObject = stream;
325
+ video.muted = true;
326
+ video.playsInline = true;
327
+ await video.play();
328
+ if (this.stopped) {
329
+ await uploader.abort();
330
+ break;
331
+ }
332
+ const portrait = (video.videoHeight || camera.getSettings().height || policy.height) >
333
+ (video.videoWidth || camera.getSettings().width || policy.width);
334
+ const canvas = document.createElement("canvas");
335
+ canvas.width = portrait ? policy.height : policy.width;
336
+ canvas.height = portrait ? policy.width : policy.height;
337
+ const context = canvas.getContext("2d");
338
+ if (!context)
339
+ throw new RecordingError("Recording canvas unavailable");
340
+ encoded = canvas.captureStream(policy.frameRate);
341
+ for (const track of stream.getAudioTracks())
342
+ encoded.addTrack(track.clone());
343
+ const recorder = new MediaRecorder(encoded, {
344
+ mimeType,
345
+ videoBitsPerSecond: policy.videoBitrate,
346
+ audioBitsPerSecond: policy.audioBitrate,
347
+ });
348
+ let failure = null;
349
+ const finished = new Promise((resolve, reject) => {
350
+ recorder.onstop = () => (failure ? reject(failure) : resolve());
351
+ recorder.onerror = () => {
352
+ failure = new RecordingError("Recording encoder failed");
353
+ if (recorder.state !== "inactive")
354
+ recorder.stop();
355
+ else
356
+ reject(failure);
357
+ };
358
+ });
359
+ const stop = () => {
360
+ if (recorder.state !== "inactive")
361
+ recorder.stop();
362
+ };
363
+ this.stopSegment = stop;
364
+ recorder.ondataavailable = (event) => {
365
+ try {
366
+ uploader.append(event.data);
367
+ if (!uploader.hasCapacity && recorder.state === "recording") {
368
+ recorder.pause();
369
+ void uploader
370
+ .waitForCapacity()
371
+ .then(() => {
372
+ if (!this.stopped && recorder.state === "paused")
373
+ recorder.resume();
374
+ })
375
+ .catch((error) => {
376
+ failure = error;
377
+ stop();
378
+ });
379
+ }
380
+ }
381
+ catch (error) {
382
+ failure =
383
+ error instanceof Error
384
+ ? error
385
+ : new RecordingError("Recording buffer failed");
386
+ stop();
387
+ }
388
+ };
389
+ const draw = () => {
390
+ const current = this.getStream();
391
+ const track = current?.getVideoTracks()[0];
392
+ if (!track || track.readyState !== "live" || !track.enabled) {
393
+ this.stopped = true;
394
+ stop();
395
+ return;
396
+ }
397
+ // A camera flip gets a separate file; WebRTC is untouched.
398
+ if (current !== stream) {
399
+ stop();
400
+ return;
401
+ }
402
+ encoded.getAudioTracks().forEach((audio, index) => {
403
+ audio.enabled = stream.getAudioTracks()[index]?.enabled ?? false;
404
+ });
405
+ context.fillStyle = "#000";
406
+ context.fillRect(0, 0, canvas.width, canvas.height);
407
+ if (video.readyState >= 2) {
408
+ const scale = Math.min(canvas.width / video.videoWidth, canvas.height / video.videoHeight), w = video.videoWidth * scale, h = video.videoHeight * scale;
409
+ context.drawImage(video, (canvas.width - w) / 2, (canvas.height - h) / 2, w, h);
410
+ }
411
+ };
412
+ recorder.start(1000);
413
+ draw();
414
+ ready();
415
+ timer = setInterval(draw, 1000 / policy.frameRate);
416
+ segmentTimer = setTimeout(stop, uploader.session.segmentSeconds * 1000);
417
+ await finished;
418
+ if (timer)
419
+ clearInterval(timer);
420
+ if (segmentTimer)
421
+ clearTimeout(segmentTimer);
422
+ encoded.getTracks().forEach((track) => track.stop());
423
+ video.pause();
424
+ video.srcObject = null;
425
+ await uploader.seal();
426
+ const index = this.segmentNumber++;
427
+ let finalize;
428
+ finalize = uploader
429
+ .complete()
430
+ .then((file) => {
431
+ this.files.set(index, file);
432
+ try {
433
+ this.options.onRecordingReady?.(file);
434
+ }
435
+ catch { }
436
+ })
437
+ .catch((error) => {
438
+ this.finalFailure =
439
+ error instanceof Error
440
+ ? error
441
+ : new RecordingError("Recording validation failed");
442
+ this.stopped = true;
443
+ this.stopSegment?.();
444
+ })
445
+ .finally(() => this.finalizers.delete(finalize));
446
+ this.finalizers.add(finalize);
447
+ // Uploaded files hold no pending media buffers; validate in the
448
+ // background while the next segment records. Bound pending jobs too.
449
+ if (this.finalizers.size >= 2)
450
+ await Promise.race(this.finalizers);
451
+ }
452
+ catch (error) {
453
+ await uploader.abort().catch(() => undefined);
454
+ throw error;
455
+ }
456
+ finally {
457
+ if (timer)
458
+ clearInterval(timer);
459
+ if (segmentTimer)
460
+ clearTimeout(segmentTimer);
461
+ this.stopSegment = null;
462
+ encoded?.getTracks().forEach((track) => track.stop());
463
+ if (video) {
464
+ video.pause();
465
+ video.srcObject = null;
466
+ }
467
+ }
468
+ }
469
+ await Promise.all(this.finalizers);
470
+ if (this.finalFailure)
471
+ throw this.finalFailure;
472
+ return [...this.files.entries()]
473
+ .sort((a, b) => a[0] - b[0])
474
+ .map(([, file]) => file);
475
+ }
476
+ }
477
+ exports.CameraRecording = CameraRecording;
478
+ //# sourceMappingURL=recording.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recording.js","sourceRoot":"","sources":["../../src/recording.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type RecordingOptions, type RecordingFile } from './recording.js';
1
2
  /**
2
3
  * Thin client SDK over the orchestrator's signaling protocol.
3
4
  *
@@ -12,6 +13,8 @@ import { type CodecPreference } from './device.js';
12
13
  import { type MusicInput, type MusicOptions, type TrackSource } from './music.js';
13
14
  import { type ScreenMode, type ReceiveQuality, type VideoLayer, type LayerCount, type VideoPolicy, type VideoQuality } from './quality.js';
14
15
  import { type VideoLimitedEvent, type VideoReceiveStats, type VideoSendStats } from './stats.js';
16
+ export { CameraRecording, RecordingUploader, RecordingError } from './recording.js';
17
+ export type { RecordingOptions, RecordingEvent, RecordingState, RecordingSession, RecordingFile } from './recording.js';
15
18
  export { BroadcastPublisher, WhipError, whipEnd, whipOffer } from './broadcast.js';
16
19
  export { AudioMixer, MusicSource } from './music.js';
17
20
  export type { MusicInput, MusicOptions, TrackSource } from './music.js';
@@ -249,6 +252,7 @@ export declare class StreamClient {
249
252
  private token;
250
253
  private joinResult;
251
254
  private localStream;
255
+ private recording;
252
256
  private wasPublishing;
253
257
  private publishConstraints;
254
258
  private publishOptions;
@@ -489,6 +493,9 @@ export declare class StreamClient {
489
493
  private setKindEnabled;
490
494
  /** Stop publishing entirely and release the local devices. */
491
495
  unpublish(): Promise<void>;
496
+ /** Paid camera recording; project opt-in, quotas and quality are checked by the backend. */
497
+ startRecording(options: RecordingOptions): Promise<void>;
498
+ stopRecording(): Promise<RecordingFile[]>;
492
499
  get local(): MediaStream | null;
493
500
  raiseHand(metadata?: Record<string, unknown>): Promise<unknown>;
494
501
  lowerHand(identity?: string): Promise<unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC5F;;;;;;GAMG;AACH,OAAO,EAAU,KAAK,KAAK,IAAI,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAO5D,KAAK,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;AAK1C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,EASL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAOL,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EAGf,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpF,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxH,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACrD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7F,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACjI,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC1H,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,WAAW,EACX,SAAS,EACT,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE9D,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,uBAAuB,GAAG,WAAW,GAAG,MAAM,CAAC;IACnG,YAAY,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,qBAAqB,EAAE,eAAe,CAAC;IACvC,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wEAAwE;IACxE,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,oCAAoC;IACpC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,oEAAoE;IACpE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;;;;;OAOG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,GAAG,oBAAoB,GAAG,UAAU,CAAC;CACnF;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,wFAAwF;IACxF,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,kGAAkG;IAClG,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,CAAC;CAC1C;AAID,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,KAAK,EAAE,CAAC,IAAI,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,EAAE,gBAAgB,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,wGAAwG;QACxG,MAAM,EAAE,WAAW,CAAC;KACrB,KAAK,IAAI,CAAC;IACX,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,8FAA8F;IAC9F,UAAU,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QAAC,MAAM,EAAE,WAAW,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACpI,iBAAiB,EAAE,CAAC,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,eAAe,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACpE,gBAAgB,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACpG,WAAW,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3D,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxH;;;;OAIG;IACH,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxF,aAAa,EAAE,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAC/E,UAAU,EAAE,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,kBAAkB,EAAE,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,KAAK,IAAI,CAAC;IAC3E,gBAAgB,EAAE,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,SAAS,GAAG,aAAa,CAAA;KAAE,KAAK,IAAI,CAAC;IACrE,KAAK,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5B,iBAAiB,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IACxG,yFAAyF;IACzF,kBAAkB,EAAE,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IACzD,4FAA4F;IAC5F,iBAAiB,EAAE,CAAC,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,+EAA+E;IAC/E,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;IACrF;;;;OAIG;IACH,UAAU,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC1C;;;;;;;OAOG;IACH,YAAY,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC9C;AAID,2EAA2E;AAC3E,qBAAa,QAAS,SAAQ,KAAK;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAInD;AAsDD,qBAAa,YAAY;IA2EX,OAAO,CAAC,QAAQ,CAAC,KAAK;IA1ElC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,aAAa,CAA0B;IAC/C,OAAO,CAAC,aAAa,CAA0B;IAK/C,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,SAAS,CAAgC;IAKjD,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,kBAAkB,CAAuC;IACjE,OAAO,CAAC,cAAc,CAAsB;IAC5C,yFAAyF;IACzF,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,mBAAmB,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqB;IACvD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqC;IACtE,OAAO,CAAC,eAAe,CAAe;IACtC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,mBAAmB,CAAK;IAChC,OAAO,CAAC,sBAAsB,CAAK;IACnC,8FAA8F;IAC9F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IACtE,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,sFAAsF;IACtF,OAAO,CAAC,UAAU,CAAS;IAC3B,2EAA2E;IAC3E,OAAO,CAAC,eAAe,CAAgC;IAIvD,OAAO,CAAC,WAAW,CAAuC;IAI1D,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;IAC9D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAGzB;gBAE2B,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAIzD,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAe3E,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,IAAI;IAYN,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC;IA4DpC,6GAA6G;IAC7G,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,YAAY;IAYpB;;;;OAIG;YACW,iBAAiB;IA2C/B,KAAK,IAAI,IAAI;IA2Bb,OAAO,CAAC,aAAa;IAoBrB,gEAAgE;IAChE,IAAI,IAAI,IAAI,UAAU,GAAG,IAAI,CAE5B;IAID,OAAO,CAAC,GAAG;IAgBX,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,SAAS;YAwBH,OAAO;IAqIrB,OAAO,CAAC,mBAAmB;YASb,mBAAmB;IAwBjC,OAAO,CAAC,mBAAmB;YASb,mBAAmB;IAkBjC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCjH,2EAA2E;IAC3E,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,qEAAqE;IACrE,IAAI,YAAY,IAAI,YAAY,CAE/B;IAED;;;;;OAKG;IACG,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAWnE,iFAAiF;IAC3E,iBAAiB,CAAC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;IAgB7D;;;;;;;;;;;;;OAaG;IACG,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6C/D;;;;;;OAMG;YACW,kBAAkB;IAuBhC;;;;;;;OAOG;IACG,aAAa,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIrD;;;;OAIG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAe5E;;;;;;;;;;OAUG;IACG,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAe3F,iBAAiB;IAe/B,iGAAiG;IAC3F,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAenF,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,UAAU;IAMlB,kEAAkE;IAClE,OAAO,CAAC,eAAe;IAQvB,iGAAiG;YACnF,eAAe;IAW7B,iFAAiF;IACjF,OAAO,CAAC,UAAU;IAKlB;;;;OAIG;YACW,aAAa;IA0D3B;;;;OAIG;YACW,YAAY;IAS1B;;;;OAIG;YACW,aAAa;IAI3B;;;OAGG;YACW,WAAW;IAuBzB,oGAAoG;IACpG,OAAO,CAAC,mBAAmB;IAS3B,+EAA+E;YACjE,0BAA0B;IAcxC,kFAAkF;IAClF,OAAO,CAAC,cAAc;IAItB;;;;;;OAMG;YACW,SAAS;IA6CvB,4FAA4F;IACtF,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAAC,WAAW,CAAC;IAyC7E,wFAAwF;IAClF,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAItC,OAAO,CAAC,aAAa;YAWP,UAAU;YAWV,aAAa;IAsC3B,OAAO,CAAC,YAAY;YAWN,YAAY;IA0B1B;;;;;;;;;OASG;IACG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAmB9D,YAAY;IAiB1B,uEAAuE;IACvE,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,YAAY,IAAI,OAAO,CAG1B;IAED,iFAAiF;IACjF,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpC,gFAAgF;IAC1E,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,mFAAmF;IAC7E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAahC,OAAO,CAAC,cAAc;YAQR,OAAO;IAmDrB,4DAA4D;IAC5D,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,OAAO,CAAC,YAAY;IAOpB;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,OAAO,CAAC,oBAAoB;YAYd,cAAc;IAW5B,8DAA8D;IACxD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAkChC,4FAA4F;IACtF,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,aAAa,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK/C,IAAI,KAAK,IAAI,WAAW,GAAG,IAAI,CAE9B;IAID,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC/D,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAC9C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,EAAE,MAAM,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAGtF,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IACvD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAC3B,YAAY,IAAI,OAAO,CAAC,OAAO,CAAC;IAOhC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAI7F,6EAA6E;IACvE,WAAW,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAKzF,4DAA4D;IAC5D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAClD,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC1D,8EAA8E;IAC9E,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5C,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;CACnC"}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { CameraRecording } from './recording.js';
1
2
  /**
2
3
  * Thin client SDK over the orchestrator's signaling protocol.
3
4
  *
@@ -10,6 +11,7 @@ import { chooseCodec, currentEnv, defaultLayerCount, findCodec, h264HardwareEnco
10
11
  import { MusicSource } from './music.js';
11
12
  import { allowedQuality, DEFAULT_VIDEO_POLICY, sameLayout, describeVideoLayers, receiveSpatialLayer, screenEncodings, topLayerSize, videoEncodings, } from './quality.js';
12
13
  import { parseReceiveStats, parseSendStats, pruneBaseline, VideoLimitWatch, } from './stats.js';
14
+ export { CameraRecording, RecordingUploader, RecordingError } from './recording.js';
13
15
  export { BroadcastPublisher, WhipError, whipEnd, whipOffer } from './broadcast.js';
14
16
  export { AudioMixer, MusicSource } from './music.js';
15
17
  export { ChatClient, ChatRpcError } from './chat.js';
@@ -78,6 +80,7 @@ export class StreamClient {
78
80
  token;
79
81
  joinResult = null;
80
82
  localStream = null;
83
+ recording = null;
81
84
  // A reconnect tears down every transport and producer. Without remembering
82
85
  // that this client was publishing -- and what it was publishing with -- a
83
86
  // broadcaster that reconnects rejoins silently, which is worse than being
@@ -349,6 +352,7 @@ export class StreamClient {
349
352
  }
350
353
  }
351
354
  close() {
355
+ void this.stopRecording().catch(() => undefined);
352
356
  // Only an app closing a live session is 'left'; kicked, room-closed and the
353
357
  // others have already reported themselves and set closedByUs.
354
358
  const wasOpen = !this.closedByUs;
@@ -1519,6 +1523,7 @@ export class StreamClient {
1519
1523
  }
1520
1524
  /** Stop publishing entirely and release the local devices. */
1521
1525
  async unpublish() {
1526
+ void this.stopRecording().catch(error => this.emit('error', error));
1522
1527
  // All of it takes effect now; only telling the server is waited for. So
1523
1528
  // publish() and unpublish() act in the order they are called: a publish
1524
1529
  // called while this still waits is not undone by it, and one already
@@ -1553,6 +1558,28 @@ export class StreamClient {
1553
1558
  await this.rpc('closeProducer', { producerId: id }).catch(() => undefined);
1554
1559
  }
1555
1560
  }
1561
+ /** Paid camera recording; project opt-in, quotas and quality are checked by the backend. */
1562
+ async startRecording(options) {
1563
+ if (this.recording)
1564
+ throw new Error('Recording is already active');
1565
+ if (!this.localStream || !this.joinResult || !['host', 'cohost'].includes(this.joinResult.role))
1566
+ throw new Error('Publish your camera before recording');
1567
+ const recording = new CameraRecording(() => this.camEnabled ? this.localStream : null, () => this.token, options);
1568
+ this.recording = recording;
1569
+ try {
1570
+ await recording.start();
1571
+ }
1572
+ catch (error) {
1573
+ if (this.recording === recording)
1574
+ this.recording = null;
1575
+ throw error;
1576
+ }
1577
+ }
1578
+ async stopRecording() {
1579
+ const recording = this.recording;
1580
+ this.recording = null;
1581
+ return recording ? recording.stop() : [];
1582
+ }
1556
1583
  get local() {
1557
1584
  return this.localStream;
1558
1585
  }