leafx
Version:
WebSocket Client & Utilities
2 lines (1 loc) • 1.79 kB
JavaScript
var T=Object.create;var l=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,b=Object.prototype.hasOwnProperty;var f=n=>l(n,"__esModule",{value:!0});var w=(n,e)=>{f(n);for(var r in e)l(n,r,{get:e[r],enumerable:!0})},L=(n,e,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of C(e))!b.call(n,o)&&o!=="default"&&l(n,o,{get:()=>e[o],enumerable:!(r=h(e,o))||r.enumerable});return n},i=n=>L(f(l(n!=null?T(O(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);w(exports,{create:()=>p});var u=i(require("isomorphic-ws")),v=i(require("mitt"));function g(n){return typeof n=="string"?n:JSON.stringify(n)}function m(...n){console.log("[LEAF]",...n)}function p(n,e={matchTypeOn:"type"}){let r=new u.default(n),o=[],a=(0,v.default)(),y=(t,s=!1)=>{try{return JSON.parse(t.data.toString())}catch(c){return s&&console.error(c),{[e.matchTypeOn]:"unrecognized"}}},d=!1,E=0;return r.addEventListener("open",t=>{var s;d=!0,e.debug&&m("Connection opened."),(s=e.onOpen)==null||s.call(e,t),a.emit("open",t)}),r.addEventListener("close",t=>{var s;d=!1,e.debug&&m("Connection closed."),(s=e.onClose)==null||s.call(e,t),a.emit("close",t)}),r.addEventListener("message",t=>{var c;let s=y(t,e.debug);E++,e.debug&&m("New message."),(c=e.onMessage)==null||c.call(e,s),s[e.matchTypeOn]&&a.emit(s[e.matchTypeOn],s),a.emit("message",s)}),r.addEventListener("error",t=>{e.debug&&m(`Error: ${t.message}.`),a.emit("error",t)}),{raw:r,isConnected(){return d},messageCount(){return E},close(){r.close()},on:a.on,off:a.off,clear:a.all.clear,handleNotSent(){for(;o.length;){let t=o.shift();r.send(t)}},send(t){r.readyState===1?r.send(g(t)):o.push(g(t))}}}0&&(module.exports={create});