@signalwire/js 4.0.0-dev-20260410155733 → 4.0.0-dev-20260410161919
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 +25 -27
- package/dist/browser.mjs.map +1 -1
- package/dist/browser.umd.js +25 -27
- package/dist/browser.umd.js.map +1 -1
- package/dist/index.cjs +25 -27
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +25 -27
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1319,7 +1319,7 @@ var NavigatorDeviceController = class extends Destroyable {
|
|
|
1319
1319
|
enableAudioInput() {
|
|
1320
1320
|
if (this._audioInputDisabled$.value) {
|
|
1321
1321
|
this._audioInputDisabled$.next(false);
|
|
1322
|
-
const restored = this._lastAudioInputBeforeDisable ?? this.audioInputDevices[0]
|
|
1322
|
+
const restored = this._lastAudioInputBeforeDisable ?? this.audioInputDevices[0];
|
|
1323
1323
|
this._selectedDevicesState$.next({
|
|
1324
1324
|
...this._selectedDevicesState$.value,
|
|
1325
1325
|
audioinput: restored
|
|
@@ -1340,7 +1340,7 @@ var NavigatorDeviceController = class extends Destroyable {
|
|
|
1340
1340
|
enableVideoInput() {
|
|
1341
1341
|
if (this._videoInputDisabled$.value) {
|
|
1342
1342
|
this._videoInputDisabled$.next(false);
|
|
1343
|
-
const restored = this._lastVideoInputBeforeDisable ?? this.videoInputDevices[0]
|
|
1343
|
+
const restored = this._lastVideoInputBeforeDisable ?? this.videoInputDevices[0];
|
|
1344
1344
|
this._selectedDevicesState$.next({
|
|
1345
1345
|
...this._selectedDevicesState$.value,
|
|
1346
1346
|
videoinput: restored
|
|
@@ -1698,10 +1698,10 @@ var StorageManager = class {
|
|
|
1698
1698
|
//#region src/containers/DependencyContainer.ts
|
|
1699
1699
|
var DependencyContainer = class {
|
|
1700
1700
|
constructor() {
|
|
1701
|
+
this.persistSession = false;
|
|
1701
1702
|
this._webSocketConstructor = typeof WebSocket !== "undefined" ? WebSocket : void 0;
|
|
1702
1703
|
this._baseURL = this.apiHost;
|
|
1703
1704
|
this._credential = {};
|
|
1704
|
-
this.persistSession = false;
|
|
1705
1705
|
}
|
|
1706
1706
|
get subscriberId() {
|
|
1707
1707
|
return this.subscriber.id;
|
|
@@ -1839,7 +1839,7 @@ const computeJwkThumbprint = async (jwk) => {
|
|
|
1839
1839
|
});
|
|
1840
1840
|
return base64url(await crypto.subtle.digest("SHA-256", new TextEncoder().encode(canonical)));
|
|
1841
1841
|
};
|
|
1842
|
-
function openDpopDB() {
|
|
1842
|
+
async function openDpopDB() {
|
|
1843
1843
|
return new Promise((resolve, reject) => {
|
|
1844
1844
|
const request = indexedDB.open(DPOP_DB_NAME, DPOP_DB_VERSION);
|
|
1845
1845
|
request.onupgradeneeded = () => {
|
|
@@ -1847,7 +1847,7 @@ function openDpopDB() {
|
|
|
1847
1847
|
if (!db.objectStoreNames.contains(DPOP_STORE_NAME)) db.createObjectStore(DPOP_STORE_NAME);
|
|
1848
1848
|
};
|
|
1849
1849
|
request.onsuccess = () => resolve(request.result);
|
|
1850
|
-
request.onerror = () => reject(request.error);
|
|
1850
|
+
request.onerror = () => reject(request.error ?? /* @__PURE__ */ new Error("Failed to open IndexedDB"));
|
|
1851
1851
|
});
|
|
1852
1852
|
}
|
|
1853
1853
|
async function loadKeyPairFromDB() {
|
|
@@ -1857,7 +1857,7 @@ async function loadKeyPairFromDB() {
|
|
|
1857
1857
|
const tx = db.transaction(DPOP_STORE_NAME, "readonly");
|
|
1858
1858
|
const req = tx.objectStore(DPOP_STORE_NAME).get(DPOP_KEY_ID);
|
|
1859
1859
|
req.onsuccess = () => resolve(req.result ?? null);
|
|
1860
|
-
req.onerror = () => reject(req.error);
|
|
1860
|
+
req.onerror = () => reject(req.error ?? /* @__PURE__ */ new Error("Failed to load key pair from IndexedDB"));
|
|
1861
1861
|
tx.oncomplete = () => db.close();
|
|
1862
1862
|
});
|
|
1863
1863
|
} catch (error) {
|
|
@@ -1877,7 +1877,7 @@ async function saveKeyPairToDB(keyPair) {
|
|
|
1877
1877
|
};
|
|
1878
1878
|
tx.onerror = () => {
|
|
1879
1879
|
db.close();
|
|
1880
|
-
reject(tx.error);
|
|
1880
|
+
reject(tx.error ?? /* @__PURE__ */ new Error("Failed to save key pair to IndexedDB"));
|
|
1881
1881
|
};
|
|
1882
1882
|
});
|
|
1883
1883
|
} catch (error) {
|
|
@@ -1896,7 +1896,7 @@ async function deleteKeyPairFromDB() {
|
|
|
1896
1896
|
};
|
|
1897
1897
|
tx.onerror = () => {
|
|
1898
1898
|
db.close();
|
|
1899
|
-
reject(tx.error);
|
|
1899
|
+
reject(tx.error ?? /* @__PURE__ */ new Error("Failed to delete key pair from IndexedDB"));
|
|
1900
1900
|
};
|
|
1901
1901
|
});
|
|
1902
1902
|
} catch (error) {
|
|
@@ -2276,7 +2276,7 @@ function detectScreenShareAudio() {
|
|
|
2276
2276
|
* Safely retrieves navigator.mediaDevices, returning null if unavailable.
|
|
2277
2277
|
*/
|
|
2278
2278
|
function getNavigatorMediaDevices() {
|
|
2279
|
-
if (typeof navigator !== "undefined"
|
|
2279
|
+
if (typeof navigator !== "undefined") return navigator.mediaDevices;
|
|
2280
2280
|
return null;
|
|
2281
2281
|
}
|
|
2282
2282
|
|
|
@@ -5298,7 +5298,7 @@ var RTCPeerConnectionController = class extends Destroyable {
|
|
|
5298
5298
|
const preferredAudioCodecs = this.options.preferredAudioCodecs ?? PreferencesContainer.instance.preferredAudioCodecs;
|
|
5299
5299
|
const preferredVideoCodecs = this.options.preferredVideoCodecs ?? PreferencesContainer.instance.preferredVideoCodecs;
|
|
5300
5300
|
const stereo = this.options.stereo ?? PreferencesContainer.instance.stereoAudio;
|
|
5301
|
-
if (preferredAudioCodecs
|
|
5301
|
+
if (preferredAudioCodecs.length > 0 || preferredVideoCodecs.length > 0) {
|
|
5302
5302
|
result = setCodecPreferences(result, preferredAudioCodecs, preferredVideoCodecs);
|
|
5303
5303
|
logger$14.debug("[RTCPeerConnectionController] Applied codec preferences to SDP", {
|
|
5304
5304
|
preferredAudioCodecs,
|
|
@@ -5540,11 +5540,9 @@ var RTCPeerConnectionController = class extends Destroyable {
|
|
|
5540
5540
|
oldTrack.stop();
|
|
5541
5541
|
this.localStreamController.removeTrack(trackId);
|
|
5542
5542
|
const newTrack = (await this.getUserMedia({ audio: mergedConstraints })).getAudioTracks()[0];
|
|
5543
|
-
|
|
5544
|
-
|
|
5545
|
-
|
|
5546
|
-
logger$14.debug(`[RTCPeerConnectionController] Audio track replaced for server-pushed params. New track: ${newTrack.id}`);
|
|
5547
|
-
}
|
|
5543
|
+
await sender.replaceTrack(newTrack);
|
|
5544
|
+
this.localStreamController.addTrack(newTrack);
|
|
5545
|
+
logger$14.debug(`[RTCPeerConnectionController] Audio track replaced for server-pushed params. New track: ${newTrack.id}`);
|
|
5548
5546
|
}
|
|
5549
5547
|
}
|
|
5550
5548
|
/**
|
|
@@ -5838,7 +5836,7 @@ var WebRTCVertoManager = class extends VertoManager {
|
|
|
5838
5836
|
logger$13.warn("[WebRTCManager] No peer connection for keyframe request");
|
|
5839
5837
|
return;
|
|
5840
5838
|
}
|
|
5841
|
-
const videoReceiver = pc.getReceivers().find((r) => r.track
|
|
5839
|
+
const videoReceiver = pc.getReceivers().find((r) => r.track.kind === "video");
|
|
5842
5840
|
if (!videoReceiver) {
|
|
5843
5841
|
logger$13.warn("[WebRTCManager] No video receiver for keyframe request");
|
|
5844
5842
|
return;
|
|
@@ -5914,7 +5912,7 @@ var WebRTCVertoManager = class extends VertoManager {
|
|
|
5914
5912
|
try {
|
|
5915
5913
|
const pc = controller.peerConnection;
|
|
5916
5914
|
if (!pc) continue;
|
|
5917
|
-
const videoReceiver = pc.getReceivers().find((r) => r.track
|
|
5915
|
+
const videoReceiver = pc.getReceivers().find((r) => r.track.kind === "video");
|
|
5918
5916
|
if (!videoReceiver) continue;
|
|
5919
5917
|
if (typeof videoReceiver.requestKeyFrame === "function") {
|
|
5920
5918
|
videoReceiver.requestKeyFrame();
|
|
@@ -7578,10 +7576,10 @@ var WebRTCCall = class extends Destroyable {
|
|
|
7578
7576
|
logger$10.debug("[Call] Recovery manager failed to enable video");
|
|
7579
7577
|
});
|
|
7580
7578
|
},
|
|
7581
|
-
isNegotiating: () => this.vertoManager.mainPeerConnection
|
|
7579
|
+
isNegotiating: () => this.vertoManager.mainPeerConnection.isNegotiating,
|
|
7582
7580
|
isWebSocketConnected: () => this._lastMergedStatus !== "disconnected",
|
|
7583
7581
|
isCallConnected: () => this._lastMergedStatus === "connected",
|
|
7584
|
-
getPeerConnectionState: () => pc.connectionState
|
|
7582
|
+
getPeerConnectionState: () => pc.connectionState
|
|
7585
7583
|
}, {
|
|
7586
7584
|
debounceTimeMs: prefs.recoveryDebounceTime,
|
|
7587
7585
|
cooldownMs: prefs.recoveryCooldown,
|
|
@@ -8792,7 +8790,7 @@ var ClientSessionManager = class extends Destroyable {
|
|
|
8792
8790
|
*/
|
|
8793
8791
|
async handleVertoAttach(attach) {
|
|
8794
8792
|
const { callID } = attach;
|
|
8795
|
-
if (this._calls$.value
|
|
8793
|
+
if (callID in this._calls$.value) {
|
|
8796
8794
|
logger$7.debug(`[Session] Verto attach for existing call ${callID}, deferring to per-call handler`);
|
|
8797
8795
|
return;
|
|
8798
8796
|
}
|
|
@@ -9490,12 +9488,12 @@ var TransportManager = class extends Destroyable {
|
|
|
9490
9488
|
this.discardStaleEvents = () => {
|
|
9491
9489
|
return (0, rxjs.filter)((message) => {
|
|
9492
9490
|
if (!isSignalwireRequest(message)) return true;
|
|
9493
|
-
const eventChannel = message.params
|
|
9491
|
+
const eventChannel = message.params.event_channel;
|
|
9494
9492
|
if (!eventChannel) return true;
|
|
9495
9493
|
const currentProtocol = this._currentProtocol;
|
|
9496
9494
|
if (!currentProtocol) return true;
|
|
9497
9495
|
if (!eventChannel.includes(currentProtocol)) {
|
|
9498
|
-
const eventType = message.params.event_type
|
|
9496
|
+
const eventType = message.params.event_type;
|
|
9499
9497
|
logger$2.warn(`[Transport] Discarding stale event: ${eventType} (event_channel does not match current protocol)`);
|
|
9500
9498
|
return false;
|
|
9501
9499
|
}
|
|
@@ -9745,7 +9743,7 @@ var SignalWire = class extends Destroyable {
|
|
|
9745
9743
|
const cached = await this._deps.storage.getItem("sw:cached_credential", scope);
|
|
9746
9744
|
if (cached?.token) {
|
|
9747
9745
|
logger$1.debug(`[SignalWire] Using cached credential from ${scope}Storage`);
|
|
9748
|
-
return this.validateCredentials(void 0, cached);
|
|
9746
|
+
return await this.validateCredentials(void 0, cached);
|
|
9749
9747
|
}
|
|
9750
9748
|
} catch {}
|
|
9751
9749
|
throw new require_operators.InvalidCredentialsError("No credential provider and no cached session. Provide a CredentialProvider or enable persistSession with a prior login.");
|
|
@@ -9771,7 +9769,7 @@ var SignalWire = class extends Destroyable {
|
|
|
9771
9769
|
}
|
|
9772
9770
|
if (_credentials.expiry_at && credentialProvider?.refresh) {
|
|
9773
9771
|
const refreshFn = async () => {
|
|
9774
|
-
if (!credentialProvider
|
|
9772
|
+
if (!credentialProvider.refresh) throw new require_operators.InvalidCredentialsError("Credential provider does not support refresh");
|
|
9775
9773
|
return credentialProvider.refresh();
|
|
9776
9774
|
};
|
|
9777
9775
|
const refreshInterval = Math.max(_credentials.expiry_at - Date.now() - 5e3, 1e3);
|
|
@@ -10179,7 +10177,7 @@ var SignalWire = class extends Destroyable {
|
|
|
10179
10177
|
* ```
|
|
10180
10178
|
*/
|
|
10181
10179
|
async preflight(destination, options) {
|
|
10182
|
-
const iceServers = this._clientSession
|
|
10180
|
+
const iceServers = this._clientSession.iceServers ?? PreferencesContainer.instance.iceServers ?? [];
|
|
10183
10181
|
const isConnected = this._isConnected$.value;
|
|
10184
10182
|
return new PreflightRunner(this._deviceController, iceServers, isConnected, 0, async (dest, opts) => this.dial(dest, opts), options).run(destination);
|
|
10185
10183
|
}
|
|
@@ -10396,8 +10394,8 @@ var SignalWire = class extends Destroyable {
|
|
|
10396
10394
|
this._deviceTokenManager?.destroy();
|
|
10397
10395
|
this._dpopManager?.destroy();
|
|
10398
10396
|
if (this._attachManager) this._attachManager.detachAll();
|
|
10399
|
-
this._transport
|
|
10400
|
-
this._clientSession
|
|
10397
|
+
this._transport.destroy();
|
|
10398
|
+
this._clientSession.destroy();
|
|
10401
10399
|
try {
|
|
10402
10400
|
this._networkMonitor?.destroy();
|
|
10403
10401
|
} catch {}
|