3 lines
66 KiB
JavaScript
3 lines
66 KiB
JavaScript
(()=>{function e(e,t,n,r){Object.defineProperty(e,t,{get:n,set:r,enumerable:!0,configurable:!0})}function t(e){return e&&e.__esModule?e.default:e}class n{autoPair=!1;connected=!1;autoReconnect=!0;autoReconnectTimeout=3e3;constructor(e){this.endpoint=new URL(e.endpoint),"boolean"==typeof e.autoReconnect?this.autoReconnect=!0:e.autoReconnect&&(this.autoReconnect=!0,this.autoReconnectTimeout=e.autoReconnect.timeout)}connect(){this.autoReconnectTimer&&clearTimeout(this.autoReconnectTimer),this.ws=new WebSocket(this.endpoint.href),this.addWSEvents()}disconnect(){this.ws.close()}addWSEvents(){this.ws.addEventListener("open",(()=>this.eventOpen())),this.ws.addEventListener("close",(()=>this.eventClose())),this.ws.addEventListener("error",(()=>this.eventError())),this.ws.addEventListener("message",(({data:e})=>this.eventMessage(e)))}eventOpen(){this.connected=!0;for(const e of this.activeConnectionEvent)e(void 0)}eventClose(){this.connected=!1,this.autoReconnect&&(this.autoReconnectTimer=setTimeout(this.connect,this.autoReconnectTimeout))}eventError(){this.connected=!1}recaivePackEvent=[];onRecaivePack(e){this.recaivePackEvent.push(e)}activeConnectionEvent=[];onActive(e){this.connected?e():this.activeConnectionEvent.push(e)}eventMessage(e){if("string"==typeof e){let t=JSON.parse(e);for(const e of this.recaivePackEvent)e(t)}}tranferToServer(e){this.connected&&this.ws.send(JSON.stringify(e))}}class r{events=new Map;signals=new Map;requests=new Map;count=0;constructor(e){this.wsts=e}request(e){return new Promise(((t,n)=>{let r=++this.count;this.wsts.WSTSProtocol.SendRequest(e,r),this.events.set(r,[e=>{t(e)},e=>{n(e)}])}))}stream(e,t){let n=++this.count;this.wsts.WSTSProtocol.StartStream(e,n),this.events.set(n,[e=>{t(e)},()=>{}])}signal(e,t){let n=this.signals.get(e);n?n.push(t):this.signals.set(e,[t])}}class i{events={};emit(e,...t){if(this.events[e])for(const n of this.events[e])n(...t)}on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]}activeScope=!1;scope(e){this.activeScope?e():this.on("scope",e)}}class s{constructor(e){this.mwse=e}async allocAPIPAddress(){let{status:e,ip:t}=await this.mwse.EventPooling.request({type:"alloc/APIPAddress"});if("success"==e)return this.APIPAddress=t,t;throw new Error("Error Allocated Access Point IP Address")}async allocAPNumber(){let{status:e,number:t}=await this.mwse.EventPooling.request({type:"alloc/APNumber"});if("success"==e)return this.APNumber=t,t;throw new Error("Error Allocated Access Point Number")}async allocAPShortCode(){let{status:e,code:t}=await this.mwse.EventPooling.request({type:"alloc/APShortCode"});if("success"==e)return this.APShortCode=t,t;throw new Error("Error Allocated Access Point Short Code")}async reallocAPIPAddress(){let{status:e,ip:t}=await this.mwse.EventPooling.request({type:"realloc/APIPAddress"});if("success"==e)return this.APIPAddress=t,t;throw new Error("Error Reallocated Access Point IP Address")}async reallocAPNumber(){let{status:e,number:t}=await this.mwse.EventPooling.request({type:"realloc/APNumber"});if("success"==e)return this.APNumber=t,t;throw new Error("Error Reallocated Access Point Number")}async reallocAPShortCode(){let{status:e,code:t}=await this.mwse.EventPooling.request({type:"realloc/APShortCode"});if("success"==e)return this.APShortCode=t,t;throw new Error("Error Reallocated Access Point Short Code")}async releaseAPIPAddress(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APIPAddress"});if("success"!=e)throw new Error("Error release Access Point IP Address");this.APIPAddress=void 0}async releaseAPNumber(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APNumber"});if("success"!=e)throw new Error("Error release Access Point Number");this.APNumber=void 0}async releaseAPShortCode(){let{status:e}=await this.mwse.EventPooling.request({type:"release/APShortCode"});if("success"!=e)throw new Error("Error release Access Point Short Code");this.APShortCode=void 0}async queryAPIPAddress(e){let{status:t,socket:n}=await this.mwse.EventPooling.request({type:"whois/APIPAddress",whois:e});return"success"==t?n:null}async queryAPNumber(e){let{status:t,socket:n}=await this.mwse.EventPooling.request({type:"whois/APNumber",whois:e});return"success"==t?n:null}async queryAPShortCode(e){let{status:t,socket:n}=await this.mwse.EventPooling.request({type:"whois/APShortCode",whois:e});return"success"==t?n:null}}class o{info={};constructor(e){this.peer=e}async fetch(e){if(e){let t=await this.peer.mwse.EventPooling.request({type:"peer/info",peer:this.peer.socketId,name:e});"success"==t.status?this.info=t.info:console.warn(t.message)}else{let e=await this.peer.mwse.EventPooling.request({type:"peer/info",peer:this.peer.socketId});"success"==e.status?this.info=e.info:console.warn(e.message)}return this.info}set(e,t){this.info[e]=t,this.peer.mwse.WSTSProtocol.SendOnly({type:"auth/info",name:e,value:t})}get(e){return e?this.info[e]:this.info}}let a=!0,c=!0;function p(e,t,n){const r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}function d(e,t,n){if(!e.RTCPeerConnection)return;const r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);const s=e=>{const t=n(e);t&&(r.handleEvent?r.handleEvent(t):r(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(r,s),i.apply(this,[e,s])};const s=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(n))return s.apply(this,arguments);const r=this._eventMap[t].get(n);return this._eventMap[t].delete(n),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function h(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(a=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function l(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(c=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function m(){if("object"==typeof window){if(a)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function u(e,t){c&&console.warn(e+" is deprecated, please use "+t+" instead.")}function f(e){return"[object Object]"===Object.prototype.toString.call(e)}function v(e){return f(e)?Object.keys(e).reduce((function(t,n){const r=f(e[n]),i=r?v(e[n]):e[n],s=r&&!Object.keys(i).length;return void 0===i||s?t:Object.assign(t,{[n]:i})}),{}):e}function g(e,t,n){t&&!n.has(t.id)&&(n.set(t.id,t),Object.keys(t).forEach((r=>{r.endsWith("Id")?g(e,e.get(t[r]),n):r.endsWith("Ids")&&t[r].forEach((t=>{g(e,e.get(t),n)}))})))}function y(e,t,n){const r=n?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((n=>{n.type===r&&n.trackId===t.id&&g(e,n,i)}))})),i}var C={};e(C,"shimMediaStream",(()=>R)),e(C,"shimOnTrack",(()=>w)),e(C,"shimGetSendersWithDtmf",(()=>k)),e(C,"shimGetStats",(()=>E)),e(C,"shimSenderReceiverGetStats",(()=>b)),e(C,"shimAddTrackRemoveTrackWithNative",(()=>_)),e(C,"shimAddTrackRemoveTrack",(()=>I)),e(C,"shimPeerConnection",(()=>x)),e(C,"fixNegotiationNeeded",(()=>D)),e(C,"shimGetUserMedia",(()=>P)),e(C,"shimGetDisplayMedia",(()=>T));const S=m;function P(e,t){const n=e&&e.navigator;if(!n.mediaDevices)return;const r=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((n=>{if("require"===n||"advanced"===n||"mediaSource"===n)return;const r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);const i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];let e={};"number"==typeof r.ideal?(e[i("min",n)]=r.ideal,t.optional.push(e),e={},e[i("max",n)]=r.ideal,t.optional.push(e)):(e[i("",n)]=r.ideal,t.optional.push(e))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((e=>{void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},i=function(e,i){if(t.version>=61)return i(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=r(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!n.mediaDevices.getSupportedConstraints||!n.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return n.mediaDevices.enumerateDevices().then((n=>{let o=(n=n.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&n.length&&t.includes("back")&&(o=n[n.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=r(e.video),S("chrome: "+JSON.stringify(e)),i(e)}))}e.video=r(e.video)}return S("chrome: "+JSON.stringify(e)),i(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(n.getUserMedia=function(e,t,r){i(e,(e=>{n.webkitGetUserMedia(e,t,(e=>{r&&r(s(e))}))}))}.bind(n),n.mediaDevices.getUserMedia){const e=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(t){return i(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function T(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(n){return t(n).then((t=>{const r=n.video&&n.video.width,i=n.video&&n.video.height,s=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},r&&(n.video.mandatory.maxWidth=r),i&&(n.video.mandatory.maxHeight=i),e.navigator.mediaDevices.getUserMedia(n)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}function R(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function w(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===n.track.id)):{track:n.track};const i=new Event("track");i.track=n.track,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)})),t.stream.getTracks().forEach((n=>{let r;r=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===n.id)):{track:n};const i=new Event("track");i.track=n,i.receiver=r,i.transceiver={receiver:r},i.streams=[t.stream],this.dispatchEvent(i)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else d(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function k(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){let i=n.apply(this,arguments);return i||(i=t(this,e),this._senders.push(i)),i};const r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){r.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],n.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function E(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,r]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const i=function(e){const t={};return e.result().forEach((e=>{const n={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{n[t]=e.stat(t)})),t[n.id]=n})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const r=function(e){n(s(i(e)))};return t.apply(this,[r,e])}return new Promise(((e,n)=>{t.apply(this,[function(t){e(s(i(t)))},n])})).then(n,r)}}function b(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>y(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),d(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>y(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,n,r;return this.getSenders().forEach((n=>{n.track===e&&(t?r=!0:t=n)})),this.getReceivers().forEach((t=>(t.track===e&&(n?r=!0:n=t),t.track===e))),r||t&&n?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():n?n.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function _(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};const n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();n.apply(this,arguments);const r=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(r)};const r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const n=this._shimmedLocalStreams[t].indexOf(e);-1!==n&&this._shimmedLocalStreams[t].splice(n,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),i.apply(this,arguments)}}function I(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return _(e);const n=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=n.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const n=new e.MediaStream(t.getTracks());this._streams[t.id]=n,this._reverseStreams[n.id]=t,t=n}r.apply(this,[t])};const i=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:n})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const r=[].slice.call(arguments,1);if(1!==r.length||!r[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find((e=>e.track===t)))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const i=this._streams[n.id];if(i)i.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const r=new e.MediaStream([t]);this._streams[n.id]=r,this._reverseStreams[r.id]=n,this.addStream(r)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const n=e.RTCPeerConnection.prototype[t],r={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?n.apply(this,[t=>{const n=s(this,t);e[0].apply(null,[n])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):n.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=r[t]}));const o=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=function(e,t){let n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:n})}(this,arguments[0]),o.apply(this,arguments)):o.apply(this,arguments)};const a=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=a.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((n=>{this._streams[n].getTracks().find((t=>e.track===t))&&(t=this._streams[n])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function x(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]}))}function D(e,t){d(e,"negotiationneeded",(e=>{const n=e.target;if(!(t.version<72||n.getConfiguration&&"plan-b"===n.getConfiguration().sdpSemantics)||"stable"===n.signalingState)return e}))}var M={};function A(e,t){const n=e&&e.navigator,r=e&&e.MediaStreamTrack;if(n.getUserMedia=function(e,t,r){u("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),n.mediaDevices.getUserMedia(e).then(t,r)},!(t.version>55&&"autoGainControl"in n.mediaDevices.getSupportedConstraints())){const e=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},t=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(n.mediaDevices.getUserMedia=function(n){return"object"==typeof n&&"object"==typeof n.audio&&(n=JSON.parse(JSON.stringify(n)),e(n.audio,"autoGainControl","mozAutoGainControl"),e(n.audio,"noiseSuppression","mozNoiseSuppression")),t(n)},r&&r.prototype.getSettings){const t=r.prototype.getSettings;r.prototype.getSettings=function(){const n=t.apply(this,arguments);return e(n,"mozAutoGainControl","autoGainControl"),e(n,"mozNoiseSuppression","noiseSuppression"),n}}if(r&&r.prototype.applyConstraints){const t=r.prototype.applyConstraints;r.prototype.applyConstraints=function(n){return"audio"===this.kind&&"object"==typeof n&&(n=JSON.parse(JSON.stringify(n)),e(n,"autoGainControl","mozAutoGainControl"),e(n,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[n])}}}}function O(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(n){if(!n||!n.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===n.video?n.video={mediaSource:t}:n.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(n)})}function L(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function j(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const n=e.RTCPeerConnection.prototype[t],r={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=r[t]}));const n={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,i,s]=arguments;return r.apply(this,[e||null]).then((e=>{if(t.version<53&&!i)try{e.forEach((e=>{e.type=n[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,r)=>{e.set(r,Object.assign({},t,{type:n[t.type]||t.type}))}))}return e})).then(i,s)}}function N(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function q(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),d(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function F(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){u("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function U(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function G(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];let e=arguments[1]&&arguments[1].sendEncodings;void 0===e&&(e=[]),e=[...e];const n=e.length>0;n&&e.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const r=t.apply(this,arguments);if(n){const{sender:t}=r,n=t.getParameters();(!("encodings"in n)||1===n.encodings.length&&0===Object.keys(n.encodings[0]).length)&&(n.encodings=e,t.sendEncodings=e,this.setParametersPromises.push(t.setParameters(n).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return r})}function z(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function J(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function W(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}e(M,"shimOnTrack",(()=>L)),e(M,"shimPeerConnection",(()=>j)),e(M,"shimSenderGetStats",(()=>N)),e(M,"shimReceiverGetStats",(()=>q)),e(M,"shimRemoveStream",(()=>F)),e(M,"shimRTCDataChannel",(()=>U)),e(M,"shimAddTransceiver",(()=>G)),e(M,"shimGetParameters",(()=>z)),e(M,"shimCreateOffer",(()=>J)),e(M,"shimCreateAnswer",(()=>W)),e(M,"shimGetUserMedia",(()=>A)),e(M,"shimGetDisplayMedia",(()=>O));var V={};function B(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((n=>t.call(this,n,e))),e.getVideoTracks().forEach((n=>t.call(this,n,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...n){return n&&n.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const n=e.getTracks();this.getSenders().forEach((e=>{n.includes(e.track)&&this.removeTrack(e)}))})}}function K(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const n=new Event("addstream");n.stream=t,e.dispatchEvent(n)}))}),t.apply(e,arguments)}}}function H(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){const n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};let a=function(e,t,n){const r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=a,a=function(e,t,n){const r=s.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=a,a=function(e,t,n){const r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=a}function X(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,n=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>n(Y(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t))}function Y(e){return e&&void 0!==e.video?Object.assign({},e,{video:v(e.video)}):e}function $(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){const t=[];for(let n=0;n<e.iceServers.length;n++){let r=e.iceServers[n];void 0===r.urls&&r.url?(u("RTCIceServer.url","RTCIceServer.urls"),r=JSON.parse(JSON.stringify(r)),r.urls=r.url,delete r.url,t.push(r)):t.push(e.iceServers[n])}e.iceServers=t}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function Q(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Z(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio",{direction:"recvonly"}),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const n=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&n?"sendrecv"===n.direction?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":"recvonly"===n.direction&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):!0!==e.offerToReceiveVideo||n||this.addTransceiver("video",{direction:"recvonly"})}return t.apply(this,arguments)}}function ee(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}e(V,"shimLocalStreamsAPI",(()=>B)),e(V,"shimRemoteStreamsAPI",(()=>K)),e(V,"shimCallbacksAPI",(()=>H)),e(V,"shimGetUserMedia",(()=>X)),e(V,"shimConstraints",(()=>Y)),e(V,"shimRTCIceServerUrls",(()=>$)),e(V,"shimTrackEventTransceiver",(()=>Q)),e(V,"shimCreateOfferLegacy",(()=>Z)),e(V,"shimAudioContext",(()=>ee));var te={};e(te,"shimRTCIceCandidate",(()=>ie)),e(te,"shimRTCIceCandidateRelayProtocol",(()=>se)),e(te,"shimMaxMessageSize",(()=>oe)),e(te,"shimSendThrowTypeError",(()=>ae)),e(te,"shimConnectionState",(()=>ce)),e(te,"removeExtmapAllowMixed",(()=>pe)),e(te,"shimAddIceCandidateNullOrEmpty",(()=>de)),e(te,"shimParameterlessSetLocalDescription",(()=>he));var ne={};const re={};function ie(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const n=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substring(2)),e.candidate&&e.candidate.length){const r=new n(e),i=t(ne).parseCandidate(e.candidate);for(const e in i)e in r||Object.defineProperty(r,e,{value:i[e]});return r.toJSON=function(){return{candidate:r.candidate,sdpMid:r.sdpMid,sdpMLineIndex:r.sdpMLineIndex,usernameFragment:r.usernameFragment}},r}return new n(e)},e.RTCIceCandidate.prototype=n.prototype,d(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function se(e){!e.RTCIceCandidate||e.RTCIceCandidate&&"relayProtocol"in e.RTCIceCandidate.prototype||d(e,"icecandidate",(e=>{if(e.candidate){const n=t(ne).parseCandidate(e.candidate.candidate);"relay"===n.type&&(e.candidate.relayProtocol={0:"tls",1:"tcp",2:"udp"}[n.priority>>24])}return e}))}function oe(e,n){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===n.browser&&n.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(function(e){if(!e||!e.sdp)return!1;const n=t(ne).splitSections(e.sdp);return n.shift(),n.some((e=>{const n=t(ne).parseMLine(e);return n&&"application"===n.kind&&-1!==n.protocol.indexOf("SCTP")}))}(arguments[0])){const e=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const n=parseInt(t[1],10);return n!=n?-1:n}(arguments[0]),r=function(e){let t=65536;return"firefox"===n.browser&&(t=n.version<57?-1===e?16384:2147483637:n.version<60?57===n.version?65535:65536:2147483637),t}(e),i=function(e,r){let i=65536;"firefox"===n.browser&&57===n.version&&(i=65535);const s=t(ne).matchPrefix(e.sdp,"a=max-message-size:");return s.length>0?i=parseInt(s[0].substring(19),10):"firefox"===n.browser&&-1!==r&&(i=2147483637),i}(arguments[0],e);let s;s=0===r&&0===i?Number.POSITIVE_INFINITY:0===r||0===i?Math.max(r,i):Math.min(r,i);const o={};Object.defineProperty(o,"maxMessageSize",{get:()=>s}),this._sctp=o}return r.apply(this,arguments)}}function ae(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const n=e.send;e.send=function(){const r=arguments[0],i=r.length||r.size||r.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return n.apply(e,arguments)}}const n=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=n.apply(this,arguments);return t(e,this),e},d(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function ce(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const n=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const n=new Event("connectionstatechange",e);t.dispatchEvent(n)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}}))}function pe(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const n=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const n=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:n}):t.sdp=n}return n.apply(this,arguments)}}function de(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const n=e.RTCPeerConnection.prototype.addIceCandidate;n&&0!==n.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}function he(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const n=e.RTCPeerConnection.prototype.setLocalDescription;n&&0!==n.length&&(e.RTCPeerConnection.prototype.setLocalDescription=function(){let e=arguments[0]||{};if("object"!=typeof e||e.type&&e.sdp)return n.apply(this,arguments);if(e={type:e.type,sdp:e.sdp},!e.type)switch(this.signalingState){case"stable":case"have-local-offer":case"have-remote-pranswer":e.type="offer";break;default:e.type="answer"}if(e.sdp||"offer"!==e.type&&"answer"!==e.type)return n.apply(this,[e]);return("offer"===e.type?this.createOffer:this.createAnswer).apply(this).then((e=>n.apply(this,[e])))})}re.generateIdentifier=function(){return Math.random().toString(36).substring(2,12)},re.localCName=re.generateIdentifier(),re.splitLines=function(e){return e.trim().split("\n").map((e=>e.trim()))},re.splitSections=function(e){return e.split("\nm=").map(((e,t)=>(t>0?"m="+e:e).trim()+"\r\n"))},re.getDescription=function(e){const t=re.splitSections(e);return t&&t[0]},re.getMediaSections=function(e){const t=re.splitSections(e);return t.shift(),t},re.matchPrefix=function(e,t){return re.splitLines(e).filter((e=>0===e.indexOf(t)))},re.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const n={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":n.relatedAddress=t[e+1];break;case"rport":n.relatedPort=parseInt(t[e+1],10);break;case"tcptype":n.tcpType=t[e+1];break;case"ufrag":n.ufrag=t[e+1],n.usernameFragment=t[e+1];break;default:void 0===n[t[e]]&&(n[t[e]]=t[e+1])}return n},re.writeCandidate=function(e){const t=[];t.push(e.foundation);const n=e.component;"rtp"===n?t.push(1):"rtcp"===n?t.push(2):t.push(n),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const r=e.type;return t.push("typ"),t.push(r),"host"!==r&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},re.parseIceOptions=function(e){return e.substring(14).split(" ")},re.parseRtpMap=function(e){let t=e.substring(9).split(" ");const n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=3===t.length?parseInt(t[2],10):1,n.numChannels=n.channels,n},re.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==n?"/"+n:"")+"\r\n"},re.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},re.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},re.parseFmtp=function(e){const t={};let n;const r=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<r.length;e++)n=r[e].trim().split("="),t[n[0].trim()]=n[1];return t},re.writeFmtp=function(e){let t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const r=[];Object.keys(e.parameters).forEach((t=>{void 0!==e.parameters[t]?r.push(t+"="+e.parameters[t]):r.push(t)})),t+="a=fmtp:"+n+" "+r.join(";")+"\r\n"}return t},re.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},re.writeRtcpFb=function(e){let t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((e=>{t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},re.parseSsrcMedia=function(e){const t=e.indexOf(" "),n={ssrc:parseInt(e.substring(7,t),10)},r=e.indexOf(":",t);return r>-1?(n.attribute=e.substring(t+1,r),n.value=e.substring(r+1)):n.attribute=e.substring(t+1),n},re.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((e=>parseInt(e,10)))}},re.getMid=function(e){const t=re.matchPrefix(e,"a=mid:")[0];if(t)return t.substring(6)},re.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},re.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:re.matchPrefix(e+t,"a=fingerprint:").map(re.parseFingerprint)}},re.writeDtlsParameters=function(e,t){let n="a=setup:"+t+"\r\n";return e.fingerprints.forEach((e=>{n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),n},re.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},re.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?re.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},re.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},re.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},re.getCryptoParameters=function(e,t){return re.matchPrefix(e+t,"a=crypto:").map(re.parseCryptoLine)},re.getIceParameters=function(e,t){const n=re.matchPrefix(e+t,"a=ice-ufrag:")[0],r=re.matchPrefix(e+t,"a=ice-pwd:")[0];return n&&r?{usernameFragment:n.substring(12),password:r.substring(10)}:null},re.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},re.parseRtpParameters=function(e){const t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=re.splitLines(e)[0].split(" ");t.profile=n[2];for(let r=3;r<n.length;r++){const i=n[r],s=re.matchPrefix(e,"a=rtpmap:"+i+" ")[0];if(s){const n=re.parseRtpMap(s),r=re.matchPrefix(e,"a=fmtp:"+i+" ");switch(n.parameters=r.length?re.parseFmtp(r[0]):{},n.rtcpFeedback=re.matchPrefix(e,"a=rtcp-fb:"+i+" ").map(re.parseRtcpFb),t.codecs.push(n),n.name.toUpperCase()){case"RED":case"ULPFEC":t.fecMechanisms.push(n.name.toUpperCase())}}}re.matchPrefix(e,"a=extmap:").forEach((e=>{t.headerExtensions.push(re.parseExtmap(e))}));const r=re.matchPrefix(e,"a=rtcp-fb:* ").map(re.parseRtcpFb);return t.codecs.forEach((e=>{r.forEach((t=>{e.rtcpFeedback.find((e=>e.type===t.type&&e.parameter===t.parameter))||e.rtcpFeedback.push(t)}))})),t},re.writeRtpDescription=function(e,t){let n="";n+="m="+e+" ",n+=t.codecs.length>0?"9":"0",n+=" "+(t.profile||"UDP/TLS/RTP/SAVPF")+" ",n+=t.codecs.map((e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType)).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach((e=>{n+=re.writeRtpMap(e),n+=re.writeFmtp(e),n+=re.writeRtcpFb(e)}));let r=0;return t.codecs.forEach((e=>{e.maxptime>r&&(r=e.maxptime)})),r>0&&(n+="a=maxptime:"+r+"\r\n"),t.headerExtensions&&t.headerExtensions.forEach((e=>{n+=re.writeExtmap(e)})),n},re.parseRtpEncodingParameters=function(e){const t=[],n=re.parseRtpParameters(e),r=-1!==n.fecMechanisms.indexOf("RED"),i=-1!==n.fecMechanisms.indexOf("ULPFEC"),s=re.matchPrefix(e,"a=ssrc:").map((e=>re.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute)),o=s.length>0&&s[0].ssrc;let a;const c=re.matchPrefix(e,"a=ssrc-group:FID").map((e=>e.substring(17).split(" ").map((e=>parseInt(e,10)))));c.length>0&&c[0].length>1&&c[0][0]===o&&(a=c[0][1]),n.codecs.forEach((e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let n={ssrc:o,codecPayloadType:parseInt(e.parameters.apt,10)};o&&a&&(n.rtx={ssrc:a}),t.push(n),r&&(n=JSON.parse(JSON.stringify(n)),n.fec={ssrc:o,mechanism:i?"red+ulpfec":"red"},t.push(n))}})),0===t.length&&o&&t.push({ssrc:o});let p=re.matchPrefix(e,"b=");return p.length&&(p=0===p[0].indexOf("b=TIAS:")?parseInt(p[0].substring(7),10):0===p[0].indexOf("b=AS:")?950*parseInt(p[0].substring(5),10)-16e3:void 0,t.forEach((e=>{e.maxBitrate=p}))),t},re.parseRtcpParameters=function(e){const t={},n=re.matchPrefix(e,"a=ssrc:").map((e=>re.parseSsrcMedia(e))).filter((e=>"cname"===e.attribute))[0];n&&(t.cname=n.value,t.ssrc=n.ssrc);const r=re.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=r.length>0,t.compound=0===r.length;const i=re.matchPrefix(e,"a=rtcp-mux");return t.mux=i.length>0,t},re.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},re.parseMsid=function(e){let t;const n=re.matchPrefix(e,"a=msid:");if(1===n.length)return t=n[0].substring(7).split(" "),{stream:t[0],track:t[1]};const r=re.matchPrefix(e,"a=ssrc:").map((e=>re.parseSsrcMedia(e))).filter((e=>"msid"===e.attribute));return r.length>0?(t=r[0].value.split(" "),{stream:t[0],track:t[1]}):void 0},re.parseSctpDescription=function(e){const t=re.parseMLine(e),n=re.matchPrefix(e,"a=max-message-size:");let r;n.length>0&&(r=parseInt(n[0].substring(19),10)),isNaN(r)&&(r=65536);const i=re.matchPrefix(e,"a=sctp-port:");if(i.length>0)return{port:parseInt(i[0].substring(12),10),protocol:t.fmt,maxMessageSize:r};const s=re.matchPrefix(e,"a=sctpmap:");if(s.length>0){const e=s[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:r}}},re.writeSctpDescription=function(e,t){let n=[];return n="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&n.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),n.join("")},re.generateSessionId=function(){return Math.random().toString().substr(2,22)},re.writeSessionBoilerplate=function(e,t,n){let r;const i=void 0!==t?t:2;r=e||re.generateSessionId();return"v=0\r\no="+(n||"thisisadapterortc")+" "+r+" "+i+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},re.getDirection=function(e,t){const n=re.splitLines(e);for(let e=0;e<n.length;e++)switch(n[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[e].substring(2)}return t?re.getDirection(t):"sendrecv"},re.getKind=function(e){return re.splitLines(e)[0].split(" ")[0].substring(2)},re.isRejected=function(e){return"0"===e.split(" ",2)[1]},re.parseMLine=function(e){const t=re.splitLines(e)[0].substring(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}},re.parseOLine=function(e){const t=re.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}},re.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const t=re.splitLines(e);for(let e=0;e<t.length;e++)if(t[e].length<2||"="!==t[e].charAt(1))return!1;return!0},ne=re;!function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimSafari:!0}){const n=m,r=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:n}=e;if(n.mozGetUserMedia)t.browser="firefox",t.version=p(n.userAgent,/Firefox\/(\d+)\./,1);else if(n.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection)t.browser="chrome",t.version=p(n.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!e.RTCPeerConnection||!n.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=p(n.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),i={browserDetails:r,commonShim:te,extractVersion:p,disableLog:h,disableWarnings:l,sdp:ne};switch(r.browser){case"chrome":if(!C||!C.shimPeerConnection||!t.shimChrome)return n("Chrome shim is not included in this adapter release."),i;if(null===r.version)return n("Chrome shim can not determine version, not shimming."),i;n("adapter.js shimming chrome."),i.browserShim=C,de(e,r),he(e),C.shimGetUserMedia(e,r),C.shimMediaStream(e,r),C.shimPeerConnection(e,r),C.shimOnTrack(e,r),C.shimAddTrackRemoveTrack(e,r),C.shimGetSendersWithDtmf(e,r),C.shimGetStats(e,r),C.shimSenderReceiverGetStats(e,r),C.fixNegotiationNeeded(e,r),ie(e),se(e),ce(e),oe(e,r),ae(e),pe(e,r);break;case"firefox":if(!M||!M.shimPeerConnection||!t.shimFirefox)return n("Firefox shim is not included in this adapter release."),i;n("adapter.js shimming firefox."),i.browserShim=M,de(e,r),he(e),M.shimGetUserMedia(e,r),M.shimPeerConnection(e,r),M.shimOnTrack(e,r),M.shimRemoveStream(e,r),M.shimSenderGetStats(e,r),M.shimReceiverGetStats(e,r),M.shimRTCDataChannel(e,r),M.shimAddTransceiver(e,r),M.shimGetParameters(e,r),M.shimCreateOffer(e,r),M.shimCreateAnswer(e,r),ie(e),ce(e),oe(e,r),ae(e);break;case"safari":if(!V||!t.shimSafari)return n("Safari shim is not included in this adapter release."),i;n("adapter.js shimming safari."),i.browserShim=V,de(e,r),he(e),V.shimRTCIceServerUrls(e,r),V.shimCreateOfferLegacy(e,r),V.shimCallbacksAPI(e,r),V.shimLocalStreamsAPI(e,r),V.shimRemoteStreamsAPI(e,r),V.shimTrackEventTransceiver(e,r),V.shimGetUserMedia(e,r),V.shimAudioContext(e,r),ie(e),se(e),oe(e,r),ae(e),pe(e,r);break;default:n("Unsupported browser!")}}({window:"undefined"==typeof window?void 0:window});class le{static channels=new Map;static requireGC=!1;active=!1;connectionStatus="new";iceStatus="new";gatheringStatus="new";signalingStatus="";recaivingStream=new Map;sendingStream=new Map;events={};static defaultRTCConfig={iceCandidatePoolSize:0,iceTransportPolicy:"all",rtcpMuxPolicy:"require"};static defaultICEServers=[{urls:"stun:stun.l.google.com:19302"},{urls:"stun:stun1.l.google.com:19302"},{urls:"stun:stun2.l.google.com:19302"},{urls:"stun:stun3.l.google.com:19302"},{urls:"stun:stun4.l.google.com:19302"}];constructor(e,t){let n={};e?Object.assign(n,le.defaultRTCConfig,e):Object.assign(n,le.defaultRTCConfig),n.iceServers=t||le.defaultICEServers,this.rtc=new RTCPeerConnection(n),this.rtc.addEventListener("connectionstatechange",(()=>{this.eventConnectionState()})),this.rtc.addEventListener("icecandidate",((...e)=>{this.eventIcecandidate(...e)})),this.rtc.addEventListener("iceconnectionstatechange",(()=>{this.eventICEConnectionState()})),this.rtc.addEventListener("icegatheringstatechange",(()=>{this.eventICEGatherinState()})),this.rtc.addEventListener("negotiationneeded",(()=>{this.eventNogationNeeded()})),this.rtc.addEventListener("signalingstatechange",(()=>{this.eventSignalingState()})),this.rtc.addEventListener("track",((...e)=>{this.eventTrack(...e)})),this.rtc.addEventListener("datachannel",((...e)=>{this.eventDatachannel(...e)})),this.on("input",(async e=>{switch(e.type){case"icecandidate":await this.rtc.addIceCandidate(new RTCIceCandidate(e.value));break;case"offer":{await this.rtc.setRemoteDescription(new RTCSessionDescription(e.value));let t=await this.rtc.createAnswer({offerToReceiveAudio:!0,offerToReceiveVideo:!0});await this.rtc.setLocalDescription(t),this.send({type:"answer",value:t});break}case"answer":await this.rtc.setRemoteDescription(new RTCSessionDescription(e.value));break;case"streamInfo":{let{id:t,value:n}=e,r=this.recaivingStream.get(t);r?this.recaivingStream.set(t,{...r,...n}):this.recaivingStream.set(t,n),this.send({type:"streamAccept",id:t});break}case"streamRemoved":{let{id:t}=e;this.emit("stream:stopped",this.recaivingStream.get(t)),this.sendingStream.delete(t);break}case"streamAccept":{let{id:t}=e,n=this.sendingStream.get(t),r=[];if(n&&n.stream){for(const e of n.stream.getTracks())r.push(this.rtc.addTrack(e,n.stream));n.senders=r}break}case"message":this.emit("message",e.payload)}}))}addEventListener(e,t){(this.events[e]||(this.events[e]=[])).push(t)}on(e,t){this.addEventListener(e,t)}async dispatch(e,...t){if(this.events[e])for(const n of this.events[e])await n(...t)}async emit(e,...t){await this.dispatch(e,...t)}connect(){this.channel||this.createDefaultDataChannel()}sendMessage(e){this.send({type:"message",payload:e})}createDefaultDataChannel(){let e=this.rtc.createDataChannel(":default:",{ordered:!0});e.addEventListener("open",(()=>{this.channel=e,le.channels.set(this.id,this),this.active=!0})),e.addEventListener("message",(({data:e})=>{let t=JSON.parse(e);this.emit("input",t)})),e.addEventListener("close",(()=>{this.channel=void 0,this.active=!1}))}destroy(){this.active=!1,this.channel&&(this.channel.close(),this.channel=void 0),this.rtc&&this.rtc.close(),this.emit("disconnected"),le.channels.delete(this.id)}eventDatachannel(e){":default:"==e.channel.label?(le.channels.set(this.id,this),this.channel=e.channel,this.active=!0,e.channel.addEventListener("message",(({data:e})=>{let t=JSON.parse(e);this.emit("input",t)})),e.channel.addEventListener("close",(()=>{this.channel=void 0,le.channels.delete(this.id),le.requireGC=!0}))):this.emit("datachannel",e.channel)}send(e){"open"==this.channel?.readyState?this.channel.send(JSON.stringify(e)):this.emit("output",e)}eventConnectionState(){this.connectionStatus=this.rtc.connectionState,"connected"==this.connectionStatus&&0==this.active&&this.emit("connected"),"failed"!=this.connectionStatus&&"disconnected"!=this.connectionStatus&&"closed"!=this.connectionStatus||this.active&&this.destroy()}eventIcecandidate(e){e.candidate&&this.send({type:"icecandidate",value:e.candidate})}eventICEConnectionState(){this.iceStatus=this.rtc.iceConnectionState}eventICEGatherinState(){this.gatheringStatus=this.rtc.iceGatheringState}async eventNogationNeeded(){let e=await this.rtc.createOffer({iceRestart:!0,offerToReceiveAudio:!0,offerToReceiveVideo:!0});await this.rtc.setLocalDescription(e),this.send({type:"offer",value:e})}eventSignalingState(){this.signalingStatus=this.rtc.signalingState}eventTrack(e){let t=e.receiver;if(e.streams.length)for(const n of e.streams){let e=this.recaivingStream.get(n.id);(e.recaivers||(e.recaivers=[])).push(t),null==this.recaivingStream.get(n.id).stream?(e.stream=n,this.emit("stream:added",this.recaivingStream.get(n.id))):e.stream=n}}sendStream(e,t,n){this.send({type:"streamInfo",id:e.id,value:{...n,name:t}}),this.sendingStream.set(e.id,{...n,id:e.id,name:t,stream:e})}stopStream(e){if("connected"==this.connectionStatus&&this.sendingStream.has(e.id)){let{stream:t}=this.sendingStream.get(e.id);for(const e of t.getTracks())for(const t of this.rtc.getSenders())t.track?.id==e.id&&this.rtc.removeTrack(t);this.send({type:"streamRemoved",id:t.id}),this.sendingStream.delete(e.id)}}stopAllStreams(){if("connected"==this.connectionStatus){for(const[,{stream:e}]of this.sendingStream)if(null!=e){for(const t of e.getTracks())for(const e of this.rtc.getSenders())e.track?.id==t.id&&this.rtc.removeTrack(e);this.send({type:"streamRemoved",id:e.id})}this.sendingStream.clear()}}}let me;var ue;le.requireGC=!1,setInterval((()=>{if(0==le.requireGC)return;let e=document.createElement("img");e.src=window.URL.createObjectURL(new Blob([new ArrayBuffer(5e7)])),e.onerror=function(){window.URL.revokeObjectURL(this.src)},le.requireGC=!1}),3e3),(ue=me||(me={}))[ue.PayloadMessagePack=-12873.54]="PayloadMessagePack",ue[ue.PayloadRTCBasePack=-12884.54]="PayloadRTCBasePack";class fe extends i{options={};selfSocket=!1;active=!1;peerConnection=!1;primaryChannel="datachannel";constructor(e){super(),this.mwse=e,this.info=new o(this),this.on("pack",(e=>{if(":rtcbase_pack:"==e.type)return this.rtc?this.rtc.emit("input",e.payload):console.warn("Not active rtc but recaived rtc packs");this.emit("message",e)}))}createRTC(e,t){return this.rtc=new le(e,t),this.rtc.peer=this,this.rtc.on("connected",(()=>{this.peerConnection=!0})),this.rtc.on("disconnected",(()=>{this.peerConnection=!1})),this.rtc.on("output",(e=>{this.send({type:":rtcbase_pack:",payload:e})})),this.rtc.on("message",(e=>{this.emit("pack",e)})),this.rtc}setPeerOptions(e){"string"==typeof e?this.setSocketId(e):this.options=e}setSocketId(e){this.socketId=e}async metadata(){if("me"==this.socketId){let e=await this.mwse.EventPooling.request({type:"my/socketid"});return this.selfSocket=!0,this.active||=!0,this.socketId=e,this.emit("scope"),this.activeScope=!0,e}}async request(e){if(this.active)return await this.mwse.request(this.socketId,e)}equalTo(e){return this.socketId==e.socketId}async isReachable(){return await this.mwse.EventPooling.request({type:"is/reachable",to:this.socketId})}async enablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"everybody"})}async disablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"disable"})}async send(e){let t,n=this.peerConnection&&this.rtc?.active,r=this.mwse.server.connected;t=n&&r?"websocket"==this.primaryChannel?"websocket":"datachannel":r?"websocket":"datachannel","websocket"==t?await this.mwse.EventPooling.request({type:"pack/to",pack:e,to:this.socketId}):this.rtc?.sendMessage(e)}async forget(){this.mwse.peers.delete(this.socketId),this.mwse.pairs.delete(this.socketId)}}class ve extends i{peers=new Map;constructor(e){super(),this.mwse=e}setRoomOptions(e){if("string"==typeof e)this.roomId=e;else{let t={joinType:"free",ifexistsJoin:!0,accessType:"private",notifyActionInvite:!0,notifyActionJoined:!0,notifyActionEjected:!0};Object.assign(t,e),this.options=t}}setRoomId(e){this.roomId=e}async createRoom(e){let t=this.options||e,n=await this.mwse.EventPooling.request({type:"create-room",...t});if("fail"==n.status){if("ALREADY-EXISTS"==n.message&&this.options.ifexistsJoin)return this.join();throw new Error(n.message||n.messages)}this.options={...this.options,...n.room},this.roomId=n.room.id,this.mwse.rooms.set(this.roomId,this)}async join(){let e=await this.mwse.EventPooling.request({type:"joinroom",name:this.options.name,credential:this.options.credential});if("fail"==e.status)throw new Error(e.message);this.options={...this.options,...e.room},this.roomId=e.room.id,this.mwse.rooms.set(this.roomId,this)}async eject(){let{type:e}=await this.mwse.EventPooling.request({type:"ejectroom",roomId:this.roomId});this.peers.clear(),"success"==e&&this.mwse.rooms.delete(this.roomId)}async send(e,t=!1){await this.mwse.EventPooling.request({type:"pack/room",pack:e,to:this.roomId,wom:t})}async fetchPeers(e,t=!1){if(t){let{count:t}=await this.mwse.EventPooling.request({type:"room/peer-count",roomId:this.roomId,filter:e||{}});return t}{let{status:t,peers:n}=await this.mwse.EventPooling.request({type:"room/peer-count",roomId:this.roomId,filter:e||{}}),r=[];if("fail"==t)throw new Error("Cant using peers on room");if("success"==t)for(const e of n){let t=this.mwse.peer(e);r.push(t),this.peers.set(e,t)}return r}}}class ge{constructor(e){this.mwse=e,this.addListener()}addListener(){this.mwse.server?.onRecaivePack((e=>{this.PackAnalyze(e)}))}SendRaw(e){this.mwse.server.tranferToServer(e)}SendOnly(e){this.mwse.server.tranferToServer([e,"R"])}SendRequest(e,t){this.mwse.server.tranferToServer([e,t,"R"])}StartStream(e,t){this.mwse.server.tranferToServer([e,t,"S"])}PackAnalyze(e){let[t,n,r]=e;if("number"==typeof n){let e=this.mwse.EventPooling.events.get(n);if(e){if(e[0](t,r),"E"===r)this.mwse.EventPooling.events.delete(n)}else console.warn("Missing event sended from server")}else{let e=this.mwse.EventPooling.signals.get(n);if(e)for(const n of e)n(t);else console.warn("Missing event sended from server")}}}window.MWSE=class extends i{rooms=new Map;pairs=new Map;peers=new Map;constructor(e){super(),this.server=new n(e),this.WSTSProtocol=new ge(this),this.EventPooling=new r(this),this.virtualPressure=new s(this),this.server.connect(),this.me=new fe(this),this.me.scope((()=>{this.peers.set("me",this.me),this.peers.set(this.me.socketId,this.me)})),this.server.onActive((async()=>{this.me.setSocketId("me"),await this.me.metadata(),this.emit("scope"),this.activeScope=!0})),this.packMessagingSystem()}async request(e,t){let{pack:n}=await this.EventPooling.request({type:"request/to",to:e,pack:t});return n}async response(e,t,n){this.WSTSProtocol.SendOnly({type:"response/to",to:e,pack:n,id:t})}packMessagingSystem(){this.EventPooling.signal("pack",(e=>{let{from:t,pack:n}=e;this.peer(t,!0).emit("pack",n)})),this.EventPooling.signal("request",(e=>{let{from:t,pack:n,id:r}=e,i={body:n,response:e=>{this.response(t,r,e)},peer:this.peer(t,!0)};this.peer(t,!0).emit("request",i),this.peer("me").emit("request",i)})),this.EventPooling.signal("pack/room",(e=>{let{from:t,pack:n}=e;this.room(t).emit("message",n)})),this.EventPooling.signal("room/joined",(e=>{let{id:t,roomid:n}=e,r=this.room(n),i=this.peer(t,!0);r.peers.set(i.socketId,i),r.emit("join",i)})),this.EventPooling.signal("room/ejected",(e=>{let{id:t,roomid:n}=e,r=this.room(n),i=this.peer(t);r.peers.delete(i.socketId),r.emit("eject",i)})),this.EventPooling.signal("room/closed",(e=>{let{roomid:t}=e,n=this.room(t);n.peers.clear(),n.emit("close"),this.rooms.delete(t)})),this.EventPooling.signal("pair/info",(e=>{let{from:t,name:n,value:r}=e,i=this.peer(t);i.info.info[n]=r,i.emit("info",n,r)}))}room(e){if("string"==typeof e&&this.rooms.has(e))return this.rooms.get(e);let t=new ve(this);return t.setRoomOptions(e),this.emit("room"),t}peer(e,t=!1){if("string"==typeof e){if(this.peers.has(e))return this.peers.get(e);if(this.pairs.has(e))return this.pairs.get(e)}let n=new fe(this);return n.setPeerOptions(e),n.active=t,this.peers.set(n.socketId,n),this.emit("peer",n),n}}})();
|
|
//# sourceMappingURL=index.js.map
|