mediasoup-client 3.6.86 → 3.6.88
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/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +37 -11
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
- package/lib/handlers/ReactNativeUnifiedPlan.js +11 -4
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/tests/test.js +24 -0
- package/lib/tests/uaTestCases.d.ts +9 -0
- package/lib/tests/uaTestCases.d.ts.map +1 -0
- package/lib/tests/uaTestCases.js +85 -0
- package/package.json +5 -5
package/lib/Device.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AAY/E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,kBAAkB,GAC3B,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,wBAAwB,GACxB,aAAa,CAAC;AAEjB,MAAM,MAAM,aAAa,GACzB;IACC;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,YAAY,IAAI,kBAAkB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"Device.d.ts","sourceRoot":"","sources":["../src/Device.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAoB,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAoB,MAAM,6BAA6B,CAAC;AAY/E,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,kBAAkB,GAC3B,WAAW,GACX,UAAU,GACV,UAAU,GACV,UAAU,GACV,UAAU,GACV,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,wBAAwB,GACxB,aAAa,CAAC;AAEjB,MAAM,MAAM,aAAa,GACzB;IACC;;OAEG;IACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,wBAAgB,YAAY,IAAI,kBAAkB,GAAG,SAAS,CAiM7D;AAED,MAAM,MAAM,oBAAoB,GAChC;IACC,YAAY,EAAE,CAAC,SAAS,CAAC,CAAC;CAC1B,CAAC;AAEF,qBAAa,MAAM;IAGlB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IAEtC,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,wBAAwB,CAAC,CAAM;IAEvC,OAAO,CAAC,oBAAoB,CAAC,CAAkB;IAG/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IAErD,OAAO,CAAC,iBAAiB,CAAC,CAAmB;IAE7C,SAAS,CAAC,QAAQ,CAAC,SAAS,6CAAoD;IAEhF;;;;OAIG;gBACS,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,EAAE,GAAE,aAAkB;IA2GxE;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAGxB;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;;;OAIG;IACH,IAAI,eAAe,IAAI,eAAe,CAQrC;IAED;;;;OAIG;IACH,IAAI,gBAAgB,IAAI,gBAAgB,CAQvC;IAED,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACG,IAAI,CACT,EAAE,qBAAqB,EAAE,EACzB;QAAE,qBAAqB,EAAE,eAAe,CAAA;KAAE,GACxC,OAAO,CAAC,IAAI,CAAC;IAgFhB;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAcpC;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,SAAS,OAAO,GAAG,OAAO,EAC7D,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACnC,SAAS,CAAC,gBAAgB,CAAC;IAoB9B;;;;;OAKG;IACH,mBAAmB,CAAC,gBAAgB,SAAS,OAAO,GAAG,OAAO,EAC7D,EACC,EAAE,EACF,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,OAAO,EACP,EAAE,gBAAgB,CAAC,gBAAgB,CAAC,GACnC,SAAS,CAAC,gBAAgB,CAAC;IAoB9B,OAAO,CAAC,eAAe;CAwEvB"}
|
package/lib/Device.js
CHANGED
|
@@ -76,46 +76,72 @@ function detectDevice() {
|
|
|
76
76
|
const os = uaParser.getOS();
|
|
77
77
|
const osName = (_g = (_f = os.name) === null || _f === void 0 ? void 0 : _f.toLowerCase()) !== null && _g !== void 0 ? _g : '';
|
|
78
78
|
const osVersion = parseFloat((_h = os.version) !== null && _h !== void 0 ? _h : '0');
|
|
79
|
+
const isIOS = osName === 'ios';
|
|
80
|
+
const isChrome = [
|
|
81
|
+
'chrome',
|
|
82
|
+
'chromium',
|
|
83
|
+
'mobile chrome',
|
|
84
|
+
'chrome webview',
|
|
85
|
+
'chrome headless'
|
|
86
|
+
].includes(browserName);
|
|
87
|
+
const isFirefox = [
|
|
88
|
+
'firefox',
|
|
89
|
+
'mobile firefox',
|
|
90
|
+
'mobile focus'
|
|
91
|
+
].includes(browserName);
|
|
92
|
+
const isSafari = [
|
|
93
|
+
'safari',
|
|
94
|
+
'mobile safari'
|
|
95
|
+
].includes(browserName);
|
|
96
|
+
const isEdge = ['edge'].includes(browserName);
|
|
79
97
|
// Chrome, Chromium, and Edge.
|
|
80
|
-
if (
|
|
98
|
+
if ((isChrome || isEdge) && !isIOS && browserVersion >= 111) {
|
|
81
99
|
return 'Chrome111';
|
|
82
100
|
}
|
|
83
|
-
else if ((
|
|
84
|
-
(
|
|
101
|
+
else if ((isChrome && !isIOS && browserVersion >= 74) ||
|
|
102
|
+
(isEdge && !isIOS && browserVersion >= 88)) {
|
|
85
103
|
return 'Chrome74';
|
|
86
104
|
}
|
|
87
|
-
else if (
|
|
105
|
+
else if (isChrome && !isIOS && browserVersion >= 70) {
|
|
88
106
|
return 'Chrome70';
|
|
89
107
|
}
|
|
90
|
-
else if (
|
|
108
|
+
else if (isChrome && !isIOS && browserVersion >= 67) {
|
|
91
109
|
return 'Chrome67';
|
|
92
110
|
}
|
|
93
|
-
else if (
|
|
111
|
+
else if (isChrome && !isIOS && browserVersion >= 55) {
|
|
94
112
|
return 'Chrome55';
|
|
95
113
|
}
|
|
96
114
|
// Firefox.
|
|
97
|
-
else if (
|
|
115
|
+
else if (isFirefox && !isIOS && browserVersion >= 60) {
|
|
98
116
|
return 'Firefox60';
|
|
99
117
|
}
|
|
100
118
|
// Firefox on iOS (so Safari).
|
|
101
|
-
else if (
|
|
119
|
+
else if (isFirefox && isIOS && osVersion >= 14.3) {
|
|
102
120
|
return 'Safari12';
|
|
103
121
|
}
|
|
104
122
|
// Safari with Unified-Plan support enabled.
|
|
105
|
-
else if (
|
|
123
|
+
else if (isSafari &&
|
|
106
124
|
browserVersion >= 12 &&
|
|
107
125
|
typeof RTCRtpTransceiver !== 'undefined' &&
|
|
108
126
|
RTCRtpTransceiver.prototype.hasOwnProperty('currentDirection')) {
|
|
109
127
|
return 'Safari12';
|
|
110
128
|
}
|
|
111
129
|
// Safari with Plab-B support.
|
|
112
|
-
else if (
|
|
130
|
+
else if (isSafari && browserVersion >= 11) {
|
|
113
131
|
return 'Safari11';
|
|
114
132
|
}
|
|
115
133
|
// Old Edge with ORTC support.
|
|
116
|
-
else if (
|
|
134
|
+
else if (isEdge && !isIOS && browserVersion >= 11 && browserVersion <= 18) {
|
|
117
135
|
return 'Edge11';
|
|
118
136
|
}
|
|
137
|
+
// Best effort for WebKit based browsers in iOS.
|
|
138
|
+
else if (engineName === 'webkit' &&
|
|
139
|
+
isIOS &&
|
|
140
|
+
osVersion >= 14.3 &&
|
|
141
|
+
typeof RTCRtpTransceiver !== 'undefined' &&
|
|
142
|
+
RTCRtpTransceiver.prototype.hasOwnProperty('currentDirection')) {
|
|
143
|
+
return 'Safari12';
|
|
144
|
+
}
|
|
119
145
|
// Best effort for Chromium based browsers.
|
|
120
146
|
else if (engineName === 'blink') {
|
|
121
147
|
const match = ua.match(/(?:(?:Chrome|Chromium))[ /](\w+)/i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReactNativeUnifiedPlan.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNativeUnifiedPlan.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AACvD,OAAO,EACN,eAAe,EAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,sBAAuB,SAAQ,gBAAgB;IAG3D,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,OAAO,CAAC,UAAU,CAAC,CAAY;IAE/B,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAGvE,OAAO,CAAC,iCAAiC,CAAC,CAAmC;IAG7E,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CACxB;IAEX,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAUtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAmBP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAyCpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5D,GAAG,CACF,EACC,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,EAAE,iBAAiB,GAClB,IAAI;IAiFD,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,IAAI,CACT,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"ReactNativeUnifiedPlan.d.ts","sourceRoot":"","sources":["../../src/handlers/ReactNativeUnifiedPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -256,10 +256,12 @@ class ReactNativeUnifiedPlan extends HandlerInterface_1.HandlerInterface {
|
|
|
256
256
|
}
|
|
257
257
|
logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
|
|
258
258
|
await this._pc.setLocalDescription(offer);
|
|
259
|
-
// We
|
|
260
|
-
|
|
261
|
-
//
|
|
262
|
-
|
|
259
|
+
// NOTE: We cannot read generated MID on iOS react-native-webrtc 111.0.0
|
|
260
|
+
// because transceiver.mid is not available until setRemoteDescription()
|
|
261
|
+
// is called, so this is best effort.
|
|
262
|
+
// Issue: https://github.com/react-native-webrtc/react-native-webrtc/issues/1404
|
|
263
|
+
// NOTE: So let's fill MID in sendingRtpParameters later.
|
|
264
|
+
let localId = transceiver.mid;
|
|
263
265
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
264
266
|
offerMediaObject = localSdpObject.media[mediaSectionIdx.idx];
|
|
265
267
|
// Set RTCP CNAME.
|
|
@@ -310,6 +312,11 @@ class ReactNativeUnifiedPlan extends HandlerInterface_1.HandlerInterface {
|
|
|
310
312
|
const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
|
|
311
313
|
logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
|
|
312
314
|
await this._pc.setRemoteDescription(answer);
|
|
315
|
+
// Follow up of iOS react-native-webrtc 111.0.0 issue told above. Now yes,
|
|
316
|
+
// we can read generated MID (if not done above) and fill sendingRtpParameters.
|
|
317
|
+
localId = localId !== null && localId !== void 0 ? localId : transceiver.mid;
|
|
318
|
+
// Set MID.
|
|
319
|
+
sendingRtpParameters.mid = localId;
|
|
313
320
|
// Store in the map.
|
|
314
321
|
this._mapMidTransceiver.set(localId, transceiver);
|
|
315
322
|
return {
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/tests/test.js
CHANGED
|
@@ -35,6 +35,7 @@ const utils = __importStar(require("../utils"));
|
|
|
35
35
|
const RemoteSdp_1 = require("../handlers/sdp/RemoteSdp");
|
|
36
36
|
const FakeHandler_1 = require("../handlers/FakeHandler");
|
|
37
37
|
const fakeParameters = __importStar(require("./fakeParameters"));
|
|
38
|
+
const uaTestCases_1 = require("./uaTestCases");
|
|
38
39
|
const { Device, detectDevice, parseScalabilityMode, debug } = mediasoupClient;
|
|
39
40
|
let device;
|
|
40
41
|
let sendTransport;
|
|
@@ -1271,3 +1272,26 @@ test('parseScalabilityMode() works', () => {
|
|
|
1271
1272
|
expect(parseScalabilityMode('L20T3')).toEqual({ spatialLayers: 20, temporalLayers: 3 });
|
|
1272
1273
|
expect(parseScalabilityMode('S200T3')).toEqual({ spatialLayers: 1, temporalLayers: 1 });
|
|
1273
1274
|
}, 500);
|
|
1275
|
+
describe('detectDevice() assigns proper handler based on UserAgent', () => {
|
|
1276
|
+
const originalNavigator = global.navigator;
|
|
1277
|
+
for (const uaTestCase of uaTestCases_1.uaTestCases) {
|
|
1278
|
+
test(uaTestCase.desc, () => {
|
|
1279
|
+
// @ts-ignore
|
|
1280
|
+
global.navigator =
|
|
1281
|
+
{
|
|
1282
|
+
userAgent: uaTestCase.ua
|
|
1283
|
+
};
|
|
1284
|
+
const originalRTCRtpTransceiver = global.RTCRtpTransceiver;
|
|
1285
|
+
if (uaTestCase.expect === 'Safari12') {
|
|
1286
|
+
global.RTCRtpTransceiver = class Dummy {
|
|
1287
|
+
currentDirection() { }
|
|
1288
|
+
};
|
|
1289
|
+
}
|
|
1290
|
+
expect(detectDevice()).toBe(uaTestCase.expect);
|
|
1291
|
+
// Cleanup.
|
|
1292
|
+
global.RTCRtpTransceiver = originalRTCRtpTransceiver;
|
|
1293
|
+
}, 100);
|
|
1294
|
+
}
|
|
1295
|
+
// Cleanup.
|
|
1296
|
+
global.navigator = originalNavigator;
|
|
1297
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uaTestCases.d.ts","sourceRoot":"","sources":["../../src/tests/uaTestCases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE/C,KAAK,UAAU,GACf;IACC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,UAAU,EAkFnC,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.uaTestCases = void 0;
|
|
4
|
+
exports.uaTestCases = [
|
|
5
|
+
{
|
|
6
|
+
desc: 'Microsoft Edge 100',
|
|
7
|
+
ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.1108.55 Safari/537.36 Edg/100.0.1108.55',
|
|
8
|
+
expect: 'Chrome74'
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
desc: 'Mac (Intel) Chrome 112',
|
|
12
|
+
ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
|
|
13
|
+
expect: 'Chrome111'
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
desc: 'Generic Android Chrome 112',
|
|
17
|
+
ua: 'Mozilla/5.0 (Linux; Android 13; M2012K11AG) AppleWebKit/537.36 (KHTML, like Gecko) Soul/4.0 Chrome/112.0.5615.135 Mobile Safari/537.36',
|
|
18
|
+
expect: 'Chrome111'
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
desc: 'Motorola Edge Chrome 104',
|
|
22
|
+
ua: 'Mozilla/5.0 (Linux; Android 10; motorola edge) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36',
|
|
23
|
+
expect: 'Chrome74'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
desc: 'Microsoft Edge 44',
|
|
27
|
+
ua: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763',
|
|
28
|
+
expect: 'Edge11'
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
desc: 'Firefox 68 (Android)',
|
|
32
|
+
ua: 'Mozilla/5.0 (Android 10; Mobile; rv:68.10.0) Gecko/68.10.0 Firefox/68.10.0',
|
|
33
|
+
expect: 'Firefox60'
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
desc: 'In-app WebView (Android)',
|
|
37
|
+
ua: 'Mozilla/5.0 (Linux; Android 11; G91 Pro Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/114.0.5735.130 Mobile Safari/537.36',
|
|
38
|
+
expect: 'Chrome111'
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
desc: 'Safari 11',
|
|
42
|
+
ua: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_13) AppleWebKit/537.36 (KHTML, like Gecko) Version/11.0.92 Safari/619.28',
|
|
43
|
+
expect: 'Safari11'
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
desc: 'Safari 11 (iPad)',
|
|
47
|
+
ua: 'Mozilla/5.0 (iPad; CPU OS 14_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/11.0 Mobile/15E148 Safari/604.1',
|
|
48
|
+
expect: 'Safari11'
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
desc: 'Brave',
|
|
52
|
+
ua: 'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.4044.113 Safari/5370.36 Brave/9085',
|
|
53
|
+
expect: 'Chrome111'
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
desc: 'In-app WebView (Android) (Facebook)',
|
|
57
|
+
ua: 'Mozilla/5.0 (Linux; Android 12; SM-S908U1 Build/SP1A.210812.016; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/100.0.4896.88 Mobile Safari/537.36 [FB_IAB/FB4A;FBAV/377.0.0.22.107;]',
|
|
58
|
+
expect: 'Chrome74'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
desc: 'Firefox (Linux)',
|
|
62
|
+
ua: 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:109.0) Gecko/20100101 Firefox/114.0',
|
|
63
|
+
expect: 'Firefox60'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
desc: 'Firefox (iOS) - Unsupported',
|
|
67
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/114.0 Mobile/15E148 Safari/605.1.15',
|
|
68
|
+
expect: undefined
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
desc: 'In-app WKWebView (iOS) (TikTok)',
|
|
72
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 musical_ly_21.1.0 JsSdk/2.0 NetType/4G Channel/App Store ByteLocale/ru Region/RU ByteFullLocale/ru-RU isDarkMode/1 WKWebView/1 BytedanceWebview/d8a21c6',
|
|
73
|
+
expect: 'Safari12'
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
desc: 'In-app WkWebView (iOS) (WeChat)',
|
|
77
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.37(0x1800252f) NetType/WIFI Language/zh_CN',
|
|
78
|
+
expect: 'Safari12'
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
desc: 'Chrome Mobile (iOS)',
|
|
82
|
+
ua: 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/114.0.5735.124 Mobile/15E148 Safari/604.1',
|
|
83
|
+
expect: 'Safari12'
|
|
84
|
+
}
|
|
85
|
+
];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mediasoup-client",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.88",
|
|
4
4
|
"description": "mediasoup client side JavaScript library",
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)",
|
|
@@ -77,10 +77,10 @@
|
|
|
77
77
|
"@types/jest": "^29.5.2",
|
|
78
78
|
"@types/sdp-transform": "^2.4.6",
|
|
79
79
|
"@types/ua-parser-js": "^0.7.36",
|
|
80
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
81
|
-
"@typescript-eslint/parser": "^5.
|
|
82
|
-
"eslint": "^8.
|
|
83
|
-
"eslint-plugin-jest": "^27.2.
|
|
80
|
+
"@typescript-eslint/eslint-plugin": "^5.60.0",
|
|
81
|
+
"@typescript-eslint/parser": "^5.60.0",
|
|
82
|
+
"eslint": "^8.43.0",
|
|
83
|
+
"eslint-plugin-jest": "^27.2.2",
|
|
84
84
|
"jest": "^29.5.0",
|
|
85
85
|
"open-cli": "^7.2.0",
|
|
86
86
|
"ts-jest": "^29.1.0",
|