usc-rtc-client 1.0.2 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- function e(e,t,i,n){return new(i||(i=Promise))((function(s,r){function o(e){try{c(n.next(e))}catch(e){r(e)}}function a(e){try{c(n.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))}var t,i,n,s,r;!function(e){e.bye="bye",e.stream="stream",e.reInvite="reInvite",e.localAudioChange="localAudioChange",e.localVideoChange="localVideoChange",e.localStreamChange="localStreamChange"}(t||(t={})),function(e){e.connected="connected",e.disconnected="disconnected",e.invite="invite"}(i||(i={})),function(e){e.PTTInfo="PTTInfo",e.FPREInfo="FPREInfo",e.IMSInfo="IMSInfo",e.ERROR="error",e.SPEAKER="speaker",e.TALKING="talking",e.ACTIVE_GROUP="activeGroup",e.JOIN_INFO="joinInfo"}(n||(n={})),function(e){e.MESSAGE_TYPE_REGISTER="REGISTER",e.MESSAGE_TYPE_INVITE="INVITE",e.MESSAGE_TYPE_REINVITE="reINVITE",e.MESSAGE_TYPE_ICE="ICE",e.MESSAGE_TYPE_INFO="INFO",e.MESSAGE_TYPE_BYE="BYE"}(s||(s={})),function(e){e.FPRE="fpre",e.IMS="ims",e.PTT_QUERY_ONLINE_USER="15",e.PTT_ANSWER_ONLINE_USER="115",e.PTT_QUERY_INFO="16",e.PTT_QUERY_INFO_CONFIRM="116"}(r||(r={}));const o=e=>{void 0!==e&&(e.pause(),e.removeAttribute("src"),e.removeAttribute("srcObject"))},a=(e,t)=>{void 0!==e&&void 0!==t&&(t.srcObject=e,t.play())},c=e=>{e.onaddtrack=null,e.onremovetrack=null,e.getTracks().forEach((t=>{null==e||e.removeTrack(t),t.onended=null,t.onmute=null,t.onunmute=null,t.stop()}))};let d=!1;const h=(e,...t)=>{d&&console.log(`%c usc-rtc-devtools %c ${e} %c `,"background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#41b883 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)},l=()=>{d=!1},u=()=>{d=!0};var v,f,p;function m(){}function g(){g.init.call(this)}function k(e){return void 0===e._maxListeners?g.defaultMaxListeners:e._maxListeners}function y(e,t,i){if(t)e.call(i);else for(var n=e.length,s=L(e,n),r=0;r<n;++r)s[r].call(i)}function C(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=L(e,s),o=0;o<s;++o)r[o].call(i,n)}function T(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=L(e,r),a=0;a<r;++a)o[a].call(i,n,s)}function w(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=L(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}function b(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=L(e,s),o=0;o<s;++o)r[o].apply(i,n)}function E(e,t,i,n){var s,r,o,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),r=e._events),o=r[t]):(r=e._events=new m,e._eventsCount=0),o){if("function"==typeof o?o=r[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),!o.warned&&(s=k(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=r[t]=i,++e._eventsCount;return e}function S(e,t,i){var n=!1;function s(){e.removeListener(t,s),n||(n=!0,i.apply(e,arguments))}return s.listener=i,s}function _(e){var t=this._events;if(t){var i=t[e];if("function"==typeof i)return 1;if(i)return i.length}return 0}function L(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}m.prototype=Object.create(null),g.EventEmitter=g,g.usingDomains=!1,g.prototype.domain=void 0,g.prototype._events=void 0,g.prototype._maxListeners=void 0,g.defaultMaxListeners=10,g.init=function(){this.domain=null,g.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new m,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},g.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},g.prototype.getMaxListeners=function(){return k(this)},g.prototype.emit=function(e){var t,i,n,s,r,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(i=o[e]))return!1;var h="function"==typeof i;switch(n=arguments.length){case 1:y(i,h,this);break;case 2:C(i,h,this,arguments[1]);break;case 3:T(i,h,this,arguments[1],arguments[2]);break;case 4:w(i,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),r=1;r<n;r++)s[r-1]=arguments[r];b(i,h,this,s)}return!0},g.prototype.addListener=function(e,t){return E(this,e,t,!1)},g.prototype.on=g.prototype.addListener,g.prototype.prependListener=function(e,t){return E(this,e,t,!0)},g.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,S(this,e,t)),this},g.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,S(this,e,t)),this},g.prototype.removeListener=function(e,t){var i,n,s,r,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(i=n[e]))return this;if(i===t||i.listener&&i.listener===t)0==--this._eventsCount?this._events=new m:(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(s=-1,r=i.length;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){o=i[r].listener,s=r;break}if(s<0)return this;if(1===i.length){if(i[0]=void 0,0==--this._eventsCount)return this._events=new m,this;delete n[e]}else!function(e,t){for(var i=t,n=i+1,s=e.length;n<s;i+=1,n+=1)e[i]=e[n];e.pop()}(i,s);n.removeListener&&this.emit("removeListener",e,o||t)}return this},g.prototype.off=function(e,t){return this.removeListener(e,t)},g.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new m,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new m:delete i[e]),this;if(0===arguments.length){for(var n,s=Object.keys(i),r=0;r<s.length;++r)"removeListener"!==(n=s[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new m,this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},g.prototype.listeners=function(e){var t,i=this._events;return i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(t):[]},g.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):_.call(e,t)},g.prototype.listenerCount=_,g.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class I extends g{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{max:1920},height:{max:1080},frameRate:{ideal:20,max:30}},this.audioConstrants={noiseSuppression:!0,echoCancellation:!0,autoGainControl:!0},super.setMaxListeners(0)}releaseTrack(e){var t;void 0!==e&&(null===(t=this.localMediaStream)||void 0===t||t.removeTrack(e),e.stop())}addDeviceChangeListener(e){navigator.mediaDevices.addEventListener("devicechange",e)}removeDeviceChangeListener(e){navigator.mediaDevices.removeEventListener("devicechange",e)}setVideoTrack(e){var i;this.emit(t.localVideoChange,{from:this.videoTrack,to:e}),this.videoTrack!==e&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(e),this.localTractChange(this.videoTrack,e)),this.videoTrack=e}setAudioTrack(e){var i;this.emit(t.localAudioChange,{from:this.audioTrack,to:e}),this.audioTrack!==e&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(e),this.localTractChange(this.audioTrack,e)),this.audioTrack=e}renderLocalStreamToContainer(e){a(this.localMediaStream,e)}getAllInputResource(){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.enumerateDevices();return{audio:e.filter((e=>"audioinput"===e.kind)),video:e.filter((e=>"videoinput"===e.kind))}}))}useDefaultDevice(t){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0});this.setAudioTrack(e.getAudioTracks()[0]),this.setVideoTrack(e.getVideoTracks()[0]),this.renderLocalStreamToContainer(t)}))}useAudio(t){return e(this,void 0,void 0,(function*(){let e=void 0===t?{audio:Object.assign({},this.audioConstrants),video:!1}:{video:!1,audio:Object.assign({deviceId:t},this.audioConstrants)},i=yield navigator.mediaDevices.getUserMedia(e);return this.setAudioTrack(i.getAudioTracks()[0]),i.getAudioTracks()[0]}))}useDeviceVideo(t){return e(this,void 0,void 0,(function*(){let e=void 0===t?{audio:!1,video:Object.assign({},this.videoConstrains)}:{audio:!1,video:Object.assign({deviceId:t},this.videoConstrains)},i=yield navigator.mediaDevices.getUserMedia(e);return this.setVideoTrack(i.getVideoTracks()[0]),i.getVideoTracks()[0]}))}useDeskTopVideo(){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.getDisplayMedia({video:Object.assign({},this.videoConstrains),audio:!1});return this.setVideoTrack(e.getVideoTracks()[0]),e.getVideoTracks()[0]}))}disableAudio(){void 0!==this.audioTrack&&this.audioTrack.enabled&&(h("local audio status change",this.audioTrack),this.audioTrack.enabled=!1,this.setAudioTrack(this.audioTrack))}enableAudio(){void 0===this.audioTrack||this.audioTrack.enabled||(h("local audio status change",this.audioTrack),this.audioTrack.enabled=!0,this.setAudioTrack(this.audioTrack))}disableVideo(){void 0!==this.videoTrack&&this.videoTrack.enabled&&(h("local video status change",this.videoTrack),this.videoTrack.enabled=!1,this.setVideoTrack(this.videoTrack))}enableVideo(){void 0===this.videoTrack||this.videoTrack.enabled||(h("local video status change",this.videoTrack),this.videoTrack.enabled=!0,this.setVideoTrack(this.videoTrack))}close(){this.releaseTrack(this.audioTrack),this.releaseTrack(this.videoTrack),this.audioTrack=void 0,this.videoTrack=void 0,this.localMediaStream=void 0}}class R extends I{constructor(){super(),this.videoCodecs=[],this.audioCodecs=[],this.audioReciveCodecs=[],this.preferCodec(),this.peerConnection=this.buildConnection()}buildConnection(){let e=new RTCPeerConnection;return e.addEventListener("connectionstatechange",(e=>h("connectionstatechange",e))),e.addEventListener("icecandidate",(e=>{h("icecandidate",e),this.onIceCandidate(e)})),e.addEventListener("datachannel",(e=>h("datachannel",e))),e.addEventListener("icecandidateerror",(e=>h("icecandidateerror",e))),e.addEventListener("iceconnectionstatechange",(e=>h("iceconnectionstatechange",e))),e.addEventListener("icegatheringstatechange",(e=>h("icegatheringstatechange",e))),e.addEventListener("negotiationneeded",(e=>h("negotiationneeded",e))),e.addEventListener("signalingstatechange",(e=>h("signalingstatechange",e))),e.addEventListener("track",(e=>this.reciveTrack(e))),e}localTractChange(t,i){return e(this,void 0,void 0,(function*(){if(void 0!==this.remoteStream&&void 0!==this.peerConnection)if(void 0!==i){let e=this.peerConnection.getSenders().find((e=>{var t;return(null===(t=e.track)||void 0===t?void 0:t.kind)===i.kind}));void 0!==e&&e.replaceTrack(i)}else{let e=this.peerConnection.getSenders().find((e=>{var i;return(null===(i=e.track)||void 0===i?void 0:i.kind)===(null==t?void 0:t.kind)}));void 0!==e&&this.peerConnection.removeTrack(e)}void 0!==i&&(i.onended=e=>h("local track end",e),i.onmute=e=>{h("local mute",e),this.emitLocalStreamChange()},i.onunmute=e=>{h("local unmute",e),this.emitLocalStreamChange()}),this.releaseTrack(t),this.emitLocalStreamChange()}))}isInMeeting(){return void 0!==this.remoteStream}hasRemoteVideo(e){var t;return null!==(t=null==e?void 0:e.getVideoTracks().some((e=>!1===e.muted&&"live"===e.readyState)))&&void 0!==t&&t}emitLocalStreamChange(){this.emit(t.localStreamChange,{audioOnly:!this.hasRemoteVideo(this.localMediaStream),stream:this.localMediaStream})}emitRemoteStreamChange(){this.emit(t.stream,{audioOnly:!this.hasRemoteVideo(this.remoteStream),stream:this.remoteStream})}trigerStreamChange(e=100){void 0!==this.emitStreamTimeout&&clearTimeout(this.emitStreamTimeout),this.emitStreamTimeout=setTimeout((()=>{this.emitRemoteStreamChange(),this.emitStreamTimeout=void 0}),e)}reciveTrack(e){h("recive track",e),void 0===this.remoteStream&&(this.remoteStream=new MediaStream),e.track.addEventListener("ended",(()=>this.trigerStreamChange())),e.track.addEventListener("mute",(()=>this.trigerStreamChange(3e3))),e.track.addEventListener("unmute",(()=>this.trigerStreamChange(10))),this.remoteStream.addTrack(e.track),this.trigerStreamChange()}preferCodec(e="H264",t="PCMA"){this.videoCodecs=[];let i=RTCRtpSender.getCapabilities("video");null!==i&&this.videoCodecs.push(...i.codecs.filter((t=>t.mimeType===`video/${e}`)));let n=RTCRtpReceiver.getCapabilities("video");null!==n&&this.videoCodecs.push(...n.codecs.filter((t=>t.mimeType===`video/${e}`))),this.audioCodecs=[];let s=RTCRtpSender.getCapabilities("audio");null!==s&&this.audioCodecs.push(...s.codecs.filter((e=>e.mimeType===`audio/${t}`)));let r=RTCRtpReceiver.getCapabilities("audio");null!==r&&this.audioCodecs.push(...r.codecs.filter((e=>e.mimeType===`audio/${t}`)))}trackIsInPeerConnection(e){var t,i;return null!==(i=null===(t=this.peerConnection)||void 0===t?void 0:t.getSenders().some((t=>{var i;return(null===(i=t.track)||void 0===i?void 0:i.id)===e.id})))&&void 0!==i&&i}updateTracks(){if(void 0===this.peerConnection||"closed"===this.peerConnection.signalingState)throw new Error("session is closed !");if(void 0===this.audioTrack&&void 0===this.videoCodecs)throw new Error("no input found");if(void 0!==this.audioTrack&&!this.trackIsInPeerConnection(this.audioTrack))try{this.peerConnection.addTrack(this.audioTrack)}catch(e){}if(void 0!==this.videoTrack&&!this.trackIsInPeerConnection(this.videoTrack))try{this.peerConnection.addTrack(this.videoTrack)}catch(e){}try{this.peerConnection.getTransceivers().forEach((e=>{null!==e.sender.track&&("video"===e.sender.track.kind?e.setCodecPreferences([...this.videoCodecs]):"audio"===e.sender.track.kind&&e.setCodecPreferences([...this.audioCodecs]))}))}catch(e){((e,...t)=>{d&&console.log(`%c usc-rtc-devtools %c ${e} %c `,"background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#ff0000 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)})("preferCodec error",e,this.audioCodecs,this.videoCodecs)}}createOffer(){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");this.updateTracks();let e=yield this.peerConnection.createOffer();return e=class{static formatOffer(e){let{sdp:t}=e;if(void 0===t)throw new Error("offer sdp is empty");return t=t.split("\r\n").filter((e=>-1===e.indexOf("a=group:BUNDLE"))).join("\r\n"),e.sdp=t,e}}.formatOffer(e),yield this.peerConnection.setLocalDescription(e),e}))}setOffer(t){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"offer",sdp:t})}))}createAnswer(){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");this.updateTracks();let e=yield this.peerConnection.createAnswer();return this.peerConnection.setLocalDescription(e),e}))}setAnswer(t){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"answer",sdp:t})}))}setRemoteIce(e){if(void 0===this.peerConnection)throw new Error("session is closed !");let t=new RTCIceCandidate(e);this.peerConnection.addIceCandidate(t)}closeConnection(e){e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e.onsignalingstatechange=null,e.onicegatheringstatechange=null,e.onnegotiationneeded=null,e.onicecandidateerror=null,e.ondatachannel=null,e.onconnectionstatechange=null}close(){super.close(),void 0!==this.peerConnection&&(this.closeConnection(this.peerConnection),this.peerConnection=void 0),void 0!==this.remoteStream&&c(this.remoteStream)}}!function(e){e[e.timeout=408]="timeout",e[e.reject=488]="reject",e[e.busy=486]="busy",e[e.notfound=404]="notfound",e[e.notAllowedMedia=415]="notAllowedMedia",e[e.ok=200]="ok"}(v||(v={}));class x extends R{constructor(e,t,i){super(),this.sessionId=t,this.rtcClient=e,this.remoteNumber=i}reciveIceRequest({ice:e}){this.setRemoteIce(JSON.parse(e))}getRemoteNumber(){return this.remoteNumber}onIceCandidate(e){}destory(e=!0){this.removeAllListeners(),void 0!==this.rtcClient&&(void 0!==this.remoteNumber&&(e&&this.rtcClient.sendBye(this.remoteNumber,this.sessionId),this.remoteNumber=void 0),this.rtcClient.removeSession(this)),this.rtcClient=void 0,super.close()}rejectCall(){let[e,t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq);e.answer(v.reject,i,t,this.sessionId),this.destory()}acceptCall(){return e(this,void 0,void 0,(function*(){if(void 0!==this.inviteOffer){yield this.setOffer(this.inviteOffer);let[e,t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq),{sdp:n}=yield this.createAnswer();e.answer(v.ok,i,t,this.sessionId,n)}}))}pickNewConnection(){return e(this,void 0,void 0,(function*(){void 0!==this.peerConnection&&this.closeConnection(this.peerConnection),this.peerConnection=this.buildConnection(),void 0!==this.remoteStream&&(c(this.remoteStream),this.remoteStream=void 0,this.acceptCall())}))}checkIsNotUndefined(...e){for(const t of e)if(void 0===t)throw new Error("someone is undefined");return e}sendDtmf(t){var i;return e(this,void 0,void 0,(function*(){null===(i=this.rtcClient)||void 0===i||i.sendDtmf(this.remoteNumber,this.sessionId,t)}))}}!function(e){e.audio="audio",e.video="video",e.audioVideo="audioVideo",e.unknown="unknown"}(f||(f={}));class M extends x{constructor(){super(...arguments),this.responseCallType=f.unknown}start(){return e(this,void 0,void 0,(function*(){let[e,t]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber),i=yield this.createOffer(),{status:n,sdp:s}=yield e.invite(t,this.sessionId,i.sdp);n===v.ok&&(yield this.setAnswer(s));const r=s.split("\r\n"),o=r.find((e=>e.startsWith("m=audio"))),a=r.find((e=>e.startsWith("m=video")));return this.responseCallType=o&&a?f.audioVideo:o?f.audio:a?f.video:f.unknown,n}))}addRemote(e){this.remoteNumber=e}}class N{constructor(e,t,i,n){this.req=e,this.seq=N.seqNum++,this.from=t,this.to=i,this.registerid=`${N.random}@${t}`,void 0!==n&&Object.assign(this,n)}}N.random=String(Date.now()),N.seqNum=1,function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(p||(p={}));var G=null;try{var P="undefined"!=typeof module&&"function"==typeof module.require&&module.require("worker_threads")||"function"==typeof __non_webpack_require__&&__non_webpack_require__("worker_threads")||"function"==typeof require&&require("worker_threads");G=P.Worker}catch(e){}function A(e,t,i){var n=void 0===t?null:t,s=function(e,t){return Buffer.from(e,"base64").toString(t?"utf16":"utf8")}(e,void 0!==i&&i),r=s.indexOf("\n",10)+1,o=s.substring(r)+(n?"//# sourceMappingURL="+n:"");return function(e){return new G(o,Object.assign({},e,{eval:!0}))}}function O(e,t,i){var n=void 0===t?null:t,s=function(e,t){var i=atob(e);if(t){for(var n=new Uint8Array(i.length),s=0,r=i.length;s<r;++s)n[s]=i.charCodeAt(s);return String.fromCharCode.apply(null,new Uint16Array(n.buffer))}return i}(e,void 0!==i&&i),r=s.indexOf("\n",10)+1,o=s.substring(r)+(n?"//# sourceMappingURL="+n:""),a=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(a)}var V="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var Y,W,j,U=(Y="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGY7c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24ocyl7Y29uc3QgYT1zLmRhdGE7c3dpdGNoKGEuY21kKXtjYXNlInN0YXJ0IjpzZWxmLnBvc3RNZXNzYWdlKHt0eXBlOiJ3ZWJXb3JrZXIiLGRhdGE6IuWQr+WKqHdlYldvcmtlciJ9KSxvKGEudXJsKTticmVhaztjYXNlInN0b3AiOnQ9ITAsZS5jbG9zZSgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5YGc5q2id2ViV29ya2VyIn0pLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImNsb3NlIixkYXRhOiJjbG9zZSIrKG5ldyBEYXRlKS50b1RpbWVTdHJpbmcoKX0pLHNlbGYuY2xvc2UoKTticmVhaztjYXNlIm1zZyI6MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KGEuZGF0YSkpfX0pLCExKTtjb25zdCBvPWZ1bmN0aW9uKHQpe2V8fChlPW5ldyBXZWJTb2NrZXQodCksZS5vbmVycm9yPWZ1bmN0aW9uKGUpe2EodCl9LGUub25jbG9zZT1mdW5jdGlvbihlKXthKHQpfSxlLm9ub3Blbj1lPT57cy5wb3N0TWVzc2FnZSh7dHlwZToib3BlbiIsZGF0YToic3RhcnQiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KX0sZS5vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9SlNPTi5wYXJzZShlLmRhdGEpO3MucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYlNvY2tldCIsZGF0YTp0fSl9KX07ZnVuY3Rpb24gYShzKXt0fHwodD0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbCxvKHMpLHQ9ITF9KSwyZTMpKX19KCk7Cgo=",W=null,j=!1,V?A(Y,W,j):function(e,t,i){var n;return function(s){return n=n||O(e,t,i),new Worker(n,s)}}(Y,W,j));class Z extends g{constructor(e,t){super(),this.server=e,this.ws=new U,this.configHeartBeat(t)}connect(){this.initWebsocket(),this.ws.onmessage=e=>{const{type:t,data:i}=e.data;switch(t){case"webSocket":return h("websocket recive message ",i),void this.emit(p.message,i);case"open":return h("websocket connected ",this.server),void this.emit(p.connected)}}}configHeartBeat(e){this.ws.postMessage({cmd:"config",heartBeat:e})}initWebsocket(){this.ws.postMessage({cmd:"start",url:this.server})}send(e){this.ws.postMessage({cmd:"msg",data:e})}close(){this.ws.postMessage({cmd:"close"})}sendMessage(e){h("websocket send message ",e),void 0!==e&&void 0!==this.ws&&this.ws.postMessage({cmd:"msg",data:e})}}class D extends g{constructor(e,t,i){super(),this.activeServer="",this.server=e,this.localNumber=t,this.expireTime=i,super.setMaxListeners(0)}testWs(t){return e(this,void 0,void 0,(function*(){return t.reduce(((e,t)=>e.then((e=>Promise.resolve(e)),(e=>new Promise(((i,n)=>{const s=new WebSocket(t);s.onopen=()=>{e.push(t),s.close(),i(e)},s.onclose=()=>{n(e)}}))))),Promise.reject([])).then((e=>Promise.resolve(e)),(e=>Promise.resolve(e)))}))}reConnect(){return e(this,void 0,void 0,(function*(){this.destory();let e=[];void 0!==this.server&&(e="string"==typeof this.server?[this.server]:this.server);const t=yield this.testWs(e);return new Promise(((e,i)=>{if(t.length>0){this.activeServer=t[0];let n=new Z(this.activeServer,new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime}));n.on(p.connected,(()=>{this.socketWorker=n,this.onConnected(),e()})),n.on(p.disconnected,(e=>{this.socketWorker=void 0,this.onDisConnected(e),i("socketWorker connecion failed")})),n.on(p.message,(e=>this.onReviceMessage(e))),n.connect()}else i("server is empty")}))}))}sendMessage(e){if(void 0===this.socketWorker)throw new Error("socketWorker is closed");this.socketWorker.sendMessage(e)}destory(){void 0!==this.socketWorker&&(this.unRegister(),this.socketWorker.close(),this.socketWorker=void 0)}}class K extends D{constructor(e,t,i){super(e,t,i),this.asyncProducer=new Map}sendRespondableMessage(t){return e(this,void 0,void 0,(function*(){return this.sendMessage(t),new Promise((e=>this.asyncProducer.set(t.seq,e)))}))}getAsyncResolve(e){let t=this.asyncProducer.get(e);return void 0!==t&&this.asyncProducer.delete(e),t}onDisConnected(e){this.asyncProducer.clear(),this.emit(i.disconnected,e)}onReviceMessage(e){var t;let{status:i,seq:n}=e;void 0!==i?null===(t=this.getAsyncResolve(n))||void 0===t||t.call(void 0,e):this.processMessage(e)}}class q extends K{register(){return e(this,void 0,void 0,(function*(){let e=new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:0});this.sendMessage(e)}invite(t,i,n){return e(this,void 0,void 0,(function*(){return this.sendRespondableMessage(new N(s.MESSAGE_TYPE_INVITE,this.localNumber,t,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new N(s.MESSAGE_TYPE_BYE,this.localNumber,e,{cid:t}))}answer(e,t,i,n,s){this.sendMessage({status:e,seq:t,from:i,to:this.localNumber,cid:n,sdp:s})}sendPttMessage(e){this.sendMessage(e)}sendDtmf(t,i,n){return e(this,void 0,void 0,(function*(){return this.sendMessage(new N(s.MESSAGE_TYPE_INFO,this.localNumber,t,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function X(){}function z(){z.init.call(this)}function B(e){return void 0===e._maxListeners?z.defaultMaxListeners:e._maxListeners}function F(e,t,i){if(t)e.call(i);else for(var n=e.length,s=ne(e,n),r=0;r<n;++r)s[r].call(i)}function H(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=ne(e,s),o=0;o<s;++o)r[o].call(i,n)}function $(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=ne(e,r),a=0;a<r;++a)o[a].call(i,n,s)}function J(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=ne(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}function Q(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=ne(e,s),o=0;o<s;++o)r[o].apply(i,n)}function ee(e,t,i,n){var s,r,o,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),r=e._events),o=r[t]):(r=e._events=new X,e._eventsCount=0),o){if("function"==typeof o?o=r[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),!o.warned&&(s=B(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=r[t]=i,++e._eventsCount;return e}function te(e,t,i){var n=!1;function s(){e.removeListener(t,s),n||(n=!0,i.apply(e,arguments))}return s.listener=i,s}function ie(e){var t=this._events;if(t){var i=t[e];if("function"==typeof i)return 1;if(i)return i.length}return 0}function ne(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}X.prototype=Object.create(null),z.EventEmitter=z,z.usingDomains=!1,z.prototype.domain=void 0,z.prototype._events=void 0,z.prototype._maxListeners=void 0,z.defaultMaxListeners=10,z.init=function(){this.domain=null,z.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new X,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},z.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},z.prototype.getMaxListeners=function(){return B(this)},z.prototype.emit=function(e){var t,i,n,s,r,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(i=o[e]))return!1;var h="function"==typeof i;switch(n=arguments.length){case 1:F(i,h,this);break;case 2:H(i,h,this,arguments[1]);break;case 3:$(i,h,this,arguments[1],arguments[2]);break;case 4:J(i,h,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),r=1;r<n;r++)s[r-1]=arguments[r];Q(i,h,this,s)}return!0},z.prototype.addListener=function(e,t){return ee(this,e,t,!1)},z.prototype.on=z.prototype.addListener,z.prototype.prependListener=function(e,t){return ee(this,e,t,!0)},z.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,te(this,e,t)),this},z.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,te(this,e,t)),this},z.prototype.removeListener=function(e,t){var i,n,s,r,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(i=n[e]))return this;if(i===t||i.listener&&i.listener===t)0==--this._eventsCount?this._events=new X:(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(s=-1,r=i.length;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){o=i[r].listener,s=r;break}if(s<0)return this;if(1===i.length){if(i[0]=void 0,0==--this._eventsCount)return this._events=new X,this;delete n[e]}else!function(e,t){for(var i=t,n=i+1,s=e.length;n<s;i+=1,n+=1)e[i]=e[n];e.pop()}(i,s);n.removeListener&&this.emit("removeListener",e,o||t)}return this},z.prototype.off=function(e,t){return this.removeListener(e,t)},z.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new X,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new X:delete i[e]),this;if(0===arguments.length){for(var n,s=Object.keys(i),r=0;r<s.length;++r)"removeListener"!==(n=s[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new X,this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},z.prototype.listeners=function(e){var t,i=this._events;return i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(t):[]},z.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ie.call(e,t)},z.prototype.listenerCount=ie,z.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const se="error",re="speaker",oe="talking",ae="activeGroup",ce="joinInfo",de="disConnected",he={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},le="connected",ue="disconnected",ve="message",fe=(e,...t)=>{console.log(`%c usc-ptt-devtools %c ${e} %c `,"background:#16aae0 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#14e04e ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)},pe=(e,...t)=>{console.log(`%c usc-ptt-devtools %c ${e} %c `,"background:#16aae0 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#e02514 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)};class me extends z{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{fe("websocket connected ",this.server),this.emit(le)},this.ws.onclose=()=>{fe("websocket disconnected ",this.server),this.ws=void 0,this.emit(ue)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);fe("websocket recive message ",t),this.emit(ve,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){fe("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class ge extends z{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return pe("服务器地址为空!");this.server=e,this.heartTime=t,this.autoReconnect=i}async initClient(){return this.destorySocket(),new Promise(((e,t)=>{if(void 0!==this.server){let i=new me(this.server);i.on(le,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(ue,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit(de),t("socket connecion failed")})),i.on(ve,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){fe(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,fe(`${this.speaker}正在说话`),this.emit(re,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,fe(`加入组${this.activeGroup}`)):(this.activeGroup="",pe(he[n.code]),this.emit(se,he[n.code])),this.emit(ae,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,fe(`talking:${this.talking}`),this.emit(oe,this.talking)),14===t&&(this.speaker="",fe(`${this.speaker}停止说话`),this.emit(re,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};fe(`${e}进入组`),this.emit(ce,e)}}joinGroup(e,t,i,n){this.socket&&(this.waitinggroup=e,this.sendMessage({req:1,group:e,user:t,ptts:i,port:n}))}quitGroup(){this.socket&&(this.activeGroup="",this.emit(ae,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,fe(`talking:${this.talking}`),this.emit(oe,this.talking),this.socket&&this.sendMessage({req:4})}sendMessage(e){if(void 0===this.socket)throw new Error("socket is closed");this.socket.sendMessage(e)}destorySocket(){void 0!==this.socket&&(this.socket.close(),this.socket=void 0)}destory(){this.destorySocket()}}class ke extends q{constructor(e){let t=e.expireTime||ke.defaultExpireTime;super(e.server,e.localNumber,t),this.heartTime=e.heartTime||this.expireTime/4,this.enablePtt=e.enablePtt,this.pttServer=e.pttServer}initPttClient(){return e(this,void 0,void 0,(function*(){if(this.enablePtt){if(!this.pttServer)return Promise.reject("pttServer不存在");{const e=yield(async(e,t=20,i=!0)=>{let n=new ge(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on(ae,(e=>{this.emit(ae,e)})),e.on(re,(e=>{this.emit(re,e)})),e.on(oe,(e=>{this.emit(oe,e)})),e.on(ce,(e=>{this.emit(ce,e)})),e.on(de,(e=>{this.emit(de,e)})),this.pttClient=e}}}))}joinGroup(e,t,i,n){var s;null===(s=this.pttClient)||void 0===s||s.joinGroup(e,t,i,n)}quitGroup(){var e;null===(e=this.pttClient)||void 0===e||e.quitGroup()}talk(){var e;null===(e=this.pttClient)||void 0===e||e.talk()}stop(){var e;null===(e=this.pttClient)||void 0===e||e.stop()}onConnected(){}onDisConnected(){super.onDisConnected()}}ke.defaultExpireTime=60;class ye extends x{constructor(e,t,i,n,s){super(e,t,i),this.callType=f.unknown,this.inviteSeq=s,this.inviteOffer=n;const r=n.split("\r\n"),o=r.find((e=>e.startsWith("m=audio"))),a=r.find((e=>e.startsWith("m=video")));this.callType=o&&a?f.audioVideo:o?f.audio:a?f.video:f.unknown}}class Ce extends ke{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new M(this,((e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),""))(),e);return this.allSession.push(t),t}processMessage(e){var o;let{req:a}=e;if(a===s.MESSAGE_TYPE_INVITE){let t=new ye(this,e.cid,e.from,e.sdp,e.seq);this.allSession.push(t),this.emit(i.invite,t)}else if(a===s.MESSAGE_TYPE_REINVITE){let i=this.allSession.find((t=>t.sessionId==e.cid));void 0!==i&&(i.inviteSeq=e.seq,i.inviteOffer=e.sdp,i.acceptCall(),i.emit(t.reInvite,i))}else if(a===s.MESSAGE_TYPE_ICE)null===(o=this.allSession.find((t=>t.sessionId===e.cid)))||void 0===o||o.reciveIceRequest(e);else if(a===s.MESSAGE_TYPE_BYE){let i=this.allSession.find((t=>t.sessionId===e.cid));void 0!==i&&(i.emit(t.bye),i.destory(!1))}a==r.FPRE&&this.emit(n.FPREInfo,e),a==r.IMS&&this.emit(n.IMSInfo,e)}destory(){void 0!==this.allSession&&this.allSession.forEach((e=>{e.destory()})),super.destory()}removeSession(e){void 0!==this.allSession&&(this.allSession=this.allSession.filter((t=>t.sessionId!==e.sessionId)))}onDisConnected(){super.onDisConnected(),this.destory()}}const Te=t=>e(void 0,void 0,void 0,(function*(){let e=new Ce(t);yield e.reConnect(),yield e.initPttClient().catch((e=>{console.error(e)})),N.random=String(Date.now());let i=yield e.register();return i.status===v.ok?e:(e.destory(),Promise.reject(i))})),we=()=>e(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})}));export{n as PTTEvent,f as RtcCalledType,Ce as RtcClient,i as RtcClientEvent,v as RtcInviteStatus,t as RtcSessionEvent,we as authDevice,Te as createRtcClient,l as disableLog,u as enableLog,o as releaseStreamFromContainer,a as renderStreamToContainer};
1
+ function e(e,t,i,n){return new(i||(i=Promise))((function(s,r){function o(e){try{c(n.next(e))}catch(e){r(e)}}function a(e){try{c(n.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?s(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))}var t,i,n,s,r;!function(e){e.bye="bye",e.stream="stream",e.reInvite="reInvite",e.localAudioChange="localAudioChange",e.localVideoChange="localVideoChange",e.localStreamChange="localStreamChange"}(t||(t={})),function(e){e.connected="connected",e.disconnected="disconnected",e.invite="invite"}(i||(i={})),function(e){e.PTTInfo="PTTInfo",e.FPREInfo="FPREInfo",e.IMSInfo="IMSInfo",e.ERROR="error",e.SPEAKER="speaker",e.TALKING="talking",e.ACTIVE_GROUP="activeGroup",e.JOIN_INFO="joinInfo"}(n||(n={})),function(e){e.MESSAGE_TYPE_REGISTER="REGISTER",e.MESSAGE_TYPE_INVITE="INVITE",e.MESSAGE_TYPE_REINVITE="reINVITE",e.MESSAGE_TYPE_ICE="ICE",e.MESSAGE_TYPE_INFO="INFO",e.MESSAGE_TYPE_BYE="BYE"}(s||(s={})),function(e){e.FPRE="fpre",e.IMS="ims",e.PTT_QUERY_ONLINE_USER="15",e.PTT_ANSWER_ONLINE_USER="115",e.PTT_QUERY_INFO="16",e.PTT_QUERY_INFO_CONFIRM="116"}(r||(r={}));const o=e=>{void 0!==e&&(e.pause(),e.removeAttribute("src"),e.removeAttribute("srcObject"))},a=(e,t)=>{void 0!==e&&void 0!==t&&(t.srcObject=e,t.play())},c=e=>{e.onaddtrack=null,e.onremovetrack=null,e.getTracks().forEach((t=>{null==e||e.removeTrack(t),t.onended=null,t.onmute=null,t.onunmute=null,t.stop()}))};let d=!1;const l=(e,...t)=>{d&&console.log(`%c usc-rtc-devtools %c ${e} %c `,"background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#41b883 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)},h=()=>{d=!1},u=()=>{d=!0};var v,f,p;function m(){}function g(){g.init.call(this)}function k(e){return void 0===e._maxListeners?g.defaultMaxListeners:e._maxListeners}function y(e,t,i){if(t)e.call(i);else for(var n=e.length,s=_(e,n),r=0;r<n;++r)s[r].call(i)}function w(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=_(e,s),o=0;o<s;++o)r[o].call(i,n)}function C(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=_(e,r),a=0;a<r;++a)o[a].call(i,n,s)}function T(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=_(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}function b(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=_(e,s),o=0;o<s;++o)r[o].apply(i,n)}function S(e,t,i,n){var s,r,o,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),r=e._events),o=r[t]):(r=e._events=new m,e._eventsCount=0),o){if("function"==typeof o?o=r[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),!o.warned&&(s=k(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=r[t]=i,++e._eventsCount;return e}function E(e,t,i){var n=!1;function s(){e.removeListener(t,s),n||(n=!0,i.apply(e,arguments))}return s.listener=i,s}function L(e){var t=this._events;if(t){var i=t[e];if("function"==typeof i)return 1;if(i)return i.length}return 0}function _(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}m.prototype=Object.create(null),g.EventEmitter=g,g.usingDomains=!1,g.prototype.domain=void 0,g.prototype._events=void 0,g.prototype._maxListeners=void 0,g.defaultMaxListeners=10,g.init=function(){this.domain=null,g.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new m,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},g.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},g.prototype.getMaxListeners=function(){return k(this)},g.prototype.emit=function(e){var t,i,n,s,r,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(i=o[e]))return!1;var l="function"==typeof i;switch(n=arguments.length){case 1:y(i,l,this);break;case 2:w(i,l,this,arguments[1]);break;case 3:C(i,l,this,arguments[1],arguments[2]);break;case 4:T(i,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),r=1;r<n;r++)s[r-1]=arguments[r];b(i,l,this,s)}return!0},g.prototype.addListener=function(e,t){return S(this,e,t,!1)},g.prototype.on=g.prototype.addListener,g.prototype.prependListener=function(e,t){return S(this,e,t,!0)},g.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,E(this,e,t)),this},g.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,E(this,e,t)),this},g.prototype.removeListener=function(e,t){var i,n,s,r,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(i=n[e]))return this;if(i===t||i.listener&&i.listener===t)0==--this._eventsCount?this._events=new m:(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(s=-1,r=i.length;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){o=i[r].listener,s=r;break}if(s<0)return this;if(1===i.length){if(i[0]=void 0,0==--this._eventsCount)return this._events=new m,this;delete n[e]}else!function(e,t){for(var i=t,n=i+1,s=e.length;n<s;i+=1,n+=1)e[i]=e[n];e.pop()}(i,s);n.removeListener&&this.emit("removeListener",e,o||t)}return this},g.prototype.off=function(e,t){return this.removeListener(e,t)},g.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new m,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new m:delete i[e]),this;if(0===arguments.length){for(var n,s=Object.keys(i),r=0;r<s.length;++r)"removeListener"!==(n=s[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new m,this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},g.prototype.listeners=function(e){var t,i=this._events;return i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(t):[]},g.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):L.call(e,t)},g.prototype.listenerCount=L,g.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class R extends g{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{max:1920},height:{max:1080},frameRate:{ideal:20,max:30}},this.audioConstrants={noiseSuppression:!0,echoCancellation:!0,autoGainControl:!0},super.setMaxListeners(0)}releaseTrack(e){var t;void 0!==e&&(null===(t=this.localMediaStream)||void 0===t||t.removeTrack(e),e.stop())}addDeviceChangeListener(e){navigator.mediaDevices.addEventListener("devicechange",e)}removeDeviceChangeListener(e){navigator.mediaDevices.removeEventListener("devicechange",e)}setVideoTrack(e){var i;this.emit(t.localVideoChange,{from:this.videoTrack,to:e}),this.videoTrack!==e&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(e),this.localTractChange(this.videoTrack,e)),this.videoTrack=e}setAudioTrack(e){var i;this.emit(t.localAudioChange,{from:this.audioTrack,to:e}),this.audioTrack!==e&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(e),this.localTractChange(this.audioTrack,e)),this.audioTrack=e}renderLocalStreamToContainer(e){a(this.localMediaStream,e)}getAllInputResource(){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.enumerateDevices();return{audio:e.filter((e=>"audioinput"===e.kind)),video:e.filter((e=>"videoinput"===e.kind))}}))}useDefaultDevice(t){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0});this.setAudioTrack(e.getAudioTracks()[0]),this.setVideoTrack(e.getVideoTracks()[0]),this.renderLocalStreamToContainer(t)}))}useAudio(t){return e(this,void 0,void 0,(function*(){let e=void 0===t?{audio:Object.assign({},this.audioConstrants),video:!1}:{video:!1,audio:Object.assign({deviceId:t},this.audioConstrants)},i=yield navigator.mediaDevices.getUserMedia(e);return this.setAudioTrack(i.getAudioTracks()[0]),i.getAudioTracks()[0]}))}useDeviceVideo(t){return e(this,void 0,void 0,(function*(){let e=void 0===t?{audio:!1,video:Object.assign({},this.videoConstrains)}:{audio:!1,video:Object.assign({deviceId:t},this.videoConstrains)},i=yield navigator.mediaDevices.getUserMedia(e);return this.setVideoTrack(i.getVideoTracks()[0]),i.getVideoTracks()[0]}))}useDeskTopVideo(){return e(this,void 0,void 0,(function*(){let e=yield navigator.mediaDevices.getDisplayMedia({video:Object.assign({},this.videoConstrains),audio:!1});return this.setVideoTrack(e.getVideoTracks()[0]),e.getVideoTracks()[0]}))}disableAudio(){void 0!==this.audioTrack&&this.audioTrack.enabled&&(l("local audio status change",this.audioTrack),this.audioTrack.enabled=!1,this.setAudioTrack(this.audioTrack))}enableAudio(){void 0===this.audioTrack||this.audioTrack.enabled||(l("local audio status change",this.audioTrack),this.audioTrack.enabled=!0,this.setAudioTrack(this.audioTrack))}disableVideo(){void 0!==this.videoTrack&&this.videoTrack.enabled&&(l("local video status change",this.videoTrack),this.videoTrack.enabled=!1,this.setVideoTrack(this.videoTrack))}enableVideo(){void 0===this.videoTrack||this.videoTrack.enabled||(l("local video status change",this.videoTrack),this.videoTrack.enabled=!0,this.setVideoTrack(this.videoTrack))}close(){this.releaseTrack(this.audioTrack),this.releaseTrack(this.videoTrack),this.audioTrack=void 0,this.videoTrack=void 0,this.localMediaStream=void 0}}class x extends R{constructor(){super(),this.videoCodecs=[],this.audioCodecs=[],this.audioReciveCodecs=[],this.preferCodec(),this.peerConnection=this.buildConnection()}buildConnection(){let e=new RTCPeerConnection;return e.addEventListener("connectionstatechange",(e=>l("connectionstatechange",e))),e.addEventListener("icecandidate",(e=>{l("icecandidate",e),this.onIceCandidate(e)})),e.addEventListener("datachannel",(e=>l("datachannel",e))),e.addEventListener("icecandidateerror",(e=>l("icecandidateerror",e))),e.addEventListener("iceconnectionstatechange",(e=>l("iceconnectionstatechange",e))),e.addEventListener("icegatheringstatechange",(e=>l("icegatheringstatechange",e))),e.addEventListener("negotiationneeded",(e=>l("negotiationneeded",e))),e.addEventListener("signalingstatechange",(e=>l("signalingstatechange",e))),e.addEventListener("track",(e=>this.reciveTrack(e))),e}localTractChange(t,i){return e(this,void 0,void 0,(function*(){if(void 0!==this.remoteStream&&void 0!==this.peerConnection)if(void 0!==i){let e=this.peerConnection.getSenders().find((e=>{var t;return(null===(t=e.track)||void 0===t?void 0:t.kind)===i.kind}));void 0!==e&&e.replaceTrack(i)}else{let e=this.peerConnection.getSenders().find((e=>{var i;return(null===(i=e.track)||void 0===i?void 0:i.kind)===(null==t?void 0:t.kind)}));void 0!==e&&this.peerConnection.removeTrack(e)}void 0!==i&&(i.onended=e=>l("local track end",e),i.onmute=e=>{l("local mute",e),this.emitLocalStreamChange()},i.onunmute=e=>{l("local unmute",e),this.emitLocalStreamChange()}),this.releaseTrack(t),this.emitLocalStreamChange()}))}isInMeeting(){return void 0!==this.remoteStream}hasRemoteVideo(e){var t;return null!==(t=null==e?void 0:e.getVideoTracks().some((e=>!1===e.muted&&"live"===e.readyState)))&&void 0!==t&&t}emitLocalStreamChange(){this.emit(t.localStreamChange,{audioOnly:!this.hasRemoteVideo(this.localMediaStream),stream:this.localMediaStream})}emitRemoteStreamChange(){this.emit(t.stream,{audioOnly:!this.hasRemoteVideo(this.remoteStream),stream:this.remoteStream})}trigerStreamChange(e=100){void 0!==this.emitStreamTimeout&&clearTimeout(this.emitStreamTimeout),this.emitStreamTimeout=setTimeout((()=>{this.emitRemoteStreamChange(),this.emitStreamTimeout=void 0}),e)}reciveTrack(e){l("recive track",e),void 0===this.remoteStream&&(this.remoteStream=new MediaStream),e.track.addEventListener("ended",(()=>this.trigerStreamChange())),e.track.addEventListener("mute",(()=>this.trigerStreamChange(3e3))),e.track.addEventListener("unmute",(()=>this.trigerStreamChange(10))),this.remoteStream.addTrack(e.track),this.trigerStreamChange()}preferCodec(e="H264",t="PCMA"){this.videoCodecs=[];let i=RTCRtpSender.getCapabilities("video");null!==i&&this.videoCodecs.push(...i.codecs.filter((t=>t.mimeType===`video/${e}`)));let n=RTCRtpReceiver.getCapabilities("video");null!==n&&this.videoCodecs.push(...n.codecs.filter((t=>t.mimeType===`video/${e}`))),this.audioCodecs=[];let s=RTCRtpSender.getCapabilities("audio");null!==s&&this.audioCodecs.push(...s.codecs.filter((e=>e.mimeType===`audio/${t}`)));let r=RTCRtpReceiver.getCapabilities("audio");null!==r&&this.audioCodecs.push(...r.codecs.filter((e=>e.mimeType===`audio/${t}`)))}trackIsInPeerConnection(e){var t,i;return null!==(i=null===(t=this.peerConnection)||void 0===t?void 0:t.getSenders().some((t=>{var i;return(null===(i=t.track)||void 0===i?void 0:i.id)===e.id})))&&void 0!==i&&i}updateTracks(){if(void 0===this.peerConnection||"closed"===this.peerConnection.signalingState)throw new Error("session is closed !");if(void 0===this.audioTrack&&void 0===this.videoCodecs)throw new Error("no input found");if(void 0!==this.audioTrack&&!this.trackIsInPeerConnection(this.audioTrack))try{this.peerConnection.addTrack(this.audioTrack)}catch(e){}if(void 0!==this.videoTrack&&!this.trackIsInPeerConnection(this.videoTrack))try{this.peerConnection.addTrack(this.videoTrack)}catch(e){}try{this.peerConnection.getTransceivers().forEach((e=>{null!==e.sender.track&&("video"===e.sender.track.kind?e.setCodecPreferences([...this.videoCodecs]):"audio"===e.sender.track.kind&&e.setCodecPreferences([...this.audioCodecs]))}))}catch(e){((e,...t)=>{d&&console.log(`%c usc-rtc-devtools %c ${e} %c `,"background:#35495e ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#ff0000 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)})("preferCodec error",e,this.audioCodecs,this.videoCodecs)}}createOffer(){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");this.updateTracks();let e=yield this.peerConnection.createOffer();return e=class{static formatOffer(e){let{sdp:t}=e;if(void 0===t)throw new Error("offer sdp is empty");return t=t.split("\r\n").filter((e=>-1===e.indexOf("a=group:BUNDLE"))).join("\r\n"),e.sdp=t,e}}.formatOffer(e),yield this.peerConnection.setLocalDescription(e),e}))}setOffer(t){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"offer",sdp:t})}))}createAnswer(){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");this.updateTracks();let e=yield this.peerConnection.createAnswer();return this.peerConnection.setLocalDescription(e),e}))}setAnswer(t){return e(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"answer",sdp:t})}))}setRemoteIce(e){if(void 0===this.peerConnection)throw new Error("session is closed !");let t=new RTCIceCandidate(e);this.peerConnection.addIceCandidate(t)}closeConnection(e){e.close(),e.ontrack=null,e.onicecandidate=null,e.oniceconnectionstatechange=null,e.onsignalingstatechange=null,e.onicegatheringstatechange=null,e.onnegotiationneeded=null,e.onicecandidateerror=null,e.ondatachannel=null,e.onconnectionstatechange=null}close(){super.close(),void 0!==this.peerConnection&&(this.closeConnection(this.peerConnection),this.peerConnection=void 0),void 0!==this.remoteStream&&c(this.remoteStream)}}!function(e){e[e.timeout=408]="timeout",e[e.reject=488]="reject",e[e.busy=486]="busy",e[e.notfound=404]="notfound",e[e.notAllowedMedia=415]="notAllowedMedia",e[e.ok=200]="ok"}(v||(v={}));class I extends x{constructor(e,t,i){super(),this.sessionId=t,this.rtcClient=e,this.remoteNumber=i}reciveIceRequest({ice:e}){this.setRemoteIce(JSON.parse(e))}getRemoteNumber(){return this.remoteNumber}onIceCandidate(e){}destory(e=!0){this.removeAllListeners(),void 0!==this.rtcClient&&(void 0!==this.remoteNumber&&(e&&this.rtcClient.sendBye(this.remoteNumber,this.sessionId),this.remoteNumber=void 0),this.rtcClient.removeSession(this)),this.rtcClient=void 0,super.close()}rejectCall(){let[e,t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq);e.answer(v.reject,i,t,this.sessionId),this.destory()}acceptCall(){return e(this,void 0,void 0,(function*(){if(void 0!==this.inviteOffer){yield this.setOffer(this.inviteOffer);let[e,t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq),{sdp:n}=yield this.createAnswer();e.answer(v.ok,i,t,this.sessionId,n)}}))}pickNewConnection(){return e(this,void 0,void 0,(function*(){void 0!==this.peerConnection&&this.closeConnection(this.peerConnection),this.peerConnection=this.buildConnection(),void 0!==this.remoteStream&&(c(this.remoteStream),this.remoteStream=void 0,this.acceptCall())}))}checkIsNotUndefined(...e){for(const t of e)if(void 0===t)throw new Error("someone is undefined");return e}sendDtmf(t){var i;return e(this,void 0,void 0,(function*(){null===(i=this.rtcClient)||void 0===i||i.sendDtmf(this.remoteNumber,this.sessionId,t)}))}}!function(e){e.audio="audio",e.video="video",e.audioVideo="audioVideo",e.unknown="unknown"}(f||(f={}));class M extends I{constructor(){super(...arguments),this.responseCallType=f.unknown}start(){return e(this,void 0,void 0,(function*(){let[e,t]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber),i=yield this.createOffer(),{status:n,sdp:s}=yield e.invite(t,this.sessionId,i.sdp);n===v.ok&&(yield this.setAnswer(s));const r=s.split("\r\n"),o=r.find((e=>e.startsWith("m=audio"))),a=r.find((e=>e.startsWith("m=video")));return this.responseCallType=o&&a?f.audioVideo:o?f.audio:a?f.video:f.unknown,n}))}addRemote(e){this.remoteNumber=e}}class N{constructor(e,t,i,n){this.req=e,this.seq=N.seqNum++,this.from=t,this.to=i,this.registerid=`${N.random}@${t}`,void 0!==n&&Object.assign(this,n)}}N.random=String(Date.now()),N.seqNum=1,function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(p||(p={}));var G=null;try{var P="undefined"!=typeof module&&"function"==typeof module.require&&module.require("worker_threads")||"function"==typeof __non_webpack_require__&&__non_webpack_require__("worker_threads")||"function"==typeof require&&require("worker_threads");G=P.Worker}catch(e){}function W(e,t,i){var n=void 0===t?null:t,s=function(e,t){return Buffer.from(e,"base64").toString(t?"utf16":"utf8")}(e,void 0!==i&&i),r=s.indexOf("\n",10)+1,o=s.substring(r)+(n?"//# sourceMappingURL="+n:"");return function(e){return new G(o,Object.assign({},e,{eval:!0}))}}function Z(e,t,i){var n=void 0===t?null:t,s=function(e,t){var i=atob(e);if(t){for(var n=new Uint8Array(i.length),s=0,r=i.length;s<r;++s)n[s]=i.charCodeAt(s);return String.fromCharCode.apply(null,new Uint16Array(n.buffer))}return i}(e,void 0!==i&&i),r=s.indexOf("\n",10)+1,o=s.substring(r)+(n?"//# sourceMappingURL="+n:""),a=new Blob([o],{type:"application/javascript"});return URL.createObjectURL(a)}var V="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var A,Y,O,U=(A="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGYsYT17fSxuPXt0aW1lb3V0OjVlMyx0aW1lb3V0T2JqOm51bGwscmVzZXQoKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXRPYmopLHRoaXN9LHJlZ2lzdGVyKCl7MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KFJlZ2lzdGVyKSl9LHNlbmRPbmxpbmUoKXsxPT09ZS5yZWFkeVN0YXRlJiZlLnNlbmQoSlNPTi5zdHJpbmdpZnkoYSkpfSxzdGFydCgpe3RoaXMudGltZW91dE9iaj1zZXRJbnRlcnZhbCgoKCk9Pnt0aGlzLnNlbmRPbmxpbmUoKX0pLHRoaXMudGltZW91dCl9fTtsZXQgbz0xMDtzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbihzKXtjb25zdCBpPXMuZGF0YTtzd2l0Y2goaS5jbWQpe2Nhc2UiY29uZmlnIjpPYmplY3QuYXNzaWduKGEsaS5oZWFydEJlYXQse3NlcTpvKyt9KSxuLnRpbWVvdXQ9MWUzKmkuaGVhcnRUaW1lfHw1ZTM7YnJlYWs7Y2FzZSJzdGFydCI6c2VsZi5wb3N0TWVzc2FnZSh7dHlwZToid2ViV29ya2VyIixkYXRhOiLlkK/liqh3ZWJXb3JrZXIifSkscihpLnVybCk7YnJlYWs7Y2FzZSJzdG9wIjp0PSEwLGUuY2xvc2UoKSxzZWxmLnBvc3RNZXNzYWdlKHt0eXBlOiJ3ZWJXb3JrZXIiLGRhdGE6IuWBnOatondlYldvcmtlciJ9KSxzZWxmLnBvc3RNZXNzYWdlKHt0eXBlOiJjbG9zZSIsZGF0YToiY2xvc2UiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KSxzZWxmLmNsb3NlKCk7YnJlYWs7Y2FzZSJtc2ciOjE9PT1lLnJlYWR5U3RhdGUmJmUuc2VuZChKU09OLnN0cmluZ2lmeShpLmRhdGEpKX19KSwhMSk7Y29uc3Qgcj1mdW5jdGlvbih0KXtlfHwoZT1uZXcgV2ViU29ja2V0KHQpLGUub25lcnJvcj1mdW5jdGlvbihlKXtpKHQpfSxlLm9uY2xvc2U9ZnVuY3Rpb24oZSl7aSh0KX0sZS5vbm9wZW49ZT0+e3MucG9zdE1lc3NhZ2Uoe3R5cGU6Im9wZW4iLGRhdGE6InN0YXJ0IisobmV3IERhdGUpLnRvVGltZVN0cmluZygpfSksbi5yZXNldCgpLnN0YXJ0KCl9LGUub25tZXNzYWdlPWU9Pntjb25zdCB0PUpTT04ucGFyc2UoZS5kYXRhKTtzLnBvc3RNZXNzYWdlKHt0eXBlOiJ3ZWJTb2NrZXQiLGRhdGE6dH0pfSl9O2Z1bmN0aW9uIGkocyl7dHx8KHQ9ITAsc2V0VGltZW91dCgoZnVuY3Rpb24oKXtlPW51bGwscihzKSx0PSExfSksMmUzKSl9fSgpOwoK",Y=null,O=!1,V?W(A,Y,O):function(e,t,i){var n;return function(s){return n=n||Z(e,t,i),new Worker(n,s)}}(A,Y,O));class j extends g{constructor(e,t,i){super(),this.server=e,this.ws=new U,this.configHeartBeat(t,i)}connect(){this.initWebsocket(),this.ws.onmessage=e=>{const{type:t,data:i}=e.data;switch(t){case"webSocket":return l("websocket recive message ",i),void this.emit(p.message,i);case"open":return l("websocket connected ",this.server),void this.emit(p.connected)}}}configHeartBeat(e,t){l("websocket heartBeat",e),l("websocket heartTime ",t),this.ws.postMessage({cmd:"config",heartBeat:e,heartTime:t})}initWebsocket(){this.ws.postMessage({cmd:"start",url:this.server})}send(e){this.ws.postMessage({cmd:"msg",data:e})}close(){this.ws.postMessage({cmd:"close"})}sendMessage(e){l("websocket send message ",e),void 0!==e&&void 0!==this.ws&&this.ws.postMessage({cmd:"msg",data:e})}}class X extends g{constructor(e,t,i,n){super(),this.activeServer="",this.server=e,this.localNumber=t,this.expireTime=i,this.heartTime=n,super.setMaxListeners(0)}testWs(t){return e(this,void 0,void 0,(function*(){return t.reduce(((e,t)=>e.then((e=>Promise.resolve(e)),(e=>new Promise(((i,n)=>{const s=new WebSocket(t);s.onopen=()=>{e.push(t),s.close(),i(e)},s.onclose=()=>{n(e)}}))))),Promise.reject([])).then((e=>Promise.resolve(e)),(e=>Promise.resolve(e)))}))}reConnect(){return e(this,void 0,void 0,(function*(){this.destory();let e=[];void 0!==this.server&&(e="string"==typeof this.server?[this.server]:this.server);const t=yield this.testWs(e);return new Promise(((e,i)=>{if(t.length>0){this.activeServer=t[0];let n=new j(this.activeServer,new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime}),this.heartTime);n.on(p.connected,(()=>{this.socketWorker=n,this.onConnected(),e()})),n.on(p.disconnected,(e=>{this.socketWorker=void 0,this.onDisConnected(e),i("socketWorker connecion failed")})),n.on(p.message,(e=>this.onReviceMessage(e))),n.connect()}else i("server is empty")}))}))}sendMessage(e){if(void 0===this.socketWorker)throw new Error("socketWorker is closed");this.socketWorker.sendMessage(e)}destory(){void 0!==this.socketWorker&&(this.unRegister(),this.socketWorker.close(),this.socketWorker=void 0)}}class K extends X{constructor(){super(...arguments),this.asyncProducer=new Map}sendRespondableMessage(t){return e(this,void 0,void 0,(function*(){return this.sendMessage(t),new Promise((e=>this.asyncProducer.set(t.seq,e)))}))}getAsyncResolve(e){let t=this.asyncProducer.get(e);return void 0!==t&&this.asyncProducer.delete(e),t}onDisConnected(e){this.asyncProducer.clear(),this.emit(i.disconnected,e)}onReviceMessage(e){var t;let{status:i,seq:n}=e;void 0!==i?null===(t=this.getAsyncResolve(n))||void 0===t||t.call(void 0,e):this.processMessage(e)}}class D extends K{register(){return e(this,void 0,void 0,(function*(){let e=new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new N(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:0});this.sendMessage(e)}invite(t,i,n){return e(this,void 0,void 0,(function*(){return this.sendRespondableMessage(new N(s.MESSAGE_TYPE_INVITE,this.localNumber,t,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new N(s.MESSAGE_TYPE_BYE,this.localNumber,e,{cid:t}))}answer(e,t,i,n,s){this.sendMessage({status:e,seq:t,from:i,to:this.localNumber,cid:n,sdp:s})}sendPttMessage(e){this.sendMessage(e)}sendDtmf(t,i,n){return e(this,void 0,void 0,(function*(){return this.sendMessage(new N(s.MESSAGE_TYPE_INFO,this.localNumber,t,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function z(){}function q(){q.init.call(this)}function J(e){return void 0===e._maxListeners?q.defaultMaxListeners:e._maxListeners}function F(e,t,i){if(t)e.call(i);else for(var n=e.length,s=ne(e,n),r=0;r<n;++r)s[r].call(i)}function B(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=ne(e,s),o=0;o<s;++o)r[o].call(i,n)}function H(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=ne(e,r),a=0;a<r;++a)o[a].call(i,n,s)}function $(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=ne(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}function Q(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=ne(e,s),o=0;o<s;++o)r[o].apply(i,n)}function ee(e,t,i,n){var s,r,o,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((r=e._events)?(r.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),r=e._events),o=r[t]):(r=e._events=new z,e._eventsCount=0),o){if("function"==typeof o?o=r[t]=n?[i,o]:[o,i]:n?o.unshift(i):o.push(i),!o.warned&&(s=J(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=r[t]=i,++e._eventsCount;return e}function te(e,t,i){var n=!1;function s(){e.removeListener(t,s),n||(n=!0,i.apply(e,arguments))}return s.listener=i,s}function ie(e){var t=this._events;if(t){var i=t[e];if("function"==typeof i)return 1;if(i)return i.length}return 0}function ne(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}z.prototype=Object.create(null),q.EventEmitter=q,q.usingDomains=!1,q.prototype.domain=void 0,q.prototype._events=void 0,q.prototype._maxListeners=void 0,q.defaultMaxListeners=10,q.init=function(){this.domain=null,q.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new z,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},q.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},q.prototype.getMaxListeners=function(){return J(this)},q.prototype.emit=function(e){var t,i,n,s,r,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(i=o[e]))return!1;var l="function"==typeof i;switch(n=arguments.length){case 1:F(i,l,this);break;case 2:B(i,l,this,arguments[1]);break;case 3:H(i,l,this,arguments[1],arguments[2]);break;case 4:$(i,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),r=1;r<n;r++)s[r-1]=arguments[r];Q(i,l,this,s)}return!0},q.prototype.addListener=function(e,t){return ee(this,e,t,!1)},q.prototype.on=q.prototype.addListener,q.prototype.prependListener=function(e,t){return ee(this,e,t,!0)},q.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,te(this,e,t)),this},q.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,te(this,e,t)),this},q.prototype.removeListener=function(e,t){var i,n,s,r,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(n=this._events))return this;if(!(i=n[e]))return this;if(i===t||i.listener&&i.listener===t)0==--this._eventsCount?this._events=new z:(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(s=-1,r=i.length;r-- >0;)if(i[r]===t||i[r].listener&&i[r].listener===t){o=i[r].listener,s=r;break}if(s<0)return this;if(1===i.length){if(i[0]=void 0,0==--this._eventsCount)return this._events=new z,this;delete n[e]}else!function(e,t){for(var i=t,n=i+1,s=e.length;n<s;i+=1,n+=1)e[i]=e[n];e.pop()}(i,s);n.removeListener&&this.emit("removeListener",e,o||t)}return this},q.prototype.off=function(e,t){return this.removeListener(e,t)},q.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new z,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new z:delete i[e]),this;if(0===arguments.length){for(var n,s=Object.keys(i),r=0;r<s.length;++r)"removeListener"!==(n=s[r])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new z,this._eventsCount=0,this}if("function"==typeof(t=i[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},q.prototype.listeners=function(e){var t,i=this._events;return i&&(t=i[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),i=0;i<t.length;++i)t[i]=e[i].listener||e[i];return t}(t):[]},q.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):ie.call(e,t)},q.prototype.listenerCount=ie,q.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const se="error",re="speaker",oe="talking",ae="activeGroup",ce="joinInfo",de="disConnected",le={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},he="connected",ue="disconnected",ve="message",fe=(e,...t)=>{console.log(`%c usc-ptt-devtools %c ${e} %c `,"background:#16aae0 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#14e04e ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)},pe=(e,...t)=>{console.log(`%c usc-ptt-devtools %c ${e} %c `,"background:#16aae0 ; padding: 1px; border-radius: 3px 0 0 3px; color: #fff","background:#e02514 ; padding: 1px; border-radius: 0 3px 3px 0; color: #fff","background:transparent",...t)};class me extends q{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{fe("websocket connected ",this.server),this.emit(he)},this.ws.onclose=()=>{fe("websocket disconnected ",this.server),this.ws=void 0,this.emit(ue)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);fe("websocket recive message ",t),this.emit(ve,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){fe("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class ge extends q{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return pe("服务器地址为空!");this.server=e,this.heartTime=t,this.autoReconnect=i}async initClient(){return this.destorySocket(),new Promise(((e,t)=>{if(void 0!==this.server){let i=new me(this.server);i.on(he,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(ue,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit(de),t("socket connecion failed")})),i.on(ve,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){fe(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,fe(`${this.speaker}正在说话`),this.emit(re,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,fe(`加入组${this.activeGroup}`)):(this.activeGroup="",pe(le[n.code]),this.emit(se,le[n.code])),this.emit(ae,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,fe(`talking:${this.talking}`),this.emit(oe,this.talking)),14===t&&(this.speaker="",fe(`${this.speaker}停止说话`),this.emit(re,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};fe(`${e}进入组`),this.emit(ce,e)}}joinGroup(e,t,i,n){this.socket&&(this.waitinggroup=e,this.sendMessage({req:1,group:e,user:t,ptts:i,port:n}))}quitGroup(){this.socket&&(this.activeGroup="",this.emit(ae,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,fe(`talking:${this.talking}`),this.emit(oe,this.talking),this.socket&&this.sendMessage({req:4})}sendMessage(e){if(void 0===this.socket)throw new Error("socket is closed");this.socket.sendMessage(e)}destorySocket(){void 0!==this.socket&&(this.socket.close(),this.socket=void 0)}destory(){this.destorySocket()}}class ke extends D{constructor(e){let t=e.expireTime||ke.defaultExpireTime;super(e.server,e.localNumber,t,e.heartTime||5),this.enablePtt=e.enablePtt,this.pttServer=e.pttServer}initPttClient(){return e(this,void 0,void 0,(function*(){if(this.enablePtt){if(!this.pttServer)return Promise.reject("pttServer不存在");{const e=yield(async(e,t=20,i=!0)=>{let n=new ge(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on(ae,(e=>{this.emit(ae,e)})),e.on(re,(e=>{this.emit(re,e)})),e.on(oe,(e=>{this.emit(oe,e)})),e.on(ce,(e=>{this.emit(ce,e)})),e.on(de,(e=>{this.emit(de,e)})),this.pttClient=e}}}))}joinGroup(e,t,i,n){var s;null===(s=this.pttClient)||void 0===s||s.joinGroup(e,t,i,n)}quitGroup(){var e;null===(e=this.pttClient)||void 0===e||e.quitGroup()}talk(){var e;null===(e=this.pttClient)||void 0===e||e.talk()}stop(){var e;null===(e=this.pttClient)||void 0===e||e.stop()}onConnected(){}onDisConnected(){super.onDisConnected()}}ke.defaultExpireTime=60;class ye extends I{constructor(e,t,i,n,s){super(e,t,i),this.callType=f.unknown,this.inviteSeq=s,this.inviteOffer=n;const r=n.split("\r\n"),o=r.find((e=>e.startsWith("m=audio"))),a=r.find((e=>e.startsWith("m=video")));this.callType=o&&a?f.audioVideo:o?f.audio:a?f.video:f.unknown}}class we extends ke{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new M(this,((e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+((t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_")),""))(),e);return this.allSession.push(t),t}processMessage(e){var o;let{req:a}=e;if(a===s.MESSAGE_TYPE_INVITE){let t=new ye(this,e.cid,e.from,e.sdp,e.seq);this.allSession.push(t),this.emit(i.invite,t)}else if(a===s.MESSAGE_TYPE_REINVITE){let i=this.allSession.find((t=>t.sessionId==e.cid));void 0!==i&&(i.inviteSeq=e.seq,i.inviteOffer=e.sdp,i.acceptCall(),i.emit(t.reInvite,i))}else if(a===s.MESSAGE_TYPE_ICE)null===(o=this.allSession.find((t=>t.sessionId===e.cid)))||void 0===o||o.reciveIceRequest(e);else if(a===s.MESSAGE_TYPE_BYE){let i=this.allSession.find((t=>t.sessionId===e.cid));void 0!==i&&(i.emit(t.bye),i.destory(!1))}a==r.FPRE&&this.emit(n.FPREInfo,e),a==r.IMS&&this.emit(n.IMSInfo,e)}destory(){void 0!==this.allSession&&this.allSession.forEach((e=>{e.destory()})),super.destory()}removeSession(e){void 0!==this.allSession&&(this.allSession=this.allSession.filter((t=>t.sessionId!==e.sessionId)))}onDisConnected(){super.onDisConnected(),this.destory()}}const Ce=t=>e(void 0,void 0,void 0,(function*(){let e=new we(t);yield e.reConnect(),yield e.initPttClient().catch((e=>{console.error(e)})),N.random=String(Date.now());let i=yield e.register();return i.status===v.ok?e:(e.destory(),Promise.reject(i))})),Te=()=>e(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})}));export{n as PTTEvent,f as RtcCalledType,we as RtcClient,i as RtcClientEvent,v as RtcInviteStatus,t as RtcSessionEvent,Te as authDevice,Ce as createRtcClient,h as disableLog,u as enableLog,o as releaseStreamFromContainer,a as renderStreamToContainer};
2
2
  //# sourceMappingURL=index.esm.js.map