@signalwire/js 4.0.0-dev-20260515133934 → 4.0.0-rc.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/browser.mjs +801 -463
- package/dist/browser.mjs.map +1 -1
- package/dist/browser.umd.js +801 -463
- package/dist/browser.umd.js.map +1 -1
- package/dist/index.cjs +791 -453
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +198 -32
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +198 -32
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +791 -453
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -134,8 +134,25 @@ interface AuthenticateContext {
|
|
|
134
134
|
* - Setting `expiry_at` when the credential has a known expiration so the SDK can schedule refresh.
|
|
135
135
|
* - Handling errors and never leaking sensitive data through error messages.
|
|
136
136
|
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
137
|
+
* ## Refresh precedence
|
|
138
|
+
*
|
|
139
|
+
* The SDK selects exactly one refresh mechanism per session, evaluated at connect
|
|
140
|
+
* time (and re-evaluated on reconnect):
|
|
141
|
+
*
|
|
142
|
+
* | `refresh` provided | SAT carries `sat:refresh` scope | Active mechanism |
|
|
143
|
+
* | ------------------ | -------------------------------- | ------------------------------------ |
|
|
144
|
+
* | yes | yes | Client Bound SAT (DPoP, internal) |
|
|
145
|
+
* | yes | no | Developer-provided `refresh()` |
|
|
146
|
+
* | no | yes | Client Bound SAT (DPoP, internal) |
|
|
147
|
+
* | no | no | None — session ends at `expiry_at` |
|
|
148
|
+
*
|
|
149
|
+
* When the SDK falls back to the developer-provided `refresh()` because the SAT
|
|
150
|
+
* lacked `sat:refresh` scope, a `credential_refresh_fallback` event is emitted on
|
|
151
|
+
* `SignalWire.warnings$` so application code can observe the transition.
|
|
152
|
+
*
|
|
153
|
+
* Mint a SAT via `POST /api/fabric/subscribers/tokens` with `fingerprint` and
|
|
154
|
+
* `scope: ["sat:refresh"]` (both currently optional on that endpoint) to enable
|
|
155
|
+
* the Client Bound SAT path; otherwise provide `refresh()` here.
|
|
139
156
|
*/
|
|
140
157
|
interface CredentialProvider {
|
|
141
158
|
/**
|
|
@@ -146,6 +163,8 @@ interface CredentialProvider {
|
|
|
146
163
|
* - Reject (throw) on failure — this will cause client initialization to fail.
|
|
147
164
|
* - When `context.fingerprint` is provided, forward it to the server-side token
|
|
148
165
|
* endpoint with `scope: "sat:refresh"` to enable automatic token refresh.
|
|
166
|
+
* Ignoring `context.fingerprint` causes the SDK to fall back to `refresh()`
|
|
167
|
+
* (if provided) or end the session at expiry.
|
|
149
168
|
*
|
|
150
169
|
* SDK behavior:
|
|
151
170
|
* - Awaits this method before establishing the WebSocket connection.
|
|
@@ -160,14 +179,12 @@ interface CredentialProvider {
|
|
|
160
179
|
* - Reject (throw) if refresh is not possible — the SDK will stop the refresh schedule.
|
|
161
180
|
*
|
|
162
181
|
* SDK behavior:
|
|
163
|
-
* - Only called when `expiry_at` was set on the previous credential
|
|
182
|
+
* - Only called when `expiry_at` was set on the previous credential AND the
|
|
183
|
+
* SAT does not carry `sat:refresh` scope (otherwise the SDK refreshes
|
|
184
|
+
* internally via Client Bound SAT). See the precedence table above.
|
|
164
185
|
* - Scheduled automatically before expiry; implementors do not need to manage timing.
|
|
165
186
|
* - On rejection, the refresh schedule stops and the session continues with the
|
|
166
187
|
* current credentials until they expire.
|
|
167
|
-
* - When not provided and the SAT includes a `sat:refresh` scope, the SDK
|
|
168
|
-
* automatically refreshes via Client Bound SAT (DPoP) without developer intervention.
|
|
169
|
-
* - When not provided and no refresh scope is present, the SDK uses the initial
|
|
170
|
-
* credentials for the entire session lifetime.
|
|
171
188
|
*/
|
|
172
189
|
refresh?: () => Promise<SDKCredential>;
|
|
173
190
|
}
|
|
@@ -795,7 +812,7 @@ interface Member {
|
|
|
795
812
|
member_id: string;
|
|
796
813
|
call_id: string;
|
|
797
814
|
name: string;
|
|
798
|
-
type: 'member' | 'screen';
|
|
815
|
+
type: 'member' | 'screen' | 'device' | (string & {});
|
|
799
816
|
parent_id?: string;
|
|
800
817
|
requested_position?: string;
|
|
801
818
|
handraised: boolean;
|
|
@@ -803,17 +820,17 @@ interface Member {
|
|
|
803
820
|
audio_muted: boolean;
|
|
804
821
|
video_muted: boolean;
|
|
805
822
|
deaf: boolean;
|
|
806
|
-
input_volume
|
|
807
|
-
output_volume
|
|
808
|
-
input_sensitivity
|
|
823
|
+
input_volume?: number;
|
|
824
|
+
output_volume?: number;
|
|
825
|
+
input_sensitivity?: number;
|
|
809
826
|
echo_cancellation: boolean;
|
|
810
827
|
auto_gain: boolean;
|
|
811
828
|
noise_suppression: boolean;
|
|
812
829
|
lowbitrate: boolean;
|
|
813
830
|
denoise: boolean;
|
|
814
|
-
talking
|
|
815
|
-
isAudience
|
|
816
|
-
meta
|
|
831
|
+
talking?: boolean;
|
|
832
|
+
isAudience?: boolean;
|
|
833
|
+
meta?: Record<string, unknown>;
|
|
817
834
|
subscriber_id: string;
|
|
818
835
|
address_id: string;
|
|
819
836
|
updated?: string[];
|
|
@@ -935,6 +952,15 @@ interface RoomUpdatedPayload {
|
|
|
935
952
|
room_id: string;
|
|
936
953
|
room_session_id: string;
|
|
937
954
|
}
|
|
955
|
+
/**
|
|
956
|
+
* Describes the peer (remote) call referenced from a call.state event.
|
|
957
|
+
*
|
|
958
|
+
* Mirrors the backend (relay.c) `peer` shape.
|
|
959
|
+
*/
|
|
960
|
+
interface CallStateRelatedCall {
|
|
961
|
+
call_id?: string;
|
|
962
|
+
node_id?: string;
|
|
963
|
+
}
|
|
938
964
|
interface CallStatePayload {
|
|
939
965
|
call_id: string;
|
|
940
966
|
node_id: string;
|
|
@@ -942,10 +968,19 @@ interface CallStatePayload {
|
|
|
942
968
|
call_state: SignalingCallStates;
|
|
943
969
|
direction: CallDirection;
|
|
944
970
|
device: CallDevice;
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
971
|
+
/**
|
|
972
|
+
* Epoch timestamps for the call lifecycle. Optional because pre-answer
|
|
973
|
+
* states (e.g. `created`, `ringing`) do not have an `answer_time`/`end_time`
|
|
974
|
+
* and the backend reports them as `0` or omits them.
|
|
975
|
+
*/
|
|
976
|
+
start_time?: number;
|
|
977
|
+
answer_time?: number;
|
|
978
|
+
end_time?: number;
|
|
948
979
|
room_session_id: string;
|
|
980
|
+
/** The peer (remote) call this call is connected to, if any. */
|
|
981
|
+
peer?: CallStateRelatedCall;
|
|
982
|
+
/** Application-defined tag associated with the call. */
|
|
983
|
+
tag?: string;
|
|
949
984
|
}
|
|
950
985
|
interface CallPlayPayload {
|
|
951
986
|
control_id: string;
|
|
@@ -1491,6 +1526,8 @@ interface MemberCapabilities {
|
|
|
1491
1526
|
readonly meta: boolean;
|
|
1492
1527
|
readonly remove: boolean;
|
|
1493
1528
|
readonly audioFlags: boolean;
|
|
1529
|
+
readonly denoise: boolean;
|
|
1530
|
+
readonly lowbitrate: boolean;
|
|
1494
1531
|
}
|
|
1495
1532
|
/**
|
|
1496
1533
|
* Call-level capabilities state
|
|
@@ -1844,6 +1881,8 @@ declare class Participant extends Destroyable implements CallParticipant {
|
|
|
1844
1881
|
get addressId(): string | undefined;
|
|
1845
1882
|
/** Server node ID for this participant, or `undefined` if not available. */
|
|
1846
1883
|
get nodeId(): string | undefined;
|
|
1884
|
+
/** Call ID for this participant's leg, or `undefined` if not available. */
|
|
1885
|
+
get callId(): string | undefined;
|
|
1847
1886
|
/** @internal */
|
|
1848
1887
|
get value(): Partial<Member>;
|
|
1849
1888
|
/** Toggles the deafened state (mutes/unmutes incoming audio). */
|
|
@@ -1868,6 +1907,7 @@ declare class Participant extends Destroyable implements CallParticipant {
|
|
|
1868
1907
|
toggleAudioInputAutoGain(): Promise<void>;
|
|
1869
1908
|
/** Toggles noise suppression on the audio input. */
|
|
1870
1909
|
toggleNoiseSuppression(): Promise<void>;
|
|
1910
|
+
/** Toggles low-bitrate mode for this participant's media. */
|
|
1871
1911
|
toggleLowbitrate(): Promise<void>;
|
|
1872
1912
|
/**
|
|
1873
1913
|
* Adjusts the **conference-only** microphone energy gate / sensitivity level
|
|
@@ -1908,6 +1948,14 @@ declare class Participant extends Destroyable implements CallParticipant {
|
|
|
1908
1948
|
setAudioOutputVolume(value: number): Promise<void>;
|
|
1909
1949
|
/**
|
|
1910
1950
|
* Sets the participant's position in the video layout.
|
|
1951
|
+
*
|
|
1952
|
+
* Requires the `member.position` capability. The gateway keys positions by the
|
|
1953
|
+
* **target member's own** `call_id`/`node_id` (see issue #19400 and the legacy
|
|
1954
|
+
* `setPositions` implementation), so this sends the participant's own call
|
|
1955
|
+
* context — matching {@link Participant.remove}. A resolved promise does not
|
|
1956
|
+
* guarantee a visible change: the backend silently returns `200` (no-op) for
|
|
1957
|
+
* non-conference targets.
|
|
1958
|
+
*
|
|
1911
1959
|
* @param value - The {@link VideoPosition} to assign (e.g. `'auto'`, `'reserved-0'`).
|
|
1912
1960
|
*/
|
|
1913
1961
|
setPosition(value: VideoPosition): Promise<void>;
|
|
@@ -2081,6 +2129,7 @@ interface CallParticipant {
|
|
|
2081
2129
|
readonly userId: string | undefined;
|
|
2082
2130
|
readonly addressId: string | undefined;
|
|
2083
2131
|
readonly nodeId: string | undefined;
|
|
2132
|
+
readonly callId: string | undefined;
|
|
2084
2133
|
readonly isTalking: boolean;
|
|
2085
2134
|
readonly position: LayoutLayer | undefined;
|
|
2086
2135
|
readonly isAudience: boolean;
|
|
@@ -3095,7 +3144,34 @@ declare class ClientSessionManager extends Destroyable implements SessionState {
|
|
|
3095
3144
|
private get authentication();
|
|
3096
3145
|
connect(): Promise<void>;
|
|
3097
3146
|
private handleAuthenticationError;
|
|
3147
|
+
/**
|
|
3148
|
+
* Clear the resume state (authorization_state + protocol) only.
|
|
3149
|
+
*
|
|
3150
|
+
* This is the stale-auth-state recovery helper used by handleAuthError:
|
|
3151
|
+
* the server rejected a reconnect, so the resume state is discarded and a
|
|
3152
|
+
* fresh connect follows. Attach records are deliberately preserved — the
|
|
3153
|
+
* session lives on through the reconnect and reattachCalls() needs the
|
|
3154
|
+
* stored call references afterwards. Do NOT add detachAll() here.
|
|
3155
|
+
*
|
|
3156
|
+
* For public teardown (disconnect/destroy), use {@link teardownSessionState}
|
|
3157
|
+
* instead, which clears the attach records as well.
|
|
3158
|
+
*/
|
|
3098
3159
|
cleanupStoredConnectionParams(): Promise<void>;
|
|
3160
|
+
/**
|
|
3161
|
+
* Public-teardown helper for disconnect()/destroy(). Clears the resume
|
|
3162
|
+
* state (authorization_state + protocol) AND the attach records as one
|
|
3163
|
+
* atomic unit.
|
|
3164
|
+
*
|
|
3165
|
+
* The two stores are coupled: the backend only honors attach records
|
|
3166
|
+
* within the session identified by the resume state, so ending the
|
|
3167
|
+
* session must clear both. Clearing one without the other strands records
|
|
3168
|
+
* no future session can honor (disconnect) or revives a session the
|
|
3169
|
+
* developer explicitly ended (destroy).
|
|
3170
|
+
*
|
|
3171
|
+
* Distinct from {@link cleanupStoredConnectionParams}, which keeps the
|
|
3172
|
+
* attach records for the stale-auth-state recovery path.
|
|
3173
|
+
*/
|
|
3174
|
+
teardownSessionState(): Promise<void>;
|
|
3099
3175
|
protected updateAuthState(authorization_state: string): Promise<void>;
|
|
3100
3176
|
reauthenticate(token: string, dpopToken?: string, options?: {
|
|
3101
3177
|
clientBound?: boolean;
|
|
@@ -3280,6 +3356,60 @@ declare class ClientSessionWrapper implements SessionState {
|
|
|
3280
3356
|
get calls(): Call[];
|
|
3281
3357
|
}
|
|
3282
3358
|
//#endregion
|
|
3359
|
+
//#region src/core/types/warnings.types.d.ts
|
|
3360
|
+
/**
|
|
3361
|
+
* Non-fatal warning emitted via {@link SignalWire.warnings$ | client.warnings$}.
|
|
3362
|
+
*
|
|
3363
|
+
* Use to detect SDK behaviors that affect session liveness or developer-facing
|
|
3364
|
+
* contracts but do not warrant disconnection. Discriminated by `code`.
|
|
3365
|
+
*
|
|
3366
|
+
* Existing consumers of `errors$` are NOT notified — `warnings$` is a separate
|
|
3367
|
+
* channel so application code can react to warnings without triggering
|
|
3368
|
+
* error-handling code paths (e.g., disconnect cascades, user-facing toasts).
|
|
3369
|
+
*/
|
|
3370
|
+
type SDKWarning = CredentialRefreshFallbackWarning | CredentialNoRefreshHandlerWarning;
|
|
3371
|
+
/**
|
|
3372
|
+
* Diagnostic detail for {@link CredentialRefreshFallbackWarning}. Stable
|
|
3373
|
+
* values, but treat unknown strings as "fell back for an unspecified cause" —
|
|
3374
|
+
* do not branch on this value for control flow. New values may be added in
|
|
3375
|
+
* future releases.
|
|
3376
|
+
*/
|
|
3377
|
+
type CredentialRefreshFallbackReason = 'no-scope' | 'no-dpop-support' | 'endpoint-failed' | 'activation-timeout' | (string & {});
|
|
3378
|
+
/**
|
|
3379
|
+
* Emitted when the SDK falls back to the developer-provided
|
|
3380
|
+
* {@link CredentialProvider.refresh} because the Client Bound SAT path
|
|
3381
|
+
* could not take over.
|
|
3382
|
+
*
|
|
3383
|
+
* Common causes:
|
|
3384
|
+
* - The minted SAT lacks `sat:refresh` scope (`reason: 'no-scope'`).
|
|
3385
|
+
* - The `/devices/token` exchange failed transiently (`reason: 'endpoint-failed'`).
|
|
3386
|
+
*
|
|
3387
|
+
* Subscribe to this warning to detect:
|
|
3388
|
+
* - SDKs running with plain SATs that rely on developer-managed refresh
|
|
3389
|
+
* - Deployments expected to use bound tokens that silently downgraded to bearer
|
|
3390
|
+
* (a security-relevant signal for fleet observability)
|
|
3391
|
+
*/
|
|
3392
|
+
interface CredentialRefreshFallbackWarning {
|
|
3393
|
+
code: 'credential_refresh_fallback';
|
|
3394
|
+
source: 'CredentialProvider';
|
|
3395
|
+
reason: CredentialRefreshFallbackReason;
|
|
3396
|
+
message: string;
|
|
3397
|
+
}
|
|
3398
|
+
/**
|
|
3399
|
+
* Emitted when a credential has an `expiry_at` but the provider supplies no
|
|
3400
|
+
* `refresh()` handler. The session will terminate at expiry with no fallback.
|
|
3401
|
+
*
|
|
3402
|
+
* Implementors who want long-lived sessions must provide a `refresh()` handler
|
|
3403
|
+
* or mint tokens with the `sat:refresh` scope (Client Bound SAT path).
|
|
3404
|
+
*/
|
|
3405
|
+
interface CredentialNoRefreshHandlerWarning {
|
|
3406
|
+
code: 'credential_no_refresh_handler';
|
|
3407
|
+
source: 'CredentialProvider';
|
|
3408
|
+
message: string;
|
|
3409
|
+
/** Token expiry timestamp (epoch milliseconds). */
|
|
3410
|
+
expiresAt: number;
|
|
3411
|
+
}
|
|
3412
|
+
//#endregion
|
|
3283
3413
|
//#region src/utils/logger.d.ts
|
|
3284
3414
|
/** Log level names supported by the SDK. */
|
|
3285
3415
|
type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'silent';
|
|
@@ -3353,8 +3483,12 @@ interface SignalWireOptions {
|
|
|
3353
3483
|
* When `false` (default), session data lives in `sessionStorage` and is
|
|
3354
3484
|
* lost on reload.
|
|
3355
3485
|
*
|
|
3356
|
-
*
|
|
3357
|
-
* (
|
|
3486
|
+
* Both {@link SignalWire.disconnect | disconnect()} and
|
|
3487
|
+
* {@link SignalWire.destroy | destroy()} end the session and clear the
|
|
3488
|
+
* persisted resume state and attach records; credentials and device
|
|
3489
|
+
* preferences survive. Use `resetToDefaults()` for a full wipe, or
|
|
3490
|
+
* `unregister()` to temporarily stop receiving inbound calls while keeping
|
|
3491
|
+
* the session alive.
|
|
3358
3492
|
*/
|
|
3359
3493
|
persistSession?: boolean;
|
|
3360
3494
|
/** Custom storage implementation for persistence. */
|
|
@@ -3423,10 +3557,10 @@ declare class SignalWire extends Destroyable implements DeviceController {
|
|
|
3423
3557
|
private _isConnected$;
|
|
3424
3558
|
private _isRegistered$;
|
|
3425
3559
|
private _errors$;
|
|
3560
|
+
private _warnings$;
|
|
3426
3561
|
private _options;
|
|
3427
|
-
private _refreshTimerId?;
|
|
3428
3562
|
private _dpopManager?;
|
|
3429
|
-
private
|
|
3563
|
+
private _refreshCoordinator?;
|
|
3430
3564
|
private _credentialProvider?;
|
|
3431
3565
|
private _deps;
|
|
3432
3566
|
private _networkMonitor?;
|
|
@@ -3454,12 +3588,6 @@ declare class SignalWire extends Destroyable implements DeviceController {
|
|
|
3454
3588
|
*/
|
|
3455
3589
|
private resolveCredentials;
|
|
3456
3590
|
private validateCredentials;
|
|
3457
|
-
/**
|
|
3458
|
-
* Schedules credential refresh with exponential backoff retry on failure.
|
|
3459
|
-
* On success, resets attempt counter and schedules the next refresh.
|
|
3460
|
-
* After exhausting retries, emits TokenRefreshError and disconnects.
|
|
3461
|
-
*/
|
|
3462
|
-
private scheduleCredentialRefresh;
|
|
3463
3591
|
/** Persist credential to localStorage when persistSession is enabled. */
|
|
3464
3592
|
private persistCredential;
|
|
3465
3593
|
private init;
|
|
@@ -3546,6 +3674,17 @@ declare class SignalWire extends Destroyable implements DeviceController {
|
|
|
3546
3674
|
get ready$(): Observable<boolean>;
|
|
3547
3675
|
/** Observable stream of errors from transport, authentication, and devices. */
|
|
3548
3676
|
get errors$(): Observable<Error>;
|
|
3677
|
+
/**
|
|
3678
|
+
* Observable stream of non-fatal SDK warnings.
|
|
3679
|
+
*
|
|
3680
|
+
* Subscribe to detect SDK behaviors that affect session liveness or developer-facing
|
|
3681
|
+
* contracts but do not warrant disconnection — e.g., a fallback from Client Bound SAT
|
|
3682
|
+
* refresh to the developer-provided `refresh()` because the SAT lacks `sat:refresh`
|
|
3683
|
+
* scope. Discriminated by `code`.
|
|
3684
|
+
*
|
|
3685
|
+
* Independent from {@link errors$}: existing error consumers are not notified.
|
|
3686
|
+
*/
|
|
3687
|
+
get warnings$(): Observable<SDKWarning>;
|
|
3549
3688
|
/** Platform WebRTC capabilities detected at construction time. */
|
|
3550
3689
|
get platformCapabilities(): PlatformCapabilities;
|
|
3551
3690
|
/** Observable that emits when the SDK auto-switches a device. */
|
|
@@ -3563,6 +3702,14 @@ declare class SignalWire extends Destroyable implements DeviceController {
|
|
|
3563
3702
|
/**
|
|
3564
3703
|
* Disconnects the WebSocket and tears down the current session.
|
|
3565
3704
|
*
|
|
3705
|
+
* Ends the session identified by the protocol and clears its persisted
|
|
3706
|
+
* resume state (`authorization_state` + protocol) and attach records
|
|
3707
|
+
* together — a later {@link connect} with the same credentials starts a
|
|
3708
|
+
* fresh session and cannot reattach to the ended session's calls.
|
|
3709
|
+
* Credentials and device preferences are preserved. To temporarily stop
|
|
3710
|
+
* receiving inbound calls while keeping the session alive, use
|
|
3711
|
+
* `unregister()` instead.
|
|
3712
|
+
*
|
|
3566
3713
|
* The client can be reconnected by calling {@link connect} again,
|
|
3567
3714
|
* which creates a fresh transport and session.
|
|
3568
3715
|
*/
|
|
@@ -3744,7 +3891,15 @@ declare class SignalWire extends Destroyable implements DeviceController {
|
|
|
3744
3891
|
* attached call IDs, and all SDK storage keys, then re-enumerates devices.
|
|
3745
3892
|
*/
|
|
3746
3893
|
resetToDefaults(): Promise<void>;
|
|
3747
|
-
/**
|
|
3894
|
+
/**
|
|
3895
|
+
* Destroys the client, clearing timers and releasing all resources.
|
|
3896
|
+
*
|
|
3897
|
+
* Intentionally destroying the client ends its session: the resume state
|
|
3898
|
+
* (`authorization_state` + protocol) and the attach records are both
|
|
3899
|
+
* cleared. Credentials and device preferences are preserved — use
|
|
3900
|
+
* {@link resetToDefaults} for a full wipe. To temporarily stop receiving
|
|
3901
|
+
* inbound calls while keeping the session alive, use `unregister()`.
|
|
3902
|
+
*/
|
|
3748
3903
|
destroy(): void;
|
|
3749
3904
|
}
|
|
3750
3905
|
//#endregion
|
|
@@ -4622,10 +4777,21 @@ declare class WebRTCCall extends Destroyable implements CallManager {
|
|
|
4622
4777
|
/** Observable that emits `true` when answered, `false` when rejected. */
|
|
4623
4778
|
get answered$(): Observable<boolean>;
|
|
4624
4779
|
/**
|
|
4625
|
-
* Sets the call layout and participant positions.
|
|
4780
|
+
* Sets the call layout and, optionally, individual participant positions.
|
|
4781
|
+
*
|
|
4782
|
+
* The gateway `call.layout.set` DTO has **no** `positions` member, so when
|
|
4783
|
+
* `positions` is provided this method issues a `call.member.position.set`
|
|
4784
|
+
* request per member (via {@link Participant.setPosition}, which keys each
|
|
4785
|
+
* position by that member's own call context) alongside `call.layout.set`
|
|
4786
|
+
* (issue #19400, Flag #6).
|
|
4787
|
+
*
|
|
4788
|
+
* **These operations are NOT atomic.** The layout is applied first, then each
|
|
4789
|
+
* member position sequentially, so members may briefly flash into their
|
|
4790
|
+
* default slots before being moved to the requested positions.
|
|
4626
4791
|
*
|
|
4627
4792
|
* @param layout - Layout name (must be one of {@link layouts}).
|
|
4628
|
-
* @param positions -
|
|
4793
|
+
* @param positions - Optional map of member IDs to {@link VideoPosition} values.
|
|
4794
|
+
* When omitted or empty, only the layout is changed.
|
|
4629
4795
|
* @throws {InvalidParams} If the layout is not in the available {@link layouts}.
|
|
4630
4796
|
*
|
|
4631
4797
|
* @example
|
|
@@ -4635,7 +4801,7 @@ declare class WebRTCCall extends Destroyable implements CallManager {
|
|
|
4635
4801
|
* });
|
|
4636
4802
|
* ```
|
|
4637
4803
|
*/
|
|
4638
|
-
setLayout(layout: string, positions
|
|
4804
|
+
setLayout(layout: string, positions?: Record<string, VideoPosition>): Promise<void>;
|
|
4639
4805
|
/**
|
|
4640
4806
|
* Transfers the call to another destination.
|
|
4641
4807
|
*
|
|
@@ -4739,5 +4905,5 @@ declare const version: string;
|
|
|
4739
4905
|
*/
|
|
4740
4906
|
declare const ready: boolean;
|
|
4741
4907
|
//#endregion
|
|
4742
|
-
export { Address, type AddressHistory, type AudioConstraintsEvent, type AuthenticateContext, type Call, type CallAddress, type CallCapabilitiesState, CallCreateError, type CallDiagnosticSummary, type CallDirection, type CallError, type CallErrorKind, type NetworkIssue as CallNetworkIssue, type NetworkIssue, type NetworkMetrics as CallNetworkMetrics, type NetworkMetrics, type CallOptions, type CallParticipant, type CallSelfParticipant, type CallState, type CallStatus, type Capability, ClientPreferences, CollectionFetchError, type ConstraintFallbackEvent, type CredentialProvider, DPoPInitError, type DebugOptions, type DeviceController, type DeviceRecoveryEvent, DeviceTokenError, type DiagnosticEvent, type DialOptions, type Directory, EmbedTokenCredentialProvider, type ExecuteMethod, InvalidCredentialsError, type JSONRPCErrorResponse, type JSONRPCRequest, type JSONRPCResponse, type JSONRPCSuccessResponse, type LayoutLayer, type LogLevel, type MediaDirection, type MediaDirections, type MediaOptions, type MediaParamsEvent, MediaTrackError, type MemberCapabilities, MessageParseError, type NodeSocketAdapter, type OnOffCapability, OverconstrainedFallbackError, Participant, type PendingRPCOptions, type PermissionResult, type PlatformCapabilities, PreflightError, type PreflightOptions, type PreflightResult, type QualityLevel, RecoveryError, type RecoveryEvent, type RecoveryState, type ResilienceCallStatus, type SATClaims, type SDKCredential, type SDKLogger, type ScreenShareStatus, type SelectDeviceOptions, SelfCapabilities, SelfParticipant, type SessionDiagnostics, type SessionState, SignalWire, type SignalWireOptions, StaticCredentialProvider, type Storage, type StoredDevicePreference, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, User, type UserPresence, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, getLogger, isSelfParticipant, ready, setDebugOptions, setLogLevel, setLogger, version };
|
|
4908
|
+
export { Address, type AddressHistory, type AudioConstraintsEvent, type AuthenticateContext, type Call, type CallAddress, type CallCapabilitiesState, CallCreateError, type CallDiagnosticSummary, type CallDirection, type CallError, type CallErrorKind, type NetworkIssue as CallNetworkIssue, type NetworkIssue, type NetworkMetrics as CallNetworkMetrics, type NetworkMetrics, type CallOptions, type CallParticipant, type CallSelfParticipant, type CallState, type CallStatus, type Capability, ClientPreferences, CollectionFetchError, type ConstraintFallbackEvent, type CredentialNoRefreshHandlerWarning, type CredentialProvider, type CredentialRefreshFallbackReason, type CredentialRefreshFallbackWarning, DPoPInitError, type DebugOptions, type DeviceController, type DeviceRecoveryEvent, DeviceTokenError, type DiagnosticEvent, type DialOptions, type Directory, EmbedTokenCredentialProvider, type ExecuteMethod, InvalidCredentialsError, type JSONRPCErrorResponse, type JSONRPCRequest, type JSONRPCResponse, type JSONRPCSuccessResponse, type LayoutLayer, type LogLevel, type MediaDirection, type MediaDirections, type MediaOptions, type MediaParamsEvent, MediaTrackError, type MemberCapabilities, MessageParseError, type NodeSocketAdapter, type OnOffCapability, OverconstrainedFallbackError, Participant, type PendingRPCOptions, type PermissionResult, type PlatformCapabilities, PreflightError, type PreflightOptions, type PreflightResult, type QualityLevel, RecoveryError, type RecoveryEvent, type RecoveryState, type ResilienceCallStatus, type SATClaims, type SDKCredential, type SDKLogger, type SDKWarning, type ScreenShareStatus, type SelectDeviceOptions, SelfCapabilities, SelfParticipant, type SessionDiagnostics, type SessionState, SignalWire, type SignalWireOptions, StaticCredentialProvider, type Storage, type StoredDevicePreference, type TextMessage, TokenRefreshError, type TransferOptions, UnexpectedError, User, type UserPresence, VertoPongError, type VideoPosition, type WebRTCApiProvider, WebRTCCall, type WebRTCMediaDevices, type WebSocketAdapter, embeddableCall, getLogger, isSelfParticipant, ready, setDebugOptions, setLogLevel, setLogger, version };
|
|
4743
4909
|
//# sourceMappingURL=index.d.cts.map
|