UNPKG

@starbase/realtime

Version:
1 lines 3.78 kB
"use strict";function Realtime(sock,auth=null){let onError=null,onConnected=null,onDisconnected=null,onWhoami=null,onWhois=null,onUsers=null,onJoin=null,onLeave=null,onMessage=null,onRooms=null,onRoom=null,onChat=null,onAuth=null,onAll=null,callbacks={},ids=0;return sock.onState(s=>{"connected"===s&&(onConnected&&"function"==typeof onConnected&&onConnected({type:"connected"}),onAll&&"function"==typeof onAll&&onAll({type:"connected"})),"disconnected"===s&&(onDisconnected&&"function"==typeof onDisconnected&&onDisconnected({type:"disconnected"}),onAll&&"function"==typeof onAll&&onAll({type:"disconnected"}))}),sock.onError(err=>{onError&&"function"==typeof onError&&onError({error:err}),onAll&&"function"==typeof onAll&&onAll({error:err})}),sock.onMessage(async m=>{m.msgID&&callbacks[m.msgID]&&(m.error?callbacks[m.msgID].reject(m):callbacks[m.msgID].resolve(m)),"whoami"===m.type&&onWhoami&&"function"==typeof onWhoami&&onWhoami(m),"whois"===m.type&&onWhois&&"function"==typeof onWhois&&onWhois(m),"users"===m.type&&onUsers&&"function"==typeof onUsers&&onUsers(m),"rooms"===m.type&&onRooms&&"function"==typeof onRooms&&onRooms(m),"room"===m.type&&onRoom&&"function"==typeof onRoom&&onRoom(m),"message"===m.type&&onMessage&&"function"==typeof onMessage&&onMessage(m),"chat"===m.type&&onChat&&"function"==typeof onChat&&onChat(m),"join"===m.type&&onJoin&&"function"==typeof onJoin&&onJoin(m),"leave"===m.type&&onLeave&&"function"==typeof onLeave&&onLeave(m),"auth"===m.type&&onAuth&&"function"==typeof onAuth&&onAuth(m),onAll&&"function"==typeof onAll&&onAll(m)}),{onWhoami:cb=>{onWhoami=cb},onWhois:cb=>{onWhois=cb},onUsers:cb=>{onUsers=cb},onJoin:cb=>{onJoin=cb},onLeave:cb=>{onLeave=cb},onRoom:cb=>{onRoom=cb},onRooms:cb=>{onRooms=cb},onChat:cb=>{onChat=cb},onMessage:cb=>{onMessage=cb},onAuth:cb=>{onAuth=cb},onAll:cb=>{onAll=cb},onConnected:cb=>{onConnected=cb},onDisconnected:cb=>{onDisconnected=cb},onError:cb=>{onError=cb},connect:()=>{sock.connect()},close:()=>{sock.close()},whoami:()=>{let msgID=ids++;return sock.send({msgID:msgID,type:"whoami"}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},whois:(username=null,id=null)=>{let msgID=ids++;return id&&(id=id.toString()),sock.send({msgID:msgID,type:"whois",username:username,id:id}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},join:room=>{let msgID=ids++;return sock.send({msgID:msgID,type:"join",room:room}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},leave:room=>{let msgID=ids++;return sock.send({msgID:msgID,type:"leave",room:room}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},chat:(room,message)=>{let msgID=ids++;return sock.send({msgID:msgID,type:"chat",room:room.toString(),chat:message}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},message:(to,message)=>{let msgID=ids++;return sock.send({msgID:msgID,type:"message",to:to.toString(),message:message}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},users:()=>{let msgID=ids++;return sock.send({msgID:msgID,type:"users"}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},rooms:()=>{let msgID=ids++;return sock.send({msgID:msgID,type:"rooms"}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},room:room=>{let msgID=ids++;return sock.send({msgID:msgID,type:"room",room:room}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},auth:async()=>{let msgID=ids++;return auth&&sock.send({msgID:msgID,type:"auth",token:await auth.getToken()}),new Promise((resolve,reject)=>{callbacks[msgID]={resolve:resolve,reject:reject}})},sock:sock}}