cq-websocket
Version:
A Node SDK for developing QQ chatbots based on WebSocket, which is depending on CoolQ and CQHTTP API plugin.
1 lines • 24.5 kB
JavaScript
!function(e){var t={};function n(r){if(t[r])return t[r].exports;var s=t[r]={i:r,l:!1,exports:{}};return e[r].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(r,s,function(t){return e[t]}.bind(null,s));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";var r,s,o,i=n(13),c="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-";function a(){o=!1}function u(e){if(e){if(e!==r){if(e.length!==c.length)throw new Error("Custom alphabet for shortid must be "+c.length+" unique characters. You submitted "+e.length+" characters: "+e);var t=e.split("").filter(function(e,t,n){return t!==n.lastIndexOf(e)});if(t.length)throw new Error("Custom alphabet for shortid must be "+c.length+" unique characters. These characters were not unique: "+t.join(", "));r=e,a()}}else r!==c&&(r=c,a())}function h(){return o||(o=function(){r||u(c);for(var e,t=r.split(""),n=[],s=i.nextValue();t.length>0;)s=i.nextValue(),e=Math.floor(s*t.length),n.push(t.splice(e,1)[0]);return n.join("")}())}e.exports={get:function(){return r||c},characters:function(e){return u(e),r},seed:function(e){i.seed(e),s!==e&&(a(),s=e)},lookup:function(e){return h()[e]},shuffled:h}},function(e,t,n){(function(t){var n="Expected a function",r="__lodash_hash_undefined__",s=1/0,o="[object Function]",i="[object GeneratorFunction]",c="[object Symbol]",a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,u=/^\w*$/,h=/^\./,l=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g,_=/^\[object .+?Constructor\]$/,f="object"==typeof t&&t&&t.Object===Object&&t,d="object"==typeof self&&self&&self.Object===Object&&self,m=f||d||Function("return this")();var g=Array.prototype,v=Function.prototype,y=Object.prototype,b=m["__core-js_shared__"],E=function(){var e=/[^.]+$/.exec(b&&b.keys&&b.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),k=v.toString,w=y.hasOwnProperty,O=y.toString,S=RegExp("^"+k.call(w).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),x=m.Symbol,N=g.splice,C=L(m,"Map"),B=L(Object,"create"),T=x?x.prototype:void 0,I=T?T.toString:void 0;function j(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function D(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function q(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function $(e,t){for(var n=e.length;n--;)if(Q(e[n][0],t))return n;return-1}function A(e,t){for(var n=0,r=(t=function(e,t){if(U(e))return!1;var n=typeof e;if("number"==n||"symbol"==n||"boolean"==n||null==e||G(e))return!0;return u.test(e)||!a.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:function(e){return U(e)?e:P(e)}(t)).length;null!=e&&n<r;)e=e[V(t[n++])];return n&&n==r?e:void 0}function M(e){return!(!R(e)||function(e){return!!E&&E in e}(e))&&(function(e){var t=R(e)?O.call(e):"";return t==o||t==i}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?S:_).test(function(e){if(null!=e){try{return k.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}function H(e,t){var n=e.__data__;return function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}(t)?n["string"==typeof t?"string":"hash"]:n.map}function L(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return M(n)?n:void 0}j.prototype.clear=function(){this.__data__=B?B(null):{}},j.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},j.prototype.get=function(e){var t=this.__data__;if(B){var n=t[e];return n===r?void 0:n}return w.call(t,e)?t[e]:void 0},j.prototype.has=function(e){var t=this.__data__;return B?void 0!==t[e]:w.call(t,e)},j.prototype.set=function(e,t){return this.__data__[e]=B&&void 0===t?r:t,this},D.prototype.clear=function(){this.__data__=[]},D.prototype.delete=function(e){var t=this.__data__,n=$(t,e);return!(n<0||(n==t.length-1?t.pop():N.call(t,n,1),0))},D.prototype.get=function(e){var t=this.__data__,n=$(t,e);return n<0?void 0:t[n][1]},D.prototype.has=function(e){return $(this.__data__,e)>-1},D.prototype.set=function(e,t){var n=this.__data__,r=$(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},q.prototype.clear=function(){this.__data__={hash:new j,map:new(C||D),string:new j}},q.prototype.delete=function(e){return H(this,e).delete(e)},q.prototype.get=function(e){return H(this,e).get(e)},q.prototype.has=function(e){return H(this,e).has(e)},q.prototype.set=function(e,t){return H(this,e).set(e,t),this};var P=W(function(e){e=function(e){return null==e?"":function(e){if("string"==typeof e)return e;if(G(e))return I?I.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}(e)}(e);var t=[];return h.test(e)&&t.push(""),e.replace(l,function(e,n,r,s){t.push(r?s.replace(p,"$1"):n||e)}),t});function V(e){if("string"==typeof e||G(e))return e;var t=e+"";return"0"==t&&1/e==-s?"-0":t}function W(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError(n);var r=function(){var n=arguments,s=t?t.apply(this,n):n[0],o=r.cache;if(o.has(s))return o.get(s);var i=e.apply(this,n);return r.cache=o.set(s,i),i};return r.cache=new(W.Cache||q),r}function Q(e,t){return e===t||e!=e&&t!=t}W.Cache=q;var U=Array.isArray;function R(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function G(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&O.call(e)==c}e.exports=function(e,t,n){var r=null==e?void 0:A(e,t);return void 0===r?n:r}}).call(this,n(20))},function(e,t,n){const r=n(1),s=n(21);function o(e,t){throw t.which=e,console.error('\nYou should listen on "socket.error" yourself to avoid those unhandled promise warnings.\n'),t}class i{constructor(){this._isCanceled=!1,this._message="",this._responseHandler=null,this._responseOptions=null,this._errorHandler=null}cancel(){return this.stopPropagation()}stopPropagation(){this._isCanceled=!0}getMessage(){return this._message}hasMessage(){return Boolean(this._message)}setMessage(e){this._message=String(e)}appendMessage(e){this._message+=String(e)}onResponse(e,t){"function"!=typeof e&&(t=e,e=null),this._responseHandler=e,this._responseOptions=t}onError(e){this._errorHandler=e}}e.exports={CQEventBus:class{constructor(e){this._EventMap={message:{"":[],private:[],group:{"":[],"@":{"":[],me:[]}},discuss:{"":[],"@":{"":[],me:[]}}},event:[],notice:{"":[],group_upload:[],group_admin:{"":[],set:[],unset:[]},group_decrease:{"":[],leave:[],kick:[],kick_me:[]},group_increase:{"":[],approve:[],invite:[]},friend_add:[]},request:{"":[],friend:[],group:{"":[],add:[],invite:[]}},ready:[],error:[],socket:{connecting:[],connect:[],failed:[],reconnecting:[],reconnect:[],reconnect_failed:[],max_reconnect:[],error:[],closing:[],close:[]},api:{response:[],send:{pre:[],post:[]}},meta_event:{"":[],lifecycle:[],heartbeat:[]}},this._onceListeners=new WeakMap,this._isSocketErrorHandled=!1,this._bot=e,this._installDefaultErrorHandler()}_getHandlerQueue(e){let t=r(this._EventMap,e);return Array.isArray(t)?t:(t=r(this._EventMap,`${e}.`),Array.isArray(t)?t:void 0)}count(e){let t=this._getHandlerQueue(e);return t?t.length:void 0}has(e){return void 0!==this._getHandlerQueue(e)}emit(e,...t){return this._emitThroughHierarchy(e,...t)}async _emitThroughHierarchy(e,...t){let n=[],r=e.startsWith("message");for(let t=e.split(".");t.length>0;t.pop()){let e=this._getHandlerQueue(t.join("."));e&&e.length>0&&n.push(...e)}if(n&&n.length>0){let e=r?new i:void 0;r&&Array.isArray(t)&&t.unshift(e);for(let s of n){r&&(e._errorHandler=e._responseHandler=e._responseOptions=null);let n=await Promise.resolve(s(...t));if(r&&"string"==typeof n&&(e.cancel(),e.setMessage(n)),r&&e._isCanceled)break}r&&e.hasMessage()&&this._bot("send_msg",{...t[1],message:e.getMessage()},e._responseOptions).then(t=>{"function"==typeof e._responseHandler&&e._responseHandler(t)}).catch(t=>{"function"==typeof e._errorHandler?e._errorHandler(t):this.emit("error",t)})}}once(e,t){const n=(...r)=>{let s=t(...r);if(!1!==s)return this.off(e,n),s};return this._onceListeners.set(t,n),this.on(e,n)}off(e,t){if("string"!=typeof e)return this._onceListeners=new WeakMap,s(this._EventMap,e=>{if(Array.isArray(e))return e.splice(0,e.length),!1}),this._installDefaultErrorHandler(),this;const n=this._getHandlerQueue(e);if(void 0===n)return this;if("function"!=typeof t)return n.splice(0,n.length),"socket.error"===e&&this._installDefaultErrorHandler(),this;const r=n.indexOf(t),o=this._onceListeners.has(t)?n.indexOf(this._onceListeners.get(t)):-1,i=r>=0&&o>=0?Math.min(r,o):r>=0?r:o>=0?o:-1;return i>=0?(n.splice(i,1),i===o&&this._onceListeners.delete(t),"socket.error"===e&&0===n.length&&this._installDefaultErrorHandler(),this):this}_installDefaultErrorHandler(){0===this._EventMap.socket.error.length&&(this._EventMap.socket.error.push(o),this._isSocketErrorHandled=!1)}_removeDefaultErrorHandler(){this._isSocketErrorHandled||(this._EventMap.socket.error.splice(0,this._EventMap.socket.error.length),this._isSocketErrorHandled=!0)}on(e,t){if(e.endsWith("@me")&&(e=e.replace(/\.@me$/,".@.me")),!this.has(e))return this;"socket.error"===e&&this._removeDefaultErrorHandler();let n=this._getHandlerQueue(e);return n&&n.push(t),this}},CQEvent:i}},function(e,t,n){const r=n(4);e.exports=class extends r{constructor(e=-1){super("at",{qq:parseInt(e)})}getQQ(){return parseInt(this.meta.qq)}}},function(e,t,n){class r{constructor(e,t={}){this.type=e,this.meta=t}equals(e){return"string"==typeof e&&([e]=n(5).parse(e)),e instanceof r&&this.toString()===e.toString()}valueOf(){return this.toString()}toString(){const e=Object.keys(this.meta).sort().map(e=>`${e}=${this.meta[e]}`).join(",");return`[CQ:${this.type}${e?",":""}${e}]`}}e.exports=r},function(e,t,n){const r=["face","emoji","bface","sface","image","record","at","rps","dice","shake","anonymous","music","share"],s=/\[CQ:([a-z]+?),((,?[a-zA-Z0-9-_.]+=[^,[\]]*)*)\]/,o=n(3),i=n(4);e.exports={TYPES:r,parse:function(e=""){return(e.match(/\[CQ[^\]]*\]/g)||[]).map(e=>e.match(s)).filter(e=>e&&r.includes(e[1])).map(e=>({type:e[1],meta:e[2].split(",").reduce(function(e,t){const n=t.split("=").map(e=>e.trim());return e[n[0]]=n[1],e},{})})).map(e=>{switch(e.type){case"at":return new o(e.meta.qq);default:return new i(e.type,e.meta)}})}}},function(e,t,n){window.CQWebSocket=n(7)},function(e,t,n){const r=n(8).w3cwebsocket,s=n(11),o=n(1),i=n(2).CQEventBus,c=n(22),a=n(3),u=n(5),{SocketError:h,InvalidWsTypeError:l,InvalidContextError:p,ApiTimoutError:_}=n(23),f={API:"/api",EVENT:"/event"},d={DISABLED:-1,INIT:0,CONNECTING:1,CONNECTED:2,CLOSING:3,CLOSED:4},m=["https:","http:","ws:","wss:"];class g extends c{constructor({protocol:e="ws:",host:t="127.0.0.1",port:n=6700,access_token:r="",baseUrl:s,enableAPI:o=!0,enableEvent:c=!0,qq:u=-1,reconnection:h=!0,reconnectionAttempts:l=1/0,reconnectionDelay:p=1e3,requestOptions:_={},fragmentOutgoingMessages:f=!1,fragmentationThreshold:g,tlsOptions:v}={}){super("__call__"),(e=e.toLowerCase())&&!e.endsWith(":")&&(e+=":"),s&&0===m.filter(e=>s.startsWith(e+"//")).length&&(s=`${e}//${s}`),this._token=String(r),this._qq=parseInt(u),this._atme=new a(this._qq),this._baseUrl=s||`${e}//${t}:${n}`,this._reconnectOptions={reconnection:h,reconnectionAttempts:l,reconnectionDelay:p},this._requestOptions=_,this._wsOptions={},Object.entries({fragmentOutgoingMessages:f,fragmentationThreshold:g,tlsOptions:v}).filter(([e,t])=>void 0!==t).forEach(([e,t])=>{this._wsOptions[e]=t}),this._monitor={EVENT:{attempts:0,state:c?d.INIT:d.DISABLED,reconnecting:!1},API:{attempts:0,state:o?d.INIT:d.DISABLED,reconnecting:!1}},this._responseHandlers=new Map,this._eventBus=new i(this)}off(e,t){return this._eventBus.off(e,t),this}on(e,t){return this._eventBus.on(e,t),this}once(e,t){return this._eventBus.once(e,t),this}__call__(e,t,n){if(!this._apiSock)return Promise.reject(new Error("API socket has not been initialized."));let r={timeout:1/0,...this._requestOptions};return"number"==typeof n?r.timeout=n:"object"==typeof n&&(r={...r,...n}),new Promise((n,o)=>{let i;const c={action:e,params:t};this._eventBus.emit("api.send.pre",c);const a=e=>{this._responseHandlers.delete(u),o(e)},u=s.generate();this._responseHandlers.set(u,{onFailure:a,onSuccess:e=>{i&&(clearTimeout(i),i=void 0),this._responseHandlers.delete(u),delete e.echo,n(e)}}),this._apiSock.send(JSON.stringify({...c,echo:{reqid:u}})),this._eventBus.emit("api.send.post"),r.timeout<1/0&&(i=setTimeout(()=>{this._responseHandlers.delete(u),a(new _(r.timeout,c))},r.timeout))})}_handle(e){switch(e.post_type){case"message":const t=u.parse(e.raw_message);switch(e.message_type){case"private":this._eventBus.emit("message.private",e);break;case"discuss":{const n=t.filter(e=>e instanceof a);n.length>0?n.filter(e=>e.equals(this._atme)).length>0?this._eventBus.emit("message.discuss.@.me",e):this._eventBus.emit("message.discuss.@",e,n):this._eventBus.emit("message.discuss",e)}break;case"group":{const n=t.filter(e=>e instanceof a);n.length>0?n.filter(e=>e.equals(this._atme)).length>0?this._eventBus.emit("message.group.@.me",e):this._eventBus.emit("message.group.@",e,n):this._eventBus.emit("message.group",e)}break;default:this._eventBus.emit("error",new Error(`Unexpected "message_type"\n${JSON.stringify(e,null,2)}`))}break;case"event":this._eventBus.emit("event",e);break;case"notice":switch(e.notice_type){case"group_upload":this._eventBus.emit("notice.group_upload",e);break;case"group_admin":switch(e.sub_type){case"set":this._eventBus.emit("notice.group_admin.set",e);break;case"unset":this._eventBus.emit("notice.group_admin.unset",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "sub_type"\n${JSON.stringify(e,null,2)}`))}break;case"group_decrease":switch(e.sub_type){case"leave":this._eventBus.emit("notice.group_decrease.leave",e);break;case"kick":this._eventBus.emit("notice.group_decrease.kick",e);break;case"kick_me":this._eventBus.emit("notice.group_decrease.kick_me",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "sub_type"\n${JSON.stringify(e,null,2)}`))}break;case"group_increase":switch(e.sub_type){case"approve":this._eventBus.emit("notice.group_increase.approve",e);break;case"invite":this._eventBus.emit("notice.group_increase.invite",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "sub_type"\n${JSON.stringify(e,null,2)}`))}break;case"friend_add":this._eventBus.emit("notice.friend_add",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "notice_type"\n${JSON.stringify(e,null,2)}`))}break;case"request":switch(e.request_type){case"friend":this._eventBus.emit("request.friend",e);break;case"group":switch(e.sub_type){case"add":this._eventBus.emit("request.group.add",e);break;case"invite":this._eventBus.emit("request.group.invite",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "sub_type"\n${JSON.stringify(e,null,2)}`))}break;default:this._eventBus.emit("error",new Error(`Unexpected "request_type"\n${JSON.stringify(e,null,2)}`))}break;case"meta_event":switch(e.meta_event_type){case"lifecycle":this._eventBus.emit("meta_event.lifecycle",e);break;case"heartbeat":this._eventBus.emit("meta_event.heartbeat",e);break;default:this._eventBus.emit("error",new Error(`Unexpected "meta_event_type"\n${JSON.stringify(e,null,2)}`))}break;default:this._eventBus.emit("error",new Error(`Unexpected "post_type"\n${JSON.stringify(e,null,2)}`))}}_forEachSock(e,t=[f.EVENT,f.API]){Array.isArray(t)||(t=[t]),t.forEach(t=>{e(t,t===f.EVENT?"EVENT":"API")})}isSockConnected(e){if(e===f.API)return this._monitor.API.state===d.CONNECTED;if(e===f.EVENT)return this._monitor.EVENT.state===d.CONNECTED;throw new l(e)}connect(e){return this._forEachSock((e,t)=>{if([d.INIT,d.CLOSED].includes(this._monitor[t].state)){const n=this._token?`?access_token=${this._token}`:"";let s=new r(`${this._baseUrl}/${t.toLowerCase()}${n}`,void 0,this._wsOptions);e===f.EVENT?this._eventSock=s:this._apiSock=s,s.addEventListener("open",()=>{this._monitor[t].state=d.CONNECTED,this._eventBus.emit("socket.connect",f[t],s,this._monitor[t].attempts),this._monitor[t].reconnecting&&this._eventBus.emit("socket.reconnect",f[t],this._monitor[t].attempts),this._monitor[t].attempts=0,this._monitor[t].reconnecting=!1,this.isReady()&&(this._eventBus.emit("ready",this),this._monitor.API.state!==d.DISABLED&&this._qq<0&&this("get_login_info").then(e=>{this._qq=parseInt(o(e,"data.user_id",-1)),this._atme=new a(this._qq)}).catch(e=>{this._eventBus.emit("error",e)}))},{once:!0});const i=t=>{let n;try{n=JSON.parse(t.data)}catch(n){return void this._eventBus.emit("error",new p(e,t.data))}if(e===f.EVENT)this._handle(n);else{const e=o(n,"echo.reqid","");let{onSuccess:t}=this._responseHandlers.get(e)||{};"function"==typeof t&&t(n),this._eventBus.emit("api.response",n)}};s.addEventListener("message",i),s.addEventListener("close",n=>{this._monitor[t].state=d.CLOSED,this._eventBus.emit("socket.close",f[t],n.code,n.reason),1e3!==n.code&&this._reconnectOptions.reconnection&&this.reconnect(this._reconnectOptions.reconnectionDelay,f[t]),s.removeEventListener("message",i),s=null,e===f.EVENT?this._eventSock=null:this._apiSock=null},{once:!0}),s.addEventListener("error",()=>{const e=this._monitor[t].state===d.CONNECTING?"Failed to establish the websocket connection.":this._monitor[t].state===d.CONNECTED?"The websocket connection has been hung up unexpectedly.":`Unknown error occured. Conection state: ${this._monitor[t].state}`;this._eventBus.emit("socket.error",f[t],new h(e)),this._monitor[t].state===d.CONNECTED?(this._monitor[t].state=d.CLOSING,this._eventBus.emit("socket.closing",f[t])):this._monitor[t].state===d.CONNECTING&&(this._monitor[t].state=d.CLOSED,this._eventBus.emit("socket.failed",f[t],this._monitor[t].attempts),this._monitor[t].reconnecting&&this._eventBus.emit("socket.reconnect_failed",f[t],this._monitor[t].attempts),this._monitor[t].reconnecting=!1,this._reconnectOptions.reconnection&&this._monitor[t].attempts<=this._reconnectOptions.reconnectionAttempts?this.reconnect(this._reconnectOptions.reconnectionDelay,f[t]):this._eventBus.emit("socket.max_reconnect",f[t],this._monitor[t].attempts))},{once:!0}),this._monitor[t].state=d.CONNECTING,this._monitor[t].attempts++,this._eventBus.emit("socket.connecting",e,this._monitor[t].attempts)}},e),this}disconnect(e){return this._forEachSock((e,t)=>{if(this._monitor[t].state===d.CONNECTED){const n=e===f.EVENT?this._eventSock:this._apiSock;this._monitor[t].state=d.CLOSING,n.close(1e3,"Normal connection closure"),this._eventBus.emit("socket.closing",e)}},e),this}reconnect(e=0,t){const n=(t,n)=>{setTimeout(()=>{this.connect(t)},e)};return this._forEachSock((e,t)=>{if(!this._monitor[t].reconnecting)switch(this._monitor[t].state){case d.CONNECTED:this._monitor[t].reconnecting=!0,this._eventBus.emit("socket.reconnecting",e,this._monitor[t].attempts),this.disconnect(e),this._eventBus.once("socket.close",t=>t===e&&n(e));break;case d.CLOSED:case d.INIT:this._monitor[t].reconnecting=!0,this._eventBus.emit("socket.reconnecting",e,this._monitor[t].attempts),n(e)}},t),this}isReady(){let e=this._monitor.EVENT.state===d.DISABLED||this._monitor.EVENT.state===d.CONNECTED,t=this._monitor.API.state===d.DISABLED||this._monitor.API.state===d.CONNECTED;return e&&t}isConnected(){return this.isReady()}}e.exports=g,e.exports.default=g,e.exports.WebsocketType=f,e.exports.WebsocketState=d,e.exports.CQEvent=n(2).CQEvent},function(e,t,n){var r=function(){return this}(),s=r.WebSocket||r.MozWebSocket,o=n(9);function i(e,t){return t?new s(e,t):new s(e)}s&&["CONNECTING","OPEN","CLOSING","CLOSED"].forEach(function(e){Object.defineProperty(i,e,{get:function(){return s[e]}})}),e.exports={w3cwebsocket:s?i:null,version:o}},function(e,t,n){e.exports=n(10).version},function(e){e.exports={name:"websocket",description:"Websocket Client & Server Library implementing the WebSocket protocol as specified in RFC 6455.",keywords:["websocket","websockets","socket","networking","comet","push","RFC-6455","realtime","server","client"],author:"Brian McKelvey <brian@worlize.com> (https://www.worlize.com/)",contributors:["Iñaki Baz Castillo <ibc@aliax.net> (http://dev.sipdoc.net)"],version:"1.0.25",repository:{type:"git",url:"https://github.com/theturtle32/WebSocket-Node.git"},homepage:"https://github.com/theturtle32/WebSocket-Node",engines:{node:">=0.10.0"},dependencies:{debug:"^2.2.0",nan:"^2.3.3","typedarray-to-buffer":"^3.1.2",yaeti:"^0.0.6"},devDependencies:{"buffer-equal":"^1.0.0",faucet:"^0.0.1",gulp:"git+https://github.com/gulpjs/gulp.git#4.0","gulp-jshint":"^2.0.4","jshint-stylish":"^2.2.1",jshint:"^2.0.0",tape:"^4.0.1"},config:{verbose:!1},scripts:{install:"(node-gyp rebuild 2> builderror.log) || (exit 0)",test:"faucet test/unit",gulp:"gulp"},main:"index",directories:{lib:"./lib"},browser:"lib/browser.js",license:"Apache-2.0",_resolved:"https://registry.npmjs.org/websocket/-/websocket-1.0.25.tgz",_integrity:"sha512-M58njvi6ZxVb5k7kpnHh2BvNKuBWiwIYvsToErBzWhvBZYwlEiLcyLrG41T1jRcrY9ettqPYEqduLI7ul54CVQ==",_from:"websocket@1.0.25"}},function(e,t,n){"use strict";e.exports=n(12)},function(e,t,n){"use strict";var r=n(0),s=n(14),o=n(18),i=n(19)||0;function c(){return s(i)}e.exports=c,e.exports.generate=c,e.exports.seed=function(t){return r.seed(t),e.exports},e.exports.worker=function(t){return i=t,e.exports},e.exports.characters=function(e){return void 0!==e&&r.characters(e),r.shuffled()},e.exports.isValid=o},function(e,t,n){"use strict";var r=1;e.exports={nextValue:function(){return(r=(9301*r+49297)%233280)/233280},seed:function(e){r=e}}},function(e,t,n){"use strict";var r,s,o=n(15),i=(n(0),1459707606518),c=6;e.exports=function(e){var t="",n=Math.floor(.001*(Date.now()-i));return n===s?r++:(r=0,s=n),t+=o(c),t+=o(e),r>0&&(t+=o(r)),t+=o(n)}},function(e,t,n){"use strict";var r=n(0),s=n(16),o=n(17);e.exports=function(e){for(var t,n=0,i="";!t;)i+=o(s,r.get(),1),t=e<Math.pow(16,n+1),n++;return i}},function(e,t,n){"use strict";var r,s="object"==typeof window&&(window.crypto||window.msCrypto);r=s&&s.getRandomValues?function(e){return s.getRandomValues(new Uint8Array(e))}:function(e){for(var t=[],n=0;n<e;n++)t.push(Math.floor(256*Math.random()));return t},e.exports=r},function(e,t){e.exports=function(e,t,n){for(var r=(2<<Math.log(t.length-1)/Math.LN2)-1,s=Math.ceil(1.6*r*n/t.length),o="";;)for(var i=e(s),c=0;c<s;c++){var a=i[c]&r;if(t[a]&&(o+=t[a]).length===n)return o}}},function(e,t,n){"use strict";var r=n(0);e.exports=function(e){return!(!e||"string"!=typeof e||e.length<6||new RegExp("[^"+r.get().replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")+"]").test(e))}},function(e,t,n){"use strict";e.exports=0},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){e.exports=function e(t,n=function(){}){"object"==typeof t&&Object.keys(t).forEach(function(r){!1!==n(t[r],r,t)&&e(t[r],n)})}},function(e,t){function n(e){const t=this.constructor.prototype[e],n=function(){return t.apply(n,arguments)};return Object.setPrototypeOf(n,this.constructor.prototype),Object.getOwnPropertyNames(t).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}),n}n.prototype=Object.create(Function.prototype),e.exports=n},function(e,t){e.exports={SocketError:class extends Error{constructor(e){super(e),this.name="SocketError"}},InvalidWsTypeError:class extends Error{constructor(e){super(`"${e}" is not a valid websocket type.`),this.wsType=e}},InvalidContextError:class extends SyntaxError{constructor(e,t){super(`[Websocket: ${e}] has received an invalid context.\nRaw data: ${t}`),this.name="InvalidContextError",this.wsType=e,this.data=t}},ApiTimoutError:class extends Error{constructor(e,t){super(`The API response has reached the timeout (${e} ms).`),this.req=t}}}}]);