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