Files
AR-Menu/AR Menu/Needle/MenuScene/node_modules/peerjs/dist/bundler.cjs
2025-11-30 08:35:03 +02:00

2457 lines
113 KiB
JavaScript

var $TdzfH$peerjsjsbinarypack = require("peerjs-js-binarypack");
var $TdzfH$webrtcadapter = require("webrtc-adapter");
var $TdzfH$eventemitter3 = require("eventemitter3");
function $parcel$defineInteropFlag(a) {
Object.defineProperty(a, '__esModule', {value: true, configurable: true});
}
function $parcel$export(e, n, v, s) {
Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
}
function $parcel$interopDefault(a) {
return a && a.__esModule ? a.default : a;
}
$parcel$defineInteropFlag(module.exports);
$parcel$export(module.exports, "default", () => $f1d1a6b5c376b066$export$2e2bcd8739ae039);
$parcel$export(module.exports, "Peer", () => $976f9b679211b81e$exports.Peer);
$parcel$export(module.exports, "util", () => $6c02be62bb157391$export$7debb50ef11d5e0b);
var $c2c6b21388937aac$var$webRTCAdapter = //@ts-ignore
($parcel$interopDefault($TdzfH$webrtcadapter)).default || ($parcel$interopDefault($TdzfH$webrtcadapter));
var $c2c6b21388937aac$export$25be9502477c137d = new /** @class */ (function() {
function class_1() {
this.isIOS = [
"iPad",
"iPhone",
"iPod"
].includes(navigator.platform);
this.supportedBrowsers = [
"firefox",
"chrome",
"safari"
];
this.minFirefoxVersion = 59;
this.minChromeVersion = 72;
this.minSafariVersion = 605;
}
class_1.prototype.isWebRTCSupported = function() {
return typeof RTCPeerConnection !== "undefined";
};
class_1.prototype.isBrowserSupported = function() {
var browser = this.getBrowser();
var version = this.getVersion();
var validBrowser = this.supportedBrowsers.includes(browser);
if (!validBrowser) return false;
if (browser === "chrome") return version >= this.minChromeVersion;
if (browser === "firefox") return version >= this.minFirefoxVersion;
if (browser === "safari") return !this.isIOS && version >= this.minSafariVersion;
return false;
};
class_1.prototype.getBrowser = function() {
return $c2c6b21388937aac$var$webRTCAdapter.browserDetails.browser;
};
class_1.prototype.getVersion = function() {
return $c2c6b21388937aac$var$webRTCAdapter.browserDetails.version || 0;
};
class_1.prototype.isUnifiedPlanSupported = function() {
var browser = this.getBrowser();
var version = $c2c6b21388937aac$var$webRTCAdapter.browserDetails.version || 0;
if (browser === "chrome" && version < this.minChromeVersion) return false;
if (browser === "firefox" && version >= this.minFirefoxVersion) return true;
if (!window.RTCRtpTransceiver || !("currentDirection" in RTCRtpTransceiver.prototype)) return false;
var tempPc;
var supported = false;
try {
tempPc = new RTCPeerConnection();
tempPc.addTransceiver("audio");
supported = true;
} catch (e) {} finally{
if (tempPc) tempPc.close();
}
return supported;
};
class_1.prototype.toString = function() {
return "Supports:\n browser:".concat(this.getBrowser(), "\n version:").concat(this.getVersion(), "\n isIOS:").concat(this.isIOS, "\n isWebRTCSupported:").concat(this.isWebRTCSupported(), "\n isBrowserSupported:").concat(this.isBrowserSupported(), "\n isUnifiedPlanSupported:").concat(this.isUnifiedPlanSupported());
};
return class_1;
}())();
var $6c02be62bb157391$var$DEFAULT_CONFIG = {
iceServers: [
{
urls: "stun:stun.l.google.com:19302"
},
{
urls: [
"turn:eu-0.turn.peerjs.com:3478",
"turn:us-0.turn.peerjs.com:3478",
],
username: "peerjs",
credential: "peerjsp"
},
],
sdpSemantics: "unified-plan"
};
var $6c02be62bb157391$var$Util = /** @class */ function() {
function Util() {
this.CLOUD_HOST = "0.peerjs.com";
this.CLOUD_PORT = 443;
// Browsers that need chunking:
this.chunkedBrowsers = {
Chrome: 1,
chrome: 1
};
this.chunkedMTU = 16300; // The original 60000 bytes setting does not work when sending data from Firefox to Chrome, which is "cut off" after 16384 bytes and delivered individually.
// Returns browser-agnostic default config
this.defaultConfig = $6c02be62bb157391$var$DEFAULT_CONFIG;
this.browser = $c2c6b21388937aac$export$25be9502477c137d.getBrowser();
this.browserVersion = $c2c6b21388937aac$export$25be9502477c137d.getVersion();
// Lists which features are supported
this.supports = function() {
var supported = {
browser: $c2c6b21388937aac$export$25be9502477c137d.isBrowserSupported(),
webRTC: $c2c6b21388937aac$export$25be9502477c137d.isWebRTCSupported(),
audioVideo: false,
data: false,
binaryBlob: false,
reliable: false
};
if (!supported.webRTC) return supported;
var pc;
try {
pc = new RTCPeerConnection($6c02be62bb157391$var$DEFAULT_CONFIG);
supported.audioVideo = true;
var dc = void 0;
try {
dc = pc.createDataChannel("_PEERJSTEST", {
ordered: true
});
supported.data = true;
supported.reliable = !!dc.ordered;
// Binary test
try {
dc.binaryType = "blob";
supported.binaryBlob = !$c2c6b21388937aac$export$25be9502477c137d.isIOS;
} catch (e) {}
} catch (e) {} finally{
if (dc) dc.close();
}
} catch (e) {} finally{
if (pc) pc.close();
}
return supported;
}();
this.pack = ($parcel$interopDefault($TdzfH$peerjsjsbinarypack)).pack;
this.unpack = ($parcel$interopDefault($TdzfH$peerjsjsbinarypack)).unpack;
// Binary stuff
this._dataCount = 1;
}
Util.prototype.noop = function() {};
// Ensure alphanumeric ids
Util.prototype.validateId = function(id) {
// Allow empty ids
return !id || /^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(id);
};
Util.prototype.chunk = function(blob) {
var chunks = [];
var size = blob.size;
var total = Math.ceil(size / $6c02be62bb157391$export$7debb50ef11d5e0b.chunkedMTU);
var index = 0;
var start = 0;
while(start < size){
var end = Math.min(size, start + $6c02be62bb157391$export$7debb50ef11d5e0b.chunkedMTU);
var b = blob.slice(start, end);
var chunk = {
__peerData: this._dataCount,
n: index,
data: b,
total: total
};
chunks.push(chunk);
start = end;
index++;
}
this._dataCount++;
return chunks;
};
Util.prototype.blobToArrayBuffer = function(blob, cb) {
var fr = new FileReader();
fr.onload = function(evt) {
if (evt.target) cb(evt.target.result);
};
fr.readAsArrayBuffer(blob);
return fr;
};
Util.prototype.binaryStringToArrayBuffer = function(binary) {
var byteArray = new Uint8Array(binary.length);
for(var i = 0; i < binary.length; i++)byteArray[i] = binary.charCodeAt(i) & 0xff;
return byteArray.buffer;
};
Util.prototype.randomToken = function() {
return Math.random().toString(36).slice(2);
};
Util.prototype.isSecure = function() {
return location.protocol === "https:";
};
return Util;
}();
var $6c02be62bb157391$export$7debb50ef11d5e0b = new $6c02be62bb157391$var$Util();
var $976f9b679211b81e$exports = {};
$parcel$export($976f9b679211b81e$exports, "Peer", () => $976f9b679211b81e$export$ecd1fc136c422448, (v) => $976f9b679211b81e$export$ecd1fc136c422448 = v);
var $c25b565240b6a41d$exports = {};
$parcel$export($c25b565240b6a41d$exports, "LogLevel", () => $c25b565240b6a41d$export$243e62d78d3b544d, (v) => $c25b565240b6a41d$export$243e62d78d3b544d = v);
$parcel$export($c25b565240b6a41d$exports, "default", () => $c25b565240b6a41d$export$2e2bcd8739ae039, (v) => $c25b565240b6a41d$export$2e2bcd8739ae039 = v);
var $c25b565240b6a41d$var$__read = undefined && undefined.__read || function(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally{
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally{
if (e) throw e.error;
}
}
return ar;
};
var $c25b565240b6a41d$var$__spreadArray = undefined && undefined.__spreadArray || function(to, from, pack) {
if (pack || arguments.length === 2) {
for(var i = 0, l = from.length, ar; i < l; i++)if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var $c25b565240b6a41d$var$LOG_PREFIX = "PeerJS: ";
var $c25b565240b6a41d$export$243e62d78d3b544d;
(function($c25b565240b6a41d$export$243e62d78d3b544d) {
$c25b565240b6a41d$export$243e62d78d3b544d[$c25b565240b6a41d$export$243e62d78d3b544d["Disabled"] = 0] = "Disabled";
$c25b565240b6a41d$export$243e62d78d3b544d[$c25b565240b6a41d$export$243e62d78d3b544d["Errors"] = 1] = "Errors";
$c25b565240b6a41d$export$243e62d78d3b544d[$c25b565240b6a41d$export$243e62d78d3b544d["Warnings"] = 2] = "Warnings";
$c25b565240b6a41d$export$243e62d78d3b544d[$c25b565240b6a41d$export$243e62d78d3b544d["All"] = 3] = "All";
})($c25b565240b6a41d$export$243e62d78d3b544d || ($c25b565240b6a41d$export$243e62d78d3b544d = {}));
var $c25b565240b6a41d$var$Logger = /** @class */ function() {
function Logger() {
this._logLevel = $c25b565240b6a41d$export$243e62d78d3b544d.Disabled;
}
Object.defineProperty(Logger.prototype, "logLevel", {
get: function() {
return this._logLevel;
},
set: function(logLevel) {
this._logLevel = logLevel;
},
enumerable: false,
configurable: true
});
Logger.prototype.log = function() {
var args = [];
for(var _i = 0; _i < arguments.length; _i++)args[_i] = arguments[_i];
if (this._logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.All) this._print.apply(this, $c25b565240b6a41d$var$__spreadArray([
$c25b565240b6a41d$export$243e62d78d3b544d.All
], $c25b565240b6a41d$var$__read(args), false));
};
Logger.prototype.warn = function() {
var args = [];
for(var _i = 0; _i < arguments.length; _i++)args[_i] = arguments[_i];
if (this._logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.Warnings) this._print.apply(this, $c25b565240b6a41d$var$__spreadArray([
$c25b565240b6a41d$export$243e62d78d3b544d.Warnings
], $c25b565240b6a41d$var$__read(args), false));
};
Logger.prototype.error = function() {
var args = [];
for(var _i = 0; _i < arguments.length; _i++)args[_i] = arguments[_i];
if (this._logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.Errors) this._print.apply(this, $c25b565240b6a41d$var$__spreadArray([
$c25b565240b6a41d$export$243e62d78d3b544d.Errors
], $c25b565240b6a41d$var$__read(args), false));
};
Logger.prototype.setLogFunction = function(fn) {
this._print = fn;
};
Logger.prototype._print = function(logLevel) {
var rest = [];
for(var _i = 1; _i < arguments.length; _i++)rest[_i - 1] = arguments[_i];
var copy = $c25b565240b6a41d$var$__spreadArray([
$c25b565240b6a41d$var$LOG_PREFIX
], $c25b565240b6a41d$var$__read(rest), false);
for(var i in copy)if (copy[i] instanceof Error) copy[i] = "(" + copy[i].name + ") " + copy[i].message;
if (logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.All) console.log.apply(console, $c25b565240b6a41d$var$__spreadArray([], $c25b565240b6a41d$var$__read(copy), false));
else if (logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.Warnings) console.warn.apply(console, $c25b565240b6a41d$var$__spreadArray([
"WARNING"
], $c25b565240b6a41d$var$__read(copy), false));
else if (logLevel >= $c25b565240b6a41d$export$243e62d78d3b544d.Errors) console.error.apply(console, $c25b565240b6a41d$var$__spreadArray([
"ERROR"
], $c25b565240b6a41d$var$__read(copy), false));
};
return Logger;
}();
var $c25b565240b6a41d$export$2e2bcd8739ae039 = new $c25b565240b6a41d$var$Logger();
var $a86db8d850e55bcf$exports = {};
$parcel$export($a86db8d850e55bcf$exports, "Socket", () => $a86db8d850e55bcf$export$4798917dbf149b79, (v) => $a86db8d850e55bcf$export$4798917dbf149b79 = v);
var $2f2cc37b22a0b29a$export$3157d57b4135e3bc;
(function($2f2cc37b22a0b29a$export$3157d57b4135e3bc) {
$2f2cc37b22a0b29a$export$3157d57b4135e3bc["Data"] = "data";
$2f2cc37b22a0b29a$export$3157d57b4135e3bc["Media"] = "media";
})($2f2cc37b22a0b29a$export$3157d57b4135e3bc || ($2f2cc37b22a0b29a$export$3157d57b4135e3bc = {}));
var $2f2cc37b22a0b29a$export$9547aaa2e39030ff;
(function($2f2cc37b22a0b29a$export$9547aaa2e39030ff) {
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["BrowserIncompatible"] = "browser-incompatible";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["Disconnected"] = "disconnected";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["InvalidID"] = "invalid-id";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["InvalidKey"] = "invalid-key";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["Network"] = "network";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["PeerUnavailable"] = "peer-unavailable";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["SslUnavailable"] = "ssl-unavailable";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["ServerError"] = "server-error";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["SocketError"] = "socket-error";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["SocketClosed"] = "socket-closed";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["UnavailableID"] = "unavailable-id";
$2f2cc37b22a0b29a$export$9547aaa2e39030ff["WebRTC"] = "webrtc";
})($2f2cc37b22a0b29a$export$9547aaa2e39030ff || ($2f2cc37b22a0b29a$export$9547aaa2e39030ff = {}));
var $2f2cc37b22a0b29a$export$89f507cf986a947;
(function($2f2cc37b22a0b29a$export$89f507cf986a947) {
$2f2cc37b22a0b29a$export$89f507cf986a947["Binary"] = "binary";
$2f2cc37b22a0b29a$export$89f507cf986a947["BinaryUTF8"] = "binary-utf8";
$2f2cc37b22a0b29a$export$89f507cf986a947["JSON"] = "json";
})($2f2cc37b22a0b29a$export$89f507cf986a947 || ($2f2cc37b22a0b29a$export$89f507cf986a947 = {}));
var $2f2cc37b22a0b29a$export$3b5c4a4b6354f023;
(function($2f2cc37b22a0b29a$export$3b5c4a4b6354f023) {
$2f2cc37b22a0b29a$export$3b5c4a4b6354f023["Message"] = "message";
$2f2cc37b22a0b29a$export$3b5c4a4b6354f023["Disconnected"] = "disconnected";
$2f2cc37b22a0b29a$export$3b5c4a4b6354f023["Error"] = "error";
$2f2cc37b22a0b29a$export$3b5c4a4b6354f023["Close"] = "close";
})($2f2cc37b22a0b29a$export$3b5c4a4b6354f023 || ($2f2cc37b22a0b29a$export$3b5c4a4b6354f023 = {}));
var $2f2cc37b22a0b29a$export$adb4a1754da6f10d;
(function($2f2cc37b22a0b29a$export$adb4a1754da6f10d) {
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Heartbeat"] = "HEARTBEAT";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Candidate"] = "CANDIDATE";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Offer"] = "OFFER";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Answer"] = "ANSWER";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Open"] = "OPEN";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Error"] = "ERROR";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["IdTaken"] = "ID-TAKEN";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["InvalidKey"] = "INVALID-KEY";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Leave"] = "LEAVE";
$2f2cc37b22a0b29a$export$adb4a1754da6f10d["Expire"] = "EXPIRE";
})($2f2cc37b22a0b29a$export$adb4a1754da6f10d || ($2f2cc37b22a0b29a$export$adb4a1754da6f10d = {}));
var $059935620e5e661f$exports = {};
$059935620e5e661f$exports = JSON.parse("{\"name\":\"peerjs\",\"version\":\"1.4.7\",\"keywords\":[\"peerjs\",\"webrtc\",\"p2p\",\"rtc\"],\"description\":\"PeerJS client\",\"homepage\":\"https://peerjs.com\",\"bugs\":{\"url\":\"https://github.com/peers/peerjs/issues\"},\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/peers/peerjs\"},\"license\":\"MIT\",\"contributors\":[\"Michelle Bu <michelle@michellebu.com>\",\"afrokick <devbyru@gmail.com>\",\"ericz <really.ez@gmail.com>\",\"Jairo <kidandcat@gmail.com>\",\"Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>\",\"Jairo Caro-Accino Viciana <jairo@galax.be>\",\"Carlos Caballero <carlos.caballero.gonzalez@gmail.com>\",\"hc <hheennrryy@gmail.com>\",\"Muhammad Asif <capripio@gmail.com>\",\"PrashoonB <prashoonbhattacharjee@gmail.com>\",\"Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>\",\"akotynski <aleksanderkotbury@gmail.com>\",\"lmb <i@lmb.io>\",\"Jairooo <jairocaro@msn.com>\",\"Moritz Stückler <moritz.stueckler@gmail.com>\",\"Simon <crydotsnakegithub@gmail.com>\",\"Denis Lukov <denismassters@gmail.com>\",\"Philipp Hancke <fippo@andyet.net>\",\"Hans Oksendahl <hansoksendahl@gmail.com>\",\"Jess <jessachandler@gmail.com>\",\"khankuan <khankuan@gmail.com>\",\"DUODVK <kurmanov.work@gmail.com>\",\"XiZhao <kwang1imsa@gmail.com>\",\"Matthias Lohr <matthias@lohr.me>\",\"=frank tree <=frnktrb@googlemail.com>\",\"Andre Eckardt <aeckardt@outlook.com>\",\"Chris Cowan <agentme49@gmail.com>\",\"Alex Chuev <alex@chuev.com>\",\"alxnull <alxnull@e.mail.de>\",\"Yemel Jardi <angel.jardi@gmail.com>\",\"Ben Parnell <benjaminparnell.94@gmail.com>\",\"Benny Lichtner <bennlich@gmail.com>\",\"fresheneesz <bitetrudpublic@gmail.com>\",\"bob.barstead@exaptive.com <bob.barstead@exaptive.com>\",\"chandika <chandika@gmail.com>\",\"emersion <contact@emersion.fr>\",\"Christopher Van <cvan@users.noreply.github.com>\",\"eddieherm <edhermoso@gmail.com>\",\"Eduardo Pinho <enet4mikeenet@gmail.com>\",\"Evandro Zanatta <ezanatta@tray.net.br>\",\"Gardner Bickford <gardner@users.noreply.github.com>\",\"Gian Luca <gianluca.cecchi@cynny.com>\",\"PatrickJS <github@gdi2290.com>\",\"jonnyf <github@jonathanfoss.co.uk>\",\"Hizkia Felix <hizkifw@gmail.com>\",\"Hristo Oskov <hristo.oskov@gmail.com>\",\"Isaac Madwed <i.madwed@gmail.com>\",\"Ilya Konanykhin <ilya.konanykhin@gmail.com>\",\"jasonbarry <jasbarry@me.com>\",\"Jonathan Burke <jonathan.burke.1311@googlemail.com>\",\"Josh Hamit <josh.hamit@gmail.com>\",\"Jordan Austin <jrax86@gmail.com>\",\"Joel Wetzell <jwetzell@yahoo.com>\",\"xizhao <kevin.wang@cloudera.com>\",\"Alberto Torres <kungfoobar@gmail.com>\",\"Jonathan Mayol <mayoljonathan@gmail.com>\",\"Jefferson Felix <me@jsfelix.dev>\",\"Rolf Erik Lekang <me@rolflekang.com>\",\"Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>\",\"Pepijn de Vos <pepijndevos@gmail.com>\",\"JooYoung <qkdlql@naver.com>\",\"Tobias Speicher <rootcommander@gmail.com>\",\"Steve Blaurock <sblaurock@gmail.com>\",\"Kyrylo Shegeda <shegeda@ualberta.ca>\",\"Diwank Singh Tomer <singh@diwank.name>\",\"Sören Balko <Soeren.Balko@gmail.com>\",\"Arpit Solanki <solankiarpit1997@gmail.com>\",\"Yuki Ito <yuki@gnnk.net>\",\"Artur Zayats <zag2art@gmail.com>\"],\"funding\":{\"type\":\"opencollective\",\"url\":\"https://opencollective.com/peer\"},\"collective\":{\"type\":\"opencollective\",\"url\":\"https://opencollective.com/peer\"},\"files\":[\"dist/*\"],\"sideEffects\":[\"lib/global.ts\",\"lib/supports.ts\"],\"main\":\"dist/bundler.cjs\",\"module\":\"dist/bundler.mjs\",\"browser-minified\":\"dist/peerjs.min.js\",\"browser-unminified\":\"dist/peerjs.js\",\"types\":\"dist/types.d.ts\",\"engines\":{\"node\":\">= 10\"},\"targets\":{\"types\":{\"source\":\"lib/exports.ts\"},\"main\":{\"source\":\"lib/exports.ts\",\"sourceMap\":{\"inlineSources\":true}},\"module\":{\"source\":\"lib/exports.ts\",\"includeNodeModules\":[\"eventemitter3\"],\"sourceMap\":{\"inlineSources\":true}},\"browser-minified\":{\"context\":\"browser\",\"outputFormat\":\"global\",\"optimize\":true,\"engines\":{\"browsers\":\"cover 99%, not dead\"},\"source\":\"lib/global.ts\"},\"browser-unminified\":{\"context\":\"browser\",\"outputFormat\":\"global\",\"optimize\":false,\"engines\":{\"browsers\":\"cover 99%, not dead\"},\"source\":\"lib/global.ts\"}},\"scripts\":{\"contributors\":\"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\\"chore(contributors): update and sort contributors list\\\"\",\"check\":\"tsc --noEmit\",\"watch\":\"parcel watch\",\"build\":\"rm -rf dist && parcel build\",\"prepublishOnly\":\"npm run build\",\"test\":\"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts\",\"format\":\"prettier --write .\",\"semantic-release\":\"semantic-release\"},\"devDependencies\":{\"@parcel/config-default\":\"^2.5.0\",\"@parcel/packager-ts\":\"^2.5.0\",\"@parcel/transformer-typescript-tsc\":\"^2.5.0\",\"@parcel/transformer-typescript-types\":\"^2.5.0\",\"@semantic-release/changelog\":\"^6.0.1\",\"@semantic-release/git\":\"^10.0.1\",\"@types/chai\":\"^4.3.0\",\"@types/mocha\":\"^9.1.0\",\"@types/node\":\"^17.0.18\",\"chai\":\"^4.3.6\",\"git-authors-cli\":\"^1.0.40\",\"jsdom\":\"^19.0.0\",\"jsdom-global\":\"^3.0.2\",\"mocha\":\"^9.2.0\",\"mock-socket\":\"8.0.5\",\"parcel\":\"^2.5.0\",\"parcel-transformer-tsc-sourcemaps\":\"^1.0.2\",\"prettier\":\"^2.6.2\",\"semantic-release\":\"^19.0.2\",\"standard\":\"^16.0.4\",\"ts-node\":\"^10.5.0\",\"typescript\":\"^4.5.5\"},\"dependencies\":{\"@swc/helpers\":\"^0.3.13\",\"eventemitter3\":\"^4.0.7\",\"peerjs-js-binarypack\":\"1.0.1\",\"webrtc-adapter\":\"^7.7.1\"}}");
var $a86db8d850e55bcf$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $a86db8d850e55bcf$var$__read = undefined && undefined.__read || function(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally{
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally{
if (e) throw e.error;
}
}
return ar;
};
var $a86db8d850e55bcf$var$__spreadArray = undefined && undefined.__spreadArray || function(to, from, pack) {
if (pack || arguments.length === 2) {
for(var i = 0, l = from.length, ar; i < l; i++)if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var $a86db8d850e55bcf$var$__values = undefined && undefined.__values || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return {
value: o && o[i++],
done: !o
};
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
/**
* An abstraction on top of WebSockets to provide fastest
* possible connection for peers.
*/ var $a86db8d850e55bcf$export$4798917dbf149b79 = /** @class */ function(_super) {
$a86db8d850e55bcf$var$__extends($a86db8d850e55bcf$export$4798917dbf149b79, _super);
function $a86db8d850e55bcf$export$4798917dbf149b79(secure, host, port, path, key, pingInterval) {
if (pingInterval === void 0) pingInterval = 5000;
var _this = _super.call(this) || this;
_this.pingInterval = pingInterval;
_this._disconnected = true;
_this._messagesQueue = [];
var wsProtocol = secure ? "wss://" : "ws://";
_this._baseUrl = wsProtocol + host + ":" + port + path + "peerjs?key=" + key;
return _this;
}
$a86db8d850e55bcf$export$4798917dbf149b79.prototype.start = function(id, token) {
var _this = this;
this._id = id;
var wsUrl = "".concat(this._baseUrl, "&id=").concat(id, "&token=").concat(token);
if (!!this._socket || !this._disconnected) return;
this._socket = new WebSocket(wsUrl + "&version=" + $059935620e5e661f$exports.version);
this._disconnected = false;
this._socket.onmessage = function(event) {
var data;
try {
data = JSON.parse(event.data);
$c25b565240b6a41d$exports.default.log("Server message received:", data);
} catch (e) {
$c25b565240b6a41d$exports.default.log("Invalid server message", event.data);
return;
}
_this.emit($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Message, data);
};
this._socket.onclose = function(event) {
if (_this._disconnected) return;
$c25b565240b6a41d$exports.default.log("Socket closed.", event);
_this._cleanup();
_this._disconnected = true;
_this.emit($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Disconnected);
};
// Take care of the queue of connections if necessary and make sure Peer knows
// socket is open.
this._socket.onopen = function() {
if (_this._disconnected) return;
_this._sendQueuedMessages();
$c25b565240b6a41d$exports.default.log("Socket open");
_this._scheduleHeartbeat();
};
};
$a86db8d850e55bcf$export$4798917dbf149b79.prototype._scheduleHeartbeat = function() {
var _this = this;
this._wsPingTimer = setTimeout(function() {
_this._sendHeartbeat();
}, this.pingInterval);
};
$a86db8d850e55bcf$export$4798917dbf149b79.prototype._sendHeartbeat = function() {
if (!this._wsOpen()) {
$c25b565240b6a41d$exports.default.log("Cannot send heartbeat, because socket closed");
return;
}
var message = JSON.stringify({
type: $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Heartbeat
});
this._socket.send(message);
this._scheduleHeartbeat();
};
/** Is the websocket currently open? */ $a86db8d850e55bcf$export$4798917dbf149b79.prototype._wsOpen = function() {
return !!this._socket && this._socket.readyState === 1;
};
/** Send queued messages. */ $a86db8d850e55bcf$export$4798917dbf149b79.prototype._sendQueuedMessages = function() {
var e_1, _a;
//Create copy of queue and clear it,
//because send method push the message back to queue if smth will go wrong
var copiedQueue = $a86db8d850e55bcf$var$__spreadArray([], $a86db8d850e55bcf$var$__read(this._messagesQueue), false);
this._messagesQueue = [];
try {
for(var copiedQueue_1 = $a86db8d850e55bcf$var$__values(copiedQueue), copiedQueue_1_1 = copiedQueue_1.next(); !copiedQueue_1_1.done; copiedQueue_1_1 = copiedQueue_1.next()){
var message = copiedQueue_1_1.value;
this.send(message);
}
} catch (e_1_1) {
e_1 = {
error: e_1_1
};
} finally{
try {
if (copiedQueue_1_1 && !copiedQueue_1_1.done && (_a = copiedQueue_1.return)) _a.call(copiedQueue_1);
} finally{
if (e_1) throw e_1.error;
}
}
};
/** Exposed send for DC & Peer. */ $a86db8d850e55bcf$export$4798917dbf149b79.prototype.send = function(data) {
if (this._disconnected) return;
// If we didn't get an ID yet, we can't yet send anything so we should queue
// up these messages.
if (!this._id) {
this._messagesQueue.push(data);
return;
}
if (!data.type) {
this.emit($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Error, "Invalid message");
return;
}
if (!this._wsOpen()) return;
var message = JSON.stringify(data);
this._socket.send(message);
};
$a86db8d850e55bcf$export$4798917dbf149b79.prototype.close = function() {
if (this._disconnected) return;
this._cleanup();
this._disconnected = true;
};
$a86db8d850e55bcf$export$4798917dbf149b79.prototype._cleanup = function() {
if (this._socket) {
this._socket.onopen = this._socket.onmessage = this._socket.onclose = null;
this._socket.close();
this._socket = undefined;
}
clearTimeout(this._wsPingTimer);
};
return $a86db8d850e55bcf$export$4798917dbf149b79;
}($TdzfH$eventemitter3.EventEmitter);
var $9b5cc8dbdd0aa809$exports = {};
$parcel$export($9b5cc8dbdd0aa809$exports, "MediaConnection", () => $9b5cc8dbdd0aa809$export$4a84e95a2324ac29, (v) => $9b5cc8dbdd0aa809$export$4a84e95a2324ac29 = v);
var $3b7b9afef381ead8$exports = {};
$parcel$export($3b7b9afef381ead8$exports, "Negotiator", () => $3b7b9afef381ead8$export$89e6bb5ad64bf4a, (v) => $3b7b9afef381ead8$export$89e6bb5ad64bf4a = v);
var $3b7b9afef381ead8$var$__assign = undefined && undefined.__assign || function() {
$3b7b9afef381ead8$var$__assign = Object.assign || function(t) {
for(var s, i = 1, n = arguments.length; i < n; i++){
s = arguments[i];
for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return $3b7b9afef381ead8$var$__assign.apply(this, arguments);
};
var $3b7b9afef381ead8$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function(resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var $3b7b9afef381ead8$var$__generator = undefined && undefined.__generator || function(thisArg, body) {
var _ = {
label: 0,
sent: function() {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: []
}, f, y, t, g;
return g = {
next: verb(0),
"throw": verb(1),
"return": verb(2)
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return step([
n,
v
]);
};
}
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while(_)try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [
op[0] & 2,
t.value
];
switch(op[0]){
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return {
value: op[1],
done: false
};
case 5:
_.label++;
y = op[1];
op = [
0
];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [
6,
e
];
y = 0;
} finally{
f = t = 0;
}
if (op[0] & 5) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: true
};
}
};
/**
* Manages all negotiations between Peers.
*/ var $3b7b9afef381ead8$export$89e6bb5ad64bf4a = /** @class */ function() {
function $3b7b9afef381ead8$export$89e6bb5ad64bf4a(connection) {
this.connection = connection;
}
/** Returns a PeerConnection object set up correctly (for data, media). */ $3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype.startConnection = function(options) {
var peerConnection = this._startPeerConnection();
// Set the connection's PC.
this.connection.peerConnection = peerConnection;
if (this.connection.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Media && options._stream) this._addTracksToConnection(options._stream, peerConnection);
// What do we need to do now?
if (options.originator) {
if (this.connection.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Data) {
var dataConnection = this.connection;
var config = {
ordered: !!options.reliable
};
var dataChannel = peerConnection.createDataChannel(dataConnection.label, config);
dataConnection.initialize(dataChannel);
}
this._makeOffer();
} else this.handleSDP("OFFER", options.sdp);
};
/** Start a PC. */ $3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._startPeerConnection = function() {
$c25b565240b6a41d$exports.default.log("Creating RTCPeerConnection.");
var peerConnection = new RTCPeerConnection(this.connection.provider.options.config);
this._setupListeners(peerConnection);
return peerConnection;
};
/** Set up various WebRTC listeners. */ $3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._setupListeners = function(peerConnection) {
var _this = this;
var peerId = this.connection.peer;
var connectionId = this.connection.connectionId;
var connectionType = this.connection.type;
var provider = this.connection.provider;
// ICE CANDIDATES.
$c25b565240b6a41d$exports.default.log("Listening for ICE candidates.");
peerConnection.onicecandidate = function(evt) {
if (!evt.candidate || !evt.candidate.candidate) return;
$c25b565240b6a41d$exports.default.log("Received ICE candidates for ".concat(peerId, ":"), evt.candidate);
provider.socket.send({
type: $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Candidate,
payload: {
candidate: evt.candidate,
type: connectionType,
connectionId: connectionId
},
dst: peerId
});
};
peerConnection.oniceconnectionstatechange = function() {
switch(peerConnection.iceConnectionState){
case "failed":
$c25b565240b6a41d$exports.default.log("iceConnectionState is failed, closing connections to " + peerId);
_this.connection.emit("error", new Error("Negotiation of connection to " + peerId + " failed."));
_this.connection.close();
break;
case "closed":
$c25b565240b6a41d$exports.default.log("iceConnectionState is closed, closing connections to " + peerId);
_this.connection.emit("error", new Error("Connection to " + peerId + " closed."));
_this.connection.close();
break;
case "disconnected":
$c25b565240b6a41d$exports.default.log("iceConnectionState changed to disconnected on the connection with " + peerId);
break;
case "completed":
peerConnection.onicecandidate = $6c02be62bb157391$export$7debb50ef11d5e0b.noop;
break;
}
_this.connection.emit("iceStateChanged", peerConnection.iceConnectionState);
};
// DATACONNECTION.
$c25b565240b6a41d$exports.default.log("Listening for data channel");
// Fired between offer and answer, so options should already be saved
// in the options hash.
peerConnection.ondatachannel = function(evt) {
$c25b565240b6a41d$exports.default.log("Received data channel");
var dataChannel = evt.channel;
var connection = provider.getConnection(peerId, connectionId);
connection.initialize(dataChannel);
};
// MEDIACONNECTION.
$c25b565240b6a41d$exports.default.log("Listening for remote stream");
peerConnection.ontrack = function(evt) {
$c25b565240b6a41d$exports.default.log("Received remote stream");
var stream = evt.streams[0];
var connection = provider.getConnection(peerId, connectionId);
if (connection.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Media) {
var mediaConnection = connection;
_this._addStreamToMediaConnection(stream, mediaConnection);
}
};
};
$3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype.cleanup = function() {
$c25b565240b6a41d$exports.default.log("Cleaning up PeerConnection to " + this.connection.peer);
var peerConnection = this.connection.peerConnection;
if (!peerConnection) return;
this.connection.peerConnection = null;
//unsubscribe from all PeerConnection's events
peerConnection.onicecandidate = peerConnection.oniceconnectionstatechange = peerConnection.ondatachannel = peerConnection.ontrack = function() {};
var peerConnectionNotClosed = peerConnection.signalingState !== "closed";
var dataChannelNotClosed = false;
if (this.connection.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Data) {
var dataConnection = this.connection;
var dataChannel = dataConnection.dataChannel;
if (dataChannel) dataChannelNotClosed = !!dataChannel.readyState && dataChannel.readyState !== "closed";
}
if (peerConnectionNotClosed || dataChannelNotClosed) peerConnection.close();
};
$3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._makeOffer = function() {
return $3b7b9afef381ead8$var$__awaiter(this, void 0, Promise, function() {
var peerConnection, provider, offer, payload, dataConnection, err_2, err_1_1;
return $3b7b9afef381ead8$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
peerConnection = this.connection.peerConnection;
provider = this.connection.provider;
_a.label = 1;
case 1:
_a.trys.push([
1,
7,
,
8
]);
return [
4 /*yield*/ ,
peerConnection.createOffer(this.connection.options.constraints)
];
case 2:
offer = _a.sent();
$c25b565240b6a41d$exports.default.log("Created offer.");
if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === "function") offer.sdp = this.connection.options.sdpTransform(offer.sdp) || offer.sdp;
_a.label = 3;
case 3:
_a.trys.push([
3,
5,
,
6
]);
return [
4 /*yield*/ ,
peerConnection.setLocalDescription(offer)
];
case 4:
_a.sent();
$c25b565240b6a41d$exports.default.log("Set localDescription:", offer, "for:".concat(this.connection.peer));
payload = {
sdp: offer,
type: this.connection.type,
connectionId: this.connection.connectionId,
metadata: this.connection.metadata,
browser: $6c02be62bb157391$export$7debb50ef11d5e0b.browser
};
if (this.connection.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Data) {
dataConnection = this.connection;
payload = $3b7b9afef381ead8$var$__assign($3b7b9afef381ead8$var$__assign({}, payload), {
label: dataConnection.label,
reliable: dataConnection.reliable,
serialization: dataConnection.serialization
});
}
provider.socket.send({
type: $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Offer,
payload: payload,
dst: this.connection.peer
});
return [
3 /*break*/ ,
6
];
case 5:
err_2 = _a.sent();
// TODO: investigate why _makeOffer is being called from the answer
if (err_2 != "OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer") {
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_2);
$c25b565240b6a41d$exports.default.log("Failed to setLocalDescription, ", err_2);
}
return [
3 /*break*/ ,
6
];
case 6:
return [
3 /*break*/ ,
8
];
case 7:
err_1_1 = _a.sent();
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_1_1);
$c25b565240b6a41d$exports.default.log("Failed to createOffer, ", err_1_1);
return [
3 /*break*/ ,
8
];
case 8:
return [
2 /*return*/
];
}
});
});
};
$3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._makeAnswer = function() {
return $3b7b9afef381ead8$var$__awaiter(this, void 0, Promise, function() {
var peerConnection, provider, answer, err_3, err_1_2;
return $3b7b9afef381ead8$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
peerConnection = this.connection.peerConnection;
provider = this.connection.provider;
_a.label = 1;
case 1:
_a.trys.push([
1,
7,
,
8
]);
return [
4 /*yield*/ ,
peerConnection.createAnswer()
];
case 2:
answer = _a.sent();
$c25b565240b6a41d$exports.default.log("Created answer.");
if (this.connection.options.sdpTransform && typeof this.connection.options.sdpTransform === "function") answer.sdp = this.connection.options.sdpTransform(answer.sdp) || answer.sdp;
_a.label = 3;
case 3:
_a.trys.push([
3,
5,
,
6
]);
return [
4 /*yield*/ ,
peerConnection.setLocalDescription(answer)
];
case 4:
_a.sent();
$c25b565240b6a41d$exports.default.log("Set localDescription:", answer, "for:".concat(this.connection.peer));
provider.socket.send({
type: $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Answer,
payload: {
sdp: answer,
type: this.connection.type,
connectionId: this.connection.connectionId,
browser: $6c02be62bb157391$export$7debb50ef11d5e0b.browser
},
dst: this.connection.peer
});
return [
3 /*break*/ ,
6
];
case 5:
err_3 = _a.sent();
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_3);
$c25b565240b6a41d$exports.default.log("Failed to setLocalDescription, ", err_3);
return [
3 /*break*/ ,
6
];
case 6:
return [
3 /*break*/ ,
8
];
case 7:
err_1_2 = _a.sent();
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_1_2);
$c25b565240b6a41d$exports.default.log("Failed to create answer, ", err_1_2);
return [
3 /*break*/ ,
8
];
case 8:
return [
2 /*return*/
];
}
});
});
};
/** Handle an SDP. */ $3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype.handleSDP = function(type, sdp) {
return $3b7b9afef381ead8$var$__awaiter(this, void 0, Promise, function() {
var peerConnection, provider, self, err_4;
return $3b7b9afef381ead8$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
sdp = new RTCSessionDescription(sdp);
peerConnection = this.connection.peerConnection;
provider = this.connection.provider;
$c25b565240b6a41d$exports.default.log("Setting remote description", sdp);
self = this;
_a.label = 1;
case 1:
_a.trys.push([
1,
5,
,
6
]);
return [
4 /*yield*/ ,
peerConnection.setRemoteDescription(sdp)
];
case 2:
_a.sent();
$c25b565240b6a41d$exports.default.log("Set remoteDescription:".concat(type, " for:").concat(this.connection.peer));
if (!(type === "OFFER")) return [
3 /*break*/ ,
4
];
return [
4 /*yield*/ ,
self._makeAnswer()
];
case 3:
_a.sent();
_a.label = 4;
case 4:
return [
3 /*break*/ ,
6
];
case 5:
err_4 = _a.sent();
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_4);
$c25b565240b6a41d$exports.default.log("Failed to setRemoteDescription, ", err_4);
return [
3 /*break*/ ,
6
];
case 6:
return [
2 /*return*/
];
}
});
});
};
/** Handle a candidate. */ $3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype.handleCandidate = function(ice) {
return $3b7b9afef381ead8$var$__awaiter(this, void 0, Promise, function() {
var candidate, sdpMLineIndex, sdpMid, peerConnection, provider, err_5;
return $3b7b9afef381ead8$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
$c25b565240b6a41d$exports.default.log("handleCandidate:", ice);
candidate = ice.candidate;
sdpMLineIndex = ice.sdpMLineIndex;
sdpMid = ice.sdpMid;
peerConnection = this.connection.peerConnection;
provider = this.connection.provider;
_a.label = 1;
case 1:
_a.trys.push([
1,
3,
,
4
]);
return [
4 /*yield*/ ,
peerConnection.addIceCandidate(new RTCIceCandidate({
sdpMid: sdpMid,
sdpMLineIndex: sdpMLineIndex,
candidate: candidate
}))
];
case 2:
_a.sent();
$c25b565240b6a41d$exports.default.log("Added ICE candidate for:".concat(this.connection.peer));
return [
3 /*break*/ ,
4
];
case 3:
err_5 = _a.sent();
provider.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.WebRTC, err_5);
$c25b565240b6a41d$exports.default.log("Failed to handleCandidate, ", err_5);
return [
3 /*break*/ ,
4
];
case 4:
return [
2 /*return*/
];
}
});
});
};
$3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._addTracksToConnection = function(stream, peerConnection) {
$c25b565240b6a41d$exports.default.log("add tracks from stream ".concat(stream.id, " to peer connection"));
if (!peerConnection.addTrack) return $c25b565240b6a41d$exports.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");
stream.getTracks().forEach(function(track) {
peerConnection.addTrack(track, stream);
});
};
$3b7b9afef381ead8$export$89e6bb5ad64bf4a.prototype._addStreamToMediaConnection = function(stream, mediaConnection) {
$c25b565240b6a41d$exports.default.log("add stream ".concat(stream.id, " to media connection ").concat(mediaConnection.connectionId));
mediaConnection.addStream(stream);
};
return $3b7b9afef381ead8$export$89e6bb5ad64bf4a;
}();
var $816db5763b2092b1$exports = {};
$parcel$export($816db5763b2092b1$exports, "BaseConnection", () => $816db5763b2092b1$export$23a2a68283c24d80, (v) => $816db5763b2092b1$export$23a2a68283c24d80 = v);
var $816db5763b2092b1$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $816db5763b2092b1$export$23a2a68283c24d80 = /** @class */ function(_super) {
$816db5763b2092b1$var$__extends($816db5763b2092b1$export$23a2a68283c24d80, _super);
function $816db5763b2092b1$export$23a2a68283c24d80(peer, provider, options) {
var _this = _super.call(this) || this;
_this.peer = peer;
_this.provider = provider;
_this.options = options;
_this._open = false;
_this.metadata = options.metadata;
return _this;
}
Object.defineProperty($816db5763b2092b1$export$23a2a68283c24d80.prototype, "open", {
get: function() {
return this._open;
},
enumerable: false,
configurable: true
});
return $816db5763b2092b1$export$23a2a68283c24d80;
}($TdzfH$eventemitter3.EventEmitter);
var $9b5cc8dbdd0aa809$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $9b5cc8dbdd0aa809$var$__assign = undefined && undefined.__assign || function() {
$9b5cc8dbdd0aa809$var$__assign = Object.assign || function(t) {
for(var s, i = 1, n = arguments.length; i < n; i++){
s = arguments[i];
for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return $9b5cc8dbdd0aa809$var$__assign.apply(this, arguments);
};
var $9b5cc8dbdd0aa809$var$__values = undefined && undefined.__values || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return {
value: o && o[i++],
done: !o
};
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
/**
* Wraps the streaming interface between two Peers.
*/ var $9b5cc8dbdd0aa809$export$4a84e95a2324ac29 = /** @class */ function(_super) {
$9b5cc8dbdd0aa809$var$__extends($9b5cc8dbdd0aa809$export$4a84e95a2324ac29, _super);
function $9b5cc8dbdd0aa809$export$4a84e95a2324ac29(peerId, provider, options) {
var _this = _super.call(this, peerId, provider, options) || this;
_this._localStream = _this.options._stream;
_this.connectionId = _this.options.connectionId || $9b5cc8dbdd0aa809$export$4a84e95a2324ac29.ID_PREFIX + $6c02be62bb157391$export$7debb50ef11d5e0b.randomToken();
_this._negotiator = new $3b7b9afef381ead8$exports.Negotiator(_this);
if (_this._localStream) _this._negotiator.startConnection({
_stream: _this._localStream,
originator: true
});
return _this;
}
Object.defineProperty($9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype, "type", {
get: function() {
return $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Media;
},
enumerable: false,
configurable: true
});
Object.defineProperty($9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype, "localStream", {
get: function() {
return this._localStream;
},
enumerable: false,
configurable: true
});
Object.defineProperty($9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype, "remoteStream", {
get: function() {
return this._remoteStream;
},
enumerable: false,
configurable: true
});
$9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype.addStream = function(remoteStream) {
$c25b565240b6a41d$exports.default.log("Receiving stream", remoteStream);
this._remoteStream = remoteStream;
_super.prototype.emit.call(this, "stream", remoteStream); // Should we call this `open`?
};
$9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype.handleMessage = function(message) {
var type = message.type;
var payload = message.payload;
switch(message.type){
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Answer:
// Forward to negotiator
this._negotiator.handleSDP(type, payload.sdp);
this._open = true;
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Candidate:
this._negotiator.handleCandidate(payload.candidate);
break;
default:
$c25b565240b6a41d$exports.default.warn("Unrecognized message type:".concat(type, " from peer:").concat(this.peer));
break;
}
};
$9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype.answer = function(stream, options) {
var e_1, _a;
if (options === void 0) options = {};
if (this._localStream) {
$c25b565240b6a41d$exports.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");
return;
}
this._localStream = stream;
if (options && options.sdpTransform) this.options.sdpTransform = options.sdpTransform;
this._negotiator.startConnection($9b5cc8dbdd0aa809$var$__assign($9b5cc8dbdd0aa809$var$__assign({}, this.options._payload), {
_stream: stream
}));
// Retrieve lost messages stored because PeerConnection not set up.
var messages = this.provider._getMessages(this.connectionId);
try {
for(var messages_1 = $9b5cc8dbdd0aa809$var$__values(messages), messages_1_1 = messages_1.next(); !messages_1_1.done; messages_1_1 = messages_1.next()){
var message = messages_1_1.value;
this.handleMessage(message);
}
} catch (e_1_1) {
e_1 = {
error: e_1_1
};
} finally{
try {
if (messages_1_1 && !messages_1_1.done && (_a = messages_1.return)) _a.call(messages_1);
} finally{
if (e_1) throw e_1.error;
}
}
this._open = true;
};
/**
* Exposed functionality for users.
*/ /** Allows user to close connection. */ $9b5cc8dbdd0aa809$export$4a84e95a2324ac29.prototype.close = function() {
if (this._negotiator) {
this._negotiator.cleanup();
this._negotiator = null;
}
this._localStream = null;
this._remoteStream = null;
if (this.provider) {
this.provider._removeConnection(this);
this.provider = null;
}
if (this.options && this.options._stream) this.options._stream = null;
if (!this.open) return;
this._open = false;
_super.prototype.emit.call(this, "close");
};
$9b5cc8dbdd0aa809$export$4a84e95a2324ac29.ID_PREFIX = "mc_";
return $9b5cc8dbdd0aa809$export$4a84e95a2324ac29;
}($816db5763b2092b1$exports.BaseConnection);
var $92db9a3ba21db2a0$exports = {};
$parcel$export($92db9a3ba21db2a0$exports, "DataConnection", () => $92db9a3ba21db2a0$export$d365f7ad9d7df9c9, (v) => $92db9a3ba21db2a0$export$d365f7ad9d7df9c9 = v);
var $3ff0aafdb373378c$exports = {};
$parcel$export($3ff0aafdb373378c$exports, "EncodingQueue", () => $3ff0aafdb373378c$export$c6913ae0ed687038, (v) => $3ff0aafdb373378c$export$c6913ae0ed687038 = v);
var $3ff0aafdb373378c$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $3ff0aafdb373378c$export$c6913ae0ed687038 = /** @class */ function(_super) {
$3ff0aafdb373378c$var$__extends($3ff0aafdb373378c$export$c6913ae0ed687038, _super);
function $3ff0aafdb373378c$export$c6913ae0ed687038() {
var _this = _super.call(this) || this;
_this.fileReader = new FileReader();
_this._queue = [];
_this._processing = false;
_this.fileReader.onload = function(evt) {
_this._processing = false;
if (evt.target) _this.emit("done", evt.target.result);
_this.doNextTask();
};
_this.fileReader.onerror = function(evt) {
$c25b565240b6a41d$exports.default.error("EncodingQueue error:", evt);
_this._processing = false;
_this.destroy();
_this.emit("error", evt);
};
return _this;
}
Object.defineProperty($3ff0aafdb373378c$export$c6913ae0ed687038.prototype, "queue", {
get: function() {
return this._queue;
},
enumerable: false,
configurable: true
});
Object.defineProperty($3ff0aafdb373378c$export$c6913ae0ed687038.prototype, "size", {
get: function() {
return this.queue.length;
},
enumerable: false,
configurable: true
});
Object.defineProperty($3ff0aafdb373378c$export$c6913ae0ed687038.prototype, "processing", {
get: function() {
return this._processing;
},
enumerable: false,
configurable: true
});
$3ff0aafdb373378c$export$c6913ae0ed687038.prototype.enque = function(blob) {
this.queue.push(blob);
if (this.processing) return;
this.doNextTask();
};
$3ff0aafdb373378c$export$c6913ae0ed687038.prototype.destroy = function() {
this.fileReader.abort();
this._queue = [];
};
$3ff0aafdb373378c$export$c6913ae0ed687038.prototype.doNextTask = function() {
if (this.size === 0) return;
if (this.processing) return;
this._processing = true;
this.fileReader.readAsArrayBuffer(this.queue.shift());
};
return $3ff0aafdb373378c$export$c6913ae0ed687038;
}($TdzfH$eventemitter3.EventEmitter);
var $92db9a3ba21db2a0$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $92db9a3ba21db2a0$var$__values = undefined && undefined.__values || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return {
value: o && o[i++],
done: !o
};
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
/**
* Wraps a DataChannel between two Peers.
*/ var $92db9a3ba21db2a0$export$d365f7ad9d7df9c9 = /** @class */ function(_super) {
$92db9a3ba21db2a0$var$__extends($92db9a3ba21db2a0$export$d365f7ad9d7df9c9, _super);
function $92db9a3ba21db2a0$export$d365f7ad9d7df9c9(peerId, provider, options) {
var _this = _super.call(this, peerId, provider, options) || this;
_this.stringify = JSON.stringify;
_this.parse = JSON.parse;
_this._buffer = [];
_this._bufferSize = 0;
_this._buffering = false;
_this._chunkedData = {};
_this._encodingQueue = new $3ff0aafdb373378c$exports.EncodingQueue();
_this.connectionId = _this.options.connectionId || $92db9a3ba21db2a0$export$d365f7ad9d7df9c9.ID_PREFIX + $6c02be62bb157391$export$7debb50ef11d5e0b.randomToken();
_this.label = _this.options.label || _this.connectionId;
_this.serialization = _this.options.serialization || $2f2cc37b22a0b29a$export$89f507cf986a947.Binary;
_this.reliable = !!_this.options.reliable;
_this._encodingQueue.on("done", function(ab) {
_this._bufferedSend(ab);
});
_this._encodingQueue.on("error", function() {
$c25b565240b6a41d$exports.default.error("DC#".concat(_this.connectionId, ": Error occured in encoding from blob to arraybuffer, close DC"));
_this.close();
});
_this._negotiator = new $3b7b9afef381ead8$exports.Negotiator(_this);
_this._negotiator.startConnection(_this.options._payload || {
originator: true
});
return _this;
}
Object.defineProperty($92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype, "type", {
get: function() {
return $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Data;
},
enumerable: false,
configurable: true
});
Object.defineProperty($92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype, "dataChannel", {
get: function() {
return this._dc;
},
enumerable: false,
configurable: true
});
Object.defineProperty($92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype, "bufferSize", {
get: function() {
return this._bufferSize;
},
enumerable: false,
configurable: true
});
/** Called by the Negotiator when the DataChannel is ready. */ $92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype.initialize = function(dc) {
this._dc = dc;
this._configureDataChannel();
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._configureDataChannel = function() {
var _this = this;
if (!$6c02be62bb157391$export$7debb50ef11d5e0b.supports.binaryBlob || $6c02be62bb157391$export$7debb50ef11d5e0b.supports.reliable) this.dataChannel.binaryType = "arraybuffer";
this.dataChannel.onopen = function() {
$c25b565240b6a41d$exports.default.log("DC#".concat(_this.connectionId, " dc connection success"));
_this._open = true;
_this.emit("open");
};
this.dataChannel.onmessage = function(e) {
$c25b565240b6a41d$exports.default.log("DC#".concat(_this.connectionId, " dc onmessage:"), e.data);
_this._handleDataMessage(e);
};
this.dataChannel.onclose = function() {
$c25b565240b6a41d$exports.default.log("DC#".concat(_this.connectionId, " dc closed for:"), _this.peer);
_this.close();
};
};
// Handles a DataChannel message.
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._handleDataMessage = function(_a) {
var _this = this;
var data = _a.data;
var datatype = data.constructor;
var isBinarySerialization = this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.Binary || this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.BinaryUTF8;
var deserializedData = data;
if (isBinarySerialization) {
if (datatype === Blob) {
// Datatype should never be blob
$6c02be62bb157391$export$7debb50ef11d5e0b.blobToArrayBuffer(data, function(ab) {
var unpackedData = $6c02be62bb157391$export$7debb50ef11d5e0b.unpack(ab);
_this.emit("data", unpackedData);
});
return;
} else if (datatype === ArrayBuffer) deserializedData = $6c02be62bb157391$export$7debb50ef11d5e0b.unpack(data);
else if (datatype === String) {
// String fallback for binary data for browsers that don't support binary yet
var ab1 = $6c02be62bb157391$export$7debb50ef11d5e0b.binaryStringToArrayBuffer(data);
deserializedData = $6c02be62bb157391$export$7debb50ef11d5e0b.unpack(ab1);
}
} else if (this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.JSON) deserializedData = this.parse(data);
// Check if we've chunked--if so, piece things back together.
// We're guaranteed that this isn't 0.
if (deserializedData.__peerData) {
this._handleChunk(deserializedData);
return;
}
_super.prototype.emit.call(this, "data", deserializedData);
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._handleChunk = function(data) {
var id = data.__peerData;
var chunkInfo = this._chunkedData[id] || {
data: [],
count: 0,
total: data.total
};
chunkInfo.data[data.n] = data.data;
chunkInfo.count++;
this._chunkedData[id] = chunkInfo;
if (chunkInfo.total === chunkInfo.count) {
// Clean up before making the recursive call to `_handleDataMessage`.
delete this._chunkedData[id];
// We've received all the chunks--time to construct the complete data.
var data_1 = new Blob(chunkInfo.data);
this._handleDataMessage({
data: data_1
});
}
};
/**
* Exposed functionality for users.
*/ /** Allows user to close connection. */ $92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype.close = function() {
this._buffer = [];
this._bufferSize = 0;
this._chunkedData = {};
if (this._negotiator) {
this._negotiator.cleanup();
this._negotiator = null;
}
if (this.provider) {
this.provider._removeConnection(this);
this.provider = null;
}
if (this.dataChannel) {
this.dataChannel.onopen = null;
this.dataChannel.onmessage = null;
this.dataChannel.onclose = null;
this._dc = null;
}
if (this._encodingQueue) {
this._encodingQueue.destroy();
this._encodingQueue.removeAllListeners();
this._encodingQueue = null;
}
if (!this.open) return;
this._open = false;
_super.prototype.emit.call(this, "close");
};
/** Allows user to send data. */ $92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype.send = function(data, chunked) {
if (!this.open) {
_super.prototype.emit.call(this, "error", new Error("Connection is not open. You should listen for the `open` event before sending messages."));
return;
}
if (this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.JSON) this._bufferedSend(this.stringify(data));
else if (this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.Binary || this.serialization === $2f2cc37b22a0b29a$export$89f507cf986a947.BinaryUTF8) {
var blob = $6c02be62bb157391$export$7debb50ef11d5e0b.pack(data);
if (!chunked && blob.size > $6c02be62bb157391$export$7debb50ef11d5e0b.chunkedMTU) {
this._sendChunks(blob);
return;
}
if (!$6c02be62bb157391$export$7debb50ef11d5e0b.supports.binaryBlob) // We only do this if we really need to (e.g. blobs are not supported),
// because this conversion is costly.
this._encodingQueue.enque(blob);
else this._bufferedSend(blob);
} else this._bufferedSend(data);
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._bufferedSend = function(msg) {
if (this._buffering || !this._trySend(msg)) {
this._buffer.push(msg);
this._bufferSize = this._buffer.length;
}
};
// Returns true if the send succeeds.
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._trySend = function(msg) {
var _this = this;
if (!this.open) return false;
if (this.dataChannel.bufferedAmount > $92db9a3ba21db2a0$export$d365f7ad9d7df9c9.MAX_BUFFERED_AMOUNT) {
this._buffering = true;
setTimeout(function() {
_this._buffering = false;
_this._tryBuffer();
}, 50);
return false;
}
try {
this.dataChannel.send(msg);
} catch (e) {
$c25b565240b6a41d$exports.default.error("DC#:".concat(this.connectionId, " Error when sending:"), e);
this._buffering = true;
this.close();
return false;
}
return true;
};
// Try to send the first message in the buffer.
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._tryBuffer = function() {
if (!this.open) return;
if (this._buffer.length === 0) return;
var msg = this._buffer[0];
if (this._trySend(msg)) {
this._buffer.shift();
this._bufferSize = this._buffer.length;
this._tryBuffer();
}
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype._sendChunks = function(blob) {
var e_1, _a;
var blobs = $6c02be62bb157391$export$7debb50ef11d5e0b.chunk(blob);
$c25b565240b6a41d$exports.default.log("DC#".concat(this.connectionId, " Try to send ").concat(blobs.length, " chunks..."));
try {
for(var blobs_1 = $92db9a3ba21db2a0$var$__values(blobs), blobs_1_1 = blobs_1.next(); !blobs_1_1.done; blobs_1_1 = blobs_1.next()){
var blob_1 = blobs_1_1.value;
this.send(blob_1, true);
}
} catch (e_1_1) {
e_1 = {
error: e_1_1
};
} finally{
try {
if (blobs_1_1 && !blobs_1_1.done && (_a = blobs_1.return)) _a.call(blobs_1);
} finally{
if (e_1) throw e_1.error;
}
}
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.prototype.handleMessage = function(message) {
var payload = message.payload;
switch(message.type){
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Answer:
this._negotiator.handleSDP(message.type, payload.sdp);
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Candidate:
this._negotiator.handleCandidate(payload.candidate);
break;
default:
$c25b565240b6a41d$exports.default.warn("Unrecognized message type:", message.type, "from peer:", this.peer);
break;
}
};
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.ID_PREFIX = "dc_";
$92db9a3ba21db2a0$export$d365f7ad9d7df9c9.MAX_BUFFERED_AMOUNT = 8388608;
return $92db9a3ba21db2a0$export$d365f7ad9d7df9c9;
}($816db5763b2092b1$exports.BaseConnection);
var $067535f02cda23a2$exports = {};
$parcel$export($067535f02cda23a2$exports, "API", () => $067535f02cda23a2$export$2c4e825dc9120f87, (v) => $067535f02cda23a2$export$2c4e825dc9120f87 = v);
var $067535f02cda23a2$var$__awaiter = undefined && undefined.__awaiter || function(thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function(resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function(resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var $067535f02cda23a2$var$__generator = undefined && undefined.__generator || function(thisArg, body) {
var _ = {
label: 0,
sent: function() {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: []
}, f, y, t, g;
return g = {
next: verb(0),
"throw": verb(1),
"return": verb(2)
}, typeof Symbol === "function" && (g[Symbol.iterator] = function() {
return this;
}), g;
function verb(n) {
return function(v) {
return step([
n,
v
]);
};
}
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while(_)try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [
op[0] & 2,
t.value
];
switch(op[0]){
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return {
value: op[1],
done: false
};
case 5:
_.label++;
y = op[1];
op = [
0
];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [
6,
e
];
y = 0;
} finally{
f = t = 0;
}
if (op[0] & 5) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: true
};
}
};
var $067535f02cda23a2$export$2c4e825dc9120f87 = /** @class */ function() {
function $067535f02cda23a2$export$2c4e825dc9120f87(_options) {
this._options = _options;
}
$067535f02cda23a2$export$2c4e825dc9120f87.prototype._buildRequest = function(method) {
var protocol = this._options.secure ? "https" : "http";
var _a = this._options, host = _a.host, port = _a.port, path = _a.path, key = _a.key;
var url = new URL("".concat(protocol, "://").concat(host, ":").concat(port).concat(path).concat(key, "/").concat(method));
// TODO: Why timestamp, why random?
url.searchParams.set("ts", "".concat(Date.now()).concat(Math.random()));
url.searchParams.set("version", $059935620e5e661f$exports.version);
return fetch(url.href, {
referrerPolicy: this._options.referrerPolicy
});
};
/** Get a unique ID from the server via XHR and initialize with it. */ $067535f02cda23a2$export$2c4e825dc9120f87.prototype.retrieveId = function() {
return $067535f02cda23a2$var$__awaiter(this, void 0, Promise, function() {
var response, error_1, pathError;
return $067535f02cda23a2$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
_a.trys.push([
0,
2,
,
3
]);
return [
4 /*yield*/ ,
this._buildRequest("id")
];
case 1:
response = _a.sent();
if (response.status !== 200) throw new Error("Error. Status:".concat(response.status));
return [
2 /*return*/ ,
response.text()
];
case 2:
error_1 = _a.sent();
$c25b565240b6a41d$exports.default.error("Error retrieving ID", error_1);
pathError = "";
if (this._options.path === "/" && this._options.host !== $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_HOST) pathError = " 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.";
throw new Error("Could not get an ID from the server." + pathError);
case 3:
return [
2 /*return*/
];
}
});
});
};
/** @deprecated */ $067535f02cda23a2$export$2c4e825dc9120f87.prototype.listAllPeers = function() {
return $067535f02cda23a2$var$__awaiter(this, void 0, Promise, function() {
var response, helpfulError, error_2;
return $067535f02cda23a2$var$__generator(this, function(_a) {
switch(_a.label){
case 0:
_a.trys.push([
0,
2,
,
3
]);
return [
4 /*yield*/ ,
this._buildRequest("peers")
];
case 1:
response = _a.sent();
if (response.status !== 200) {
if (response.status === 401) {
helpfulError = "";
if (this._options.host === $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_HOST) helpfulError = "It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.";
else helpfulError = "You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.";
throw new Error("It doesn't look like you have permission to list peers IDs. " + helpfulError);
}
throw new Error("Error. Status:".concat(response.status));
}
return [
2 /*return*/ ,
response.json()
];
case 2:
error_2 = _a.sent();
$c25b565240b6a41d$exports.default.error("Error retrieving list peers", error_2);
throw new Error("Could not get list peers from the server." + error_2);
case 3:
return [
2 /*return*/
];
}
});
});
};
return $067535f02cda23a2$export$2c4e825dc9120f87;
}();
var $976f9b679211b81e$var$__extends = undefined && undefined.__extends || function() {
var extendStatics = function(d1, b1) {
extendStatics = Object.setPrototypeOf || ({
__proto__: []
}) instanceof Array && function(d, b) {
d.__proto__ = b;
} || function(d, b) {
for(var p in b)if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d1, b1);
};
return function(d, b) {
if (typeof b !== "function" && b !== null) throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
}();
var $976f9b679211b81e$var$__assign = undefined && undefined.__assign || function() {
$976f9b679211b81e$var$__assign = Object.assign || function(t) {
for(var s, i = 1, n = arguments.length; i < n; i++){
s = arguments[i];
for(var p in s)if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
return $976f9b679211b81e$var$__assign.apply(this, arguments);
};
var $976f9b679211b81e$var$__values = undefined && undefined.__values || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function() {
if (o && i >= o.length) o = void 0;
return {
value: o && o[i++],
done: !o
};
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var $976f9b679211b81e$var$__read = undefined && undefined.__read || function(o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while((n === void 0 || n-- > 0) && !(r = i.next()).done)ar.push(r.value);
} catch (error) {
e = {
error: error
};
} finally{
try {
if (r && !r.done && (m = i["return"])) m.call(i);
} finally{
if (e) throw e.error;
}
}
return ar;
};
var $976f9b679211b81e$var$PeerOptions = /** @class */ function() {
function PeerOptions() {}
return PeerOptions;
}();
/**
* A peer who can initiate connections with other peers.
*/ var $976f9b679211b81e$export$ecd1fc136c422448 = /** @class */ function(_super) {
$976f9b679211b81e$var$__extends($976f9b679211b81e$export$ecd1fc136c422448, _super);
function $976f9b679211b81e$export$ecd1fc136c422448(id1, options) {
var _this = _super.call(this) || this;
_this._id = null;
_this._lastServerId = null;
// States.
_this._destroyed = false; // Connections have been killed
_this._disconnected = false; // Connection to PeerServer killed but P2P connections still active
_this._open = false; // Sockets and such are not yet open.
_this._connections = new Map(); // All connections for this peer.
_this._lostMessages = new Map(); // src => [list of messages]
var userId;
// Deal with overloading
if (id1 && id1.constructor == Object) options = id1;
else if (id1) userId = id1.toString();
// Configurize options
options = $976f9b679211b81e$var$__assign({
debug: 0,
host: $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_HOST,
port: $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_PORT,
path: "/",
key: $976f9b679211b81e$export$ecd1fc136c422448.DEFAULT_KEY,
token: $6c02be62bb157391$export$7debb50ef11d5e0b.randomToken(),
config: $6c02be62bb157391$export$7debb50ef11d5e0b.defaultConfig,
referrerPolicy: "strict-origin-when-cross-origin"
}, options);
_this._options = options;
// Detect relative URL host.
if (_this._options.host === "/") _this._options.host = window.location.hostname;
// Set path correctly.
if (_this._options.path) {
if (_this._options.path[0] !== "/") _this._options.path = "/" + _this._options.path;
if (_this._options.path[_this._options.path.length - 1] !== "/") _this._options.path += "/";
}
// Set whether we use SSL to same as current host
if (_this._options.secure === undefined && _this._options.host !== $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_HOST) _this._options.secure = $6c02be62bb157391$export$7debb50ef11d5e0b.isSecure();
else if (_this._options.host == $6c02be62bb157391$export$7debb50ef11d5e0b.CLOUD_HOST) _this._options.secure = true;
// Set a custom log function if present
if (_this._options.logFunction) $c25b565240b6a41d$exports.default.setLogFunction(_this._options.logFunction);
$c25b565240b6a41d$exports.default.logLevel = _this._options.debug || 0;
_this._api = new $067535f02cda23a2$exports.API(options);
_this._socket = _this._createServerConnection();
// Sanity checks
// Ensure WebRTC supported
if (!$6c02be62bb157391$export$7debb50ef11d5e0b.supports.audioVideo && !$6c02be62bb157391$export$7debb50ef11d5e0b.supports.data) {
_this._delayedAbort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.BrowserIncompatible, "The current browser does not support WebRTC");
return _this;
}
// Ensure alphanumeric id
if (!!userId && !$6c02be62bb157391$export$7debb50ef11d5e0b.validateId(userId)) {
_this._delayedAbort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.InvalidID, "ID \"".concat(userId, "\" is invalid"));
return _this;
}
if (userId) _this._initialize(userId);
else _this._api.retrieveId().then(function(id) {
return _this._initialize(id);
}).catch(function(error) {
return _this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.ServerError, error);
});
return _this;
}
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "id", {
/**
* The brokering ID of this peer
*/ get: function() {
return this._id;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "options", {
get: function() {
return this._options;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "open", {
get: function() {
return this._open;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "socket", {
get: function() {
return this._socket;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "connections", {
/**
* A hash of all connections associated with this peer, keyed by the remote peer's ID.
* @deprecated
* Return type will change from Object to Map<string,[]>
*/ get: function() {
var e_1, _a;
var plainConnections = Object.create(null);
try {
for(var _b = $976f9b679211b81e$var$__values(this._connections), _c = _b.next(); !_c.done; _c = _b.next()){
var _d = $976f9b679211b81e$var$__read(_c.value, 2), k = _d[0], v = _d[1];
plainConnections[k] = v;
}
} catch (e_1_1) {
e_1 = {
error: e_1_1
};
} finally{
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
} finally{
if (e_1) throw e_1.error;
}
}
return plainConnections;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "destroyed", {
/**
* true if this peer and all of its connections can no longer be used.
*/ get: function() {
return this._destroyed;
},
enumerable: false,
configurable: true
});
Object.defineProperty($976f9b679211b81e$export$ecd1fc136c422448.prototype, "disconnected", {
/**
* false if there is an active connection to the PeerServer.
*/ get: function() {
return this._disconnected;
},
enumerable: false,
configurable: true
});
$976f9b679211b81e$export$ecd1fc136c422448.prototype._createServerConnection = function() {
var _this = this;
var socket = new $a86db8d850e55bcf$exports.Socket(this._options.secure, this._options.host, this._options.port, this._options.path, this._options.key, this._options.pingInterval);
socket.on($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Message, function(data) {
_this._handleMessage(data);
});
socket.on($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Error, function(error) {
_this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.SocketError, error);
});
socket.on($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Disconnected, function() {
if (_this.disconnected) return;
_this.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.Network, "Lost connection to server.");
_this.disconnect();
});
socket.on($2f2cc37b22a0b29a$export$3b5c4a4b6354f023.Close, function() {
if (_this.disconnected) return;
_this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.SocketClosed, "Underlying socket is already closed.");
});
return socket;
};
/** Initialize a connection with the server. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._initialize = function(id) {
this._id = id;
this.socket.start(id, this._options.token);
};
/** Handles messages from the server. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._handleMessage = function(message) {
var e_2, _a;
var type = message.type;
var payload = message.payload;
var peerId = message.src;
switch(type){
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Open:
this._lastServerId = this.id;
this._open = true;
this.emit("open", this.id);
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Error:
this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.ServerError, payload.msg);
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.IdTaken:
this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.UnavailableID, "ID \"".concat(this.id, "\" is taken"));
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.InvalidKey:
this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.InvalidKey, "API KEY \"".concat(this._options.key, "\" is invalid"));
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Leave:
$c25b565240b6a41d$exports.default.log("Received leave message from ".concat(peerId));
this._cleanupPeer(peerId);
this._connections.delete(peerId);
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Expire:
this.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.PeerUnavailable, "Could not connect to peer ".concat(peerId));
break;
case $2f2cc37b22a0b29a$export$adb4a1754da6f10d.Offer:
// we should consider switching this to CALL/CONNECT, but this is the least breaking option.
var connectionId = payload.connectionId;
var connection = this.getConnection(peerId, connectionId);
if (connection) {
connection.close();
$c25b565240b6a41d$exports.default.warn("Offer received for existing Connection ID:".concat(connectionId));
}
// Create a new connection.
if (payload.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Media) {
var mediaConnection = new $9b5cc8dbdd0aa809$exports.MediaConnection(peerId, this, {
connectionId: connectionId,
_payload: payload,
metadata: payload.metadata
});
connection = mediaConnection;
this._addConnection(peerId, connection);
this.emit("call", mediaConnection);
} else if (payload.type === $2f2cc37b22a0b29a$export$3157d57b4135e3bc.Data) {
var dataConnection = new $92db9a3ba21db2a0$exports.DataConnection(peerId, this, {
connectionId: connectionId,
_payload: payload,
metadata: payload.metadata,
label: payload.label,
serialization: payload.serialization,
reliable: payload.reliable
});
connection = dataConnection;
this._addConnection(peerId, connection);
this.emit("connection", dataConnection);
} else {
$c25b565240b6a41d$exports.default.warn("Received malformed connection type:".concat(payload.type));
return;
}
// Find messages.
var messages = this._getMessages(connectionId);
try {
for(var messages_1 = $976f9b679211b81e$var$__values(messages), messages_1_1 = messages_1.next(); !messages_1_1.done; messages_1_1 = messages_1.next()){
var message_1 = messages_1_1.value;
connection.handleMessage(message_1);
}
} catch (e_2_1) {
e_2 = {
error: e_2_1
};
} finally{
try {
if (messages_1_1 && !messages_1_1.done && (_a = messages_1.return)) _a.call(messages_1);
} finally{
if (e_2) throw e_2.error;
}
}
break;
default:
if (!payload) {
$c25b565240b6a41d$exports.default.warn("You received a malformed message from ".concat(peerId, " of type ").concat(type));
return;
}
var connectionId = payload.connectionId;
var connection = this.getConnection(peerId, connectionId);
if (connection && connection.peerConnection) // Pass it on.
connection.handleMessage(message);
else if (connectionId) // Store for possible later use
this._storeMessage(connectionId, message);
else $c25b565240b6a41d$exports.default.warn("You received an unrecognized message:", message);
break;
}
};
/** Stores messages without a set up connection, to be claimed later. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._storeMessage = function(connectionId, message) {
if (!this._lostMessages.has(connectionId)) this._lostMessages.set(connectionId, []);
this._lostMessages.get(connectionId).push(message);
};
/** Retrieve messages from lost message store */ //TODO Change it to private
$976f9b679211b81e$export$ecd1fc136c422448.prototype._getMessages = function(connectionId) {
var messages = this._lostMessages.get(connectionId);
if (messages) {
this._lostMessages.delete(connectionId);
return messages;
}
return [];
};
/**
* Connects to the remote peer specified by id and returns a data connection.
* @param peer The brokering ID of the remote peer (their peer.id).
* @param options for specifying details about Peer Connection
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype.connect = function(peer, options) {
if (options === void 0) options = {};
if (this.disconnected) {
$c25b565240b6a41d$exports.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.");
this.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.Disconnected, "Cannot connect to new Peer after disconnecting from server.");
return;
}
var dataConnection = new $92db9a3ba21db2a0$exports.DataConnection(peer, this, options);
this._addConnection(peer, dataConnection);
return dataConnection;
};
/**
* Calls the remote peer specified by id and returns a media connection.
* @param peer The brokering ID of the remote peer (their peer.id).
* @param stream The caller's media stream
* @param options Metadata associated with the connection, passed in by whoever initiated the connection.
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype.call = function(peer, stream, options) {
if (options === void 0) options = {};
if (this.disconnected) {
$c25b565240b6a41d$exports.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.");
this.emitError($2f2cc37b22a0b29a$export$9547aaa2e39030ff.Disconnected, "Cannot connect to new Peer after disconnecting from server.");
return;
}
if (!stream) {
$c25b565240b6a41d$exports.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");
return;
}
var mediaConnection = new $9b5cc8dbdd0aa809$exports.MediaConnection(peer, this, $976f9b679211b81e$var$__assign($976f9b679211b81e$var$__assign({}, options), {
_stream: stream
}));
this._addConnection(peer, mediaConnection);
return mediaConnection;
};
/** Add a data/media connection to this peer. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._addConnection = function(peerId, connection) {
$c25b565240b6a41d$exports.default.log("add connection ".concat(connection.type, ":").concat(connection.connectionId, " to peerId:").concat(peerId));
if (!this._connections.has(peerId)) this._connections.set(peerId, []);
this._connections.get(peerId).push(connection);
};
//TODO should be private
$976f9b679211b81e$export$ecd1fc136c422448.prototype._removeConnection = function(connection) {
var connections = this._connections.get(connection.peer);
if (connections) {
var index = connections.indexOf(connection);
if (index !== -1) connections.splice(index, 1);
}
//remove from lost messages
this._lostMessages.delete(connection.connectionId);
};
/** Retrieve a data/media connection for this peer. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype.getConnection = function(peerId, connectionId) {
var e_3, _a;
var connections = this._connections.get(peerId);
if (!connections) return null;
try {
for(var connections_1 = $976f9b679211b81e$var$__values(connections), connections_1_1 = connections_1.next(); !connections_1_1.done; connections_1_1 = connections_1.next()){
var connection = connections_1_1.value;
if (connection.connectionId === connectionId) return connection;
}
} catch (e_3_1) {
e_3 = {
error: e_3_1
};
} finally{
try {
if (connections_1_1 && !connections_1_1.done && (_a = connections_1.return)) _a.call(connections_1);
} finally{
if (e_3) throw e_3.error;
}
}
return null;
};
$976f9b679211b81e$export$ecd1fc136c422448.prototype._delayedAbort = function(type, message) {
var _this = this;
setTimeout(function() {
_this._abort(type, message);
}, 0);
};
/**
* Emits an error message and destroys the Peer.
* The Peer is not destroyed if it's in a disconnected state, in which case
* it retains its disconnected state and its existing connections.
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype._abort = function(type, message) {
$c25b565240b6a41d$exports.default.error("Aborting!");
this.emitError(type, message);
if (!this._lastServerId) this.destroy();
else this.disconnect();
};
/** Emits a typed error message. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype.emitError = function(type, err) {
$c25b565240b6a41d$exports.default.error("Error:", err);
var error;
if (typeof err === "string") error = new Error(err);
else error = err;
error.type = type;
this.emit("error", error);
};
/**
* Destroys the Peer: closes all active connections as well as the connection
* to the server.
* Warning: The peer can no longer create or accept connections after being
* destroyed.
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype.destroy = function() {
if (this.destroyed) return;
$c25b565240b6a41d$exports.default.log("Destroy peer with ID:".concat(this.id));
this.disconnect();
this._cleanup();
this._destroyed = true;
this.emit("close");
};
/** Disconnects every connection on this peer. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._cleanup = function() {
var e_4, _a;
try {
for(var _b = $976f9b679211b81e$var$__values(this._connections.keys()), _c = _b.next(); !_c.done; _c = _b.next()){
var peerId = _c.value;
this._cleanupPeer(peerId);
this._connections.delete(peerId);
}
} catch (e_4_1) {
e_4 = {
error: e_4_1
};
} finally{
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
} finally{
if (e_4) throw e_4.error;
}
}
this.socket.removeAllListeners();
};
/** Closes all connections to this peer. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype._cleanupPeer = function(peerId) {
var e_5, _a;
var connections = this._connections.get(peerId);
if (!connections) return;
try {
for(var connections_2 = $976f9b679211b81e$var$__values(connections), connections_2_1 = connections_2.next(); !connections_2_1.done; connections_2_1 = connections_2.next()){
var connection = connections_2_1.value;
connection.close();
}
} catch (e_5_1) {
e_5 = {
error: e_5_1
};
} finally{
try {
if (connections_2_1 && !connections_2_1.done && (_a = connections_2.return)) _a.call(connections_2);
} finally{
if (e_5) throw e_5.error;
}
}
};
/**
* Disconnects the Peer's connection to the PeerServer. Does not close any
* active connections.
* Warning: The peer can no longer create or accept connections after being
* disconnected. It also cannot reconnect to the server.
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype.disconnect = function() {
if (this.disconnected) return;
var currentId = this.id;
$c25b565240b6a41d$exports.default.log("Disconnect peer with ID:".concat(currentId));
this._disconnected = true;
this._open = false;
this.socket.close();
this._lastServerId = currentId;
this._id = null;
this.emit("disconnected", currentId);
};
/** Attempts to reconnect with the same ID. */ $976f9b679211b81e$export$ecd1fc136c422448.prototype.reconnect = function() {
if (this.disconnected && !this.destroyed) {
$c25b565240b6a41d$exports.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId));
this._disconnected = false;
this._initialize(this._lastServerId);
} else if (this.destroyed) throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");
else if (!this.disconnected && !this.open) // Do nothing. We're still connecting the first time.
$c25b565240b6a41d$exports.default.error("In a hurry? We're still trying to make the initial connection!");
else throw new Error("Peer ".concat(this.id, " cannot reconnect because it is not disconnected from the server!"));
};
/**
* Get a list of available peer IDs. If you're running your own server, you'll
* want to set allow_discovery: true in the PeerServer options. If you're using
* the cloud server, email team@peerjs.com to get the functionality enabled for
* your key.
*/ $976f9b679211b81e$export$ecd1fc136c422448.prototype.listAllPeers = function(cb) {
var _this = this;
if (cb === void 0) cb = function(_) {};
this._api.listAllPeers().then(function(peers) {
return cb(peers);
}).catch(function(error) {
return _this._abort($2f2cc37b22a0b29a$export$9547aaa2e39030ff.ServerError, error);
});
};
$976f9b679211b81e$export$ecd1fc136c422448.DEFAULT_KEY = "peerjs";
return $976f9b679211b81e$export$ecd1fc136c422448;
}($TdzfH$eventemitter3.EventEmitter);
var $f1d1a6b5c376b066$export$2e2bcd8739ae039 = $976f9b679211b81e$exports.Peer;
//# sourceMappingURL=bundler.cjs.map