@webex/web-client-media-engine 3.6.0 → 3.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/index.js +409 -414
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +409 -414
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/package.json +1 -1
package/dist/cjs/index.js
CHANGED
|
@@ -10410,321 +10410,6 @@ class TypedEvent {
|
|
|
10410
10410
|
}
|
|
10411
10411
|
}
|
|
10412
10412
|
|
|
10413
|
-
var OfferAnswerType;
|
|
10414
|
-
(function (OfferAnswerType) {
|
|
10415
|
-
OfferAnswerType[OfferAnswerType["LocalOnly"] = 0] = "LocalOnly";
|
|
10416
|
-
OfferAnswerType[OfferAnswerType["Remote"] = 1] = "Remote";
|
|
10417
|
-
})(OfferAnswerType || (OfferAnswerType = {}));
|
|
10418
|
-
class SendOnlyTransceiver extends Transceiver {
|
|
10419
|
-
constructor(rtcRtpTransceiver, mid, csi, munger, mediaType) {
|
|
10420
|
-
super(rtcRtpTransceiver, mid);
|
|
10421
|
-
this.rtxEnabled = false;
|
|
10422
|
-
this.streamMuteStateChange = new TypedEvent();
|
|
10423
|
-
this.streamPublishStateChange = new TypedEvent();
|
|
10424
|
-
this.negotiationNeeded = new TypedEvent();
|
|
10425
|
-
this.namedMediaGroupsChange = new TypedEvent();
|
|
10426
|
-
this.requested = false;
|
|
10427
|
-
this.requestedIdEncodingParamsMap = new Map();
|
|
10428
|
-
this.csi = csi;
|
|
10429
|
-
this.direction = 'sendrecv';
|
|
10430
|
-
this.handleTrackChange = this.handleTrackChange.bind(this);
|
|
10431
|
-
this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
|
|
10432
|
-
this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
|
|
10433
|
-
this.munger = munger;
|
|
10434
|
-
this.mediaType = mediaType;
|
|
10435
|
-
}
|
|
10436
|
-
handleTrackChange() {
|
|
10437
|
-
var _a;
|
|
10438
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10439
|
-
if (this.requested) {
|
|
10440
|
-
yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
|
|
10441
|
-
}
|
|
10442
|
-
});
|
|
10443
|
-
}
|
|
10444
|
-
handleStreamConstraintsChange() {
|
|
10445
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10446
|
-
yield this.updateSendParameters(this.requestedIdEncodingParamsMap);
|
|
10447
|
-
});
|
|
10448
|
-
}
|
|
10449
|
-
handleStreamMuteStateChange() {
|
|
10450
|
-
this.streamMuteStateChange.emit();
|
|
10451
|
-
}
|
|
10452
|
-
replaceTransceiver(newRtcRtpTransceiver) {
|
|
10453
|
-
const _super = Object.create(null, {
|
|
10454
|
-
replaceTransceiver: { get: () => super.replaceTransceiver }
|
|
10455
|
-
});
|
|
10456
|
-
var _a;
|
|
10457
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10458
|
-
_super.replaceTransceiver.call(this, newRtcRtpTransceiver);
|
|
10459
|
-
newRtcRtpTransceiver.direction = this.direction;
|
|
10460
|
-
if (this.requested) {
|
|
10461
|
-
yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
|
|
10462
|
-
}
|
|
10463
|
-
});
|
|
10464
|
-
}
|
|
10465
|
-
replacePublishedStream(newStream) {
|
|
10466
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10467
|
-
const oldStream = this.publishedStream;
|
|
10468
|
-
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
|
|
10469
|
-
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
10470
|
-
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
|
|
10471
|
-
if (this.requested) {
|
|
10472
|
-
yield this.sender.replaceTrack((newStream === null || newStream === void 0 ? void 0 : newStream.outputStream.getTracks()[0]) || null);
|
|
10473
|
-
}
|
|
10474
|
-
this.publishedStream = newStream;
|
|
10475
|
-
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
|
|
10476
|
-
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
10477
|
-
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
|
|
10478
|
-
if ((!oldStream && newStream && !newStream.muted) ||
|
|
10479
|
-
(oldStream && !newStream && !oldStream.muted)) {
|
|
10480
|
-
this.streamPublishStateChange.emit();
|
|
10481
|
-
}
|
|
10482
|
-
else if ((oldStream === null || oldStream === void 0 ? void 0 : oldStream.muted) !== (newStream === null || newStream === void 0 ? void 0 : newStream.muted)) {
|
|
10483
|
-
this.streamMuteStateChange.emit();
|
|
10484
|
-
}
|
|
10485
|
-
if (newStream) {
|
|
10486
|
-
this.updateSendParameters(this.requestedIdEncodingParamsMap);
|
|
10487
|
-
}
|
|
10488
|
-
});
|
|
10489
|
-
}
|
|
10490
|
-
setStreamRequested(requested) {
|
|
10491
|
-
var _a;
|
|
10492
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10493
|
-
if (this.requested !== requested) {
|
|
10494
|
-
this.requested = requested;
|
|
10495
|
-
const newTrack = requested ? ((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null : null;
|
|
10496
|
-
yield this.sender.replaceTrack(newTrack);
|
|
10497
|
-
}
|
|
10498
|
-
});
|
|
10499
|
-
}
|
|
10500
|
-
setNamedMediaGroups(namedMediaGroups) {
|
|
10501
|
-
if (this.mediaType !== exports.MediaType.AudioMain) {
|
|
10502
|
-
throw new Error(`This interface does not allow media types other than AudioMain: ${this.mediaType}`);
|
|
10503
|
-
}
|
|
10504
|
-
this.namedMediaGroups = namedMediaGroups;
|
|
10505
|
-
this.namedMediaGroupsChange.emit();
|
|
10506
|
-
}
|
|
10507
|
-
publishStream(stream) {
|
|
10508
|
-
return this.replacePublishedStream(stream);
|
|
10509
|
-
}
|
|
10510
|
-
unpublishStream() {
|
|
10511
|
-
return this.replacePublishedStream();
|
|
10512
|
-
}
|
|
10513
|
-
get active() {
|
|
10514
|
-
return this._rtcRtpTransceiver.direction === 'sendrecv';
|
|
10515
|
-
}
|
|
10516
|
-
set active(enabled) {
|
|
10517
|
-
this.direction = enabled ? 'sendrecv' : 'inactive';
|
|
10518
|
-
this._rtcRtpTransceiver.direction = this.direction;
|
|
10519
|
-
if (this._rtcRtpTransceiver.direction !== this._rtcRtpTransceiver.currentDirection) {
|
|
10520
|
-
this.negotiationNeeded.emit(OfferAnswerType.Remote);
|
|
10521
|
-
}
|
|
10522
|
-
}
|
|
10523
|
-
getStats() {
|
|
10524
|
-
return this.sender.getStats();
|
|
10525
|
-
}
|
|
10526
|
-
updateSendParameters(requestedIdEncodingParamsMap) {
|
|
10527
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10528
|
-
if (this.publishedStream) {
|
|
10529
|
-
this.setStreamRequested(requestedIdEncodingParamsMap.size > 0);
|
|
10530
|
-
const sendParameters = this.sender.getParameters();
|
|
10531
|
-
sendParameters.encodings.forEach((encoding, index) => {
|
|
10532
|
-
var _a, _b;
|
|
10533
|
-
const encodingParams = requestedIdEncodingParamsMap.get(index);
|
|
10534
|
-
encoding.active = !!encodingParams;
|
|
10535
|
-
if (encodingParams) {
|
|
10536
|
-
const { maxPayloadBitsPerSecond, maxFs, maxWidth, maxHeight } = encodingParams;
|
|
10537
|
-
const scaleDownRatio = getScaleDownRatio((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getSettings().width, (_b = this.publishedStream) === null || _b === void 0 ? void 0 : _b.getSettings().height, maxFs, maxWidth, maxHeight);
|
|
10538
|
-
if (maxPayloadBitsPerSecond !== undefined && maxPayloadBitsPerSecond >= 0) {
|
|
10539
|
-
encoding.maxBitrate = maxPayloadBitsPerSecond;
|
|
10540
|
-
}
|
|
10541
|
-
if (scaleDownRatio !== undefined && scaleDownRatio >= 1.0) {
|
|
10542
|
-
encoding.scaleResolutionDownBy = scaleDownRatio;
|
|
10543
|
-
}
|
|
10544
|
-
}
|
|
10545
|
-
});
|
|
10546
|
-
yield this.sender.setParameters(sendParameters);
|
|
10547
|
-
}
|
|
10548
|
-
this.requestedIdEncodingParamsMap = requestedIdEncodingParamsMap;
|
|
10549
|
-
});
|
|
10550
|
-
}
|
|
10551
|
-
isSimulcastEnabled() {
|
|
10552
|
-
const params = this.sender.getParameters();
|
|
10553
|
-
return params.encodings.length > 1;
|
|
10554
|
-
}
|
|
10555
|
-
mungeLocalDescription(mediaDescription) {
|
|
10556
|
-
this.munger.mungeLocalDescription(mediaDescription, this.isSimulcastEnabled(), this.rtxEnabled);
|
|
10557
|
-
}
|
|
10558
|
-
mungeLocalDescriptionForRemoteServer(mediaDescription) {
|
|
10559
|
-
this.munger.mungeLocalDescriptionForRemoteServer(mediaDescription, getMediaContent(this.mediaType), this.csi);
|
|
10560
|
-
}
|
|
10561
|
-
mungeRemoteDescription(mediaDescription) {
|
|
10562
|
-
this.munger.mungeRemoteDescription(mediaDescription);
|
|
10563
|
-
}
|
|
10564
|
-
get senderIds() {
|
|
10565
|
-
return this.munger.getSenderIds();
|
|
10566
|
-
}
|
|
10567
|
-
get numActiveSimulcastLayers() {
|
|
10568
|
-
var _a;
|
|
10569
|
-
if (getMediaFamily(this.mediaType) === exports.MediaFamily.Video) {
|
|
10570
|
-
return (_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getNumActiveSimulcastLayers();
|
|
10571
|
-
}
|
|
10572
|
-
return this.publishedStream ? 0 : undefined;
|
|
10573
|
-
}
|
|
10574
|
-
getEncodingIndexForStreamId(id) {
|
|
10575
|
-
return this.munger.getEncodingIndexForStreamId(id);
|
|
10576
|
-
}
|
|
10577
|
-
resetSdpMunger() {
|
|
10578
|
-
this.munger.reset();
|
|
10579
|
-
}
|
|
10580
|
-
setCodecParameters(parameters) {
|
|
10581
|
-
this.munger.setCodecParameters(parameters);
|
|
10582
|
-
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
10583
|
-
}
|
|
10584
|
-
deleteCodecParameters(parameters) {
|
|
10585
|
-
this.munger.deleteCodecParameters(parameters);
|
|
10586
|
-
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
10587
|
-
}
|
|
10588
|
-
}
|
|
10589
|
-
|
|
10590
|
-
class SendSlot {
|
|
10591
|
-
constructor(sendTransceiver) {
|
|
10592
|
-
this.sendTransceiver = sendTransceiver;
|
|
10593
|
-
}
|
|
10594
|
-
publishStream(stream) {
|
|
10595
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10596
|
-
if (stream === this.sendTransceiver.publishedStream) {
|
|
10597
|
-
return Promise.resolve();
|
|
10598
|
-
}
|
|
10599
|
-
return this.sendTransceiver.publishStream(stream);
|
|
10600
|
-
});
|
|
10601
|
-
}
|
|
10602
|
-
unpublishStream() {
|
|
10603
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10604
|
-
if (!this.sendTransceiver.publishedStream) {
|
|
10605
|
-
return Promise.resolve();
|
|
10606
|
-
}
|
|
10607
|
-
return this.sendTransceiver.unpublishStream();
|
|
10608
|
-
});
|
|
10609
|
-
}
|
|
10610
|
-
setNamedMediaGroups(namedMediaGroups) {
|
|
10611
|
-
this.sendTransceiver.setNamedMediaGroups(namedMediaGroups);
|
|
10612
|
-
}
|
|
10613
|
-
get active() {
|
|
10614
|
-
return this.sendTransceiver.active;
|
|
10615
|
-
}
|
|
10616
|
-
set active(active) {
|
|
10617
|
-
this.sendTransceiver.active = active;
|
|
10618
|
-
}
|
|
10619
|
-
setCodecParameters(parameters) {
|
|
10620
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10621
|
-
this.sendTransceiver.setCodecParameters(parameters);
|
|
10622
|
-
});
|
|
10623
|
-
}
|
|
10624
|
-
deleteCodecParameters(parameters) {
|
|
10625
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10626
|
-
this.sendTransceiver.deleteCodecParameters(parameters);
|
|
10627
|
-
});
|
|
10628
|
-
}
|
|
10629
|
-
}
|
|
10630
|
-
|
|
10631
|
-
class StatsManager {
|
|
10632
|
-
constructor(statsGetter, statsPreprocessor = () => __awaiter(this, void 0, void 0, function* () { })) {
|
|
10633
|
-
this.statsGetter = statsGetter;
|
|
10634
|
-
this.statsPreProcessor = statsPreprocessor;
|
|
10635
|
-
}
|
|
10636
|
-
getStats() {
|
|
10637
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
10638
|
-
const statsReport = yield this.statsGetter();
|
|
10639
|
-
const statsMap = new Map();
|
|
10640
|
-
statsReport.forEach((stats, key) => statsMap.set(key, stats));
|
|
10641
|
-
yield this.statsPreProcessor(statsMap);
|
|
10642
|
-
return statsMap;
|
|
10643
|
-
});
|
|
10644
|
-
}
|
|
10645
|
-
}
|
|
10646
|
-
|
|
10647
|
-
const organizeTransceiverStats = (sendTransceivers, recvTransceivers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
10648
|
-
const result = {
|
|
10649
|
-
audio: {
|
|
10650
|
-
senders: [],
|
|
10651
|
-
receivers: [],
|
|
10652
|
-
},
|
|
10653
|
-
video: {
|
|
10654
|
-
senders: [],
|
|
10655
|
-
receivers: [],
|
|
10656
|
-
},
|
|
10657
|
-
screenShareAudio: {
|
|
10658
|
-
senders: [],
|
|
10659
|
-
receivers: [],
|
|
10660
|
-
},
|
|
10661
|
-
screenShareVideo: {
|
|
10662
|
-
senders: [],
|
|
10663
|
-
receivers: [],
|
|
10664
|
-
},
|
|
10665
|
-
};
|
|
10666
|
-
yield Promise.all([...sendTransceivers.entries()].map(([mediaType, transceiver]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
10667
|
-
var _a;
|
|
10668
|
-
const item = {
|
|
10669
|
-
report: yield transceiver.getStats(),
|
|
10670
|
-
mid: transceiver.mid,
|
|
10671
|
-
csi: transceiver.csi,
|
|
10672
|
-
currentDirection: 'sendonly',
|
|
10673
|
-
localTrackLabel: (_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.label,
|
|
10674
|
-
};
|
|
10675
|
-
if (mediaType === exports.MediaType.AudioMain) {
|
|
10676
|
-
result.audio.senders.push(item);
|
|
10677
|
-
}
|
|
10678
|
-
if (mediaType === exports.MediaType.VideoMain) {
|
|
10679
|
-
result.video.senders.push(item);
|
|
10680
|
-
}
|
|
10681
|
-
if (mediaType === exports.MediaType.AudioSlides) {
|
|
10682
|
-
result.screenShareAudio.senders.push(item);
|
|
10683
|
-
}
|
|
10684
|
-
if (mediaType === exports.MediaType.VideoSlides) {
|
|
10685
|
-
result.screenShareVideo.senders.push(item);
|
|
10686
|
-
}
|
|
10687
|
-
})));
|
|
10688
|
-
yield Promise.all([...recvTransceivers.entries()].map(([mediaType, transceivers]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
10689
|
-
return Promise.all(transceivers.map((t) => __awaiter(void 0, void 0, void 0, function* () {
|
|
10690
|
-
var _b, _c;
|
|
10691
|
-
const item = {
|
|
10692
|
-
report: yield t.getStats(),
|
|
10693
|
-
mid: (_b = t.receiveSlot.id) === null || _b === void 0 ? void 0 : _b.mid,
|
|
10694
|
-
csi: t.receiveSlot.currentRxCsi,
|
|
10695
|
-
currentDirection: 'recvonly',
|
|
10696
|
-
localTrackLabel: (_c = t.receiveSlot.stream.getTracks()[0]) === null || _c === void 0 ? void 0 : _c.label,
|
|
10697
|
-
};
|
|
10698
|
-
if (mediaType === exports.MediaType.AudioMain) {
|
|
10699
|
-
result.audio.receivers.push(item);
|
|
10700
|
-
}
|
|
10701
|
-
if (mediaType === exports.MediaType.VideoMain) {
|
|
10702
|
-
result.video.receivers.push(item);
|
|
10703
|
-
}
|
|
10704
|
-
if (mediaType === exports.MediaType.AudioSlides) {
|
|
10705
|
-
result.screenShareAudio.receivers.push(item);
|
|
10706
|
-
}
|
|
10707
|
-
if (mediaType === exports.MediaType.VideoSlides) {
|
|
10708
|
-
result.screenShareVideo.receivers.push(item);
|
|
10709
|
-
}
|
|
10710
|
-
})));
|
|
10711
|
-
})));
|
|
10712
|
-
return result;
|
|
10713
|
-
});
|
|
10714
|
-
|
|
10715
|
-
var es5 = {exports: {}};
|
|
10716
|
-
|
|
10717
|
-
(function (module, exports) {
|
|
10718
|
-
!function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t];}));};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default;},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default;},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default;},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default;},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return {name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return {name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default;},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "playstation 4"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}},{test:function(e){return "roku"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default;},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default;}})}));
|
|
10719
|
-
}(es5));
|
|
10720
|
-
|
|
10721
|
-
var Bowser = /*@__PURE__*/getDefaultExportFromCjs(es5.exports);
|
|
10722
|
-
|
|
10723
|
-
function getBrowserDetails() {
|
|
10724
|
-
const browser = Bowser.getParser(window.navigator.userAgent);
|
|
10725
|
-
return browser.getBrowser();
|
|
10726
|
-
}
|
|
10727
|
-
|
|
10728
10413
|
/**
|
|
10729
10414
|
* Creates a continuation function with some arguments already applied.
|
|
10730
10415
|
*
|
|
@@ -13821,112 +13506,422 @@ function whilst(test, iteratee, callback) {
|
|
|
13821
13506
|
_fn(next);
|
|
13822
13507
|
}
|
|
13823
13508
|
|
|
13824
|
-
return _test(check);
|
|
13509
|
+
return _test(check);
|
|
13510
|
+
}
|
|
13511
|
+
awaitify(whilst, 3);
|
|
13512
|
+
|
|
13513
|
+
/**
|
|
13514
|
+
* Runs the `tasks` array of functions in series, each passing their results to
|
|
13515
|
+
* the next in the array. However, if any of the `tasks` pass an error to their
|
|
13516
|
+
* own callback, the next function is not executed, and the main `callback` is
|
|
13517
|
+
* immediately called with the error.
|
|
13518
|
+
*
|
|
13519
|
+
* @name waterfall
|
|
13520
|
+
* @static
|
|
13521
|
+
* @memberOf module:ControlFlow
|
|
13522
|
+
* @method
|
|
13523
|
+
* @category Control Flow
|
|
13524
|
+
* @param {Array} tasks - An array of [async functions]{@link AsyncFunction}
|
|
13525
|
+
* to run.
|
|
13526
|
+
* Each function should complete with any number of `result` values.
|
|
13527
|
+
* The `result` values will be passed as arguments, in order, to the next task.
|
|
13528
|
+
* @param {Function} [callback] - An optional callback to run once all the
|
|
13529
|
+
* functions have completed. This will be passed the results of the last task's
|
|
13530
|
+
* callback. Invoked with (err, [results]).
|
|
13531
|
+
* @returns {Promise} a promise, if a callback is omitted
|
|
13532
|
+
* @example
|
|
13533
|
+
*
|
|
13534
|
+
* async.waterfall([
|
|
13535
|
+
* function(callback) {
|
|
13536
|
+
* callback(null, 'one', 'two');
|
|
13537
|
+
* },
|
|
13538
|
+
* function(arg1, arg2, callback) {
|
|
13539
|
+
* // arg1 now equals 'one' and arg2 now equals 'two'
|
|
13540
|
+
* callback(null, 'three');
|
|
13541
|
+
* },
|
|
13542
|
+
* function(arg1, callback) {
|
|
13543
|
+
* // arg1 now equals 'three'
|
|
13544
|
+
* callback(null, 'done');
|
|
13545
|
+
* }
|
|
13546
|
+
* ], function (err, result) {
|
|
13547
|
+
* // result now equals 'done'
|
|
13548
|
+
* });
|
|
13549
|
+
*
|
|
13550
|
+
* // Or, with named functions:
|
|
13551
|
+
* async.waterfall([
|
|
13552
|
+
* myFirstFunction,
|
|
13553
|
+
* mySecondFunction,
|
|
13554
|
+
* myLastFunction,
|
|
13555
|
+
* ], function (err, result) {
|
|
13556
|
+
* // result now equals 'done'
|
|
13557
|
+
* });
|
|
13558
|
+
* function myFirstFunction(callback) {
|
|
13559
|
+
* callback(null, 'one', 'two');
|
|
13560
|
+
* }
|
|
13561
|
+
* function mySecondFunction(arg1, arg2, callback) {
|
|
13562
|
+
* // arg1 now equals 'one' and arg2 now equals 'two'
|
|
13563
|
+
* callback(null, 'three');
|
|
13564
|
+
* }
|
|
13565
|
+
* function myLastFunction(arg1, callback) {
|
|
13566
|
+
* // arg1 now equals 'three'
|
|
13567
|
+
* callback(null, 'done');
|
|
13568
|
+
* }
|
|
13569
|
+
*/
|
|
13570
|
+
function waterfall (tasks, callback) {
|
|
13571
|
+
callback = once(callback);
|
|
13572
|
+
if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
|
|
13573
|
+
if (!tasks.length) return callback();
|
|
13574
|
+
var taskIndex = 0;
|
|
13575
|
+
|
|
13576
|
+
function nextTask(args) {
|
|
13577
|
+
var task = wrapAsync(tasks[taskIndex++]);
|
|
13578
|
+
task(...args, onlyOnce(next));
|
|
13579
|
+
}
|
|
13580
|
+
|
|
13581
|
+
function next(err, ...args) {
|
|
13582
|
+
if (err === false) return
|
|
13583
|
+
if (err || taskIndex === tasks.length) {
|
|
13584
|
+
return callback(err, ...args);
|
|
13585
|
+
}
|
|
13586
|
+
nextTask(args);
|
|
13587
|
+
}
|
|
13588
|
+
|
|
13589
|
+
nextTask([]);
|
|
13590
|
+
}
|
|
13591
|
+
|
|
13592
|
+
awaitify(waterfall);
|
|
13593
|
+
|
|
13594
|
+
function processTasks(task, finishedCallback) {
|
|
13595
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13596
|
+
try {
|
|
13597
|
+
yield task();
|
|
13598
|
+
finishedCallback();
|
|
13599
|
+
}
|
|
13600
|
+
catch (e) {
|
|
13601
|
+
finishedCallback(e);
|
|
13602
|
+
}
|
|
13603
|
+
});
|
|
13604
|
+
}
|
|
13605
|
+
class AsyncQueue {
|
|
13606
|
+
constructor() {
|
|
13607
|
+
this.queue = queue$1(processTasks, 1);
|
|
13608
|
+
}
|
|
13609
|
+
push(task) {
|
|
13610
|
+
return this.queue.pushAsync(task);
|
|
13611
|
+
}
|
|
13612
|
+
empty() {
|
|
13613
|
+
return this.queue.empty();
|
|
13614
|
+
}
|
|
13615
|
+
}
|
|
13616
|
+
|
|
13617
|
+
var OfferAnswerType;
|
|
13618
|
+
(function (OfferAnswerType) {
|
|
13619
|
+
OfferAnswerType[OfferAnswerType["LocalOnly"] = 0] = "LocalOnly";
|
|
13620
|
+
OfferAnswerType[OfferAnswerType["Remote"] = 1] = "Remote";
|
|
13621
|
+
})(OfferAnswerType || (OfferAnswerType = {}));
|
|
13622
|
+
class SendOnlyTransceiver extends Transceiver {
|
|
13623
|
+
constructor(rtcRtpTransceiver, mid, csi, munger, mediaType) {
|
|
13624
|
+
super(rtcRtpTransceiver, mid);
|
|
13625
|
+
this.rtxEnabled = false;
|
|
13626
|
+
this.streamMuteStateChange = new TypedEvent();
|
|
13627
|
+
this.streamPublishStateChange = new TypedEvent();
|
|
13628
|
+
this.negotiationNeeded = new TypedEvent();
|
|
13629
|
+
this.namedMediaGroupsChange = new TypedEvent();
|
|
13630
|
+
this.requestedIdEncodingParamsMap = new Map();
|
|
13631
|
+
this.updateSendParametersQueue = new AsyncQueue();
|
|
13632
|
+
this.csi = csi;
|
|
13633
|
+
this.direction = 'sendrecv';
|
|
13634
|
+
this.handleTrackChange = this.handleTrackChange.bind(this);
|
|
13635
|
+
this.handleStreamConstraintsChange = this.handleStreamConstraintsChange.bind(this);
|
|
13636
|
+
this.handleStreamMuteStateChange = this.handleStreamMuteStateChange.bind(this);
|
|
13637
|
+
this.munger = munger;
|
|
13638
|
+
this.mediaType = mediaType;
|
|
13639
|
+
}
|
|
13640
|
+
handleTrackChange() {
|
|
13641
|
+
var _a;
|
|
13642
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13643
|
+
if (this.requested) {
|
|
13644
|
+
yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
|
|
13645
|
+
}
|
|
13646
|
+
});
|
|
13647
|
+
}
|
|
13648
|
+
handleStreamConstraintsChange() {
|
|
13649
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13650
|
+
yield this.updateSendParameters(this.requestedIdEncodingParamsMap);
|
|
13651
|
+
});
|
|
13652
|
+
}
|
|
13653
|
+
handleStreamMuteStateChange() {
|
|
13654
|
+
this.streamMuteStateChange.emit();
|
|
13655
|
+
}
|
|
13656
|
+
get requested() {
|
|
13657
|
+
return this.requestedIdEncodingParamsMap.size > 0;
|
|
13658
|
+
}
|
|
13659
|
+
replaceTransceiver(newRtcRtpTransceiver) {
|
|
13660
|
+
const _super = Object.create(null, {
|
|
13661
|
+
replaceTransceiver: { get: () => super.replaceTransceiver }
|
|
13662
|
+
});
|
|
13663
|
+
var _a;
|
|
13664
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13665
|
+
_super.replaceTransceiver.call(this, newRtcRtpTransceiver);
|
|
13666
|
+
newRtcRtpTransceiver.direction = this.direction;
|
|
13667
|
+
if (this.requested) {
|
|
13668
|
+
yield this.sender.replaceTrack(((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.outputStream.getTracks()[0]) || null);
|
|
13669
|
+
}
|
|
13670
|
+
});
|
|
13671
|
+
}
|
|
13672
|
+
replacePublishedStream(newStream) {
|
|
13673
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13674
|
+
const oldStream = this.publishedStream;
|
|
13675
|
+
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
|
|
13676
|
+
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
13677
|
+
oldStream === null || oldStream === void 0 ? void 0 : oldStream.off(exports.StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
|
|
13678
|
+
if (this.requested) {
|
|
13679
|
+
yield this.sender.replaceTrack((newStream === null || newStream === void 0 ? void 0 : newStream.outputStream.getTracks()[0]) || null);
|
|
13680
|
+
}
|
|
13681
|
+
this.publishedStream = newStream;
|
|
13682
|
+
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.OutputTrackChange, this.handleTrackChange);
|
|
13683
|
+
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.LocalStreamEventNames.ConstraintsChange, this.handleStreamConstraintsChange);
|
|
13684
|
+
newStream === null || newStream === void 0 ? void 0 : newStream.on(exports.StreamEventNames.MuteStateChange, this.handleStreamMuteStateChange);
|
|
13685
|
+
if ((!oldStream && newStream && !newStream.muted) ||
|
|
13686
|
+
(oldStream && !newStream && !oldStream.muted)) {
|
|
13687
|
+
this.streamPublishStateChange.emit();
|
|
13688
|
+
}
|
|
13689
|
+
else if ((oldStream === null || oldStream === void 0 ? void 0 : oldStream.muted) !== (newStream === null || newStream === void 0 ? void 0 : newStream.muted)) {
|
|
13690
|
+
this.streamMuteStateChange.emit();
|
|
13691
|
+
}
|
|
13692
|
+
});
|
|
13693
|
+
}
|
|
13694
|
+
setNamedMediaGroups(namedMediaGroups) {
|
|
13695
|
+
if (this.mediaType !== exports.MediaType.AudioMain) {
|
|
13696
|
+
throw new Error(`This interface does not allow media types other than AudioMain: ${this.mediaType}`);
|
|
13697
|
+
}
|
|
13698
|
+
this.namedMediaGroups = namedMediaGroups;
|
|
13699
|
+
this.namedMediaGroupsChange.emit();
|
|
13700
|
+
}
|
|
13701
|
+
publishStream(stream) {
|
|
13702
|
+
return this.replacePublishedStream(stream);
|
|
13703
|
+
}
|
|
13704
|
+
unpublishStream() {
|
|
13705
|
+
return this.replacePublishedStream();
|
|
13706
|
+
}
|
|
13707
|
+
get active() {
|
|
13708
|
+
return this._rtcRtpTransceiver.direction === 'sendrecv';
|
|
13709
|
+
}
|
|
13710
|
+
set active(enabled) {
|
|
13711
|
+
this.direction = enabled ? 'sendrecv' : 'inactive';
|
|
13712
|
+
this._rtcRtpTransceiver.direction = this.direction;
|
|
13713
|
+
if (this._rtcRtpTransceiver.direction !== this._rtcRtpTransceiver.currentDirection) {
|
|
13714
|
+
this.negotiationNeeded.emit(OfferAnswerType.Remote);
|
|
13715
|
+
}
|
|
13716
|
+
}
|
|
13717
|
+
getStats() {
|
|
13718
|
+
return this.sender.getStats();
|
|
13719
|
+
}
|
|
13720
|
+
updateSendParameters(requestedIdEncodingParamsMap) {
|
|
13721
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13722
|
+
return this.updateSendParametersQueue.push(() => __awaiter(this, void 0, void 0, function* () {
|
|
13723
|
+
if (this.publishedStream) {
|
|
13724
|
+
const requested = requestedIdEncodingParamsMap.size > 0;
|
|
13725
|
+
if (this.requested !== requested) {
|
|
13726
|
+
this.sender.replaceTrack(requested ? this.publishedStream.outputStream.getTracks()[0] || null : null);
|
|
13727
|
+
}
|
|
13728
|
+
const sendParameters = this.sender.getParameters();
|
|
13729
|
+
sendParameters.encodings.forEach((encoding, index) => {
|
|
13730
|
+
var _a, _b;
|
|
13731
|
+
const encodingParams = requestedIdEncodingParamsMap.get(index);
|
|
13732
|
+
encoding.active = !!encodingParams;
|
|
13733
|
+
if (encodingParams) {
|
|
13734
|
+
const { maxPayloadBitsPerSecond, maxFs, maxWidth, maxHeight } = encodingParams;
|
|
13735
|
+
const scaleDownRatio = getScaleDownRatio((_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getSettings().width, (_b = this.publishedStream) === null || _b === void 0 ? void 0 : _b.getSettings().height, maxFs, maxWidth, maxHeight);
|
|
13736
|
+
if (maxPayloadBitsPerSecond !== undefined && maxPayloadBitsPerSecond >= 0) {
|
|
13737
|
+
encoding.maxBitrate = maxPayloadBitsPerSecond;
|
|
13738
|
+
}
|
|
13739
|
+
if (scaleDownRatio !== undefined && scaleDownRatio >= 1.0) {
|
|
13740
|
+
encoding.scaleResolutionDownBy = scaleDownRatio;
|
|
13741
|
+
}
|
|
13742
|
+
}
|
|
13743
|
+
});
|
|
13744
|
+
yield this.sender.setParameters(sendParameters);
|
|
13745
|
+
}
|
|
13746
|
+
this.requestedIdEncodingParamsMap = requestedIdEncodingParamsMap;
|
|
13747
|
+
}));
|
|
13748
|
+
});
|
|
13749
|
+
}
|
|
13750
|
+
isSimulcastEnabled() {
|
|
13751
|
+
const params = this.sender.getParameters();
|
|
13752
|
+
return params.encodings.length > 1;
|
|
13753
|
+
}
|
|
13754
|
+
mungeLocalDescription(mediaDescription) {
|
|
13755
|
+
this.munger.mungeLocalDescription(mediaDescription, this.isSimulcastEnabled(), this.rtxEnabled);
|
|
13756
|
+
}
|
|
13757
|
+
mungeLocalDescriptionForRemoteServer(mediaDescription) {
|
|
13758
|
+
this.munger.mungeLocalDescriptionForRemoteServer(mediaDescription, getMediaContent(this.mediaType), this.csi);
|
|
13759
|
+
}
|
|
13760
|
+
mungeRemoteDescription(mediaDescription) {
|
|
13761
|
+
this.munger.mungeRemoteDescription(mediaDescription);
|
|
13762
|
+
}
|
|
13763
|
+
get senderIds() {
|
|
13764
|
+
return this.munger.getSenderIds();
|
|
13765
|
+
}
|
|
13766
|
+
get numActiveSimulcastLayers() {
|
|
13767
|
+
var _a;
|
|
13768
|
+
if (getMediaFamily(this.mediaType) === exports.MediaFamily.Video) {
|
|
13769
|
+
return (_a = this.publishedStream) === null || _a === void 0 ? void 0 : _a.getNumActiveSimulcastLayers();
|
|
13770
|
+
}
|
|
13771
|
+
return this.publishedStream ? 0 : undefined;
|
|
13772
|
+
}
|
|
13773
|
+
getEncodingIndexForStreamId(id) {
|
|
13774
|
+
return this.munger.getEncodingIndexForStreamId(id);
|
|
13775
|
+
}
|
|
13776
|
+
resetSdpMunger() {
|
|
13777
|
+
this.munger.reset();
|
|
13778
|
+
}
|
|
13779
|
+
setCodecParameters(parameters) {
|
|
13780
|
+
this.munger.setCodecParameters(parameters);
|
|
13781
|
+
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
13782
|
+
}
|
|
13783
|
+
deleteCodecParameters(parameters) {
|
|
13784
|
+
this.munger.deleteCodecParameters(parameters);
|
|
13785
|
+
this.negotiationNeeded.emit(OfferAnswerType.LocalOnly);
|
|
13786
|
+
}
|
|
13787
|
+
}
|
|
13788
|
+
|
|
13789
|
+
class SendSlot {
|
|
13790
|
+
constructor(sendTransceiver) {
|
|
13791
|
+
this.sendTransceiver = sendTransceiver;
|
|
13792
|
+
}
|
|
13793
|
+
publishStream(stream) {
|
|
13794
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13795
|
+
if (stream === this.sendTransceiver.publishedStream) {
|
|
13796
|
+
return Promise.resolve();
|
|
13797
|
+
}
|
|
13798
|
+
return this.sendTransceiver.publishStream(stream);
|
|
13799
|
+
});
|
|
13800
|
+
}
|
|
13801
|
+
unpublishStream() {
|
|
13802
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13803
|
+
if (!this.sendTransceiver.publishedStream) {
|
|
13804
|
+
return Promise.resolve();
|
|
13805
|
+
}
|
|
13806
|
+
return this.sendTransceiver.unpublishStream();
|
|
13807
|
+
});
|
|
13808
|
+
}
|
|
13809
|
+
setNamedMediaGroups(namedMediaGroups) {
|
|
13810
|
+
this.sendTransceiver.setNamedMediaGroups(namedMediaGroups);
|
|
13811
|
+
}
|
|
13812
|
+
get active() {
|
|
13813
|
+
return this.sendTransceiver.active;
|
|
13814
|
+
}
|
|
13815
|
+
set active(active) {
|
|
13816
|
+
this.sendTransceiver.active = active;
|
|
13817
|
+
}
|
|
13818
|
+
setCodecParameters(parameters) {
|
|
13819
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13820
|
+
this.sendTransceiver.setCodecParameters(parameters);
|
|
13821
|
+
});
|
|
13822
|
+
}
|
|
13823
|
+
deleteCodecParameters(parameters) {
|
|
13824
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13825
|
+
this.sendTransceiver.deleteCodecParameters(parameters);
|
|
13826
|
+
});
|
|
13827
|
+
}
|
|
13825
13828
|
}
|
|
13826
|
-
awaitify(whilst, 3);
|
|
13827
13829
|
|
|
13828
|
-
|
|
13829
|
-
|
|
13830
|
-
|
|
13831
|
-
|
|
13832
|
-
|
|
13833
|
-
|
|
13834
|
-
*
|
|
13835
|
-
|
|
13836
|
-
|
|
13837
|
-
|
|
13838
|
-
|
|
13839
|
-
|
|
13840
|
-
|
|
13841
|
-
|
|
13842
|
-
|
|
13843
|
-
* @param {Function} [callback] - An optional callback to run once all the
|
|
13844
|
-
* functions have completed. This will be passed the results of the last task's
|
|
13845
|
-
* callback. Invoked with (err, [results]).
|
|
13846
|
-
* @returns {Promise} a promise, if a callback is omitted
|
|
13847
|
-
* @example
|
|
13848
|
-
*
|
|
13849
|
-
* async.waterfall([
|
|
13850
|
-
* function(callback) {
|
|
13851
|
-
* callback(null, 'one', 'two');
|
|
13852
|
-
* },
|
|
13853
|
-
* function(arg1, arg2, callback) {
|
|
13854
|
-
* // arg1 now equals 'one' and arg2 now equals 'two'
|
|
13855
|
-
* callback(null, 'three');
|
|
13856
|
-
* },
|
|
13857
|
-
* function(arg1, callback) {
|
|
13858
|
-
* // arg1 now equals 'three'
|
|
13859
|
-
* callback(null, 'done');
|
|
13860
|
-
* }
|
|
13861
|
-
* ], function (err, result) {
|
|
13862
|
-
* // result now equals 'done'
|
|
13863
|
-
* });
|
|
13864
|
-
*
|
|
13865
|
-
* // Or, with named functions:
|
|
13866
|
-
* async.waterfall([
|
|
13867
|
-
* myFirstFunction,
|
|
13868
|
-
* mySecondFunction,
|
|
13869
|
-
* myLastFunction,
|
|
13870
|
-
* ], function (err, result) {
|
|
13871
|
-
* // result now equals 'done'
|
|
13872
|
-
* });
|
|
13873
|
-
* function myFirstFunction(callback) {
|
|
13874
|
-
* callback(null, 'one', 'two');
|
|
13875
|
-
* }
|
|
13876
|
-
* function mySecondFunction(arg1, arg2, callback) {
|
|
13877
|
-
* // arg1 now equals 'one' and arg2 now equals 'two'
|
|
13878
|
-
* callback(null, 'three');
|
|
13879
|
-
* }
|
|
13880
|
-
* function myLastFunction(arg1, callback) {
|
|
13881
|
-
* // arg1 now equals 'three'
|
|
13882
|
-
* callback(null, 'done');
|
|
13883
|
-
* }
|
|
13884
|
-
*/
|
|
13885
|
-
function waterfall (tasks, callback) {
|
|
13886
|
-
callback = once(callback);
|
|
13887
|
-
if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));
|
|
13888
|
-
if (!tasks.length) return callback();
|
|
13889
|
-
var taskIndex = 0;
|
|
13830
|
+
class StatsManager {
|
|
13831
|
+
constructor(statsGetter, statsPreprocessor = () => __awaiter(this, void 0, void 0, function* () { })) {
|
|
13832
|
+
this.statsGetter = statsGetter;
|
|
13833
|
+
this.statsPreProcessor = statsPreprocessor;
|
|
13834
|
+
}
|
|
13835
|
+
getStats() {
|
|
13836
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13837
|
+
const statsReport = yield this.statsGetter();
|
|
13838
|
+
const statsMap = new Map();
|
|
13839
|
+
statsReport.forEach((stats, key) => statsMap.set(key, stats));
|
|
13840
|
+
yield this.statsPreProcessor(statsMap);
|
|
13841
|
+
return statsMap;
|
|
13842
|
+
});
|
|
13843
|
+
}
|
|
13844
|
+
}
|
|
13890
13845
|
|
|
13891
|
-
|
|
13892
|
-
|
|
13893
|
-
|
|
13894
|
-
|
|
13846
|
+
const organizeTransceiverStats = (sendTransceivers, recvTransceivers) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13847
|
+
const result = {
|
|
13848
|
+
audio: {
|
|
13849
|
+
senders: [],
|
|
13850
|
+
receivers: [],
|
|
13851
|
+
},
|
|
13852
|
+
video: {
|
|
13853
|
+
senders: [],
|
|
13854
|
+
receivers: [],
|
|
13855
|
+
},
|
|
13856
|
+
screenShareAudio: {
|
|
13857
|
+
senders: [],
|
|
13858
|
+
receivers: [],
|
|
13859
|
+
},
|
|
13860
|
+
screenShareVideo: {
|
|
13861
|
+
senders: [],
|
|
13862
|
+
receivers: [],
|
|
13863
|
+
},
|
|
13864
|
+
};
|
|
13865
|
+
yield Promise.all([...sendTransceivers.entries()].map(([mediaType, transceiver]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13866
|
+
var _a;
|
|
13867
|
+
const item = {
|
|
13868
|
+
report: yield transceiver.getStats(),
|
|
13869
|
+
mid: transceiver.mid,
|
|
13870
|
+
csi: transceiver.csi,
|
|
13871
|
+
currentDirection: 'sendonly',
|
|
13872
|
+
localTrackLabel: (_a = transceiver.publishedStream) === null || _a === void 0 ? void 0 : _a.label,
|
|
13873
|
+
};
|
|
13874
|
+
if (mediaType === exports.MediaType.AudioMain) {
|
|
13875
|
+
result.audio.senders.push(item);
|
|
13876
|
+
}
|
|
13877
|
+
if (mediaType === exports.MediaType.VideoMain) {
|
|
13878
|
+
result.video.senders.push(item);
|
|
13879
|
+
}
|
|
13880
|
+
if (mediaType === exports.MediaType.AudioSlides) {
|
|
13881
|
+
result.screenShareAudio.senders.push(item);
|
|
13882
|
+
}
|
|
13883
|
+
if (mediaType === exports.MediaType.VideoSlides) {
|
|
13884
|
+
result.screenShareVideo.senders.push(item);
|
|
13885
|
+
}
|
|
13886
|
+
})));
|
|
13887
|
+
yield Promise.all([...recvTransceivers.entries()].map(([mediaType, transceivers]) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13888
|
+
return Promise.all(transceivers.map((t) => __awaiter(void 0, void 0, void 0, function* () {
|
|
13889
|
+
var _b, _c;
|
|
13890
|
+
const item = {
|
|
13891
|
+
report: yield t.getStats(),
|
|
13892
|
+
mid: (_b = t.receiveSlot.id) === null || _b === void 0 ? void 0 : _b.mid,
|
|
13893
|
+
csi: t.receiveSlot.currentRxCsi,
|
|
13894
|
+
currentDirection: 'recvonly',
|
|
13895
|
+
localTrackLabel: (_c = t.receiveSlot.stream.getTracks()[0]) === null || _c === void 0 ? void 0 : _c.label,
|
|
13896
|
+
};
|
|
13897
|
+
if (mediaType === exports.MediaType.AudioMain) {
|
|
13898
|
+
result.audio.receivers.push(item);
|
|
13899
|
+
}
|
|
13900
|
+
if (mediaType === exports.MediaType.VideoMain) {
|
|
13901
|
+
result.video.receivers.push(item);
|
|
13902
|
+
}
|
|
13903
|
+
if (mediaType === exports.MediaType.AudioSlides) {
|
|
13904
|
+
result.screenShareAudio.receivers.push(item);
|
|
13905
|
+
}
|
|
13906
|
+
if (mediaType === exports.MediaType.VideoSlides) {
|
|
13907
|
+
result.screenShareVideo.receivers.push(item);
|
|
13908
|
+
}
|
|
13909
|
+
})));
|
|
13910
|
+
})));
|
|
13911
|
+
return result;
|
|
13912
|
+
});
|
|
13895
13913
|
|
|
13896
|
-
|
|
13897
|
-
if (err === false) return
|
|
13898
|
-
if (err || taskIndex === tasks.length) {
|
|
13899
|
-
return callback(err, ...args);
|
|
13900
|
-
}
|
|
13901
|
-
nextTask(args);
|
|
13902
|
-
}
|
|
13914
|
+
var es5 = {exports: {}};
|
|
13903
13915
|
|
|
13904
|
-
|
|
13905
|
-
}
|
|
13916
|
+
(function (module, exports) {
|
|
13917
|
+
!function(e,t){module.exports=t();}(commonjsGlobal,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=90)}({17:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=r(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""},e.getSecondMatch=function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""},e.matchAndReturnConst=function(e,t,r){if(e.test(t))return r},e.getWindowsVersionName=function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return "Leopard";case 6:return "Snow Leopard";case 7:return "Lion";case 8:return "Mountain Lion";case 9:return "Mavericks";case 10:return "Yosemite";case 11:return "El Capitan";case 12:return "Sierra";case 13:return "High Sierra";case 14:return "Mojave";case 15:return "Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,r,n){void 0===n&&(n=!1);var i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),a=Math.max(i,s),o=0,u=e.map([t,r],(function(t){var r=a-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(n&&(o=a-Math.min(i,s)),a-=1;a>=o;){if(u[0][a]>u[1][a])return 1;if(u[0][a]===u[1][a]){if(a===o)return 0;a-=1;}else if(u[0][a]<u[1][a])return -1}},e.map=function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n},e.find=function(e,t){var r,n;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(r=0,n=e.length;r<n;r+=1){var i=e[r];if(t(i,r))return i}},e.assign=function(e){for(var t,r,n=e,i=arguments.length,s=new Array(i>1?i-1:0),a=1;a<i;a++)s[a-1]=arguments[a];if(Object.assign)return Object.assign.apply(Object,[e].concat(s));var o=function(){var e=s[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){n[t]=e[t];}));};for(t=0,r=s.length;t<r;t+=1)o();return e},e.getBrowserAlias=function(e){return n.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return n.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default;},18:function(e,t,r){t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0;t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"};t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"};t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"};t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"};t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"};},90:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(91))&&n.__esModule?n:{default:n},s=r(18);function a(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var o=function(){function e(){}var t,r,n;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,n=[{key:"BROWSER_MAP",get:function(){return s.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return s.ENGINE_MAP}},{key:"OS_MAP",get:function(){return s.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return s.PLATFORMS_MAP}}],(r=null)&&a(t.prototype,r),n&&a(t,n),e}();t.default=o,e.exports=t.default;},91:function(e,t,r){t.__esModule=!0,t.default=void 0;var n=u(r(92)),i=u(r(93)),s=u(r(94)),a=u(r(95)),o=u(r(17));function u(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse();}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(n.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,r={},n=0,i={},s=0;if(Object.keys(e).forEach((function(t){var a=e[t];"string"==typeof a?(i[t]=a,s+=1):"object"==typeof a&&(r[t]=a,n+=1);})),n>0){var a=Object.keys(r),u=o.default.find(a,(function(e){return t.isOS(e)}));if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var c=o.default.find(a,(function(e){return t.isPlatform(e)}));if(c){var f=this.satisfies(r[c]);if(void 0!==f)return f}}if(s>0){var l=Object.keys(i),h=o.default.find(l,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var r=this.getBrowserName().toLowerCase(),n=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(n);return t&&i&&(n=i.toLowerCase()),n===r},t.compareVersion=function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf(o.default.compareVersions(i,r,n))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default;},92:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n};var s=/version\/(\d+(\.?_?\d+)+)/i,a=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},r=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},r=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=i.default.getFirstMatch(s,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},r=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},r=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},r=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=i.default.getFirstMatch(s,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return {name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=a,e.exports=t.default;},93:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return {name:s.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=i.default.getWindowsVersionName(t);return {name:s.OS_MAP.Windows,version:t,versionName:r}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:s.OS_MAP.iOS},r=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return r&&(t.version=r),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),r=i.default.getMacOSVersionName(t),n={name:s.OS_MAP.MacOS,version:t};return r&&(n.versionName=r),n}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:s.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),r=i.default.getAndroidVersionName(t),n={name:s.OS_MAP.Android,version:t};return r&&(n.versionName=r),n}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:s.OS_MAP.WebOS};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return {name:s.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return {name:s.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return {name:s.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return {name:s.OS_MAP.PlayStation4,version:t}}}];t.default=a,e.exports=t.default;},94:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",r={type:s.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return {type:s.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:s.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:s.PLATFORMS_MAP.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.desktop}}},{test:function(e){return "playstation 4"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}},{test:function(e){return "roku"===e.getOSName(!0)},describe:function(){return {type:s.PLATFORMS_MAP.tv}}}];t.default=a,e.exports=t.default;},95:function(e,t,r){t.__esModule=!0,t.default=void 0;var n,i=(n=r(17))&&n.__esModule?n:{default:n},s=r(18);var a=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return {name:s.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:s.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:s.ENGINE_MAP.Trident},r=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:s.ENGINE_MAP.Presto},r=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:s.ENGINE_MAP.Gecko},r=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:s.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:s.ENGINE_MAP.WebKit},r=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];t.default=a,e.exports=t.default;}})}));
|
|
13918
|
+
}(es5));
|
|
13906
13919
|
|
|
13907
|
-
|
|
13920
|
+
var Bowser = /*@__PURE__*/getDefaultExportFromCjs(es5.exports);
|
|
13908
13921
|
|
|
13909
|
-
function
|
|
13910
|
-
|
|
13911
|
-
|
|
13912
|
-
yield task();
|
|
13913
|
-
finishedCallback();
|
|
13914
|
-
}
|
|
13915
|
-
catch (e) {
|
|
13916
|
-
finishedCallback(e);
|
|
13917
|
-
}
|
|
13918
|
-
});
|
|
13919
|
-
}
|
|
13920
|
-
class AsyncQueue {
|
|
13921
|
-
constructor() {
|
|
13922
|
-
this.queue = queue$1(processTasks, 1);
|
|
13923
|
-
}
|
|
13924
|
-
push(task) {
|
|
13925
|
-
return this.queue.pushAsync(task);
|
|
13926
|
-
}
|
|
13927
|
-
empty() {
|
|
13928
|
-
return this.queue.empty();
|
|
13929
|
-
}
|
|
13922
|
+
function getBrowserDetails() {
|
|
13923
|
+
const browser = Bowser.getParser(window.navigator.userAgent);
|
|
13924
|
+
return browser.getBrowser();
|
|
13930
13925
|
}
|
|
13931
13926
|
|
|
13932
13927
|
function toMediaStreamTrackKind(mediaType) {
|