ue-softphone-sdk 3.0.6 → 3.0.7

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.
@@ -18,6 +18,7 @@ interface InitOptions {
18
18
  error?: Function;
19
19
  server?: string;
20
20
  audioInfo?: AudioInfo;
21
+ isOpenNetwork?: boolean;
21
22
  }
22
23
  interface OnCallEventParams {
23
24
  success?: Function;
@@ -148,6 +149,9 @@ export default class ueSoftphone {
148
149
  static createEventHandle(callbacks?: any): void;
149
150
  private getWebrtcInfo;
150
151
  private initAttachEvent;
152
+ private attachNetworkCallbacks;
153
+ private initnNetworkMonitoring;
154
+ listenCallNetork: (callbacks: OnCallEventParams) => void;
151
155
  static useDefaultDependencies(deps: any): {
152
156
  newWebSocket(server: string, proto: any): any;
153
157
  request(url: string, options: any): any;
@@ -1,7 +1,7 @@
1
- "use strict";var e=require("ue-webrtc"),t=require("js-base64"),s=require("js-md5"),n=require("jsencrypt"),i=function(){return i=Object.assign||function(e){for(var t,s=1,n=arguments.length;s<n;s++)for(var i in t=arguments[s])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},i.apply(this,arguments)};function o(e,t,s,n){return new(s||(s=Promise))((function(i,o){function r(e){try{a(n.next(e))}catch(e){o(e)}}function c(e){try{a(n.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(r,c)}a((n=n.apply(e,t||[])).next())}))}function r(e,t){var s,n,i,o,r={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function c(c){return function(a){return function(c){if(s)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(r=0)),r;)try{if(s=1,n&&(i=2&c[0]?n.return:c[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,c[1])).done)return i;switch(n=0,i&&(c=[2&c[0],i.value]),c[0]){case 0:case 1:i=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,n=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(!(i=r.trys,(i=i.length>0&&i[i.length-1])||6!==c[0]&&2!==c[0])){r=0;continue}if(3===c[0]&&(!i||c[1]>i[0]&&c[1]<i[3])){r.label=c[1];break}if(6===c[0]&&r.label<i[1]){r.label=i[1],i=c;break}if(i&&r.label<i[2]){r.label=i[2],r.ops.push(c);break}i[2]&&r.ops.pop(),r.trys.pop();continue}c=t.call(e,r)}catch(e){c=[6,e],n=0}finally{s=i=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,a])}}}"function"==typeof SuppressedError&&SuppressedError;
1
+ "use strict";var e=require("ue-webrtc"),t=require("js-base64"),s=require("js-md5"),n=require("jsencrypt"),o=function(){return o=Object.assign||function(e){for(var t,s=1,n=arguments.length;s<n;s++)for(var o in t=arguments[s])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},o.apply(this,arguments)};function i(e,t,s,n){return new(s||(s=Promise))((function(o,i){function r(e){try{a(n.next(e))}catch(e){i(e)}}function c(e){try{a(n.throw(e))}catch(e){i(e)}}function a(e){var t;e.done?o(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(r,c)}a((n=n.apply(e,t||[])).next())}))}function r(e,t){var s,n,o,i,r={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function c(c){return function(a){return function(c){if(s)throw new TypeError("Generator is already executing.");for(;i&&(i=0,c[0]&&(r=0)),r;)try{if(s=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,n=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(!(o=r.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){r=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){r.label=c[1];break}if(6===c[0]&&r.label<o[1]){r.label=o[1],o=c;break}if(o&&r.label<o[2]){r.label=o[2],r.ops.push(c);break}o[2]&&r.ops.pop(),r.trys.pop();continue}c=t.call(e,r)}catch(e){c=[6,e],n=0}finally{s=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,a])}}}"function"==typeof SuppressedError&&SuppressedError;
2
2
  /*!
3
3
  * Socket.IO v4.7.2
4
4
  * (c) 2014-2023 Guillermo Rauch
5
5
  * Released under the MIT License.
6
6
  */
7
- const c=Object.create(null);c.open="0",c.close="1",c.ping="2",c.pong="3",c.message="4",c.upgrade="5",c.noop="6";const a=Object.create(null);Object.keys(c).forEach((e=>{a[c[e]]=e}));const u={type:"error",data:"parser error"},l="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),h="function"==typeof ArrayBuffer,p=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,f=({type:e,data:t},s,n)=>l&&t instanceof Blob?s?n(t):d(t,n):h&&(t instanceof ArrayBuffer||p(t))?s?n(t):d(new Blob([t]),n):n(c[e]+(t||"")),d=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};function g(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let m;const y="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)y["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const b="function"==typeof ArrayBuffer,v=(e,t)=>{if("string"!=typeof e)return{type:"message",data:w(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:k(e.substring(1),t)}:a[s]?e.length>1?{type:a[s],data:e.substring(1)}:{type:a[s]}:u},k=(e,t)=>{if(b){const s=(e=>{let t,s,n,i,o,r=.75*e.length,c=e.length,a=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);const u=new ArrayBuffer(r),l=new Uint8Array(u);for(t=0;t<c;t+=4)s=y[e.charCodeAt(t)],n=y[e.charCodeAt(t+1)],i=y[e.charCodeAt(t+2)],o=y[e.charCodeAt(t+3)],l[a++]=s<<2|n>>4,l[a++]=(15&n)<<4|i>>2,l[a++]=(3&i)<<6|63&o;return u})(e);return w(s,t)}return{base64:!0,data:e}},w=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,T=String.fromCharCode(30);function I(){return new TransformStream({transform(e,t){!function(e,t){l&&e.data instanceof Blob?e.data.arrayBuffer().then(g).then(t):h&&(e.data instanceof ArrayBuffer||p(e.data))?t(g(e.data)):f(e,!1,(e=>{m||(m=new TextEncoder),t(m.encode(e))}))}(e,(s=>{const n=s.length;let i;if(n<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,n);else if(n<65536){i=new Uint8Array(3);const e=new DataView(i.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{i=new Uint8Array(9);const e=new DataView(i.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}e.data&&"string"!=typeof e.data&&(i[0]|=128),t.enqueue(i),t.enqueue(s)}))}})}let A;function _(e){return e.reduce(((e,t)=>e+t.length),0)}function O(e,t){if(e[0].length===t)return e.shift();const s=new Uint8Array(t);let n=0;for(let i=0;i<t;i++)s[i]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),s}function E(e){if(e)return function(e){for(var t in E.prototype)e[t]=E.prototype[t];return e}(e)}E.prototype.on=E.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},E.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},E.prototype.off=E.prototype.removeListener=E.prototype.removeAllListeners=E.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var i=0;i<n.length;i++)if((s=n[i])===t||s.fn===t){n.splice(i,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},E.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),s=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(s){n=0;for(var i=(s=s.slice(0)).length;n<i;++n)s[n].apply(this,t)}return this},E.prototype.emitReserved=E.prototype.emit,E.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},E.prototype.hasListeners=function(e){return!!this.listeners(e).length};const C="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function S(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})}const N=C.setTimeout,P=C.clearTimeout;function R(e,t){t.useNativeTimers?(e.setTimeoutFn=N.bind(C),e.clearTimeoutFn=P.bind(C)):(e.setTimeoutFn=C.setTimeout.bind(C),e.clearTimeoutFn=C.clearTimeout.bind(C))}class q extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class B extends E{constructor(e){super(),this.writable=!1,R(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,s){return super.emitReserved("error",new q(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=v(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t}(e);return t.length?"?"+t:""}}const x="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,U={};let j,F=0,D=0;function M(e){let t="";do{t=x[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function z(){const e=M(+new Date);return e!==j?(F=0,j=e):e+"."+M(F++)}for(;D<L;D++)U[x[D]]=D;let W=!1;try{W="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(c){}const V=W;function K(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||V))return new XMLHttpRequest}catch(e){}if(!t)try{return new(C[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function H(){}const G=null!=new K({xdomain:!1}).responseType;class J extends E{constructor(e,t){super(),R(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=S(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const s=this.xhr=new K(t);try{s.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&s.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{s.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(s.timeout=this.opts.requestTimeout),s.onreadystatechange=()=>{var e;3===s.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(s)),4===s.readyState&&(200===s.status||1223===s.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof s.status?s.status:0)}),0))},s.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=J.requestsCount++,J.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=H,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete J.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function Y(){for(let e in J.requests)J.requests.hasOwnProperty(e)&&J.requests[e].abort()}J.requestsCount=0,J.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",Y):"function"==typeof addEventListener&&addEventListener("onpagehide"in C?"pagehide":"unload",Y,!1));const $="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Q=C.WebSocket||C.MozWebSocket,X="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),Z={websocket:class extends B{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=X?{}:S(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=X?new Q(e,t,s):t?new Q(e,t):new Q(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],n=t===e.length-1;f(s,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}n&&$((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=z()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Q}},webtransport:class extends B{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){A||(A=new TextDecoder);const s=[];let n=0,i=-1,o=!1;return new TransformStream({transform(r,c){for(s.push(r);;){if(0===n){if(_(s)<1)break;const e=O(s,1);o=128==(128&e[0]),i=127&e[0],n=i<126?3:126===i?1:2}else if(1===n){if(_(s)<2)break;const e=O(s,2);i=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),n=3}else if(2===n){if(_(s)<8)break;const e=O(s,8),t=new DataView(e.buffer,e.byteOffset,e.length),o=t.getUint32(0);if(o>Math.pow(2,21)-1){c.enqueue(u);break}i=o*Math.pow(2,32)+t.getUint32(4),n=3}else{if(_(s)<i)break;const e=O(s,i);c.enqueue(v(o?e:A.decode(e),t)),n=0}if(0===i||i>e){c.enqueue(u);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),n=I();n.readable.pipeTo(e.writable),this.writer=n.writable.getWriter();const i=()=>{s.read().then((({done:e,value:t})=>{e||(this.onPacket(t),i())})).catch((e=>{}))};i();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this.writer.write(o).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],n=t===e.length-1;this.writer.write(s).then((()=>{n&&$((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends B{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port}const t=e&&e.forceBase64;this.supportsBinary=G&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const s=e.split(T),n=[];for(let e=0;e<s.length;e++){const i=v(s[e],t);if(n.push(i),"error"===i.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const s=e.length,n=new Array(s);let i=0;e.forEach(((e,o)=>{f(e,!1,(e=>{n[o]=e,++i===s&&t(n.join(T))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=z()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new J(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},ee=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,te=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function se(e){const t=e,s=e.indexOf("["),n=e.indexOf("]");-1!=s&&-1!=n&&(e=e.substring(0,s)+e.substring(s,n).replace(/:/g,";")+e.substring(n,e.length));let i=ee.exec(e||""),o={},r=14;for(;r--;)o[te[r]]=i[r]||"";return-1!=s&&-1!=n&&(o.source=t,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,o.path),o.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,o.query),o}class ne extends E{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=se(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=se(t.host).host),R(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e<n;e++){let n=s[e].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Z[e](s)}open(){let e;if(this.opts.rememberUpgrade&&ne.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),s=!1;ne.priorWebsocketSuccess=!1;const n=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!s)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;ne.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function i(){s||(s=!0,u(),t.close(),t=null)}const o=e=>{const s=new Error("probe error: "+e);s.transport=t.name,i(),this.emitReserved("upgradeError",s)};function r(){o("transport closed")}function c(){o("socket closed")}function a(e){t&&e.name!==t.name&&i()}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",r),this.off("close",c),this.off("upgrading",a)};t.once("open",n),t.once("error",o),t.once("close",r),this.once("close",c),this.once("upgrading",a),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{s||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",ne.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let s=0;s<this.writeBuffer.length;s++){const n=this.writeBuffer[s].data;if(n&&(e+="string"==typeof(t=n)?function(e){let t=0,s=0;for(let n=0,i=e.length;n<i;n++)t=e.charCodeAt(n),t<128?s+=1:t<2048?s+=2:t<55296||t>=57344?s+=3:(n++,s+=4);return s}(t):Math.ceil(1.33*(t.byteLength||t.size))),s>0&&e>this.maxPayload)return this.writeBuffer.slice(0,s);e+=2}var t;return this.writeBuffer}write(e,t,s){return this.sendPacket("message",e,t,s),this}send(e,t,s){return this.sendPacket("message",e,t,s),this}sendPacket(e,t,s,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const i={type:e,data:t,options:s};this.emitReserved("packetCreate",i),this.writeBuffer.push(i),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){ne.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s<n;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}ne.protocol=4;const ie="function"==typeof ArrayBuffer,oe=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,re=Object.prototype.toString,ce="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===re.call(Blob),ae="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===re.call(File);function ue(e){return ie&&(e instanceof ArrayBuffer||oe(e))||ce&&e instanceof Blob||ae&&e instanceof File}function le(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,s=e.length;t<s;t++)if(le(e[t]))return!0;return!1}if(ue(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return le(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&le(e[t]))return!0;return!1}function he(e){const t=[],s=e.data,n=e;return n.data=pe(s,t),n.attachments=t.length,{packet:n,buffers:t}}function pe(e,t){if(!e)return e;if(ue(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n<e.length;n++)s[n]=pe(e[n],t);return s}if("object"==typeof e&&!(e instanceof Date)){const s={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(s[n]=pe(e[n],t));return s}return e}function fe(e,t){return e.data=de(e.data,t),delete e.attachments,e}function de(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let s=0;s<e.length;s++)e[s]=de(e[s],t);else if("object"==typeof e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&(e[s]=de(e[s],t));return e}const ge=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var me;function ye(e){return"[object Object]"===Object.prototype.toString.call(e)}!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(me||(me={}));class be extends E{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===me.BINARY_EVENT;s||t.type===me.BINARY_ACK?(t.type=s?me.EVENT:me.ACK,this.reconstructor=new ve(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!ue(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===me[s.type])throw new Error("unknown packet type "+s.type);if(s.type===me.BINARY_EVENT||s.type===me.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const i=e.substring(n,t);if(i!=Number(i)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(i)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!be.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case me.CONNECT:return ye(t);case me.DISCONNECT:return void 0===t;case me.CONNECT_ERROR:return"string"==typeof t||ye(t);case me.EVENT:case me.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===ge.indexOf(t[0]));case me.ACK:case me.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class ve{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=fe(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var ke=Object.freeze({__proto__:null,protocol:5,get PacketType(){return me},Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==me.EVENT&&e.type!==me.ACK||!le(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===me.EVENT?me.BINARY_EVENT:me.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==me.BINARY_EVENT&&e.type!==me.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=he(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}},Decoder:be});function we(e,t,s){return e.on(t,s),function(){e.off(t,s)}}const Te=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Ie extends E{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[we(e,"open",this.onopen.bind(this)),we(e,"packet",this.onpacket.bind(this)),we(e,"error",this.onerror.bind(this)),we(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Te.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const s={type:me.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const i=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),n);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(i),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,i)=>{t.push(((e,t)=>s?e?i(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:me.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case me.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case me.EVENT:case me.BINARY_EVENT:this.onevent(e);break;case me.ACK:case me.BINARY_ACK:this.onack(e);break;case me.DISCONNECT:this.ondisconnect();break;case me.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,t.packet({type:me.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:me.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function Ae(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Ae.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},Ae.prototype.reset=function(){this.attempts=0},Ae.prototype.setMin=function(e){this.ms=e},Ae.prototype.setMax=function(e){this.max=e},Ae.prototype.setJitter=function(e){this.jitter=e};class _e extends E{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,R(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new Ae({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||ke;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new ne(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=we(t,"open",(function(){s.onopen(),e&&e()})),i=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},o=we(t,"error",i);if(!1!==this._timeout){const e=this._timeout,s=this.setTimeoutFn((()=>{n(),i(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}return this.subs.push(n),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(we(e,"ping",this.onping.bind(this)),we(e,"data",this.ondata.bind(this)),we(e,"error",this.onerror.bind(this)),we(e,"close",this.onclose.bind(this)),we(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){$((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new Ie(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Oe={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const s=function(e,t="",s){let n=e;s=s||"undefined"!=typeof location&&location,null==e&&(e=s.protocol+"//"+s.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?s.protocol+e:s.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==s?s.protocol+"//"+e:"https://"+e),n=se(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const i=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+i+":"+n.port+t,n.href=n.protocol+"://"+i+(s&&s.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=s.source,i=s.id,o=s.path,r=Oe[i]&&o in Oe[i].nsps;let c;return t.forceNew||t["force new connection"]||!1===t.multiplex||r?c=new _e(n,t):(Oe[i]||(Oe[i]=new _e(n,t)),c=Oe[i]),s.query&&!t.query&&(t.query=s.queryKey),c.socket(s.path,t)}Object.assign(Ee,{Manager:_e,Socket:Ie,io:Ee,connect:Ee});var Ce={notOpenAudioMsg:"麦克风没有开启",notOpenAudioCode:403,notOpenAudioMsgEn:"Permission dismissed"},Se={forbiddenAudioMsg:"请先检查您的麦克风是否开启",forbiddenAudioCode:0,forbiddenAudioMsgEn:"Permission denied"},Ne=function(){function c(e){void 0===e&&(e={});var t=this;this.getWebrtcInfo=function(e,t){a.request(e+"/call/api/sip/webrtc/config/query",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(e){e.success&&e.data?(a.agentextras=e.data,a.initWebrtcEvent(e.data)):t.error(i({},e))},error:function(e){t.error({error:e})}})},this.initAttachEvent=function(e,s,n,i,o){t.attachEventCallbacks&&a.request(e+"/platform/action/refreshWsToken",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(e){if(e&&e.data){var r="";n.forEach((function(e){"KF"===e.id&&(r=e.url)})),t.attachEventCallbacks.serve=r,t.attachEventCallbacks.SocketOptions={query:{accountId:i.accountId,agentNumber:i.agentNumber,agentId:i._id,token:e.data.wsToken,wsExtra:JSON.stringify({loginType:s,channelType:"SDK",ability:["call"]}),timestamp:e.data.timestamp,clientType:1},reconnectionDelay:3e3,"force new connection":!0,transports:["websocket"],timeout:5e3},t.attachEventCallbacks.suc=o,a.createEventHandle(t.attachEventCallbacks)}},error:function(e){n.error({error:e})}})},this.openMediaAudio=function(e,t){var s=navigator,n=s.mediaDevices,i=s.getUserMedia,o=s.webkitGetUserMedia,r=s.mozGetUserMedia,c=s.msGetUserMedia,a=(i||o||r||c).bind(navigator);return n?navigator.mediaDevices.getUserMedia({audio:!0}).catch((function(s){var n=s.message.includes("denied");return t?(n&&alert(Se.forbiddenAudioMsg),e&&!n&&alert(e),n?Se:Ce):n?Se:Ce})):new Promise((function(s,n){a?a({audio:!0},(function(e){s(!0)}),(function(s){t&&e&&alert(e),n(Ce)})):n(Ce)}))},this.listenCallEvent=function(e){t.attachEventCallbacks=e},this._callApi=function(){var e,s,n=t;return{callout:function(t){return o(this,void 0,void 0,(function(){var o,c,u,l,h,p;return r(this,(function(r){switch(r.label){case 0:if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null===a.loginToken||void 0===a.loginToken)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null===a.agentInfo||void 0===a.agentInfo)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null===t.customerNumber||void 0===t.customerNumber)return t.fail({success:!1,message:"Parameter customerNumber is required!"}),[2];if("WEBRTC"!==a.initOptions.loginType)return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,navigator.mediaDevices.getUserMedia({audio:!0})];case 2:return r.sent(),[3,4];case 3:return r.sent(),t.fail({success:!1,message:"无麦克风权限!"}),[2];case 4:if(o=a.initOptions.server||a.callApiUrl,c={customerNumber:t.customerNumber,agentNumber:a.agentInfo.agentNumber,accountId:a.agentInfo.accountId,agentId:a.agentInfo._id,loginType:t.loginType||a.agentInfo.loginType||a.initOptions.loginType},t.agentTimeout&&(c.agentTimeout=t.agentTimeout),t.customerTimeout&&(c.customerTimeout=t.customerTimeout),t.agentDisNumber&&(c.agentDisNumber=t.agentDisNumber),t.customerDisNumber&&(c.customerDisNumber=t.customerDisNumber),t.extras&&(c.extras=t.extras),t.numberGroupId&&(c.numberGroupId=t.numberGroupId),t.numberGroupName&&(c.numberGroupName=t.numberGroupName),u=a.initOptions,l=!0,"WEBRTC"!==u.loginType)return[3,8];r.label=5;case 5:return r.trys.push([5,7,,8]),[4,n.openMediaAudio("请打开麦克风权限!",l)];case 6:return h=r.sent()||{},[3,8];case 7:return p=r.sent(),console.log(p),[3,8];case 8:return a.request(o+"/call/api/call/call/out",{verb:"POST",body:c,loginToken:a.loginToken,sessionId:a.agentInfo._id,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success(i(i({success:!0,message:"callout success"},h),e.data)):t.fail(i({success:!1,message:e.message,code:e.code},h))}}),[2]}}))}))},hangup:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/hangup",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"hangup success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},holdOrUnHold:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl,i={type:t.type};a.request(n+"/call/api/call/hold",{verb:"POST",body:i,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"holdOrUnHold success"}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},muteOrUnMute:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl,i={type:t.type,direction:t.direction||"all"};a.request(n+"/call/api/call/mute",{verb:"POST",body:i,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"muteOrUnMute success"}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},transfer:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type)if(null!==t.number&&void 0!==t.number){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/transfer",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"transfer success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},consult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.mode&&void 0!==t.mode)if(null!==t.number&&void 0!==t.number){t.agentNumber=a.agentInfo.agentNumber;var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"consult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"Parameter mode is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},cancelconsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/cancel",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"cancelconsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},endConsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/stop",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"endConsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},callbackConsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/resume",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"resumeConsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},consultTransfer:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/transfer",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"consultTransfer success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},threeWayCall:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/threeway",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"threeWayCall success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},evaluate:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/evaluate",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"evaluate success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},meeting:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.number&&void 0!==t.number){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/meeting",{verb:"POST",body:{meetingType:"phone",number:t.number},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"meeting success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})}}},this._agentApi=function(){var e=t;return{switchLoginType:function(t){return o(this,void 0,void 0,(function(){var s,n,c,u,l,h,p=this;return r(this,(function(f){switch(f.label){case 0:if(s=null,t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null===t.loginType||void 0===t.loginType)return t.fail({success:!1,message:"Parameter loginType is required!"}),[2];if(null===a.agentInfo||void 0===a.agentInfo)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null!==t.loginNumber&&void 0!==t.loginNumber&&(s=t.loginNumber),"PSTN"===t.loginType&&!(s=s||a.agentInfo.mobile))return alert("请给座席绑定手机号,或者传入号码参数!"),t.fail({success:!1,message:"Please bind your mobile number"}),[2];if("SIP"===t.loginType&&(s=s||a.agentInfo.sipNumber),"WEBRTC"===t.loginType&&(s=a.agentInfo.webrtcSipNumber),n=a.initOptions.server||a.callApiUrl,c={loginType:t.loginType,loginNumber:s},a.initOptions,l=!0,"WEBRTC"!==t.loginType)return[3,4];f.label=1;case 1:return f.trys.push([1,3,,4]),[4,e.openMediaAudio("请打开麦克风权限!",l)];case 2:return u=f.sent()||{},[3,4];case 3:return h=f.sent(),console.log(h),[3,4];case 4:return a.request(n+"/call/api/agent/v1/login-type/change",{verb:"POST",body:c,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(s){return o(p,void 0,void 0,(function(){return r(this,(function(o){switch(o.label){case 0:return s.success?(t.success(i({success:!0,message:"updateLoginType success"},u)),a.agentInfo.loginType=t.loginType,a.initOptions.loginType=t.loginType,"WEBRTC"!==t.loginType?[3,1]:(e._webPhoneApi().connect(),[3,4])):[3,5];case 1:return"PSTN"!==t.loginType?[3,3]:[4,a.request(n+"/platform/action/updateCallConfig",{verb:"POST",body:{agentCallConfig:{},mobile:t.loginNumber},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId})];case 2:return o.sent(),e._webPhoneApi().disconnect(),[3,4];case 3:e._webPhoneApi().disconnect(),o.label=4;case 4:return[3,6];case 5:t.fail(i({success:!1,message:s.message,code:s.code},u)),o.label=6;case 6:return[2]}}))}))}}),[2]}}))}))},findPhoneBarList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/phone/bar/all",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){if(t.success){var s=[];t.data.forEach((function(e){var t={name:e.name,number:e.number};s.push(t)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},switchPhoneBar:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==e.stateNumber&&void 0!==e.stateNumber)if(null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl,s={stateNumber:e.stateNumber,accountId:a.agentInfo.accountId,agentNumber:a.agentInfo.agentNumber};a.request(t+"/call/api/agent/status/switch",{verb:"POST",body:s,loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(t){t.success?e.success({success:!0}):e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"});else e.fail({success:!1,message:"Parameter stateNumber is required!"})},logout:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){null!==e.toAnswerOffline&&void 0!==e.toAnswerOffline||(e.toAnswerOffline="1");var t=a.initOptions.server||a.callApiUrl,s={toAnswerOffline:e.toAnswerOffline};a.request(t+"/call/api/sdk/agent/logout",{verb:"POST",body:s,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){t.success?e&&(a.Socketinstance.disconnect(),"WEBRTC"===a.agentInfo.loginType&&a.webPhone.disconnect(),e.success({success:!0})):e&&e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},findIdleAgentsForQueue:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/queue/acountFreeAgent/find",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){t.success?e&&e.success({success:!0,dataList:t.data||[]}):e&&e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},getAvailableSipNumberList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/sip/avaliable/query",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(t){if(t.success&&t.data){var s=[];t.data.forEach((function(e){var t={number:e.id,numberName:e.number};s.push(t)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})}}},this._webPhoneApi=function(){return{accept:function(){a.webPhone.accept()},connect:function(){a.webPhone&&this.isConnected()||a.initWebrtcEvent(a.agentextras)},disconnect:function(){a.webPhone&&this.isConnected()&&a.webPhone.disconnect()},isConnected:function(){return a.webPhone.isConnected()},sendDTMF:function(e){a.webPhone.sendDTMF(e)}}},e.error="function"==typeof e.error?e.error:a.noop,e.success="function"==typeof e.success?e.success:a.noop,null!==e.agentNumber&&void 0!==e.agentNumber?(null!==e.loginType&&void 0!==e.loginType||(e.loginType="PSTN"),this.init(e)):e.error({message:"Invalid agentNumber"})}var a;return c.noop=function(){},c.prototype.init=function(e){if(void 0===e&&(e={}),a.trace=a.noop,a.debug=a.noop,a.log=a.noop,a.warn=a.noop,a.error=a.noop,!0===e.debug||"all"===e.debug)a.trace=console.trace.bind(console),a.debug=console.debug.bind(console),a.log=console.log.bind(console),a.warn=console.warn.bind(console),a.error=console.error.bind(console);else if(Array.isArray(e.debug))for(var t in e.debug){var s=e.debug[t];switch(s){case"trace":a.trace=console.trace.bind(console);break;case"debug":a.debug=console.debug.bind(console);break;case"log":a.log=console.log.bind(console);break;case"warn":a.warn=console.warn.bind(console);break;case"error":a.error=console.error.bind(console);break;default:console.error("Unknown debugging option '"+s+"' (supported: 'trace', 'debug', 'log', warn', 'error')")}}a.log("Initializing library");var n=a.useDefaultDependencies({WebSocket:Pe});a.newWebSocket=n.newWebSocket,a.request=n.request,this.login(e)},c.prototype.login=function(e){return o(this,void 0,void 0,(function(){var o,c,u,l,h,p,f,d=this;return r(this,(function(r){switch(r.label){case 0:if(o=e.server||a.callApiUrl,c=e.agentNumber+"@"+e.accountId,u=e.loginType,l={loginName:c,loginType:u,loginChannel:"SDK",password:""},h=!0,"WEBRTC"!==u)return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.openMediaAudio("请打开麦克风权限!",h)];case 2:return p=r.sent()||{},[3,4];case 3:return f=r.sent(),console.log(f),console.log("授权失败================================"),[3,4];case 4:return e.password&&(l.password=e.password),a.request(o+"/platform/public/loginPre",{verb:"GET",success:function(r){if(r&&r.success&&r.data){var c=decodeURIComponent(t.Base64.decode(r.data.pk)),h=new n.JSEncrypt;h.setPublicKey(c);var f=s(l.password),g=h.encrypt(f);l.password=g,a.request(o+"/platform/public/login",{verb:"POST",body:l,success:function(t){t.success?a.request(o+"/platform/action/loginInfo",{verb:"GET",loginToken:t.data.loginToken,sessionId:t.data.sessionId,success:function(t){t.success?(t.data.agent&&(a.agentInfo=t.data.agent,a.loginToken=t.data.loginToken,a.initOptions=i(i({},e),{audioInfo:p})),d.initAttachEvent(o,u,t.data.pushServer,t.data.agent,e.success),"WEBRTC"===u&&d.getWebrtcInfo(o,e)):e.error(i(i({},t),p))},error:function(t){e.error(i({error:t},p))}}):e.error(i(i({},t),p))},error:function(t){e.error(i({error:t},p))}})}else e.error(i(i({},r),p))},error:function(t){e.error(i({error:t},p))}}),[2]}}))}))},c.createEventHandle=function(e){var t=this;void 0===e&&(e={}),e.success="function"==typeof e.success?e.success:a.noop,e.error="function"==typeof e.error?e.error:a.noop,e.message="function"==typeof e.message?e.message:a.noop,e.event="function"==typeof e.event?e.event:a.noop,e.server=null===e.serve||void 0===e.serve?"ws://152.136.72.209:3201/phoneBarGateway":e.serve,null!==e.SocketOptions&&void 0!==e.SocketOptions||(e.SocketOptions={},a.error({message:"login response error!"})),this.Socketinstance=a.newWebSocket(e.server,e.SocketOptions),this.Socketinstance.on("connect",(function(){e.success("connect event serve success!"),e.suc()})),this.Socketinstance.on("error",(function(t,s){e.error({type:"socketError",error:t}),s&&"function"==typeof s&&s("error")})),this.Socketinstance.on("message",(function(t,s){e.message({subtype:t.subType,data:t.data}),"WEBRTC"===a.initOptions.loginType&&(t.data&&t.data.callType&&"callin"===t.data.callType&&t.data.eventType&&"ring"===t.data.eventType?(a.AudioTask||(a.AudioTask=new Re("https://softphone.useasy.cn/ring.wav")),a.AudioTask.ringAudioPlay()):a.AudioTask&&a.AudioTask.ringAudioPause()),s&&"function"==typeof s&&s("success")})),this.Socketinstance.on("event",(function(s){if("KICK_OFF"===s.subType){t.Socketinstance.disconnect();try{a.webPhone.disconnect()}catch(e){}e.event({message:"坐席账户在其他地方登录"})}}))},c.useDefaultDependencies=function(e){var t=e&&e.fetch||fetch,s=e&&e.Promise||Promise,n=e&&e.WebSocket||WebSocket;return{newWebSocket:function(e,t){return new n(e,t)},request:function(e,n){var i={method:n.verb,cache:"no-cache",headers:{"Content-Type":"application/json",loginToken:n.loginToken||"",sessionId:n.sessionId||"",clienttype:0}};n.encryptionFields&&(i.headers["ue-encryption-algorithm"]=n.encryptionAlgorithm||"aes",i.headers["ue-encryption-fields"]=n.encryptionFields),void 0!==n.withCredentials&&(i.credentials=!0===n.withCredentials?"include":n.withCredentials?n.withCredentials:"omit"),void 0!==n.body&&(i.body=JSON.stringify(n.body));var o=t(e,i).catch((function(e){return s.reject({message:"Probably a network error, is the gateway down?",error:e})}));if(void 0!==n.timeout){var r=new s((function(e,t){var s=window.setTimeout((function(){return clearTimeout(s),n.error({message:"Request timed out",timeout:n.timeout}),t({message:"Request timed out",timeout:n.timeout})}),n.timeout)}));o=s.race([o,r])}return o.then((function(e){return e.ok?typeof n.success==typeof a.noop?e.json().then((function(e){n.success(e)})).catch((function(t){return n.error({message:"Failed to parse response body",error:t,response:e}),s.reject({message:"Failed to parse response body",error:t,response:e})})):void 0:(n.error({message:"API call failed",response:e}),s.reject({message:"API call failed",response:e}))})).catch((function(e){typeof n.error==typeof a.noop&&n.error(e.message||"<< internal error >>",e)})),o}}},Object.defineProperty(c.prototype,"agent",{get:function(){return this._agentApi()},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"webrtc",{get:function(){return this._webPhoneApi()},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"call",{get:function(){return this._callApi()},enumerable:!1,configurable:!0}),a=c,c.callApiUrl="https://app.useasy.cn/api",c.Socketinstance=null,c.AudioTask=null,c.initWebrtcEvent=function(t){return o(void 0,void 0,void 0,(function(){return r(a,(function(s){switch(s.label){case 0:return a.webPhone=new e.UeWebrtc({server:t.wssUrl,sip:t.sip,secret:t.password}),[4,this.webPhone.connect()];case 1:return s.sent(),this.webPhone.register(),[2]}}))}))},c}(),Pe=function(){function e(e,t){delete t.path,delete t.hostname,delete t.port,this.ws=Ee.connect("wss://".concat(e),t)}return e.prototype.on=function(e,t){"connect"===e&&this.ws.on(e,t),"error"===e&&(this.ws.on("connect_error",t),this.ws.on("error",t),this.ws.on("disconnect",t),this.ws.on("reconnect_failed",t)),"message"===e&&this.ws.on("call",t),"event"===e&&this.ws.on("event",t)},e.prototype.emit=function(e,t,s){this.ws.emit(e,t,s)},e.prototype.disconnect=function(){this.ws.disconnect()},e}(),Re=function(){function e(e){this.ringAudio=new Audio(e),this.ringAudio.loop=!0,this.ringAudioRunning=!1}return e.prototype.ringAudioPlay=function(){return o(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return this.ringAudioRunning?[2]:[3,1];case 1:return[4,this.ringAudio.play()];case 2:e.sent(),this.ringAudioRunning=!0,e.label=3;case 3:return[2]}}))}))},e.prototype.ringAudioPause=function(){return o(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return this.ringAudio.paused?[3,2]:[4,this.ringAudio.pause()];case 1:e.sent(),this.ringAudioRunning=!1,e.label=2;case 2:return[2]}}))}))},e}();module.exports=Ne;
7
+ const c=Object.create(null);c.open="0",c.close="1",c.ping="2",c.pong="3",c.message="4",c.upgrade="5",c.noop="6";const a=Object.create(null);Object.keys(c).forEach((e=>{a[c[e]]=e}));const u={type:"error",data:"parser error"},l="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),h="function"==typeof ArrayBuffer,p=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,f=({type:e,data:t},s,n)=>l&&t instanceof Blob?s?n(t):d(t,n):h&&(t instanceof ArrayBuffer||p(t))?s?n(t):d(new Blob([t]),n):n(c[e]+(t||"")),d=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};function g(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let m;const y="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)y["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charCodeAt(e)]=e;const b="function"==typeof ArrayBuffer,v=(e,t)=>{if("string"!=typeof e)return{type:"message",data:w(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:k(e.substring(1),t)}:a[s]?e.length>1?{type:a[s],data:e.substring(1)}:{type:a[s]}:u},k=(e,t)=>{if(b){const s=(e=>{let t,s,n,o,i,r=.75*e.length,c=e.length,a=0;"="===e[e.length-1]&&(r--,"="===e[e.length-2]&&r--);const u=new ArrayBuffer(r),l=new Uint8Array(u);for(t=0;t<c;t+=4)s=y[e.charCodeAt(t)],n=y[e.charCodeAt(t+1)],o=y[e.charCodeAt(t+2)],i=y[e.charCodeAt(t+3)],l[a++]=s<<2|n>>4,l[a++]=(15&n)<<4|o>>2,l[a++]=(3&o)<<6|63&i;return u})(e);return w(s,t)}return{base64:!0,data:e}},w=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,T=String.fromCharCode(30);function I(){return new TransformStream({transform(e,t){!function(e,t){l&&e.data instanceof Blob?e.data.arrayBuffer().then(g).then(t):h&&(e.data instanceof ArrayBuffer||p(e.data))?t(g(e.data)):f(e,!1,(e=>{m||(m=new TextEncoder),t(m.encode(e))}))}(e,(s=>{const n=s.length;let o;if(n<126)o=new Uint8Array(1),new DataView(o.buffer).setUint8(0,n);else if(n<65536){o=new Uint8Array(3);const e=new DataView(o.buffer);e.setUint8(0,126),e.setUint16(1,n)}else{o=new Uint8Array(9);const e=new DataView(o.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(n))}e.data&&"string"!=typeof e.data&&(o[0]|=128),t.enqueue(o),t.enqueue(s)}))}})}let A;function _(e){return e.reduce(((e,t)=>e+t.length),0)}function O(e,t){if(e[0].length===t)return e.shift();const s=new Uint8Array(t);let n=0;for(let o=0;o<t;o++)s[o]=e[0][n++],n===e[0].length&&(e.shift(),n=0);return e.length&&n<e[0].length&&(e[0]=e[0].slice(n)),s}function E(e){if(e)return function(e){for(var t in E.prototype)e[t]=E.prototype[t];return e}(e)}E.prototype.on=E.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},E.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},E.prototype.off=E.prototype.removeListener=E.prototype.removeAllListeners=E.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var o=0;o<n.length;o++)if((s=n[o])===t||s.fn===t){n.splice(o,1);break}return 0===n.length&&delete this._callbacks["$"+e],this},E.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),s=this._callbacks["$"+e],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(s){n=0;for(var o=(s=s.slice(0)).length;n<o;++n)s[n].apply(this,t)}return this},E.prototype.emitReserved=E.prototype.emit,E.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},E.prototype.hasListeners=function(e){return!!this.listeners(e).length};const C="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function S(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})}const N=C.setTimeout,P=C.clearTimeout;function R(e,t){t.useNativeTimers?(e.setTimeoutFn=N.bind(C),e.clearTimeoutFn=P.bind(C)):(e.setTimeoutFn=C.setTimeout.bind(C),e.clearTimeoutFn=C.clearTimeout.bind(C))}class q extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class B extends E{constructor(e){super(),this.writable=!1,R(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,s){return super.emitReserved("error",new q(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=v(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t}(e);return t.length?"?"+t:""}}const x="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),L=64,U={};let D,j=0,F=0;function M(e){let t="";do{t=x[e%L]+t,e=Math.floor(e/L)}while(e>0);return t}function z(){const e=M(+new Date);return e!==D?(j=0,D=e):e+"."+M(j++)}for(;F<L;F++)U[x[F]]=F;let W=!1;try{W="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(c){}const V=W;function K(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||V))return new XMLHttpRequest}catch(e){}if(!t)try{return new(C[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function H(){}const G=null!=new K({xdomain:!1}).responseType;class J extends E{constructor(e,t){super(),R(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=S(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const s=this.xhr=new K(t);try{s.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&s.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{s.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(s.timeout=this.opts.requestTimeout),s.onreadystatechange=()=>{var e;3===s.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(s)),4===s.readyState&&(200===s.status||1223===s.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof s.status?s.status:0)}),0))},s.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=J.requestsCount++,J.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=H,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete J.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}function Y(){for(let e in J.requests)J.requests.hasOwnProperty(e)&&J.requests[e].abort()}J.requestsCount=0,J.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",Y):"function"==typeof addEventListener&&addEventListener("onpagehide"in C?"pagehide":"unload",Y,!1));const $="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),Q=C.WebSocket||C.MozWebSocket,X="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase(),Z={websocket:class extends B{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=X?{}:S(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=X?new Q(e,t,s):t?new Q(e,t):new Q(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],n=t===e.length-1;f(s,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}n&&$((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=z()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!Q}},webtransport:class extends B{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){A||(A=new TextDecoder);const s=[];let n=0,o=-1,i=!1;return new TransformStream({transform(r,c){for(s.push(r);;){if(0===n){if(_(s)<1)break;const e=O(s,1);i=128==(128&e[0]),o=127&e[0],n=o<126?3:126===o?1:2}else if(1===n){if(_(s)<2)break;const e=O(s,2);o=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),n=3}else if(2===n){if(_(s)<8)break;const e=O(s,8),t=new DataView(e.buffer,e.byteOffset,e.length),i=t.getUint32(0);if(i>Math.pow(2,21)-1){c.enqueue(u);break}o=i*Math.pow(2,32)+t.getUint32(4),n=3}else{if(_(s)<o)break;const e=O(s,o);c.enqueue(v(i?e:A.decode(e),t)),n=0}if(0===o||o>e){c.enqueue(u);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),n=I();n.readable.pipeTo(e.writable),this.writer=n.writable.getWriter();const o=()=>{s.read().then((({done:e,value:t})=>{e||(this.onPacket(t),o())})).catch((e=>{}))};o();const i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this.writer.write(i).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],n=t===e.length-1;this.writer.write(s).then((()=>{n&&$((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends B{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port}const t=e&&e.forceBase64;this.supportsBinary=G&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const s=e.split(T),n=[];for(let e=0;e<s.length;e++){const o=v(s[e],t);if(n.push(o),"error"===o.type)break}return n})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const s=e.length,n=new Array(s);let o=0;e.forEach(((e,i)=>{f(e,!1,(e=>{n[i]=e,++o===s&&t(n.join(T))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=z()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new J(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},ee=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,te=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function se(e){const t=e,s=e.indexOf("["),n=e.indexOf("]");-1!=s&&-1!=n&&(e=e.substring(0,s)+e.substring(s,n).replace(/:/g,";")+e.substring(n,e.length));let o=ee.exec(e||""),i={},r=14;for(;r--;)i[te[r]]=o[r]||"";return-1!=s&&-1!=n&&(i.source=t,i.host=i.host.substring(1,i.host.length-1).replace(/;/g,":"),i.authority=i.authority.replace("[","").replace("]","").replace(/;/g,":"),i.ipv6uri=!0),i.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,i.path),i.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,i.query),i}class ne extends E{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=se(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=se(t.host).host),R(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e<n;e++){let n=s[e].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new Z[e](s)}open(){let e;if(this.opts.rememberUpgrade&&ne.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),s=!1;ne.priorWebsocketSuccess=!1;const n=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!s)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;ne.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{s||"closed"!==this.readyState&&(u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function o(){s||(s=!0,u(),t.close(),t=null)}const i=e=>{const s=new Error("probe error: "+e);s.transport=t.name,o(),this.emitReserved("upgradeError",s)};function r(){i("transport closed")}function c(){i("socket closed")}function a(e){t&&e.name!==t.name&&o()}const u=()=>{t.removeListener("open",n),t.removeListener("error",i),t.removeListener("close",r),this.off("close",c),this.off("upgrading",a)};t.once("open",n),t.once("error",i),t.once("close",r),this.once("close",c),this.once("upgrading",a),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{s||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",ne.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let s=0;s<this.writeBuffer.length;s++){const n=this.writeBuffer[s].data;if(n&&(e+="string"==typeof(t=n)?function(e){let t=0,s=0;for(let n=0,o=e.length;n<o;n++)t=e.charCodeAt(n),t<128?s+=1:t<2048?s+=2:t<55296||t>=57344?s+=3:(n++,s+=4);return s}(t):Math.ceil(1.33*(t.byteLength||t.size))),s>0&&e>this.maxPayload)return this.writeBuffer.slice(0,s);e+=2}var t;return this.writeBuffer}write(e,t,s){return this.sendPacket("message",e,t,s),this}send(e,t,s){return this.sendPacket("message",e,t,s),this}sendPacket(e,t,s,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const o={type:e,data:t,options:s};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){ne.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s<n;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}ne.protocol=4;const oe="function"==typeof ArrayBuffer,ie=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer,re=Object.prototype.toString,ce="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===re.call(Blob),ae="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===re.call(File);function ue(e){return oe&&(e instanceof ArrayBuffer||ie(e))||ce&&e instanceof Blob||ae&&e instanceof File}function le(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,s=e.length;t<s;t++)if(le(e[t]))return!0;return!1}if(ue(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return le(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&le(e[t]))return!0;return!1}function he(e){const t=[],s=e.data,n=e;return n.data=pe(s,t),n.attachments=t.length,{packet:n,buffers:t}}function pe(e,t){if(!e)return e;if(ue(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n<e.length;n++)s[n]=pe(e[n],t);return s}if("object"==typeof e&&!(e instanceof Date)){const s={};for(const n in e)Object.prototype.hasOwnProperty.call(e,n)&&(s[n]=pe(e[n],t));return s}return e}function fe(e,t){return e.data=de(e.data,t),delete e.attachments,e}function de(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let s=0;s<e.length;s++)e[s]=de(e[s],t);else if("object"==typeof e)for(const s in e)Object.prototype.hasOwnProperty.call(e,s)&&(e[s]=de(e[s],t));return e}const ge=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var me;function ye(e){return"[object Object]"===Object.prototype.toString.call(e)}!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(me||(me={}));class be extends E{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===me.BINARY_EVENT;s||t.type===me.BINARY_ACK?(t.type=s?me.EVENT:me.ACK,this.reconstructor=new ve(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!ue(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===me[s.type])throw new Error("unknown packet type "+s.type);if(s.type===me.BINARY_EVENT||s.type===me.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const o=e.substring(n,t);if(o!=Number(o)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(o)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!be.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case me.CONNECT:return ye(t);case me.DISCONNECT:return void 0===t;case me.CONNECT_ERROR:return"string"==typeof t||ye(t);case me.EVENT:case me.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===ge.indexOf(t[0]));case me.ACK:case me.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class ve{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=fe(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var ke=Object.freeze({__proto__:null,protocol:5,get PacketType(){return me},Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==me.EVENT&&e.type!==me.ACK||!le(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===me.EVENT?me.BINARY_EVENT:me.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==me.BINARY_EVENT&&e.type!==me.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=he(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}},Decoder:be});function we(e,t,s){return e.on(t,s),function(){e.off(t,s)}}const Te=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class Ie extends E{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[we(e,"open",this.onopen.bind(this)),we(e,"packet",this.onpacket.bind(this)),we(e,"error",this.onerror.bind(this)),we(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Te.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const s={type:me.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!n||!this.connected)||(this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s)),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const o=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),n);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(o),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,o)=>{t.push(((e,t)=>s?e?o(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:me.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case me.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case me.EVENT:case me.BINARY_EVENT:this.onevent(e);break;case me.ACK:case me.BINARY_ACK:this.onack(e);break;case me.DISCONNECT:this.ondisconnect();break;case me.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,t.packet({type:me.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:me.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function Ae(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Ae.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},Ae.prototype.reset=function(){this.attempts=0},Ae.prototype.setMin=function(e){this.ms=e},Ae.prototype.setMax=function(e){this.max=e},Ae.prototype.setJitter=function(e){this.jitter=e};class _e extends E{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,R(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new Ae({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||ke;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new ne(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=we(t,"open",(function(){s.onopen(),e&&e()})),o=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},i=we(t,"error",o);if(!1!==this._timeout){const e=this._timeout,s=this.setTimeoutFn((()=>{n(),o(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}return this.subs.push(n),this.subs.push(i),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(we(e,"ping",this.onping.bind(this)),we(e,"data",this.ondata.bind(this)),we(e,"error",this.onerror.bind(this)),we(e,"close",this.onclose.bind(this)),we(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){$((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new Ie(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((()=>{this.clearTimeoutFn(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Oe={};function Ee(e,t){"object"==typeof e&&(t=e,e=void 0);const s=function(e,t="",s){let n=e;s=s||"undefined"!=typeof location&&location,null==e&&(e=s.protocol+"//"+s.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?s.protocol+e:s.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==s?s.protocol+"//"+e:"https://"+e),n=se(e)),n.port||(/^(http|ws)$/.test(n.protocol)?n.port="80":/^(http|ws)s$/.test(n.protocol)&&(n.port="443")),n.path=n.path||"/";const o=-1!==n.host.indexOf(":")?"["+n.host+"]":n.host;return n.id=n.protocol+"://"+o+":"+n.port+t,n.href=n.protocol+"://"+o+(s&&s.port===n.port?"":":"+n.port),n}(e,(t=t||{}).path||"/socket.io"),n=s.source,o=s.id,i=s.path,r=Oe[o]&&i in Oe[o].nsps;let c;return t.forceNew||t["force new connection"]||!1===t.multiplex||r?c=new _e(n,t):(Oe[o]||(Oe[o]=new _e(n,t)),c=Oe[o]),s.query&&!t.query&&(t.query=s.queryKey),c.socket(s.path,t)}Object.assign(Ee,{Manager:_e,Socket:Ie,io:Ee,connect:Ee});var Ce={notOpenAudioMsg:"麦克风没有开启",notOpenAudioCode:403,notOpenAudioMsgEn:"Permission dismissed"},Se={forbiddenAudioMsg:"请先检查您的麦克风是否开启",forbiddenAudioCode:0,forbiddenAudioMsgEn:"Permission denied"},Ne={requestState:!1,delay:0},Pe=function(){function c(e){void 0===e&&(e={});var t=this;this.getWebrtcInfo=function(e,t){a.request(e+"/call/api/sip/webrtc/config/query",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(e){e.success&&e.data?(a.agentextras=e.data,a.initWebrtcEvent(e.data)):t.error(o({},e))},error:function(e){t.error({error:e})}})},this.initAttachEvent=function(e,s,n,o,i){t.attachEventCallbacks&&a.request(e+"/platform/action/refreshWsToken",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(e){if(e&&e.data){var r="";n.forEach((function(e){"KF"===e.id&&(r=e.url)})),t.attachEventCallbacks.serve=r,t.attachEventCallbacks.SocketOptions={query:{accountId:o.accountId,agentNumber:o.agentNumber,agentId:o._id,token:e.data.wsToken,wsExtra:JSON.stringify({loginType:s,channelType:"SDK",ability:["call"]}),timestamp:e.data.timestamp,clientType:1},reconnectionDelay:3e3,"force new connection":!0,transports:["websocket"],timeout:5e3},t.attachEventCallbacks.suc=i,a.createEventHandle(t.attachEventCallbacks)}},error:function(e){n.error({error:e})}})},this.attachNetworkCallbacks={message:a.noop,error:a.noop,success:a.noop},this.initnNetworkMonitoring=function(e,s){var n="";e.forEach((function(e){if("MONITOR"===e.id){var t=document.location.protocol;"file:"===t&&(t="https:"),n=t+"//"+e.url}})),t.attachNetworkCallbacks.success(),t.attachNetworkCallbacks.message({delay:100}),setInterval((function(){var e=(new Date).getTime();Ne.requestState=!0,a.request(n+"/ready",{method:"GET",success:function(s){if(s.success){var n=(new Date).getTime();Ne.delay=(n-e)/2,t.attachNetworkCallbacks.message({delay:Ne.delay})}else t.attachNetworkCallbacks.error(),Ne.delay=500,Ne.requestState=!1},error:function(e){t.attachNetworkCallbacks.error(),Ne.delay=500,Ne.requestState=!1}})}),1e4)},this.listenCallNetork=function(e){e&&(t.attachNetworkCallbacks.message=e.message&&"function"==typeof e.message?e.message:a.noop,t.attachNetworkCallbacks.success=e.success&&"function"==typeof e.success?e.success:a.noop,t.attachNetworkCallbacks.error=e.error&&"function"==typeof e.error?e.error:a.noop)},this.openMediaAudio=function(e,t){var s=navigator,n=s.mediaDevices,o=s.getUserMedia,i=s.webkitGetUserMedia,r=s.mozGetUserMedia,c=s.msGetUserMedia,a=(o||i||r||c).bind(navigator);return n?navigator.mediaDevices.getUserMedia({audio:!0}).catch((function(s){var n=s.message.includes("denied");return t?(n&&alert(Se.forbiddenAudioMsg),e&&!n&&alert(e),n?Se:Ce):n?Se:Ce})):new Promise((function(s,n){a?a({audio:!0},(function(e){s(!0)}),(function(s){t&&e&&alert(e),n(Ce)})):n(Ce)}))},this.listenCallEvent=function(e){t.attachEventCallbacks=e},this._callApi=function(){var e,s,n=t;return{callout:function(t){return i(this,void 0,void 0,(function(){var i,c,u,l,h,p;return r(this,(function(r){switch(r.label){case 0:if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null===a.loginToken||void 0===a.loginToken)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null===a.agentInfo||void 0===a.agentInfo)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null===t.customerNumber||void 0===t.customerNumber)return t.fail({success:!1,message:"Parameter customerNumber is required!"}),[2];if("WEBRTC"!==a.initOptions.loginType)return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,navigator.mediaDevices.getUserMedia({audio:!0})];case 2:return r.sent(),[3,4];case 3:return r.sent(),t.fail({success:!1,message:"无麦克风权限!"}),[2];case 4:if(i=a.initOptions.server||a.callApiUrl,c={customerNumber:t.customerNumber,agentNumber:a.agentInfo.agentNumber,accountId:a.agentInfo.accountId,agentId:a.agentInfo._id,loginType:t.loginType||a.agentInfo.loginType||a.initOptions.loginType},t.agentTimeout&&(c.agentTimeout=t.agentTimeout),t.customerTimeout&&(c.customerTimeout=t.customerTimeout),t.agentDisNumber&&(c.agentDisNumber=t.agentDisNumber),t.customerDisNumber&&(c.customerDisNumber=t.customerDisNumber),t.extras&&(c.extras=t.extras),t.numberGroupId&&(c.numberGroupId=t.numberGroupId),t.numberGroupName&&(c.numberGroupName=t.numberGroupName),u=a.initOptions,l=!0,"WEBRTC"!==u.loginType)return[3,8];r.label=5;case 5:return r.trys.push([5,7,,8]),[4,n.openMediaAudio("请打开麦克风权限!",l)];case 6:return h=r.sent()||{},[3,8];case 7:return p=r.sent(),console.log(p),[3,8];case 8:return a.request(i+"/call/api/call/call/out",{verb:"POST",body:c,loginToken:a.loginToken,sessionId:a.agentInfo._id,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success(o(o({success:!0,message:"callout success"},h),e.data)):t.fail(o({success:!1,message:e.message,code:e.code},h))}}),[2]}}))}))},hangup:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/hangup",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"hangup success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},holdOrUnHold:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl,o={type:t.type};a.request(n+"/call/api/call/hold",{verb:"POST",body:o,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"holdOrUnHold success"}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},muteOrUnMute:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl,o={type:t.type,direction:t.direction||"all"};a.request(n+"/call/api/call/mute",{verb:"POST",body:o,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"muteOrUnMute success"}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},transfer:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type)if(null!==t.number&&void 0!==t.number){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/transfer",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"transfer success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},consult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.mode&&void 0!==t.mode)if(null!==t.number&&void 0!==t.number){t.agentNumber=a.agentInfo.agentNumber;var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"consult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"Parameter mode is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},cancelconsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/cancel",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"cancelconsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},endConsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/stop",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"endConsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},callbackConsult:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/resume",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"resumeConsult success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},consultTransfer:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/consult/transfer",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"consultTransfer success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},threeWayCall:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/threeway",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"threeWayCall success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},evaluate:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.type&&void 0!==t.type){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/evaluate",{verb:"POST",body:t,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"evaluate success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter type is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})},meeting:function(t){if(t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null!==a.loginToken&&void 0!==a.loginToken)if(null!==a.agentInfo&&void 0!==a.agentInfo)if(null!==t.number&&void 0!==t.number){var n=a.initOptions.server||a.callApiUrl;a.request(n+"/call/api/call/meeting",{verb:"POST",body:{meetingType:"phone",number:t.number},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,encryptionAlgorithm:e,encryptionFields:s,success:function(e){e.success?t.success({success:!0,message:"meeting success",data:e.data.response.data}):t.fail({success:!1,message:e.message,code:e.code})}})}else t.fail({success:!1,message:"Parameter number is required!"});else t.fail({success:!1,message:"initialization not complete!"});else t.fail({success:!1,message:"initialization not complete!"})}}},this._agentApi=function(){var e=t;return{switchLoginType:function(t){return i(this,void 0,void 0,(function(){var s,n,c,u,l,h,p=this;return r(this,(function(f){switch(f.label){case 0:if(s=null,t.success=t&&"function"==typeof t.success?t.success:a.noop,t.fail=t&&"function"==typeof t.fail?t.fail:a.noop,null===t.loginType||void 0===t.loginType)return t.fail({success:!1,message:"Parameter loginType is required!"}),[2];if(null===a.agentInfo||void 0===a.agentInfo)return t.fail({success:!1,message:"initialization not complete!"}),[2];if(null!==t.loginNumber&&void 0!==t.loginNumber&&(s=t.loginNumber),"PSTN"===t.loginType&&!(s=s||a.agentInfo.mobile))return alert("请给座席绑定手机号,或者传入号码参数!"),t.fail({success:!1,message:"Please bind your mobile number"}),[2];if("SIP"===t.loginType&&(s=s||a.agentInfo.sipNumber),"WEBRTC"===t.loginType&&(s=a.agentInfo.webrtcSipNumber),n=a.initOptions.server||a.callApiUrl,c={loginType:t.loginType,loginNumber:s},a.initOptions,l=!0,"WEBRTC"!==t.loginType)return[3,4];f.label=1;case 1:return f.trys.push([1,3,,4]),[4,e.openMediaAudio("请打开麦克风权限!",l)];case 2:return u=f.sent()||{},[3,4];case 3:return h=f.sent(),console.log(h),[3,4];case 4:return a.request(n+"/call/api/agent/v1/login-type/change",{verb:"POST",body:c,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(s){return i(p,void 0,void 0,(function(){return r(this,(function(i){switch(i.label){case 0:return s.success?(t.success(o({success:!0,message:"updateLoginType success"},u)),a.agentInfo.loginType=t.loginType,a.initOptions.loginType=t.loginType,"WEBRTC"!==t.loginType?[3,1]:(e._webPhoneApi().connect(),[3,4])):[3,5];case 1:return"PSTN"!==t.loginType?[3,3]:[4,a.request(n+"/platform/action/updateCallConfig",{verb:"POST",body:{agentCallConfig:{},mobile:t.loginNumber},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId})];case 2:return i.sent(),e._webPhoneApi().disconnect(),[3,4];case 3:e._webPhoneApi().disconnect(),i.label=4;case 4:return[3,6];case 5:t.fail(o({success:!1,message:s.message,code:s.code},u)),i.label=6;case 6:return[2]}}))}))}}),[2]}}))}))},findPhoneBarList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/phone/bar/all",{verb:"GET",loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){if(t.success){var s=[];t.data.forEach((function(e){var t={name:e.name,number:e.number};s.push(t)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},switchPhoneBar:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==e.stateNumber&&void 0!==e.stateNumber)if(null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl,s={stateNumber:e.stateNumber,accountId:a.agentInfo.accountId,agentNumber:a.agentInfo.agentNumber};a.request(t+"/call/api/agent/status/switch",{verb:"POST",body:s,loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(t){t.success?e.success({success:!0}):e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"});else e.fail({success:!1,message:"Parameter stateNumber is required!"})},logout:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){null!==e.toAnswerOffline&&void 0!==e.toAnswerOffline||(e.toAnswerOffline="1");var t=a.initOptions.server||a.callApiUrl,s={toAnswerOffline:e.toAnswerOffline};a.request(t+"/call/api/sdk/agent/logout",{verb:"POST",body:s,loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){t.success?e&&(a.Socketinstance.disconnect(),"WEBRTC"===a.agentInfo.loginType&&a.webPhone.disconnect(),e.success({success:!0})):e&&e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},findIdleAgentsForQueue:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/queue/acountFreeAgent/find",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,accountId:a.agentInfo.accountId,success:function(t){t.success?e&&e.success({success:!0,dataList:t.data||[]}):e&&e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})},getAvailableSipNumberList:function(e){if(e.success=e&&"function"==typeof e.success?e.success:a.noop,e.fail=e&&"function"==typeof e.fail?e.fail:a.noop,null!==a.agentInfo&&void 0!==a.agentInfo){var t=a.initOptions.server||a.callApiUrl;a.request(t+"/call/api/sip/avaliable/query",{verb:"POST",body:{},loginToken:a.loginToken,sessionId:a.agentInfo._id,success:function(t){if(t.success&&t.data){var s=[];t.data.forEach((function(e){var t={number:e.id,numberName:e.number};s.push(t)})),e.success({success:!0,data:s})}else e.fail({success:!1,message:t.message,code:t.code})}})}else e.fail({success:!1,message:"initialization not complete!"})}}},this._webPhoneApi=function(){return{accept:function(){a.webPhone.accept()},connect:function(){a.webPhone&&this.isConnected()||a.initWebrtcEvent(a.agentextras)},disconnect:function(){a.webPhone&&this.isConnected()&&a.webPhone.disconnect()},isConnected:function(){return a.webPhone.isConnected()},sendDTMF:function(e){a.webPhone.sendDTMF(e)}}},e.error="function"==typeof e.error?e.error:a.noop,e.success="function"==typeof e.success?e.success:a.noop,null!==e.agentNumber&&void 0!==e.agentNumber?(null!==e.loginType&&void 0!==e.loginType||(e.loginType="PSTN"),this.init(e)):e.error({message:"Invalid agentNumber"})}var a;return c.noop=function(){},c.prototype.init=function(e){if(void 0===e&&(e={}),a.trace=a.noop,a.debug=a.noop,a.log=a.noop,a.warn=a.noop,a.error=a.noop,!0===e.debug||"all"===e.debug)a.trace=console.trace.bind(console),a.debug=console.debug.bind(console),a.log=console.log.bind(console),a.warn=console.warn.bind(console),a.error=console.error.bind(console);else if(Array.isArray(e.debug))for(var t in e.debug){var s=e.debug[t];switch(s){case"trace":a.trace=console.trace.bind(console);break;case"debug":a.debug=console.debug.bind(console);break;case"log":a.log=console.log.bind(console);break;case"warn":a.warn=console.warn.bind(console);break;case"error":a.error=console.error.bind(console);break;default:console.error("Unknown debugging option '"+s+"' (supported: 'trace', 'debug', 'log', warn', 'error')")}}a.log("Initializing library");var n=a.useDefaultDependencies({WebSocket:Re});a.newWebSocket=n.newWebSocket,a.request=n.request,this.login(e)},c.prototype.login=function(e){return i(this,void 0,void 0,(function(){var i,c,u,l,h,p,f,d,g=this;return r(this,(function(r){switch(r.label){case 0:if(console.log(e,"options"),i=e.server||a.callApiUrl,c=e.agentNumber+"@"+e.accountId,u=e.loginType,l=e.isOpenNetwork||!1,h={loginName:c,loginType:u,loginChannel:"SDK",password:""},p=!0,"WEBRTC"!==u)return[3,4];r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.openMediaAudio("请打开麦克风权限!",p)];case 2:return f=r.sent()||{},[3,4];case 3:return d=r.sent(),console.log(d),console.log("授权失败================================"),[3,4];case 4:return e.password&&(h.password=e.password),a.request(i+"/platform/public/loginPre",{verb:"GET",success:function(r){if(r&&r.success&&r.data){var c=decodeURIComponent(t.Base64.decode(r.data.pk)),p=new n.JSEncrypt;p.setPublicKey(c);var d=s(h.password),m=p.encrypt(d);h.password=m,a.request(i+"/platform/public/login",{verb:"POST",body:h,success:function(t){t.success?a.request(i+"/platform/action/loginInfo",{verb:"GET",loginToken:t.data.loginToken,sessionId:t.data.sessionId,success:function(t){t.success?(t.data.agent&&(a.agentInfo=t.data.agent,a.loginToken=t.data.loginToken,a.initOptions=o(o({},e),{audioInfo:f})),g.initAttachEvent(i,u,t.data.pushServer,t.data.agent,e.success),l&&g.initnNetworkMonitoring(t.data.pushServer,""),"WEBRTC"===u&&g.getWebrtcInfo(i,e)):e.error(o(o({},t),f))},error:function(t){e.error(o({error:t},f))}}):e.error(o(o({},t),f))},error:function(t){e.error(o({error:t},f))}})}else e.error(o(o({},r),f))},error:function(t){e.error(o({error:t},f))}}),[2]}}))}))},c.createEventHandle=function(e){var t=this;void 0===e&&(e={}),e.success="function"==typeof e.success?e.success:a.noop,e.error="function"==typeof e.error?e.error:a.noop,e.message="function"==typeof e.message?e.message:a.noop,e.event="function"==typeof e.event?e.event:a.noop,e.server=null===e.serve||void 0===e.serve?"ws://152.136.72.209:3201/phoneBarGateway":e.serve,null!==e.SocketOptions&&void 0!==e.SocketOptions||(e.SocketOptions={},a.error({message:"login response error!"})),this.Socketinstance=a.newWebSocket(e.server,e.SocketOptions),this.Socketinstance.on("connect",(function(){e.success("connect event serve success!"),e.suc()})),this.Socketinstance.on("error",(function(t,s){e.error({type:"socketError",error:t}),s&&"function"==typeof s&&s("error")})),this.Socketinstance.on("message",(function(t,s){e.message({subtype:t.subType,data:t.data}),"WEBRTC"===a.initOptions.loginType&&(t.data&&t.data.callType&&"callin"===t.data.callType&&t.data.eventType&&"ring"===t.data.eventType?(a.AudioTask||(a.AudioTask=new qe("https://softphone.useasy.cn/ring.wav")),a.AudioTask.ringAudioPlay()):a.AudioTask&&a.AudioTask.ringAudioPause()),s&&"function"==typeof s&&s("success")})),this.Socketinstance.on("event",(function(s){if("KICK_OFF"===s.subType){t.Socketinstance.disconnect();try{a.webPhone.disconnect()}catch(e){}e.event({message:"坐席账户在其他地方登录"})}}))},c.useDefaultDependencies=function(e){var t=e&&e.fetch||fetch,s=e&&e.Promise||Promise,n=e&&e.WebSocket||WebSocket;return{newWebSocket:function(e,t){return new n(e,t)},request:function(e,n){var o={method:n.verb,cache:"no-cache",headers:{"Content-Type":"application/json",loginToken:n.loginToken||"",sessionId:n.sessionId||"",clienttype:0}};n.encryptionFields&&(o.headers["ue-encryption-algorithm"]=n.encryptionAlgorithm||"aes",o.headers["ue-encryption-fields"]=n.encryptionFields),void 0!==n.withCredentials&&(o.credentials=!0===n.withCredentials?"include":n.withCredentials?n.withCredentials:"omit"),void 0!==n.body&&(o.body=JSON.stringify(n.body));var i=t(e,o).catch((function(e){return s.reject({message:"Probably a network error, is the gateway down?",error:e})}));if(void 0!==n.timeout){var r=new s((function(e,t){var s=window.setTimeout((function(){return clearTimeout(s),n.error({message:"Request timed out",timeout:n.timeout}),t({message:"Request timed out",timeout:n.timeout})}),n.timeout)}));i=s.race([i,r])}return i.then((function(e){return e.ok?typeof n.success==typeof a.noop?e.json().then((function(e){n.success(e)})).catch((function(t){return n.error({message:"Failed to parse response body",error:t,response:e}),s.reject({message:"Failed to parse response body",error:t,response:e})})):void 0:(n.error({message:"API call failed",response:e}),s.reject({message:"API call failed",response:e}))})).catch((function(e){typeof n.error==typeof a.noop&&n.error(e.message||"<< internal error >>",e)})),i}}},Object.defineProperty(c.prototype,"agent",{get:function(){return this._agentApi()},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"webrtc",{get:function(){return this._webPhoneApi()},enumerable:!1,configurable:!0}),Object.defineProperty(c.prototype,"call",{get:function(){return this._callApi()},enumerable:!1,configurable:!0}),a=c,c.callApiUrl="https://app.useasy.cn/api",c.Socketinstance=null,c.AudioTask=null,c.initWebrtcEvent=function(t){return i(void 0,void 0,void 0,(function(){return r(a,(function(s){switch(s.label){case 0:return a.webPhone=new e.UeWebrtc({server:t.wssUrl,sip:t.sip,secret:t.password}),[4,this.webPhone.connect()];case 1:return s.sent(),this.webPhone.register(),[2]}}))}))},c}(),Re=function(){function e(e,t){delete t.path,delete t.hostname,delete t.port,this.ws=Ee.connect("wss://".concat(e),t)}return e.prototype.on=function(e,t){"connect"===e&&this.ws.on(e,t),"error"===e&&(this.ws.on("connect_error",t),this.ws.on("error",t),this.ws.on("disconnect",t),this.ws.on("reconnect_failed",t)),"message"===e&&this.ws.on("call",t),"event"===e&&this.ws.on("event",t)},e.prototype.emit=function(e,t,s){this.ws.emit(e,t,s)},e.prototype.disconnect=function(){this.ws.disconnect()},e}(),qe=function(){function e(e){this.ringAudio=new Audio(e),this.ringAudio.loop=!0,this.ringAudioRunning=!1}return e.prototype.ringAudioPlay=function(){return i(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return this.ringAudioRunning?[2]:[3,1];case 1:return[4,this.ringAudio.play()];case 2:e.sent(),this.ringAudioRunning=!0,e.label=3;case 3:return[2]}}))}))},e.prototype.ringAudioPause=function(){return i(this,void 0,void 0,(function(){return r(this,(function(e){switch(e.label){case 0:return this.ringAudio.paused?[3,2]:[4,this.ringAudio.pause()];case 1:e.sent(),this.ringAudioRunning=!1,e.label=2;case 2:return[2]}}))}))},e}();module.exports=Pe;
@@ -0,0 +1,64 @@
1
+ <!--
2
+ * @Author: Wangtao
3
+ * @Date: 2024-01-15 16:43:26
4
+ * @LastEditors: Wangtao
5
+ * @LastEditTime: 2024-01-16 16:47:32
6
+ -->
7
+ <!DOCTYPE html>
8
+ <html lang="en">
9
+ <head>
10
+ <meta charset="UTF-8">
11
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
12
+ <title>Document</title>
13
+ </head>
14
+ <body>
15
+ <script src="../dist/lib/ue-soft-phone.min.js"></script>
16
+ <!-- <script src="https://softphone.useasy.cn/lib/ue-soft-phone.min.js"></script> -->
17
+ <button id="call">外呼</button>
18
+ <script>
19
+ window.ue = new ueSoftPhone({
20
+ accountId: 'useasyTest',
21
+ agentNumber: '8044',
22
+ password: 'z8044AAAA',
23
+ loginType: 'WEBRTC',
24
+ // debugger: true,
25
+ isOpenNetwork: true,
26
+ // success(res) {
27
+ // console.log(787877,res);
28
+ // },
29
+ // error() {
30
+ // console.log(999,error);
31
+ // },
32
+ })
33
+
34
+ // var aa = ue.call.callOut({
35
+ // customerNumber: '18582599309'
36
+ // })
37
+ ue.listenCallEvent({
38
+ message:1,
39
+ success(res) {
40
+ console.log(7878778998,res);
41
+ }
42
+ })
43
+ ue.listenCallNetork({
44
+ message(res) {
45
+ console.log(566,res);
46
+ }
47
+ })
48
+ document.getElementById('call').addEventListener('click', function(){
49
+ window.ue.call.callout({
50
+ customerNumber: '18582599309',
51
+ success(res) {
52
+ console.log(43567,res);
53
+ alert('外呼成功')
54
+ },
55
+ error(error) {
56
+ console.log(43567,error);
57
+ alert('外呼失败')
58
+ },
59
+
60
+ })
61
+ })
62
+ </script>
63
+ </body>
64
+ </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ue-softphone-sdk",
3
- "version": "3.0.6",
3
+ "version": "3.0.7",
4
4
  "description": "ue-softphone-sdk",
5
5
  "main": "dist/ue-softphone-sdk.js",
6
6
  "types": "dist/types/index.d.ts",
package/src/index.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  * @Author: cuixuecheng
3
3
  * @Date: 2023-02-21 18:40:21
4
4
  * @LastEditors: Wangtao
5
- * @LastEditTime: 2023-11-01 18:47:30
5
+ * @LastEditTime: 2024-01-16 17:22:08
6
6
  * @Description:
7
7
  */
8
8
 
@@ -45,6 +45,7 @@ interface InitOptions {
45
45
  // hasMonitor?: boolean;
46
46
  // sdkMonitorType?: any;
47
47
  // isStrongHint?: Boolean; // 是否强提示
48
+ isOpenNetwork?: boolean; // 是否开启网络检测
48
49
  }
49
50
  // interface SocketMonitorOptions {
50
51
  // transport: String;
@@ -66,6 +67,7 @@ interface OnCallEventParams {
66
67
  error?: Function;
67
68
  }
68
69
 
70
+
69
71
  interface DialoutParams {
70
72
  agentNumber?: String;
71
73
  accountId: String;
@@ -228,6 +230,15 @@ interface breakinParams {
228
230
  fail?: Function;
229
231
  }
230
232
 
233
+ interface networkMonitoringParams {
234
+ requestState: boolean,
235
+ delay: number
236
+ }
237
+ const networkMonitoringConfig: networkMonitoringParams = {
238
+ requestState: false,
239
+ delay: 0
240
+ };
241
+
231
242
  export default class ueSoftphone {
232
243
  static ueTimer: any; // 监控里面的定时器
233
244
  static loginToken: String | undefined;
@@ -249,6 +260,7 @@ export default class ueSoftphone {
249
260
  static request: (server: string, proto: any) => any;
250
261
 
251
262
  private attachEventCallbacks: any;
263
+
252
264
  // private attachMonitorEventCallbacks: any;
253
265
 
254
266
  constructor(options: InitOptions = {}) {
@@ -329,11 +341,15 @@ export default class ueSoftphone {
329
341
  }
330
342
 
331
343
  private async login(options: InitOptions) {
344
+ console.log(options,"options");
345
+
332
346
  const server = options.server || ueSoftphone.callApiUrl;
333
347
  const loginName = options.agentNumber + "@" + options.accountId;
334
348
  const loginType = options.loginType;
335
349
  // const signAuth = options.signAuth;
336
350
  // const hasMonitor = options.hasMonitor || false; // 是否需要监控,若需要则会挂监控socket,并事件回吐给客户
351
+
352
+ const isOpenNetwork = options.isOpenNetwork || false; // 是否开启网络检测,若需要则会挂监控网络状态,并将值回吐给客户
337
353
  let actionData = {
338
354
  loginName: loginName,
339
355
  loginType: loginType,
@@ -389,6 +405,7 @@ export default class ueSoftphone {
389
405
  // if (hasMonitor) { // 需要监控,挂载监控
390
406
  // this.initMonitorAttachEvent(loginInfo.data.pushServer, loginInfo.data.agent)
391
407
  // }
408
+
392
409
  this.initAttachEvent(
393
410
  server,
394
411
  loginType,
@@ -396,6 +413,11 @@ export default class ueSoftphone {
396
413
  loginInfo.data.agent,
397
414
  options.success
398
415
  );
416
+
417
+ // 是否开启网络检测
418
+ if(isOpenNetwork) {
419
+ this.initnNetworkMonitoring(loginInfo.data.pushServer,'')
420
+ }
399
421
  if (loginType === "WEBRTC") {
400
422
  this.getWebrtcInfo(server, options);
401
423
  }
@@ -667,6 +689,66 @@ export default class ueSoftphone {
667
689
  });
668
690
  }
669
691
  };
692
+
693
+ // 网络监测监听
694
+ private attachNetworkCallbacks: any = {
695
+ message: ueSoftphone.noop,
696
+ error: ueSoftphone.noop,
697
+ success: ueSoftphone.noop
698
+ };
699
+ private initnNetworkMonitoring = (pushServer, callbacks:any) => {
700
+ let currentUrl = ''
701
+ pushServer.forEach((item) => {
702
+ if (item.id === 'MONITOR') {
703
+ let protocol = document.location.protocol
704
+ if (protocol === 'file:') {
705
+ protocol = 'https:'
706
+ }
707
+ currentUrl = protocol + '//' + item.url
708
+ }
709
+ })
710
+ this.attachNetworkCallbacks.success()
711
+ this.attachNetworkCallbacks.message({
712
+ delay: 100
713
+ })
714
+ setInterval(() => {
715
+ // if (networkMonitoringConfig.requestState) {
716
+ // return
717
+ // }
718
+ const startTime = new Date().getTime()
719
+ networkMonitoringConfig.requestState = true
720
+ ueSoftphone.request(currentUrl + "/ready", {
721
+ method: "GET",
722
+ success: (res: any) => {
723
+ if (res.success) {
724
+ const endTime = new Date().getTime()
725
+ networkMonitoringConfig.delay = (endTime - startTime) / 2
726
+ this.attachNetworkCallbacks.message({
727
+ delay: networkMonitoringConfig.delay
728
+ })
729
+ } else {
730
+ this.attachNetworkCallbacks.error()
731
+ networkMonitoringConfig.delay = 500
732
+ networkMonitoringConfig.requestState = false
733
+ }
734
+ },
735
+ error: (error: any) => {
736
+ this.attachNetworkCallbacks.error()
737
+ networkMonitoringConfig.delay = 500
738
+ networkMonitoringConfig.requestState = false
739
+ }
740
+ });
741
+ }, 10000)
742
+ }
743
+
744
+ public listenCallNetork = (callbacks: OnCallEventParams) => {
745
+ if (callbacks) {
746
+ this.attachNetworkCallbacks.message = callbacks.message && typeof callbacks.message == "function" ? callbacks.message : ueSoftphone.noop;
747
+ this.attachNetworkCallbacks.success = callbacks.success && typeof callbacks.success == "function" ? callbacks.success : ueSoftphone.noop;
748
+ this.attachNetworkCallbacks.error = callbacks.error && typeof callbacks.error == "function" ? callbacks.error : ueSoftphone.noop;
749
+ }
750
+ };
751
+
670
752
  static useDefaultDependencies(deps: any) {
671
753
  const f = (deps && deps.fetch) || fetch;
672
754
  const p = (deps && deps.Promise) || Promise;
@@ -822,6 +904,7 @@ export default class ueSoftphone {
822
904
  // 若客户对接的demo中无attachEventCallbacks回调,则无法接收到电话条的事件回吐
823
905
  this.attachEventCallbacks = callbacks;
824
906
  };
907
+
825
908
  // public attachMonitorEvent = (callbacks: any) => {
826
909
  // // 若客户对接的demo中无attachMonitorEventCallbacks回调,则无法接收到监控的事件回吐
827
910
  // this.attachMonitorEventCallbacks = callbacks;