@voltkit-rtc/client 0.3.0 → 0.5.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.
- package/CHANGELOG.md +110 -0
- package/README.md +196 -24
- package/dist/cjs/chat.d.ts +2 -0
- package/dist/cjs/chat.d.ts.map +1 -1
- package/dist/cjs/chat.js +23 -4
- package/dist/cjs/chat.js.map +1 -1
- package/dist/cjs/device.d.ts +85 -0
- package/dist/cjs/device.d.ts.map +1 -0
- package/dist/cjs/device.js +134 -0
- package/dist/cjs/device.js.map +1 -0
- package/dist/cjs/index.d.ts +212 -6
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +822 -52
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/music.d.ts +1 -1
- package/dist/cjs/music.d.ts.map +1 -1
- package/dist/cjs/quality.d.ts +43 -16
- package/dist/cjs/quality.d.ts.map +1 -1
- package/dist/cjs/quality.js +81 -31
- package/dist/cjs/quality.js.map +1 -1
- package/dist/cjs/stats.d.ts +151 -0
- package/dist/cjs/stats.d.ts.map +1 -0
- package/dist/cjs/stats.js +243 -0
- package/dist/cjs/stats.js.map +1 -0
- package/dist/esm/chat.d.ts +2 -0
- package/dist/esm/chat.d.ts.map +1 -1
- package/dist/esm/chat.js +23 -4
- package/dist/esm/chat.js.map +1 -1
- package/dist/esm/device.d.ts +85 -0
- package/dist/esm/device.d.ts.map +1 -0
- package/dist/esm/device.js +122 -0
- package/dist/esm/device.js.map +1 -0
- package/dist/esm/index.d.ts +212 -6
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +823 -53
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/music.d.ts +1 -1
- package/dist/esm/music.d.ts.map +1 -1
- package/dist/esm/quality.d.ts +43 -16
- package/dist/esm/quality.d.ts.map +1 -1
- package/dist/esm/quality.js +76 -31
- package/dist/esm/quality.js.map +1 -1
- package/dist/esm/stats.d.ts +151 -0
- package/dist/esm/stats.d.ts.map +1 -0
- package/dist/esm/stats.js +232 -0
- package/dist/esm/stats.js.map +1 -0
- package/package.json +1 -1
- package/src/chat.ts +21 -4
- package/src/device.ts +168 -0
- package/src/index.ts +879 -58
- package/src/music.ts +1 -1
- package/src/quality.ts +96 -32
- package/src/stats.ts +328 -0
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.H264_CONTENT_TYPE = void 0;
|
|
4
|
+
exports.currentEnv = currentEnv;
|
|
5
|
+
exports.isPhoneOrTablet = isPhoneOrTablet;
|
|
6
|
+
exports.isAppleMobile = isAppleMobile;
|
|
7
|
+
exports.defaultLayerCount = defaultLayerCount;
|
|
8
|
+
exports.currentProbe = currentProbe;
|
|
9
|
+
exports.h264HardwareEncode = h264HardwareEncode;
|
|
10
|
+
exports.normalizeCodec = normalizeCodec;
|
|
11
|
+
exports.chooseCodec = chooseCodec;
|
|
12
|
+
exports.findCodec = findCodec;
|
|
13
|
+
/** The browser this runs in; an empty desktop-like one outside a browser. */
|
|
14
|
+
function currentEnv() {
|
|
15
|
+
if (typeof navigator === 'undefined')
|
|
16
|
+
return { userAgent: '', maxTouchPoints: 0 };
|
|
17
|
+
const nav = navigator;
|
|
18
|
+
const mobile = nav.userAgentData?.mobile;
|
|
19
|
+
return {
|
|
20
|
+
userAgent: typeof nav.userAgent === 'string' ? nav.userAgent : '',
|
|
21
|
+
...(typeof mobile === 'boolean' ? { uaMobile: mobile } : {}),
|
|
22
|
+
maxTouchPoints: typeof nav.maxTouchPoints === 'number' ? nav.maxTouchPoints : 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// iPadOS asks for desktop sites, so an iPad says "Macintosh". No Mac has a
|
|
26
|
+
// touch screen, so one that reports touch points is an iPad.
|
|
27
|
+
const isIPadOS = (env) => /Macintosh/.test(env.userAgent) && env.maxTouchPoints > 1;
|
|
28
|
+
/**
|
|
29
|
+
* A phone or a tablet. `userAgentData.mobile` is false on Android tablets, so
|
|
30
|
+
* the user agent is checked as well.
|
|
31
|
+
*/
|
|
32
|
+
function isPhoneOrTablet(env = currentEnv()) {
|
|
33
|
+
if (env.uaMobile === true)
|
|
34
|
+
return true;
|
|
35
|
+
if (/Android|iPhone|iPad|iPod|Mobile/.test(env.userAgent))
|
|
36
|
+
return true;
|
|
37
|
+
return isIPadOS(env);
|
|
38
|
+
}
|
|
39
|
+
/** An iPhone, iPad or iPod: every one of them encodes H.264 in hardware. */
|
|
40
|
+
function isAppleMobile(env = currentEnv()) {
|
|
41
|
+
return /iPhone|iPad|iPod/.test(env.userAgent) || isIPadOS(env);
|
|
42
|
+
}
|
|
43
|
+
/** Two layers on phones and tablets, three elsewhere. */
|
|
44
|
+
function defaultLayerCount(env = currentEnv()) {
|
|
45
|
+
return isPhoneOrTablet(env) ? 2 : 3;
|
|
46
|
+
}
|
|
47
|
+
/** The browser's own probe, when it has one. */
|
|
48
|
+
function currentProbe() {
|
|
49
|
+
if (typeof navigator === 'undefined')
|
|
50
|
+
return undefined;
|
|
51
|
+
const capabilities = navigator.mediaCapabilities;
|
|
52
|
+
if (!capabilities || typeof capabilities.encodingInfo !== 'function')
|
|
53
|
+
return undefined;
|
|
54
|
+
return (configuration) => capabilities.encodingInfo(configuration);
|
|
55
|
+
}
|
|
56
|
+
/** The H.264 the media server takes: constrained baseline, packetization mode 1. */
|
|
57
|
+
exports.H264_CONTENT_TYPE = 'video/H264;profile-level-id=42e01f;packetization-mode=1';
|
|
58
|
+
const PROBE_TIMEOUT_MS = 1500;
|
|
59
|
+
/**
|
|
60
|
+
* Whether this browser encodes H.264 at this size and bitrate in hardware:
|
|
61
|
+
* true or false when it says so, null when it cannot say (no
|
|
62
|
+
* `mediaCapabilities`, no `webrtc` support in it, an error, or no answer in
|
|
63
|
+
* time). Publishing never waits on it for more than a moment.
|
|
64
|
+
*/
|
|
65
|
+
async function h264HardwareEncode(video, probe = currentProbe(), timeoutMs = PROBE_TIMEOUT_MS) {
|
|
66
|
+
if (!probe)
|
|
67
|
+
return null;
|
|
68
|
+
let timer;
|
|
69
|
+
try {
|
|
70
|
+
const answer = probe({
|
|
71
|
+
type: 'webrtc',
|
|
72
|
+
video: {
|
|
73
|
+
contentType: exports.H264_CONTENT_TYPE,
|
|
74
|
+
width: Math.round(video.width),
|
|
75
|
+
height: Math.round(video.height),
|
|
76
|
+
bitrate: video.bitrate,
|
|
77
|
+
framerate: 30,
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
const late = new Promise((resolve) => {
|
|
81
|
+
timer = setTimeout(() => resolve(null), timeoutMs);
|
|
82
|
+
});
|
|
83
|
+
const info = await Promise.race([answer, late]);
|
|
84
|
+
if (!info)
|
|
85
|
+
return null;
|
|
86
|
+
return Boolean(info.supported && info.powerEfficient);
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
finally {
|
|
92
|
+
if (timer !== undefined)
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/** 'vp8' or 'h264' in any case; anything else, including nothing, is 'auto'. */
|
|
97
|
+
function normalizeCodec(codec) {
|
|
98
|
+
const name = typeof codec === 'string' ? codec.toLowerCase() : '';
|
|
99
|
+
return name === 'vp8' || name === 'h264' ? name : 'auto';
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The codec to publish with.
|
|
103
|
+
*
|
|
104
|
+
* 'auto' is H.264 on a phone or tablet that encodes it in hardware, and VP8
|
|
105
|
+
* everywhere else: computers encode VP8 well, and a few desktop browsers
|
|
106
|
+
* cannot decode H.264. When the probe cannot say, an Apple device is taken to
|
|
107
|
+
* have hardware H.264 (they all do) and anything else is not.
|
|
108
|
+
*/
|
|
109
|
+
function chooseCodec(input) {
|
|
110
|
+
if (input.requested === 'h264') {
|
|
111
|
+
return input.h264Available
|
|
112
|
+
? { codec: 'h264' }
|
|
113
|
+
: { codec: 'vp8', warning: 'H.264 was asked for, but this browser cannot send it to this server: publishing VP8 instead' };
|
|
114
|
+
}
|
|
115
|
+
if (input.requested === 'vp8')
|
|
116
|
+
return { codec: 'vp8' };
|
|
117
|
+
if (!input.phoneOrTablet || !input.h264Available)
|
|
118
|
+
return { codec: 'vp8' };
|
|
119
|
+
return { codec: (input.h264Hardware ?? input.appleMobile) ? 'h264' : 'vp8' };
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* The device's own capability entry for a codec, to hand to `produce()`.
|
|
123
|
+
* Only ever pass `produce()` an entry from the device's send capabilities:
|
|
124
|
+
* mediasoup-client adds the transceiver before it checks the codec, so one it
|
|
125
|
+
* cannot match leaves a transceiver behind that breaks every later produce.
|
|
126
|
+
*/
|
|
127
|
+
function findCodec(codecs, codec) {
|
|
128
|
+
if (!codecs)
|
|
129
|
+
return undefined;
|
|
130
|
+
if (codec === 'vp8')
|
|
131
|
+
return codecs.find((c) => c.mimeType.toLowerCase() === 'video/vp8');
|
|
132
|
+
return codecs.find((c) => c.mimeType.toLowerCase() === 'video/h264' && Number(c.parameters?.['packetization-mode'] ?? 0) === 1);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=device.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/device.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -8,15 +8,19 @@
|
|
|
8
8
|
import { type types as ms } from 'mediasoup-client';
|
|
9
9
|
type RtpCapabilities = ms.RtpCapabilities;
|
|
10
10
|
import type { ChatEvents, ChatMessage, ChatState, SendMessageOptions } from './chat.js';
|
|
11
|
+
import { type CodecPreference } from './device.js';
|
|
11
12
|
import { type MusicInput, type MusicOptions, type TrackSource } from './music.js';
|
|
12
|
-
import { type VideoPolicy, type VideoQuality } from './quality.js';
|
|
13
|
+
import { type ScreenMode, type ReceiveQuality, type VideoLayer, type LayerCount, type VideoPolicy, type VideoQuality } from './quality.js';
|
|
14
|
+
import { type VideoLimitedEvent, type VideoReceiveStats, type VideoSendStats } from './stats.js';
|
|
13
15
|
export { BroadcastPublisher, WhipError, whipEnd, whipOffer } from './broadcast.js';
|
|
14
16
|
export { AudioMixer, MusicSource } from './music.js';
|
|
15
17
|
export type { MusicInput, MusicOptions, TrackSource } from './music.js';
|
|
16
18
|
export type { BroadcastEvents, BroadcastStartOptions, BroadcastState } from './broadcast.js';
|
|
17
19
|
export { ChatClient, ChatRpcError } from './chat.js';
|
|
18
20
|
export { allowedQuality, layerBitrate, videoEncodings, VIDEO_QUALITIES } from './quality.js';
|
|
19
|
-
export type { VideoEncoding, VideoPolicy, VideoQuality } from './quality.js';
|
|
21
|
+
export type { LayerCount, VideoEncoding, VideoPolicy, VideoQuality, VideoLayer, ReceiveQuality, ScreenMode } from './quality.js';
|
|
22
|
+
export type { CodecPreference } from './device.js';
|
|
23
|
+
export type { VideoLayerStats, VideoLimitedEvent, VideoLimitReason, VideoReceiveStats, VideoSendStats } from './stats.js';
|
|
20
24
|
export type { ChatClientEvents, ChatEvents, ChatJoinResult, ChatMessage, ChatState, SendMessageOptions, } from './chat.js';
|
|
21
25
|
export type Role = 'host' | 'cohost' | 'moderator' | 'viewer';
|
|
22
26
|
/** Sent when the account behind a session can no longer be used. */
|
|
@@ -44,17 +48,53 @@ export interface JoinResult {
|
|
|
44
48
|
blockedSlots?: string[];
|
|
45
49
|
/**
|
|
46
50
|
* The highest video quality this project may publish, and the server's cap
|
|
47
|
-
* on a publisher's incoming bitrate. Absent from older servers:
|
|
51
|
+
* on a publisher's incoming bitrate. Absent from older servers: 1080p.
|
|
48
52
|
*/
|
|
49
53
|
video?: VideoPolicy;
|
|
50
54
|
}
|
|
51
55
|
export interface PublishOptions {
|
|
56
|
+
/** 30 by default. Only the top layer uses 60; capture at 60 too. */
|
|
57
|
+
frameRate?: 30 | 60;
|
|
52
58
|
/**
|
|
53
59
|
* The video quality to send: 1080p, 720p or 480p. Defaults to the highest
|
|
54
60
|
* the project allows (`videoPolicy.maxQuality`), and is lowered to it if
|
|
55
61
|
* higher, and to the camera's own size if that is smaller.
|
|
56
62
|
*/
|
|
57
63
|
quality?: VideoQuality;
|
|
64
|
+
/**
|
|
65
|
+
* The most simulcast layers to send: 1, 2 or 3. Defaults to 2 on phones and
|
|
66
|
+
* tablets and 3 elsewhere. Each layer is a separate encode. When a phone is
|
|
67
|
+
* too busy, the browser shrinks the picture and then sends fewer layers,
|
|
68
|
+
* dropping the top one: from three, viewers were left with a quarter of the
|
|
69
|
+
* picture; from two, the full picture survives every step down to 480×270.
|
|
70
|
+
* Never more than the picture allows: 3 from 960×540 up, 2 from 480×270,
|
|
71
|
+
* else 1. Two layers are half and full size. One is full size only, and
|
|
72
|
+
* every viewer then gets the same stream, whatever their connection.
|
|
73
|
+
*/
|
|
74
|
+
layers?: LayerCount;
|
|
75
|
+
/**
|
|
76
|
+
* The video codec. `'auto'` (the default) sends H.264 on phones and tablets
|
|
77
|
+
* that encode it in hardware and VP8 everywhere else. `'h264'` and `'vp8'`
|
|
78
|
+
* force one; a forced H.264 the browser cannot send falls back to VP8 and
|
|
79
|
+
* fires `error`. A viewer whose browser cannot decode the codec cannot
|
|
80
|
+
* watch, so force VP8 if your audience uses such browsers.
|
|
81
|
+
*/
|
|
82
|
+
codec?: CodecPreference;
|
|
83
|
+
/**
|
|
84
|
+
* What the encoder gives up first when the device cannot keep up:
|
|
85
|
+
* `'maintain-resolution'` lowers the frame rate, `'maintain-framerate'` the
|
|
86
|
+
* picture size, `'balanced'` some of each. Unset leaves the browser's
|
|
87
|
+
* default. Chrome also takes it from the track's `contentHint`: `'detail'`
|
|
88
|
+
* keeps resolution, `'motion'` keeps frame rate. Browsers that do not
|
|
89
|
+
* support it ignore it.
|
|
90
|
+
*/
|
|
91
|
+
degradationPreference?: 'maintain-resolution' | 'maintain-framerate' | 'balanced';
|
|
92
|
+
}
|
|
93
|
+
export interface ScreenPublishOptions {
|
|
94
|
+
mode?: ScreenMode;
|
|
95
|
+
audio?: boolean;
|
|
96
|
+
/** An existing screen stream; otherwise capture is requested from this user gesture. */
|
|
97
|
+
stream?: MediaStream;
|
|
58
98
|
}
|
|
59
99
|
export interface SlotClaim {
|
|
60
100
|
key: string;
|
|
@@ -68,7 +108,9 @@ export interface ParticipantInfo {
|
|
|
68
108
|
identity: string;
|
|
69
109
|
role: Role;
|
|
70
110
|
handRaised: boolean;
|
|
111
|
+
handMetadata?: Record<string, unknown>;
|
|
71
112
|
muted: boolean;
|
|
113
|
+
videoBlocked?: boolean;
|
|
72
114
|
metadata?: unknown;
|
|
73
115
|
}
|
|
74
116
|
export interface RemoteProducer {
|
|
@@ -78,6 +120,10 @@ export interface RemoteProducer {
|
|
|
78
120
|
paused: boolean;
|
|
79
121
|
/** What the track carries. A host playing music publishes two audio tracks: `mic` and `music`. */
|
|
80
122
|
source?: TrackSource;
|
|
123
|
+
videoLayers?: VideoLayer[];
|
|
124
|
+
appData?: {
|
|
125
|
+
videoLayers?: VideoLayer[];
|
|
126
|
+
};
|
|
81
127
|
}
|
|
82
128
|
export interface ClientEvents extends ChatEvents {
|
|
83
129
|
connected: () => void;
|
|
@@ -108,6 +154,11 @@ export interface ClientEvents extends ChatEvents {
|
|
|
108
154
|
identity: string;
|
|
109
155
|
reason?: string;
|
|
110
156
|
}) => void;
|
|
157
|
+
participantMuted: (e: {
|
|
158
|
+
identity: string;
|
|
159
|
+
kind?: 'audio' | 'video' | '';
|
|
160
|
+
paused: boolean;
|
|
161
|
+
}) => void;
|
|
111
162
|
roleChanged: (e: {
|
|
112
163
|
identity: string;
|
|
113
164
|
role: Role;
|
|
@@ -115,6 +166,8 @@ export interface ClientEvents extends ChatEvents {
|
|
|
115
166
|
handRaised: (e: {
|
|
116
167
|
identity: string;
|
|
117
168
|
handRaised: boolean;
|
|
169
|
+
metadata?: Record<string, unknown>;
|
|
170
|
+
reason?: string;
|
|
118
171
|
}) => void;
|
|
119
172
|
/**
|
|
120
173
|
* A moderator switched your microphone (`audio`), camera (`video`) or both
|
|
@@ -138,6 +191,13 @@ export interface ClientEvents extends ChatEvents {
|
|
|
138
191
|
by: string;
|
|
139
192
|
reason?: string;
|
|
140
193
|
}) => void;
|
|
194
|
+
screenShareStarted: (e: {
|
|
195
|
+
stream: MediaStream;
|
|
196
|
+
mode: ScreenMode;
|
|
197
|
+
}) => void;
|
|
198
|
+
screenShareEnded: (e: {
|
|
199
|
+
reason: 'stopped' | 'track-ended';
|
|
200
|
+
}) => void;
|
|
141
201
|
error: (err: Error) => void;
|
|
142
202
|
localMediaChanged: (state: {
|
|
143
203
|
micEnabled: boolean;
|
|
@@ -158,6 +218,15 @@ export interface ClientEvents extends ChatEvents {
|
|
|
158
218
|
* account is topped up first -- tell the user, and stop asking them to wait.
|
|
159
219
|
*/
|
|
160
220
|
usageLimit: (e: UsageLimitNotice) => void;
|
|
221
|
+
/**
|
|
222
|
+
* Your camera video is being held back by this device (`cpu`: too busy to
|
|
223
|
+
* encode it), by the upload (`bandwidth`), or by something else (`other`);
|
|
224
|
+
* or that has cleared (`none`). Fires when the reason changes and has held
|
|
225
|
+
* for about 4 s, so brief spikes stay quiet; never `none` first. Tell the
|
|
226
|
+
* publisher: "your device is busy" or "your connection is slow". Checked
|
|
227
|
+
* every 2 s, only while publishing a camera and someone listens.
|
|
228
|
+
*/
|
|
229
|
+
videoLimited: (e: VideoLimitedEvent) => void;
|
|
161
230
|
}
|
|
162
231
|
/** An error returned by the server, carrying its machine-readable code. */
|
|
163
232
|
export declare class RpcError extends Error {
|
|
@@ -186,15 +255,48 @@ export declare class StreamClient {
|
|
|
186
255
|
/** In-app music being published, kept across reconnects so it can be published again. */
|
|
187
256
|
private music;
|
|
188
257
|
private musicProducerId;
|
|
258
|
+
private screenStream;
|
|
259
|
+
private screenMode;
|
|
260
|
+
private screenAudioEnabled;
|
|
261
|
+
private screenGeneration;
|
|
262
|
+
private screenPending;
|
|
263
|
+
private screenStarted;
|
|
264
|
+
private screenEndedListener;
|
|
265
|
+
private readonly screenProducerIds;
|
|
266
|
+
private readonly remoteVideoLayers;
|
|
267
|
+
private readonly receiveQualities;
|
|
268
|
+
private cameraFrameRate;
|
|
269
|
+
private frameRateFallback;
|
|
270
|
+
private frameRateLowSamples;
|
|
271
|
+
private frameRateWarmupSamples;
|
|
189
272
|
/** What each remote producer carries, so a pause can say "music" rather than just "audio". */
|
|
190
273
|
private readonly remoteSources;
|
|
274
|
+
/**
|
|
275
|
+
* The layers asked for each remote video, by producerId. A reconnect
|
|
276
|
+
* consumes everything again, and the new consumer would otherwise start at
|
|
277
|
+
* the full picture.
|
|
278
|
+
*/
|
|
279
|
+
private readonly preferredLayers;
|
|
191
280
|
private closedByUs;
|
|
192
281
|
private reconnecting;
|
|
193
282
|
private reconnectAttempt;
|
|
283
|
+
/** Set once a connect() has joined and set up. Only such a session is reconnected. */
|
|
284
|
+
private joinedOnce;
|
|
285
|
+
/** The camera producer's layers, to tell whether a new track fits them. */
|
|
286
|
+
private cameraEncodings;
|
|
287
|
+
private cameraQueue;
|
|
288
|
+
private publishGeneration;
|
|
289
|
+
private codecFallbackLogged;
|
|
290
|
+
private readonly sendStatsBaseline;
|
|
291
|
+
private readonly recvStatsBaseline;
|
|
292
|
+
private readonly limitWatch;
|
|
194
293
|
constructor(wsUrl: string, token: string);
|
|
195
294
|
on<K extends keyof ClientEvents>(event: K, fn: ClientEvents[K]): () => void;
|
|
295
|
+
private listenerCount;
|
|
196
296
|
private emit;
|
|
197
297
|
connect(): Promise<JoinResult>;
|
|
298
|
+
/** A new mediasoup Device for each join. Its own method so tests, which have no WebRTC, can stand one in. */
|
|
299
|
+
private createDevice;
|
|
198
300
|
private openSocket;
|
|
199
301
|
private detachSocket;
|
|
200
302
|
/**
|
|
@@ -223,9 +325,12 @@ export declare class StreamClient {
|
|
|
223
325
|
*
|
|
224
326
|
* `options.quality` picks 1080p, 720p or 480p (see `videoPolicy` for what
|
|
225
327
|
* the project allows). Capture at least that size for the full picture.
|
|
328
|
+
* `options.layers`, `codec` and `degradationPreference` tune how the video
|
|
329
|
+
* is encoded; the defaults suit both phones and computers. The options are
|
|
330
|
+
* kept for a reconnect's republish.
|
|
226
331
|
*/
|
|
227
332
|
publish(stream: MediaStream, constraints?: MediaStreamConstraints, options?: PublishOptions): Promise<void>;
|
|
228
|
-
/** What this project may publish. Known once joined;
|
|
333
|
+
/** What this project may publish. Known once joined; 1080p before that. */
|
|
229
334
|
get videoPolicy(): VideoPolicy;
|
|
230
335
|
/** The quality video is being sent at, after the project's limit. */
|
|
231
336
|
get videoQuality(): VideoQuality;
|
|
@@ -236,7 +341,98 @@ export declare class StreamClient {
|
|
|
236
341
|
* that size (for example with `track.applyConstraints`) first.
|
|
237
342
|
*/
|
|
238
343
|
setVideoQuality(quality: VideoQuality): Promise<VideoQuality>;
|
|
344
|
+
/** Change the camera frame rate without stopping screen, microphone or music. */
|
|
345
|
+
setVideoFrameRate(frameRate: 30 | 60): Promise<30 | 60>;
|
|
346
|
+
/**
|
|
347
|
+
* Send a different video track from now on: a canvas with effects drawn on
|
|
348
|
+
* it, the raw camera again, another camera. When the new track needs the
|
|
349
|
+
* same dimensions and layers as the current one, viewers see no pause, and the layers
|
|
350
|
+
* take the new picture's bitrates. Otherwise the camera producer is
|
|
351
|
+
* replaced, as `setVideoQuality` does. Either way a paused camera stays
|
|
352
|
+
* paused.
|
|
353
|
+
*
|
|
354
|
+
* Your own stream is left as it is: the client keeps a stream of its own
|
|
355
|
+
* (`local`, announced by `localStreamChanged`) with the new track and your
|
|
356
|
+
* microphone, and a reconnect republishes that. The track you replaced is
|
|
357
|
+
* not stopped; it is yours again, switched back on if pausing the camera
|
|
358
|
+
* had switched it off. Rejects when no camera is being published.
|
|
359
|
+
*/
|
|
360
|
+
replaceVideoTrack(track: MediaStreamTrack): Promise<void>;
|
|
361
|
+
/**
|
|
362
|
+
* Give a camera producer whose track was swapped in place the bitrates of
|
|
363
|
+
* its new picture. The layout matched, but a bigger picture at the same
|
|
364
|
+
* scales (a 1280×720 canvas for a 960×540 camera) would otherwise stay
|
|
365
|
+
* capped at the smaller one's. Best effort: a browser that refuses keeps
|
|
366
|
+
* the old caps.
|
|
367
|
+
*/
|
|
368
|
+
private applyLayerBitrates;
|
|
369
|
+
/**
|
|
370
|
+
* What your camera video is sending now, layer by layer, or null when no
|
|
371
|
+
* camera is being published. The top-level fields describe the biggest
|
|
372
|
+
* layer going out. `qualityLimitation` says why it is less than asked:
|
|
373
|
+
* `cpu` is this device, `bandwidth` the upload, `none` neither (then check
|
|
374
|
+
* the camera and the light). Bitrates are averaged since the previous call,
|
|
375
|
+
* so call it every second or two; the first call reports 0.
|
|
376
|
+
*/
|
|
377
|
+
getVideoStats(): Promise<VideoSendStats | null>;
|
|
378
|
+
/**
|
|
379
|
+
* What this client receives of a remote video (by its `producerId`, from
|
|
380
|
+
* the `track` event), or null when it is not receiving that video. Bitrates
|
|
381
|
+
* are averaged since the previous call for it; the first call reports 0.
|
|
382
|
+
*/
|
|
383
|
+
getReceiveStats(producerId: string): Promise<VideoReceiveStats | null>;
|
|
384
|
+
/**
|
|
385
|
+
* Receive a smaller copy of someone's video (by its `producerId`, from the
|
|
386
|
+
* `track` event), for a tile that does not need the full picture. Spatial
|
|
387
|
+
* layer 0 is the smallest copy the publisher sends: a computer sends three
|
|
388
|
+
* (at 720p 320×180, 640×360 and 1280×720), a phone two (640×360 and
|
|
389
|
+
* 1280×720), and a layer above the biggest means the biggest. Leave
|
|
390
|
+
* `temporalLayer` out to keep the full frame rate. It is the most this
|
|
391
|
+
* client is sent: a connection that cannot carry it still gets less. The
|
|
392
|
+
* choice is kept across reconnects and forgotten when the track ends.
|
|
393
|
+
* Rejects for a producer whose video this client is not receiving.
|
|
394
|
+
*/
|
|
395
|
+
setPreferredLayers(producerId: string, spatialLayer: number, temporalLayer?: number): Promise<void>;
|
|
396
|
+
private collectVideoStats;
|
|
397
|
+
/** Friendly receive ceiling using this producer's real layer sizes; auto restores adaptation. */
|
|
398
|
+
setReceiveQuality(producerId: string, quality: ReceiveQuality): Promise<void>;
|
|
399
|
+
private cameraProducer;
|
|
400
|
+
private cameraTask;
|
|
401
|
+
/** Swap the video in the client's own stream, never the app's. */
|
|
402
|
+
private adoptVideoTrack;
|
|
403
|
+
/** Close the camera producer and produce `track` in its place, paused on both ends if it was. */
|
|
404
|
+
private reproduceCamera;
|
|
405
|
+
/** `options.layers` when valid, else 2 on phones and tablets and 3 elsewhere. */
|
|
406
|
+
private layerCount;
|
|
407
|
+
/**
|
|
408
|
+
* Produce the camera from `track`, paused on both ends when `paused`. By
|
|
409
|
+
* default the track says: one handed over switched off is a camera that is
|
|
410
|
+
* off, and so is one a pause switched off before a reconnect.
|
|
411
|
+
*/
|
|
239
412
|
private produceCamera;
|
|
413
|
+
/**
|
|
414
|
+
* Keep a producer just made -- unless unpublish() ran while it was being
|
|
415
|
+
* made. Kept, it would publish again what was just unpublished, so it is
|
|
416
|
+
* closed instead, on both ends.
|
|
417
|
+
*/
|
|
418
|
+
private keepProducer;
|
|
419
|
+
/**
|
|
420
|
+
* mediasoup-client makes a producer paused when its track is off, and the
|
|
421
|
+
* server makes every producer live. Unless the server is told, viewers get
|
|
422
|
+
* black video or silence from a camera or microphone they are told is on.
|
|
423
|
+
*/
|
|
424
|
+
private pauseOnServer;
|
|
425
|
+
/**
|
|
426
|
+
* H.264 or VP8 for the camera (see chooseCodec), with the device's own
|
|
427
|
+
* capability entry for it: produce() must only ever get one of those.
|
|
428
|
+
*/
|
|
429
|
+
private cameraCodec;
|
|
430
|
+
/** A forced H.264 that could not be used is the app's to hear about; 'auto' just notes it, once. */
|
|
431
|
+
private reportCodecFallback;
|
|
432
|
+
/** Best effort: a browser that ignores or refuses it keeps its own default. */
|
|
433
|
+
private applyDegradationPreference;
|
|
434
|
+
/** videoLimited sampling runs while a camera is published and someone listens. */
|
|
435
|
+
private syncLimitWatch;
|
|
240
436
|
/**
|
|
241
437
|
* Re-establish this client's broadcast after a reconnect.
|
|
242
438
|
*
|
|
@@ -245,6 +441,15 @@ export declare class StreamClient {
|
|
|
245
441
|
* when the tracks have genuinely ended.
|
|
246
442
|
*/
|
|
247
443
|
private republish;
|
|
444
|
+
/** Publish a screen beside the camera. Call from a click so capture permission can open. */
|
|
445
|
+
publishScreen(options?: ScreenPublishOptions): Promise<MediaStream>;
|
|
446
|
+
/** Stop only the screen and its tab/system audio; keep camera, microphone and music. */
|
|
447
|
+
unpublishScreen(): Promise<void>;
|
|
448
|
+
private releaseScreen;
|
|
449
|
+
private stopScreen;
|
|
450
|
+
private restoreScreen;
|
|
451
|
+
private frameRateFor;
|
|
452
|
+
private sampleCamera;
|
|
248
453
|
/**
|
|
249
454
|
* Publish music playing inside the page, as its own track.
|
|
250
455
|
*
|
|
@@ -280,12 +485,13 @@ export declare class StreamClient {
|
|
|
280
485
|
*/
|
|
281
486
|
setMicEnabled(enabled: boolean): Promise<void>;
|
|
282
487
|
setCamEnabled(enabled: boolean): Promise<void>;
|
|
488
|
+
private applyLocalModeration;
|
|
283
489
|
private setKindEnabled;
|
|
284
490
|
/** Stop publishing entirely and release the local devices. */
|
|
285
491
|
unpublish(): Promise<void>;
|
|
286
492
|
get local(): MediaStream | null;
|
|
287
|
-
raiseHand(): Promise<unknown>;
|
|
288
|
-
lowerHand(): Promise<unknown>;
|
|
493
|
+
raiseHand(metadata?: Record<string, unknown>): Promise<unknown>;
|
|
494
|
+
lowerHand(identity?: string): Promise<unknown>;
|
|
289
495
|
muteParticipant(identity: string): Promise<unknown>;
|
|
290
496
|
/**
|
|
291
497
|
* Moderating roles: switch someone's microphone (`audio`), camera (`video`)
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -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;;;;;;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,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;IA0EX,OAAO,CAAC,QAAQ,CAAC,KAAK;IAzElC,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;IAK/C,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;IA0Bb,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;IAiChC,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"}
|