UNPKG

com.hikky.heliodorlib

Version:

This is the library for Vket Cloud SDK.

1,257 lines (1,256 loc) 1.84 MB
(() => { var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __copyProps = (to2, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to2, key) && key !== except) __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to2; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/skyway-js/dist/skyway.js var require_skyway = __commonJS({ "node_modules/skyway-js/dist/skyway.js"(exports, module2) { (function webpackUniversalModuleDefinition(root, factory) { if (typeof exports === "object" && typeof module2 === "object") module2.exports = factory(); else if (typeof define === "function" && define.amd) define([], factory); else if (typeof exports === "object") exports["Peer"] = factory(); else root["Peer"] = factory(); })(globalThis, function() { return function(modules) { var installedModules = {}; function __webpack_require__(moduleId) { if (installedModules[moduleId]) { return installedModules[moduleId].exports; } var module1 = installedModules[moduleId] = { i: moduleId, l: false, exports: {} }; modules[moduleId].call(module1.exports, module1, module1.exports, __webpack_require__); module1.l = true; return module1.exports; } __webpack_require__.m = modules; __webpack_require__.c = installedModules; __webpack_require__.d = function(exports1, name, getter) { if (!__webpack_require__.o(exports1, name)) { Object.defineProperty(exports1, name, { enumerable: true, get: getter }); } }; __webpack_require__.r = function(exports1) { if (typeof Symbol !== "undefined" && Symbol.toStringTag) { Object.defineProperty(exports1, Symbol.toStringTag, { value: "Module" }); } Object.defineProperty(exports1, "__esModule", { value: true }); }; __webpack_require__.t = function(value, mode) { if (mode & 1) value = __webpack_require__(value); if (mode & 8) return value; if (mode & 4 && typeof value === "object" && value && value.__esModule) return value; var ns2 = /* @__PURE__ */ Object.create(null); __webpack_require__.r(ns2); Object.defineProperty(ns2, "default", { enumerable: true, value }); if (mode & 2 && typeof value != "string") for (var key in value) __webpack_require__.d(ns2, key, function(key2) { return value[key2]; }.bind(null, key)); return ns2; }; __webpack_require__.n = function(module1) { var getter = module1 && module1.__esModule ? function getDefault() { return module1["default"]; } : function getModuleExports() { return module1; }; __webpack_require__.d(getter, "a", getter); return getter; }; __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; __webpack_require__.p = ""; return __webpack_require__(__webpack_require__.s = "./src/peer.js"); }({ "./node_modules/@jitsi/sdp-interop/lib/array-equals.js": function(module1, exports1) { module1.exports = function arrayEquals(array) { if (!array) return false; if (this.length != array.length) return false; for (var i3 = 0, l2 = this.length; i3 < l2; i3++) { if (this[i3] instanceof Array && array[i3] instanceof Array) { if (!arrayEquals.apply(this[i3], [ array[i3] ])) return false; } else if (this[i3] != array[i3]) { return false; } } return true; }; }, "./node_modules/@jitsi/sdp-interop/lib/index.js": function(module1, exports1, __webpack_require__) { exports1.Interop = __webpack_require__("./node_modules/@jitsi/sdp-interop/lib/interop.js"); }, "./node_modules/@jitsi/sdp-interop/lib/interop.js": function(module1, exports1, __webpack_require__) { "use strict"; var transform = __webpack_require__("./node_modules/@jitsi/sdp-interop/lib/transform.js"); var arrayEquals = __webpack_require__("./node_modules/@jitsi/sdp-interop/lib/array-equals.js"); function midToString(line) { if (typeof line.mid === "number") { line.mid = line.mid.toString(); } } function Interop() { this.cache = { mlB2UMap: {}, mlU2BMap: {} }; } module1.exports = Interop; Interop.prototype.candidateToUnifiedPlan = function(candidate) { var cand = new RTCIceCandidate(candidate); cand.sdpMLineIndex = this.cache.mlB2UMap[cand.sdpMLineIndex]; return cand; }; Interop.prototype.candidateToPlanB = function(candidate) { var cand = new RTCIceCandidate(candidate); if (cand.sdpMid.indexOf("audio") === 0) { cand.sdpMid = "audio"; } else if (cand.sdpMid.indexOf("video") === 0) { cand.sdpMid = "video"; } else { throw new Error("candidate with " + cand.sdpMid + " not allowed"); } cand.sdpMLineIndex = this.cache.mlU2BMap[cand.sdpMLineIndex]; return cand; }; Interop.prototype.getFirstSendingIndexFromAnswer = function(type) { if (!this.cache.answer) { return null; } var session = transform.parse(this.cache.answer); if (session && session.media && Array.isArray(session.media)) { for (var i3 = 0; i3 < session.media.length; i3++) { if (session.media[i3].type == type && (!session.media[i3].direction || session.media[i3].direction === "sendrecv" || session.media[i3].direction === "sendonly")) { return i3; } } } return null; }; Interop.prototype.toPlanB = function(desc) { var self1 = this; if (typeof desc !== "object" || desc === null || typeof desc.sdp !== "string") { console.warn("An empty description was passed as an argument."); return desc; } var session = transform.parse(desc.sdp); if (typeof session.media === "undefined" || !Array.isArray(session.media) || session.media.length === 0) { console.warn("The description has no media."); return desc; } if (session.media.length <= 3 && session.media.every(function(m3) { return [ "video", "audio", "data" ].indexOf(m3.mid) !== -1; })) { console.warn("This description does not look like Unified Plan."); return desc; } var sdp = desc.sdp; var rewrite = false; for (var i3 = 0; i3 < session.media.length; i3++) { var uLine = session.media[i3]; uLine.rtp.forEach(function(rtp) { if (rtp.codec === "NULL") { rewrite = true; var offer = transform.parse(self1.cache.offer); rtp.codec = offer.media[i3].rtp[0].codec; } }); } if (rewrite) { sdp = transform.write(session); } this.cache[desc.type] = sdp; var media = session.media; session.media = []; var type2bl = {}; var types = []; var directionResult = {}; media.forEach(function(uLine2) { midToString(uLine2); if ((typeof uLine2.rtcpMux !== "string" || uLine2.rtcpMux !== "rtcp-mux") && uLine2.direction !== "inactive" && uLine2.type !== "application") { throw new Error("Cannot convert to Plan B because m-lines without the rtcp-mux attribute were found."); } if (typeof type2bl[uLine2.type] === "undefined" || type2bl[uLine2.type].direction === "inactive") { type2bl[uLine2.type] = uLine2; } }); media.forEach(function(uLine2) { var type = uLine2.type; if (type === "application") { uLine2.mid = "data"; session.media.push(uLine2); types.push(uLine2.mid); return; } if (typeof uLine2.sources === "object") { Object.keys(uLine2.sources).forEach(function(ssrc) { if (typeof type2bl[type].sources !== "object") type2bl[type].sources = {}; type2bl[type].sources[ssrc] = uLine2.sources[ssrc]; if (typeof uLine2.msid !== "undefined") { type2bl[type].sources[ssrc].msid = uLine2.msid; } }); } if (typeof uLine2.ssrcGroups !== "undefined" && Array.isArray(uLine2.ssrcGroups)) { if (typeof type2bl[type].ssrcGroups === "undefined" || !Array.isArray(type2bl[type].ssrcGroups)) { type2bl[type].ssrcGroups = []; } if (!arrayEquals.apply(type2bl[type].ssrcGroups, [ uLine2.ssrcGroups ])) { type2bl[type].ssrcGroups = type2bl[type].ssrcGroups.concat(uLine2.ssrcGroups); } } var direction = uLine2.direction; directionResult[type] = (directionResult[type] || 0) | directionMasks[direction || "inactive"]; if (type2bl[type] === uLine2) { uLine2.mid = type; delete uLine2.bundleOnly; delete uLine2.msid; if (direction !== "inactive") { types.push(type); } session.media.push(uLine2); } }); session.groups.some(function(group) { if (group.type === "BUNDLE") { group.mids = types.join(" "); return true; } }); session.msidSemantic = { semantic: "WMS", token: "*" }; var resStr = transform.write(session); return new RTCSessionDescription({ type: desc.type, sdp: resStr }); }; Interop.prototype.toUnifiedPlan = function(desc) { var self1 = this; if (typeof desc !== "object" || desc === null || typeof desc.sdp !== "string") { console.warn("An empty description was passed as an argument."); return desc; } var session = transform.parse(desc.sdp); if (typeof session.media === "undefined" || !Array.isArray(session.media) || session.media.length === 0) { console.warn("The description has no media."); return desc; } if (session.media.length > 3 || !session.media.every(function(m3) { return [ "video", "audio", "data" ].indexOf(m3.mid) !== -1; })) { console.warn("This description does not look like Plan B."); return desc; } var mids = []; session.media.forEach(function(m3) { mids.push(m3.mid); }); var hasBundle = false; if (typeof session.groups !== "undefined" && Array.isArray(session.groups)) { hasBundle = session.groups.every(function(g3) { return g3.type !== "BUNDLE" || arrayEquals.apply(g3.mids.sort(), [ mids.sort() ]); }); } if (!hasBundle) { throw new Error("Cannot convert to Unified Plan because m-lines that are not bundled were found."); } var cached; if (typeof this.cache[desc.type] !== "undefined") { cached = transform.parse(this.cache[desc.type]); } var recvonlySsrcs = { audio: {}, video: {} }; var mid2ul = {}; var bIdx = 0; var uIdx = 0; session.media.forEach(function(bLine) { if ((typeof bLine.rtcpMux !== "string" || bLine.rtcpMux !== "rtcp-mux") && bLine.direction !== "inactive" && bLine.type !== "application") { throw new Error("Cannot convert to Unified Plan because m-lines without the rtcp-mux attribute were found."); } if (bLine.type === "application") { var uLineData = null; if (cached && cached.media) { uLineData = cached.media.find(function(uLine2) { return uLine2.type === "application"; }); } if (uLineData) { mid2ul[uLineData.mid] = uLineData; } else { mid2ul[bLine.mid] = bLine; } return; } var sources = bLine.sources; var ssrcGroups = bLine.ssrcGroups; var candidates = bLine.candidates; var iceUfrag = bLine.iceUfrag; var icePwd = bLine.icePwd; var fingerprint = bLine.fingerprint; var port = bLine.port; delete bLine.sources; delete bLine.ssrcGroups; delete bLine.candidates; delete bLine.iceUfrag; delete bLine.icePwd; delete bLine.fingerprint; delete bLine.port; delete bLine.mid; var ssrc2group = {}; if (typeof ssrcGroups !== "undefined" && Array.isArray(ssrcGroups)) { ssrcGroups.forEach(function(ssrcGroup) { if (ssrcGroup.semantics === "SIM") { return; } if (typeof ssrcGroup.ssrcs !== "undefined" && Array.isArray(ssrcGroup.ssrcs)) { ssrcGroup.ssrcs.forEach(function(ssrc) { if (typeof ssrc2group[ssrc] === "undefined") { ssrc2group[ssrc] = []; } ssrc2group[ssrc].push(ssrcGroup); }); } }); } var ssrc2ml = {}; if (typeof sources === "object") { Object.keys(sources).forEach(function(ssrc) { var uLine2; if (desc.type === "offer") { if (!sources[ssrc].msid) { recvonlySsrcs[bLine.type][ssrc] = sources[ssrc]; return; } } if (typeof ssrc2group[ssrc] !== "undefined" && Array.isArray(ssrc2group[ssrc])) { ssrc2group[ssrc].some(function(ssrcGroup) { return ssrcGroup.ssrcs.some(function(related) { if (typeof ssrc2ml[related] === "object") { uLine2 = ssrc2ml[related]; return true; } }); }); } if (typeof uLine2 === "object") { uLine2.sources[ssrc] = sources[ssrc]; delete sources[ssrc].msid; } else { uLine2 = Object.create(bLine); ssrc2ml[ssrc] = uLine2; if (typeof sources[ssrc].msid !== "undefined") { uLine2.msid = sources[ssrc].msid; delete sources[ssrc].msid; } uLine2.sources = {}; uLine2.sources[ssrc] = sources[ssrc]; uLine2.ssrcGroups = ssrc2group[ssrc]; if (typeof cached !== "undefined" && typeof cached.media !== "undefined" && Array.isArray(cached.media)) { cached.media.forEach(function(m3) { if (typeof m3.sources === "object") { Object.keys(m3.sources).forEach(function(s3) { if (s3 === ssrc) { uLine2.mid = m3.mid; } }); } }); } midToString(uLine2); if (typeof uLine2.mid === "undefined") { if (desc.type === "answer") { throw new Error("An unmapped SSRC was found."); } uLine2.mid = [ bLine.type, "-", ssrc ].join(""); } uLine2.candidates = candidates; uLine2.iceUfrag = iceUfrag; uLine2.icePwd = icePwd; uLine2.fingerprint = fingerprint; uLine2.port = port; mid2ul[uLine2.mid] = uLine2; self1.cache.mlU2BMap[uIdx] = bIdx; if (typeof self1.cache.mlB2UMap[bIdx] === "undefined") { self1.cache.mlB2UMap[bIdx] = uIdx; } uIdx++; } }); } bIdx++; }); session.media = []; mids = []; if (desc.type === "answer") { for (var i3 = 0; i3 < cached.media.length; i3++) { var uLine = cached.media[i3]; midToString(uLine); if (typeof mid2ul[uLine.mid] === "undefined") { delete uLine.msid; delete uLine.sources; delete uLine.ssrcGroups; if (!uLine.direction || uLine.direction === "sendrecv") uLine.direction = "recvonly"; else if (uLine.direction === "sendonly") uLine.direction = "inactive"; } else { } session.media.push(uLine); if (typeof uLine.mid === "string") { mids.push(uLine.mid); } } } else { if (typeof cached !== "undefined" && typeof cached.media !== "undefined" && Array.isArray(cached.media)) { cached.media.forEach(function(uLine2) { midToString(uLine2); mids.push(uLine2.mid); if (typeof mid2ul[uLine2.mid] !== "undefined") { session.media.push(mid2ul[uLine2.mid]); } else { delete uLine2.msid; delete uLine2.sources; delete uLine2.ssrcGroups; if (!uLine2.direction || uLine2.direction === "sendrecv") uLine2.direction = "recvonly"; if (!uLine2.direction || uLine2.direction === "sendonly") uLine2.direction = "inactive"; session.media.push(uLine2); } }); } Object.keys(mid2ul).forEach(function(mid) { if (mids.indexOf(mid) === -1) { mids.push(mid); if (mid2ul[mid].direction === "recvonly") { session.media.some(function(uLine2) { if ((uLine2.direction === "sendrecv" || uLine2.direction === "sendonly") && uLine2.type === mid2ul[mid].type) { Object.keys(mid2ul[mid].sources).forEach(function(ssrc) { uLine2.sources[ssrc] = mid2ul[mid].sources[ssrc]; }); return true; } }); } else { session.media.push(mid2ul[mid]); } } }); } [ "audio", "video" ].forEach(function(type) { if (!session || !session.media || !Array.isArray(session.media)) return; var idx = null; if (Object.keys(recvonlySsrcs[type]).length > 0) { idx = self1.getFirstSendingIndexFromAnswer(type); if (idx === null) { for (var i4 = 0; i4 < session.media.length; i4++) { if (session.media[i4].type === type) { idx = i4; break; } } } } if (idx && session.media.length > idx) { var mLine = session.media[idx]; Object.keys(recvonlySsrcs[type]).forEach(function(ssrc) { if (mLine.sources && mLine.sources[ssrc]) { console.warn("Replacing an existing SSRC."); } if (!mLine.sources) { mLine.sources = {}; } mLine.sources[ssrc] = recvonlySsrcs[type][ssrc]; }); } }); session.groups.some(function(group) { if (group.type === "BUNDLE") { group.mids = mids.join(" "); return true; } }); session.msidSemantic = { semantic: "WMS", token: "*" }; var resStr = transform.write(session); this.cache[desc.type] = resStr; return new RTCSessionDescription({ type: desc.type, sdp: resStr }); }; var directionMasks = { "inactive": 0, "recvonly": 1, "sendonly": 2, "sendrecv": 3 }; function parseDirection(direction) { var directionMask = direction & 3; switch (directionMask) { case 0: return "inactive"; case 1: return "recvonly"; case 2: return "sendonly"; case 3: return "sendrecv"; } } }, "./node_modules/@jitsi/sdp-interop/lib/transform.js": function(module1, exports1, __webpack_require__) { var transform = __webpack_require__("./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/index.js"); exports1.write = function(session, opts) { if (typeof session !== "undefined" && typeof session.media !== "undefined" && Array.isArray(session.media)) { session.media.forEach(function(mLine) { if (typeof mLine.sources !== "undefined" && Object.keys(mLine.sources).length !== 0) { mLine.ssrcs = []; Object.keys(mLine.sources).forEach(function(ssrc) { var source = mLine.sources[ssrc]; Object.keys(source).forEach(function(attribute) { mLine.ssrcs.push({ id: ssrc, attribute, value: source[attribute] }); }); }); delete mLine.sources; } if (typeof mLine.ssrcGroups !== "undefined" && Array.isArray(mLine.ssrcGroups)) { mLine.ssrcGroups.forEach(function(ssrcGroup) { if (typeof ssrcGroup.ssrcs !== "undefined" && Array.isArray(ssrcGroup.ssrcs)) { ssrcGroup.ssrcs = ssrcGroup.ssrcs.join(" "); } }); } }); } if (typeof session !== "undefined" && typeof session.groups !== "undefined" && Array.isArray(session.groups)) { session.groups.forEach(function(g3) { if (typeof g3.mids !== "undefined" && Array.isArray(g3.mids)) { g3.mids = g3.mids.join(" "); } }); } return transform.write(session, opts); }; exports1.parse = function(sdp) { var session = transform.parse(sdp); if (typeof session !== "undefined" && typeof session.media !== "undefined" && Array.isArray(session.media)) { session.media.forEach(function(mLine) { if (typeof mLine.ssrcs !== "undefined" && Array.isArray(mLine.ssrcs)) { mLine.sources = {}; mLine.ssrcs.forEach(function(ssrc) { if (!mLine.sources[ssrc.id]) mLine.sources[ssrc.id] = {}; mLine.sources[ssrc.id][ssrc.attribute] = ssrc.value; }); delete mLine.ssrcs; } if (typeof mLine.ssrcGroups !== "undefined" && Array.isArray(mLine.ssrcGroups)) { mLine.ssrcGroups.forEach(function(ssrcGroup) { if (typeof ssrcGroup.ssrcs === "string") { ssrcGroup.ssrcs = ssrcGroup.ssrcs.split(" "); } }); } }); } if (typeof session !== "undefined" && typeof session.groups !== "undefined" && Array.isArray(session.groups)) { session.groups.forEach(function(g3) { if (typeof g3.mids === "string") { g3.mids = g3.mids.split(" "); } }); } return session; }; }, "./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/grammar.js": function(module1, exports1) { var grammar = module1.exports = { v: [ { name: "version", reg: /^(\d*)$/ } ], o: [ { name: "origin", reg: /^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/, names: [ "username", "sessionId", "sessionVersion", "netType", "ipVer", "address" ], format: "%s %s %d %s IP%d %s" } ], s: [ { name: "name" } ], i: [ { name: "description" } ], u: [ { name: "uri" } ], e: [ { name: "email" } ], p: [ { name: "phone" } ], z: [ { name: "timezones" } ], r: [ { name: "repeats" } ], t: [ { name: "timing", reg: /^(\d*) (\d*)/, names: [ "start", "stop" ], format: "%d %d" } ], c: [ { name: "connection", reg: /^IN IP(\d) (\S*)/, names: [ "version", "ip" ], format: "IN IP%d %s" } ], b: [ { push: "bandwidth", reg: /^(TIAS|AS|CT|RR|RS):(\d*)/, names: [ "type", "limit" ], format: "%s:%s" } ], m: [ { reg: /^(\w*) (\d*) ([\w\/]*)(?: (.*))?/, names: [ "type", "port", "protocol", "payloads" ], format: "%s %d %s %s" } ], a: [ { push: "rtp", reg: /^rtpmap:(\d*) ([\w\-\.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/, names: [ "payload", "codec", "rate", "encoding" ], format: function(o3) { return o3.encoding ? "rtpmap:%d %s/%s/%s" : o3.rate ? "rtpmap:%d %s/%s" : "rtpmap:%d %s"; } }, { push: "fmtp", reg: /^fmtp:(\d*) ([\S| ]*)/, names: [ "payload", "config" ], format: "fmtp:%d %s" }, { name: "control", reg: /^control:(.*)/, format: "control:%s" }, { name: "rtcp", reg: /^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/, names: [ "port", "netType", "ipVer", "address" ], format: function(o3) { return o3.address != null ? "rtcp:%d %s IP%d %s" : "rtcp:%d"; } }, { push: "rtcpFbTrrInt", reg: /^rtcp-fb:(\*|\d*) trr-int (\d*)/, names: [ "payload", "value" ], format: "rtcp-fb:%d trr-int %d" }, { push: "rtcpFb", reg: /^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/, names: [ "payload", "type", "subtype" ], format: function(o3) { return o3.subtype != null ? "rtcp-fb:%s %s %s" : "rtcp-fb:%s %s"; } }, { push: "ext", reg: /^extmap:(\d+)(?:\/(\w+))? (\S*)(?: (\S*))?/, names: [ "value", "direction", "uri", "config" ], format: function(o3) { return "extmap:%d" + (o3.direction ? "/%s" : "%v") + " %s" + (o3.config ? " %s" : ""); } }, { push: "crypto", reg: /^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/, names: [ "id", "suite", "config", "sessionConfig" ], format: function(o3) { return o3.sessionConfig != null ? "crypto:%d %s %s %s" : "crypto:%d %s %s"; } }, { name: "setup", reg: /^setup:(\w*)/, format: "setup:%s" }, { name: "mid", reg: /^mid:([^\s]*)/, format: "mid:%s" }, { name: "msid", reg: /^msid:(.*)/, format: "msid:%s" }, { name: "ptime", reg: /^ptime:(\d*)/, format: "ptime:%d" }, { name: "maxptime", reg: /^maxptime:(\d*)/, format: "maxptime:%d" }, { name: "direction", reg: /^(sendrecv|recvonly|sendonly|inactive)/ }, { name: "icelite", reg: /^(ice-lite)/ }, { name: "iceUfrag", reg: /^ice-ufrag:(\S*)/, format: "ice-ufrag:%s" }, { name: "icePwd", reg: /^ice-pwd:(\S*)/, format: "ice-pwd:%s" }, { name: "fingerprint", reg: /^fingerprint:(\S*) (\S*)/, names: [ "type", "hash" ], format: "fingerprint:%s %s" }, { push: "candidates", reg: /^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/, names: [ "foundation", "component", "transport", "priority", "ip", "port", "type", "raddr", "rport", "tcptype", "generation", "network-id", "network-cost" ], format: function(o3) { var str = "candidate:%s %d %s %d %s %d typ %s"; str += o3.raddr != null ? " raddr %s rport %d" : "%v%v"; str += o3.tcptype != null ? " tcptype %s" : "%v"; if (o3.generation != null) { str += " generation %d"; } str += o3["network-id"] != null ? " network-id %d" : "%v"; str += o3["network-cost"] != null ? " network-cost %d" : "%v"; return str; } }, { name: "endOfCandidates", reg: /^(end-of-candidates)/ }, { name: "remoteCandidates", reg: /^remote-candidates:(.*)/, format: "remote-candidates:%s" }, { name: "iceOptions", reg: /^ice-options:(\S*)/, format: "ice-options:%s" }, { push: "ssrcs", reg: /^ssrc:(\d*) ([\w_]*)(?::(.*))?/, names: [ "id", "attribute", "value" ], format: function(o3) { var str = "ssrc:%d"; if (o3.attribute != null) { str += " %s"; if (o3.value != null) { str += ":%s"; } } return str; } }, { push: "ssrcGroups", reg: /^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/, names: [ "semantics", "ssrcs" ], format: "ssrc-group:%s %s" }, { name: "msidSemantic", reg: /^msid-semantic:\s?(\w*) (\S*)/, names: [ "semantic", "token" ], format: "msid-semantic: %s %s" }, { push: "groups", reg: /^group:(\w*) (.*)/, names: [ "type", "mids" ], format: "group:%s %s" }, { name: "rtcpMux", reg: /^(rtcp-mux)/ }, { name: "rtcpRsize", reg: /^(rtcp-rsize)/ }, { name: "sctpmap", reg: /^sctpmap:([\w_\/]*) (\S*)(?: (\S*))?/, names: [ "sctpmapNumber", "app", "maxMessageSize" ], format: function(o3) { return o3.maxMessageSize != null ? "sctpmap:%s %s %s" : "sctpmap:%s %s"; } }, { name: "xGoogleFlag", reg: /^x-google-flag:([^\s]*)/, format: "x-google-flag:%s" }, { push: "rids", reg: /^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/, names: [ "id", "direction", "params" ], format: function(o3) { return o3.params ? "rid:%s %s %s" : "rid:%s %s"; } }, { push: "imageattrs", reg: new RegExp( "^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?" ), names: [ "pt", "dir1", "attrs1", "dir2", "attrs2" ], format: function(o3) { return "imageattr:%s %s %s" + (o3.dir2 ? " %s %s" : ""); } }, { name: "simulcast", reg: new RegExp( "^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$" ), names: [ "dir1", "list1", "dir2", "list2" ], format: function(o3) { return "simulcast:%s %s" + (o3.dir2 ? " %s %s" : ""); } }, { name: "simulcast_03", reg: /^simulcast:[\s\t]+([\S+\s\t]+)$/, names: [ "value" ], format: "simulcast: %s" }, { name: "framerate", reg: /^framerate:(\d+(?:$|\.\d+))/, format: "framerate:%s" }, { push: "invalid", names: [ "value" ] } ] }; Object.keys(grammar).forEach(function(key) { var objs = grammar[key]; objs.forEach(function(obj) { if (!obj.reg) { obj.reg = /(.*)/; } if (!obj.format) { obj.format = "%s"; } }); }); }, "./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/index.js": function(module1, exports1, __webpack_require__) { var parser = __webpack_require__("./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/parser.js"); var writer = __webpack_require__("./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/writer.js"); exports1.write = writer; exports1.parse = parser.parse; exports1.parseFmtpConfig = parser.parseFmtpConfig; exports1.parseParams = parser.parseParams; exports1.parsePayloads = parser.parsePayloads; exports1.parseRemoteCandidates = parser.parseRemoteCandidates; exports1.parseImageAttributes = parser.parseImageAttributes; exports1.parseSimulcastStreamList = parser.parseSimulcastStreamList; }, "./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/parser.js": function(module1, exports1, __webpack_require__) { var toIntIfInt = function(v3) { return String(Number(v3)) === v3 ? Number(v3) : v3; }; var attachProperties = function(match, location1, names, rawName) { if (rawName && !names) { location1[rawName] = toIntIfInt(match[1]); } else { for (var i3 = 0; i3 < names.length; i3 += 1) { if (match[i3 + 1] != null) { location1[names[i3]] = toIntIfInt(match[i3 + 1]); } } } }; var parseReg = function(obj, location1, content) { var needsBlank = obj.name && obj.names; if (obj.push && !location1[obj.push]) { location1[obj.push] = []; } else if (needsBlank && !location1[obj.name]) { location1[obj.name] = {}; } var keyLocation = obj.push ? {} : needsBlank ? location1[obj.name] : location1; attachProperties(content.match(obj.reg), keyLocation, obj.names, obj.name); if (obj.push) { location1[obj.push].push(keyLocation); } }; var grammar = __webpack_require__("./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/grammar.js"); var validLine = RegExp.prototype.test.bind(/^([a-z])=(.*)/); exports1.parse = function(sdp) { var session = {}, media = [], location1 = session; sdp.split(/(\r\n|\r|\n)/).filter(validLine).forEach(function(l2) { var type = l2[0]; var content = l2.slice(2); if (type === "m") { media.push({ rtp: [], fmtp: [] }); location1 = media[media.length - 1]; } for (var j3 = 0; j3 < (grammar[type] || []).length; j3 += 1) { var obj = grammar[type][j3]; if (obj.reg.test(content)) { return parseReg(obj, location1, content); } } }); session.media = media; return session; }; var paramReducer = function(acc, expr) { var s3 = expr.split(/=(.+)/, 2); if (s3.length === 2) { acc[s3[0]] = toIntIfInt(s3[1]); } return acc; }; exports1.parseParams = function(str) { return str.split(/\;\s?/).reduce(paramReducer, {}); }; exports1.parseFmtpConfig = exports1.parseParams; exports1.parsePayloads = function(str) { return str.split(" ").map(Number); }; exports1.parseRemoteCandidates = function(str) { var candidates = []; var parts = str.split(" ").map(toIntIfInt); for (var i3 = 0; i3 < parts.length; i3 += 3) { candidates.push({ component: parts[i3], ip: parts[i3 + 1], port: parts[i3 + 2] }); } return candidates; }; exports1.parseImageAttributes = function(str) { return str.split(" ").map(function(item) { return item.substring(1, item.length - 1).split(",").reduce(paramReducer, {}); }); }; exports1.parseSimulcastStreamList = function(str) { return str.split(";").map(function(stream) { return stream.split(",").map(function(format) { var scid, paused = false; if (format[0] !== "~") { scid = toIntIfInt(format); } else { scid = toIntIfInt(format.substring(1, format.length)); paused = true; } return { scid, paused }; }); }); }; }, "./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/writer.js": function(module1, exports1, __webpack_require__) { var grammar = __webpack_require__("./node_modules/@jitsi/sdp-interop/node_modules/sdp-transform/lib/grammar.js"); var formatRegExp = /%[sdv%]/g; var format = function(formatStr) { var i3 = 1; var args = arguments; var len = args.length; return formatStr.replace(formatRegExp, function(x3) { if (i3 >= len) { return x3; } var arg = args[i3]; i3 += 1; switch (x3) { case "%%": return "%"; case "%s": return String(arg); case "%d": return Number(arg); case "%v": return ""; } }); }; var makeLine = function(type, obj, location1) { var str = obj.format instanceof Function ? obj.format(obj.push ? location1 : location1[obj.name]) : obj.format; var args = [ type + "=" + str ]; if (obj.names) { for (var i3 = 0; i3 < obj.names.length; i3 += 1) { var n3 = obj.names[i3]; if (obj.name) { args.push(location1[obj.name][n3]); } else { args.push(location1[obj.names[i3]]); } } } else { args.push(location1[obj.name]); } return format.apply(null, args); }; var defaultOuterOrder = [ "v", "o", "s", "i", "u", "e", "p", "c", "b", "t", "r", "z", "a" ]; var defaultInnerOrder = [ "i", "c", "b", "a" ]; module1.exports = function(session,