tinybase
Version:
A reactive data store and sync engine.
2 lines (1 loc) • 851 B
JavaScript
const e=e=>null==e,n=(n,t,s)=>e(n)?s?.():t(n),t=(e,n,t)=>e.slice(n,t),s=(e,n)=>e?.delete(n),r=Object.freeze,c=e=>new Map(e),o=(e,n)=>e?.get(n),a=(n,t,r)=>e(r)?(s(n,t),n):n?.set(t,r),l=/\/([^?]*)/,d=d=>{const u=c();return d.on("connection",((r,d)=>{return n((i=d.url,f=l,i?.match(f)),(([,l])=>n(d.headers["sec-websocket-key"],(async n=>{const d=(g=c,h=i=u,v=f=l,h?.has(v)||a(i,f,g()),o(i,f));var i,f,g,h,v;a(d,n,r),r.on("message",(e=>(e=>{const s=e.indexOf("\n");-1!==s&&((e,t)=>{const s=((e,n)=>e+"\n"+n)(n,t);""===e?(e=>{((e,n)=>{e?.forEach(n)})(e,((e,t)=>{return r=e,t!==n?r.send(s):0;var r}))})(d):o(d,e)?.send(s)})(t(e,0,s),t(e,s+1))})(e.toString("utf8")))),r.on("close",(()=>{s(d,n),(n=>e(n)||0==(e=>e?.size??0)(n))(d)&&s(u,l)}))}))));var i,f})),r({getWebSocketServer:()=>d,destroy:()=>{u.clear(),d.close()}})};export{d as createWsServerSimple};