Skip to content

Instantly share code, notes, and snippets.

@webdelin
Created March 10, 2021 06:57
Show Gist options
  • Save webdelin/cd4a4670cebd777aed453c1579034658 to your computer and use it in GitHub Desktop.
Save webdelin/cd4a4670cebd777aed453c1579034658 to your computer and use it in GitHub Desktop.
peerjs work Chrome 89 -> Safari and Edge 89 -> Safari
parcelRequire = (function(e, r, t, n) {
var i,
o = "function" == typeof parcelRequire && parcelRequire,
u = "function" == typeof require && require;
function f(t, n) {
if (!r[t]) {
if (!e[t]) {
var i = "function" == typeof parcelRequire && parcelRequire;
if (!n && i) return i(t, !0);
if (o) return o(t, !0);
if (u && "string" == typeof t) return u(t);
var c = new Error("Cannot find module '" + t + "'");
throw ((c.code = "MODULE_NOT_FOUND"), c);
}
(p.resolve = function(r) {
return e[t][1][r] || r;
}),
(p.cache = {});
var l = (r[t] = new f.Module(t));
e[t][0].call(l.exports, p, l, l.exports, this);
}
return r[t].exports;
function p(e) {
return f(p.resolve(e));
}
}
(f.isParcelRequire = !0),
(f.Module = function(e) {
(this.id = e), (this.bundle = f), (this.exports = {});
}),
(f.modules = e),
(f.cache = r),
(f.parent = o),
(f.register = function(r, t) {
e[r] = [
function(e, r) {
r.exports = t;
},
{}
];
});
for (var c = 0; c < t.length; c++)
try {
f(t[c]);
} catch (e) {
i || (i = e);
}
if (t.length) {
var l = f(t[t.length - 1]);
"object" == typeof exports && "undefined" != typeof module
? (module.exports = l)
: "function" == typeof define && define.amd
? define(function() {
return l;
})
: n && (this[n] = l);
}
if (((parcelRequire = f), i)) throw i;
return f;
})(
{
EgBh: [
function(require, module, exports) {
var e = {};
(e.useBlobBuilder = (function() {
try {
return new Blob([]), !1;
} catch (e) {
return !0;
}
})()),
(e.useArrayBufferView =
!e.useBlobBuilder &&
(function() {
try {
return 0 === new Blob([new Uint8Array([])]).size;
} catch (e) {
return !0;
}
})()),
(module.exports.binaryFeatures = e);
var r = module.exports.BlobBuilder;
function t() {
(this._pieces = []), (this._parts = []);
}
"undefined" != typeof window &&
(r = module.exports.BlobBuilder =
window.WebKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder ||
window.BlobBuilder),
(t.prototype.append = function(e) {
"number" == typeof e
? this._pieces.push(e)
: (this.flush(), this._parts.push(e));
}),
(t.prototype.flush = function() {
if (this._pieces.length > 0) {
var r = new Uint8Array(this._pieces);
e.useArrayBufferView || (r = r.buffer),
this._parts.push(r),
(this._pieces = []);
}
}),
(t.prototype.getBuffer = function() {
if ((this.flush(), e.useBlobBuilder)) {
for (var t = new r(), i = 0, u = this._parts.length; i < u; i++)
t.append(this._parts[i]);
return t.getBlob();
}
return new Blob(this._parts);
}),
(module.exports.BufferBuilder = t);
},
{}
],
kdPp: [
function(require, module, exports) {
var t = require("./bufferbuilder").BufferBuilder,
e = require("./bufferbuilder").binaryFeatures,
i = {
unpack: function(t) {
return new r(t).unpack();
},
pack: function(t) {
var e = new n();
return e.pack(t), e.getBuffer();
}
};
function r(t) {
(this.index = 0),
(this.dataBuffer = t),
(this.dataView = new Uint8Array(this.dataBuffer)),
(this.length = this.dataBuffer.byteLength);
}
function n() {
this.bufferBuilder = new t();
}
function u(t) {
var e = t.charCodeAt(0);
return e <= 2047
? "00"
: e <= 65535
? "000"
: e <= 2097151
? "0000"
: e <= 67108863
? "00000"
: "000000";
}
function a(t) {
return t.length > 600
? new Blob([t]).size
: t.replace(/[^\u0000-\u007F]/g, u).length;
}
(module.exports = i),
(r.prototype.unpack = function() {
var t,
e = this.unpack_uint8();
if (e < 128) return e;
if ((224 ^ e) < 32) return (224 ^ e) - 32;
if ((t = 160 ^ e) <= 15) return this.unpack_raw(t);
if ((t = 176 ^ e) <= 15) return this.unpack_string(t);
if ((t = 144 ^ e) <= 15) return this.unpack_array(t);
if ((t = 128 ^ e) <= 15) return this.unpack_map(t);
switch (e) {
case 192:
return null;
case 193:
return;
case 194:
return !1;
case 195:
return !0;
case 202:
return this.unpack_float();
case 203:
return this.unpack_double();
case 204:
return this.unpack_uint8();
case 205:
return this.unpack_uint16();
case 206:
return this.unpack_uint32();
case 207:
return this.unpack_uint64();
case 208:
return this.unpack_int8();
case 209:
return this.unpack_int16();
case 210:
return this.unpack_int32();
case 211:
return this.unpack_int64();
case 212:
case 213:
case 214:
case 215:
return;
case 216:
return (t = this.unpack_uint16()), this.unpack_string(t);
case 217:
return (t = this.unpack_uint32()), this.unpack_string(t);
case 218:
return (t = this.unpack_uint16()), this.unpack_raw(t);
case 219:
return (t = this.unpack_uint32()), this.unpack_raw(t);
case 220:
return (t = this.unpack_uint16()), this.unpack_array(t);
case 221:
return (t = this.unpack_uint32()), this.unpack_array(t);
case 222:
return (t = this.unpack_uint16()), this.unpack_map(t);
case 223:
return (t = this.unpack_uint32()), this.unpack_map(t);
}
}),
(r.prototype.unpack_uint8 = function() {
var t = 255 & this.dataView[this.index];
return this.index++, t;
}),
(r.prototype.unpack_uint16 = function() {
var t = this.read(2),
e = 256 * (255 & t[0]) + (255 & t[1]);
return (this.index += 2), e;
}),
(r.prototype.unpack_uint32 = function() {
var t = this.read(4),
e = 256 * (256 * (256 * t[0] + t[1]) + t[2]) + t[3];
return (this.index += 4), e;
}),
(r.prototype.unpack_uint64 = function() {
var t = this.read(8),
e =
256 *
(256 *
(256 *
(256 * (256 * (256 * (256 * t[0] + t[1]) + t[2]) + t[3]) +
t[4]) +
t[5]) +
t[6]) +
t[7];
return (this.index += 8), e;
}),
(r.prototype.unpack_int8 = function() {
var t = this.unpack_uint8();
return t < 128 ? t : t - 256;
}),
(r.prototype.unpack_int16 = function() {
var t = this.unpack_uint16();
return t < 32768 ? t : t - 65536;
}),
(r.prototype.unpack_int32 = function() {
var t = this.unpack_uint32();
return t < Math.pow(2, 31) ? t : t - Math.pow(2, 32);
}),
(r.prototype.unpack_int64 = function() {
var t = this.unpack_uint64();
return t < Math.pow(2, 63) ? t : t - Math.pow(2, 64);
}),
(r.prototype.unpack_raw = function(t) {
if (this.length < this.index + t)
throw new Error(
"BinaryPackFailure: index is out of range " +
this.index +
" " +
t +
" " +
this.length
);
var e = this.dataBuffer.slice(this.index, this.index + t);
return (this.index += t), e;
}),
(r.prototype.unpack_string = function(t) {
for (var e, i, r = this.read(t), n = 0, u = ""; n < t; )
(e = r[n]) < 128
? ((u += String.fromCharCode(e)), n++)
: (192 ^ e) < 32
? ((i = ((192 ^ e) << 6) | (63 & r[n + 1])),
(u += String.fromCharCode(i)),
(n += 2))
: ((i =
((15 & e) << 12) |
((63 & r[n + 1]) << 6) |
(63 & r[n + 2])),
(u += String.fromCharCode(i)),
(n += 3));
return (this.index += t), u;
}),
(r.prototype.unpack_array = function(t) {
for (var e = new Array(t), i = 0; i < t; i++) e[i] = this.unpack();
return e;
}),
(r.prototype.unpack_map = function(t) {
for (var e = {}, i = 0; i < t; i++) {
var r = this.unpack(),
n = this.unpack();
e[r] = n;
}
return e;
}),
(r.prototype.unpack_float = function() {
var t = this.unpack_uint32(),
e = ((t >> 23) & 255) - 127;
return (
(0 === t >> 31 ? 1 : -1) *
((8388607 & t) | 8388608) *
Math.pow(2, e - 23)
);
}),
(r.prototype.unpack_double = function() {
var t = this.unpack_uint32(),
e = this.unpack_uint32(),
i = ((t >> 20) & 2047) - 1023;
return (
(0 === t >> 31 ? 1 : -1) *
(((1048575 & t) | 1048576) * Math.pow(2, i - 20) +
e * Math.pow(2, i - 52))
);
}),
(r.prototype.read = function(t) {
var e = this.index;
if (e + t <= this.length) return this.dataView.subarray(e, e + t);
throw new Error("BinaryPackFailure: read index out of range");
}),
(n.prototype.getBuffer = function() {
return this.bufferBuilder.getBuffer();
}),
(n.prototype.pack = function(t) {
var i = typeof t;
if ("string" === i) this.pack_string(t);
else if ("number" === i)
Math.floor(t) === t ? this.pack_integer(t) : this.pack_double(t);
else if ("boolean" === i)
!0 === t
? this.bufferBuilder.append(195)
: !1 === t && this.bufferBuilder.append(194);
else if ("undefined" === i) this.bufferBuilder.append(192);
else {
if ("object" !== i)
throw new Error('Type "' + i + '" not yet supported');
if (null === t) this.bufferBuilder.append(192);
else {
var r = t.constructor;
if (r == Array) this.pack_array(t);
else if (
r == Blob ||
r == File ||
t instanceof Blob ||
t instanceof File
)
this.pack_bin(t);
else if (r == ArrayBuffer)
e.useArrayBufferView
? this.pack_bin(new Uint8Array(t))
: this.pack_bin(t);
else if ("BYTES_PER_ELEMENT" in t)
e.useArrayBufferView
? this.pack_bin(new Uint8Array(t.buffer))
: this.pack_bin(t.buffer);
else if (r == Object || r.toString().startsWith("class"))
this.pack_object(t);
else if (r == Date) this.pack_string(t.toString());
else {
if ("function" != typeof t.toBinaryPack)
throw new Error(
'Type "' + r.toString() + '" not yet supported'
);
this.bufferBuilder.append(t.toBinaryPack());
}
}
}
this.bufferBuilder.flush();
}),
(n.prototype.pack_bin = function(t) {
var e = t.length || t.byteLength || t.size;
if (e <= 15) this.pack_uint8(160 + e);
else if (e <= 65535)
this.bufferBuilder.append(218), this.pack_uint16(e);
else {
if (!(e <= 4294967295)) throw new Error("Invalid length");
this.bufferBuilder.append(219), this.pack_uint32(e);
}
this.bufferBuilder.append(t);
}),
(n.prototype.pack_string = function(t) {
var e = a(t);
if (e <= 15) this.pack_uint8(176 + e);
else if (e <= 65535)
this.bufferBuilder.append(216), this.pack_uint16(e);
else {
if (!(e <= 4294967295)) throw new Error("Invalid length");
this.bufferBuilder.append(217), this.pack_uint32(e);
}
this.bufferBuilder.append(t);
}),
(n.prototype.pack_array = function(t) {
var e = t.length;
if (e <= 15) this.pack_uint8(144 + e);
else if (e <= 65535)
this.bufferBuilder.append(220), this.pack_uint16(e);
else {
if (!(e <= 4294967295)) throw new Error("Invalid length");
this.bufferBuilder.append(221), this.pack_uint32(e);
}
for (var i = 0; i < e; i++) this.pack(t[i]);
}),
(n.prototype.pack_integer = function(t) {
if (t >= -32 && t <= 127) this.bufferBuilder.append(255 & t);
else if (t >= 0 && t <= 255)
this.bufferBuilder.append(204), this.pack_uint8(t);
else if (t >= -128 && t <= 127)
this.bufferBuilder.append(208), this.pack_int8(t);
else if (t >= 0 && t <= 65535)
this.bufferBuilder.append(205), this.pack_uint16(t);
else if (t >= -32768 && t <= 32767)
this.bufferBuilder.append(209), this.pack_int16(t);
else if (t >= 0 && t <= 4294967295)
this.bufferBuilder.append(206), this.pack_uint32(t);
else if (t >= -2147483648 && t <= 2147483647)
this.bufferBuilder.append(210), this.pack_int32(t);
else if (t >= -0x8000000000000000 && t <= 0x8000000000000000)
this.bufferBuilder.append(211), this.pack_int64(t);
else {
if (!(t >= 0 && t <= 0x10000000000000000))
throw new Error("Invalid integer");
this.bufferBuilder.append(207), this.pack_uint64(t);
}
}),
(n.prototype.pack_double = function(t) {
var e = 0;
t < 0 && ((e = 1), (t = -t));
var i = Math.floor(Math.log(t) / Math.LN2),
r = t / Math.pow(2, i) - 1,
n = Math.floor(r * Math.pow(2, 52)),
u = Math.pow(2, 32),
a = (e << 31) | ((i + 1023) << 20) | ((n / u) & 1048575),
p = n % u;
this.bufferBuilder.append(203),
this.pack_int32(a),
this.pack_int32(p);
}),
(n.prototype.pack_object = function(t) {
var e = Object.keys(t).length;
if (e <= 15) this.pack_uint8(128 + e);
else if (e <= 65535)
this.bufferBuilder.append(222), this.pack_uint16(e);
else {
if (!(e <= 4294967295)) throw new Error("Invalid length");
this.bufferBuilder.append(223), this.pack_uint32(e);
}
for (var i in t)
t.hasOwnProperty(i) && (this.pack(i), this.pack(t[i]));
}),
(n.prototype.pack_uint8 = function(t) {
this.bufferBuilder.append(t);
}),
(n.prototype.pack_uint16 = function(t) {
this.bufferBuilder.append(t >> 8),
this.bufferBuilder.append(255 & t);
}),
(n.prototype.pack_uint32 = function(t) {
var e = 4294967295 & t;
this.bufferBuilder.append((4278190080 & e) >>> 24),
this.bufferBuilder.append((16711680 & e) >>> 16),
this.bufferBuilder.append((65280 & e) >>> 8),
this.bufferBuilder.append(255 & e);
}),
(n.prototype.pack_uint64 = function(t) {
var e = t / Math.pow(2, 32),
i = t % Math.pow(2, 32);
this.bufferBuilder.append((4278190080 & e) >>> 24),
this.bufferBuilder.append((16711680 & e) >>> 16),
this.bufferBuilder.append((65280 & e) >>> 8),
this.bufferBuilder.append(255 & e),
this.bufferBuilder.append((4278190080 & i) >>> 24),
this.bufferBuilder.append((16711680 & i) >>> 16),
this.bufferBuilder.append((65280 & i) >>> 8),
this.bufferBuilder.append(255 & i);
}),
(n.prototype.pack_int8 = function(t) {
this.bufferBuilder.append(255 & t);
}),
(n.prototype.pack_int16 = function(t) {
this.bufferBuilder.append((65280 & t) >> 8),
this.bufferBuilder.append(255 & t);
}),
(n.prototype.pack_int32 = function(t) {
this.bufferBuilder.append((t >>> 24) & 255),
this.bufferBuilder.append((16711680 & t) >>> 16),
this.bufferBuilder.append((65280 & t) >>> 8),
this.bufferBuilder.append(255 & t);
}),
(n.prototype.pack_int64 = function(t) {
var e = Math.floor(t / Math.pow(2, 32)),
i = t % Math.pow(2, 32);
this.bufferBuilder.append((4278190080 & e) >>> 24),
this.bufferBuilder.append((16711680 & e) >>> 16),
this.bufferBuilder.append((65280 & e) >>> 8),
this.bufferBuilder.append(255 & e),
this.bufferBuilder.append((4278190080 & i) >>> 24),
this.bufferBuilder.append((16711680 & i) >>> 16),
this.bufferBuilder.append((65280 & i) >>> 8),
this.bufferBuilder.append(255 & i);
});
},
{ "./bufferbuilder": "EgBh" }
],
iSxC: [
function(require, module, exports) {
"use strict";
function e(e, t, n) {
return (
t in e
? Object.defineProperty(e, t, {
value: n,
enumerable: !0,
configurable: !0,
writable: !0
})
: (e[t] = n),
e
);
}
function t(e) {
return (t =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.extractVersion = o),
(exports.wrapPeerConnectionEvent = i),
(exports.disableLog = s),
(exports.disableWarnings = a),
(exports.log = u),
(exports.deprecated = c),
(exports.detectBrowser = p),
(exports.compactObject = d),
(exports.walkStats = l),
(exports.filterStats = b);
var n = !0,
r = !0;
function o(e, t, n) {
var r = e.match(t);
return r && r.length >= n && parseInt(r[n], 10);
}
function i(e, t, n) {
if (e.RTCPeerConnection) {
var r = e.RTCPeerConnection.prototype,
o = r.addEventListener;
r.addEventListener = function(e, r) {
if (e !== t) return o.apply(this, arguments);
var i = function(e) {
var t = n(e);
t && r(t);
};
return (
(this._eventMap = this._eventMap || {}),
(this._eventMap[r] = i),
o.apply(this, [e, i])
);
};
var i = r.removeEventListener;
(r.removeEventListener = function(e, n) {
if (e !== t || !this._eventMap || !this._eventMap[n])
return i.apply(this, arguments);
var r = this._eventMap[n];
return delete this._eventMap[n], i.apply(this, [e, r]);
}),
Object.defineProperty(r, "on" + t, {
get: function() {
return this["_on" + t];
},
set: function(e) {
this["_on" + t] &&
(this.removeEventListener(t, this["_on" + t]),
delete this["_on" + t]),
e && this.addEventListener(t, (this["_on" + t] = e));
},
enumerable: !0,
configurable: !0
});
}
}
function s(e) {
return "boolean" != typeof e
? new Error("Argument type: " + t(e) + ". Please use a boolean.")
: ((n = e),
e ? "adapter.js logging disabled" : "adapter.js logging enabled");
}
function a(e) {
return "boolean" != typeof e
? new Error("Argument type: " + t(e) + ". Please use a boolean.")
: ((r = !e),
"adapter.js deprecation warnings " +
(e ? "disabled" : "enabled"));
}
function u() {
if (
"object" ===
("undefined" == typeof window ? "undefined" : t(window))
) {
if (n) return;
"undefined" != typeof console &&
"function" == typeof console.log &&
console.log.apply(console, arguments);
}
}
function c(e, t) {
r &&
console.warn(e + " is deprecated, please use " + t + " instead.");
}
function p(e) {
var { navigator: t } = e,
n = { browser: null, version: null };
if (void 0 === e || !e.navigator)
return (n.browser = "Not a browser."), n;
if (t.mozGetUserMedia)
(n.browser = "firefox"),
(n.version = o(t.userAgent, /Firefox\/(\d+)\./, 1));
else if (
t.webkitGetUserMedia ||
(!1 === e.isSecureContext &&
e.webkitRTCPeerConnection &&
!e.RTCIceGatherer)
)
(n.browser = "chrome"),
(n.version = o(t.userAgent, /Chrom(e|ium)\/(\d+)\./, 2));
else if (t.mediaDevices && t.userAgent.match(/Edge\/(\d+).(\d+)$/))
(n.browser = "edge"),
(n.version = o(t.userAgent, /Edge\/(\d+).(\d+)$/, 2));
else {
if (
!e.RTCPeerConnection ||
!t.userAgent.match(/AppleWebKit\/(\d+)\./)
)
return (n.browser = "Not a supported browser."), n;
(n.browser = "safari"),
(n.version = o(t.userAgent, /AppleWebKit\/(\d+)\./, 1)),
(n.supportsUnifiedPlan =
e.RTCRtpTransceiver &&
"currentDirection" in e.RTCRtpTransceiver.prototype);
}
return n;
}
function f(e) {
return "[object Object]" === Object.prototype.toString.call(e);
}
function d(t) {
return f(t)
? Object.keys(t).reduce(function(n, r) {
var o = f(t[r]),
i = o ? d(t[r]) : t[r],
s = o && !Object.keys(i).length;
return void 0 === i || s ? n : Object.assign(n, e({}, r, i));
}, {})
: t;
}
function l(e, t, n) {
t &&
!n.has(t.id) &&
(n.set(t.id, t),
Object.keys(t).forEach(function(r) {
r.endsWith("Id")
? l(e, e.get(t[r]), n)
: r.endsWith("Ids") &&
t[r].forEach(function(t) {
l(e, e.get(t), n);
});
}));
}
function b(e, t, n) {
var r = n ? "outbound-rtp" : "inbound-rtp",
o = new Map();
if (null === t) return o;
var i = [];
return (
e.forEach(function(e) {
"track" === e.type && e.trackIdentifier === t.id && i.push(e);
}),
i.forEach(function(t) {
e.forEach(function(n) {
n.type === r && n.trackId === t.id && l(e, n, o);
});
}),
o
);
}
},
{}
],
s6SN: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetUserMedia = i);
var e = t(require("../utils.js"));
function r() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(r = function() {
return e;
}),
e
);
}
function t(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var t = r();
if (t && t.has(e)) return t.get(e);
var o = {},
n = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var a = n ? Object.getOwnPropertyDescriptor(e, i) : null;
a && (a.get || a.set)
? Object.defineProperty(o, i, a)
: (o[i] = e[i]);
}
return (o.default = e), t && t.set(e, o), o;
}
function o(e) {
return (o =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
var n = e.log;
function i(r) {
var t = r && r.navigator;
if (t.mediaDevices) {
var i = e.detectBrowser(r),
a = function(e) {
if ("object" !== o(e) || e.mandatory || e.optional) return e;
var r = {};
return (
Object.keys(e).forEach(function(t) {
if (
"require" !== t &&
"advanced" !== t &&
"mediaSource" !== t
) {
var n = "object" === o(e[t]) ? e[t] : { ideal: e[t] };
void 0 !== n.exact &&
"number" == typeof n.exact &&
(n.min = n.max = n.exact);
var i = function(e, r) {
return e
? e + r.charAt(0).toUpperCase() + r.slice(1)
: "deviceId" === r
? "sourceId"
: r;
};
if (void 0 !== n.ideal) {
r.optional = r.optional || [];
var a = {};
"number" == typeof n.ideal
? ((a[i("min", t)] = n.ideal),
r.optional.push(a),
((a = {})[i("max", t)] = n.ideal),
r.optional.push(a))
: ((a[i("", t)] = n.ideal), r.optional.push(a));
}
void 0 !== n.exact && "number" != typeof n.exact
? ((r.mandatory = r.mandatory || {}),
(r.mandatory[i("", t)] = n.exact))
: ["min", "max"].forEach(function(e) {
void 0 !== n[e] &&
((r.mandatory = r.mandatory || {}),
(r.mandatory[i(e, t)] = n[e]));
});
}
}),
e.advanced &&
(r.optional = (r.optional || []).concat(e.advanced)),
r
);
},
c = function(e, r) {
if (i.version >= 61) return r(e);
if (
(e = JSON.parse(JSON.stringify(e))) &&
"object" === o(e.audio)
) {
var c = function(e, r, t) {
r in e && !(t in e) && ((e[t] = e[r]), delete e[r]);
};
c(
(e = JSON.parse(JSON.stringify(e))).audio,
"autoGainControl",
"googAutoGainControl"
),
c(e.audio, "noiseSuppression", "googNoiseSuppression"),
(e.audio = a(e.audio));
}
if (e && "object" === o(e.video)) {
var d = e.video.facingMode;
d = d && ("object" === o(d) ? d : { ideal: d });
var u,
s = i.version < 66;
if (
d &&
("user" === d.exact ||
"environment" === d.exact ||
"user" === d.ideal ||
"environment" === d.ideal) &&
(!t.mediaDevices.getSupportedConstraints ||
!t.mediaDevices.getSupportedConstraints().facingMode ||
s)
)
if (
(delete e.video.facingMode,
"environment" === d.exact || "environment" === d.ideal
? (u = ["back", "rear"])
: ("user" !== d.exact && "user" !== d.ideal) ||
(u = ["front"]),
u)
)
return t.mediaDevices
.enumerateDevices()
.then(function(t) {
var o = (t = t.filter(function(e) {
return "videoinput" === e.kind;
})).find(function(e) {
return u.some(function(r) {
return e.label.toLowerCase().includes(r);
});
});
return (
!o &&
t.length &&
u.includes("back") &&
(o = t[t.length - 1]),
o &&
(e.video.deviceId = d.exact
? { exact: o.deviceId }
: { ideal: o.deviceId }),
(e.video = a(e.video)),
n("chrome: " + JSON.stringify(e)),
r(e)
);
});
e.video = a(e.video);
}
return n("chrome: " + JSON.stringify(e)), r(e);
},
d = function(e) {
return i.version >= 64
? e
: {
name:
{
PermissionDeniedError: "NotAllowedError",
PermissionDismissedError: "NotAllowedError",
InvalidStateError: "NotAllowedError",
DevicesNotFoundError: "NotFoundError",
ConstraintNotSatisfiedError: "OverconstrainedError",
TrackStartError: "NotReadableError",
MediaDeviceFailedDueToShutdown: "NotAllowedError",
MediaDeviceKillSwitchOn: "NotAllowedError",
TabCaptureError: "AbortError",
ScreenCaptureError: "AbortError",
DeviceCaptureError: "AbortError"
}[e.name] || e.name,
message: e.message,
constraint: e.constraint || e.constraintName,
toString: function() {
return (
this.name + (this.message && ": ") + this.message
);
}
};
};
if (
((t.getUserMedia = function(e, r, o) {
c(e, function(e) {
t.webkitGetUserMedia(e, r, function(e) {
o && o(d(e));
});
});
}.bind(t)),
t.mediaDevices.getUserMedia)
) {
var u = t.mediaDevices.getUserMedia.bind(t.mediaDevices);
t.mediaDevices.getUserMedia = function(e) {
return c(e, function(e) {
return u(e).then(
function(r) {
if (
(e.audio && !r.getAudioTracks().length) ||
(e.video && !r.getVideoTracks().length)
)
throw (r.getTracks().forEach(function(e) {
e.stop();
}),
new DOMException("", "NotFoundError"));
return r;
},
function(e) {
return Promise.reject(d(e));
}
);
});
};
}
}
}
},
{ "../utils.js": "iSxC" }
],
VHa8: [
function(require, module, exports) {
"use strict";
function e(e, i) {
(e.navigator.mediaDevices &&
"getDisplayMedia" in e.navigator.mediaDevices) ||
(e.navigator.mediaDevices &&
("function" == typeof i
? (e.navigator.mediaDevices.getDisplayMedia = function(a) {
return i(a).then(function(i) {
var t = a.video && a.video.width,
o = a.video && a.video.height,
d = a.video && a.video.frameRate;
return (
(a.video = {
mandatory: {
chromeMediaSource: "desktop",
chromeMediaSourceId: i,
maxFrameRate: d || 3
}
}),
t && (a.video.mandatory.maxWidth = t),
o && (a.video.mandatory.maxHeight = o),
e.navigator.mediaDevices.getUserMedia(a)
);
});
})
: console.error(
"shimGetDisplayMedia: getSourceId argument is not a function"
)));
}
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetDisplayMedia = e);
},
{}
],
uI5X: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimMediaStream = a),
(exports.shimOnTrack = c),
(exports.shimGetSendersWithDtmf = p),
(exports.shimGetStats = d),
(exports.shimSenderReceiverGetStats = h),
(exports.shimAddTrackRemoveTrackWithNative = f),
(exports.shimAddTrackRemoveTrack = m),
(exports.shimPeerConnection = u),
(exports.fixNegotiationNeeded = l),
Object.defineProperty(exports, "shimGetUserMedia", {
enumerable: !0,
get: function() {
return t.shimGetUserMedia;
}
}),
Object.defineProperty(exports, "shimGetDisplayMedia", {
enumerable: !0,
get: function() {
return r.shimGetDisplayMedia;
}
});
var e = i(require("../utils.js")),
t = require("./getusermedia"),
r = require("./getdisplaymedia");
function n() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(n = function() {
return e;
}),
e
);
}
function i(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var t = n();
if (t && t.has(e)) return t.get(e);
var r = {},
i = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var o in e)
if (Object.prototype.hasOwnProperty.call(e, o)) {
var s = i ? Object.getOwnPropertyDescriptor(e, o) : null;
s && (s.get || s.set)
? Object.defineProperty(r, o, s)
: (r[o] = e[o]);
}
return (r.default = e), t && t.set(e, r), r;
}
function o(e, t, r) {
return (
t in e
? Object.defineProperty(e, t, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
})
: (e[t] = r),
e
);
}
function s(e) {
return (s =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
function a(e) {
e.MediaStream = e.MediaStream || e.webkitMediaStream;
}
function c(t) {
if (
"object" !== s(t) ||
!t.RTCPeerConnection ||
"ontrack" in t.RTCPeerConnection.prototype
)
e.wrapPeerConnectionEvent(t, "track", function(e) {
return (
e.transceiver ||
Object.defineProperty(e, "transceiver", {
value: { receiver: e.receiver }
}),
e
);
});
else {
Object.defineProperty(t.RTCPeerConnection.prototype, "ontrack", {
get: function() {
return this._ontrack;
},
set: function(e) {
this._ontrack &&
this.removeEventListener("track", this._ontrack),
this.addEventListener("track", (this._ontrack = e));
},
enumerable: !0,
configurable: !0
});
var r = t.RTCPeerConnection.prototype.setRemoteDescription;
t.RTCPeerConnection.prototype.setRemoteDescription = function() {
var e = this;
return (
this._ontrackpoly ||
((this._ontrackpoly = function(r) {
r.stream.addEventListener("addtrack", function(n) {
var i;
i = t.RTCPeerConnection.prototype.getReceivers
? e.getReceivers().find(function(e) {
return e.track && e.track.id === n.track.id;
})
: { track: n.track };
var o = new Event("track");
(o.track = n.track),
(o.receiver = i),
(o.transceiver = { receiver: i }),
(o.streams = [r.stream]),
e.dispatchEvent(o);
}),
r.stream.getTracks().forEach(function(n) {
var i;
i = t.RTCPeerConnection.prototype.getReceivers
? e.getReceivers().find(function(e) {
return e.track && e.track.id === n.id;
})
: { track: n };
var o = new Event("track");
(o.track = n),
(o.receiver = i),
(o.transceiver = { receiver: i }),
(o.streams = [r.stream]),
e.dispatchEvent(o);
});
}),
this.addEventListener("addstream", this._ontrackpoly)),
r.apply(this, arguments)
);
};
}
}
function p(e) {
if (
"object" === s(e) &&
e.RTCPeerConnection &&
!("getSenders" in e.RTCPeerConnection.prototype) &&
"createDTMFSender" in e.RTCPeerConnection.prototype
) {
var t = function(e, t) {
return {
track: t,
get dtmf() {
return (
void 0 === this._dtmf &&
("audio" === t.kind
? (this._dtmf = e.createDTMFSender(t))
: (this._dtmf = null)),
this._dtmf
);
},
_pc: e
};
};
if (!e.RTCPeerConnection.prototype.getSenders) {
e.RTCPeerConnection.prototype.getSenders = function() {
return (
(this._senders = this._senders || []), this._senders.slice()
);
};
var r = e.RTCPeerConnection.prototype.addTrack;
e.RTCPeerConnection.prototype.addTrack = function(e, n) {
var i = r.apply(this, arguments);
return i || ((i = t(this, e)), this._senders.push(i)), i;
};
var n = e.RTCPeerConnection.prototype.removeTrack;
e.RTCPeerConnection.prototype.removeTrack = function(e) {
n.apply(this, arguments);
var t = this._senders.indexOf(e);
-1 !== t && this._senders.splice(t, 1);
};
}
var i = e.RTCPeerConnection.prototype.addStream;
e.RTCPeerConnection.prototype.addStream = function(e) {
var r = this;
(this._senders = this._senders || []),
i.apply(this, [e]),
e.getTracks().forEach(function(e) {
r._senders.push(t(r, e));
});
};
var o = e.RTCPeerConnection.prototype.removeStream;
e.RTCPeerConnection.prototype.removeStream = function(e) {
var t = this;
(this._senders = this._senders || []),
o.apply(this, [e]),
e.getTracks().forEach(function(e) {
var r = t._senders.find(function(t) {
return t.track === e;
});
r && t._senders.splice(t._senders.indexOf(r), 1);
});
};
} else if (
"object" === s(e) &&
e.RTCPeerConnection &&
"getSenders" in e.RTCPeerConnection.prototype &&
"createDTMFSender" in e.RTCPeerConnection.prototype &&
e.RTCRtpSender &&
!("dtmf" in e.RTCRtpSender.prototype)
) {
var a = e.RTCPeerConnection.prototype.getSenders;
(e.RTCPeerConnection.prototype.getSenders = function() {
var e = this,
t = a.apply(this, []);
return (
t.forEach(function(t) {
return (t._pc = e);
}),
t
);
}),
Object.defineProperty(e.RTCRtpSender.prototype, "dtmf", {
get: function() {
return (
void 0 === this._dtmf &&
("audio" === this.track.kind
? (this._dtmf = this._pc.createDTMFSender(this.track))
: (this._dtmf = null)),
this._dtmf
);
}
});
}
}
function d(e) {
if (e.RTCPeerConnection) {
var t = e.RTCPeerConnection.prototype.getStats;
e.RTCPeerConnection.prototype.getStats = function() {
var e = this,
[r, n, i] = arguments;
if (arguments.length > 0 && "function" == typeof r)
return t.apply(this, arguments);
if (
0 === t.length &&
(0 === arguments.length || "function" != typeof r)
)
return t.apply(this, []);
var o = function(e) {
var t = {};
return (
e.result().forEach(function(e) {
var r = {
id: e.id,
timestamp: e.timestamp,
type:
{
localcandidate: "local-candidate",
remotecandidate: "remote-candidate"
}[e.type] || e.type
};
e.names().forEach(function(t) {
r[t] = e.stat(t);
}),
(t[r.id] = r);
}),
t
);
},
s = function(e) {
return new Map(
Object.keys(e).map(function(t) {
return [t, e[t]];
})
);
};
if (arguments.length >= 2) {
return t.apply(this, [
function(e) {
n(s(o(e)));
},
r
]);
}
return new Promise(function(r, n) {
t.apply(e, [
function(e) {
r(s(o(e)));
},
n
]);
}).then(n, i);
};
}
}
function h(t) {
if (
"object" === s(t) &&
t.RTCPeerConnection &&
t.RTCRtpSender &&
t.RTCRtpReceiver
) {
if (!("getStats" in t.RTCRtpSender.prototype)) {
var r = t.RTCPeerConnection.prototype.getSenders;
r &&
(t.RTCPeerConnection.prototype.getSenders = function() {
var e = this,
t = r.apply(this, []);
return (
t.forEach(function(t) {
return (t._pc = e);
}),
t
);
});
var n = t.RTCPeerConnection.prototype.addTrack;
n &&
(t.RTCPeerConnection.prototype.addTrack = function() {
var e = n.apply(this, arguments);
return (e._pc = this), e;
}),
(t.RTCRtpSender.prototype.getStats = function() {
var t = this;
return this._pc.getStats().then(function(r) {
return e.filterStats(r, t.track, !0);
});
});
}
if (!("getStats" in t.RTCRtpReceiver.prototype)) {
var i = t.RTCPeerConnection.prototype.getReceivers;
i &&
(t.RTCPeerConnection.prototype.getReceivers = function() {
var e = this,
t = i.apply(this, []);
return (
t.forEach(function(t) {
return (t._pc = e);
}),
t
);
}),
e.wrapPeerConnectionEvent(t, "track", function(e) {
return (e.receiver._pc = e.srcElement), e;
}),
(t.RTCRtpReceiver.prototype.getStats = function() {
var t = this;
return this._pc.getStats().then(function(r) {
return e.filterStats(r, t.track, !1);
});
});
}
if (
"getStats" in t.RTCRtpSender.prototype &&
"getStats" in t.RTCRtpReceiver.prototype
) {
var o = t.RTCPeerConnection.prototype.getStats;
t.RTCPeerConnection.prototype.getStats = function() {
if (
arguments.length > 0 &&
arguments[0] instanceof t.MediaStreamTrack
) {
var e,
r,
n,
i = arguments[0];
return (
this.getSenders().forEach(function(t) {
t.track === i && (e ? (n = !0) : (e = t));
}),
this.getReceivers().forEach(function(e) {
return (
e.track === i && (r ? (n = !0) : (r = e)), e.track === i
);
}),
n || (e && r)
? Promise.reject(
new DOMException(
"There are more than one sender or receiver for the track.",
"InvalidAccessError"
)
)
: e
? e.getStats()
: r
? r.getStats()
: Promise.reject(
new DOMException(
"There is no sender or receiver for the track.",
"InvalidAccessError"
)
)
);
}
return o.apply(this, arguments);
};
}
}
}
function f(e) {
e.RTCPeerConnection.prototype.getLocalStreams = function() {
var e = this;
return (
(this._shimmedLocalStreams = this._shimmedLocalStreams || {}),
Object.keys(this._shimmedLocalStreams).map(function(t) {
return e._shimmedLocalStreams[t][0];
})
);
};
var t = e.RTCPeerConnection.prototype.addTrack;
e.RTCPeerConnection.prototype.addTrack = function(e, r) {
if (!r) return t.apply(this, arguments);
this._shimmedLocalStreams = this._shimmedLocalStreams || {};
var n = t.apply(this, arguments);
return (
this._shimmedLocalStreams[r.id]
? -1 === this._shimmedLocalStreams[r.id].indexOf(n) &&
this._shimmedLocalStreams[r.id].push(n)
: (this._shimmedLocalStreams[r.id] = [r, n]),
n
);
};
var r = e.RTCPeerConnection.prototype.addStream;
e.RTCPeerConnection.prototype.addStream = function(e) {
var t = this;
(this._shimmedLocalStreams = this._shimmedLocalStreams || {}),
e.getTracks().forEach(function(e) {
if (
t.getSenders().find(function(t) {
return t.track === e;
})
)
throw new DOMException(
"Track already exists.",
"InvalidAccessError"
);
});
var n = this.getSenders();
r.apply(this, arguments);
var i = this.getSenders().filter(function(e) {
return -1 === n.indexOf(e);
});
this._shimmedLocalStreams[e.id] = [e].concat(i);
};
var n = e.RTCPeerConnection.prototype.removeStream;
e.RTCPeerConnection.prototype.removeStream = function(e) {
return (
(this._shimmedLocalStreams = this._shimmedLocalStreams || {}),
delete this._shimmedLocalStreams[e.id],
n.apply(this, arguments)
);
};
var i = e.RTCPeerConnection.prototype.removeTrack;
e.RTCPeerConnection.prototype.removeTrack = function(e) {
var t = this;
return (
(this._shimmedLocalStreams = this._shimmedLocalStreams || {}),
e &&
Object.keys(this._shimmedLocalStreams).forEach(function(r) {
var n = t._shimmedLocalStreams[r].indexOf(e);
-1 !== n && t._shimmedLocalStreams[r].splice(n, 1),
1 === t._shimmedLocalStreams[r].length &&
delete t._shimmedLocalStreams[r];
}),
i.apply(this, arguments)
);
};
}
function m(t) {
if (t.RTCPeerConnection) {
var r = e.detectBrowser(t);
if (t.RTCPeerConnection.prototype.addTrack && r.version >= 65)
return f(t);
var n = t.RTCPeerConnection.prototype.getLocalStreams;
t.RTCPeerConnection.prototype.getLocalStreams = function() {
var e = this,
t = n.apply(this);
return (
(this._reverseStreams = this._reverseStreams || {}),
t.map(function(t) {
return e._reverseStreams[t.id];
})
);
};
var i = t.RTCPeerConnection.prototype.addStream;
t.RTCPeerConnection.prototype.addStream = function(e) {
var r = this;
if (
((this._streams = this._streams || {}),
(this._reverseStreams = this._reverseStreams || {}),
e.getTracks().forEach(function(e) {
if (
r.getSenders().find(function(t) {
return t.track === e;
})
)
throw new DOMException(
"Track already exists.",
"InvalidAccessError"
);
}),
!this._reverseStreams[e.id])
) {
var n = new t.MediaStream(e.getTracks());
(this._streams[e.id] = n),
(this._reverseStreams[n.id] = e),
(e = n);
}
i.apply(this, [e]);
};
var s = t.RTCPeerConnection.prototype.removeStream;
(t.RTCPeerConnection.prototype.removeStream = function(e) {
(this._streams = this._streams || {}),
(this._reverseStreams = this._reverseStreams || {}),
s.apply(this, [this._streams[e.id] || e]),
delete this._reverseStreams[
this._streams[e.id] ? this._streams[e.id].id : e.id
],
delete this._streams[e.id];
}),
(t.RTCPeerConnection.prototype.addTrack = function(e, r) {
var n = this;
if ("closed" === this.signalingState)
throw new DOMException(
"The RTCPeerConnection's signalingState is 'closed'.",
"InvalidStateError"
);
var i = [].slice.call(arguments, 1);
if (
1 !== i.length ||
!i[0].getTracks().find(function(t) {
return t === e;
})
)
throw new DOMException(
"The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.",
"NotSupportedError"
);
if (
this.getSenders().find(function(t) {
return t.track === e;
})
)
throw new DOMException(
"Track already exists.",
"InvalidAccessError"
);
(this._streams = this._streams || {}),
(this._reverseStreams = this._reverseStreams || {});
var o = this._streams[r.id];
if (o)
o.addTrack(e),
Promise.resolve().then(function() {
n.dispatchEvent(new Event("negotiationneeded"));
});
else {
var s = new t.MediaStream([e]);
(this._streams[r.id] = s),
(this._reverseStreams[s.id] = r),
this.addStream(s);
}
return this.getSenders().find(function(t) {
return t.track === e;
});
}),
["createOffer", "createAnswer"].forEach(function(e) {
var r = t.RTCPeerConnection.prototype[e],
n = o({}, e, function() {
var e = this,
t = arguments;
return arguments.length && "function" == typeof arguments[0]
? r.apply(this, [
function(r) {
var n = p(e, r);
t[0].apply(null, [n]);
},
function(e) {
t[1] && t[1].apply(null, e);
},
arguments[2]
])
: r.apply(this, arguments).then(function(t) {
return p(e, t);
});
});
t.RTCPeerConnection.prototype[e] = n[e];
});
var a = t.RTCPeerConnection.prototype.setLocalDescription;
t.RTCPeerConnection.prototype.setLocalDescription = function() {
return arguments.length && arguments[0].type
? ((arguments[0] =
((e = this),
(t = arguments[0]),
(r = t.sdp),
Object.keys(e._reverseStreams || []).forEach(function(t) {
var n = e._reverseStreams[t],
i = e._streams[n.id];
r = r.replace(new RegExp(n.id, "g"), i.id);
}),
new RTCSessionDescription({ type: t.type, sdp: r }))),
a.apply(this, arguments))
: a.apply(this, arguments);
var e, t, r;
};
var c = Object.getOwnPropertyDescriptor(
t.RTCPeerConnection.prototype,
"localDescription"
);
Object.defineProperty(
t.RTCPeerConnection.prototype,
"localDescription",
{
get: function() {
var e = c.get.apply(this);
return "" === e.type ? e : p(this, e);
}
}
),
(t.RTCPeerConnection.prototype.removeTrack = function(e) {
var t,
r = this;
if ("closed" === this.signalingState)
throw new DOMException(
"The RTCPeerConnection's signalingState is 'closed'.",
"InvalidStateError"
);
if (!e._pc)
throw new DOMException(
"Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.",
"TypeError"
);
if (!(e._pc === this))
throw new DOMException(
"Sender was not created by this connection.",
"InvalidAccessError"
);
(this._streams = this._streams || {}),
Object.keys(this._streams).forEach(function(n) {
r._streams[n].getTracks().find(function(t) {
return e.track === t;
}) && (t = r._streams[n]);
}),
t &&
(1 === t.getTracks().length
? this.removeStream(this._reverseStreams[t.id])
: t.removeTrack(e.track),
this.dispatchEvent(new Event("negotiationneeded")));
});
}
function p(e, t) {
var r = t.sdp;
return (
Object.keys(e._reverseStreams || []).forEach(function(t) {
var n = e._reverseStreams[t],
i = e._streams[n.id];
r = r.replace(new RegExp(i.id, "g"), n.id);
}),
new RTCSessionDescription({ type: t.type, sdp: r })
);
}
}
function u(t) {
var r = e.detectBrowser(t);
if (
(!t.RTCPeerConnection &&
t.webkitRTCPeerConnection &&
(t.RTCPeerConnection = t.webkitRTCPeerConnection),
t.RTCPeerConnection)
) {
r.version < 53 &&
[
"setLocalDescription",
"setRemoteDescription",
"addIceCandidate"
].forEach(function(e) {
var r = t.RTCPeerConnection.prototype[e],
n = o({}, e, function() {
return (
(arguments[0] = new ("addIceCandidate" === e
? t.RTCIceCandidate
: t.RTCSessionDescription)(arguments[0])),
r.apply(this, arguments)
);
});
t.RTCPeerConnection.prototype[e] = n[e];
});
var n = t.RTCPeerConnection.prototype.addIceCandidate;
t.RTCPeerConnection.prototype.addIceCandidate = function() {
return arguments[0]
? r.version < 78 &&
arguments[0] &&
"" === arguments[0].candidate
? Promise.resolve()
: n.apply(this, arguments)
: (arguments[1] && arguments[1].apply(null), Promise.resolve());
};
}
}
function l(t) {
e.wrapPeerConnectionEvent(t, "negotiationneeded", function(e) {
if ("stable" === e.target.signalingState) return e;
});
}
},
{
"../utils.js": "iSxC",
"./getusermedia": "s6SN",
"./getdisplaymedia": "VHa8"
}
],
NZ1C: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.filterIceServers = n);
var r = t(require("../utils"));
function e() {
if ("function" != typeof WeakMap) return null;
var r = new WeakMap();
return (
(e = function() {
return r;
}),
r
);
}
function t(r) {
if (r && r.__esModule) return r;
if (null === r || ("object" != typeof r && "function" != typeof r))
return { default: r };
var t = e();
if (t && t.has(r)) return t.get(r);
var n = {},
u = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in r)
if (Object.prototype.hasOwnProperty.call(r, i)) {
var f = u ? Object.getOwnPropertyDescriptor(r, i) : null;
f && (f.get || f.set)
? Object.defineProperty(n, i, f)
: (n[i] = r[i]);
}
return (n.default = r), t && t.set(r, n), n;
}
function n(e, t) {
var n = !1;
return (e = JSON.parse(JSON.stringify(e))).filter(function(e) {
if (e && (e.urls || e.url)) {
var t = e.urls || e.url;
e.url &&
!e.urls &&
r.deprecated("RTCIceServer.url", "RTCIceServer.urls");
var u = "string" == typeof t;
return (
u && (t = [t]),
(t = t.filter(function(r) {
if (0 === r.indexOf("stun:")) return !1;
var e =
r.startsWith("turn") &&
!r.startsWith("turn:[") &&
r.includes("transport=udp");
return e && !n ? ((n = !0), !0) : e && !n;
})),
delete e.url,
(e.urls = u ? t[0] : t),
!!t.length
);
}
});
}
},
{ "../utils": "iSxC" }
],
YHvh: [
function(require, module, exports) {
"use strict";
var r = {
generateIdentifier: function() {
return Math.random()
.toString(36)
.substr(2, 10);
}
};
(r.localCName = r.generateIdentifier()),
(r.splitLines = function(r) {
return r
.trim()
.split("\n")
.map(function(r) {
return r.trim();
});
}),
(r.splitSections = function(r) {
return r.split("\nm=").map(function(r, e) {
return (e > 0 ? "m=" + r : r).trim() + "\r\n";
});
}),
(r.getDescription = function(e) {
var t = r.splitSections(e);
return t && t[0];
}),
(r.getMediaSections = function(e) {
var t = r.splitSections(e);
return t.shift(), t;
}),
(r.matchPrefix = function(e, t) {
return r.splitLines(e).filter(function(r) {
return 0 === r.indexOf(t);
});
}),
(r.parseCandidate = function(r) {
for (
var e,
t = {
foundation: (e =
0 === r.indexOf("a=candidate:")
? r.substring(12).split(" ")
: r.substring(10).split(" "))[0],
component: parseInt(e[1], 10),
protocol: e[2].toLowerCase(),
priority: parseInt(e[3], 10),
ip: e[4],
address: e[4],
port: parseInt(e[5], 10),
type: e[7]
},
n = 8;
n < e.length;
n += 2
)
switch (e[n]) {
case "raddr":
t.relatedAddress = e[n + 1];
break;
case "rport":
t.relatedPort = parseInt(e[n + 1], 10);
break;
case "tcptype":
t.tcpType = e[n + 1];
break;
case "ufrag":
(t.ufrag = e[n + 1]), (t.usernameFragment = e[n + 1]);
break;
default:
t[e[n]] = e[n + 1];
}
return t;
}),
(r.writeCandidate = function(r) {
var e = [];
e.push(r.foundation),
e.push(r.component),
e.push(r.protocol.toUpperCase()),
e.push(r.priority),
e.push(r.address || r.ip),
e.push(r.port);
var t = r.type;
return (
e.push("typ"),
e.push(t),
"host" !== t &&
r.relatedAddress &&
r.relatedPort &&
(e.push("raddr"),
e.push(r.relatedAddress),
e.push("rport"),
e.push(r.relatedPort)),
r.tcpType &&
"tcp" === r.protocol.toLowerCase() &&
(e.push("tcptype"), e.push(r.tcpType)),
(r.usernameFragment || r.ufrag) &&
(e.push("ufrag"), e.push(r.usernameFragment || r.ufrag)),
"candidate:" + e.join(" ")
);
}),
(r.parseIceOptions = function(r) {
return r.substr(14).split(" ");
}),
(r.parseRtpMap = function(r) {
var e = r.substr(9).split(" "),
t = { payloadType: parseInt(e.shift(), 10) };
return (
(e = e[0].split("/")),
(t.name = e[0]),
(t.clockRate = parseInt(e[1], 10)),
(t.channels = 3 === e.length ? parseInt(e[2], 10) : 1),
(t.numChannels = t.channels),
t
);
}),
(r.writeRtpMap = function(r) {
var e = r.payloadType;
void 0 !== r.preferredPayloadType && (e = r.preferredPayloadType);
var t = r.channels || r.numChannels || 1;
return (
"a=rtpmap:" +
e +
" " +
r.name +
"/" +
r.clockRate +
(1 !== t ? "/" + t : "") +
"\r\n"
);
}),
(r.parseExtmap = function(r) {
var e = r.substr(9).split(" ");
return {
id: parseInt(e[0], 10),
direction:
e[0].indexOf("/") > 0 ? e[0].split("/")[1] : "sendrecv",
uri: e[1]
};
}),
(r.writeExtmap = function(r) {
return (
"a=extmap:" +
(r.id || r.preferredId) +
(r.direction && "sendrecv" !== r.direction
? "/" + r.direction
: "") +
" " +
r.uri +
"\r\n"
);
}),
(r.parseFmtp = function(r) {
for (
var e, t = {}, n = r.substr(r.indexOf(" ") + 1).split(";"), a = 0;
a < n.length;
a++
)
t[(e = n[a].trim().split("="))[0].trim()] = e[1];
return t;
}),
(r.writeFmtp = function(r) {
var e = "",
t = r.payloadType;
if (
(void 0 !== r.preferredPayloadType &&
(t = r.preferredPayloadType),
r.parameters && Object.keys(r.parameters).length)
) {
var n = [];
Object.keys(r.parameters).forEach(function(e) {
r.parameters[e] ? n.push(e + "=" + r.parameters[e]) : n.push(e);
}),
(e += "a=fmtp:" + t + " " + n.join(";") + "\r\n");
}
return e;
}),
(r.parseRtcpFb = function(r) {
var e = r.substr(r.indexOf(" ") + 1).split(" ");
return { type: e.shift(), parameter: e.join(" ") };
}),
(r.writeRtcpFb = function(r) {
var e = "",
t = r.payloadType;
return (
void 0 !== r.preferredPayloadType && (t = r.preferredPayloadType),
r.rtcpFeedback &&
r.rtcpFeedback.length &&
r.rtcpFeedback.forEach(function(r) {
e +=
"a=rtcp-fb:" +
t +
" " +
r.type +
(r.parameter && r.parameter.length
? " " + r.parameter
: "") +
"\r\n";
}),
e
);
}),
(r.parseSsrcMedia = function(r) {
var e = r.indexOf(" "),
t = { ssrc: parseInt(r.substr(7, e - 7), 10) },
n = r.indexOf(":", e);
return (
n > -1
? ((t.attribute = r.substr(e + 1, n - e - 1)),
(t.value = r.substr(n + 1)))
: (t.attribute = r.substr(e + 1)),
t
);
}),
(r.parseSsrcGroup = function(r) {
var e = r.substr(13).split(" ");
return {
semantics: e.shift(),
ssrcs: e.map(function(r) {
return parseInt(r, 10);
})
};
}),
(r.getMid = function(e) {
var t = r.matchPrefix(e, "a=mid:")[0];
if (t) return t.substr(6);
}),
(r.parseFingerprint = function(r) {
var e = r.substr(14).split(" ");
return { algorithm: e[0].toLowerCase(), value: e[1] };
}),
(r.getDtlsParameters = function(e, t) {
return {
role: "auto",
fingerprints: r
.matchPrefix(e + t, "a=fingerprint:")
.map(r.parseFingerprint)
};
}),
(r.writeDtlsParameters = function(r, e) {
var t = "a=setup:" + e + "\r\n";
return (
r.fingerprints.forEach(function(r) {
t += "a=fingerprint:" + r.algorithm + " " + r.value + "\r\n";
}),
t
);
}),
(r.getIceParameters = function(e, t) {
var n = r.splitLines(e);
return {
usernameFragment: (n = n.concat(r.splitLines(t)))
.filter(function(r) {
return 0 === r.indexOf("a=ice-ufrag:");
})[0]
.substr(12),
password: n
.filter(function(r) {
return 0 === r.indexOf("a=ice-pwd:");
})[0]
.substr(10)
};
}),
(r.writeIceParameters = function(r) {
return (
"a=ice-ufrag:" +
r.usernameFragment +
"\r\na=ice-pwd:" +
r.password +
"\r\n"
);
}),
(r.parseRtpParameters = function(e) {
for (
var t = {
codecs: [],
headerExtensions: [],
fecMechanisms: [],
rtcp: []
},
n = r.splitLines(e)[0].split(" "),
a = 3;
a < n.length;
a++
) {
var s = n[a],
i = r.matchPrefix(e, "a=rtpmap:" + s + " ")[0];
if (i) {
var p = r.parseRtpMap(i),
c = r.matchPrefix(e, "a=fmtp:" + s + " ");
switch (
((p.parameters = c.length ? r.parseFmtp(c[0]) : {}),
(p.rtcpFeedback = r
.matchPrefix(e, "a=rtcp-fb:" + s + " ")
.map(r.parseRtcpFb)),
t.codecs.push(p),
p.name.toUpperCase())
) {
case "RED":
case "ULPFEC":
t.fecMechanisms.push(p.name.toUpperCase());
}
}
}
return (
r.matchPrefix(e, "a=extmap:").forEach(function(e) {
t.headerExtensions.push(r.parseExtmap(e));
}),
t
);
}),
(r.writeRtpDescription = function(e, t) {
var n = "";
(n += "m=" + e + " "),
(n += t.codecs.length > 0 ? "9" : "0"),
(n += " UDP/TLS/RTP/SAVPF "),
(n +=
t.codecs
.map(function(r) {
return void 0 !== r.preferredPayloadType
? r.preferredPayloadType
: r.payloadType;
})
.join(" ") + "\r\n"),
(n += "c=IN IP4 0.0.0.0\r\n"),
(n += "a=rtcp:9 IN IP4 0.0.0.0\r\n"),
t.codecs.forEach(function(e) {
(n += r.writeRtpMap(e)),
(n += r.writeFmtp(e)),
(n += r.writeRtcpFb(e));
});
var a = 0;
return (
t.codecs.forEach(function(r) {
r.maxptime > a && (a = r.maxptime);
}),
a > 0 && (n += "a=maxptime:" + a + "\r\n"),
(n += "a=rtcp-mux\r\n"),
t.headerExtensions &&
t.headerExtensions.forEach(function(e) {
n += r.writeExtmap(e);
}),
n
);
}),
(r.parseRtpEncodingParameters = function(e) {
var t,
n = [],
a = r.parseRtpParameters(e),
s = -1 !== a.fecMechanisms.indexOf("RED"),
i = -1 !== a.fecMechanisms.indexOf("ULPFEC"),
p = r
.matchPrefix(e, "a=ssrc:")
.map(function(e) {
return r.parseSsrcMedia(e);
})
.filter(function(r) {
return "cname" === r.attribute;
}),
c = p.length > 0 && p[0].ssrc,
o = r.matchPrefix(e, "a=ssrc-group:FID").map(function(r) {
return r
.substr(17)
.split(" ")
.map(function(r) {
return parseInt(r, 10);
});
});
o.length > 0 && o[0].length > 1 && o[0][0] === c && (t = o[0][1]),
a.codecs.forEach(function(r) {
if ("RTX" === r.name.toUpperCase() && r.parameters.apt) {
var e = {
ssrc: c,
codecPayloadType: parseInt(r.parameters.apt, 10)
};
c && t && (e.rtx = { ssrc: t }),
n.push(e),
s &&
(((e = JSON.parse(JSON.stringify(e))).fec = {
ssrc: c,
mechanism: i ? "red+ulpfec" : "red"
}),
n.push(e));
}
}),
0 === n.length && c && n.push({ ssrc: c });
var u = r.matchPrefix(e, "b=");
return (
u.length &&
((u =
0 === u[0].indexOf("b=TIAS:")
? parseInt(u[0].substr(7), 10)
: 0 === u[0].indexOf("b=AS:")
? 1e3 * parseInt(u[0].substr(5), 10) * 0.95 - 16e3
: void 0),
n.forEach(function(r) {
r.maxBitrate = u;
})),
n
);
}),
(r.parseRtcpParameters = function(e) {
var t = {},
n = r
.matchPrefix(e, "a=ssrc:")
.map(function(e) {
return r.parseSsrcMedia(e);
})
.filter(function(r) {
return "cname" === r.attribute;
})[0];
n && ((t.cname = n.value), (t.ssrc = n.ssrc));
var a = r.matchPrefix(e, "a=rtcp-rsize");
(t.reducedSize = a.length > 0), (t.compound = 0 === a.length);
var s = r.matchPrefix(e, "a=rtcp-mux");
return (t.mux = s.length > 0), t;
}),
(r.parseMsid = function(e) {
var t,
n = r.matchPrefix(e, "a=msid:");
if (1 === n.length)
return {
stream: (t = n[0].substr(7).split(" "))[0],
track: t[1]
};
var a = r
.matchPrefix(e, "a=ssrc:")
.map(function(e) {
return r.parseSsrcMedia(e);
})
.filter(function(r) {
return "msid" === r.attribute;
});
return a.length > 0
? { stream: (t = a[0].value.split(" "))[0], track: t[1] }
: void 0;
}),
(r.parseSctpDescription = function(e) {
var t,
n = r.parseMLine(e),
a = r.matchPrefix(e, "a=max-message-size:");
a.length > 0 && (t = parseInt(a[0].substr(19), 10)),
isNaN(t) && (t = 65536);
var s = r.matchPrefix(e, "a=sctp-port:");
if (s.length > 0)
return {
port: parseInt(s[0].substr(12), 10),
protocol: n.fmt,
maxMessageSize: t
};
if (r.matchPrefix(e, "a=sctpmap:").length > 0) {
var i = r
.matchPrefix(e, "a=sctpmap:")[0]
.substr(10)
.split(" ");
return {
port: parseInt(i[0], 10),
protocol: i[1],
maxMessageSize: t
};
}
}),
(r.writeSctpDescription = function(r, e) {
var t = [];
return (
(t =
"DTLS/SCTP" !== r.protocol
? [
"m=" +
r.kind +
" 9 " +
r.protocol +
" " +
e.protocol +
"\r\n",
"c=IN IP4 0.0.0.0\r\n",
"a=sctp-port:" + e.port + "\r\n"
]
: [
"m=" +
r.kind +
" 9 " +
r.protocol +
" " +
e.port +
"\r\n",
"c=IN IP4 0.0.0.0\r\n",
"a=sctpmap:" + e.port + " " + e.protocol + " 65535\r\n"
]),
void 0 !== e.maxMessageSize &&
t.push("a=max-message-size:" + e.maxMessageSize + "\r\n"),
t.join("")
);
}),
(r.generateSessionId = function() {
return Math.random()
.toString()
.substr(2, 21);
}),
(r.writeSessionBoilerplate = function(e, t, n) {
var a = void 0 !== t ? t : 2;
return (
"v=0\r\no=" +
(n || "thisisadapterortc") +
" " +
(e || r.generateSessionId()) +
" " +
a +
" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"
);
}),
(r.writeMediaSection = function(e, t, n, a) {
var s = r.writeRtpDescription(e.kind, t);
if (
((s += r.writeIceParameters(e.iceGatherer.getLocalParameters())),
(s += r.writeDtlsParameters(
e.dtlsTransport.getLocalParameters(),
"offer" === n ? "actpass" : "active"
)),
(s += "a=mid:" + e.mid + "\r\n"),
e.direction
? (s += "a=" + e.direction + "\r\n")
: e.rtpSender && e.rtpReceiver
? (s += "a=sendrecv\r\n")
: e.rtpSender
? (s += "a=sendonly\r\n")
: e.rtpReceiver
? (s += "a=recvonly\r\n")
: (s += "a=inactive\r\n"),
e.rtpSender)
) {
var i = "msid:" + a.id + " " + e.rtpSender.track.id + "\r\n";
(s += "a=" + i),
(s += "a=ssrc:" + e.sendEncodingParameters[0].ssrc + " " + i),
e.sendEncodingParameters[0].rtx &&
((s +=
"a=ssrc:" + e.sendEncodingParameters[0].rtx.ssrc + " " + i),
(s +=
"a=ssrc-group:FID " +
e.sendEncodingParameters[0].ssrc +
" " +
e.sendEncodingParameters[0].rtx.ssrc +
"\r\n"));
}
return (
(s +=
"a=ssrc:" +
e.sendEncodingParameters[0].ssrc +
" cname:" +
r.localCName +
"\r\n"),
e.rtpSender &&
e.sendEncodingParameters[0].rtx &&
(s +=
"a=ssrc:" +
e.sendEncodingParameters[0].rtx.ssrc +
" cname:" +
r.localCName +
"\r\n"),
s
);
}),
(r.getDirection = function(e, t) {
for (var n = r.splitLines(e), a = 0; a < n.length; a++)
switch (n[a]) {
case "a=sendrecv":
case "a=sendonly":
case "a=recvonly":
case "a=inactive":
return n[a].substr(2);
}
return t ? r.getDirection(t) : "sendrecv";
}),
(r.getKind = function(e) {
return r
.splitLines(e)[0]
.split(" ")[0]
.substr(2);
}),
(r.isRejected = function(r) {
return "0" === r.split(" ", 2)[1];
}),
(r.parseMLine = function(e) {
var t = r
.splitLines(e)[0]
.substr(2)
.split(" ");
return {
kind: t[0],
port: parseInt(t[1], 10),
protocol: t[2],
fmt: t.slice(3).join(" ")
};
}),
(r.parseOLine = function(e) {
var t = r
.matchPrefix(e, "o=")[0]
.substr(2)
.split(" ");
return {
username: t[0],
sessionId: t[1],
sessionVersion: parseInt(t[2], 10),
netType: t[3],
addressType: t[4],
address: t[5]
};
}),
(r.isValidSDP = function(e) {
if ("string" != typeof e || 0 === e.length) return !1;
for (var t = r.splitLines(e), n = 0; n < t.length; n++)
if (t[n].length < 2 || "=" !== t[n].charAt(1)) return !1;
return !0;
}),
"object" == typeof module && (module.exports = r);
},
{}
],
NJ2u: [
function(require, module, exports) {
"use strict";
var e = require("sdp");
function t(e) {
return (
{
inboundrtp: "inbound-rtp",
outboundrtp: "outbound-rtp",
candidatepair: "candidate-pair",
localcandidate: "local-candidate",
remotecandidate: "remote-candidate"
}[e.type] || e.type
);
}
function r(t, r, n, a, i) {
var s = e.writeRtpDescription(t.kind, r);
if (
((s += e.writeIceParameters(t.iceGatherer.getLocalParameters())),
(s += e.writeDtlsParameters(
t.dtlsTransport.getLocalParameters(),
"offer" === n ? "actpass" : i || "active"
)),
(s += "a=mid:" + t.mid + "\r\n"),
t.rtpSender && t.rtpReceiver
? (s += "a=sendrecv\r\n")
: t.rtpSender
? (s += "a=sendonly\r\n")
: t.rtpReceiver
? (s += "a=recvonly\r\n")
: (s += "a=inactive\r\n"),
t.rtpSender)
) {
var o = t.rtpSender._initialTrackId || t.rtpSender.track.id;
t.rtpSender._initialTrackId = o;
var c = "msid:" + (a ? a.id : "-") + " " + o + "\r\n";
(s += "a=" + c),
(s += "a=ssrc:" + t.sendEncodingParameters[0].ssrc + " " + c),
t.sendEncodingParameters[0].rtx &&
((s +=
"a=ssrc:" + t.sendEncodingParameters[0].rtx.ssrc + " " + c),
(s +=
"a=ssrc-group:FID " +
t.sendEncodingParameters[0].ssrc +
" " +
t.sendEncodingParameters[0].rtx.ssrc +
"\r\n"));
}
return (
(s +=
"a=ssrc:" +
t.sendEncodingParameters[0].ssrc +
" cname:" +
e.localCName +
"\r\n"),
t.rtpSender &&
t.sendEncodingParameters[0].rtx &&
(s +=
"a=ssrc:" +
t.sendEncodingParameters[0].rtx.ssrc +
" cname:" +
e.localCName +
"\r\n"),
s
);
}
function n(e, t) {
var r = !1;
return (e = JSON.parse(JSON.stringify(e))).filter(function(e) {
if (e && (e.urls || e.url)) {
var n = e.urls || e.url;
e.url &&
!e.urls &&
console.warn(
"RTCIceServer.url is deprecated! Use urls instead."
);
var a = "string" == typeof n;
return (
a && (n = [n]),
(n = n.filter(function(e) {
return 0 === e.indexOf("turn:") &&
-1 !== e.indexOf("transport=udp") &&
-1 === e.indexOf("turn:[") &&
!r
? ((r = !0), !0)
: 0 === e.indexOf("stun:") &&
t >= 14393 &&
-1 === e.indexOf("?transport=udp");
})),
delete e.url,
(e.urls = a ? n[0] : n),
!!n.length
);
}
});
}
function a(e, t) {
var r = { codecs: [], headerExtensions: [], fecMechanisms: [] },
n = function(e, t) {
e = parseInt(e, 10);
for (var r = 0; r < t.length; r++)
if (t[r].payloadType === e || t[r].preferredPayloadType === e)
return t[r];
},
a = function(e, t, r, a) {
var i = n(e.parameters.apt, r),
s = n(t.parameters.apt, a);
return i && s && i.name.toLowerCase() === s.name.toLowerCase();
};
return (
e.codecs.forEach(function(n) {
for (var i = 0; i < t.codecs.length; i++) {
var s = t.codecs[i];
if (
n.name.toLowerCase() === s.name.toLowerCase() &&
n.clockRate === s.clockRate
) {
if (
"rtx" === n.name.toLowerCase() &&
n.parameters &&
s.parameters.apt &&
!a(n, s, e.codecs, t.codecs)
)
continue;
((s = JSON.parse(JSON.stringify(s))).numChannels = Math.min(
n.numChannels,
s.numChannels
)),
r.codecs.push(s),
(s.rtcpFeedback = s.rtcpFeedback.filter(function(e) {
for (var t = 0; t < n.rtcpFeedback.length; t++)
if (
n.rtcpFeedback[t].type === e.type &&
n.rtcpFeedback[t].parameter === e.parameter
)
return !0;
return !1;
}));
break;
}
}
}),
e.headerExtensions.forEach(function(e) {
for (var n = 0; n < t.headerExtensions.length; n++) {
var a = t.headerExtensions[n];
if (e.uri === a.uri) {
r.headerExtensions.push(a);
break;
}
}
}),
r
);
}
function i(e, t, r) {
return (
-1 !==
{
offer: {
setLocalDescription: ["stable", "have-local-offer"],
setRemoteDescription: ["stable", "have-remote-offer"]
},
answer: {
setLocalDescription: [
"have-remote-offer",
"have-local-pranswer"
],
setRemoteDescription: [
"have-local-offer",
"have-remote-pranswer"
]
}
}[t][e].indexOf(r)
);
}
function s(e, t) {
var r = e.getRemoteCandidates().find(function(e) {
return (
t.foundation === e.foundation &&
t.ip === e.ip &&
t.port === e.port &&
t.priority === e.priority &&
t.protocol === e.protocol &&
t.type === e.type
);
});
return r || e.addRemoteCandidate(t), !r;
}
function o(e, t) {
var r = new Error(t);
return (
(r.name = e),
(r.code = {
NotSupportedError: 9,
InvalidStateError: 11,
InvalidAccessError: 15,
TypeError: void 0,
OperationError: void 0
}[e]),
r
);
}
module.exports = function(c, d) {
function p(e, t) {
t.addTrack(e),
t.dispatchEvent(
new c.MediaStreamTrackEvent("addtrack", { track: e })
);
}
function l(e, t, r, n) {
var a = new Event("track");
(a.track = t),
(a.receiver = r),
(a.transceiver = { receiver: r }),
(a.streams = n),
c.setTimeout(function() {
e._dispatchEvent("track", a);
});
}
var f = function(t) {
var r = this,
a = document.createDocumentFragment();
if (
([
"addEventListener",
"removeEventListener",
"dispatchEvent"
].forEach(function(e) {
r[e] = a[e].bind(a);
}),
(this.canTrickleIceCandidates = null),
(this.needNegotiation = !1),
(this.localStreams = []),
(this.remoteStreams = []),
(this._localDescription = null),
(this._remoteDescription = null),
(this.signalingState = "stable"),
(this.iceConnectionState = "new"),
(this.connectionState = "new"),
(this.iceGatheringState = "new"),
(t = JSON.parse(JSON.stringify(t || {}))),
(this.usingBundle = "max-bundle" === t.bundlePolicy),
"negotiate" === t.rtcpMuxPolicy)
)
throw o(
"NotSupportedError",
"rtcpMuxPolicy 'negotiate' is not supported"
);
switch (
(t.rtcpMuxPolicy || (t.rtcpMuxPolicy = "require"),
t.iceTransportPolicy)
) {
case "all":
case "relay":
break;
default:
t.iceTransportPolicy = "all";
}
switch (t.bundlePolicy) {
case "balanced":
case "max-compat":
case "max-bundle":
break;
default:
t.bundlePolicy = "balanced";
}
if (
((t.iceServers = n(t.iceServers || [], d)),
(this._iceGatherers = []),
t.iceCandidatePoolSize)
)
for (var i = t.iceCandidatePoolSize; i > 0; i--)
this._iceGatherers.push(
new c.RTCIceGatherer({
iceServers: t.iceServers,
gatherPolicy: t.iceTransportPolicy
})
);
else t.iceCandidatePoolSize = 0;
(this._config = t),
(this.transceivers = []),
(this._sdpSessionId = e.generateSessionId()),
(this._sdpSessionVersion = 0),
(this._dtlsRole = void 0),
(this._isClosed = !1);
};
Object.defineProperty(f.prototype, "localDescription", {
configurable: !0,
get: function() {
return this._localDescription;
}
}),
Object.defineProperty(f.prototype, "remoteDescription", {
configurable: !0,
get: function() {
return this._remoteDescription;
}
}),
(f.prototype.onicecandidate = null),
(f.prototype.onaddstream = null),
(f.prototype.ontrack = null),
(f.prototype.onremovestream = null),
(f.prototype.onsignalingstatechange = null),
(f.prototype.oniceconnectionstatechange = null),
(f.prototype.onconnectionstatechange = null),
(f.prototype.onicegatheringstatechange = null),
(f.prototype.onnegotiationneeded = null),
(f.prototype.ondatachannel = null),
(f.prototype._dispatchEvent = function(e, t) {
this._isClosed ||
(this.dispatchEvent(t),
"function" == typeof this["on" + e] && this["on" + e](t));
}),
(f.prototype._emitGatheringStateChange = function() {
var e = new Event("icegatheringstatechange");
this._dispatchEvent("icegatheringstatechange", e);
}),
(f.prototype.getConfiguration = function() {
return this._config;
}),
(f.prototype.getLocalStreams = function() {
return this.localStreams;
}),
(f.prototype.getRemoteStreams = function() {
return this.remoteStreams;
}),
(f.prototype._createTransceiver = function(e, t) {
var r = this.transceivers.length > 0,
n = {
track: null,
iceGatherer: null,
iceTransport: null,
dtlsTransport: null,
localCapabilities: null,
remoteCapabilities: null,
rtpSender: null,
rtpReceiver: null,
kind: e,
mid: null,
sendEncodingParameters: null,
recvEncodingParameters: null,
stream: null,
associatedRemoteMediaStreams: [],
wantReceive: !0
};
if (this.usingBundle && r)
(n.iceTransport = this.transceivers[0].iceTransport),
(n.dtlsTransport = this.transceivers[0].dtlsTransport);
else {
var a = this._createIceAndDtlsTransports();
(n.iceTransport = a.iceTransport),
(n.dtlsTransport = a.dtlsTransport);
}
return t || this.transceivers.push(n), n;
}),
(f.prototype.addTrack = function(e, t) {
if (this._isClosed)
throw o(
"InvalidStateError",
"Attempted to call addTrack on a closed peerconnection."
);
var r;
if (
this.transceivers.find(function(t) {
return t.track === e;
})
)
throw o("InvalidAccessError", "Track already exists.");
for (var n = 0; n < this.transceivers.length; n++)
this.transceivers[n].track ||
this.transceivers[n].kind !== e.kind ||
(r = this.transceivers[n]);
return (
r || (r = this._createTransceiver(e.kind)),
this._maybeFireNegotiationNeeded(),
-1 === this.localStreams.indexOf(t) &&
this.localStreams.push(t),
(r.track = e),
(r.stream = t),
(r.rtpSender = new c.RTCRtpSender(e, r.dtlsTransport)),
r.rtpSender
);
}),
(f.prototype.addStream = function(e) {
var t = this;
if (d >= 15025)
e.getTracks().forEach(function(r) {
t.addTrack(r, e);
});
else {
var r = e.clone();
e.getTracks().forEach(function(e, t) {
var n = r.getTracks()[t];
e.addEventListener("enabled", function(e) {
n.enabled = e.enabled;
});
}),
r.getTracks().forEach(function(e) {
t.addTrack(e, r);
});
}
}),
(f.prototype.removeTrack = function(e) {
if (this._isClosed)
throw o(
"InvalidStateError",
"Attempted to call removeTrack on a closed peerconnection."
);
if (!(e instanceof c.RTCRtpSender))
throw new TypeError(
"Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender."
);
var t = this.transceivers.find(function(t) {
return t.rtpSender === e;
});
if (!t)
throw o(
"InvalidAccessError",
"Sender was not created by this connection."
);
var r = t.stream;
t.rtpSender.stop(),
(t.rtpSender = null),
(t.track = null),
(t.stream = null),
-1 ===
this.transceivers
.map(function(e) {
return e.stream;
})
.indexOf(r) &&
this.localStreams.indexOf(r) > -1 &&
this.localStreams.splice(this.localStreams.indexOf(r), 1),
this._maybeFireNegotiationNeeded();
}),
(f.prototype.removeStream = function(e) {
var t = this;
e.getTracks().forEach(function(e) {
var r = t.getSenders().find(function(t) {
return t.track === e;
});
r && t.removeTrack(r);
});
}),
(f.prototype.getSenders = function() {
return this.transceivers
.filter(function(e) {
return !!e.rtpSender;
})
.map(function(e) {
return e.rtpSender;
});
}),
(f.prototype.getReceivers = function() {
return this.transceivers
.filter(function(e) {
return !!e.rtpReceiver;
})
.map(function(e) {
return e.rtpReceiver;
});
}),
(f.prototype._createIceGatherer = function(e, t) {
var r = this;
if (t && e > 0) return this.transceivers[0].iceGatherer;
if (this._iceGatherers.length) return this._iceGatherers.shift();
var n = new c.RTCIceGatherer({
iceServers: this._config.iceServers,
gatherPolicy: this._config.iceTransportPolicy
});
return (
Object.defineProperty(n, "state", {
value: "new",
writable: !0
}),
(this.transceivers[e].bufferedCandidateEvents = []),
(this.transceivers[e].bufferCandidates = function(t) {
var a = !t.candidate || 0 === Object.keys(t.candidate).length;
(n.state = a ? "completed" : "gathering"),
null !== r.transceivers[e].bufferedCandidateEvents &&
r.transceivers[e].bufferedCandidateEvents.push(t);
}),
n.addEventListener(
"localcandidate",
this.transceivers[e].bufferCandidates
),
n
);
}),
(f.prototype._gather = function(t, r) {
var n = this,
a = this.transceivers[r].iceGatherer;
if (!a.onlocalcandidate) {
var i = this.transceivers[r].bufferedCandidateEvents;
(this.transceivers[r].bufferedCandidateEvents = null),
a.removeEventListener(
"localcandidate",
this.transceivers[r].bufferCandidates
),
(a.onlocalcandidate = function(i) {
if (!(n.usingBundle && r > 0)) {
var s = new Event("icecandidate");
s.candidate = { sdpMid: t, sdpMLineIndex: r };
var o = i.candidate,
c = !o || 0 === Object.keys(o).length;
if (c)
("new" !== a.state && "gathering" !== a.state) ||
(a.state = "completed");
else {
"new" === a.state && (a.state = "gathering"),
(o.component = 1),
(o.ufrag = a.getLocalParameters().usernameFragment);
var d = e.writeCandidate(o);
(s.candidate = Object.assign(
s.candidate,
e.parseCandidate(d)
)),
(s.candidate.candidate = d),
(s.candidate.toJSON = function() {
return {
candidate: s.candidate.candidate,
sdpMid: s.candidate.sdpMid,
sdpMLineIndex: s.candidate.sdpMLineIndex,
usernameFragment: s.candidate.usernameFragment
};
});
}
var p = e.getMediaSections(n._localDescription.sdp);
(p[s.candidate.sdpMLineIndex] += c
? "a=end-of-candidates\r\n"
: "a=" + s.candidate.candidate + "\r\n"),
(n._localDescription.sdp =
e.getDescription(n._localDescription.sdp) +
p.join(""));
var l = n.transceivers.every(function(e) {
return (
e.iceGatherer && "completed" === e.iceGatherer.state
);
});
"gathering" !== n.iceGatheringState &&
((n.iceGatheringState = "gathering"),
n._emitGatheringStateChange()),
c || n._dispatchEvent("icecandidate", s),
l &&
(n._dispatchEvent(
"icecandidate",
new Event("icecandidate")
),
(n.iceGatheringState = "complete"),
n._emitGatheringStateChange());
}
}),
c.setTimeout(function() {
i.forEach(function(e) {
a.onlocalcandidate(e);
});
}, 0);
}
}),
(f.prototype._createIceAndDtlsTransports = function() {
var e = this,
t = new c.RTCIceTransport(null);
t.onicestatechange = function() {
e._updateIceConnectionState(), e._updateConnectionState();
};
var r = new c.RTCDtlsTransport(t);
return (
(r.ondtlsstatechange = function() {
e._updateConnectionState();
}),
(r.onerror = function() {
Object.defineProperty(r, "state", {
value: "failed",
writable: !0
}),
e._updateConnectionState();
}),
{ iceTransport: t, dtlsTransport: r }
);
}),
(f.prototype._disposeIceAndDtlsTransports = function(e) {
var t = this.transceivers[e].iceGatherer;
t &&
(delete t.onlocalcandidate,
delete this.transceivers[e].iceGatherer);
var r = this.transceivers[e].iceTransport;
r &&
(delete r.onicestatechange,
delete this.transceivers[e].iceTransport);
var n = this.transceivers[e].dtlsTransport;
n &&
(delete n.ondtlsstatechange,
delete n.onerror,
delete this.transceivers[e].dtlsTransport);
}),
(f.prototype._transceive = function(t, r, n) {
var i = a(t.localCapabilities, t.remoteCapabilities);
r &&
t.rtpSender &&
((i.encodings = t.sendEncodingParameters),
(i.rtcp = {
cname: e.localCName,
compound: t.rtcpParameters.compound
}),
t.recvEncodingParameters.length &&
(i.rtcp.ssrc = t.recvEncodingParameters[0].ssrc),
t.rtpSender.send(i)),
n &&
t.rtpReceiver &&
i.codecs.length > 0 &&
("video" === t.kind &&
t.recvEncodingParameters &&
d < 15019 &&
t.recvEncodingParameters.forEach(function(e) {
delete e.rtx;
}),
t.recvEncodingParameters.length
? (i.encodings = t.recvEncodingParameters)
: (i.encodings = [{}]),
(i.rtcp = { compound: t.rtcpParameters.compound }),
t.rtcpParameters.cname &&
(i.rtcp.cname = t.rtcpParameters.cname),
t.sendEncodingParameters.length &&
(i.rtcp.ssrc = t.sendEncodingParameters[0].ssrc),
t.rtpReceiver.receive(i));
}),
(f.prototype.setLocalDescription = function(t) {
var r,
n,
s = this;
if (-1 === ["offer", "answer"].indexOf(t.type))
return Promise.reject(
o("TypeError", 'Unsupported type "' + t.type + '"')
);
if (
!i("setLocalDescription", t.type, s.signalingState) ||
s._isClosed
)
return Promise.reject(
o(
"InvalidStateError",
"Can not set local " +
t.type +
" in state " +
s.signalingState
)
);
if ("offer" === t.type)
(r = e.splitSections(t.sdp)),
(n = r.shift()),
r.forEach(function(t, r) {
var n = e.parseRtpParameters(t);
s.transceivers[r].localCapabilities = n;
}),
s.transceivers.forEach(function(e, t) {
s._gather(e.mid, t);
});
else if ("answer" === t.type) {
(r = e.splitSections(s._remoteDescription.sdp)),
(n = r.shift());
var c = e.matchPrefix(n, "a=ice-lite").length > 0;
r.forEach(function(t, r) {
var i = s.transceivers[r],
o = i.iceGatherer,
d = i.iceTransport,
p = i.dtlsTransport,
l = i.localCapabilities,
f = i.remoteCapabilities;
if (
!(
e.isRejected(t) &&
0 === e.matchPrefix(t, "a=bundle-only").length
) &&
!i.rejected
) {
var u = e.getIceParameters(t, n),
v = e.getDtlsParameters(t, n);
c && (v.role = "server"),
(s.usingBundle && 0 !== r) ||
(s._gather(i.mid, r),
"new" === d.state &&
d.start(o, u, c ? "controlling" : "controlled"),
"new" === p.state && p.start(v));
var h = a(l, f);
s._transceive(i, h.codecs.length > 0, !1);
}
});
}
return (
(s._localDescription = { type: t.type, sdp: t.sdp }),
"offer" === t.type
? s._updateSignalingState("have-local-offer")
: s._updateSignalingState("stable"),
Promise.resolve()
);
}),
(f.prototype.setRemoteDescription = function(t) {
var r = this;
if (-1 === ["offer", "answer"].indexOf(t.type))
return Promise.reject(
o("TypeError", 'Unsupported type "' + t.type + '"')
);
if (
!i("setRemoteDescription", t.type, r.signalingState) ||
r._isClosed
)
return Promise.reject(
o(
"InvalidStateError",
"Can not set remote " +
t.type +
" in state " +
r.signalingState
)
);
var n = {};
r.remoteStreams.forEach(function(e) {
n[e.id] = e;
});
var f = [],
u = e.splitSections(t.sdp),
v = u.shift(),
h = e.matchPrefix(v, "a=ice-lite").length > 0,
m = e.matchPrefix(v, "a=group:BUNDLE ").length > 0;
r.usingBundle = m;
var g = e.matchPrefix(v, "a=ice-options:")[0];
return (
(r.canTrickleIceCandidates =
!!g &&
g
.substr(14)
.split(" ")
.indexOf("trickle") >= 0),
u.forEach(function(i, o) {
var l = e.splitLines(i),
u = e.getKind(i),
g =
e.isRejected(i) &&
0 === e.matchPrefix(i, "a=bundle-only").length,
y = l[0].substr(2).split(" ")[2],
S = e.getDirection(i, v),
T = e.parseMsid(i),
E = e.getMid(i) || e.generateIdentifier();
if (
g ||
("application" === u &&
("DTLS/SCTP" === y || "UDP/DTLS/SCTP" === y))
)
r.transceivers[o] = {
mid: E,
kind: u,
protocol: y,
rejected: !0
};
else {
var C, P, w, R, _, k, b, x, D;
!g &&
r.transceivers[o] &&
r.transceivers[o].rejected &&
(r.transceivers[o] = r._createTransceiver(u, !0));
var I,
L,
M = e.parseRtpParameters(i);
g ||
((I = e.getIceParameters(i, v)),
((L = e.getDtlsParameters(i, v)).role = "client")),
(b = e.parseRtpEncodingParameters(i));
var O = e.parseRtcpParameters(i),
G = e.matchPrefix(i, "a=end-of-candidates", v).length > 0,
j = e
.matchPrefix(i, "a=candidate:")
.map(function(t) {
return e.parseCandidate(t);
})
.filter(function(e) {
return 1 === e.component;
});
if (
(("offer" === t.type || "answer" === t.type) &&
!g &&
m &&
o > 0 &&
r.transceivers[o] &&
(r._disposeIceAndDtlsTransports(o),
(r.transceivers[o].iceGatherer =
r.transceivers[0].iceGatherer),
(r.transceivers[o].iceTransport =
r.transceivers[0].iceTransport),
(r.transceivers[o].dtlsTransport =
r.transceivers[0].dtlsTransport),
r.transceivers[o].rtpSender &&
r.transceivers[o].rtpSender.setTransport(
r.transceivers[0].dtlsTransport
),
r.transceivers[o].rtpReceiver &&
r.transceivers[o].rtpReceiver.setTransport(
r.transceivers[0].dtlsTransport
)),
"offer" !== t.type || g)
) {
if ("answer" === t.type && !g) {
(P = (C = r.transceivers[o]).iceGatherer),
(w = C.iceTransport),
(R = C.dtlsTransport),
(_ = C.rtpReceiver),
(k = C.sendEncodingParameters),
(x = C.localCapabilities),
(r.transceivers[o].recvEncodingParameters = b),
(r.transceivers[o].remoteCapabilities = M),
(r.transceivers[o].rtcpParameters = O),
j.length &&
"new" === w.state &&
((!h && !G) || (m && 0 !== o)
? j.forEach(function(e) {
s(C.iceTransport, e);
})
: w.setRemoteCandidates(j)),
(m && 0 !== o) ||
("new" === w.state && w.start(P, I, "controlling"),
"new" === R.state && R.start(L)),
!a(
C.localCapabilities,
C.remoteCapabilities
).codecs.filter(function(e) {
return "rtx" === e.name.toLowerCase();
}).length &&
C.sendEncodingParameters[0].rtx &&
delete C.sendEncodingParameters[0].rtx,
r._transceive(
C,
"sendrecv" === S || "recvonly" === S,
"sendrecv" === S || "sendonly" === S
),
!_ || ("sendrecv" !== S && "sendonly" !== S)
? delete C.rtpReceiver
: ((D = _.track),
T
? (n[T.stream] ||
(n[T.stream] = new c.MediaStream()),
p(D, n[T.stream]),
f.push([D, _, n[T.stream]]))
: (n.default ||
(n.default = new c.MediaStream()),
p(D, n.default),
f.push([D, _, n.default])));
}
} else {
((C =
r.transceivers[o] || r._createTransceiver(u)).mid = E),
C.iceGatherer ||
(C.iceGatherer = r._createIceGatherer(o, m)),
j.length &&
"new" === C.iceTransport.state &&
(!G || (m && 0 !== o)
? j.forEach(function(e) {
s(C.iceTransport, e);
})
: C.iceTransport.setRemoteCandidates(j)),
(x = c.RTCRtpReceiver.getCapabilities(u)),
d < 15019 &&
(x.codecs = x.codecs.filter(function(e) {
return "rtx" !== e.name;
})),
(k = C.sendEncodingParameters || [
{ ssrc: 1001 * (2 * o + 2) }
]);
var N,
A = !1;
if ("sendrecv" === S || "sendonly" === S) {
if (
((A = !C.rtpReceiver),
(_ =
C.rtpReceiver ||
new c.RTCRtpReceiver(C.dtlsTransport, u)),
A)
)
(D = _.track),
(T && "-" === T.stream) ||
(T
? (n[T.stream] ||
((n[T.stream] = new c.MediaStream()),
Object.defineProperty(n[T.stream], "id", {
get: function() {
return T.stream;
}
})),
Object.defineProperty(D, "id", {
get: function() {
return T.track;
}
}),
(N = n[T.stream]))
: (n.default ||
(n.default = new c.MediaStream()),
(N = n.default))),
N &&
(p(D, N), C.associatedRemoteMediaStreams.push(N)),
f.push([D, _, N]);
} else
C.rtpReceiver &&
C.rtpReceiver.track &&
(C.associatedRemoteMediaStreams.forEach(function(e) {
var t,
r,
n = e.getTracks().find(function(e) {
return e.id === C.rtpReceiver.track.id;
});
n &&
((t = n),
(r = e).removeTrack(t),
r.dispatchEvent(
new c.MediaStreamTrackEvent("removetrack", {
track: t
})
));
}),
(C.associatedRemoteMediaStreams = []));
(C.localCapabilities = x),
(C.remoteCapabilities = M),
(C.rtpReceiver = _),
(C.rtcpParameters = O),
(C.sendEncodingParameters = k),
(C.recvEncodingParameters = b),
r._transceive(r.transceivers[o], !1, A);
}
}
}),
void 0 === r._dtlsRole &&
(r._dtlsRole = "offer" === t.type ? "active" : "passive"),
(r._remoteDescription = { type: t.type, sdp: t.sdp }),
"offer" === t.type
? r._updateSignalingState("have-remote-offer")
: r._updateSignalingState("stable"),
Object.keys(n).forEach(function(e) {
var t = n[e];
if (t.getTracks().length) {
if (-1 === r.remoteStreams.indexOf(t)) {
r.remoteStreams.push(t);
var a = new Event("addstream");
(a.stream = t),
c.setTimeout(function() {
r._dispatchEvent("addstream", a);
});
}
f.forEach(function(e) {
var n = e[0],
a = e[1];
t.id === e[2].id && l(r, n, a, [t]);
});
}
}),
f.forEach(function(e) {
e[2] || l(r, e[0], e[1], []);
}),
c.setTimeout(function() {
r &&
r.transceivers &&
r.transceivers.forEach(function(e) {
e.iceTransport &&
"new" === e.iceTransport.state &&
e.iceTransport.getRemoteCandidates().length > 0 &&
(console.warn(
"Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"
),
e.iceTransport.addRemoteCandidate({}));
});
}, 4e3),
Promise.resolve()
);
}),
(f.prototype.close = function() {
this.transceivers.forEach(function(e) {
e.iceTransport && e.iceTransport.stop(),
e.dtlsTransport && e.dtlsTransport.stop(),
e.rtpSender && e.rtpSender.stop(),
e.rtpReceiver && e.rtpReceiver.stop();
}),
(this._isClosed = !0),
this._updateSignalingState("closed");
}),
(f.prototype._updateSignalingState = function(e) {
this.signalingState = e;
var t = new Event("signalingstatechange");
this._dispatchEvent("signalingstatechange", t);
}),
(f.prototype._maybeFireNegotiationNeeded = function() {
var e = this;
"stable" === this.signalingState &&
!0 !== this.needNegotiation &&
((this.needNegotiation = !0),
c.setTimeout(function() {
if (e.needNegotiation) {
e.needNegotiation = !1;
var t = new Event("negotiationneeded");
e._dispatchEvent("negotiationneeded", t);
}
}, 0));
}),
(f.prototype._updateIceConnectionState = function() {
var e,
t = {
new: 0,
closed: 0,
checking: 0,
connected: 0,
completed: 0,
disconnected: 0,
failed: 0
};
if (
(this.transceivers.forEach(function(e) {
e.iceTransport && !e.rejected && t[e.iceTransport.state]++;
}),
(e = "new"),
t.failed > 0
? (e = "failed")
: t.checking > 0
? (e = "checking")
: t.disconnected > 0
? (e = "disconnected")
: t.new > 0
? (e = "new")
: t.connected > 0
? (e = "connected")
: t.completed > 0 && (e = "completed"),
e !== this.iceConnectionState)
) {
this.iceConnectionState = e;
var r = new Event("iceconnectionstatechange");
this._dispatchEvent("iceconnectionstatechange", r);
}
}),
(f.prototype._updateConnectionState = function() {
var e,
t = {
new: 0,
closed: 0,
connecting: 0,
connected: 0,
completed: 0,
disconnected: 0,
failed: 0
};
if (
(this.transceivers.forEach(function(e) {
e.iceTransport &&
e.dtlsTransport &&
!e.rejected &&
(t[e.iceTransport.state]++, t[e.dtlsTransport.state]++);
}),
(t.connected += t.completed),
(e = "new"),
t.failed > 0
? (e = "failed")
: t.connecting > 0
? (e = "connecting")
: t.disconnected > 0
? (e = "disconnected")
: t.new > 0
? (e = "new")
: t.connected > 0 && (e = "connected"),
e !== this.connectionState)
) {
this.connectionState = e;
var r = new Event("connectionstatechange");
this._dispatchEvent("connectionstatechange", r);
}
}),
(f.prototype.createOffer = function() {
var t = this;
if (t._isClosed)
return Promise.reject(
o("InvalidStateError", "Can not call createOffer after close")
);
var n = t.transceivers.filter(function(e) {
return "audio" === e.kind;
}).length,
a = t.transceivers.filter(function(e) {
return "video" === e.kind;
}).length,
i = arguments[0];
if (i) {
if (i.mandatory || i.optional)
throw new TypeError(
"Legacy mandatory/optional constraints not supported."
);
void 0 !== i.offerToReceiveAudio &&
(n =
!0 === i.offerToReceiveAudio
? 1
: !1 === i.offerToReceiveAudio
? 0
: i.offerToReceiveAudio),
void 0 !== i.offerToReceiveVideo &&
(a =
!0 === i.offerToReceiveVideo
? 1
: !1 === i.offerToReceiveVideo
? 0
: i.offerToReceiveVideo);
}
for (
t.transceivers.forEach(function(e) {
"audio" === e.kind
? --n < 0 && (e.wantReceive = !1)
: "video" === e.kind && --a < 0 && (e.wantReceive = !1);
});
n > 0 || a > 0;
)
n > 0 && (t._createTransceiver("audio"), n--),
a > 0 && (t._createTransceiver("video"), a--);
var s = e.writeSessionBoilerplate(
t._sdpSessionId,
t._sdpSessionVersion++
);
t.transceivers.forEach(function(r, n) {
var a = r.track,
i = r.kind,
s = r.mid || e.generateIdentifier();
(r.mid = s),
r.iceGatherer ||
(r.iceGatherer = t._createIceGatherer(n, t.usingBundle));
var o = c.RTCRtpSender.getCapabilities(i);
d < 15019 &&
(o.codecs = o.codecs.filter(function(e) {
return "rtx" !== e.name;
})),
o.codecs.forEach(function(e) {
"H264" === e.name &&
void 0 === e.parameters["level-asymmetry-allowed"] &&
(e.parameters["level-asymmetry-allowed"] = "1"),
r.remoteCapabilities &&
r.remoteCapabilities.codecs &&
r.remoteCapabilities.codecs.forEach(function(t) {
e.name.toLowerCase() === t.name.toLowerCase() &&
e.clockRate === t.clockRate &&
(e.preferredPayloadType = t.payloadType);
});
}),
o.headerExtensions.forEach(function(e) {
(
(r.remoteCapabilities &&
r.remoteCapabilities.headerExtensions) ||
[]
).forEach(function(t) {
e.uri === t.uri && (e.id = t.id);
});
});
var p = r.sendEncodingParameters || [
{ ssrc: 1001 * (2 * n + 1) }
];
a &&
d >= 15019 &&
"video" === i &&
!p[0].rtx &&
(p[0].rtx = { ssrc: p[0].ssrc + 1 }),
r.wantReceive &&
(r.rtpReceiver = new c.RTCRtpReceiver(r.dtlsTransport, i)),
(r.localCapabilities = o),
(r.sendEncodingParameters = p);
}),
"max-compat" !== t._config.bundlePolicy &&
(s +=
"a=group:BUNDLE " +
t.transceivers
.map(function(e) {
return e.mid;
})
.join(" ") +
"\r\n"),
(s += "a=ice-options:trickle\r\n"),
t.transceivers.forEach(function(n, a) {
(s += r(
n,
n.localCapabilities,
"offer",
n.stream,
t._dtlsRole
)),
(s += "a=rtcp-rsize\r\n"),
!n.iceGatherer ||
"new" === t.iceGatheringState ||
(0 !== a && t.usingBundle) ||
(n.iceGatherer.getLocalCandidates().forEach(function(t) {
(t.component = 1),
(s += "a=" + e.writeCandidate(t) + "\r\n");
}),
"completed" === n.iceGatherer.state &&
(s += "a=end-of-candidates\r\n"));
});
var p = new c.RTCSessionDescription({ type: "offer", sdp: s });
return Promise.resolve(p);
}),
(f.prototype.createAnswer = function() {
var t = this;
if (t._isClosed)
return Promise.reject(
o(
"InvalidStateError",
"Can not call createAnswer after close"
)
);
if (
"have-remote-offer" !== t.signalingState &&
"have-local-pranswer" !== t.signalingState
)
return Promise.reject(
o(
"InvalidStateError",
"Can not call createAnswer in signalingState " +
t.signalingState
)
);
var n = e.writeSessionBoilerplate(
t._sdpSessionId,
t._sdpSessionVersion++
);
t.usingBundle &&
(n +=
"a=group:BUNDLE " +
t.transceivers
.map(function(e) {
return e.mid;
})
.join(" ") +
"\r\n"),
(n += "a=ice-options:trickle\r\n");
var i = e.getMediaSections(t._remoteDescription.sdp).length;
t.transceivers.forEach(function(e, s) {
if (!(s + 1 > i)) {
if (e.rejected)
return (
"application" === e.kind
? "DTLS/SCTP" === e.protocol
? (n += "m=application 0 DTLS/SCTP 5000\r\n")
: (n +=
"m=application 0 " +
e.protocol +
" webrtc-datachannel\r\n")
: "audio" === e.kind
? (n +=
"m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n")
: "video" === e.kind &&
(n +=
"m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),
void (n +=
"c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:" +
e.mid +
"\r\n")
);
var o;
if (e.stream)
"audio" === e.kind
? (o = e.stream.getAudioTracks()[0])
: "video" === e.kind &&
(o = e.stream.getVideoTracks()[0]),
o &&
d >= 15019 &&
"video" === e.kind &&
!e.sendEncodingParameters[0].rtx &&
(e.sendEncodingParameters[0].rtx = {
ssrc: e.sendEncodingParameters[0].ssrc + 1
});
var c = a(e.localCapabilities, e.remoteCapabilities);
!c.codecs.filter(function(e) {
return "rtx" === e.name.toLowerCase();
}).length &&
e.sendEncodingParameters[0].rtx &&
delete e.sendEncodingParameters[0].rtx,
(n += r(e, c, "answer", e.stream, t._dtlsRole)),
e.rtcpParameters &&
e.rtcpParameters.reducedSize &&
(n += "a=rtcp-rsize\r\n");
}
});
var s = new c.RTCSessionDescription({ type: "answer", sdp: n });
return Promise.resolve(s);
}),
(f.prototype.addIceCandidate = function(t) {
var r,
n = this;
return t && void 0 === t.sdpMLineIndex && !t.sdpMid
? Promise.reject(
new TypeError("sdpMLineIndex or sdpMid required")
)
: new Promise(function(a, i) {
if (!n._remoteDescription)
return i(
o(
"InvalidStateError",
"Can not add ICE candidate without a remote description"
)
);
if (t && "" !== t.candidate) {
var c = t.sdpMLineIndex;
if (t.sdpMid)
for (var d = 0; d < n.transceivers.length; d++)
if (n.transceivers[d].mid === t.sdpMid) {
c = d;
break;
}
var p = n.transceivers[c];
if (!p)
return i(
o("OperationError", "Can not add ICE candidate")
);
if (p.rejected) return a();
var l =
Object.keys(t.candidate).length > 0
? e.parseCandidate(t.candidate)
: {};
if (
"tcp" === l.protocol &&
(0 === l.port || 9 === l.port)
)
return a();
if (l.component && 1 !== l.component) return a();
if (
(0 === c ||
(c > 0 &&
p.iceTransport !==
n.transceivers[0].iceTransport)) &&
!s(p.iceTransport, l)
)
return i(
o("OperationError", "Can not add ICE candidate")
);
var f = t.candidate.trim();
0 === f.indexOf("a=") && (f = f.substr(2)),
((r = e.getMediaSections(n._remoteDescription.sdp))[
c
] +=
"a=" + (l.type ? f : "end-of-candidates") + "\r\n"),
(n._remoteDescription.sdp =
e.getDescription(n._remoteDescription.sdp) +
r.join(""));
} else for (var u = 0; u < n.transceivers.length && (n.transceivers[u].rejected || (n.transceivers[u].iceTransport.addRemoteCandidate({}), ((r = e.getMediaSections(n._remoteDescription.sdp))[u] += "a=end-of-candidates\r\n"), (n._remoteDescription.sdp = e.getDescription(n._remoteDescription.sdp) + r.join("")), !n.usingBundle)); u++);
a();
});
}),
(f.prototype.getStats = function(e) {
if (e && e instanceof c.MediaStreamTrack) {
var t = null;
if (
(this.transceivers.forEach(function(r) {
r.rtpSender && r.rtpSender.track === e
? (t = r.rtpSender)
: r.rtpReceiver &&
r.rtpReceiver.track === e &&
(t = r.rtpReceiver);
}),
!t)
)
throw o("InvalidAccessError", "Invalid selector.");
return t.getStats();
}
var r = [];
return (
this.transceivers.forEach(function(e) {
[
"rtpSender",
"rtpReceiver",
"iceGatherer",
"iceTransport",
"dtlsTransport"
].forEach(function(t) {
e[t] && r.push(e[t].getStats());
});
}),
Promise.all(r).then(function(e) {
var t = new Map();
return (
e.forEach(function(e) {
e.forEach(function(e) {
t.set(e.id, e);
});
}),
t
);
})
);
});
[
"RTCRtpSender",
"RTCRtpReceiver",
"RTCIceGatherer",
"RTCIceTransport",
"RTCDtlsTransport"
].forEach(function(e) {
var r = c[e];
if (r && r.prototype && r.prototype.getStats) {
var n = r.prototype.getStats;
r.prototype.getStats = function() {
return n.apply(this).then(function(e) {
var r = new Map();
return (
Object.keys(e).forEach(function(n) {
(e[n].type = t(e[n])), r.set(n, e[n]);
}),
r
);
});
};
}
});
var u = ["createOffer", "createAnswer"];
return (
u.forEach(function(e) {
var t = f.prototype[e];
f.prototype[e] = function() {
var e = arguments;
return "function" == typeof e[0] || "function" == typeof e[1]
? t.apply(this, [arguments[2]]).then(
function(t) {
"function" == typeof e[0] && e[0].apply(null, [t]);
},
function(t) {
"function" == typeof e[1] && e[1].apply(null, [t]);
}
)
: t.apply(this, arguments);
};
}),
(u = [
"setLocalDescription",
"setRemoteDescription",
"addIceCandidate"
]).forEach(function(e) {
var t = f.prototype[e];
f.prototype[e] = function() {
var e = arguments;
return "function" == typeof e[1] || "function" == typeof e[2]
? t.apply(this, arguments).then(
function() {
"function" == typeof e[1] && e[1].apply(null);
},
function(t) {
"function" == typeof e[2] && e[2].apply(null, [t]);
}
)
: t.apply(this, arguments);
};
}),
["getStats"].forEach(function(e) {
var t = f.prototype[e];
f.prototype[e] = function() {
var e = arguments;
return "function" == typeof e[1]
? t.apply(this, arguments).then(function() {
"function" == typeof e[1] && e[1].apply(null);
})
: t.apply(this, arguments);
};
}),
f
);
};
},
{ sdp: "YHvh" }
],
YdKx: [
function(require, module, exports) {
"use strict";
function e(e) {
var r = e && e.navigator,
t = r.mediaDevices.getUserMedia.bind(r.mediaDevices);
r.mediaDevices.getUserMedia = function(e) {
return t(e).catch(function(e) {
return Promise.reject(
(function(e) {
return {
name:
{ PermissionDeniedError: "NotAllowedError" }[e.name] ||
e.name,
message: e.message,
constraint: e.constraint,
toString: function() {
return this.name;
}
};
})(e)
);
});
};
}
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetUserMedia = e);
},
{}
],
P3bV: [
function(require, module, exports) {
"use strict";
function e(e) {
"getDisplayMedia" in e.navigator &&
e.navigator.mediaDevices &&
((e.navigator.mediaDevices &&
"getDisplayMedia" in e.navigator.mediaDevices) ||
(e.navigator.mediaDevices.getDisplayMedia = e.navigator.getDisplayMedia.bind(
e.navigator
)));
}
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetDisplayMedia = e);
},
{}
],
XRic: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimPeerConnection = a),
(exports.shimReplaceTrack = p),
Object.defineProperty(exports, "shimGetUserMedia", {
enumerable: !0,
get: function() {
return n.shimGetUserMedia;
}
}),
Object.defineProperty(exports, "shimGetDisplayMedia", {
enumerable: !0,
get: function() {
return i.shimGetDisplayMedia;
}
});
var e = s(require("../utils")),
t = require("./filtericeservers"),
r = o(require("rtcpeerconnection-shim")),
n = require("./getusermedia"),
i = require("./getdisplaymedia");
function o(e) {
return e && e.__esModule ? e : { default: e };
}
function c() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(c = function() {
return e;
}),
e
);
}
function s(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var t = c();
if (t && t.has(e)) return t.get(e);
var r = {},
n = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var o = n ? Object.getOwnPropertyDescriptor(e, i) : null;
o && (o.get || o.set)
? Object.defineProperty(r, i, o)
: (r[i] = e[i]);
}
return (r.default = e), t && t.set(e, r), r;
}
function a(n) {
var i = e.detectBrowser(n);
if (
n.RTCIceGatherer &&
(n.RTCIceCandidate ||
(n.RTCIceCandidate = function(e) {
return e;
}),
n.RTCSessionDescription ||
(n.RTCSessionDescription = function(e) {
return e;
}),
i.version < 15025)
) {
var o = Object.getOwnPropertyDescriptor(
n.MediaStreamTrack.prototype,
"enabled"
);
Object.defineProperty(n.MediaStreamTrack.prototype, "enabled", {
set: function(e) {
o.set.call(this, e);
var t = new Event("enabled");
(t.enabled = e), this.dispatchEvent(t);
}
});
}
!n.RTCRtpSender ||
"dtmf" in n.RTCRtpSender.prototype ||
Object.defineProperty(n.RTCRtpSender.prototype, "dtmf", {
get: function() {
return (
void 0 === this._dtmf &&
("audio" === this.track.kind
? (this._dtmf = new n.RTCDtmfSender(this))
: "video" === this.track.kind && (this._dtmf = null)),
this._dtmf
);
}
}),
n.RTCDtmfSender &&
!n.RTCDTMFSender &&
(n.RTCDTMFSender = n.RTCDtmfSender);
var c = (0, r.default)(n, i.version);
(n.RTCPeerConnection = function(r) {
return (
r &&
r.iceServers &&
((r.iceServers = (0, t.filterIceServers)(
r.iceServers,
i.version
)),
e.log("ICE servers after filtering:", r.iceServers)),
new c(r)
);
}),
(n.RTCPeerConnection.prototype = c.prototype);
}
function p(e) {
!e.RTCRtpSender ||
"replaceTrack" in e.RTCRtpSender.prototype ||
(e.RTCRtpSender.prototype.replaceTrack =
e.RTCRtpSender.prototype.setTrack);
}
},
{
"../utils": "iSxC",
"./filtericeservers": "NZ1C",
"rtcpeerconnection-shim": "NJ2u",
"./getusermedia": "YdKx",
"./getdisplaymedia": "P3bV"
}
],
GzSv: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetUserMedia = n);
var e = o(require("../utils"));
function t() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(t = function() {
return e;
}),
e
);
}
function o(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var o = t();
if (o && o.has(e)) return o.get(e);
var r = {},
n = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var a = n ? Object.getOwnPropertyDescriptor(e, i) : null;
a && (a.get || a.set)
? Object.defineProperty(r, i, a)
: (r[i] = e[i]);
}
return (r.default = e), o && o.set(e, r), r;
}
function r(e) {
return (r =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
function n(t) {
var o = e.detectBrowser(t),
n = t && t.navigator,
i = t && t.MediaStreamTrack;
if (
((n.getUserMedia = function(t, o, r) {
e.deprecated(
"navigator.getUserMedia",
"navigator.mediaDevices.getUserMedia"
),
n.mediaDevices.getUserMedia(t).then(o, r);
}),
!(
o.version > 55 &&
"autoGainControl" in n.mediaDevices.getSupportedConstraints()
))
) {
var a = function(e, t, o) {
t in e && !(o in e) && ((e[o] = e[t]), delete e[t]);
},
s = n.mediaDevices.getUserMedia.bind(n.mediaDevices);
if (
((n.mediaDevices.getUserMedia = function(e) {
return (
"object" === r(e) &&
"object" === r(e.audio) &&
((e = JSON.parse(JSON.stringify(e))),
a(e.audio, "autoGainControl", "mozAutoGainControl"),
a(e.audio, "noiseSuppression", "mozNoiseSuppression")),
s(e)
);
}),
i && i.prototype.getSettings)
) {
var p = i.prototype.getSettings;
i.prototype.getSettings = function() {
var e = p.apply(this, arguments);
return (
a(e, "mozAutoGainControl", "autoGainControl"),
a(e, "mozNoiseSuppression", "noiseSuppression"),
e
);
};
}
if (i && i.prototype.applyConstraints) {
var u = i.prototype.applyConstraints;
i.prototype.applyConstraints = function(e) {
return (
"audio" === this.kind &&
"object" === r(e) &&
((e = JSON.parse(JSON.stringify(e))),
a(e, "autoGainControl", "mozAutoGainControl"),
a(e, "noiseSuppression", "mozNoiseSuppression")),
u.apply(this, [e])
);
};
}
}
}
},
{ "../utils": "iSxC" }
],
UuGU: [
function(require, module, exports) {
"use strict";
function e(e, i) {
(e.navigator.mediaDevices &&
"getDisplayMedia" in e.navigator.mediaDevices) ||
(e.navigator.mediaDevices &&
(e.navigator.mediaDevices.getDisplayMedia = function(a) {
if (!a || !a.video) {
var t = new DOMException(
"getDisplayMedia without video constraints is undefined"
);
return (
(t.name = "NotFoundError"), (t.code = 8), Promise.reject(t)
);
}
return (
!0 === a.video
? (a.video = { mediaSource: i })
: (a.video.mediaSource = i),
e.navigator.mediaDevices.getUserMedia(a)
);
}));
}
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimGetDisplayMedia = e);
},
{}
],
Fzdr: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimOnTrack = c),
(exports.shimPeerConnection = s),
(exports.shimSenderGetStats = p),
(exports.shimReceiverGetStats = u),
(exports.shimRemoveStream = f),
(exports.shimRTCDataChannel = C),
(exports.shimAddTransceiver = d),
(exports.shimCreateOffer = y),
(exports.shimCreateAnswer = l),
Object.defineProperty(exports, "shimGetUserMedia", {
enumerable: !0,
get: function() {
return t.shimGetUserMedia;
}
}),
Object.defineProperty(exports, "shimGetDisplayMedia", {
enumerable: !0,
get: function() {
return r.shimGetDisplayMedia;
}
});
var e = o(require("../utils")),
t = require("./getusermedia"),
r = require("./getdisplaymedia");
function n() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(n = function() {
return e;
}),
e
);
}
function o(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var t = n();
if (t && t.has(e)) return t.get(e);
var r = {},
o = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var a = o ? Object.getOwnPropertyDescriptor(e, i) : null;
a && (a.get || a.set)
? Object.defineProperty(r, i, a)
: (r[i] = e[i]);
}
return (r.default = e), t && t.set(e, r), r;
}
function i(e, t, r) {
return (
t in e
? Object.defineProperty(e, t, {
value: r,
enumerable: !0,
configurable: !0,
writable: !0
})
: (e[t] = r),
e
);
}
function a(e) {
return (a =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
function c(e) {
"object" === a(e) &&
e.RTCTrackEvent &&
"receiver" in e.RTCTrackEvent.prototype &&
!("transceiver" in e.RTCTrackEvent.prototype) &&
Object.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
get: function() {
return { receiver: this.receiver };
}
});
}
function s(t) {
var r = e.detectBrowser(t);
if (
"object" === a(t) &&
(t.RTCPeerConnection || t.mozRTCPeerConnection)
) {
if (
(!t.RTCPeerConnection &&
t.mozRTCPeerConnection &&
(t.RTCPeerConnection = t.mozRTCPeerConnection),
r.version < 53 &&
[
"setLocalDescription",
"setRemoteDescription",
"addIceCandidate"
].forEach(function(e) {
var r = t.RTCPeerConnection.prototype[e],
n = i({}, e, function() {
return (
(arguments[0] = new ("addIceCandidate" === e
? t.RTCIceCandidate
: t.RTCSessionDescription)(arguments[0])),
r.apply(this, arguments)
);
});
t.RTCPeerConnection.prototype[e] = n[e];
}),
r.version < 68)
) {
var n = t.RTCPeerConnection.prototype.addIceCandidate;
t.RTCPeerConnection.prototype.addIceCandidate = function() {
return arguments[0]
? arguments[0] && "" === arguments[0].candidate
? Promise.resolve()
: n.apply(this, arguments)
: (arguments[1] && arguments[1].apply(null),
Promise.resolve());
};
}
var o = {
inboundrtp: "inbound-rtp",
outboundrtp: "outbound-rtp",
candidatepair: "candidate-pair",
localcandidate: "local-candidate",
remotecandidate: "remote-candidate"
},
c = t.RTCPeerConnection.prototype.getStats;
t.RTCPeerConnection.prototype.getStats = function() {
var [e, t, n] = arguments;
return c
.apply(this, [e || null])
.then(function(e) {
if (r.version < 53 && !t)
try {
e.forEach(function(e) {
e.type = o[e.type] || e.type;
});
} catch (n) {
if ("TypeError" !== n.name) throw n;
e.forEach(function(t, r) {
e.set(
r,
Object.assign({}, t, { type: o[t.type] || t.type })
);
});
}
return e;
})
.then(t, n);
};
}
}
function p(e) {
if (
"object" === a(e) &&
e.RTCPeerConnection &&
e.RTCRtpSender &&
!(e.RTCRtpSender && "getStats" in e.RTCRtpSender.prototype)
) {
var t = e.RTCPeerConnection.prototype.getSenders;
t &&
(e.RTCPeerConnection.prototype.getSenders = function() {
var e = this,
r = t.apply(this, []);
return (
r.forEach(function(t) {
return (t._pc = e);
}),
r
);
});
var r = e.RTCPeerConnection.prototype.addTrack;
r &&
(e.RTCPeerConnection.prototype.addTrack = function() {
var e = r.apply(this, arguments);
return (e._pc = this), e;
}),
(e.RTCRtpSender.prototype.getStats = function() {
return this.track
? this._pc.getStats(this.track)
: Promise.resolve(new Map());
});
}
}
function u(t) {
if (
"object" === a(t) &&
t.RTCPeerConnection &&
t.RTCRtpSender &&
!(t.RTCRtpSender && "getStats" in t.RTCRtpReceiver.prototype)
) {
var r = t.RTCPeerConnection.prototype.getReceivers;
r &&
(t.RTCPeerConnection.prototype.getReceivers = function() {
var e = this,
t = r.apply(this, []);
return (
t.forEach(function(t) {
return (t._pc = e);
}),
t
);
}),
e.wrapPeerConnectionEvent(t, "track", function(e) {
return (e.receiver._pc = e.srcElement), e;
}),
(t.RTCRtpReceiver.prototype.getStats = function() {
return this._pc.getStats(this.track);
});
}
}
function f(t) {
!t.RTCPeerConnection ||
"removeStream" in t.RTCPeerConnection.prototype ||
(t.RTCPeerConnection.prototype.removeStream = function(t) {
var r = this;
e.deprecated("removeStream", "removeTrack"),
this.getSenders().forEach(function(e) {
e.track &&
t.getTracks().includes(e.track) &&
r.removeTrack(e);
});
});
}
function C(e) {
e.DataChannel &&
!e.RTCDataChannel &&
(e.RTCDataChannel = e.DataChannel);
}
function d(e) {
if ("object" === a(e) && e.RTCPeerConnection) {
var t = e.RTCPeerConnection.prototype.addTransceiver;
t &&
(e.RTCPeerConnection.prototype.addTransceiver = function() {
this.setParametersPromises = [];
var e = arguments[1],
r = e && "sendEncodings" in e;
r &&
e.sendEncodings.forEach(function(e) {
if ("rid" in e) {
if (!/^[a-z0-9]{0,16}$/i.test(e.rid))
throw new TypeError("Invalid RID value provided.");
}
if (
"scaleResolutionDownBy" in e &&
!(parseFloat(e.scaleResolutionDownBy) >= 1)
)
throw new RangeError(
"scale_resolution_down_by must be >= 1.0"
);
if (
"maxFramerate" in e &&
!(parseFloat(e.maxFramerate) >= 0)
)
throw new RangeError("max_framerate must be >= 0.0");
});
var n = t.apply(this, arguments);
if (r) {
var { sender: o } = n,
i = o.getParameters();
"encodings" in i ||
((i.encodings = e.sendEncodings),
this.setParametersPromises.push(
o.setParameters(i).catch(function() {})
));
}
return n;
});
}
}
function y(e) {
if ("object" === a(e) && e.RTCPeerConnection) {
var t = e.RTCPeerConnection.prototype.createOffer;
e.RTCPeerConnection.prototype.createOffer = function() {
var e = arguments,
r = this;
return this.setParametersPromises &&
this.setParametersPromises.length
? Promise.all(this.setParametersPromises)
.then(function() {
return t.apply(r, e);
})
.finally(function() {
r.setParametersPromises = [];
})
: t.apply(this, arguments);
};
}
}
function l(e) {
if ("object" === a(e) && e.RTCPeerConnection) {
var t = e.RTCPeerConnection.prototype.createAnswer;
e.RTCPeerConnection.prototype.createAnswer = function() {
var e = arguments,
r = this;
return this.setParametersPromises &&
this.setParametersPromises.length
? Promise.all(this.setParametersPromises)
.then(function() {
return t.apply(r, e);
})
.finally(function() {
r.setParametersPromises = [];
})
: t.apply(this, arguments);
};
}
}
},
{
"../utils": "iSxC",
"./getusermedia": "GzSv",
"./getdisplaymedia": "UuGU"
}
],
t1lL: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimLocalStreamsAPI = n),
(exports.shimRemoteStreamsAPI = i),
(exports.shimCallbacksAPI = a),
(exports.shimGetUserMedia = s),
(exports.shimConstraints = c),
(exports.shimRTCIceServerUrls = d),
(exports.shimTrackEventTransceiver = f),
(exports.shimCreateOfferLegacy = p);
var e = r(require("../utils"));
function t() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(t = function() {
return e;
}),
e
);
}
function r(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var r = t();
if (r && r.has(e)) return r.get(e);
var o = {},
n = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var a = n ? Object.getOwnPropertyDescriptor(e, i) : null;
a && (a.get || a.set)
? Object.defineProperty(o, i, a)
: (o[i] = e[i]);
}
return (o.default = e), r && r.set(e, o), o;
}
function o(e) {
return (o =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
function n(e) {
if ("object" === o(e) && e.RTCPeerConnection) {
if (
("getLocalStreams" in e.RTCPeerConnection.prototype ||
(e.RTCPeerConnection.prototype.getLocalStreams = function() {
return (
this._localStreams || (this._localStreams = []),
this._localStreams
);
}),
!("addStream" in e.RTCPeerConnection.prototype))
) {
var t = e.RTCPeerConnection.prototype.addTrack;
(e.RTCPeerConnection.prototype.addStream = function(e) {
var r = this;
this._localStreams || (this._localStreams = []),
this._localStreams.includes(e) || this._localStreams.push(e),
e.getAudioTracks().forEach(function(o) {
return t.call(r, o, e);
}),
e.getVideoTracks().forEach(function(o) {
return t.call(r, o, e);
});
}),
(e.RTCPeerConnection.prototype.addTrack = function(e) {
var r = arguments[1];
return (
r &&
(this._localStreams
? this._localStreams.includes(r) ||
this._localStreams.push(r)
: (this._localStreams = [r])),
t.apply(this, arguments)
);
});
}
"removeStream" in e.RTCPeerConnection.prototype ||
(e.RTCPeerConnection.prototype.removeStream = function(e) {
var t = this;
this._localStreams || (this._localStreams = []);
var r = this._localStreams.indexOf(e);
if (-1 !== r) {
this._localStreams.splice(r, 1);
var o = e.getTracks();
this.getSenders().forEach(function(e) {
o.includes(e.track) && t.removeTrack(e);
});
}
});
}
}
function i(e) {
if (
"object" === o(e) &&
e.RTCPeerConnection &&
("getRemoteStreams" in e.RTCPeerConnection.prototype ||
(e.RTCPeerConnection.prototype.getRemoteStreams = function() {
return this._remoteStreams ? this._remoteStreams : [];
}),
!("onaddstream" in e.RTCPeerConnection.prototype))
) {
Object.defineProperty(
e.RTCPeerConnection.prototype,
"onaddstream",
{
get: function() {
return this._onaddstream;
},
set: function(e) {
var t = this;
this._onaddstream &&
(this.removeEventListener("addstream", this._onaddstream),
this.removeEventListener("track", this._onaddstreampoly)),
this.addEventListener("addstream", (this._onaddstream = e)),
this.addEventListener(
"track",
(this._onaddstreampoly = function(e) {
e.streams.forEach(function(e) {
if (
(t._remoteStreams || (t._remoteStreams = []),
!t._remoteStreams.includes(e))
) {
t._remoteStreams.push(e);
var r = new Event("addstream");
(r.stream = e), t.dispatchEvent(r);
}
});
})
);
}
}
);
var t = e.RTCPeerConnection.prototype.setRemoteDescription;
e.RTCPeerConnection.prototype.setRemoteDescription = function() {
var e = this;
return (
this._onaddstreampoly ||
this.addEventListener(
"track",
(this._onaddstreampoly = function(t) {
t.streams.forEach(function(t) {
if (
(e._remoteStreams || (e._remoteStreams = []),
!(e._remoteStreams.indexOf(t) >= 0))
) {
e._remoteStreams.push(t);
var r = new Event("addstream");
(r.stream = t), e.dispatchEvent(r);
}
});
})
),
t.apply(e, arguments)
);
};
}
}
function a(e) {
if ("object" === o(e) && e.RTCPeerConnection) {
var t = e.RTCPeerConnection.prototype,
r = t.createOffer,
n = t.createAnswer,
i = t.setLocalDescription,
a = t.setRemoteDescription,
s = t.addIceCandidate;
(t.createOffer = function(e, t) {
var o = arguments.length >= 2 ? arguments[2] : arguments[0],
n = r.apply(this, [o]);
return t ? (n.then(e, t), Promise.resolve()) : n;
}),
(t.createAnswer = function(e, t) {
var r = arguments.length >= 2 ? arguments[2] : arguments[0],
o = n.apply(this, [r]);
return t ? (o.then(e, t), Promise.resolve()) : o;
});
var c = function(e, t, r) {
var o = i.apply(this, [e]);
return r ? (o.then(t, r), Promise.resolve()) : o;
};
(t.setLocalDescription = c),
(c = function(e, t, r) {
var o = a.apply(this, [e]);
return r ? (o.then(t, r), Promise.resolve()) : o;
}),
(t.setRemoteDescription = c),
(c = function(e, t, r) {
var o = s.apply(this, [e]);
return r ? (o.then(t, r), Promise.resolve()) : o;
}),
(t.addIceCandidate = c);
}
}
function s(e) {
var t = e && e.navigator;
if (t.mediaDevices && t.mediaDevices.getUserMedia) {
var r = t.mediaDevices,
o = r.getUserMedia.bind(r);
t.mediaDevices.getUserMedia = function(e) {
return o(c(e));
};
}
!t.getUserMedia &&
t.mediaDevices &&
t.mediaDevices.getUserMedia &&
(t.getUserMedia = function(e, r, o) {
t.mediaDevices.getUserMedia(e).then(r, o);
}.bind(t));
}
function c(t) {
return t && void 0 !== t.video
? Object.assign({}, t, { video: e.compactObject(t.video) })
: t;
}
function d(t) {
var r = t.RTCPeerConnection;
(t.RTCPeerConnection = function(t, o) {
if (t && t.iceServers) {
for (var n = [], i = 0; i < t.iceServers.length; i++) {
var a = t.iceServers[i];
!a.hasOwnProperty("urls") && a.hasOwnProperty("url")
? (e.deprecated("RTCIceServer.url", "RTCIceServer.urls"),
((a = JSON.parse(JSON.stringify(a))).urls = a.url),
delete a.url,
n.push(a))
: n.push(t.iceServers[i]);
}
t.iceServers = n;
}
return new r(t, o);
}),
(t.RTCPeerConnection.prototype = r.prototype),
"generateCertificate" in t.RTCPeerConnection &&
Object.defineProperty(
t.RTCPeerConnection,
"generateCertificate",
{
get: function() {
return r.generateCertificate;
}
}
);
}
function f(e) {
"object" === o(e) &&
e.RTCTrackEvent &&
"receiver" in e.RTCTrackEvent.prototype &&
!("transceiver" in e.RTCTrackEvent.prototype) &&
Object.defineProperty(e.RTCTrackEvent.prototype, "transceiver", {
get: function() {
return { receiver: this.receiver };
}
});
}
function p(e) {
var t = e.RTCPeerConnection.prototype.createOffer;
e.RTCPeerConnection.prototype.createOffer = function(e) {
if (e) {
void 0 !== e.offerToReceiveAudio &&
(e.offerToReceiveAudio = !!e.offerToReceiveAudio);
var r = this.getTransceivers().find(function(e) {
return "audio" === e.receiver.track.kind;
});
!1 === e.offerToReceiveAudio && r
? "sendrecv" === r.direction
? r.setDirection
? r.setDirection("sendonly")
: (r.direction = "sendonly")
: "recvonly" === r.direction &&
(r.setDirection
? r.setDirection("inactive")
: (r.direction = "inactive"))
: !0 !== e.offerToReceiveAudio ||
r ||
this.addTransceiver("audio"),
void 0 !== e.offerToReceiveVideo &&
(e.offerToReceiveVideo = !!e.offerToReceiveVideo);
var o = this.getTransceivers().find(function(e) {
return "video" === e.receiver.track.kind;
});
!1 === e.offerToReceiveVideo && o
? "sendrecv" === o.direction
? o.setDirection
? o.setDirection("sendonly")
: (o.direction = "sendonly")
: "recvonly" === o.direction &&
(o.setDirection
? o.setDirection("inactive")
: (o.direction = "inactive"))
: !0 !== e.offerToReceiveVideo ||
o ||
this.addTransceiver("video");
}
return t.apply(this, arguments);
};
}
},
{ "../utils": "iSxC" }
],
GOQK: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.shimRTCIceCandidate = a),
(exports.shimMaxMessageSize = c),
(exports.shimSendThrowTypeError = s),
(exports.shimConnectionState = p),
(exports.removeAllowExtmapMixed = u);
var e = r(require("sdp")),
t = o(require("./utils"));
function n() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(n = function() {
return e;
}),
e
);
}
function o(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var t = n();
if (t && t.has(e)) return t.get(e);
var o = {},
r = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var i in e)
if (Object.prototype.hasOwnProperty.call(e, i)) {
var a = r ? Object.getOwnPropertyDescriptor(e, i) : null;
a && (a.get || a.set)
? Object.defineProperty(o, i, a)
: (o[i] = e[i]);
}
return (o.default = e), t && t.set(e, o), o;
}
function r(e) {
return e && e.__esModule ? e : { default: e };
}
function i(e) {
return (i =
"function" == typeof Symbol && "symbol" == typeof Symbol.iterator
? function(e) {
return typeof e;
}
: function(e) {
return e &&
"function" == typeof Symbol &&
e.constructor === Symbol &&
e !== Symbol.prototype
? "symbol"
: typeof e;
})(e);
}
function a(n) {
if (
n.RTCIceCandidate &&
!(n.RTCIceCandidate && "foundation" in n.RTCIceCandidate.prototype)
) {
var o = n.RTCIceCandidate;
(n.RTCIceCandidate = function(t) {
if (
("object" === i(t) &&
t.candidate &&
0 === t.candidate.indexOf("a=") &&
((t = JSON.parse(
JSON.stringify(t)
)).candidate = t.candidate.substr(2)),
t.candidate && t.candidate.length)
) {
var n = new o(t),
r = e.default.parseCandidate(t.candidate),
a = Object.assign(n, r);
return (
(a.toJSON = function() {
return {
candidate: a.candidate,
sdpMid: a.sdpMid,
sdpMLineIndex: a.sdpMLineIndex,
usernameFragment: a.usernameFragment
};
}),
a
);
}
return new o(t);
}),
(n.RTCIceCandidate.prototype = o.prototype),
t.wrapPeerConnectionEvent(n, "icecandidate", function(e) {
return (
e.candidate &&
Object.defineProperty(e, "candidate", {
value: new n.RTCIceCandidate(e.candidate),
writable: "false"
}),
e
);
});
}
}
function c(n) {
if (n.RTCPeerConnection) {
var o = t.detectBrowser(n);
"sctp" in n.RTCPeerConnection.prototype ||
Object.defineProperty(n.RTCPeerConnection.prototype, "sctp", {
get: function() {
return void 0 === this._sctp ? null : this._sctp;
}
});
var r = n.RTCPeerConnection.prototype.setRemoteDescription;
n.RTCPeerConnection.prototype.setRemoteDescription = function() {
if (
((this._sctp = null), "chrome" === o.browser && o.version >= 76)
) {
var { sdpSemantics: t } = this.getConfiguration();
"plan-b" === t &&
Object.defineProperty(this, "sctp", {
get: function() {
return void 0 === this._sctp ? null : this._sctp;
},
enumerable: !0,
configurable: !0
});
}
if (
(function(t) {
if (!t || !t.sdp) return !1;
var n = e.default.splitSections(t.sdp);
return (
n.shift(),
n.some(function(t) {
var n = e.default.parseMLine(t);
return (
n &&
"application" === n.kind &&
-1 !== n.protocol.indexOf("SCTP")
);
})
);
})(arguments[0])
) {
var n,
i = (function(e) {
var t = e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);
if (null === t || t.length < 2) return -1;
var n = parseInt(t[1], 10);
return n != n ? -1 : n;
})(arguments[0]),
a =
((p = i),
(u = 65536),
"firefox" === o.browser &&
(u =
o.version < 57
? -1 === p
? 16384
: 2147483637
: o.version < 60
? 57 === o.version
? 65535
: 65536
: 2147483637),
u),
c = (function(t, n) {
var r = 65536;
"firefox" === o.browser && 57 === o.version && (r = 65535);
var i = e.default.matchPrefix(t.sdp, "a=max-message-size:");
return (
i.length > 0
? (r = parseInt(i[0].substr(19), 10))
: "firefox" === o.browser &&
-1 !== n &&
(r = 2147483637),
r
);
})(arguments[0], i);
n =
0 === a && 0 === c
? Number.POSITIVE_INFINITY
: 0 === a || 0 === c
? Math.max(a, c)
: Math.min(a, c);
var s = {};
Object.defineProperty(s, "maxMessageSize", {
get: function() {
return n;
}
}),
(this._sctp = s);
}
var p, u;
return r.apply(this, arguments);
};
}
}
function s(e) {
if (
e.RTCPeerConnection &&
"createDataChannel" in e.RTCPeerConnection.prototype
) {
var n = e.RTCPeerConnection.prototype.createDataChannel;
(e.RTCPeerConnection.prototype.createDataChannel = function() {
var e = n.apply(this, arguments);
return o(e, this), e;
}),
t.wrapPeerConnectionEvent(e, "datachannel", function(e) {
return o(e.channel, e.target), e;
});
}
function o(e, t) {
var n = e.send;
e.send = function() {
var o = arguments[0],
r = o.length || o.size || o.byteLength;
if (
"open" === e.readyState &&
t.sctp &&
r > t.sctp.maxMessageSize
)
throw new TypeError(
"Message too large (can send a maximum of " +
t.sctp.maxMessageSize +
" bytes)"
);
return n.apply(e, arguments);
};
}
}
function p(e) {
if (
e.RTCPeerConnection &&
!("connectionState" in e.RTCPeerConnection.prototype)
) {
var t = e.RTCPeerConnection.prototype;
Object.defineProperty(t, "connectionState", {
get: function() {
return (
{ completed: "connected", checking: "connecting" }[
this.iceConnectionState
] || this.iceConnectionState
);
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(t, "onconnectionstatechange", {
get: function() {
return this._onconnectionstatechange || null;
},
set: function(e) {
this._onconnectionstatechange &&
(this.removeEventListener(
"connectionstatechange",
this._onconnectionstatechange
),
delete this._onconnectionstatechange),
e &&
this.addEventListener(
"connectionstatechange",
(this._onconnectionstatechange = e)
);
},
enumerable: !0,
configurable: !0
}),
["setLocalDescription", "setRemoteDescription"].forEach(function(
e
) {
var n = t[e];
t[e] = function() {
return (
this._connectionstatechangepoly ||
((this._connectionstatechangepoly = function(e) {
var t = e.target;
if (t._lastConnectionState !== t.connectionState) {
t._lastConnectionState = t.connectionState;
var n = new Event("connectionstatechange", e);
t.dispatchEvent(n);
}
return e;
}),
this.addEventListener(
"iceconnectionstatechange",
this._connectionstatechangepoly
)),
n.apply(this, arguments)
);
};
});
}
}
function u(e) {
if (e.RTCPeerConnection) {
var n = t.detectBrowser(e);
if (!("chrome" === n.browser && n.version >= 71)) {
var o = e.RTCPeerConnection.prototype.setRemoteDescription;
e.RTCPeerConnection.prototype.setRemoteDescription = function(e) {
return (
e &&
e.sdp &&
-1 !== e.sdp.indexOf("\na=extmap-allow-mixed") &&
(e.sdp
.split("\n")
.filter(function(e) {
return "a=extmap-allow-mixed" !== e.trim();
})
.join("\n")),
o.apply(this, arguments)
);
};
}
}
}
},
{ sdp: "YHvh", "./utils": "iSxC" }
],
KtlG: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.adapterFactory = m);
var e = o(require("./utils")),
r = o(require("./chrome/chrome_shim")),
i = o(require("./edge/edge_shim")),
s = o(require("./firefox/firefox_shim")),
t = o(require("./safari/safari_shim")),
a = o(require("./common_shim"));
function n() {
if ("function" != typeof WeakMap) return null;
var e = new WeakMap();
return (
(n = function() {
return e;
}),
e
);
}
function o(e) {
if (e && e.__esModule) return e;
if (null === e || ("object" != typeof e && "function" != typeof e))
return { default: e };
var r = n();
if (r && r.has(e)) return r.get(e);
var i = {},
s = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var t in e)
if (Object.prototype.hasOwnProperty.call(e, t)) {
var a = s ? Object.getOwnPropertyDescriptor(e, t) : null;
a && (a.get || a.set)
? Object.defineProperty(i, t, a)
: (i[t] = e[t]);
}
return (i.default = e), r && r.set(e, i), i;
}
function m() {
var { window: n } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {
shimChrome: !0,
shimFirefox: !0,
shimEdge: !0,
shimSafari: !0
},
m = e.log,
h = e.detectBrowser(n),
d = {
browserDetails: h,
commonShim: a,
extractVersion: e.extractVersion,
disableLog: e.disableLog,
disableWarnings: e.disableWarnings
};
switch (h.browser) {
case "chrome":
if (!r || !r.shimPeerConnection || !o.shimChrome)
return (
m("Chrome shim is not included in this adapter release."), d
);
m("adapter.js shimming chrome."),
(d.browserShim = r),
r.shimGetUserMedia(n),
r.shimMediaStream(n),
r.shimPeerConnection(n),
r.shimOnTrack(n),
r.shimAddTrackRemoveTrack(n),
r.shimGetSendersWithDtmf(n),
r.shimGetStats(n),
r.shimSenderReceiverGetStats(n),
r.fixNegotiationNeeded(n),
a.shimRTCIceCandidate(n),
a.shimConnectionState(n),
a.shimMaxMessageSize(n),
a.shimSendThrowTypeError(n),
a.removeAllowExtmapMixed(n);
break;
case "firefox":
if (!s || !s.shimPeerConnection || !o.shimFirefox)
return (
m("Firefox shim is not included in this adapter release."), d
);
m("adapter.js shimming firefox."),
(d.browserShim = s),
s.shimGetUserMedia(n),
s.shimPeerConnection(n),
s.shimOnTrack(n),
s.shimRemoveStream(n),
s.shimSenderGetStats(n),
s.shimReceiverGetStats(n),
s.shimRTCDataChannel(n),
s.shimAddTransceiver(n),
s.shimCreateOffer(n),
s.shimCreateAnswer(n),
a.shimRTCIceCandidate(n),
a.shimConnectionState(n),
a.shimMaxMessageSize(n),
a.shimSendThrowTypeError(n);
break;
case "edge":
if (!i || !i.shimPeerConnection || !o.shimEdge)
return (
m("MS edge shim is not included in this adapter release."), d
);
m("adapter.js shimming edge."),
(d.browserShim = i),
i.shimGetUserMedia(n),
i.shimGetDisplayMedia(n),
i.shimPeerConnection(n),
i.shimReplaceTrack(n),
a.shimMaxMessageSize(n),
a.shimSendThrowTypeError(n);
break;
case "safari":
if (!t || !o.shimSafari)
return (
m("Safari shim is not included in this adapter release."), d
);
m("adapter.js shimming safari."),
(d.browserShim = t),
t.shimRTCIceServerUrls(n),
t.shimCreateOfferLegacy(n),
t.shimCallbacksAPI(n),
t.shimLocalStreamsAPI(n),
t.shimRemoteStreamsAPI(n),
t.shimTrackEventTransceiver(n),
t.shimGetUserMedia(n),
a.shimRTCIceCandidate(n),
a.shimMaxMessageSize(n),
a.shimSendThrowTypeError(n),
a.removeAllowExtmapMixed(n);
break;
default:
m("Unsupported browser!");
}
return d;
}
},
{
"./utils": "iSxC",
"./chrome/chrome_shim": "uI5X",
"./edge/edge_shim": "XRic",
"./firefox/firefox_shim": "Fzdr",
"./safari/safari_shim": "t1lL",
"./common_shim": "GOQK"
}
],
tI1X: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 }),
(exports.default = void 0);
var e = require("./adapter_factory.js"),
r = (0, e.adapterFactory)({ window: window }),
t = r;
exports.default = t;
},
{ "./adapter_factory.js": "KtlG" }
],
sXtV: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var t = e(require("webrtc-adapter"));
exports.webRTCAdapter = t.default;
},
{ "webrtc-adapter": "tI1X" }
],
I31f: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
var r = require("./adapter");
exports.Supports = new ((function() {
function e() {
(this.isIOS = ["iPad", "iPhone", "iPod"].includes(
navigator.platform
)),
(this.supportedBrowsers = ["firefox", "chrome", "safari"]),
(this.minFirefoxVersion = 59),
(this.minChromeVersion = 72),
(this.minSafariVersion = 605);
}
return (
(e.prototype.isWebRTCSupported = function() {
return "undefined" != typeof RTCPeerConnection;
}),
(e.prototype.isBrowserSupported = function() {
var r = this.getBrowser(),
e = this.getVersion();
return (
!!this.supportedBrowsers.includes(r) &&
("chrome" === r
? e >= this.minChromeVersion
: "firefox" === r
? e >= this.minFirefoxVersion
: "safari" === r && !this.isIOS && e >= this.minSafariVersion)
);
}),
(e.prototype.getBrowser = function() {
return r.webRTCAdapter.browserDetails.browser;
}),
(e.prototype.getVersion = function() {
return r.webRTCAdapter.browserDetails.version || 0;
}),
(e.prototype.isUnifiedPlanSupported = function() {
var e,
i = this.getBrowser(),
t = r.webRTCAdapter.browserDetails.version || 0;
if ("chrome" === i && t < 72) return !1;
if ("firefox" === i && t >= 59) return !0;
if (
!(
window.RTCRtpTransceiver &&
"currentDirection" in RTCRtpTransceiver.prototype
)
)
return !1;
var o = !1;
try {
(e = new RTCPeerConnection()).addTransceiver("audio"), (o = !0);
} catch (n) {
} finally {
e && e.close();
}
return o;
}),
(e.prototype.toString = function() {
return (
"Supports: \n browser:" +
this.getBrowser() +
" \n version:" +
this.getVersion() +
" \n isIOS:" +
this.isIOS +
" \n isWebRTCSupported:" +
this.isWebRTCSupported() +
" \n isBrowserSupported:" +
this.isBrowserSupported() +
" \n isUnifiedPlanSupported:" +
this.isUnifiedPlanSupported()
);
}),
e
);
})())();
},
{ "./adapter": "sXtV" }
],
BHXf: [
function(require, module, exports) {
"use strict";
var r =
(this && this.__importStar) ||
function(r) {
if (r && r.__esModule) return r;
var t = {};
if (null != r)
for (var e in r)
Object.hasOwnProperty.call(r, e) && (t[e] = r[e]);
return (t.default = r), t;
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var t = r(require("peerjs-js-binarypack")),
e = require("./supports"),
o = {
iceServers: [
{ urls: "stun:stun.l.google.com:19302" },
{
urls: "turn:0.peerjs.com:3478",
username: "peerjs",
credential: "peerjsp"
}
],
sdpSemantics: "unified-plan"
};
exports.util = new ((function() {
function r() {
(this.CLOUD_HOST = "0.peerjs.com"),
(this.CLOUD_PORT = 443),
(this.chunkedBrowsers = { Chrome: 1, chrome: 1 }),
(this.chunkedMTU = 16300),
(this.defaultConfig = o),
(this.browser = e.Supports.getBrowser()),
(this.browserVersion = e.Supports.getVersion()),
(this.supports = (function() {
var r,
t = {
browser: e.Supports.isBrowserSupported(),
webRTC: e.Supports.isWebRTCSupported(),
audioVideo: !1,
data: !1,
binaryBlob: !1,
reliable: !1
};
if (!t.webRTC) return t;
try {
(r = new RTCPeerConnection(o)), (t.audioVideo = !0);
var n = void 0;
try {
(n = r.createDataChannel("_PEERJSTEST", { ordered: !0 })),
(t.data = !0),
(t.reliable = !!n.ordered);
try {
(n.binaryType = "blob"),
(t.binaryBlob = !e.Supports.isIOS);
} catch (a) {}
} catch (a) {
} finally {
n && n.close();
}
} catch (a) {
} finally {
r && r.close();
}
return t;
})()),
(this.pack = t.pack),
(this.unpack = t.unpack),
(this._dataCount = 1);
}
return (
(r.prototype.noop = function() {}),
(r.prototype.validateId = function(r) {
return !r || /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(r);
}),
(r.prototype.chunk = function(r) {
for (
var t = [],
e = r.size,
o = Math.ceil(e / exports.util.chunkedMTU),
n = 0,
a = 0;
a < e;
) {
var i = Math.min(e, a + exports.util.chunkedMTU),
s = r.slice(a, i),
u = { __peerData: this._dataCount, n: n, data: s, total: o };
t.push(u), (a = i), n++;
}
return this._dataCount++, t;
}),
(r.prototype.blobToArrayBuffer = function(r, t) {
var e = new FileReader();
return (
(e.onload = function(r) {
r.target && t(r.target.result);
}),
e.readAsArrayBuffer(r),
e
);
}),
(r.prototype.binaryStringToArrayBuffer = function(r) {
for (var t = new Uint8Array(r.length), e = 0; e < r.length; e++)
t[e] = 255 & r.charCodeAt(e);
return t.buffer;
}),
(r.prototype.randomToken = function() {
return Math.random()
.toString(36)
.substr(2);
}),
(r.prototype.isSecure = function() {
return "https:" === location.protocol;
}),
r
);
})())();
},
{ "peerjs-js-binarypack": "kdPp", "./supports": "I31f" }
],
JJlS: [
function(require, module, exports) {
"use strict";
var e = Object.prototype.hasOwnProperty,
t = "~";
function n() {}
function r(e, t, n) {
(this.fn = e), (this.context = t), (this.once = n || !1);
}
function o(e, n, o, s, i) {
if ("function" != typeof o)
throw new TypeError("The listener must be a function");
var c = new r(o, s || e, i),
f = t ? t + n : n;
return (
e._events[f]
? e._events[f].fn
? (e._events[f] = [e._events[f], c])
: e._events[f].push(c)
: ((e._events[f] = c), e._eventsCount++),
e
);
}
function s(e, t) {
0 == --e._eventsCount ? (e._events = new n()) : delete e._events[t];
}
function i() {
(this._events = new n()), (this._eventsCount = 0);
}
Object.create &&
((n.prototype = Object.create(null)), new n().__proto__ || (t = !1)),
(i.prototype.eventNames = function() {
var n,
r,
o = [];
if (0 === this._eventsCount) return o;
for (r in (n = this._events))
e.call(n, r) && o.push(t ? r.slice(1) : r);
return Object.getOwnPropertySymbols
? o.concat(Object.getOwnPropertySymbols(n))
: o;
}),
(i.prototype.listeners = function(e) {
var n = t ? t + e : e,
r = this._events[n];
if (!r) return [];
if (r.fn) return [r.fn];
for (var o = 0, s = r.length, i = new Array(s); o < s; o++)
i[o] = r[o].fn;
return i;
}),
(i.prototype.listenerCount = function(e) {
var n = t ? t + e : e,
r = this._events[n];
return r ? (r.fn ? 1 : r.length) : 0;
}),
(i.prototype.emit = function(e, n, r, o, s, i) {
var c = t ? t + e : e;
if (!this._events[c]) return !1;
var f,
u,
a = this._events[c],
l = arguments.length;
if (a.fn) {
switch ((a.once && this.removeListener(e, a.fn, void 0, !0), l)) {
case 1:
return a.fn.call(a.context), !0;
case 2:
return a.fn.call(a.context, n), !0;
case 3:
return a.fn.call(a.context, n, r), !0;
case 4:
return a.fn.call(a.context, n, r, o), !0;
case 5:
return a.fn.call(a.context, n, r, o, s), !0;
case 6:
return a.fn.call(a.context, n, r, o, s, i), !0;
}
for (u = 1, f = new Array(l - 1); u < l; u++)
f[u - 1] = arguments[u];
a.fn.apply(a.context, f);
} else {
var v,
h = a.length;
for (u = 0; u < h; u++)
switch (
(a[u].once && this.removeListener(e, a[u].fn, void 0, !0), l)
) {
case 1:
a[u].fn.call(a[u].context);
break;
case 2:
a[u].fn.call(a[u].context, n);
break;
case 3:
a[u].fn.call(a[u].context, n, r);
break;
case 4:
a[u].fn.call(a[u].context, n, r, o);
break;
default:
if (!f)
for (v = 1, f = new Array(l - 1); v < l; v++)
f[v - 1] = arguments[v];
a[u].fn.apply(a[u].context, f);
}
}
return !0;
}),
(i.prototype.on = function(e, t, n) {
return o(this, e, t, n, !1);
}),
(i.prototype.once = function(e, t, n) {
return o(this, e, t, n, !0);
}),
(i.prototype.removeListener = function(e, n, r, o) {
var i = t ? t + e : e;
if (!this._events[i]) return this;
if (!n) return s(this, i), this;
var c = this._events[i];
if (c.fn)
c.fn !== n ||
(o && !c.once) ||
(r && c.context !== r) ||
s(this, i);
else {
for (var f = 0, u = [], a = c.length; f < a; f++)
(c[f].fn !== n ||
(o && !c[f].once) ||
(r && c[f].context !== r)) &&
u.push(c[f]);
u.length
? (this._events[i] = 1 === u.length ? u[0] : u)
: s(this, i);
}
return this;
}),
(i.prototype.removeAllListeners = function(e) {
var r;
return (
e
? ((r = t ? t + e : e), this._events[r] && s(this, r))
: ((this._events = new n()), (this._eventsCount = 0)),
this
);
}),
(i.prototype.off = i.prototype.removeListener),
(i.prototype.addListener = i.prototype.on),
(i.prefixed = t),
(i.EventEmitter = i),
"undefined" != typeof module && (module.exports = i);
},
{}
],
WOs9: [
function(require, module, exports) {
"use strict";
var r =
(this && this.__read) ||
function(r, e) {
var o = "function" == typeof Symbol && r[Symbol.iterator];
if (!o) return r;
var t,
n,
l = o.call(r),
i = [];
try {
for (; (void 0 === e || e-- > 0) && !(t = l.next()).done; )
i.push(t.value);
} catch (s) {
n = { error: s };
} finally {
try {
t && !t.done && (o = l.return) && o.call(l);
} finally {
if (n) throw n.error;
}
}
return i;
},
e =
(this && this.__spread) ||
function() {
for (var e = [], o = 0; o < arguments.length; o++)
e = e.concat(r(arguments[o]));
return e;
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var o,
t = "PeerJS: ";
!(function(r) {
(r[(r.Disabled = 0)] = "Disabled"),
(r[(r.Errors = 1)] = "Errors"),
(r[(r.Warnings = 2)] = "Warnings"),
(r[(r.All = 3)] = "All");
})((o = exports.LogLevel || (exports.LogLevel = {})));
var n = (function() {
function r() {
this._logLevel = o.Disabled;
}
return (
Object.defineProperty(r.prototype, "logLevel", {
get: function() {
return this._logLevel;
},
set: function(r) {
this._logLevel = r;
},
enumerable: !0,
configurable: !0
}),
(r.prototype.log = function() {
for (var r = [], t = 0; t < arguments.length; t++)
r[t] = arguments[t];
this._logLevel >= o.All && this._print.apply(this, e([o.All], r));
}),
(r.prototype.warn = function() {
for (var r = [], t = 0; t < arguments.length; t++)
r[t] = arguments[t];
this._logLevel >= o.Warnings &&
this._print.apply(this, e([o.Warnings], r));
}),
(r.prototype.error = function() {
for (var r = [], t = 0; t < arguments.length; t++)
r[t] = arguments[t];
this._logLevel >= o.Errors &&
this._print.apply(this, e([o.Errors], r));
}),
(r.prototype.setLogFunction = function(r) {
this._print = r;
}),
(r.prototype._print = function(r) {
for (var n = [], l = 1; l < arguments.length; l++)
n[l - 1] = arguments[l];
var i = e([t], n);
for (var s in i)
i[s] instanceof Error &&
(i[s] = "(" + i[s].name + ") " + i[s].message);
r >= o.All
? console.log.apply(console, e(i))
: r >= o.Warnings
? console.warn.apply(console, e(["WARNING"], i))
: r >= o.Errors &&
console.error.apply(console, e(["ERROR"], i));
}),
r
);
})();
exports.default = new n();
},
{}
],
ZRYf: [
function(require, module, exports) {
"use strict";
var e, r, n, o, t, a, i;
Object.defineProperty(exports, "__esModule", { value: !0 }),
(function(e) {
(e.Open = "open"),
(e.Stream = "stream"),
(e.Data = "data"),
(e.Close = "close"),
(e.Error = "error"),
(e.IceStateChanged = "iceStateChanged");
})(
(e =
exports.ConnectionEventType || (exports.ConnectionEventType = {}))
),
(function(e) {
(e.Data = "data"), (e.Media = "media");
})((r = exports.ConnectionType || (exports.ConnectionType = {}))),
(function(e) {
(e.Open = "open"),
(e.Close = "close"),
(e.Connection = "connection"),
(e.Call = "call"),
(e.Disconnected = "disconnected"),
(e.Error = "error");
})((n = exports.PeerEventType || (exports.PeerEventType = {}))),
(function(e) {
(e.BrowserIncompatible = "browser-incompatible"),
(e.Disconnected = "disconnected"),
(e.InvalidID = "invalid-id"),
(e.InvalidKey = "invalid-key"),
(e.Network = "network"),
(e.PeerUnavailable = "peer-unavailable"),
(e.SslUnavailable = "ssl-unavailable"),
(e.ServerError = "server-error"),
(e.SocketError = "socket-error"),
(e.SocketClosed = "socket-closed"),
(e.UnavailableID = "unavailable-id"),
(e.WebRTC = "webrtc");
})((o = exports.PeerErrorType || (exports.PeerErrorType = {}))),
(function(e) {
(e.Binary = "binary"),
(e.BinaryUTF8 = "binary-utf8"),
(e.JSON = "json");
})(
(t = exports.SerializationType || (exports.SerializationType = {}))
),
(function(e) {
(e.Message = "message"),
(e.Disconnected = "disconnected"),
(e.Error = "error"),
(e.Close = "close");
})((a = exports.SocketEventType || (exports.SocketEventType = {}))),
(function(e) {
(e.Heartbeat = "HEARTBEAT"),
(e.Candidate = "CANDIDATE"),
(e.Offer = "OFFER"),
(e.Answer = "ANSWER"),
(e.Open = "OPEN"),
(e.Error = "ERROR"),
(e.IdTaken = "ID-TAKEN"),
(e.InvalidKey = "INVALID-KEY"),
(e.Leave = "LEAVE"),
(e.Expire = "EXPIRE");
})(
(i = exports.ServerMessageType || (exports.ServerMessageType = {}))
);
},
{}
],
wJlv: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__extends) ||
(function() {
var e = function(t, n) {
return (e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(e, t) {
e.__proto__ = t;
}) ||
function(e, t) {
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
})(t, n);
};
return function(t, n) {
function s() {
this.constructor = t;
}
e(t, n),
(t.prototype =
null === n
? Object.create(n)
: ((s.prototype = n.prototype), new s()));
};
})(),
t =
(this && this.__read) ||
function(e, t) {
var n = "function" == typeof Symbol && e[Symbol.iterator];
if (!n) return e;
var s,
o,
r = n.call(e),
i = [];
try {
for (; (void 0 === t || t-- > 0) && !(s = r.next()).done; )
i.push(s.value);
} catch (c) {
o = { error: c };
} finally {
try {
s && !s.done && (n = r.return) && n.call(r);
} finally {
if (o) throw o.error;
}
}
return i;
},
n =
(this && this.__spread) ||
function() {
for (var e = [], n = 0; n < arguments.length; n++)
e = e.concat(t(arguments[n]));
return e;
},
s =
(this && this.__values) ||
function(e) {
var t = "function" == typeof Symbol && Symbol.iterator,
n = t && e[t],
s = 0;
if (n) return n.call(e);
if (e && "number" == typeof e.length)
return {
next: function() {
return (
e && s >= e.length && (e = void 0),
{ value: e && e[s++], done: !e }
);
}
};
throw new TypeError(
t
? "Object is not iterable."
: "Symbol.iterator is not defined."
);
},
o =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var r = require("eventemitter3"),
i = o(require("./logger")),
c = require("./enums"),
a = (function(t) {
function o(e, n, s, o, r, i) {
void 0 === i && (i = 5e3);
var c = t.call(this) || this;
(c.pingInterval = i),
(c._disconnected = !0),
(c._messagesQueue = []);
var a = e ? "wss://" : "ws://";
return (c._baseUrl = a + n + ":" + s + o + "peerjs?key=" + r), c;
}
return (
e(o, t),
(o.prototype.start = function(e, t) {
var n = this;
this._id = e;
var s = this._baseUrl + "&id=" + e + "&token=" + t;
!this._socket &&
this._disconnected &&
((this._socket = new WebSocket(s)),
(this._disconnected = !1),
(this._socket.onmessage = function(e) {
var t;
try {
(t = JSON.parse(e.data)),
i.default.log("Server message received:", t);
} catch (s) {
return void i.default.log(
"Invalid server message",
e.data
);
}
n.emit(c.SocketEventType.Message, t);
}),
(this._socket.onclose = function(e) {
n._disconnected ||
(i.default.log("Socket closed.", e),
n._cleanup(),
(n._disconnected = !0),
n.emit(c.SocketEventType.Disconnected));
}),
(this._socket.onopen = function() {
n._disconnected ||
(n._sendQueuedMessages(),
i.default.log("Socket open"),
n._scheduleHeartbeat());
}));
}),
(o.prototype._scheduleHeartbeat = function() {
var e = this;
this._wsPingTimer = setTimeout(function() {
e._sendHeartbeat();
}, this.pingInterval);
}),
(o.prototype._sendHeartbeat = function() {
if (this._wsOpen()) {
var e = JSON.stringify({
type: c.ServerMessageType.Heartbeat
});
this._socket.send(e), this._scheduleHeartbeat();
} else
i.default.log("Cannot send heartbeat, because socket closed");
}),
(o.prototype._wsOpen = function() {
return !!this._socket && 1 === this._socket.readyState;
}),
(o.prototype._sendQueuedMessages = function() {
var e,
t,
o = n(this._messagesQueue);
this._messagesQueue = [];
try {
for (var r = s(o), i = r.next(); !i.done; i = r.next()) {
var c = i.value;
this.send(c);
}
} catch (a) {
e = { error: a };
} finally {
try {
i && !i.done && (t = r.return) && t.call(r);
} finally {
if (e) throw e.error;
}
}
}),
(o.prototype.send = function(e) {
if (!this._disconnected)
if (this._id)
if (e.type) {
if (this._wsOpen()) {
var t = JSON.stringify(e);
this._socket.send(t);
}
} else
this.emit(c.SocketEventType.Error, "Invalid message");
else this._messagesQueue.push(e);
}),
(o.prototype.close = function() {
this._disconnected ||
(this._cleanup(), (this._disconnected = !0));
}),
(o.prototype._cleanup = function() {
this._socket &&
((this._socket.onopen = this._socket.onmessage = this._socket.onclose = null),
this._socket.close(),
(this._socket = void 0)),
clearTimeout(this._wsPingTimer);
}),
o
);
})(r.EventEmitter);
exports.Socket = a;
},
{ eventemitter3: "JJlS", "./logger": "WOs9", "./enums": "ZRYf" }
],
HCdX: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__assign) ||
function() {
return (e =
Object.assign ||
function(e) {
for (var n, t = 1, o = arguments.length; t < o; t++)
for (var i in (n = arguments[t]))
Object.prototype.hasOwnProperty.call(n, i) &&
(e[i] = n[i]);
return e;
}).apply(this, arguments);
},
n =
(this && this.__awaiter) ||
function(e, n, t, o) {
return new (t || (t = Promise))(function(i, r) {
function c(e) {
try {
s(o.next(e));
} catch (n) {
r(n);
}
}
function a(e) {
try {
s(o.throw(e));
} catch (n) {
r(n);
}
}
function s(e) {
var n;
e.done
? i(e.value)
: ((n = e.value),
n instanceof t
? n
: new t(function(e) {
e(n);
})).then(c, a);
}
s((o = o.apply(e, n || [])).next());
});
},
t =
(this && this.__generator) ||
function(e, n) {
var t,
o,
i,
r,
c = {
label: 0,
sent: function() {
if (1 & i[0]) throw i[1];
return i[1];
},
trys: [],
ops: []
};
return (
(r = { next: a(0), throw: a(1), return: a(2) }),
"function" == typeof Symbol &&
(r[Symbol.iterator] = function() {
return this;
}),
r
);
function a(r) {
return function(a) {
return (function(r) {
if (t)
throw new TypeError("Generator is already executing.");
for (; c; )
try {
if (
((t = 1),
o &&
(i =
2 & r[0]
? o.return
: r[0]
? o.throw || ((i = o.return) && i.call(o), 0)
: o.next) &&
!(i = i.call(o, r[1])).done)
)
return i;
switch (
((o = 0), i && (r = [2 & r[0], i.value]), r[0])
) {
case 0:
case 1:
i = r;
break;
case 4:
return c.label++, { value: r[1], done: !1 };
case 5:
c.label++, (o = r[1]), (r = [0]);
continue;
case 7:
(r = c.ops.pop()), c.trys.pop();
continue;
default:
if (
!(i =
(i = c.trys).length > 0 && i[i.length - 1]) &&
(6 === r[0] || 2 === r[0])
) {
c = 0;
continue;
}
if (
3 === r[0] &&
(!i || (r[1] > i[0] && r[1] < i[3]))
) {
c.label = r[1];
break;
}
if (6 === r[0] && c.label < i[1]) {
(c.label = i[1]), (i = r);
break;
}
if (i && c.label < i[2]) {
(c.label = i[2]), c.ops.push(r);
break;
}
i[2] && c.ops.pop(), c.trys.pop();
continue;
}
r = n.call(e, c);
} catch (a) {
(r = [6, a]), (o = 0);
} finally {
t = i = 0;
}
if (5 & r[0]) throw r[1];
return { value: r[0] ? r[1] : void 0, done: !0 };
})([r, a]);
};
}
},
o =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var i = require("./util"),
r = o(require("./logger")),
c = require("./enums"),
a = (function() {
function o(e) {
this.connection = e;
}
return (
(o.prototype.startConnection = function(e) {
var n = this._startPeerConnection();
if (
((this.connection.peerConnection = n),
this.connection.type === c.ConnectionType.Media &&
e._stream &&
this._addTracksToConnection(e._stream, n),
e.originator)
) {
if (this.connection.type === c.ConnectionType.Data) {
var t = this.connection,
o = { ordered: !!e.reliable },
i = n.createDataChannel(t.label, o);
t.initialize(i);
}
this._makeOffer();
} else this.handleSDP("OFFER", e.sdp);
}),
(o.prototype._startPeerConnection = function() {
r.default.log("Creating RTCPeerConnection.");
var e = new RTCPeerConnection(
this.connection.provider.options.config
);
return this._setupListeners(e), e;
}),
(o.prototype._setupListeners = function(e) {
var n = this,
t = this.connection.peer,
o = this.connection.connectionId,
a = this.connection.type,
s = this.connection.provider;
r.default.log("Listening for ICE candidates."),
(e.onicecandidate = function(e) {
e.candidate &&
e.candidate.candidate &&
(r.default.log(
"Received ICE candidates for " + t + ":",
e.candidate
),
s.socket.send({
type: c.ServerMessageType.Candidate,
payload: {
candidate: e.candidate,
type: a,
connectionId: o
},
dst: t
}));
}),
(e.oniceconnectionstatechange = function() {
switch (e.iceConnectionState) {
case "failed":
r.default.log(
"iceConnectionState is failed, closing connections to " +
t
),
n.connection.emit(
c.ConnectionEventType.Error,
new Error(
"Negotiation of connection to " + t + " failed."
)
),
n.connection.close();
break;
case "closed":
r.default.log(
"iceConnectionState is closed, closing connections to " +
t
),
n.connection.emit(
c.ConnectionEventType.Error,
new Error("Connection to " + t + " closed.")
),
n.connection.close();
break;
case "disconnected":
r.default.log(
"iceConnectionState changed to disconnected on the connection with " +
t
);
break;
case "completed":
e.onicecandidate = i.util.noop;
}
n.connection.emit(
c.ConnectionEventType.IceStateChanged,
e.iceConnectionState
);
}),
r.default.log("Listening for data channel"),
(e.ondatachannel = function(e) {
r.default.log("Received data channel");
var n = e.channel;
s.getConnection(t, o).initialize(n);
}),
r.default.log("Listening for remote stream"),
(e.ontrack = function(e) {
r.default.log("Received remote stream");
var i = e.streams[0],
a = s.getConnection(t, o);
if (a.type === c.ConnectionType.Media) {
var d = a;
n._addStreamToMediaConnection(i, d);
}
});
}),
(o.prototype.cleanup = function() {
r.default.log(
"Cleaning up PeerConnection to " + this.connection.peer
);
var e = this.connection.peerConnection;
if (e) {
(this.connection.peerConnection = null),
(e.onicecandidate = e.oniceconnectionstatechange = e.ondatachannel = e.ontrack = function() {});
var n = "closed" !== e.signalingState,
t = !1;
if (this.connection.type === c.ConnectionType.Data) {
var o = this.connection.dataChannel;
o && (t = !!o.readyState && "closed" !== o.readyState);
}
(n || t) && e.close();
}
}),
(o.prototype._makeOffer = function() {
return n(this, void 0, Promise, function() {
var n, o, a, s, d, l, u;
return t(this, function(t) {
switch (t.label) {
case 0:
(n = this.connection.peerConnection),
(o = this.connection.provider),
(t.label = 1);
case 1:
return (
t.trys.push([1, 7, , 8]),
[
4,
n.createOffer(this.connection.options.constraints)
]
);
case 2:
(a = t.sent()),
r.default.log("Created offer."),
this.connection.options.sdpTransform &&
"function" ==
typeof this.connection.options.sdpTransform &&
(a.sdp =
this.connection.options.sdpTransform(a.sdp) ||
a.sdp),
(t.label = 3);
case 3:
return (
t.trys.push([3, 5, , 6]),
[4, n.setLocalDescription(a)]
);
case 4:
return (
t.sent(),
r.default.log(
"Set localDescription:",
a,
"for:" + this.connection.peer
),
(s = {
sdp: a,
type: this.connection.type,
connectionId: this.connection.connectionId,
metadata: this.connection.metadata,
browser: i.util.browser
}),
this.connection.type === c.ConnectionType.Data &&
((d = this.connection),
(s = e(e({}, s), {
label: d.label,
reliable: d.reliable,
serialization: d.serialization
}))),
o.socket.send({
type: c.ServerMessageType.Offer,
payload: s,
dst: this.connection.peer
}),
[3, 6]
);
case 5:
return (
"OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer" !=
(l = t.sent()) &&
(o.emitError(c.PeerErrorType.WebRTC, l),
r.default.log(
"Failed to setLocalDescription, ",
l
)),
[3, 6]
);
case 6:
return [3, 8];
case 7:
return (
(u = t.sent()),
o.emitError(c.PeerErrorType.WebRTC, u),
r.default.log("Failed to createOffer, ", u),
[3, 8]
);
case 8:
return [2];
}
});
});
}),
(o.prototype._makeAnswer = function() {
return n(this, void 0, Promise, function() {
var e, n, o, a, s;
return t(this, function(t) {
switch (t.label) {
case 0:
(e = this.connection.peerConnection),
(n = this.connection.provider),
(t.label = 1);
case 1:
return t.trys.push([1, 7, , 8]), [4, e.createAnswer()];
case 2:
(o = t.sent()),
r.default.log("Created answer."),
this.connection.options.sdpTransform &&
"function" ==
typeof this.connection.options.sdpTransform &&
(o.sdp =
this.connection.options.sdpTransform(o.sdp) ||
o.sdp),
(t.label = 3);
case 3:
return (
t.trys.push([3, 5, , 6]),
[4, e.setLocalDescription(o)]
);
case 4:
return (
t.sent(),
r.default.log(
"Set localDescription:",
o,
"for:" + this.connection.peer
),
n.socket.send({
type: c.ServerMessageType.Answer,
payload: {
sdp: o,
type: this.connection.type,
connectionId: this.connection.connectionId,
browser: i.util.browser
},
dst: this.connection.peer
}),
[3, 6]
);
case 5:
return (
(a = t.sent()),
n.emitError(c.PeerErrorType.WebRTC, a),
r.default.log("Failed to setLocalDescription, ", a),
[3, 6]
);
case 6:
return [3, 8];
case 7:
return (
(s = t.sent()),
n.emitError(c.PeerErrorType.WebRTC, s),
r.default.log("Failed to create answer, ", s),
[3, 8]
);
case 8:
return [2];
}
});
});
}),
(o.prototype.handleSDP = function(e, o) {
return n(this, void 0, Promise, function() {
var n, i, a, s;
return t(this, function(t) {
switch (t.label) {
case 0:
(o = new RTCSessionDescription(o)),
(n = this.connection.peerConnection),
(i = this.connection.provider),
r.default.log("Setting remote description", o),
(a = this),
(t.label = 1);
case 1:
return (
t.trys.push([1, 5, , 6]),
[4, n.setRemoteDescription(o)]
);
case 2:
return (
t.sent(),
r.default.log(
"Set remoteDescription:" +
e +
" for:" +
this.connection.peer
),
"OFFER" !== e ? [3, 4] : [4, a._makeAnswer()]
);
case 3:
t.sent(), (t.label = 4);
case 4:
return [3, 6];
case 5:
return (
(s = t.sent()),
i.emitError(c.PeerErrorType.WebRTC, s),
r.default.log("Failed to setRemoteDescription, ", s),
[3, 6]
);
case 6:
return [2];
}
});
});
}),
(o.prototype.handleCandidate = function(e) {
return n(this, void 0, Promise, function() {
var n, o, i, a, s, d;
return t(this, function(t) {
switch (t.label) {
case 0:
r.default.log("handleCandidate:", e),
(n = e.candidate),
(o = e.sdpMLineIndex),
(i = e.sdpMid),
(a = this.connection.peerConnection),
(s = this.connection.provider),
(t.label = 1);
case 1:
return (
t.trys.push([1, 3, , 4]),
[
4,
a.addIceCandidate(
new RTCIceCandidate({
sdpMid: i,
sdpMLineIndex: o,
candidate: n
})
)
]
);
case 2:
return (
t.sent(),
r.default.log(
"Added ICE candidate for:" + this.connection.peer
),
[3, 4]
);
case 3:
return (
(d = t.sent()),
s.emitError(c.PeerErrorType.WebRTC, d),
r.default.log("Failed to handleCandidate, ", d),
[3, 4]
);
case 4:
return [2];
}
});
});
}),
(o.prototype._addTracksToConnection = function(e, n) {
if (
(r.default.log(
"add tracks from stream " + e.id + " to peer connection"
),
!n.addTrack)
)
return r.default.error(
"Your browser does't support RTCPeerConnection#addTrack. Ignored."
);
e.getTracks().forEach(function(t) {
n.addTrack(t, e);
});
}),
(o.prototype._addStreamToMediaConnection = function(e, n) {
r.default.log(
"add stream " +
e.id +
" to media connection " +
n.connectionId
),
n.addStream(e);
}),
o
);
})();
exports.Negotiator = a;
},
{ "./util": "BHXf", "./logger": "WOs9", "./enums": "ZRYf" }
],
tQFK: [
function(require, module, exports) {
"use strict";
var t =
(this && this.__extends) ||
(function() {
var t = function(e, r) {
return (t =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(t, e) {
t.__proto__ = e;
}) ||
function(t, e) {
for (var r in e) e.hasOwnProperty(r) && (t[r] = e[r]);
})(e, r);
};
return function(e, r) {
function n() {
this.constructor = e;
}
t(e, r),
(e.prototype =
null === r
? Object.create(r)
: ((n.prototype = r.prototype), new n()));
};
})();
Object.defineProperty(exports, "__esModule", { value: !0 });
var e = require("eventemitter3"),
r = (function(e) {
function r(t, r, n) {
var o = e.call(this) || this;
return (
(o.peer = t),
(o.provider = r),
(o.options = n),
(o._open = !1),
(o.metadata = n.metadata),
o
);
}
return (
t(r, e),
Object.defineProperty(r.prototype, "open", {
get: function() {
return this._open;
},
enumerable: !0,
configurable: !0
}),
r
);
})(e.EventEmitter);
exports.BaseConnection = r;
},
{ eventemitter3: "JJlS" }
],
dbHP: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__extends) ||
(function() {
var e = function(t, o) {
return (e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(e, t) {
e.__proto__ = t;
}) ||
function(e, t) {
for (var o in t) t.hasOwnProperty(o) && (e[o] = t[o]);
})(t, o);
};
return function(t, o) {
function r() {
this.constructor = t;
}
e(t, o),
(t.prototype =
null === o
? Object.create(o)
: ((r.prototype = o.prototype), new r()));
};
})(),
t =
(this && this.__assign) ||
function() {
return (t =
Object.assign ||
function(e) {
for (var t, o = 1, r = arguments.length; o < r; o++)
for (var n in (t = arguments[o]))
Object.prototype.hasOwnProperty.call(t, n) &&
(e[n] = t[n]);
return e;
}).apply(this, arguments);
},
o =
(this && this.__values) ||
function(e) {
var t = "function" == typeof Symbol && Symbol.iterator,
o = t && e[t],
r = 0;
if (o) return o.call(e);
if (e && "number" == typeof e.length)
return {
next: function() {
return (
e && r >= e.length && (e = void 0),
{ value: e && e[r++], done: !e }
);
}
};
throw new TypeError(
t
? "Object is not iterable."
: "Symbol.iterator is not defined."
);
},
r =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var n = require("./util"),
i = r(require("./logger")),
a = require("./negotiator"),
s = require("./enums"),
l = require("./baseconnection"),
c = (function(r) {
function l(e, t, o) {
var i = r.call(this, e, t, o) || this;
return (
(i._localStream = i.options._stream),
(i.connectionId =
i.options.connectionId || l.ID_PREFIX + n.util.randomToken()),
(i._negotiator = new a.Negotiator(i)),
i._localStream &&
i._negotiator.startConnection({
_stream: i._localStream,
originator: !0
}),
i
);
}
return (
e(l, r),
Object.defineProperty(l.prototype, "type", {
get: function() {
return s.ConnectionType.Media;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(l.prototype, "localStream", {
get: function() {
return this._localStream;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(l.prototype, "remoteStream", {
get: function() {
return this._remoteStream;
},
enumerable: !0,
configurable: !0
}),
(l.prototype.addStream = function(e) {
i.default.log("Receiving stream", e),
(this._remoteStream = e),
r.prototype.emit.call(this, s.ConnectionEventType.Stream, e);
}),
(l.prototype.handleMessage = function(e) {
var t = e.type,
o = e.payload;
switch (e.type) {
case s.ServerMessageType.Answer:
this._negotiator.handleSDP(t, o.sdp), (this._open = !0);
break;
case s.ServerMessageType.Candidate:
this._negotiator.handleCandidate(o.candidate);
break;
default:
i.default.warn(
"Unrecognized message type:" +
t +
" from peer:" +
this.peer
);
}
}),
(l.prototype.answer = function(e, r) {
var n, a;
if ((void 0 === r && (r = {}), this._localStream))
i.default.warn(
"Local stream already exists on this MediaConnection. Are you answering a call twice?"
);
else {
(this._localStream = e),
r &&
r.sdpTransform &&
(this.options.sdpTransform = r.sdpTransform),
this._negotiator.startConnection(
t(t({}, this.options._payload), { _stream: e })
);
var s = this.provider._getMessages(this.connectionId);
try {
for (var l = o(s), c = l.next(); !c.done; c = l.next()) {
var p = c.value;
this.handleMessage(p);
}
} catch (u) {
n = { error: u };
} finally {
try {
c && !c.done && (a = l.return) && a.call(l);
} finally {
if (n) throw n.error;
}
}
this._open = !0;
}
}),
(l.prototype.close = function() {
this._negotiator &&
(this._negotiator.cleanup(), (this._negotiator = null)),
(this._localStream = null),
(this._remoteStream = null),
this.provider &&
(this.provider._removeConnection(this),
(this.provider = null)),
this.options &&
this.options._stream &&
(this.options._stream = null),
this.open &&
((this._open = !1),
r.prototype.emit.call(this, s.ConnectionEventType.Close));
}),
(l.ID_PREFIX = "mc_"),
l
);
})(l.BaseConnection);
exports.MediaConnection = c;
},
{
"./util": "BHXf",
"./logger": "WOs9",
"./negotiator": "HCdX",
"./enums": "ZRYf",
"./baseconnection": "tQFK"
}
],
GGp6: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__extends) ||
(function() {
var e = function(t, r) {
return (e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(e, t) {
e.__proto__ = t;
}) ||
function(e, t) {
for (var r in t) t.hasOwnProperty(r) && (e[r] = t[r]);
})(t, r);
};
return function(t, r) {
function o() {
this.constructor = t;
}
e(t, r),
(t.prototype =
null === r
? Object.create(r)
: ((o.prototype = r.prototype), new o()));
};
})(),
t =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var r = require("eventemitter3"),
o = t(require("./logger")),
n = (function(t) {
function r() {
var e = t.call(this) || this;
return (
(e.fileReader = new FileReader()),
(e._queue = []),
(e._processing = !1),
(e.fileReader.onload = function(t) {
(e._processing = !1),
t.target && e.emit("done", t.target.result),
e.doNextTask();
}),
(e.fileReader.onerror = function(t) {
o.default.error("EncodingQueue error:", t),
(e._processing = !1),
e.destroy(),
e.emit("error", t);
}),
e
);
}
return (
e(r, t),
Object.defineProperty(r.prototype, "queue", {
get: function() {
return this._queue;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(r.prototype, "size", {
get: function() {
return this.queue.length;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(r.prototype, "processing", {
get: function() {
return this._processing;
},
enumerable: !0,
configurable: !0
}),
(r.prototype.enque = function(e) {
this.queue.push(e), this.processing || this.doNextTask();
}),
(r.prototype.destroy = function() {
this.fileReader.abort(), (this._queue = []);
}),
(r.prototype.doNextTask = function() {
0 !== this.size &&
(this.processing ||
((this._processing = !0),
this.fileReader.readAsArrayBuffer(this.queue.shift())));
}),
r
);
})(r.EventEmitter);
exports.EncodingQueue = n;
},
{ eventemitter3: "JJlS", "./logger": "WOs9" }
],
GBTQ: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__extends) ||
(function() {
var e = function(t, n) {
return (e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(e, t) {
e.__proto__ = t;
}) ||
function(e, t) {
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
})(t, n);
};
return function(t, n) {
function i() {
this.constructor = t;
}
e(t, n),
(t.prototype =
null === n
? Object.create(n)
: ((i.prototype = n.prototype), new i()));
};
})(),
t =
(this && this.__values) ||
function(e) {
var t = "function" == typeof Symbol && Symbol.iterator,
n = t && e[t],
i = 0;
if (n) return n.call(e);
if (e && "number" == typeof e.length)
return {
next: function() {
return (
e && i >= e.length && (e = void 0),
{ value: e && e[i++], done: !e }
);
}
};
throw new TypeError(
t
? "Object is not iterable."
: "Symbol.iterator is not defined."
);
},
n =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var i = require("./util"),
o = n(require("./logger")),
r = require("./negotiator"),
a = require("./enums"),
s = require("./baseconnection"),
u = require("./encodingQueue"),
l = (function(n) {
function s(e, t, l) {
var f = n.call(this, e, t, l) || this;
return (
(f.stringify = JSON.stringify),
(f.parse = JSON.parse),
(f._buffer = []),
(f._bufferSize = 0),
(f._buffering = !1),
(f._chunkedData = {}),
(f._encodingQueue = new u.EncodingQueue()),
(f.connectionId =
f.options.connectionId || s.ID_PREFIX + i.util.randomToken()),
(f.label = f.options.label || f.connectionId),
(f.serialization =
f.options.serialization || a.SerializationType.Binary),
(f.reliable = !!f.options.reliable),
f._encodingQueue.on("done", function(e) {
f._bufferedSend(e);
}),
f._encodingQueue.on("error", function() {
o.default.error(
"DC#" +
f.connectionId +
": Error occured in encoding from blob to arraybuffer, close DC"
),
f.close();
}),
(f._negotiator = new r.Negotiator(f)),
f._negotiator.startConnection(
f.options._payload || { originator: !0 }
),
f
);
}
return (
e(s, n),
Object.defineProperty(s.prototype, "type", {
get: function() {
return a.ConnectionType.Data;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(s.prototype, "dataChannel", {
get: function() {
return this._dc;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(s.prototype, "bufferSize", {
get: function() {
return this._bufferSize;
},
enumerable: !0,
configurable: !0
}),
(s.prototype.initialize = function(e) {
(this._dc = e), this._configureDataChannel();
}),
(s.prototype._configureDataChannel = function() {
var e = this;
(i.util.supports.binaryBlob && !i.util.supports.reliable) ||
(this.dataChannel.binaryType = "arraybuffer"),
(this.dataChannel.onopen = function() {
o.default.log(
"DC#" + e.connectionId + " dc connection success"
),
(e._open = !0),
e.emit(a.ConnectionEventType.Open);
}),
(this.dataChannel.onmessage = function(t) {
o.default.log(
"DC#" + e.connectionId + " dc onmessage:",
t.data
),
e._handleDataMessage(t);
}),
(this.dataChannel.onclose = function() {
o.default.log(
"DC#" + e.connectionId + " dc closed for:",
e.peer
),
e.close();
});
}),
(s.prototype._handleDataMessage = function(e) {
var t = this,
o = e.data,
r = o.constructor,
s = o;
if (
this.serialization === a.SerializationType.Binary ||
this.serialization === a.SerializationType.BinaryUTF8
) {
if (r === Blob)
return void i.util.blobToArrayBuffer(o, function(e) {
var n = i.util.unpack(e);
t.emit(a.ConnectionEventType.Data, n);
});
if (r === ArrayBuffer) s = i.util.unpack(o);
else if (r === String) {
var u = i.util.binaryStringToArrayBuffer(o);
s = i.util.unpack(u);
}
} else
this.serialization === a.SerializationType.JSON &&
(s = this.parse(o));
s.__peerData
? this._handleChunk(s)
: n.prototype.emit.call(this, a.ConnectionEventType.Data, s);
}),
(s.prototype._handleChunk = function(e) {
var t = e.__peerData,
n = this._chunkedData[t] || {
data: [],
count: 0,
total: e.total
};
if (
((n.data[e.n] = e.data),
n.count++,
(this._chunkedData[t] = n),
n.total === n.count)
) {
delete this._chunkedData[t];
var i = new Blob(n.data);
this._handleDataMessage({ data: i });
}
}),
(s.prototype.close = function() {
(this._buffer = []),
(this._bufferSize = 0),
(this._chunkedData = {}),
this._negotiator &&
(this._negotiator.cleanup(), (this._negotiator = null)),
this.provider &&
(this.provider._removeConnection(this),
(this.provider = null)),
this.dataChannel &&
((this.dataChannel.onopen = null),
(this.dataChannel.onmessage = null),
(this.dataChannel.onclose = null),
(this._dc = null)),
this._encodingQueue &&
(this._encodingQueue.destroy(),
this._encodingQueue.removeAllListeners(),
(this._encodingQueue = null)),
this.open &&
((this._open = !1),
n.prototype.emit.call(this, a.ConnectionEventType.Close));
}),
(s.prototype.send = function(e, t) {
if (this.open)
if (this.serialization === a.SerializationType.JSON)
this._bufferedSend(this.stringify(e));
else if (
this.serialization === a.SerializationType.Binary ||
this.serialization === a.SerializationType.BinaryUTF8
) {
var o = i.util.pack(e);
if (!t && o.size > i.util.chunkedMTU)
return void this._sendChunks(o);
i.util.supports.binaryBlob
? this._bufferedSend(o)
: this._encodingQueue.enque(o);
} else this._bufferedSend(e);
else
n.prototype.emit.call(
this,
a.ConnectionEventType.Error,
new Error(
"Connection is not open. You should listen for the `open` event before sending messages."
)
);
}),
(s.prototype._bufferedSend = function(e) {
(!this._buffering && this._trySend(e)) ||
(this._buffer.push(e),
(this._bufferSize = this._buffer.length));
}),
(s.prototype._trySend = function(e) {
var t = this;
if (!this.open) return !1;
if (this.dataChannel.bufferedAmount > s.MAX_BUFFERED_AMOUNT)
return (
(this._buffering = !0),
setTimeout(function() {
(t._buffering = !1), t._tryBuffer();
}, 50),
!1
);
try {
this.dataChannel.send(e);
} catch (n) {
return (
o.default.error(
"DC#:" + this.connectionId + " Error when sending:",
n
),
(this._buffering = !0),
this.close(),
!1
);
}
return !0;
}),
(s.prototype._tryBuffer = function() {
if (this.open && 0 !== this._buffer.length) {
var e = this._buffer[0];
this._trySend(e) &&
(this._buffer.shift(),
(this._bufferSize = this._buffer.length),
this._tryBuffer());
}
}),
(s.prototype._sendChunks = function(e) {
var n,
r,
a = i.util.chunk(e);
o.default.log(
"DC#" +
this.connectionId +
" Try to send " +
a.length +
" chunks..."
);
try {
for (var s = t(a), u = s.next(); !u.done; u = s.next()) {
var l = u.value;
this.send(l, !0);
}
} catch (f) {
n = { error: f };
} finally {
try {
u && !u.done && (r = s.return) && r.call(s);
} finally {
if (n) throw n.error;
}
}
}),
(s.prototype.handleMessage = function(e) {
var t = e.payload;
switch (e.type) {
case a.ServerMessageType.Answer:
this._negotiator.handleSDP(e.type, t.sdp);
break;
case a.ServerMessageType.Candidate:
this._negotiator.handleCandidate(t.candidate);
break;
default:
o.default.warn(
"Unrecognized message type:",
e.type,
"from peer:",
this.peer
);
}
}),
(s.ID_PREFIX = "dc_"),
(s.MAX_BUFFERED_AMOUNT = 8388608),
s
);
})(s.BaseConnection);
exports.DataConnection = l;
},
{
"./util": "BHXf",
"./logger": "WOs9",
"./negotiator": "HCdX",
"./enums": "ZRYf",
"./baseconnection": "tQFK",
"./encodingQueue": "GGp6"
}
],
in7L: [
function(require, module, exports) {
"use strict";
var t =
(this && this.__awaiter) ||
function(t, e, r, o) {
return new (r || (r = Promise))(function(n, s) {
function i(t) {
try {
a(o.next(t));
} catch (e) {
s(e);
}
}
function u(t) {
try {
a(o.throw(t));
} catch (e) {
s(e);
}
}
function a(t) {
var e;
t.done
? n(t.value)
: ((e = t.value),
e instanceof r
? e
: new r(function(t) {
t(e);
})).then(i, u);
}
a((o = o.apply(t, e || [])).next());
});
},
e =
(this && this.__generator) ||
function(t, e) {
var r,
o,
n,
s,
i = {
label: 0,
sent: function() {
if (1 & n[0]) throw n[1];
return n[1];
},
trys: [],
ops: []
};
return (
(s = { next: u(0), throw: u(1), return: u(2) }),
"function" == typeof Symbol &&
(s[Symbol.iterator] = function() {
return this;
}),
s
);
function u(s) {
return function(u) {
return (function(s) {
if (r)
throw new TypeError("Generator is already executing.");
for (; i; )
try {
if (
((r = 1),
o &&
(n =
2 & s[0]
? o.return
: s[0]
? o.throw || ((n = o.return) && n.call(o), 0)
: o.next) &&
!(n = n.call(o, s[1])).done)
)
return n;
switch (
((o = 0), n && (s = [2 & s[0], n.value]), s[0])
) {
case 0:
case 1:
n = s;
break;
case 4:
return i.label++, { value: s[1], done: !1 };
case 5:
i.label++, (o = s[1]), (s = [0]);
continue;
case 7:
(s = i.ops.pop()), i.trys.pop();
continue;
default:
if (
!(n =
(n = i.trys).length > 0 && n[n.length - 1]) &&
(6 === s[0] || 2 === s[0])
) {
i = 0;
continue;
}
if (
3 === s[0] &&
(!n || (s[1] > n[0] && s[1] < n[3]))
) {
i.label = s[1];
break;
}
if (6 === s[0] && i.label < n[1]) {
(i.label = n[1]), (n = s);
break;
}
if (n && i.label < n[2]) {
(i.label = n[2]), i.ops.push(s);
break;
}
n[2] && i.ops.pop(), i.trys.pop();
continue;
}
s = e.call(t, i);
} catch (u) {
(s = [6, u]), (o = 0);
} finally {
r = n = 0;
}
if (5 & s[0]) throw s[1];
return { value: s[0] ? s[1] : void 0, done: !0 };
})([s, u]);
};
}
},
r =
(this && this.__importDefault) ||
function(t) {
return t && t.__esModule ? t : { default: t };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var o = require("./util"),
n = r(require("./logger")),
s = (function() {
function r(t) {
this._options = t;
}
return (
(r.prototype._buildUrl = function(t) {
var e =
(this._options.secure ? "https://" : "http://") +
this._options.host +
":" +
this._options.port +
this._options.path +
this._options.key +
"/" +
t;
return (e += "?ts=" + new Date().getTime() + Math.random());
}),
(r.prototype.retrieveId = function() {
return t(this, void 0, Promise, function() {
var t, r, s, i;
return e(this, function(e) {
switch (e.label) {
case 0:
(t = this._buildUrl("id")), (e.label = 1);
case 1:
return e.trys.push([1, 3, , 4]), [4, fetch(t)];
case 2:
if (200 !== (r = e.sent()).status)
throw new Error("Error. Status:" + r.status);
return [2, r.text()];
case 3:
throw ((s = e.sent()),
n.default.error("Error retrieving ID", s),
(i = ""),
"/" === this._options.path &&
this._options.host !== o.util.CLOUD_HOST &&
(i =
" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),
new Error("Could not get an ID from the server." + i));
case 4:
return [2];
}
});
});
}),
(r.prototype.listAllPeers = function() {
return t(this, void 0, Promise, function() {
var t, r, s, i;
return e(this, function(e) {
switch (e.label) {
case 0:
(t = this._buildUrl("peers")), (e.label = 1);
case 1:
return e.trys.push([1, 3, , 4]), [4, fetch(t)];
case 2:
if (200 !== (r = e.sent()).status) {
if (401 === r.status)
throw ((s = ""),
(s =
this._options.host === o.util.CLOUD_HOST
? "It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key."
: "You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature."),
new Error(
"It doesn't look like you have permission to list peers IDs. " +
s
));
throw new Error("Error. Status:" + r.status);
}
return [2, r.json()];
case 3:
throw ((i = e.sent()),
n.default.error("Error retrieving list peers", i),
new Error(
"Could not get list peers from the server." + i
));
case 4:
return [2];
}
});
});
}),
r
);
})();
exports.API = s;
},
{ "./util": "BHXf", "./logger": "WOs9" }
],
Hxpd: [
function(require, module, exports) {
"use strict";
var e =
(this && this.__extends) ||
(function() {
var e = function(t, n) {
return (e =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function(e, t) {
e.__proto__ = t;
}) ||
function(e, t) {
for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
})(t, n);
};
return function(t, n) {
function r() {
this.constructor = t;
}
e(t, n),
(t.prototype =
null === n
? Object.create(n)
: ((r.prototype = n.prototype), new r()));
};
})(),
t =
(this && this.__assign) ||
function() {
return (t =
Object.assign ||
function(e) {
for (var t, n = 1, r = arguments.length; n < r; n++)
for (var o in (t = arguments[n]))
Object.prototype.hasOwnProperty.call(t, o) &&
(e[o] = t[o]);
return e;
}).apply(this, arguments);
},
n =
(this && this.__values) ||
function(e) {
var t = "function" == typeof Symbol && Symbol.iterator,
n = t && e[t],
r = 0;
if (n) return n.call(e);
if (e && "number" == typeof e.length)
return {
next: function() {
return (
e && r >= e.length && (e = void 0),
{ value: e && e[r++], done: !e }
);
}
};
throw new TypeError(
t
? "Object is not iterable."
: "Symbol.iterator is not defined."
);
},
r =
(this && this.__read) ||
function(e, t) {
var n = "function" == typeof Symbol && e[Symbol.iterator];
if (!n) return e;
var r,
o,
i = n.call(e),
s = [];
try {
for (; (void 0 === t || t-- > 0) && !(r = i.next()).done; )
s.push(r.value);
} catch (a) {
o = { error: a };
} finally {
try {
r && !r.done && (n = i.return) && n.call(i);
} finally {
if (o) throw o.error;
}
}
return s;
},
o =
(this && this.__importDefault) ||
function(e) {
return e && e.__esModule ? e : { default: e };
};
Object.defineProperty(exports, "__esModule", { value: !0 });
var i = require("eventemitter3"),
s = require("./util"),
a = o(require("./logger")),
c = require("./socket"),
l = require("./mediaconnection"),
d = require("./dataconnection"),
u = require("./enums"),
p = require("./api"),
h = (function() {
return function() {};
})(),
f = (function(o) {
function i(e, n) {
var r,
c = o.call(this) || this;
return (
(c._id = null),
(c._lastServerId = null),
(c._destroyed = !1),
(c._disconnected = !1),
(c._open = !1),
(c._connections = new Map()),
(c._lostMessages = new Map()),
e && e.constructor == Object
? (n = e)
: e && (r = e.toString()),
(n = t(
{
debug: 0,
host: s.util.CLOUD_HOST,
port: s.util.CLOUD_PORT,
path: "/",
key: i.DEFAULT_KEY,
token: s.util.randomToken(),
config: s.util.defaultConfig
},
n
)),
(c._options = n),
"/" === c._options.host &&
(c._options.host = window.location.hostname),
c._options.path &&
("/" !== c._options.path[0] &&
(c._options.path = "/" + c._options.path),
"/" !== c._options.path[c._options.path.length - 1] &&
(c._options.path += "/")),
void 0 === c._options.secure &&
c._options.host !== s.util.CLOUD_HOST
? (c._options.secure = s.util.isSecure())
: c._options.host == s.util.CLOUD_HOST &&
(c._options.secure = !0),
c._options.logFunction &&
a.default.setLogFunction(c._options.logFunction),
(a.default.logLevel = c._options.debug || 0),
(c._api = new p.API(n)),
(c._socket = c._createServerConnection()),
s.util.supports.audioVideo || s.util.supports.data
? r && !s.util.validateId(r)
? (c._delayedAbort(
u.PeerErrorType.InvalidID,
'ID "' + r + '" is invalid'
),
c)
: (r
? c._initialize(r)
: c._api
.retrieveId()
.then(function(e) {
return c._initialize(e);
})
.catch(function(e) {
return c._abort(u.PeerErrorType.ServerError, e);
}),
c)
: (c._delayedAbort(
u.PeerErrorType.BrowserIncompatible,
"The current browser does not support WebRTC"
),
c)
);
}
return (
e(i, o),
Object.defineProperty(i.prototype, "id", {
get: function() {
return this._id;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "options", {
get: function() {
return this._options;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "open", {
get: function() {
return this._open;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "socket", {
get: function() {
return this._socket;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "connections", {
get: function() {
var e,
t,
o = Object.create(null);
try {
for (
var i = n(this._connections), s = i.next();
!s.done;
s = i.next()
) {
var a = r(s.value, 2),
c = a[0],
l = a[1];
o[c] = l;
}
} catch (d) {
e = { error: d };
} finally {
try {
s && !s.done && (t = i.return) && t.call(i);
} finally {
if (e) throw e.error;
}
}
return o;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "destroyed", {
get: function() {
return this._destroyed;
},
enumerable: !0,
configurable: !0
}),
Object.defineProperty(i.prototype, "disconnected", {
get: function() {
return this._disconnected;
},
enumerable: !0,
configurable: !0
}),
(i.prototype._createServerConnection = function() {
var e = this,
t = new c.Socket(
this._options.secure,
this._options.host,
this._options.port,
this._options.path,
this._options.key,
this._options.pingInterval
);
return (
t.on(u.SocketEventType.Message, function(t) {
e._handleMessage(t);
}),
t.on(u.SocketEventType.Error, function(t) {
e._abort(u.PeerErrorType.SocketError, t);
}),
t.on(u.SocketEventType.Disconnected, function() {
e.disconnected ||
(e.emitError(
u.PeerErrorType.Network,
"Lost connection to server."
),
e.disconnect());
}),
t.on(u.SocketEventType.Close, function() {
e.disconnected ||
e._abort(
u.PeerErrorType.SocketClosed,
"Underlying socket is already closed."
);
}),
t
);
}),
(i.prototype._initialize = function(e) {
(this._id = e), this.socket.start(e, this._options.token);
}),
(i.prototype._handleMessage = function(e) {
var t,
r,
o = e.type,
i = e.payload,
s = e.src;
switch (o) {
case u.ServerMessageType.Open:
(this._lastServerId = this.id),
(this._open = !0),
this.emit(u.PeerEventType.Open, this.id);
break;
case u.ServerMessageType.Error:
this._abort(u.PeerErrorType.ServerError, i.msg);
break;
case u.ServerMessageType.IdTaken:
this._abort(
u.PeerErrorType.UnavailableID,
'ID "' + this.id + '" is taken'
);
break;
case u.ServerMessageType.InvalidKey:
this._abort(
u.PeerErrorType.InvalidKey,
'API KEY "' + this._options.key + '" is invalid'
);
break;
case u.ServerMessageType.Leave:
a.default.log("Received leave message from " + s),
this._cleanupPeer(s),
this._connections.delete(s);
break;
case u.ServerMessageType.Expire:
this.emitError(
u.PeerErrorType.PeerUnavailable,
"Could not connect to peer " + s
);
break;
case u.ServerMessageType.Offer:
var c = i.connectionId;
if (
((_ = this.getConnection(s, c)) &&
(_.close(),
a.default.warn(
"Offer received for existing Connection ID:" + c
)),
i.type === u.ConnectionType.Media)
)
(_ = new l.MediaConnection(s, this, {
connectionId: c,
_payload: i,
metadata: i.metadata
})),
this._addConnection(s, _),
this.emit(u.PeerEventType.Call, _);
else {
if (i.type !== u.ConnectionType.Data)
return void a.default.warn(
"Received malformed connection type:" + i.type
);
(_ = new d.DataConnection(s, this, {
connectionId: c,
_payload: i,
metadata: i.metadata,
label: i.label,
serialization: i.serialization,
reliable: i.reliable
})),
this._addConnection(s, _),
this.emit(u.PeerEventType.Connection, _);
}
var p = this._getMessages(c);
try {
for (var h = n(p), f = h.next(); !f.done; f = h.next()) {
var y = f.value;
_.handleMessage(y);
}
} catch (v) {
t = { error: v };
} finally {
try {
f && !f.done && (r = h.return) && r.call(h);
} finally {
if (t) throw t.error;
}
}
break;
default:
if (!i)
return void a.default.warn(
"You received a malformed message from " +
s +
" of type " +
o
);
var _;
c = i.connectionId;
(_ = this.getConnection(s, c)) && _.peerConnection
? _.handleMessage(e)
: c
? this._storeMessage(c, e)
: a.default.warn(
"You received an unrecognized message:",
e
);
}
}),
(i.prototype._storeMessage = function(e, t) {
this._lostMessages.has(e) || this._lostMessages.set(e, []),
this._lostMessages.get(e).push(t);
}),
(i.prototype._getMessages = function(e) {
var t = this._lostMessages.get(e);
return t ? (this._lostMessages.delete(e), t) : [];
}),
(i.prototype.connect = function(e, t) {
if ((void 0 === t && (t = {}), this.disconnected))
return (
a.default.warn(
"You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."
),
void this.emitError(
u.PeerErrorType.Disconnected,
"Cannot connect to new Peer after disconnecting from server."
)
);
var n = new d.DataConnection(e, this, t);
return this._addConnection(e, n), n;
}),
(i.prototype.call = function(e, t, n) {
if ((void 0 === n && (n = {}), this.disconnected))
return (
a.default.warn(
"You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."
),
void this.emitError(
u.PeerErrorType.Disconnected,
"Cannot connect to new Peer after disconnecting from server."
)
);
if (t) {
n._stream = t;
var r = new l.MediaConnection(e, this, n);
return this._addConnection(e, r), r;
}
a.default.error(
"To call a peer, you must provide a stream from your browser's `getUserMedia`."
);
}),
(i.prototype._addConnection = function(e, t) {
a.default.log(
"add connection " +
t.type +
":" +
t.connectionId +
" to peerId:" +
e
),
this._connections.has(e) || this._connections.set(e, []),
this._connections.get(e).push(t);
}),
(i.prototype._removeConnection = function(e) {
var t = this._connections.get(e.peer);
if (t) {
var n = t.indexOf(e);
-1 !== n && t.splice(n, 1);
}
this._lostMessages.delete(e.connectionId);
}),
(i.prototype.getConnection = function(e, t) {
var r,
o,
i = this._connections.get(e);
if (!i) return null;
try {
for (var s = n(i), a = s.next(); !a.done; a = s.next()) {
var c = a.value;
if (c.connectionId === t) return c;
}
} catch (l) {
r = { error: l };
} finally {
try {
a && !a.done && (o = s.return) && o.call(s);
} finally {
if (r) throw r.error;
}
}
return null;
}),
(i.prototype._delayedAbort = function(e, t) {
var n = this;
setTimeout(function() {
n._abort(e, t);
}, 0);
}),
(i.prototype._abort = function(e, t) {
a.default.error("Aborting!"),
this.emitError(e, t),
this._lastServerId ? this.disconnect() : this.destroy();
}),
(i.prototype.emitError = function(e, t) {
var n;
a.default.error("Error:", t),
((n = "string" == typeof t ? new Error(t) : t).type = e),
this.emit(u.PeerEventType.Error, n);
}),
(i.prototype.destroy = function() {
this.destroyed ||
(a.default.log("Destroy peer with ID:" + this.id),
this.disconnect(),
this._cleanup(),
(this._destroyed = !0),
this.emit(u.PeerEventType.Close));
}),
(i.prototype._cleanup = function() {
var e, t;
try {
for (
var r = n(this._connections.keys()), o = r.next();
!o.done;
o = r.next()
) {
var i = o.value;
this._cleanupPeer(i), this._connections.delete(i);
}
} catch (s) {
e = { error: s };
} finally {
try {
o && !o.done && (t = r.return) && t.call(r);
} finally {
if (e) throw e.error;
}
}
this.socket.removeAllListeners();
}),
(i.prototype._cleanupPeer = function(e) {
var t,
r,
o = this._connections.get(e);
if (o)
try {
for (var i = n(o), s = i.next(); !s.done; s = i.next()) {
s.value.close();
}
} catch (a) {
t = { error: a };
} finally {
try {
s && !s.done && (r = i.return) && r.call(i);
} finally {
if (t) throw t.error;
}
}
}),
(i.prototype.disconnect = function() {
if (!this.disconnected) {
var e = this.id;
a.default.log("Disconnect peer with ID:" + e),
(this._disconnected = !0),
(this._open = !1),
this.socket.close(),
(this._lastServerId = e),
(this._id = null),
this.emit(u.PeerEventType.Disconnected, e);
}
}),
(i.prototype.reconnect = function() {
if (this.disconnected && !this.destroyed)
a.default.log(
"Attempting reconnection to server with ID " +
this._lastServerId
),
(this._disconnected = !1),
this._initialize(this._lastServerId);
else {
if (this.destroyed)
throw new Error(
"This peer cannot reconnect to the server. It has already been destroyed."
);
if (this.disconnected || this.open)
throw new Error(
"Peer " +
this.id +
" cannot reconnect because it is not disconnected from the server!"
);
a.default.error(
"In a hurry? We're still trying to make the initial connection!"
);
}
}),
(i.prototype.listAllPeers = function(e) {
var t = this;
void 0 === e && (e = function(e) {}),
this._api
.listAllPeers()
.then(function(t) {
return e(t);
})
.catch(function(e) {
return t._abort(u.PeerErrorType.ServerError, e);
});
}),
(i.DEFAULT_KEY = "peerjs"),
i
);
})(i.EventEmitter);
exports.Peer = f;
},
{
eventemitter3: "JJlS",
"./util": "BHXf",
"./logger": "WOs9",
"./socket": "wJlv",
"./mediaconnection": "dbHP",
"./dataconnection": "GBTQ",
"./enums": "ZRYf",
"./api": "in7L"
}
],
iTK6: [
function(require, module, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: !0 });
var e = require("./util"),
r = require("./peer");
(exports.peerjs = { Peer: r.Peer, util: e.util }),
(exports.default = r.Peer),
(window.peerjs = exports.peerjs),
(window.Peer = r.Peer);
},
{ "./util": "BHXf", "./peer": "Hxpd" }
]
},
{},
["iTK6"],
null
);
//# sourceMappingURL=/peerjs.min.js.map
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment