@whereby.com/media 2.8.3 → 2.8.5
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/index.cjs +59 -48
- package/dist/index.d.cts +321 -293
- package/dist/index.d.mts +321 -293
- package/dist/index.d.ts +321 -293
- package/dist/index.mjs +59 -48
- package/dist/legacy-esm.js +59 -48
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1650,8 +1650,7 @@ class ServerSocket {
|
|
|
1650
1650
|
if (this._serverSideDisconnectDurationLimitOn)
|
|
1651
1651
|
this._keepAliveManager = new KeepAliveManager(this);
|
|
1652
1652
|
this._socket.on("room_joined", (payload) => {
|
|
1653
|
-
|
|
1654
|
-
if (!error) {
|
|
1653
|
+
if (!("error" in payload)) {
|
|
1655
1654
|
this.joinRoomFinished = true;
|
|
1656
1655
|
}
|
|
1657
1656
|
});
|
|
@@ -2020,7 +2019,7 @@ const adapter$5 = (_a$5 = adapterRaw.default) !== null && _a$5 !== void 0 ? _a$5
|
|
|
2020
2019
|
const logger$8 = new Logger();
|
|
2021
2020
|
const browserName$2 = (_b$2 = adapter$5.browserDetails) === null || _b$2 === void 0 ? void 0 : _b$2.browser;
|
|
2022
2021
|
const browserVersion$1 = adapter$5.browserDetails.version;
|
|
2023
|
-
function setCodecPreferenceSDP(sdp, redOn) {
|
|
2022
|
+
function setCodecPreferenceSDP({ sdp, redOn, incrementAnalyticMetric }) {
|
|
2024
2023
|
var _a, _b;
|
|
2025
2024
|
try {
|
|
2026
2025
|
const sdpObject = sdpTransform__namespace.parse(sdp);
|
|
@@ -2058,7 +2057,10 @@ function setCodecPreferenceSDP(sdp, redOn) {
|
|
|
2058
2057
|
return newSdp;
|
|
2059
2058
|
}
|
|
2060
2059
|
catch (error) {
|
|
2060
|
+
incrementAnalyticMetric("P2PSetCodecPreferenceError");
|
|
2061
|
+
rtcStats.sendEvent("P2PSetCodecPreferenceError", { error });
|
|
2061
2062
|
logger$8.error("setCodecPreferenceSDP error:", error);
|
|
2063
|
+
return sdp;
|
|
2062
2064
|
}
|
|
2063
2065
|
}
|
|
2064
2066
|
function cleanSdp(sdp) {
|
|
@@ -2346,25 +2348,35 @@ class Session {
|
|
|
2346
2348
|
this.earlyIceCandidates = [];
|
|
2347
2349
|
});
|
|
2348
2350
|
}
|
|
2349
|
-
handleOffer(
|
|
2351
|
+
handleOffer(offer) {
|
|
2350
2352
|
if (!this.canModifyPeerConnection()) {
|
|
2351
2353
|
return new Promise((resolve) => {
|
|
2352
|
-
this.pending.push(() => this.handleOffer(
|
|
2354
|
+
this.pending.push(() => this.handleOffer(offer).then(resolve));
|
|
2353
2355
|
});
|
|
2354
2356
|
}
|
|
2355
2357
|
this.isOperationPending = true;
|
|
2356
|
-
let sdp =
|
|
2358
|
+
let sdp = offer.sdp;
|
|
2357
2359
|
sdp = filterMidExtension(sdp);
|
|
2358
2360
|
sdp = filterMsidSemantic(sdp);
|
|
2359
|
-
const desc = { type:
|
|
2361
|
+
const desc = { type: offer.type, sdp };
|
|
2360
2362
|
let answerToSignal;
|
|
2361
2363
|
return this._setRemoteDescription(desc)
|
|
2362
2364
|
.then(() => {
|
|
2363
2365
|
return this.pc.createAnswer();
|
|
2364
2366
|
})
|
|
2365
2367
|
.then((answer) => {
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
+
if (!answer.sdp) {
|
|
2369
|
+
this._incrementAnalyticMetric("P2PCreateAnswerNoSDP");
|
|
2370
|
+
rtcStats.sendEvent("P2PCreateAnswerNoSDP", {});
|
|
2371
|
+
throw new Error("SDP undefined while creating answer");
|
|
2372
|
+
}
|
|
2373
|
+
else {
|
|
2374
|
+
answerToSignal = {
|
|
2375
|
+
sdp: answer.sdp,
|
|
2376
|
+
type: answer.type,
|
|
2377
|
+
};
|
|
2378
|
+
return this.pc.setLocalDescription(answer);
|
|
2379
|
+
}
|
|
2368
2380
|
})
|
|
2369
2381
|
.then(() => {
|
|
2370
2382
|
return setVideoBandwidthUsingSetParameters(this.pc, this.bandwidth);
|
|
@@ -2619,8 +2631,8 @@ if (browserName$1 === "chrome") {
|
|
|
2619
2631
|
});
|
|
2620
2632
|
}
|
|
2621
2633
|
class P2pRtcManager {
|
|
2622
|
-
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features
|
|
2623
|
-
const { name, session, iceServers, turnServers,
|
|
2634
|
+
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features }) {
|
|
2635
|
+
const { name, session, iceServers, turnServers, mediaserverConfigTtlSeconds } = room;
|
|
2624
2636
|
this._selfId = selfId;
|
|
2625
2637
|
this._roomName = name;
|
|
2626
2638
|
this._roomSessionId = session && session.id;
|
|
@@ -2650,7 +2662,6 @@ class P2pRtcManager {
|
|
|
2650
2662
|
this.analytics.camTrackEndedCount++;
|
|
2651
2663
|
};
|
|
2652
2664
|
this._updateAndScheduleMediaServersRefresh({
|
|
2653
|
-
sfuServer,
|
|
2654
2665
|
iceServers: (iceServers === null || iceServers === void 0 ? void 0 : iceServers.iceServers) || [],
|
|
2655
2666
|
turnServers: turnServers || [],
|
|
2656
2667
|
mediaserverConfigTtlSeconds,
|
|
@@ -2685,13 +2696,16 @@ class P2pRtcManager {
|
|
|
2685
2696
|
P2PReplaceTrackSourceKindNotFound: 0,
|
|
2686
2697
|
P2PRemoveStreamNoPC: 0,
|
|
2687
2698
|
P2POnTrackNoStream: 0,
|
|
2699
|
+
P2PSetCodecPreferenceError: 0,
|
|
2700
|
+
P2PCreateOfferNoSDP: 0,
|
|
2701
|
+
P2PCreateAnswerNoSDP: 0,
|
|
2688
2702
|
};
|
|
2689
2703
|
}
|
|
2690
2704
|
numberOfPeerconnections() {
|
|
2691
2705
|
return Object.keys(this.peerConnections).length;
|
|
2692
2706
|
}
|
|
2693
2707
|
isInitializedWith({ selfId, roomName, isSfu }) {
|
|
2694
|
-
return this._selfId === selfId && this._roomName === roomName && isSfu
|
|
2708
|
+
return this._selfId === selfId && this._roomName === roomName && !isSfu;
|
|
2695
2709
|
}
|
|
2696
2710
|
supportsScreenShareAudio() {
|
|
2697
2711
|
return true;
|
|
@@ -2805,13 +2819,12 @@ class P2pRtcManager {
|
|
|
2805
2819
|
logger$6.warn("No RTCPeerConnection on SDP_OFFER", data);
|
|
2806
2820
|
return;
|
|
2807
2821
|
}
|
|
2808
|
-
const offer = this._transformIncomingSdp(data.message);
|
|
2809
2822
|
(_b = (_a = session
|
|
2810
|
-
.handleOffer(
|
|
2823
|
+
.handleOffer(data.message)
|
|
2811
2824
|
.then((answer) => {
|
|
2812
2825
|
this._emitServerEvent(RELAY_MESSAGES.SDP_ANSWER, {
|
|
2813
2826
|
receiverId: data.clientId,
|
|
2814
|
-
message:
|
|
2827
|
+
message: answer,
|
|
2815
2828
|
});
|
|
2816
2829
|
})).catch) === null || _b === void 0 ? void 0 : _b.call(_a, (e) => {
|
|
2817
2830
|
this.analytics.numPcOnOfferFailure++;
|
|
@@ -2824,15 +2837,13 @@ class P2pRtcManager {
|
|
|
2824
2837
|
logger$6.warn("No RTCPeerConnection on SDP_ANSWER", data);
|
|
2825
2838
|
return;
|
|
2826
2839
|
}
|
|
2827
|
-
|
|
2828
|
-
(_b = (_a = session.handleAnswer(answer)) === null || _a === void 0 ? void 0 : _a.catch) === null || _b === void 0 ? void 0 : _b.call(_a, (e) => {
|
|
2840
|
+
(_b = (_a = session.handleAnswer(data.message)) === null || _a === void 0 ? void 0 : _a.catch) === null || _b === void 0 ? void 0 : _b.call(_a, (e) => {
|
|
2829
2841
|
logger$6.warn("Could not set remote description from remote answer: ", e);
|
|
2830
2842
|
this.analytics.numPcOnAnswerFailure++;
|
|
2831
2843
|
});
|
|
2832
2844
|
}),
|
|
2833
2845
|
this._serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, (payload) => {
|
|
2834
|
-
|
|
2835
|
-
if (error || !this._wasScreenSharing) {
|
|
2846
|
+
if ("error" in payload || !this._wasScreenSharing) {
|
|
2836
2847
|
return;
|
|
2837
2848
|
}
|
|
2838
2849
|
const screenShareStreamId = Object.keys(this.localStreams).find((id) => id !== CAMERA_STREAM_ID);
|
|
@@ -2907,9 +2918,6 @@ class P2pRtcManager {
|
|
|
2907
2918
|
if (previousStatus === newStatus) {
|
|
2908
2919
|
return;
|
|
2909
2920
|
}
|
|
2910
|
-
if (session.peerConnectionId === this._selfId) {
|
|
2911
|
-
return;
|
|
2912
|
-
}
|
|
2913
2921
|
if (previousStatus === TYPES.CONNECTION_DISCONNECTED &&
|
|
2914
2922
|
newStatus === TYPES.CONNECTING) {
|
|
2915
2923
|
return;
|
|
@@ -3008,13 +3016,6 @@ class P2pRtcManager {
|
|
|
3008
3016
|
const streamIds = this._getNonLocalCameraStreamIds();
|
|
3009
3017
|
return streamIds.length === 0 ? null : this.localStreams[streamIds[0]];
|
|
3010
3018
|
}
|
|
3011
|
-
_transformIncomingSdp(original) {
|
|
3012
|
-
const sdp = original.sdp ? original.sdp : original.sdpU;
|
|
3013
|
-
return { type: original.type, sdp };
|
|
3014
|
-
}
|
|
3015
|
-
_transformOutgoingSdp(original) {
|
|
3016
|
-
return { type: original.type, sdpU: original.sdp, sdp: original.sdp };
|
|
3017
|
-
}
|
|
3018
3019
|
_createSession({ clientId, initialBandwidth, isOfferer, peerConnectionId, }) {
|
|
3019
3020
|
if (!peerConnectionId) {
|
|
3020
3021
|
throw new Error("peerConnectionId is missing");
|
|
@@ -3249,10 +3250,9 @@ class P2pRtcManager {
|
|
|
3249
3250
|
delete this.localStreams[streamId];
|
|
3250
3251
|
this._deleteEnabledLocalStreamId(streamId);
|
|
3251
3252
|
}
|
|
3252
|
-
_updateAndScheduleMediaServersRefresh({ iceServers, turnServers,
|
|
3253
|
+
_updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }) {
|
|
3253
3254
|
this._iceServers = iceServers;
|
|
3254
3255
|
this._turnServers = turnServers;
|
|
3255
|
-
this._sfuServer = sfuServer;
|
|
3256
3256
|
this._mediaserverConfigTtlSeconds = mediaserverConfigTtlSeconds;
|
|
3257
3257
|
this._clearMediaServersRefresh();
|
|
3258
3258
|
if (!mediaserverConfigTtlSeconds) {
|
|
@@ -3380,10 +3380,19 @@ class P2pRtcManager {
|
|
|
3380
3380
|
this._setCodecPreferences(pc).then(() => pc
|
|
3381
3381
|
.createOffer(constraints || this.offerOptions)
|
|
3382
3382
|
.then((offer) => {
|
|
3383
|
+
if (!offer.sdp) {
|
|
3384
|
+
this.analytics.P2PCreateOfferNoSDP++;
|
|
3385
|
+
rtcStats.sendEvent("P2PCreateOfferNoSDP", {});
|
|
3386
|
+
throw new Error("SDP undefined while creating offer");
|
|
3387
|
+
}
|
|
3383
3388
|
if (rtpAbsCaptureTimeOn)
|
|
3384
3389
|
offer.sdp = addAbsCaptureTimeExtMap(offer.sdp);
|
|
3385
3390
|
if (browserName$1 === "firefox") {
|
|
3386
|
-
offer.sdp = setCodecPreferenceSDP(
|
|
3391
|
+
offer.sdp = setCodecPreferenceSDP({
|
|
3392
|
+
sdp: offer.sdp,
|
|
3393
|
+
redOn,
|
|
3394
|
+
incrementAnalyticMetric: (metric) => this.analytics[metric]++,
|
|
3395
|
+
});
|
|
3387
3396
|
}
|
|
3388
3397
|
if (cleanSdpOn)
|
|
3389
3398
|
offer.sdp = cleanSdp(offer.sdp);
|
|
@@ -3396,7 +3405,7 @@ class P2pRtcManager {
|
|
|
3396
3405
|
.then(() => {
|
|
3397
3406
|
this._emitServerEvent(RELAY_MESSAGES.SDP_OFFER, {
|
|
3398
3407
|
receiverId: clientId,
|
|
3399
|
-
message:
|
|
3408
|
+
message: offer,
|
|
3400
3409
|
});
|
|
3401
3410
|
});
|
|
3402
3411
|
})
|
|
@@ -4521,8 +4530,8 @@ const OUTBOUND_SCREEN_OUTBOUND_STREAM_ID = uuid.v4();
|
|
|
4521
4530
|
if (browserName === "chrome")
|
|
4522
4531
|
window.document.addEventListener("beforeunload", () => (unloading = true));
|
|
4523
4532
|
class VegaRtcManager {
|
|
4524
|
-
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim
|
|
4525
|
-
const { session, iceServers, turnServers, sfuServer,
|
|
4533
|
+
constructor({ selfId, room, emitter, serverSocket, webrtcProvider, features, eventClaim }) {
|
|
4534
|
+
const { session, iceServers, turnServers, sfuServer, mediaserverConfigTtlSeconds } = room;
|
|
4526
4535
|
this._selfId = selfId;
|
|
4527
4536
|
this._room = room;
|
|
4528
4537
|
this._roomSessionId = session === null || session === void 0 ? void 0 : session.id;
|
|
@@ -4576,7 +4585,6 @@ class VegaRtcManager {
|
|
|
4576
4585
|
};
|
|
4577
4586
|
this._updateAndScheduleMediaServersRefresh({
|
|
4578
4587
|
sfuServer,
|
|
4579
|
-
sfuServers,
|
|
4580
4588
|
iceServers: (iceServers === null || iceServers === void 0 ? void 0 : iceServers.iceServers) || [],
|
|
4581
4589
|
turnServers: turnServers || [],
|
|
4582
4590
|
mediaserverConfigTtlSeconds,
|
|
@@ -4603,13 +4611,14 @@ class VegaRtcManager {
|
|
|
4603
4611
|
camTrackEndedCount: 0,
|
|
4604
4612
|
};
|
|
4605
4613
|
}
|
|
4606
|
-
_updateAndScheduleMediaServersRefresh({ iceServers, turnServers, sfuServer,
|
|
4607
|
-
var _a, _b, _c;
|
|
4614
|
+
_updateAndScheduleMediaServersRefresh({ iceServers, turnServers, sfuServer, mediaserverConfigTtlSeconds, }) {
|
|
4615
|
+
var _a, _b, _c, _d;
|
|
4608
4616
|
this._iceServers = iceServers;
|
|
4609
4617
|
this._turnServers = turnServers;
|
|
4610
|
-
|
|
4611
|
-
|
|
4612
|
-
|
|
4618
|
+
if (sfuServer) {
|
|
4619
|
+
this._sfuServer = sfuServer;
|
|
4620
|
+
}
|
|
4621
|
+
if (sfuServer === null || sfuServer === void 0 ? void 0 : sfuServer.fallbackServers) {
|
|
4613
4622
|
this._sfuServers = sfuServer.fallbackServers.map((entry) => ({
|
|
4614
4623
|
host: entry.host || entry.fqdn,
|
|
4615
4624
|
dc: entry.dc,
|
|
@@ -4619,14 +4628,14 @@ class VegaRtcManager {
|
|
|
4619
4628
|
(_a = this._vegaConnectionManager) === null || _a === void 0 ? void 0 : _a.updateHostList(this._features.sfuServersOverride ||
|
|
4620
4629
|
this._sfuServers ||
|
|
4621
4630
|
this._features.sfuServerOverrideHost ||
|
|
4622
|
-
|
|
4631
|
+
((_b = this._sfuServer) === null || _b === void 0 ? void 0 : _b.url));
|
|
4623
4632
|
const iceServersList = {
|
|
4624
4633
|
iceServers: this._features.turnServersOn ? this._turnServers : this._iceServers,
|
|
4625
4634
|
};
|
|
4626
4635
|
iceServersList.iceServers = turnServerOverride(iceServersList.iceServers, this._features.turnServerOverrideHost);
|
|
4627
4636
|
if (browserName !== "firefox") {
|
|
4628
|
-
(
|
|
4629
|
-
(
|
|
4637
|
+
(_c = this._sendTransport) === null || _c === void 0 ? void 0 : _c.updateIceServers(iceServersList);
|
|
4638
|
+
(_d = this._receiveTransport) === null || _d === void 0 ? void 0 : _d.updateIceServers(iceServersList);
|
|
4630
4639
|
}
|
|
4631
4640
|
this._clearMediaServersRefresh();
|
|
4632
4641
|
if (!mediaserverConfigTtlSeconds) {
|
|
@@ -4680,6 +4689,7 @@ class VegaRtcManager {
|
|
|
4680
4689
|
});
|
|
4681
4690
|
}
|
|
4682
4691
|
_connect() {
|
|
4692
|
+
var _a;
|
|
4683
4693
|
if (this._isConnectingOrConnected)
|
|
4684
4694
|
return;
|
|
4685
4695
|
if (!this._serverSocket.isConnected()) {
|
|
@@ -4695,7 +4705,7 @@ class VegaRtcManager {
|
|
|
4695
4705
|
const hostList = this._features.sfuServersOverride ||
|
|
4696
4706
|
this._sfuServers ||
|
|
4697
4707
|
this._features.sfuServerOverrideHost ||
|
|
4698
|
-
this._sfuServer.url;
|
|
4708
|
+
((_a = this._sfuServer) === null || _a === void 0 ? void 0 : _a.url);
|
|
4699
4709
|
this._vegaConnectionManager = createVegaConnectionManager({
|
|
4700
4710
|
initialHostList: hostList,
|
|
4701
4711
|
getUrlForHost: (host) => {
|
|
@@ -6005,9 +6015,10 @@ class RtcManagerDispatcher {
|
|
|
6005
6015
|
constructor({ emitter, serverSocket, webrtcProvider, features, }) {
|
|
6006
6016
|
this.emitter = emitter;
|
|
6007
6017
|
this.currentManager = null;
|
|
6008
|
-
serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, (
|
|
6009
|
-
if (error)
|
|
6018
|
+
serverSocket.on(PROTOCOL_RESPONSES.ROOM_JOINED, (payload) => {
|
|
6019
|
+
if ("error" in payload)
|
|
6010
6020
|
return;
|
|
6021
|
+
const { room, selfId, eventClaim } = payload;
|
|
6011
6022
|
const config = {
|
|
6012
6023
|
selfId,
|
|
6013
6024
|
room,
|