usc-rtc-client 1.1.5 → 1.1.6
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 +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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"==typeof SuppressedError&&SuppressedError,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};class v{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}}var f,p,m;function g(){}function k(){k.init.call(this)}function y(e){return void 0===e._maxListeners?k.defaultMaxListeners:e._maxListeners}function C(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 g,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=y(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 T(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 b(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 w(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}g.prototype=Object.create(null),k.EventEmitter=k,k.usingDomains=!1,k.prototype.domain=void 0,k.prototype._events=void 0,k.prototype._maxListeners=void 0,k.defaultMaxListeners=10,k.init=function(){this.domain=null,k.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new g,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},k.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},k.prototype.getMaxListeners=function(){return y(this)},k.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=w(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=w(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=w(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=w(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=w(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},k.prototype.addListener=function(e,t){return C(this,e,t,!1)},k.prototype.on=k.prototype.addListener,k.prototype.prependListener=function(e,t){return C(this,e,t,!0)},k.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,T(this,e,t)),this},k.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,T(this,e,t)),this},k.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 g:(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 g,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},k.prototype.off=function(e,t){return this.removeListener(e,t)},k.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new g,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new g: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 g,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},k.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):[]},k.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):b.call(e,t)},k.prototype.listenerCount=b,k.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class S extends k{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:20,max:30},aspectRatio:{ideal:16/9}},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 E extends S{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=v.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"}(f||(f={}));class _ extends E{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(f.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(f.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"}(p||(p={}));class L extends _{constructor(){super(...arguments),this.responseCallType=p.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);if(n===f.ok){yield this.setAnswer(s);const e=s.split("\r\n"),t=e.find((e=>e.startsWith("m=audio"))),i=e.find((e=>e.startsWith("m=video")));this.responseCallType=t&&i?p.audioVideo:t?p.audio:i?p.video:p.unknown}return n}))}addRemote(e){this.remoteNumber=e}}class R{constructor(e,t,i,n){this.req=e,this.seq=R.seqNum++,this.from=t,this.to=i,this.registerid=`${R.random}@${t}`,void 0!==n&&Object.assign(this,n)}}R.random=String(Date.now()),R.seqNum=0,function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(m||(m={}));var I=null;try{var x="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");I=x.Worker}catch(e){}function M(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 I(o,Object.assign({},e,{eval:!0}))}}function N(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 G="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var P,V,W,Z=(P="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGYsYT17fSxuPXt0aW1lb3V0OjVlMyx0aW1lb3V0T2JqOm51bGwscmVzZXQoKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXRPYmopLHRoaXN9LHJlZ2lzdGVyKCl7MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KFJlZ2lzdGVyKSl9LHNlbmRPbmxpbmUoKXsxPT09ZS5yZWFkeVN0YXRlJiZlLnNlbmQoSlNPTi5zdHJpbmdpZnkoYSkpfSxzdGFydCgpe3RoaXMudGltZW91dE9iaj1zZXRJbnRlcnZhbCgoKCk9Pnt0aGlzLnNlbmRPbmxpbmUoKX0pLHRoaXMudGltZW91dCl9fTtsZXQgbz0yO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHMpe2NvbnN0IGk9cy5kYXRhO3N3aXRjaChpLmNtZCl7Y2FzZSJjb25maWciOk9iamVjdC5hc3NpZ24oYSxpLmhlYXJ0QmVhdCx7c2VxOm8rK30pLG4udGltZW91dD0xZTMqaS5oZWFydFRpbWV8fDVlMzticmVhaztjYXNlInN0YXJ0IjpzZWxmLnBvc3RNZXNzYWdlKHt0eXBlOiJ3ZWJXb3JrZXIiLGRhdGE6IuWQr+WKqHdlYldvcmtlciJ9KSxyKGkudXJsKTticmVhaztjYXNlInN0b3AiOnQ9ITAsZS5jbG9zZSgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5YGc5q2id2ViV29ya2VyIn0pLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImNsb3NlIixkYXRhOiJjbG9zZSIrKG5ldyBEYXRlKS50b1RpbWVTdHJpbmcoKX0pLHNlbGYuY2xvc2UoKTticmVhaztjYXNlIm1zZyI6MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KGkuZGF0YSkpfX0pLCExKTtjb25zdCByPWZ1bmN0aW9uKHQpe2V8fChlPW5ldyBXZWJTb2NrZXQodCksZS5vbmVycm9yPWZ1bmN0aW9uKGUpe2kodCl9LGUub25jbG9zZT1mdW5jdGlvbihlKXtpKHQpfSxlLm9ub3Blbj1lPT57cy5wb3N0TWVzc2FnZSh7dHlwZToib3BlbiIsZGF0YToic3RhcnQiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KSxuLnJlc2V0KCkuc3RhcnQoKX0sZS5vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9SlNPTi5wYXJzZShlLmRhdGEpO3MucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYlNvY2tldCIsZGF0YTp0fSl9KX07ZnVuY3Rpb24gaShzKXt0fHwodD0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbCxyKHMpLHQ9ITF9KSwyZTMpKX19KCk7Cgo=",V=null,W=!1,G?M(P,V,W):function(e,t,i){var n;return function(s){return n=n||N(e,t,i),new Worker(n,s)}}(P,V,W));class A extends k{constructor(e,t,i){super(),this.server=e,this.ws=new Z,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(m.message,i);case"open":return l("websocket connected ",this.server),void this.emit(m.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 O extends k{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 A(this.activeServer,new R(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime}),this.heartTime);n.on(m.connected,(()=>{this.socketWorker=n,this.onConnected(),e()})),n.on(m.disconnected,(e=>{this.socketWorker=void 0,this.onDisConnected(e),i("socketWorker connecion failed")})),n.on(m.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 Y extends O{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 j extends Y{register(){return e(this,void 0,void 0,(function*(){let e=new R(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new R(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 R(s.MESSAGE_TYPE_INVITE,this.localNumber,t,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new R(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 R(s.MESSAGE_TYPE_INFO,this.localNumber,t,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function U(){}function X(){X.init.call(this)}function K(e){return void 0===e._maxListeners?X.defaultMaxListeners:e._maxListeners}function D(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 U,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 q(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 z(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 F(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}U.prototype=Object.create(null),X.EventEmitter=X,X.usingDomains=!1,X.prototype.domain=void 0,X.prototype._events=void 0,X.prototype._maxListeners=void 0,X.defaultMaxListeners=10,X.init=function(){this.domain=null,X.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new U,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},X.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},X.prototype.getMaxListeners=function(){return K(this)},X.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=F(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=F(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=F(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=F(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=F(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},X.prototype.addListener=function(e,t){return D(this,e,t,!1)},X.prototype.on=X.prototype.addListener,X.prototype.prependListener=function(e,t){return D(this,e,t,!0)},X.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,q(this,e,t)),this},X.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,q(this,e,t)),this},X.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 U:(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 U,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},X.prototype.off=function(e,t){return this.removeListener(e,t)},X.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new U,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new U: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 U,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},X.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):[]},X.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):z.call(e,t)},X.prototype.listenerCount=z,X.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const H="error",J="speaker",B="talking",$="activeGroup",Q="joinInfo",ee="disConnected",te={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},ie="connected",ne="disconnected",se="message",re=(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)},oe=(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 ae extends X{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{re("websocket connected ",this.server),this.emit(ie)},this.ws.onclose=()=>{re("websocket disconnected ",this.server),this.ws=void 0,this.emit(ne)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);re("websocket recive message ",t),this.emit(se,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){re("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class ce extends X{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return oe("服务器地址为空!");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 ae(this.server);i.on(ie,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(ne,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit(ee),t("socket connecion failed")})),i.on(se,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){re(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,re(`${this.speaker}正在说话`),this.emit(J,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,re(`加入组${this.activeGroup}`)):(this.activeGroup="",oe(te[n.code]),this.emit(H,te[n.code])),this.emit($,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,re(`talking:${this.talking}`),this.emit(B,this.talking)),14===t&&(this.speaker="",re(`${this.speaker}停止说话`),this.emit(J,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};re(`${e}进入组`),this.emit(Q,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($,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,re(`talking:${this.talking}`),this.emit(B,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 de extends j{constructor(e){let t=e.expireTime||de.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 ce(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on($,(e=>{this.emit($,e)})),e.on(J,(e=>{this.emit(J,e)})),e.on(B,(e=>{this.emit(B,e)})),e.on(Q,(e=>{this.emit(Q,e)})),e.on(ee,(e=>{this.emit(ee,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()}}de.defaultExpireTime=60;class le extends _{constructor(e,t,i,n,s){super(e,t,i),this.callType=p.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?p.audioVideo:o?p.audio:a?p.video:p.unknown}}class he extends de{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new L(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 le(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 ue=t=>e(void 0,void 0,void 0,(function*(){let e=new he(t);yield e.reConnect(),yield e.initPttClient().catch((e=>{console.error(e)})),R.random=String(Date.now());let i=yield e.register();return i.status===f.ok?e:(e.destory(),Promise.reject(i))})),ve=()=>e(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})}));export{n as PTTEvent,p as RtcCalledType,he as RtcClient,i as RtcClientEvent,f as RtcInviteStatus,t as RtcSessionEvent,ve as authDevice,ue as createRtcClient,h 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"==typeof SuppressedError&&SuppressedError,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};class v{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}}var f,p,m;function g(){}function k(){k.init.call(this)}function y(e){return void 0===e._maxListeners?k.defaultMaxListeners:e._maxListeners}function C(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 g,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=y(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 T(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 b(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 w(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}g.prototype=Object.create(null),k.EventEmitter=k,k.usingDomains=!1,k.prototype.domain=void 0,k.prototype._events=void 0,k.prototype._maxListeners=void 0,k.defaultMaxListeners=10,k.init=function(){this.domain=null,k.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new g,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},k.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},k.prototype.getMaxListeners=function(){return y(this)},k.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=w(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=w(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=w(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=w(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=w(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},k.prototype.addListener=function(e,t){return C(this,e,t,!1)},k.prototype.on=k.prototype.addListener,k.prototype.prependListener=function(e,t){return C(this,e,t,!0)},k.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,T(this,e,t)),this},k.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,T(this,e,t)),this},k.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 g:(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 g,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},k.prototype.off=function(e,t){return this.removeListener(e,t)},k.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new g,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new g: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 g,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},k.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):[]},k.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):b.call(e,t)},k.prototype.listenerCount=b,k.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class S extends k{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:20,max:30},aspectRatio:{ideal:16/9}},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 E extends S{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=v.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"}(f||(f={}));class _ extends E{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(f.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(f.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"}(p||(p={}));class L extends _{constructor(){super(...arguments),this.responseCallType=p.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);if(n===f.ok){yield this.setAnswer(s);const e=s.split("\r\n"),t=e.find((e=>e.startsWith("m=audio"))),i=e.find((e=>e.startsWith("m=video")));this.responseCallType=t&&i?p.audioVideo:t?p.audio:i?p.video:p.unknown}return n}))}addRemote(e){this.remoteNumber=e}}class I{constructor(e,t,i,n){this.req=e,this.seq=0,this.from=t,this.to=i,this.registerid=`${I.random}@${t}`,void 0!==n&&Object.assign(this,n)}}I.random=String(Date.now()),function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(m||(m={}));var R=null;try{var N="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");R=N.Worker}catch(e){}function M(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 R(o,Object.assign({},e,{eval:!0}))}}function x(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 G="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var P,V,A,O=(P="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGYsYT17fSxuPXt0aW1lb3V0OjVlMyx0aW1lb3V0T2JqOm51bGwscmVzZXQoKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXRPYmopLHRoaXN9LHNlbmRPbmxpbmUoKXsxPT09ZS5yZWFkeVN0YXRlJiZlLnNlbmQoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmFzc2lnbihhLHtzZXE6KythLnNlcX0pKSl9LHN0YXJ0KCl7dGhpcy50aW1lb3V0T2JqPXNldEludGVydmFsKCgoKT0+e3RoaXMuc2VuZE9ubGluZSgpfSksdGhpcy50aW1lb3V0KX19O3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHMpe2NvbnN0IHI9cy5kYXRhO3N3aXRjaChyLmNtZCl7Y2FzZSJjb25maWciOk9iamVjdC5hc3NpZ24oYSxyLmhlYXJ0QmVhdCksbi50aW1lb3V0PTFlMypyLmhlYXJ0VGltZXx8NWUzO2JyZWFrO2Nhc2Uic3RhcnQiOnNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5ZCv5Yqod2ViV29ya2VyIn0pLG8oci51cmwpO2JyZWFrO2Nhc2UiY2xvc2UiOnQ9ITAsZS5jbG9zZSgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5YGc5q2id2ViV29ya2VyIn0pLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImNsb3NlIixkYXRhOiJjbG9zZSIrKG5ldyBEYXRlKS50b1RpbWVTdHJpbmcoKX0pLHNlbGYuY2xvc2UoKTticmVhaztjYXNlIm1zZyI6MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KHIuZGF0YSkpfX0pLCExKTtjb25zdCBvPWZ1bmN0aW9uKHQpe2V8fChlPW5ldyBXZWJTb2NrZXQodCksZS5vbmVycm9yPWZ1bmN0aW9uKGUpe3IodCl9LGUub25jbG9zZT1mdW5jdGlvbihlKXtyKHQpfSxlLm9ub3Blbj1lPT57cy5wb3N0TWVzc2FnZSh7dHlwZToib3BlbiIsZGF0YToic3RhcnQiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KSxuLnJlc2V0KCkuc3RhcnQoKX0sZS5vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9SlNPTi5wYXJzZShlLmRhdGEpO3MucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYlNvY2tldCIsZGF0YTp0fSl9KX07ZnVuY3Rpb24gcihzKXt0fHwodD0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbCxvKHMpLHQ9ITF9KSwyZTMpKX19KCk7Cgo=",V=null,A=!1,G?M(P,V,A):function(e,t,i){var n;return function(s){return n=n||x(e,t,i),new Worker(n,s)}}(P,V,A));class Y extends k{constructor(e,t,i){super(),this.server=e,this.ws=new O,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(m.message,i);case"open":return l("websocket connected ",this.server),void this.emit(m.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 W extends k{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 Y(this.activeServer,new I(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime}),this.heartTime);n.on(m.connected,(()=>{this.socketWorker=n,this.onConnected(),e()})),n.on(m.disconnected,(e=>{this.socketWorker=void 0,this.onDisConnected(e),i("socketWorker connecion failed")})),n.on(m.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 Z extends W{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 U extends Z{register(){return e(this,void 0,void 0,(function*(){let e=new I(s.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new I(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 I(s.MESSAGE_TYPE_INVITE,this.localNumber,t,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new I(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 I(s.MESSAGE_TYPE_INFO,this.localNumber,t,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function j(){}function X(){X.init.call(this)}function D(e){return void 0===e._maxListeners?X.defaultMaxListeners:e._maxListeners}function K(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 j,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=D(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 q(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 F(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 z(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}j.prototype=Object.create(null),X.EventEmitter=X,X.usingDomains=!1,X.prototype.domain=void 0,X.prototype._events=void 0,X.prototype._maxListeners=void 0,X.defaultMaxListeners=10,X.init=function(){this.domain=null,X.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new j,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},X.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},X.prototype.getMaxListeners=function(){return D(this)},X.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=z(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=z(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=z(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=z(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=z(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},X.prototype.addListener=function(e,t){return K(this,e,t,!1)},X.prototype.on=X.prototype.addListener,X.prototype.prependListener=function(e,t){return K(this,e,t,!0)},X.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,q(this,e,t)),this},X.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,q(this,e,t)),this},X.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 j:(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 j,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},X.prototype.off=function(e,t){return this.removeListener(e,t)},X.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new j,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new j: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 j,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},X.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):[]},X.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):F.call(e,t)},X.prototype.listenerCount=F,X.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const H="error",J="speaker",B="talking",$="activeGroup",Q="joinInfo",ee="disConnected",te={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},ie="connected",ne="disconnected",se="message",re=(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)},oe=(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 ae extends X{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{re("websocket connected ",this.server),this.emit(ie)},this.ws.onclose=()=>{re("websocket disconnected ",this.server),this.ws=void 0,this.emit(ne)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);re("websocket recive message ",t),this.emit(se,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){re("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class ce extends X{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return oe("服务器地址为空!");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 ae(this.server);i.on(ie,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(ne,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit(ee),t("socket connecion failed")})),i.on(se,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){re(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,re(`${this.speaker}正在说话`),this.emit(J,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,re(`加入组${this.activeGroup}`)):(this.activeGroup="",oe(te[n.code]),this.emit(H,te[n.code])),this.emit($,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,re(`talking:${this.talking}`),this.emit(B,this.talking)),14===t&&(this.speaker="",re(`${this.speaker}停止说话`),this.emit(J,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};re(`${e}进入组`),this.emit(Q,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($,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,re(`talking:${this.talking}`),this.emit(B,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 de extends U{constructor(e){let t=e.expireTime||de.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 ce(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on($,(e=>{this.emit($,e)})),e.on(J,(e=>{this.emit(J,e)})),e.on(B,(e=>{this.emit(B,e)})),e.on(Q,(e=>{this.emit(Q,e)})),e.on(ee,(e=>{this.emit(ee,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()}}de.defaultExpireTime=60;class le extends _{constructor(e,t,i,n,s){super(e,t,i),this.callType=p.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?p.audioVideo:o?p.audio:a?p.video:p.unknown}}class he extends de{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new L(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 le(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 ue=t=>e(void 0,void 0,void 0,(function*(){let e=new he(t);yield e.reConnect(),yield e.initPttClient().catch((e=>{console.error(e)})),I.random=String(Date.now());let i=yield e.register();return i.status===f.ok?e:(e.destory(),Promise.reject(i))})),ve=()=>e(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})}));export{n as PTTEvent,p as RtcCalledType,he as RtcClient,i as RtcClientEvent,f as RtcInviteStatus,t as RtcSessionEvent,ve as authDevice,ue as createRtcClient,h as disableLog,u as enableLog,o as releaseStreamFromContainer,a as renderStreamToContainer};
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).UscRtc={})}(this,(function(e){"use strict";function t(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 i,n,s,r,o;"function"==typeof SuppressedError&&SuppressedError,e.RtcSessionEvent=void 0,(i=e.RtcSessionEvent||(e.RtcSessionEvent={})).bye="bye",i.stream="stream",i.reInvite="reInvite",i.localAudioChange="localAudioChange",i.localVideoChange="localVideoChange",i.localStreamChange="localStreamChange",e.RtcClientEvent=void 0,(n=e.RtcClientEvent||(e.RtcClientEvent={})).connected="connected",n.disconnected="disconnected",n.invite="invite",e.PTTEvent=void 0,(s=e.PTTEvent||(e.PTTEvent={})).PTTInfo="PTTInfo",s.FPREInfo="FPREInfo",s.IMSInfo="IMSInfo",s.ERROR="error",s.SPEAKER="speaker",s.TALKING="talking",s.ACTIVE_GROUP="activeGroup",s.JOIN_INFO="joinInfo",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"}(r||(r={})),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"}(o||(o={}));const 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)};class h{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}}var u,v,p;function f(){}function m(){m.init.call(this)}function g(e){return void 0===e._maxListeners?m.defaultMaxListeners:e._maxListeners}function k(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 f,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=g(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 y(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 T(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 C(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}f.prototype=Object.create(null),m.EventEmitter=m,m.usingDomains=!1,m.prototype.domain=void 0,m.prototype._events=void 0,m.prototype._maxListeners=void 0,m.defaultMaxListeners=10,m.init=function(){this.domain=null,m.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new f,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},m.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},m.prototype.getMaxListeners=function(){return g(this)},m.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=C(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=C(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=C(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=C(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=C(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},m.prototype.addListener=function(e,t){return k(this,e,t,!1)},m.prototype.on=m.prototype.addListener,m.prototype.prependListener=function(e,t){return k(this,e,t,!0)},m.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,y(this,e,t)),this},m.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,y(this,e,t)),this},m.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 f:(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 f,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},m.prototype.off=function(e,t){return this.removeListener(e,t)},m.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new f,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new f: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 f,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},m.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):[]},m.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):T.call(e,t)},m.prototype.listenerCount=T,m.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class b extends m{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:20,max:30},aspectRatio:{ideal:16/9}},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(t){var i;this.emit(e.RtcSessionEvent.localVideoChange,{from:this.videoTrack,to:t}),this.videoTrack!==t&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(t),this.localTractChange(this.videoTrack,t)),this.videoTrack=t}setAudioTrack(t){var i;this.emit(e.RtcSessionEvent.localAudioChange,{from:this.audioTrack,to:t}),this.audioTrack!==t&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(t),this.localTractChange(this.audioTrack,t)),this.audioTrack=t}renderLocalStreamToContainer(e){a(this.localMediaStream,e)}getAllInputResource(){return t(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(e){return t(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0});this.setAudioTrack(t.getAudioTracks()[0]),this.setVideoTrack(t.getVideoTracks()[0]),this.renderLocalStreamToContainer(e)}))}useAudio(e){return t(this,void 0,void 0,(function*(){let t=void 0===e?{audio:Object.assign({},this.audioConstrants),video:!1}:{video:!1,audio:Object.assign({deviceId:e},this.audioConstrants)},i=yield navigator.mediaDevices.getUserMedia(t);return this.setAudioTrack(i.getAudioTracks()[0]),i.getAudioTracks()[0]}))}useDeviceVideo(e){return t(this,void 0,void 0,(function*(){let t=void 0===e?{audio:!1,video:Object.assign({},this.videoConstrains)}:{audio:!1,video:Object.assign({deviceId:e},this.videoConstrains)},i=yield navigator.mediaDevices.getUserMedia(t);return this.setVideoTrack(i.getVideoTracks()[0]),i.getVideoTracks()[0]}))}useDeskTopVideo(){return t(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 w extends b{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(e,i){return t(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 t=this.peerConnection.getSenders().find((t=>{var i;return(null===(i=t.track)||void 0===i?void 0:i.kind)===(null==e?void 0:e.kind)}));void 0!==t&&this.peerConnection.removeTrack(t)}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(e),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(e.RtcSessionEvent.localStreamChange,{audioOnly:!this.hasRemoteVideo(this.localMediaStream),stream:this.localMediaStream})}emitRemoteStreamChange(){this.emit(e.RtcSessionEvent.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 t(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=h.formatOffer(e),yield this.peerConnection.setLocalDescription(e),e}))}setOffer(e){return t(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"offer",sdp:e})}))}createAnswer(){return t(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(e){return t(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"answer",sdp:e})}))}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)}}e.RtcInviteStatus=void 0,(u=e.RtcInviteStatus||(e.RtcInviteStatus={}))[u.timeout=408]="timeout",u[u.reject=488]="reject",u[u.busy=486]="busy",u[u.notfound=404]="notfound",u[u.notAllowedMedia=415]="notAllowedMedia",u[u.ok=200]="ok";class S extends w{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[t,i,n]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq);t.answer(e.RtcInviteStatus.reject,n,i,this.sessionId),this.destory()}acceptCall(){return t(this,void 0,void 0,(function*(){if(void 0!==this.inviteOffer){yield this.setOffer(this.inviteOffer);let[t,i,n]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq),{sdp:s}=yield this.createAnswer();t.answer(e.RtcInviteStatus.ok,n,i,this.sessionId,s)}}))}pickNewConnection(){return t(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(e){var i;return t(this,void 0,void 0,(function*(){null===(i=this.rtcClient)||void 0===i||i.sendDtmf(this.remoteNumber,this.sessionId,e)}))}}e.RtcCalledType=void 0,(v=e.RtcCalledType||(e.RtcCalledType={})).audio="audio",v.video="video",v.audioVideo="audioVideo",v.unknown="unknown";class E extends S{constructor(){super(...arguments),this.responseCallType=e.RtcCalledType.unknown}start(){return t(this,void 0,void 0,(function*(){let[t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber),n=yield this.createOffer(),{status:s,sdp:r}=yield t.invite(i,this.sessionId,n.sdp);if(s===e.RtcInviteStatus.ok){yield this.setAnswer(r);const t=r.split("\r\n"),i=t.find((e=>e.startsWith("m=audio"))),n=t.find((e=>e.startsWith("m=video")));this.responseCallType=i&&n?e.RtcCalledType.audioVideo:i?e.RtcCalledType.audio:n?e.RtcCalledType.video:e.RtcCalledType.unknown}return s}))}addRemote(e){this.remoteNumber=e}}class R{constructor(e,t,i,n){this.req=e,this.seq=R.seqNum++,this.from=t,this.to=i,this.registerid=`${R.random}@${t}`,void 0!==n&&Object.assign(this,n)}}R.random=String(Date.now()),R.seqNum=0,function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(p||(p={}));var _=null;try{var L="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");_=L.Worker}catch(e){}function I(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 _(o,Object.assign({},e,{eval:!0}))}}function x(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 M="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var N,G,P,V=(N="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGYsYT17fSxuPXt0aW1lb3V0OjVlMyx0aW1lb3V0T2JqOm51bGwscmVzZXQoKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXRPYmopLHRoaXN9LHJlZ2lzdGVyKCl7MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KFJlZ2lzdGVyKSl9LHNlbmRPbmxpbmUoKXsxPT09ZS5yZWFkeVN0YXRlJiZlLnNlbmQoSlNPTi5zdHJpbmdpZnkoYSkpfSxzdGFydCgpe3RoaXMudGltZW91dE9iaj1zZXRJbnRlcnZhbCgoKCk9Pnt0aGlzLnNlbmRPbmxpbmUoKX0pLHRoaXMudGltZW91dCl9fTtsZXQgbz0yO3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHMpe2NvbnN0IGk9cy5kYXRhO3N3aXRjaChpLmNtZCl7Y2FzZSJjb25maWciOk9iamVjdC5hc3NpZ24oYSxpLmhlYXJ0QmVhdCx7c2VxOm8rK30pLG4udGltZW91dD0xZTMqaS5oZWFydFRpbWV8fDVlMzticmVhaztjYXNlInN0YXJ0IjpzZWxmLnBvc3RNZXNzYWdlKHt0eXBlOiJ3ZWJXb3JrZXIiLGRhdGE6IuWQr+WKqHdlYldvcmtlciJ9KSxyKGkudXJsKTticmVhaztjYXNlInN0b3AiOnQ9ITAsZS5jbG9zZSgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5YGc5q2id2ViV29ya2VyIn0pLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImNsb3NlIixkYXRhOiJjbG9zZSIrKG5ldyBEYXRlKS50b1RpbWVTdHJpbmcoKX0pLHNlbGYuY2xvc2UoKTticmVhaztjYXNlIm1zZyI6MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KGkuZGF0YSkpfX0pLCExKTtjb25zdCByPWZ1bmN0aW9uKHQpe2V8fChlPW5ldyBXZWJTb2NrZXQodCksZS5vbmVycm9yPWZ1bmN0aW9uKGUpe2kodCl9LGUub25jbG9zZT1mdW5jdGlvbihlKXtpKHQpfSxlLm9ub3Blbj1lPT57cy5wb3N0TWVzc2FnZSh7dHlwZToib3BlbiIsZGF0YToic3RhcnQiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KSxuLnJlc2V0KCkuc3RhcnQoKX0sZS5vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9SlNPTi5wYXJzZShlLmRhdGEpO3MucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYlNvY2tldCIsZGF0YTp0fSl9KX07ZnVuY3Rpb24gaShzKXt0fHwodD0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbCxyKHMpLHQ9ITF9KSwyZTMpKX19KCk7Cgo=",G=null,P=!1,M?I(N,G,P):function(e,t,i){var n;return function(s){return n=n||x(e,t,i),new Worker(n,s)}}(N,G,P));class W extends m{constructor(e,t,i){super(),this.server=e,this.ws=new V,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 Z extends m{constructor(e,t,i,n){super(),this.activeServer="",this.server=e,this.localNumber=t,this.expireTime=i,this.heartTime=n,super.setMaxListeners(0)}testWs(e){return t(this,void 0,void 0,(function*(){return e.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 t(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 W(this.activeServer,new R(r.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 A extends Z{constructor(){super(...arguments),this.asyncProducer=new Map}sendRespondableMessage(e){return t(this,void 0,void 0,(function*(){return this.sendMessage(e),new Promise((t=>this.asyncProducer.set(e.seq,t)))}))}getAsyncResolve(e){let t=this.asyncProducer.get(e);return void 0!==t&&this.asyncProducer.delete(e),t}onDisConnected(t){this.asyncProducer.clear(),this.emit(e.RtcClientEvent.disconnected,t)}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 O extends A{register(){return t(this,void 0,void 0,(function*(){let e=new R(r.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new R(r.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:0});this.sendMessage(e)}invite(e,i,n){return t(this,void 0,void 0,(function*(){return this.sendRespondableMessage(new R(r.MESSAGE_TYPE_INVITE,this.localNumber,e,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new R(r.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(e,i,n){return t(this,void 0,void 0,(function*(){return this.sendMessage(new R(r.MESSAGE_TYPE_INFO,this.localNumber,e,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function Y(){}function j(){j.init.call(this)}function U(e){return void 0===e._maxListeners?j.defaultMaxListeners:e._maxListeners}function X(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 Y,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=U(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 K(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 D(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 q(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}Y.prototype=Object.create(null),j.EventEmitter=j,j.usingDomains=!1,j.prototype.domain=void 0,j.prototype._events=void 0,j.prototype._maxListeners=void 0,j.defaultMaxListeners=10,j.init=function(){this.domain=null,j.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Y,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},j.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},j.prototype.getMaxListeners=function(){return U(this)},j.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:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=q(e,n),r=0;r<n;++r)s[r].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,r=q(e,s),o=0;o<s;++o)r[o].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var r=e.length,o=q(e,r),a=0;a<r;++a)o[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,r){if(t)e.call(i,n,s,r);else for(var o=e.length,a=q(e,o),c=0;c<o;++c)a[c].call(i,n,s,r)}(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];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,r=q(e,s),o=0;o<s;++o)r[o].apply(i,n)}(i,l,this,s)}return!0},j.prototype.addListener=function(e,t){return X(this,e,t,!1)},j.prototype.on=j.prototype.addListener,j.prototype.prependListener=function(e,t){return X(this,e,t,!0)},j.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,K(this,e,t)),this},j.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,K(this,e,t)),this},j.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 Y:(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 Y,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},j.prototype.off=function(e,t){return this.removeListener(e,t)},j.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new Y,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new Y: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 Y,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},j.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):[]},j.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):D.call(e,t)},j.prototype.listenerCount=D,j.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const z="error",F="speaker",H="talking",J="activeGroup",B="joinInfo",$="disConnected",Q={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},ee="connected",te="disconnected",ie="message",ne=(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)},se=(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 re extends j{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{ne("websocket connected ",this.server),this.emit(ee)},this.ws.onclose=()=>{ne("websocket disconnected ",this.server),this.ws=void 0,this.emit(te)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);ne("websocket recive message ",t),this.emit(ie,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){ne("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class oe extends j{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return se("服务器地址为空!");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 re(this.server);i.on(ee,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(te,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit($),t("socket connecion failed")})),i.on(ie,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){ne(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,ne(`${this.speaker}正在说话`),this.emit(F,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,ne(`加入组${this.activeGroup}`)):(this.activeGroup="",se(Q[n.code]),this.emit(z,Q[n.code])),this.emit(J,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,ne(`talking:${this.talking}`),this.emit(H,this.talking)),14===t&&(this.speaker="",ne(`${this.speaker}停止说话`),this.emit(F,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};ne(`${e}进入组`),this.emit(B,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(J,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,ne(`talking:${this.talking}`),this.emit(H,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 ae extends O{constructor(e){let t=e.expireTime||ae.defaultExpireTime;super(e.server,e.localNumber,t,e.heartTime||5),this.enablePtt=e.enablePtt,this.pttServer=e.pttServer}initPttClient(){return t(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 oe(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on(J,(e=>{this.emit(J,e)})),e.on(F,(e=>{this.emit(F,e)})),e.on(H,(e=>{this.emit(H,e)})),e.on(B,(e=>{this.emit(B,e)})),e.on($,(e=>{this.emit($,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()}}ae.defaultExpireTime=60;class ce extends S{constructor(t,i,n,s,r){super(t,i,n),this.callType=e.RtcCalledType.unknown,this.inviteSeq=r,this.inviteOffer=s;const o=s.split("\r\n"),a=o.find((e=>e.startsWith("m=audio"))),c=o.find((e=>e.startsWith("m=video")));this.callType=a&&c?e.RtcCalledType.audioVideo:a?e.RtcCalledType.audio:c?e.RtcCalledType.video:e.RtcCalledType.unknown}}class de extends ae{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new E(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(t){var i;let{req:n}=t;if(n===r.MESSAGE_TYPE_INVITE){let i=new ce(this,t.cid,t.from,t.sdp,t.seq);this.allSession.push(i),this.emit(e.RtcClientEvent.invite,i)}else if(n===r.MESSAGE_TYPE_REINVITE){let i=this.allSession.find((e=>e.sessionId==t.cid));void 0!==i&&(i.inviteSeq=t.seq,i.inviteOffer=t.sdp,i.acceptCall(),i.emit(e.RtcSessionEvent.reInvite,i))}else if(n===r.MESSAGE_TYPE_ICE)null===(i=this.allSession.find((e=>e.sessionId===t.cid)))||void 0===i||i.reciveIceRequest(t);else if(n===r.MESSAGE_TYPE_BYE){let i=this.allSession.find((e=>e.sessionId===t.cid));void 0!==i&&(i.emit(e.RtcSessionEvent.bye),i.destory(!1))}n==o.FPRE&&this.emit(e.PTTEvent.FPREInfo,t),n==o.IMS&&this.emit(e.PTTEvent.IMSInfo,t)}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()}}e.RtcClient=de,e.authDevice=()=>t(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})})),e.createRtcClient=i=>t(void 0,void 0,void 0,(function*(){let t=new de(i);yield t.reConnect(),yield t.initPttClient().catch((e=>{console.error(e)})),R.random=String(Date.now());let n=yield t.register();return n.status===e.RtcInviteStatus.ok?t:(t.destory(),Promise.reject(n))})),e.disableLog=()=>{d=!1},e.enableLog=()=>{d=!0},e.releaseStreamFromContainer=e=>{void 0!==e&&(e.pause(),e.removeAttribute("src"),e.removeAttribute("srcObject"))},e.renderStreamToContainer=a,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).UscRtc={})}(this,(function(e){"use strict";function t(e,t,i,n){return new(i||(i=Promise))((function(s,o){function r(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(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(r,a)}c((n=n.apply(e,t||[])).next())}))}var i,n,s,o,r;"function"==typeof SuppressedError&&SuppressedError,e.RtcSessionEvent=void 0,(i=e.RtcSessionEvent||(e.RtcSessionEvent={})).bye="bye",i.stream="stream",i.reInvite="reInvite",i.localAudioChange="localAudioChange",i.localVideoChange="localVideoChange",i.localStreamChange="localStreamChange",e.RtcClientEvent=void 0,(n=e.RtcClientEvent||(e.RtcClientEvent={})).connected="connected",n.disconnected="disconnected",n.invite="invite",e.PTTEvent=void 0,(s=e.PTTEvent||(e.PTTEvent={})).PTTInfo="PTTInfo",s.FPREInfo="FPREInfo",s.IMSInfo="IMSInfo",s.ERROR="error",s.SPEAKER="speaker",s.TALKING="talking",s.ACTIVE_GROUP="activeGroup",s.JOIN_INFO="joinInfo",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"}(o||(o={})),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 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)};class h{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}}var u,v,p;function f(){}function m(){m.init.call(this)}function g(e){return void 0===e._maxListeners?m.defaultMaxListeners:e._maxListeners}function k(e,t,i,n){var s,o,r,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),o=e._events),r=o[t]):(o=e._events=new f,e._eventsCount=0),r){if("function"==typeof r?r=o[t]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),!r.warned&&(s=g(e))&&s>0&&r.length>s){r.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=r.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else r=o[t]=i,++e._eventsCount;return e}function y(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 T(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 C(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}f.prototype=Object.create(null),m.EventEmitter=m,m.usingDomains=!1,m.prototype.domain=void 0,m.prototype._events=void 0,m.prototype._maxListeners=void 0,m.defaultMaxListeners=10,m.init=function(){this.domain=null,m.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new f,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},m.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},m.prototype.getMaxListeners=function(){return g(this)},m.prototype.emit=function(e){var t,i,n,s,o,r,a,c="error"===e;if(r=this._events)c=c&&null==r.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=r[e]))return!1;var l="function"==typeof i;switch(n=arguments.length){case 1:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=C(e,n),o=0;o<n;++o)s[o].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,o=C(e,s),r=0;r<s;++r)o[r].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var o=e.length,r=C(e,o),a=0;a<o;++a)r[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,o){if(t)e.call(i,n,s,o);else for(var r=e.length,a=C(e,r),c=0;c<r;++c)a[c].call(i,n,s,o)}(i,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),o=1;o<n;o++)s[o-1]=arguments[o];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,o=C(e,s),r=0;r<s;++r)o[r].apply(i,n)}(i,l,this,s)}return!0},m.prototype.addListener=function(e,t){return k(this,e,t,!1)},m.prototype.on=m.prototype.addListener,m.prototype.prependListener=function(e,t){return k(this,e,t,!0)},m.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,y(this,e,t)),this},m.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,y(this,e,t)),this},m.prototype.removeListener=function(e,t){var i,n,s,o,r;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 f:(delete n[e],n.removeListener&&this.emit("removeListener",e,i.listener||t));else if("function"!=typeof i){for(s=-1,o=i.length;o-- >0;)if(i[o]===t||i[o].listener&&i[o].listener===t){r=i[o].listener,s=o;break}if(s<0)return this;if(1===i.length){if(i[0]=void 0,0==--this._eventsCount)return this._events=new f,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,r||t)}return this},m.prototype.off=function(e,t){return this.removeListener(e,t)},m.prototype.removeAllListeners=function(e){var t,i;if(!(i=this._events))return this;if(!i.removeListener)return 0===arguments.length?(this._events=new f,this._eventsCount=0):i[e]&&(0==--this._eventsCount?this._events=new f:delete i[e]),this;if(0===arguments.length){for(var n,s=Object.keys(i),o=0;o<s.length;++o)"removeListener"!==(n=s[o])&&this.removeAllListeners(n);return this.removeAllListeners("removeListener"),this._events=new f,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},m.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):[]},m.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):T.call(e,t)},m.prototype.listenerCount=T,m.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class b extends m{constructor(){super(),this.localMediaStream=new MediaStream,this.videoConstrains={width:{ideal:1920},height:{ideal:1080},frameRate:{ideal:20,max:30},aspectRatio:{ideal:16/9}},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(t){var i;this.emit(e.RtcSessionEvent.localVideoChange,{from:this.videoTrack,to:t}),this.videoTrack!==t&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(t),this.localTractChange(this.videoTrack,t)),this.videoTrack=t}setAudioTrack(t){var i;this.emit(e.RtcSessionEvent.localAudioChange,{from:this.audioTrack,to:t}),this.audioTrack!==t&&(null===(i=this.localMediaStream)||void 0===i||i.addTrack(t),this.localTractChange(this.audioTrack,t)),this.audioTrack=t}renderLocalStreamToContainer(e){a(this.localMediaStream,e)}getAllInputResource(){return t(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(e){return t(this,void 0,void 0,(function*(){let t=yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0});this.setAudioTrack(t.getAudioTracks()[0]),this.setVideoTrack(t.getVideoTracks()[0]),this.renderLocalStreamToContainer(e)}))}useAudio(e){return t(this,void 0,void 0,(function*(){let t=void 0===e?{audio:Object.assign({},this.audioConstrants),video:!1}:{video:!1,audio:Object.assign({deviceId:e},this.audioConstrants)},i=yield navigator.mediaDevices.getUserMedia(t);return this.setAudioTrack(i.getAudioTracks()[0]),i.getAudioTracks()[0]}))}useDeviceVideo(e){return t(this,void 0,void 0,(function*(){let t=void 0===e?{audio:!1,video:Object.assign({},this.videoConstrains)}:{audio:!1,video:Object.assign({deviceId:e},this.videoConstrains)},i=yield navigator.mediaDevices.getUserMedia(t);return this.setVideoTrack(i.getVideoTracks()[0]),i.getVideoTracks()[0]}))}useDeskTopVideo(){return t(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 w extends b{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(e,i){return t(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 t=this.peerConnection.getSenders().find((t=>{var i;return(null===(i=t.track)||void 0===i?void 0:i.kind)===(null==e?void 0:e.kind)}));void 0!==t&&this.peerConnection.removeTrack(t)}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(e),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(e.RtcSessionEvent.localStreamChange,{audioOnly:!this.hasRemoteVideo(this.localMediaStream),stream:this.localMediaStream})}emitRemoteStreamChange(){this.emit(e.RtcSessionEvent.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 o=RTCRtpReceiver.getCapabilities("audio");null!==o&&this.audioCodecs.push(...o.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 t(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=h.formatOffer(e),yield this.peerConnection.setLocalDescription(e),e}))}setOffer(e){return t(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"offer",sdp:e})}))}createAnswer(){return t(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(e){return t(this,void 0,void 0,(function*(){if(void 0===this.peerConnection)throw new Error("session is closed !");yield this.peerConnection.setRemoteDescription({type:"answer",sdp:e})}))}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)}}e.RtcInviteStatus=void 0,(u=e.RtcInviteStatus||(e.RtcInviteStatus={}))[u.timeout=408]="timeout",u[u.reject=488]="reject",u[u.busy=486]="busy",u[u.notfound=404]="notfound",u[u.notAllowedMedia=415]="notAllowedMedia",u[u.ok=200]="ok";class S extends w{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[t,i,n]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq);t.answer(e.RtcInviteStatus.reject,n,i,this.sessionId),this.destory()}acceptCall(){return t(this,void 0,void 0,(function*(){if(void 0!==this.inviteOffer){yield this.setOffer(this.inviteOffer);let[t,i,n]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber,this.inviteSeq),{sdp:s}=yield this.createAnswer();t.answer(e.RtcInviteStatus.ok,n,i,this.sessionId,s)}}))}pickNewConnection(){return t(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(e){var i;return t(this,void 0,void 0,(function*(){null===(i=this.rtcClient)||void 0===i||i.sendDtmf(this.remoteNumber,this.sessionId,e)}))}}e.RtcCalledType=void 0,(v=e.RtcCalledType||(e.RtcCalledType={})).audio="audio",v.video="video",v.audioVideo="audioVideo",v.unknown="unknown";class E extends S{constructor(){super(...arguments),this.responseCallType=e.RtcCalledType.unknown}start(){return t(this,void 0,void 0,(function*(){let[t,i]=this.checkIsNotUndefined(this.rtcClient,this.remoteNumber),n=yield this.createOffer(),{status:s,sdp:o}=yield t.invite(i,this.sessionId,n.sdp);if(s===e.RtcInviteStatus.ok){yield this.setAnswer(o);const t=o.split("\r\n"),i=t.find((e=>e.startsWith("m=audio"))),n=t.find((e=>e.startsWith("m=video")));this.responseCallType=i&&n?e.RtcCalledType.audioVideo:i?e.RtcCalledType.audio:n?e.RtcCalledType.video:e.RtcCalledType.unknown}return s}))}addRemote(e){this.remoteNumber=e}}class R{constructor(e,t,i,n){this.req=e,this.seq=0,this.from=t,this.to=i,this.registerid=`${R.random}@${t}`,void 0!==n&&Object.assign(this,n)}}R.random=String(Date.now()),function(e){e.connected="connected",e.disconnected="disconnected",e.message="message"}(p||(p={}));var _=null;try{var L="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");_=L.Worker}catch(e){}function I(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),o=s.indexOf("\n",10)+1,r=s.substring(o)+(n?"//# sourceMappingURL="+n:"");return function(e){return new _(r,Object.assign({},e,{eval:!0}))}}function M(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,o=i.length;s<o;++s)n[s]=i.charCodeAt(s);return String.fromCharCode.apply(null,new Uint16Array(n.buffer))}return i}(e,void 0!==i&&i),o=s.indexOf("\n",10)+1,r=s.substring(o)+(n?"//# sourceMappingURL="+n:""),a=new Blob([r],{type:"application/javascript"});return URL.createObjectURL(a)}var N="[object process]"===Object.prototype.toString.call("undefined"!=typeof process?process:0);var x,P,G,V=(x="Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwohZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7bGV0IGUsdD0hMTtjb25zdCBzPXNlbGYsYT17fSxuPXt0aW1lb3V0OjVlMyx0aW1lb3V0T2JqOm51bGwscmVzZXQoKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRpbWVvdXRPYmopLHRoaXN9LHNlbmRPbmxpbmUoKXsxPT09ZS5yZWFkeVN0YXRlJiZlLnNlbmQoSlNPTi5zdHJpbmdpZnkoT2JqZWN0LmFzc2lnbihhLHtzZXE6KythLnNlcX0pKSl9LHN0YXJ0KCl7dGhpcy50aW1lb3V0T2JqPXNldEludGVydmFsKCgoKT0+e3RoaXMuc2VuZE9ubGluZSgpfSksdGhpcy50aW1lb3V0KX19O3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsKGZ1bmN0aW9uKHMpe2NvbnN0IHI9cy5kYXRhO3N3aXRjaChyLmNtZCl7Y2FzZSJjb25maWciOk9iamVjdC5hc3NpZ24oYSxyLmhlYXJ0QmVhdCksbi50aW1lb3V0PTFlMypyLmhlYXJ0VGltZXx8NWUzO2JyZWFrO2Nhc2Uic3RhcnQiOnNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5ZCv5Yqod2ViV29ya2VyIn0pLG8oci51cmwpO2JyZWFrO2Nhc2UiY2xvc2UiOnQ9ITAsZS5jbG9zZSgpLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYldvcmtlciIsZGF0YToi5YGc5q2id2ViV29ya2VyIn0pLHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6ImNsb3NlIixkYXRhOiJjbG9zZSIrKG5ldyBEYXRlKS50b1RpbWVTdHJpbmcoKX0pLHNlbGYuY2xvc2UoKTticmVhaztjYXNlIm1zZyI6MT09PWUucmVhZHlTdGF0ZSYmZS5zZW5kKEpTT04uc3RyaW5naWZ5KHIuZGF0YSkpfX0pLCExKTtjb25zdCBvPWZ1bmN0aW9uKHQpe2V8fChlPW5ldyBXZWJTb2NrZXQodCksZS5vbmVycm9yPWZ1bmN0aW9uKGUpe3IodCl9LGUub25jbG9zZT1mdW5jdGlvbihlKXtyKHQpfSxlLm9ub3Blbj1lPT57cy5wb3N0TWVzc2FnZSh7dHlwZToib3BlbiIsZGF0YToic3RhcnQiKyhuZXcgRGF0ZSkudG9UaW1lU3RyaW5nKCl9KSxuLnJlc2V0KCkuc3RhcnQoKX0sZS5vbm1lc3NhZ2U9ZT0+e2NvbnN0IHQ9SlNPTi5wYXJzZShlLmRhdGEpO3MucG9zdE1lc3NhZ2Uoe3R5cGU6IndlYlNvY2tldCIsZGF0YTp0fSl9KX07ZnVuY3Rpb24gcihzKXt0fHwodD0hMCxzZXRUaW1lb3V0KChmdW5jdGlvbigpe2U9bnVsbCxvKHMpLHQ9ITF9KSwyZTMpKX19KCk7Cgo=",P=null,G=!1,N?I(x,P,G):function(e,t,i){var n;return function(s){return n=n||M(e,t,i),new Worker(n,s)}}(x,P,G));class A extends m{constructor(e,t,i){super(),this.server=e,this.ws=new V,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 O extends m{constructor(e,t,i,n){super(),this.activeServer="",this.server=e,this.localNumber=t,this.expireTime=i,this.heartTime=n,super.setMaxListeners(0)}testWs(e){return t(this,void 0,void 0,(function*(){return e.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 t(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 A(this.activeServer,new R(o.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 Y extends O{constructor(){super(...arguments),this.asyncProducer=new Map}sendRespondableMessage(e){return t(this,void 0,void 0,(function*(){return this.sendMessage(e),new Promise((t=>this.asyncProducer.set(e.seq,t)))}))}getAsyncResolve(e){let t=this.asyncProducer.get(e);return void 0!==t&&this.asyncProducer.delete(e),t}onDisConnected(t){this.asyncProducer.clear(),this.emit(e.RtcClientEvent.disconnected,t)}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 W extends Y{register(){return t(this,void 0,void 0,(function*(){let e=new R(o.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:this.expireTime});return this.sendRespondableMessage(e)}))}unRegister(){let e=new R(o.MESSAGE_TYPE_REGISTER,this.localNumber,this.localNumber,{expire:0});this.sendMessage(e)}invite(e,i,n){return t(this,void 0,void 0,(function*(){return this.sendRespondableMessage(new R(o.MESSAGE_TYPE_INVITE,this.localNumber,e,{cid:i,sdp:n}))}))}sendIce(e,t,i){}sendBye(e,t){return this.sendMessage(new R(o.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(e,i,n){return t(this,void 0,void 0,(function*(){return this.sendMessage(new R(o.MESSAGE_TYPE_INFO,this.localNumber,e,{cid:i,info:{msg:"dtmf",dtmf:n}}))}))}}function Z(){}function U(){U.init.call(this)}function j(e){return void 0===e._maxListeners?U.defaultMaxListeners:e._maxListeners}function X(e,t,i,n){var s,o,r,a;if("function"!=typeof i)throw new TypeError('"listener" argument must be a function');if((o=e._events)?(o.newListener&&(e.emit("newListener",t,i.listener?i.listener:i),o=e._events),r=o[t]):(o=e._events=new Z,e._eventsCount=0),r){if("function"==typeof r?r=o[t]=n?[i,r]:[r,i]:n?r.unshift(i):r.push(i),!r.warned&&(s=j(e))&&s>0&&r.length>s){r.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+r.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=r.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else r=o[t]=i,++e._eventsCount;return e}function D(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 K(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 q(e,t){for(var i=new Array(t);t--;)i[t]=e[t];return i}Z.prototype=Object.create(null),U.EventEmitter=U,U.usingDomains=!1,U.prototype.domain=void 0,U.prototype._events=void 0,U.prototype._maxListeners=void 0,U.defaultMaxListeners=10,U.init=function(){this.domain=null,U.usingDomains&&undefined.active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Z,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},U.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},U.prototype.getMaxListeners=function(){return j(this)},U.prototype.emit=function(e){var t,i,n,s,o,r,a,c="error"===e;if(r=this._events)c=c&&null==r.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=r[e]))return!1;var l="function"==typeof i;switch(n=arguments.length){case 1:!function(e,t,i){if(t)e.call(i);else for(var n=e.length,s=q(e,n),o=0;o<n;++o)s[o].call(i)}(i,l,this);break;case 2:!function(e,t,i,n){if(t)e.call(i,n);else for(var s=e.length,o=q(e,s),r=0;r<s;++r)o[r].call(i,n)}(i,l,this,arguments[1]);break;case 3:!function(e,t,i,n,s){if(t)e.call(i,n,s);else for(var o=e.length,r=q(e,o),a=0;a<o;++a)r[a].call(i,n,s)}(i,l,this,arguments[1],arguments[2]);break;case 4:!function(e,t,i,n,s,o){if(t)e.call(i,n,s,o);else for(var r=e.length,a=q(e,r),c=0;c<r;++c)a[c].call(i,n,s,o)}(i,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(n-1),o=1;o<n;o++)s[o-1]=arguments[o];!function(e,t,i,n){if(t)e.apply(i,n);else for(var s=e.length,o=q(e,s),r=0;r<s;++r)o[r].apply(i,n)}(i,l,this,s)}return!0},U.prototype.addListener=function(e,t){return X(this,e,t,!1)},U.prototype.on=U.prototype.addListener,U.prototype.prependListener=function(e,t){return X(this,e,t,!0)},U.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,D(this,e,t)),this},U.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,D(this,e,t)),this},U.prototype.removeListener=function(e,t){var i,n,s,o,r;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,o=i.length;o-- >0;)if(i[o]===t||i[o].listener&&i[o].listener===t){r=i[o].listener,s=o;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,r||t)}return this},U.prototype.off=function(e,t){return this.removeListener(e,t)},U.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),o=0;o<s.length;++o)"removeListener"!==(n=s[o])&&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},U.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):[]},U.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):K.call(e,t)},U.prototype.listenerCount=K,U.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};const F="error",z="speaker",H="talking",J="activeGroup",B="joinInfo",$="disConnected",Q={400:"消息不符规范",401:"验证不通过",403:"无权利操作",404:"不存在该用户",415:"错误参数",405:"无法操作",424:"不存在XD群",425:"管理员没有",426:"已存在管理员",427:"以前被拒绝过,或者删除过",428:"超出所配置的下属管理员的数量",429:"群内无用户",430:"管理员的索引号冲突",431:"还有子管理员存在"},ee="connected",te="disconnected",ie="message",ne=(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)},se=(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 oe extends U{server="";ws=null;constructor(e){super(),this.server=e}connect(){this.ws=new WebSocket(this.server),this.ws.onopen=()=>{ne("websocket connected ",this.server),this.emit(ee)},this.ws.onclose=()=>{ne("websocket disconnected ",this.server),this.ws=void 0,this.emit(te)},this.ws.onmessage=({data:e})=>{let t=JSON.parse(e);ne("websocket recive message ",t),this.emit(ie,t)}}close(){void 0!==this.ws&&(this.ws.close(),this.ws=void 0)}sendMessage(e){ne("websocket send message ",e),void 0!==e&&void 0!==this.ws&&1===this.ws.readyState&&this.ws.send(JSON.stringify(e))}}class re extends U{socket=void 0;timer=void 0;waitinggroup=void 0;speaker="";activeGroup="";talking=!1;constructor(e,t=20,i=!0){if(super(),!e)return se("服务器地址为空!");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 oe(this.server);i.on(ee,(()=>{this.socket=i,this.timer=setInterval((()=>{this.sendMessage({req:0})}),1e3*this.heartTime),e()})),i.on(te,(()=>{this.socket=void 0,this.autoReconnect?setTimeout((()=>{this.initClient()}),3e3):this.emit($),t("socket connecion failed")})),i.on(ie,(e=>this.onReviceMessage(e))),i.connect()}else t("server is empty")}))}onReviceMessage(e){ne(e);const{info:t,msg:i,res:n}=e;if(10===t&&(this.speaker=`${i.speaker}`,ne(`${this.speaker}正在说话`),this.emit(z,this.speaker)),11===t&&(200===n.code?(this.activeGroup=this.waitinggroup,ne(`加入组${this.activeGroup}`)):(this.activeGroup="",se(Q[n.code]),this.emit(F,Q[n.code])),this.emit(J,this.activeGroup)),13===t&&(200===n.code?this.talking=!0:this.talking=!1,ne(`talking:${this.talking}`),this.emit(H,this.talking)),14===t&&(this.speaker="",ne(`${this.speaker}停止说话`),this.emit(z,this.speaker)),15===t){const e={user:i.number,group:i.g_num,code:i.status};ne(`${e}进入组`),this.emit(B,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(J,this.activeGroup),this.sendMessage({req:2}))}talk(){this.socket&&this.sendMessage({req:3})}stop(){this.talking=!1,ne(`talking:${this.talking}`),this.emit(H,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 ae extends W{constructor(e){let t=e.expireTime||ae.defaultExpireTime;super(e.server,e.localNumber,t,e.heartTime||5),this.enablePtt=e.enablePtt,this.pttServer=e.pttServer}initPttClient(){return t(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 re(e,t,i);return await n.initClient(),n})(this.pttServer);if(!e)return Promise.reject("ptt客户端初始化失败!");e.on(J,(e=>{this.emit(J,e)})),e.on(z,(e=>{this.emit(z,e)})),e.on(H,(e=>{this.emit(H,e)})),e.on(B,(e=>{this.emit(B,e)})),e.on($,(e=>{this.emit($,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()}}ae.defaultExpireTime=60;class ce extends S{constructor(t,i,n,s,o){super(t,i,n),this.callType=e.RtcCalledType.unknown,this.inviteSeq=o,this.inviteOffer=s;const r=s.split("\r\n"),a=r.find((e=>e.startsWith("m=audio"))),c=r.find((e=>e.startsWith("m=video")));this.callType=a&&c?e.RtcCalledType.audioVideo:a?e.RtcCalledType.audio:c?e.RtcCalledType.video:e.RtcCalledType.unknown}}class de extends ae{constructor(){super(...arguments),this.allSession=[]}createSession(e){let t=new E(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(t){var i;let{req:n}=t;if(n===o.MESSAGE_TYPE_INVITE){let i=new ce(this,t.cid,t.from,t.sdp,t.seq);this.allSession.push(i),this.emit(e.RtcClientEvent.invite,i)}else if(n===o.MESSAGE_TYPE_REINVITE){let i=this.allSession.find((e=>e.sessionId==t.cid));void 0!==i&&(i.inviteSeq=t.seq,i.inviteOffer=t.sdp,i.acceptCall(),i.emit(e.RtcSessionEvent.reInvite,i))}else if(n===o.MESSAGE_TYPE_ICE)null===(i=this.allSession.find((e=>e.sessionId===t.cid)))||void 0===i||i.reciveIceRequest(t);else if(n===o.MESSAGE_TYPE_BYE){let i=this.allSession.find((e=>e.sessionId===t.cid));void 0!==i&&(i.emit(e.RtcSessionEvent.bye),i.destory(!1))}n==r.FPRE&&this.emit(e.PTTEvent.FPREInfo,t),n==r.IMS&&this.emit(e.PTTEvent.IMSInfo,t)}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()}}e.RtcClient=de,e.authDevice=()=>t(void 0,void 0,void 0,(function*(){yield navigator.mediaDevices.getUserMedia({audio:!0,video:!0})})),e.createRtcClient=i=>t(void 0,void 0,void 0,(function*(){let t=new de(i);yield t.reConnect(),yield t.initPttClient().catch((e=>{console.error(e)})),R.random=String(Date.now());let n=yield t.register();return n.status===e.RtcInviteStatus.ok?t:(t.destory(),Promise.reject(n))})),e.disableLog=()=>{d=!1},e.enableLog=()=>{d=!0},e.releaseStreamFromContainer=e=>{void 0!==e&&(e.pause(),e.removeAttribute("src"),e.removeAttribute("srcObject"))},e.renderStreamToContainer=a,Object.defineProperty(e,"__esModule",{value:!0})}));
|