mediasoup-client
Advanced tools
Comparing version 3.7.14 to 3.7.15
@@ -23,3 +23,3 @@ "use strict"; | ||
this._paused = !track.enabled; | ||
this._appData = appData || {}; | ||
this._appData = appData ?? {}; | ||
this.onTrackEnded = this.onTrackEnded.bind(this); | ||
@@ -26,0 +26,0 @@ this.handleTrack(); |
@@ -19,3 +19,3 @@ "use strict"; | ||
this._sctpStreamParameters = sctpStreamParameters; | ||
this._appData = appData || {}; | ||
this._appData = appData ?? {}; | ||
this.handleDataChannel(); | ||
@@ -22,0 +22,0 @@ } |
@@ -19,3 +19,3 @@ "use strict"; | ||
this._sctpStreamParameters = sctpStreamParameters; | ||
this._appData = appData || {}; | ||
this._appData = appData ?? {}; | ||
this.handleDataChannel(); | ||
@@ -22,0 +22,0 @@ } |
@@ -148,2 +148,3 @@ "use strict"; | ||
else if (engineName === 'blink') { | ||
// eslint-disable-next-line @typescript-eslint/prefer-regexp-exec | ||
const match = ua.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i); | ||
@@ -150,0 +151,0 @@ if (match) { |
@@ -12,4 +12,2 @@ "use strict"; | ||
if (Error.hasOwnProperty('captureStackTrace')) { | ||
// Just in V8. | ||
// @ts-ignore | ||
Error.captureStackTrace(this, UnsupportedError); | ||
@@ -32,3 +30,2 @@ } | ||
// Just in V8. | ||
// @ts-ignore | ||
Error.captureStackTrace(this, InvalidStateError); | ||
@@ -35,0 +32,0 @@ } |
@@ -39,2 +39,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Chrome111'); | ||
const NAME = 'Chrome111'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class Chrome111 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Chrome111'; | ||
return NAME; | ||
} | ||
@@ -144,4 +145,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -332,3 +333,3 @@ rtcpMuxPolicy: 'require', | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
this._pc.removeTrack(transceiver.sender); | ||
@@ -507,3 +508,3 @@ const mediaSectionClosed = this._remoteSdp.closeMediaSection(transceiver.mid); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -514,3 +515,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -517,0 +518,0 @@ }); |
@@ -37,2 +37,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Chrome55'); | ||
const NAME = 'Chrome55'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -65,3 +66,3 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Chrome55'; | ||
return NAME; | ||
} | ||
@@ -140,4 +141,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -413,3 +414,3 @@ rtcpMuxPolicy: 'require', | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -447,3 +448,3 @@ }); | ||
const localId = trackId; | ||
const streamId = options.streamId || rtpParameters.rtcp.cname; | ||
const streamId = options.streamId ?? rtpParameters.rtcp.cname; | ||
const stream = this._pc | ||
@@ -466,3 +467,3 @@ .getRemoteStreams() | ||
logger.debug('stopReceiving() [localId:%s]', localId); | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
// Remove from the map. | ||
@@ -469,0 +470,0 @@ this._mapRecvLocalIdInfo.delete(localId); |
@@ -36,2 +36,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Chrome67'); | ||
const NAME = 'Chrome67'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class Chrome67 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Chrome67'; | ||
return NAME; | ||
} | ||
@@ -139,4 +140,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -458,3 +459,3 @@ rtcpMuxPolicy: 'require', | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -516,3 +517,3 @@ }); | ||
logger.debug('stopReceiving() [localId:%s]', localId); | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
// Remove from the map. | ||
@@ -544,3 +545,3 @@ this._mapRecvLocalIdInfo.delete(localId); | ||
this.assertRecvDirection(); | ||
const { rtpReceiver } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { rtpReceiver } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
if (!rtpReceiver) { | ||
@@ -547,0 +548,0 @@ throw new Error('associated RTCRtpReceiver not found'); |
@@ -37,2 +37,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Chrome70'); | ||
const NAME = 'Chrome70'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -60,3 +61,3 @@ class Chrome70 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Chrome70'; | ||
return NAME; | ||
} | ||
@@ -133,4 +134,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -246,3 +247,3 @@ rtcpMuxPolicy: 'require', | ||
let hackVp9Svc = false; | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
if (encodings && | ||
@@ -268,3 +269,3 @@ encodings.length === 1 && | ||
const parameters = transceiver.sender.getParameters(); | ||
for (let idx = 0; idx < (parameters.encodings || []).length; ++idx) { | ||
for (let idx = 0; idx < (parameters.encodings ?? []).length; ++idx) { | ||
const encoding = parameters.encodings[idx]; | ||
@@ -340,3 +341,3 @@ const desiredEncoding = encodings[idx]; | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
this._pc.removeTrack(transceiver.sender); | ||
@@ -484,3 +485,3 @@ const mediaSectionClosed = this._remoteSdp.closeMediaSection(transceiver.mid); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -491,3 +492,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -494,0 +495,0 @@ }); |
@@ -39,2 +39,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Chrome74'); | ||
const NAME = 'Chrome74'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class Chrome74 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Chrome74'; | ||
return NAME; | ||
} | ||
@@ -143,4 +144,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -256,3 +257,3 @@ rtcpMuxPolicy: 'require', | ||
let hackVp9Svc = false; | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
if (encodings && | ||
@@ -350,3 +351,3 @@ encodings.length === 1 && | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
this._pc.removeTrack(transceiver.sender); | ||
@@ -525,3 +526,3 @@ const mediaSectionClosed = this._remoteSdp.closeMediaSection(transceiver.mid); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -532,3 +533,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -535,0 +536,0 @@ }); |
@@ -34,2 +34,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Edge11'); | ||
const NAME = 'Edge11'; | ||
class Edge11 extends HandlerInterface_1.HandlerInterface { | ||
@@ -54,3 +55,3 @@ /** | ||
get name() { | ||
return 'Edge11'; | ||
return NAME; | ||
} | ||
@@ -329,6 +330,6 @@ close() { | ||
setIceGatherer({ iceServers, iceTransportPolicy, }) { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose | ||
const iceGatherer = new RTCIceGatherer({ | ||
iceServers: iceServers || [], | ||
gatherPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
gatherPolicy: iceTransportPolicy ?? 'all', | ||
}); | ||
@@ -335,0 +336,0 @@ iceGatherer.addEventListener('error', (event) => { |
@@ -35,2 +35,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('FakeHandler'); | ||
const NAME = 'FakeHandler'; | ||
class FakeDataChannel extends EnhancedEventEmitter_1.EnhancedEventEmitter { | ||
@@ -81,3 +82,3 @@ constructor({ id, ordered, maxPacketLifeTime, maxRetransmits, label, protocol, }) { | ||
get name() { | ||
return 'FakeHandler'; | ||
return NAME; | ||
} | ||
@@ -230,3 +231,3 @@ close() { | ||
}; | ||
// @ts-ignore. | ||
// @ts-expect-error --- On purpose. | ||
return { dataChannel, sctpStreamParameters }; | ||
@@ -290,3 +291,3 @@ } | ||
}); | ||
// @ts-ignore. | ||
// @ts-expect-error --- On purpose. | ||
return { dataChannel }; | ||
@@ -293,0 +294,0 @@ } |
@@ -38,2 +38,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Firefox120'); | ||
const NAME = 'Firefox120'; | ||
const SCTP_NUM_STREAMS = { OS: 16, MIS: 2048 }; | ||
@@ -63,3 +64,3 @@ class Firefox120 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Firefox120'; | ||
return NAME; | ||
} | ||
@@ -165,4 +166,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -279,3 +280,3 @@ rtcpMuxPolicy: 'require', | ||
} | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer); | ||
@@ -354,3 +355,3 @@ await this._pc.setLocalDescription(offer); | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
// NOTE: Cannot use stop() the transceiver due to the the note above in | ||
@@ -377,3 +378,2 @@ // send() method. | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async pauseSending(localId) { | ||
@@ -396,3 +396,2 @@ this.assertNotClosed(); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async resumeSending(localId) { | ||
@@ -527,5 +526,3 @@ this.assertNotClosed(); | ||
} | ||
async receive( | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
optionsList) { | ||
async receive(optionsList) { | ||
this.assertNotClosed(); | ||
@@ -538,3 +535,3 @@ this.assertRecvDirection(); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -545,3 +542,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -548,0 +545,0 @@ }); |
@@ -38,2 +38,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Firefox60'); | ||
const NAME = 'Firefox60'; | ||
const SCTP_NUM_STREAMS = { OS: 16, MIS: 2048 }; | ||
@@ -63,3 +64,3 @@ class Firefox60 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Firefox60'; | ||
return NAME; | ||
} | ||
@@ -167,4 +168,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -252,10 +253,8 @@ rtcpMuxPolicy: 'require', | ||
encodings = utils.clone(encodings); | ||
if (encodings.length > 1) { | ||
encodings.forEach((encoding, idx) => { | ||
encoding.rid = `r${idx}`; | ||
}); | ||
// Clone the encodings and reverse them because Firefox likes them | ||
// from high to low. | ||
encodings.reverse(); | ||
} | ||
encodings.forEach((encoding, idx) => { | ||
encoding.rid = `r${idx}`; | ||
}); | ||
// Clone the encodings and reverse them because Firefox likes them | ||
// from high to low. | ||
encodings.reverse(); | ||
} | ||
@@ -291,3 +290,3 @@ const sendingRtpParameters = utils.clone(this._sendingRtpParametersByKind[track.kind]); | ||
} | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer); | ||
@@ -367,3 +366,3 @@ await this._pc.setLocalDescription(offer); | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
// NOTE: Cannot use stop() the transceiver due to the the note above in | ||
@@ -390,3 +389,2 @@ // send() method. | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async pauseSending(localId) { | ||
@@ -409,3 +407,2 @@ this.assertNotClosed(); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async resumeSending(localId) { | ||
@@ -543,5 +540,3 @@ this.assertNotClosed(); | ||
} | ||
async receive( | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
optionsList) { | ||
async receive(optionsList) { | ||
this.assertNotClosed(); | ||
@@ -554,3 +549,3 @@ this.assertRecvDirection(); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -561,3 +556,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -564,0 +559,0 @@ }); |
@@ -38,9 +38,9 @@ "use strict"; | ||
// Rename numChannels to channels. | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
codec.channels = codec.numChannels; | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
delete codec.numChannels; | ||
// Add mimeType. | ||
// @ts-ignore (due to codec.name). | ||
codec.mimeType = codec.mimeType || `${codec.kind}/${codec.name}`; | ||
// @ts-expect-error --- On purpose (due to codec.name). | ||
codec.mimeType = codec.mimeType ?? `${codec.kind}/${codec.name}`; | ||
// NOTE: Edge sets some numeric parameters as string rather than number. Fix them. | ||
@@ -57,3 +57,3 @@ if (codec.parameters) { | ||
// Delete emty parameter String in rtcpFeedback. | ||
for (const feedback of codec.rtcpFeedback || []) { | ||
for (const feedback of codec.rtcpFeedback ?? []) { | ||
if (!feedback.parameter) { | ||
@@ -73,3 +73,3 @@ feedback.parameter = ''; | ||
if (params.mid) { | ||
// @ts-ignore (due to muxId). | ||
// @ts-expect-error --- On purpose (due to muxId). | ||
params.muxId = params.mid; | ||
@@ -81,3 +81,3 @@ delete params.mid; | ||
if (codec.channels) { | ||
// @ts-ignore. | ||
// @ts-expect-error --- On purpose. | ||
codec.numChannels = codec.channels; | ||
@@ -87,9 +87,9 @@ delete codec.channels; | ||
// Add codec.name (requried by Edge). | ||
// @ts-ignore (due to name). | ||
// @ts-expect-error --- On purpose (due to name). | ||
if (codec.mimeType && !codec.name) { | ||
// @ts-ignore (due to name). | ||
// @ts-expect-error --- On purpose (due to name). | ||
codec.name = codec.mimeType.split('/')[1]; | ||
} | ||
// Remove mimeType. | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
delete codec.mimeType; | ||
@@ -96,0 +96,0 @@ } |
@@ -8,3 +8,3 @@ "use strict"; | ||
function addNackSuppportForOpus(rtpCapabilities) { | ||
for (const codec of rtpCapabilities.codecs || []) { | ||
for (const codec of rtpCapabilities.codecs ?? []) { | ||
if ((codec.mimeType.toLowerCase() === 'audio/opus' || | ||
@@ -11,0 +11,0 @@ codec.mimeType.toLowerCase() === 'audio/multiopus') && |
@@ -37,2 +37,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('ReactNative'); | ||
const NAME = 'ReactNative'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -65,3 +66,3 @@ class ReactNative extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'ReactNative'; | ||
return NAME; | ||
} | ||
@@ -72,3 +73,3 @@ close() { | ||
// MediaStreamTracks (that is parent's business). | ||
// @ts-ignore (proprietary API in react-native-webrtc). | ||
// @ts-expect-error --- Proprietary API in react-native-webrtc. | ||
this._sendStream.release(/* releaseTracks */ false); | ||
@@ -145,4 +146,4 @@ // Close RTCPeerConnection. | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -416,3 +417,3 @@ rtcpMuxPolicy: 'require', | ||
const mid = kind; | ||
let streamId = options.streamId || rtpParameters.rtcp.cname; | ||
let streamId = options.streamId ?? rtpParameters.rtcp.cname; | ||
// NOTE: In React-Native we cannot reuse the same remote MediaStream for new | ||
@@ -481,3 +482,3 @@ // remote tracks. This is because react-native-webrtc does not react on new | ||
logger.debug('stopReceiving() [localId:%s]', localId); | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
// Remove from the map. | ||
@@ -484,0 +485,0 @@ this._mapRecvLocalIdInfo.delete(localId); |
@@ -39,2 +39,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('ReactNativeUnifiedPlan'); | ||
const NAME = 'ReactNativeUnifiedPlan'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class ReactNativeUnifiedPlan extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'ReactNativeUnifiedPlan'; | ||
return NAME; | ||
} | ||
@@ -75,3 +76,3 @@ close() { | ||
// MediaStreamTracks (that is parent's business). | ||
// @ts-ignore (proprietary API in react-native-webrtc). | ||
// @ts-expect-error --- Proprietary API in react-native-webrtc. | ||
this._sendStream.release(/* releaseTracks */ false); | ||
@@ -149,4 +150,4 @@ // Close RTCPeerConnection. | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -265,3 +266,3 @@ rtcpMuxPolicy: 'require', | ||
let hackVp9Svc = false; | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
if (encodings && | ||
@@ -377,3 +378,3 @@ encodings.length === 1 && | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
this._pc.removeTrack(transceiver.sender); | ||
@@ -552,3 +553,3 @@ const mediaSectionClosed = this._remoteSdp.closeMediaSection(transceiver.mid); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -559,3 +560,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -562,0 +563,0 @@ }); |
@@ -36,2 +36,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Safari11'); | ||
const NAME = 'Safari11'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class Safari11 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Safari11'; | ||
return NAME; | ||
} | ||
@@ -139,4 +140,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -454,3 +455,3 @@ rtcpMuxPolicy: 'require', | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -512,3 +513,3 @@ }); | ||
logger.debug('stopReceiving() [localId:%s]', localId); | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
// Remove from the map. | ||
@@ -530,3 +531,3 @@ this._mapRecvLocalIdInfo.delete(localId); | ||
this.assertRecvDirection(); | ||
const { rtpReceiver } = this._mapRecvLocalIdInfo.get(localId) || {}; | ||
const { rtpReceiver } = this._mapRecvLocalIdInfo.get(localId) ?? {}; | ||
if (!rtpReceiver) { | ||
@@ -533,0 +534,0 @@ throw new Error('associated RTCRtpReceiver not found'); |
@@ -39,2 +39,3 @@ "use strict"; | ||
const logger = new Logger_1.Logger('Safari12'); | ||
const NAME = 'Safari12'; | ||
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 }; | ||
@@ -64,3 +65,3 @@ class Safari12 extends HandlerInterface_1.HandlerInterface { | ||
get name() { | ||
return 'Safari12'; | ||
return NAME; | ||
} | ||
@@ -143,4 +144,4 @@ close() { | ||
this._pc = new RTCPeerConnection({ | ||
iceServers: iceServers || [], | ||
iceTransportPolicy: iceTransportPolicy || 'all', | ||
iceServers: iceServers ?? [], | ||
iceTransportPolicy: iceTransportPolicy ?? 'all', | ||
bundlePolicy: 'max-bundle', | ||
@@ -250,3 +251,3 @@ rtcpMuxPolicy: 'require', | ||
} | ||
const layers = (0, scalabilityModes_1.parse)((encodings || [{}])[0].scalabilityMode); | ||
const layers = (0, scalabilityModes_1.parse)((encodings ?? [{}])[0].scalabilityMode); | ||
if (encodings && encodings.length > 1) { | ||
@@ -328,3 +329,3 @@ logger.debug('send() | enabling legacy simulcast'); | ||
} | ||
transceiver.sender.replaceTrack(null); | ||
void transceiver.sender.replaceTrack(null); | ||
this._pc.removeTrack(transceiver.sender); | ||
@@ -346,3 +347,2 @@ const mediaSectionClosed = this._remoteSdp.closeMediaSection(transceiver.mid); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async pauseSending(localId) { | ||
@@ -365,3 +365,2 @@ this.assertNotClosed(); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
async resumeSending(localId) { | ||
@@ -507,3 +506,3 @@ this.assertNotClosed(); | ||
logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind); | ||
const localId = rtpParameters.mid || String(this._mapMidTransceiver.size); | ||
const localId = rtpParameters.mid ?? String(this._mapMidTransceiver.size); | ||
mapLocalId.set(trackId, localId); | ||
@@ -514,3 +513,3 @@ this._remoteSdp.receive({ | ||
offerRtpParameters: rtpParameters, | ||
streamId: streamId || rtpParameters.rtcp.cname, | ||
streamId: streamId ?? rtpParameters.rtcp.cname, | ||
trackId, | ||
@@ -517,0 +516,0 @@ }); |
@@ -85,3 +85,3 @@ "use strict"; | ||
// Specials case to convert parameter value to string. | ||
if (parameters && parameters.hasOwnProperty('profile-level-id')) { | ||
if (parameters?.hasOwnProperty('profile-level-id')) { | ||
parameters['profile-level-id'] = String(parameters['profile-level-id']); | ||
@@ -88,0 +88,0 @@ } |
@@ -215,3 +215,3 @@ "use strict"; | ||
// Don't add a header extension if not present in the offer. | ||
const found = (offerMediaObject.ext || []).some((localExt) => localExt.uri === ext.uri); | ||
const found = (offerMediaObject.ext ?? []).some((localExt) => localExt.uri === ext.uri); | ||
if (!found) { | ||
@@ -237,3 +237,3 @@ continue; | ||
this._mediaObject.rids = []; | ||
for (const rid of offerMediaObject.rids || []) { | ||
for (const rid of offerMediaObject.rids ?? []) { | ||
if (rid.direction !== 'send') { | ||
@@ -250,3 +250,2 @@ continue; | ||
else if (offerMediaObject.simulcast_03) { | ||
// eslint-disable-next-line camelcase | ||
this._mediaObject.simulcast_03 = { | ||
@@ -256,3 +255,3 @@ value: offerMediaObject.simulcast_03.value.replace(/send/g, 'recv'), | ||
this._mediaObject.rids = []; | ||
for (const rid of offerMediaObject.rids || []) { | ||
for (const rid of offerMediaObject.rids ?? []) { | ||
if (rid.direction !== 'send') { | ||
@@ -314,3 +313,3 @@ continue; | ||
muxSimulcastStreams(encodings) { | ||
if (!this._mediaObject.simulcast || !this._mediaObject.simulcast.list1) { | ||
if (!this._mediaObject.simulcast?.list1) { | ||
return; | ||
@@ -368,3 +367,3 @@ } | ||
if (!this._planB) { | ||
this._mediaObject.msid = `${streamId || '-'} ${trackId}`; | ||
this._mediaObject.msid = `${streamId ?? '-'} ${trackId}`; | ||
} | ||
@@ -416,3 +415,3 @@ for (const codec of offerRtpParameters.codecs) { | ||
const ssrc = encoding.ssrc; | ||
const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined; | ||
const rtxSsrc = encoding.rtx?.ssrc; | ||
this._mediaObject.ssrcs = []; | ||
@@ -431,3 +430,3 @@ this._mediaObject.ssrcGroups = []; | ||
attribute: 'msid', | ||
value: `${streamId || '-'} ${trackId}`, | ||
value: `${streamId ?? '-'} ${trackId}`, | ||
}); | ||
@@ -447,3 +446,3 @@ } | ||
attribute: 'msid', | ||
value: `${streamId || '-'} ${trackId}`, | ||
value: `${streamId ?? '-'} ${trackId}`, | ||
}); | ||
@@ -490,3 +489,3 @@ } | ||
const ssrc = encoding.ssrc; | ||
const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined; | ||
const rtxSsrc = encoding.rtx?.ssrc; | ||
const payloads = this._mediaObject.payloads.split(' '); | ||
@@ -542,3 +541,3 @@ for (const codec of offerRtpParameters.codecs) { | ||
attribute: 'msid', | ||
value: `${streamId || '-'} ${trackId}`, | ||
value: `${streamId ?? '-'} ${trackId}`, | ||
}); | ||
@@ -556,3 +555,3 @@ if (rtxSsrc) { | ||
attribute: 'msid', | ||
value: `${streamId || '-'} ${trackId}`, | ||
value: `${streamId ?? '-'} ${trackId}`, | ||
}); | ||
@@ -569,3 +568,3 @@ // Associate original and retransmission SSRCs. | ||
const ssrc = encoding.ssrc; | ||
const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined; | ||
const rtxSsrc = encoding.rtx?.ssrc; | ||
this._mediaObject.ssrcs = this._mediaObject.ssrcs.filter((s) => s.id !== ssrc && s.id !== rtxSsrc); | ||
@@ -572,0 +571,0 @@ if (rtxSsrc) { |
@@ -120,4 +120,3 @@ "use strict"; | ||
}); | ||
for (let i = 0; i < ssrcs.length; ++i) { | ||
const ssrc = ssrcs[i]; | ||
for (const ssrc of ssrcs) { | ||
offerMediaObject.ssrcs.push({ | ||
@@ -124,0 +123,0 @@ id: ssrc, |
@@ -58,3 +58,3 @@ "use strict"; | ||
// If ICE parameters are given, add ICE-Lite indicator. | ||
if (iceParameters && iceParameters.iceLite) { | ||
if (iceParameters?.iceLite) { | ||
this._sdpObject.icelite = 'ice-lite'; | ||
@@ -61,0 +61,0 @@ } |
@@ -61,3 +61,3 @@ "use strict"; | ||
const [streamId, trackId] = ssrcMsidLine.value.split(' '); | ||
const firstSsrc = ssrcMsidLine.id; | ||
const firstSsrc = Number(ssrcMsidLine.id); | ||
let firstRtxSsrc; | ||
@@ -97,4 +97,3 @@ // Get the SSRC for RTX. | ||
}); | ||
for (let i = 0; i < ssrcs.length; ++i) { | ||
const ssrc = ssrcs[i]; | ||
for (const ssrc of ssrcs) { | ||
offerMediaObject.ssrcs.push({ | ||
@@ -101,0 +100,0 @@ id: ssrc, |
@@ -11,3 +11,3 @@ import debug from 'debug'; | ||
*/ | ||
export declare const version = "3.7.14"; | ||
export declare const version = "3.7.15"; | ||
/** | ||
@@ -14,0 +14,0 @@ * Expose Device class and detectDevice() helper. |
@@ -40,3 +40,3 @@ "use strict"; | ||
*/ | ||
exports.version = '3.7.14'; | ||
exports.version = '3.7.15'; | ||
/** | ||
@@ -43,0 +43,0 @@ * Expose parseScalabilityMode() function. |
@@ -197,7 +197,7 @@ "use strict"; | ||
// Match media codecs and keep the order preferred by remoteCaps. | ||
for (const remoteCodec of remoteCaps.codecs || []) { | ||
for (const remoteCodec of remoteCaps.codecs ?? []) { | ||
if (isRtxCodec(remoteCodec)) { | ||
continue; | ||
} | ||
const matchingLocalCodec = (localCaps.codecs || []).find((localCodec) => matchCodecs(localCodec, remoteCodec, { strict: true, modify: true })); | ||
const matchingLocalCodec = (localCaps.codecs ?? []).find((localCodec) => matchCodecs(localCodec, remoteCodec, { strict: true, modify: true })); | ||
if (!matchingLocalCodec) { | ||
@@ -437,3 +437,3 @@ continue; | ||
for (const codec of rtpParameters.codecs) { | ||
codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'goog-remb'); | ||
codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter((fb) => fb.type !== 'goog-remb'); | ||
} | ||
@@ -443,3 +443,3 @@ } | ||
for (const codec of rtpParameters.codecs) { | ||
codec.rtcpFeedback = (codec.rtcpFeedback || []).filter(fb => fb.type !== 'transport-cc'); | ||
codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter(fb => fb.type !== 'transport-cc'); | ||
} | ||
@@ -449,3 +449,3 @@ } | ||
for (const codec of rtpParameters.codecs) { | ||
codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb'); | ||
codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb'); | ||
} | ||
@@ -900,4 +900,4 @@ } | ||
const reducedRtcpFeedback = []; | ||
for (const aFb of codecA.rtcpFeedback || []) { | ||
const matchingBFb = (codecB.rtcpFeedback || []).find((bFb) => bFb.type === aFb.type && | ||
for (const aFb of codecA.rtcpFeedback ?? []) { | ||
const matchingBFb = (codecB.rtcpFeedback ?? []).find((bFb) => bFb.type === aFb.type && | ||
(bFb.parameter === aFb.parameter || (!bFb.parameter && !aFb.parameter))); | ||
@@ -904,0 +904,0 @@ if (matchingBFb) { |
@@ -27,3 +27,3 @@ "use strict"; | ||
this._zeroRtpOnPause = zeroRtpOnPause; | ||
this._appData = appData || {}; | ||
this._appData = appData ?? {}; | ||
this.onTrackEnded = this.onTrackEnded.bind(this); | ||
@@ -30,0 +30,0 @@ // NOTE: Minor issue. If zeroRtpOnPause is true, we cannot emit the |
@@ -6,3 +6,3 @@ "use strict"; | ||
function parse(scalabilityMode) { | ||
const match = ScalabilityModeRegex.exec(scalabilityMode || ''); | ||
const match = ScalabilityModeRegex.exec(scalabilityMode ?? ''); | ||
if (match) { | ||
@@ -9,0 +9,0 @@ return { |
@@ -297,3 +297,2 @@ "use strict"; | ||
kind: 'video', | ||
// @ts-ignore | ||
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/playout-delay', | ||
@@ -304,3 +303,3 @@ preferredId: 6, | ||
kind: 'video', | ||
// @ts-ignore | ||
// @ts-expect-error --- ON purpose. | ||
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/video-content-type', | ||
@@ -311,3 +310,3 @@ preferredId: 7, | ||
kind: 'video', | ||
// @ts-ignore | ||
// @ts-expect-error --- ON purpose. | ||
uri: 'http://www.webrtc.org/experiments/rtp-hdrext/video-timing', | ||
@@ -404,3 +403,3 @@ preferredId: 8, | ||
return { | ||
id: id || generateFakeUuid(), | ||
id: id ?? generateFakeUuid(), | ||
producerId: generateFakeUuid(), | ||
@@ -451,3 +450,3 @@ kind: 'audio', | ||
return { | ||
id: id || generateFakeUuid(), | ||
id: id ?? generateFakeUuid(), | ||
producerId: generateFakeUuid(), | ||
@@ -491,3 +490,3 @@ kind: 'audio', | ||
return { | ||
id: id || generateFakeUuid(), | ||
id: id ?? generateFakeUuid(), | ||
producerId: generateFakeUuid(), | ||
@@ -562,3 +561,3 @@ kind: 'video', | ||
return { | ||
id: id || generateFakeUuid(), | ||
id: id ?? generateFakeUuid(), | ||
producerId: generateFakeUuid(), | ||
@@ -645,3 +644,3 @@ kind: 'video', | ||
return { | ||
id: id || generateFakeUuid(), | ||
id: id ?? generateFakeUuid(), | ||
dataProducerId: generateFakeUuid(), | ||
@@ -648,0 +647,0 @@ sctpStreamParameters: utils.deepFreeze({ |
@@ -72,3 +72,3 @@ "use strict"; | ||
ctx.connectedSendTransport.on('produce', | ||
// eslint-disable-next-line no-shadow, @typescript-eslint/no-unused-vars | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
({ kind, rtpParameters, appData }, callback /* errback */) => { | ||
@@ -80,3 +80,3 @@ // eslint-disable-next-line no-shadow | ||
ctx.connectedSendTransport.on('producedata', ( | ||
// eslint-disable-next-line no-shadow, @typescript-eslint/no-unused-vars | ||
// eslint-disable-next-line @typescript-eslint/no-unused-vars | ||
{ sctpStreamParameters, label, protocol, appData }, callback /* errback */) => { | ||
@@ -154,3 +154,3 @@ // eslint-disable-next-line no-shadow | ||
test('create a Device with an unknown handlerName string throws TypeError', () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
expect(() => new Device({ handlerName: 'FooBrowser666' })).toThrow(TypeError); | ||
@@ -186,3 +186,3 @@ }); | ||
test('device.load() without routerRtpCapabilities rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.device.load({})).rejects.toThrow(TypeError); | ||
@@ -195,3 +195,3 @@ expect(ctx.device.loaded).toBe(false); | ||
for (const codec of routerRtpCapabilities.codecs) { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
delete codec.mimeType; | ||
@@ -224,3 +224,3 @@ } | ||
test('device.canProduce() with invalid kind throws TypeError', () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
expect(() => ctx.loadedDevice.canProduce('chicken')).toThrow(TypeError); | ||
@@ -268,10 +268,10 @@ }); | ||
test('device.createSendTransport() with missing remote Transport parameters throws TypeError', () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
expect(() => ctx.loadedDevice.createSendTransport({ id: '1234' })).toThrow(TypeError); | ||
expect(() => | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.loadedDevice.createSendTransport({ id: '1234', iceParameters: {} })).toThrow(TypeError); | ||
expect(() => ctx.loadedDevice.createSendTransport({ | ||
id: '1234', | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
iceParameters: {}, | ||
@@ -289,3 +289,3 @@ iceCandidates: [], | ||
sctpParameters, | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
appData: 1234, | ||
@@ -483,3 +483,3 @@ })).toThrow(TypeError); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.produce({ track, appData: true })).rejects.toThrow(TypeError); | ||
@@ -659,3 +659,3 @@ }, 500); | ||
}); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
const pushSpy = jest.spyOn(ctx.connectedRecvTransport._awaitQueue, 'push'); | ||
@@ -690,16 +690,16 @@ const waitForConsumer = (id) => { | ||
await allConsumersCreated; | ||
expect(pushSpy).toBeCalledTimes(1); | ||
expect(pushSpy).toHaveBeenCalledTimes(1); | ||
}, 500); | ||
test('transport.consume() without remote Consumer parameters rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.recvTransport.consume({})).rejects.toThrow(TypeError); | ||
}, 500); | ||
test('transport.consume() with missing remote Consumer parameters rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.recvTransport.consume({ id: '1234' })).rejects.toThrow(TypeError); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.recvTransport.consume({ id: '1234', producerId: '4444' })).rejects.toThrow(TypeError); | ||
await expect(ctx.recvTransport.consume( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
{ | ||
@@ -711,3 +711,3 @@ id: '1234', | ||
await expect(ctx.recvTransport.consume( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
{ | ||
@@ -746,3 +746,3 @@ id: '1234', | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.recvTransport.consume({ consumerRemoteParameters, appData: true })).rejects.toThrow(TypeError); | ||
@@ -779,3 +779,3 @@ }, 500); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.produceData({ appData: true })).rejects.toThrow(TypeError); | ||
@@ -803,10 +803,10 @@ }, 500); | ||
test('transport.consumeData() without remote DataConsumer parameters rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.recvTransport.consumeData({})).rejects.toThrow(TypeError); | ||
}, 500); | ||
test('transport.consumeData() with missing remote DataConsumer parameters rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.recvTransport.consumeData({ id: '1234' })).rejects.toThrow(TypeError); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.recvTransport.consumeData({ id: '1234', dataProducerId: '4444' })).rejects.toThrow(TypeError); | ||
@@ -826,3 +826,3 @@ }, 500); | ||
dataConsumerRemoteParameters, | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
appData: true, | ||
@@ -844,3 +844,3 @@ })).rejects.toThrow(TypeError); | ||
test('transport.restartIce() without remote iceParameters rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.sendTransport.restartIce({})).rejects.toThrow(TypeError); | ||
@@ -859,5 +859,5 @@ }, 500); | ||
// tests above already). So here we have to reset it manually to test things. | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.handler.setIceGatheringState('new'); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.handler.setConnectionState('new'); | ||
@@ -876,3 +876,3 @@ let iceGatheringStateChangeEventNumTimesCalled = 0; | ||
}); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.handler.setIceGatheringState('complete'); | ||
@@ -890,3 +890,3 @@ expect(iceGatheringStateChangeEventNumTimesCalled).toBe(1); | ||
}); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.sendTransport.handler.setConnectionState('completed'); | ||
@@ -975,7 +975,7 @@ expect(connectionStateChangeEventNumTimesCalled).toBe(1); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.videoProducer.setMaxSpatialLayer('chicken')).rejects.toThrow(TypeError); | ||
}, 500); | ||
test('producer.setMaxSpatialLayer() without spatialLayer rejects with TypeError', async () => { | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.videoProducer.setMaxSpatialLayer()).rejects.toThrow(TypeError); | ||
@@ -1052,3 +1052,3 @@ }, 500); | ||
}); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.audioProducer.track.remoteStop(); | ||
@@ -1058,9 +1058,9 @@ expect(audioProducerTrackendedEventCalled).toBe(true); | ||
ctx.videoProducer.close(); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.videoProducer.track.remoteStop(); | ||
expect(videoProducerTrackendedEventCalled).toBe(false); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.audioConsumer.track.remoteStop(); | ||
expect(audiosConsumerTrackendedEventCalled).toBe(true); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.videoConsumer.track.remoteStop(); | ||
@@ -1108,3 +1108,3 @@ expect(videoConsumerTrackendedEventCalled).toBe(true); | ||
ctx.connectedRecvTransport.close(); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.connectedRecvTransport.consume({})).rejects.toThrow(errors_1.InvalidStateError); | ||
@@ -1118,3 +1118,3 @@ }, 500); | ||
ctx.connectedRecvTransport.close(); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
await expect(ctx.connectedRecvTransport.consumeData({})).rejects.toThrow(errors_1.InvalidStateError); | ||
@@ -1129,3 +1129,3 @@ }, 500); | ||
await expect( | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.connectedSendTransport.restartIce({ ieParameters: {} })).rejects.toThrow(errors_1.InvalidStateError); | ||
@@ -1143,3 +1143,3 @@ }, 500); | ||
ctx.connectedSendTransport.close(); | ||
// @ts-ignore | ||
// @ts-expect-error --- On purpose. | ||
ctx.connectedSendTransport.handler.setConnectionState('disconnected'); | ||
@@ -1149,7 +1149,7 @@ expect(connectionStateChangeEventNumTimesCalled).toBe(0); | ||
}); | ||
test('RemoteSdp properly handles multiple streams of the same type in planB', async () => { | ||
test('RemoteSdp properly handles multiple streams of the same type in planB', () => { | ||
let sdp = undefined; | ||
let sdpObject = undefined; | ||
const remoteSdp = new RemoteSdp_1.RemoteSdp({ planB: true }); | ||
await remoteSdp.receive({ | ||
remoteSdp.receive({ | ||
mid: 'video', | ||
@@ -1173,3 +1173,3 @@ kind: 'video', | ||
expect(sdpObject.media[0].ssrcs?.length).toBe(4); | ||
await remoteSdp.receive({ | ||
remoteSdp.receive({ | ||
mid: 'video', | ||
@@ -1197,3 +1197,3 @@ kind: 'video', | ||
expect(sdpObject.media[0].ssrcs?.length).toBe(8); | ||
await remoteSdp.planBStopReceiving({ | ||
remoteSdp.planBStopReceiving({ | ||
mid: 'video', | ||
@@ -1219,7 +1219,7 @@ offerRtpParameters: fakeParameters.generateConsumerRemoteParameters({ | ||
}, 500); | ||
test('RemoteSdp does not duplicate codec descriptions', async () => { | ||
test('RemoteSdp does not duplicate codec descriptions', () => { | ||
let sdp = undefined; | ||
let sdpObject = undefined; | ||
const remoteSdp = new RemoteSdp_1.RemoteSdp({ planB: true }); | ||
await remoteSdp.receive({ | ||
remoteSdp.receive({ | ||
mid: 'video', | ||
@@ -1243,3 +1243,3 @@ kind: 'video', | ||
expect(sdpObject.media[0].ssrcs?.length).toBe(4); | ||
await remoteSdp.receive({ | ||
remoteSdp.receive({ | ||
mid: 'video', | ||
@@ -1305,4 +1305,6 @@ kind: 'video', | ||
for (const uaTestCase of uaTestCases_1.uaTestCases) { | ||
test(uaTestCase.desc, () => { | ||
// @ts-ignore | ||
test( | ||
// eslint-disable-next-line jest/valid-title --- Jest is not that smart. | ||
uaTestCase.desc, () => { | ||
// @ts-expect-error --- On purpose. | ||
global.navigator = { | ||
@@ -1309,0 +1311,0 @@ userAgent: uaTestCase.ua, |
@@ -99,3 +99,3 @@ "use strict"; | ||
// Clone and sanitize additionalSettings. | ||
const clonedAdditionalSettings = utils.clone(additionalSettings) || {}; | ||
const clonedAdditionalSettings = utils.clone(additionalSettings) ?? {}; | ||
delete clonedAdditionalSettings.iceServers; | ||
@@ -119,3 +119,3 @@ delete clonedAdditionalSettings.iceTransportPolicy; | ||
}); | ||
this._appData = appData || {}; | ||
this._appData = appData ?? {}; | ||
this.handleHandler(); | ||
@@ -428,3 +428,3 @@ } | ||
if (this._consumerCreationInProgress === false) { | ||
this.createPendingConsumers(); | ||
void this.createPendingConsumers(); | ||
} | ||
@@ -629,3 +629,3 @@ }); | ||
if (this._pendingConsumerTasks.length > 0) { | ||
this.createPendingConsumers(); | ||
void this.createPendingConsumers(); | ||
} | ||
@@ -632,0 +632,0 @@ }) |
{ | ||
"name": "mediasoup-client", | ||
"version": "3.7.14", | ||
"version": "3.7.15", | ||
"description": "mediasoup client side TypeScript library", | ||
@@ -26,3 +26,3 @@ "contributors": [ | ||
"engines": { | ||
"node": ">=16" | ||
"node": ">=18" | ||
}, | ||
@@ -71,3 +71,3 @@ "keywords": [ | ||
"awaitqueue": "^3.0.2", | ||
"debug": "^4.3.5", | ||
"debug": "^4.3.6", | ||
"npm-events-package": "npm:events@^3.3.0", | ||
@@ -82,18 +82,22 @@ "fake-mediastreamtrack": "^1.2.0", | ||
"devDependencies": { | ||
"@eslint/js": "^9.9.0", | ||
"@types/jest": "^29.5.12", | ||
"@types/node": "20", | ||
"@types/node": "22", | ||
"@types/sdp-transform": "^2.4.9", | ||
"@types/ua-parser-js": "^0.7.39", | ||
"@typescript-eslint/eslint-plugin": "^7.17.0", | ||
"@typescript-eslint/parser": "^7.17.0", | ||
"@typescript-eslint/eslint-plugin": "^8.0.1", | ||
"@typescript-eslint/parser": "^8.0.1", | ||
"eslint": "^8.57.0", | ||
"eslint": "^9.9.0", | ||
"eslint-config-prettier": "^9.1.0", | ||
"eslint-plugin-jest": "^28.6.0", | ||
"eslint-plugin-jest": "^28.8.0", | ||
"eslint-plugin-prettier": "^5.2.1", | ||
"globals": "^15.9.0", | ||
"jest": "^29.7.0", | ||
"open-cli": "^8.0.0", | ||
"prettier": "^3.3.3", | ||
"ts-jest": "^29.2.3", | ||
"typescript": "^5.5.4" | ||
"ts-jest": "^29.2.4", | ||
"typescript": "^5.5.4", | ||
"typescript-eslint": "^8.0.1" | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
797193
18
17566
Updateddebug@^4.3.6