diff --git a/frontend/Room.ts b/frontend/Room.ts index 145ca95..e5b02b6 100644 --- a/frontend/Room.ts +++ b/frontend/Room.ts @@ -73,6 +73,7 @@ export default class Room extends EventTarget ...result.room }; this.roomId = result.room.id; + this.mwse.rooms.set(this.roomId as string, this); } } async join(){ @@ -90,6 +91,7 @@ export default class Room extends EventTarget ...result.room }; this.roomId = result.room.id; + this.mwse.rooms.set(this.roomId as string, this); } } async send(pack: any, wom:boolean = false){ diff --git a/frontend/index.ts b/frontend/index.ts index 2c32f80..c5062d9 100644 --- a/frontend/index.ts +++ b/frontend/index.ts @@ -71,7 +71,7 @@ export default class MWSE extends EventTarget { } let room = new Room(this); room.setRoomOptions(options); - this.rooms.set(room.roomId as string, room); + // this.rooms.set(room.roomId as string, room); this.emit('room'); return room; } diff --git a/script/index.js b/script/index.js index 627e779..6da5ad3 100644 --- a/script/index.js +++ b/script/index.js @@ -1,2 +1,2 @@ -(()=>{class e{autoPair=!1;connected=!1;constructor(e){this.endpoint=new URL(e.endpoint),this.autoPair=e.autoPair||!1}connect(){this.ws=new WebSocket(this.endpoint.href),this.addWSEvents()}disconnect(){this.ws.close()}addWSEvents(){this.ws.addEventListener("open",(()=>this.eventOpen())),this.ws.addEventListener("close",(()=>this.eventClose())),this.ws.addEventListener("error",(()=>this.eventError())),this.ws.addEventListener("message",(({data:e})=>this.eventMessage(e)))}eventOpen(){this.connected=!0;for(const e of this.activeConnectionEvent)e(void 0)}eventClose(){this.connected=!1}eventError(){this.connected=!1}recaivePackEvent=[];onRecaivePack(e){this.recaivePackEvent.push(e)}activeConnectionEvent=[];onActive(e){this.connected?e():this.activeConnectionEvent.push(e)}eventMessage(e){if("string"==typeof e){let t=JSON.parse(e);for(const e of this.recaivePackEvent)e(t)}}tranferToServer(e){this.connected&&this.ws.send(JSON.stringify(e))}}class t{events=new Map;signals=new Map;count=0;constructor(e){this.wsts=e}request(e){return new Promise(((t,s)=>{let i=++this.count;this.wsts.WSTSProtocol.SendRequest(e,i),this.events.set(i,[e=>{t(e)},e=>{s(e)}])}))}stream(e,t){let s=++this.count;this.wsts.WSTSProtocol.StartStream(e,s),this.events.set(s,[e=>{t(e)},()=>{}])}signal(e,t){let s=this.signals.get(e);s?s.push(t):this.signals.set(e,[t])}}class s{events={};emit(e,...t){if(this.events[e])for(const s of this.events[e])s(...t)}on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]}activeScope=!1;scope(e){this.activeScope?e():this.on("scope",e)}}class i extends s{selfSocket=!1;active=!1;constructor(e){super(),this.mwse=e}setPeerOptions(e){"string"==typeof e?this.setSocketId(e):this.options=e}setSocketId(e){this.socketId=e}async metadata(){if("me"==this.socketId){let e=await this.mwse.EventPooling.request({type:"my/socketid"});return this.selfSocket=!0,this.active||=!0,this.socketId=e,this.emit("scope"),this.activeScope=!0,e}}async isReachable(){return await this.mwse.EventPooling.request({type:"is/reachable",to:this.socketId})}async enablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"everybody"})}async disablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"disable"})}async send(e){await this.mwse.EventPooling.request({type:"pack/to",pack:e,to:this.socketId})}}class o extends s{peers=new Map;constructor(e){super(),this.mwse=e}setRoomOptions(e){if("string"==typeof e)this.roomId=e;else{let t={joinType:"free",ifexistsJoin:!0,accessType:"private",notifyActionInvite:!0,notifyActionJoined:!0,notifyActionEjected:!0};Object.assign(t,e),this.options=t}}setRoomId(e){this.roomId=e}async createRoom(e){let t=this.options||e,s=await this.mwse.EventPooling.request({type:"create-room",...t});if("fail"==s.status){if("ALREADY-EXISTS"==s.message&&this.options.ifexistsJoin)return this.join();throw new Error(s.message||s.messages)}this.options={...this.options,...s.room},this.roomId=s.room.id}async join(){let e=await this.mwse.EventPooling.request({type:"joinroom",name:this.options.name,credential:this.options.credential});if("fail"==e.status)throw new Error(e.message);this.options={...this.options,...e.room},this.roomId=e.room.id}async send(e,t=!1){await this.mwse.EventPooling.request({type:"pack/room",pack:e,to:this.roomId,wom:t})}async fetchAllPeers(){let{status:e,peers:t}=await this.mwse.EventPooling.request({type:"room-peers",roomId:this.roomId}),s=[];if("fail"==e)throw new Error("Cant using peers on room");if("success"==e)for(const e of t){let t=this.mwse.peer(e);s.push(t),this.peers.set(e,t)}return s}}class n{constructor(e){this.mwse=e,this.addListener()}addListener(){this.mwse.server?.onRecaivePack((e=>{this.PackAnalyze(e)}))}SendRaw(e){this.mwse.server.tranferToServer(e)}SendOnly(e){this.mwse.server.tranferToServer([e,"R"])}SendRequest(e,t){this.mwse.server.tranferToServer([e,t,"R"])}StartStream(e,t){this.mwse.server.tranferToServer([e,t,"S"])}PackAnalyze(e){let[t,s,i]=e;if("number"==typeof s){let e=this.mwse.EventPooling.events.get(s);if(e){if(e[0](t,i),"E"===i)this.mwse.EventPooling.events.delete(s)}else console.warn("Missing event sended from server")}else{let e=this.mwse.EventPooling.signals.get(s);if(e)for(const s of e)s(t);else console.warn("Missing event sended from server")}}}window.MWSE=class extends s{rooms=new Map;pairs=new Map;peers=new Map;constructor(s){super(),this.server=new e(s),this.server.connect(),this.WSTSProtocol=new n(this),this.EventPooling=new t(this),this.me=new i(this),this.me.scope((()=>{this.peers.set("me",this.me),this.peers.set(this.me.socketId,this.me)})),this.server.onActive((async()=>{this.me.setSocketId("me"),await this.me.metadata(),this.emit("scope"),this.activeScope=!0})),this.packMessagingSystem()}packMessagingSystem(){this.EventPooling.signal("pack",(e=>{let{to:t,pack:s}=e;this.peer(t).emit("message",s)})),this.EventPooling.signal("pack/room",(e=>{let{to:t,pack:s}=e;this.room(t).emit("message",s)})),this.EventPooling.signal("room/joined",(e=>{let{id:t,roomid:s}=e,i=this.room(s),o=this.peer(t);i.emit("join",o)})),this.EventPooling.signal("room/ejected",(e=>{let{id:t,roomid:s}=e,i=this.room(s),o=this.peer(t);i.emit("eject",o)})),this.EventPooling.signal("room/closed",(e=>{let{roomid:t}=e;this.room(t).emit("close"),this.rooms.delete(t)}))}room(e){if("string"==typeof e&&this.rooms.has(e))return this.rooms.get(e);let t=new o(this);return t.setRoomOptions(e),this.rooms.set(t.roomId,t),this.emit("room"),t}peer(e){if("string"==typeof e){if(this.peers.has(e))return this.peers.get(e);if(this.pairs.has(e))return this.pairs.get(e)}let t=new i(this);return t.setPeerOptions(e),this.peers.set(t.socketId,t),this.emit("peer",t),t}}})(); +(()=>{class e{autoPair=!1;connected=!1;constructor(e){this.endpoint=new URL(e.endpoint),this.autoPair=e.autoPair||!1}connect(){this.ws=new WebSocket(this.endpoint.href),this.addWSEvents()}disconnect(){this.ws.close()}addWSEvents(){this.ws.addEventListener("open",(()=>this.eventOpen())),this.ws.addEventListener("close",(()=>this.eventClose())),this.ws.addEventListener("error",(()=>this.eventError())),this.ws.addEventListener("message",(({data:e})=>this.eventMessage(e)))}eventOpen(){this.connected=!0;for(const e of this.activeConnectionEvent)e(void 0)}eventClose(){this.connected=!1}eventError(){this.connected=!1}recaivePackEvent=[];onRecaivePack(e){this.recaivePackEvent.push(e)}activeConnectionEvent=[];onActive(e){this.connected?e():this.activeConnectionEvent.push(e)}eventMessage(e){if("string"==typeof e){let t=JSON.parse(e);for(const e of this.recaivePackEvent)e(t)}}tranferToServer(e){this.connected&&this.ws.send(JSON.stringify(e))}}class t{events=new Map;signals=new Map;count=0;constructor(e){this.wsts=e}request(e){return new Promise(((t,s)=>{let i=++this.count;this.wsts.WSTSProtocol.SendRequest(e,i),this.events.set(i,[e=>{t(e)},e=>{s(e)}])}))}stream(e,t){let s=++this.count;this.wsts.WSTSProtocol.StartStream(e,s),this.events.set(s,[e=>{t(e)},()=>{}])}signal(e,t){let s=this.signals.get(e);s?s.push(t):this.signals.set(e,[t])}}class s{events={};emit(e,...t){if(this.events[e])for(const s of this.events[e])s(...t)}on(e,t){this.events[e]?this.events[e].push(t):this.events[e]=[t]}activeScope=!1;scope(e){this.activeScope?e():this.on("scope",e)}}class i extends s{selfSocket=!1;active=!1;constructor(e){super(),this.mwse=e}setPeerOptions(e){"string"==typeof e?this.setSocketId(e):this.options=e}setSocketId(e){this.socketId=e}async metadata(){if("me"==this.socketId){let e=await this.mwse.EventPooling.request({type:"my/socketid"});return this.selfSocket=!0,this.active||=!0,this.socketId=e,this.emit("scope"),this.activeScope=!0,e}}async isReachable(){return await this.mwse.EventPooling.request({type:"is/reachable",to:this.socketId})}async enablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"everybody"})}async disablePairAuth(){await this.mwse.EventPooling.request({type:"auth/pair-system",value:"disable"})}async send(e){await this.mwse.EventPooling.request({type:"pack/to",pack:e,to:this.socketId})}}class o extends s{peers=new Map;constructor(e){super(),this.mwse=e}setRoomOptions(e){if("string"==typeof e)this.roomId=e;else{let t={joinType:"free",ifexistsJoin:!0,accessType:"private",notifyActionInvite:!0,notifyActionJoined:!0,notifyActionEjected:!0};Object.assign(t,e),this.options=t}}setRoomId(e){this.roomId=e}async createRoom(e){let t=this.options||e,s=await this.mwse.EventPooling.request({type:"create-room",...t});if("fail"==s.status){if("ALREADY-EXISTS"==s.message&&this.options.ifexistsJoin)return this.join();throw new Error(s.message||s.messages)}this.options={...this.options,...s.room},this.roomId=s.room.id,this.mwse.rooms.set(this.roomId,this)}async join(){let e=await this.mwse.EventPooling.request({type:"joinroom",name:this.options.name,credential:this.options.credential});if("fail"==e.status)throw new Error(e.message);this.options={...this.options,...e.room},this.roomId=e.room.id,this.mwse.rooms.set(this.roomId,this)}async send(e,t=!1){await this.mwse.EventPooling.request({type:"pack/room",pack:e,to:this.roomId,wom:t})}async fetchAllPeers(){let{status:e,peers:t}=await this.mwse.EventPooling.request({type:"room-peers",roomId:this.roomId}),s=[];if("fail"==e)throw new Error("Cant using peers on room");if("success"==e)for(const e of t){let t=this.mwse.peer(e);s.push(t),this.peers.set(e,t)}return s}}class n{constructor(e){this.mwse=e,this.addListener()}addListener(){this.mwse.server?.onRecaivePack((e=>{this.PackAnalyze(e)}))}SendRaw(e){this.mwse.server.tranferToServer(e)}SendOnly(e){this.mwse.server.tranferToServer([e,"R"])}SendRequest(e,t){this.mwse.server.tranferToServer([e,t,"R"])}StartStream(e,t){this.mwse.server.tranferToServer([e,t,"S"])}PackAnalyze(e){let[t,s,i]=e;if("number"==typeof s){let e=this.mwse.EventPooling.events.get(s);if(e){if(e[0](t,i),"E"===i)this.mwse.EventPooling.events.delete(s)}else console.warn("Missing event sended from server")}else{let e=this.mwse.EventPooling.signals.get(s);if(e)for(const s of e)s(t);else console.warn("Missing event sended from server")}}}window.MWSE=class extends s{rooms=new Map;pairs=new Map;peers=new Map;constructor(s){super(),this.server=new e(s),this.server.connect(),this.WSTSProtocol=new n(this),this.EventPooling=new t(this),this.me=new i(this),this.me.scope((()=>{this.peers.set("me",this.me),this.peers.set(this.me.socketId,this.me)})),this.server.onActive((async()=>{this.me.setSocketId("me"),await this.me.metadata(),this.emit("scope"),this.activeScope=!0})),this.packMessagingSystem()}packMessagingSystem(){this.EventPooling.signal("pack",(e=>{let{to:t,pack:s}=e;this.peer(t).emit("message",s)})),this.EventPooling.signal("pack/room",(e=>{let{to:t,pack:s}=e;this.room(t).emit("message",s)})),this.EventPooling.signal("room/joined",(e=>{let{id:t,roomid:s}=e,i=this.room(s),o=this.peer(t);i.emit("join",o)})),this.EventPooling.signal("room/ejected",(e=>{let{id:t,roomid:s}=e,i=this.room(s),o=this.peer(t);i.emit("eject",o)})),this.EventPooling.signal("room/closed",(e=>{let{roomid:t}=e;this.room(t).emit("close"),this.rooms.delete(t)}))}room(e){if("string"==typeof e&&this.rooms.has(e))return this.rooms.get(e);let t=new o(this);return t.setRoomOptions(e),this.emit("room"),t}peer(e){if("string"==typeof e){if(this.peers.has(e))return this.peers.get(e);if(this.pairs.has(e))return this.pairs.get(e)}let t=new i(this);return t.setPeerOptions(e),this.peers.set(t.socketId,t),this.emit("peer",t),t}}})(); //# sourceMappingURL=index.js.map diff --git a/script/index.js.map b/script/index.js.map index 6edc28f..425aa98 100644 --- a/script/index.js.map +++ b/script/index.js.map @@ -1 +1 @@ -{"mappings":"MAIO,MAAMA,EAITC,UAA4B,EAC5BC,WAA6B,EAC7BC,YAAYC,GACRC,KAAKC,SAAW,IAAIC,IAAIH,EAAQE,UAChCD,KAAKJ,SAAWG,EAAQH,WAAY,C,CAExCO,UAEIH,KAAKI,GAAK,IAAIC,UAAUL,KAAKC,SAASK,MACtCN,KAAKO,a,CAETC,aAEIR,KAAKI,GAAGK,O,CAEZF,cAEIP,KAAKI,GAAGM,iBAAiB,QAAQ,IAAMV,KAAKW,cAC5CX,KAAKI,GAAGM,iBAAiB,SAAS,IAAMV,KAAKY,eAC7CZ,KAAKI,GAAGM,iBAAiB,SAAS,IAAMV,KAAKa,eAC7Cb,KAAKI,GAAGM,iBAAiB,WAAW,EAACI,KAACA,KAAUd,KAAKe,aAAaD,I,CAEtEH,YAEIX,KAAKH,WAAY,EACjB,IAAK,MAAMmB,KAAYhB,KAAKiB,sBACxBD,OAAS,E,CAGjBJ,aAEIZ,KAAKH,WAAY,C,CAErBgB,aAEIb,KAAKH,WAAY,C,CAErBqB,iBAAmD,GACnDC,cAAqBC,GAEjBpB,KAAKkB,iBAAiBG,KAAKD,E,CAE/BH,sBAA6C,GAC7CK,SAAgBF,GAETpB,KAAKH,UAEJuB,IAEApB,KAAKiB,sBAAsBI,KAAKD,E,CAGxCL,aAAqBD,GAEjB,GAAkB,iBAARA,EACV,CACI,IAAIS,EAAQC,KAAKC,MAAMX,GACvB,IAAK,MAAME,KAAYhB,KAAKkB,iBACxBF,EAASO,E,EAIrBG,gBAAuBZ,GAEhBd,KAAKH,WAEJG,KAAKI,GAAGuB,KAAKH,KAAKI,UAAUd,G,ECvEzB,MAAAe,EAGXC,OAAmD,IAAIC,IACvDC,QAA2C,IAAID,IAC/CE,MAAe,EACfnC,YAAYoC,GACRlC,KAAKkC,KAAOA,C,CAEhBC,QAAeC,GAEX,OAAO,IAAIC,SAAQ,CAACC,EAAGC,KACnB,IAAIC,IAAOxC,KAAKiC,MAChBjC,KAAKkC,KAAKO,aAAaC,YAAYN,EAAKI,GACxCxC,KAAK8B,OAAOa,IAAIH,EAAG,CACd1B,IACGwB,EAAGxB,EAAK,EAEXA,IACGyB,EAAIzB,EAAK,GAEf,G,CAGV8B,OAAcR,EAAcpB,GAExB,IAAIwB,IAAOxC,KAAKiC,MAChBjC,KAAKkC,KAAKO,aAAaI,YAAYT,EAAKI,GACxCxC,KAAK8B,OAAOa,IAAIH,EAAG,CACd1B,IACGE,EAASF,EAAK,EAElB,Q,CAGRgC,OAAcC,EAAe/B,GAEzB,IAAIgC,EAAIhD,KAAKgC,QAAQiB,IAAIF,GACrBC,EAIAA,EAAE3B,KAAKL,GAFPhB,KAAKgC,QAAQW,IAAII,EAAO,CAAC/B,G,EC3CtB,MAAAkC,EAEXpB,OAA6C,GAC7CqB,KAAYC,KAAsBC,GAE9B,GAAGrD,KAAK8B,OAAOsB,GAEX,IAAK,MAAMpC,KAAYhB,KAAK8B,OAAOsB,GAC/BpC,KAAYqC,E,CAIxBC,GAAUF,EAAmBpC,GAEtBhB,KAAK8B,OAAOsB,GAEXpD,KAAK8B,OAAOsB,GAAW/B,KAAKL,GAE5BhB,KAAK8B,OAAOsB,GAAa,CAACpC,E,CAGlCuC,aAA+B,EAC/BC,MAAMC,GAECzD,KAAKuD,YAEJE,IAEAzD,KAAKsD,GAAG,QAASG,E,ECpBd,MAAAC,UAAmBR,EAK9BS,YAA8B,EAC9BC,QAA0B,EAC1B9D,YAAYoC,GACR2B,QACA7D,KAAK8D,KAAO5B,C,CAEhB6B,eAAehE,GACU,iBAAXA,EAENC,KAAKgE,YAAYjE,GAEjBC,KAAKD,QAAUA,C,CAGvBiE,YAAYC,GACRjE,KAAKkE,SAAWD,C,CAEpBE,iBAEI,GAAoB,MAAjBnE,KAAKkE,SACR,CACI,IAAIE,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,gBAOT,OALAtE,KAAK2D,YAAa,EAClB3D,KAAK4D,UAAW,EAChB5D,KAAKkE,SAAWE,EAChBpE,KAAKmD,KAAK,SACVnD,KAAKuD,aAAc,EACZa,C,EAGfD,oBAEI,aAAanE,KAAK8D,KAAKO,aAAalC,QAAQ,CACxCmC,KAAK,eACLC,GAAIvE,KAAKkE,U,CAGjBC,6BACUnE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,mBACLE,MAAO,a,CAGfL,8BACUnE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,mBACLE,MAAO,W,CAGfL,WAAWM,SACDzE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,U,KACLG,EACAF,GAAIvE,KAAKkE,U,EClDN,MAAAQ,UAAmBxB,EAU9ByB,MAAkC,IAAI5C,IAEtCjC,YAAYoC,GACR2B,QACA7D,KAAK8D,KAAO5B,C,CAEhB0C,eAAsB7E,GAElB,GAAqB,iBAAXA,EAENC,KAAK6E,OAAS9E,MACb,CACD,IAAI+E,EAAiB,CACjBC,SAAU,OACVC,cAAc,EACdC,WAAY,UACZC,oBAAoB,EACpBC,oBAAoB,EACpBC,qBAAqB,GAEzBC,OAAOC,OAAOR,EAAe/E,GAC7BC,KAAKD,QAAU+E,C,EAIvBS,UAAUtB,GACNjE,KAAK6E,OAASZ,C,CAElBE,iBAAiBqB,GACb,IAAIzF,EAAUC,KAAKD,SAAYyF,EAC3BpB,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,iBACFvE,IAEP,GAAoB,QAAjBqE,EAAOqB,OACV,CACI,GAAqB,kBAAlBrB,EAAOsB,SAA+B1F,KAAKD,QAAQiF,aAElD,OAAOhF,KAAK2F,OAEhB,MAAM,IAAIC,MAAMxB,EAAOsB,SAAWtB,EAAOyB,S,CAEzC7F,KAAKD,QAAU,IACRC,KAAKD,WACLqE,EAAO0B,MAEd9F,KAAK6E,OAAST,EAAO0B,KAAKtD,E,CAGlC2B,aACI,IAAIC,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,WACLyB,KAAM/F,KAAKD,QAAQgG,KACnBC,WAAYhG,KAAKD,QAAQiG,aAE7B,GAAoB,QAAjB5B,EAAOqB,OAEN,MAAM,IAAIG,MAAMxB,EAAOsB,SAEvB1F,KAAKD,QAAU,IACRC,KAAKD,WACLqE,EAAO0B,MAEd9F,KAAK6E,OAAST,EAAO0B,KAAKtD,E,CAGlC2B,WAAWM,EAAWwB,GAAc,SAC1BjG,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,Y,KACLG,EACAF,GAAIvE,KAAK6E,O,IACToB,G,CAGR9B,sBACI,IAAIsB,OAACA,EAAMd,MAAEA,SAAe3E,KAAK8D,KAAKO,aAAalC,QAAQ,CACvDmC,KAAK,aACLO,OAAQ7E,KAAK6E,SAGbqB,EAAe,GAEnB,GAAa,QAAVT,EAEC,MAAM,IAAIG,MAAM,4BACd,GAAa,WAAVH,EACL,IAAK,MAAMU,KAAUxB,EAAO,CACxB,IAAIyB,EAAOpG,KAAK8D,KAAKsC,KAAKD,GAC1BD,EAAI7E,KAAK+E,GACTpG,KAAK2E,MAAMhC,IAAIwD,EAAQC,E,CAG/B,OAAOF,C,ECnHA,MAAAG,EAGXvG,YAAYoC,GACRlC,KAAK8D,KAAO5B,EACZlC,KAAKsG,a,CAETA,cAEItG,KAAK8D,KAAKyC,QAAQpF,eAAesD,IAC7BzE,KAAKwG,YAAY/B,EAAK,G,CAG9BgC,QAAehC,GAEXzE,KAAK8D,KAAKyC,OAAO7E,gBAAgB+C,E,CAErCiC,SAAgBjC,GAEZzE,KAAK8D,KAAKyC,OAAO7E,gBAAgB,CAAC+C,EAAK,K,CAE3C/B,YAAmB+B,EAAejC,GAE9BxC,KAAK8D,KAAKyC,OAAO7E,gBAAgB,CAAC+C,EAAMjC,EAAI,K,CAEhDK,YAAmB4B,EAAejC,GAE9BxC,KAAK8D,KAAKyC,OAAO7E,gBAAgB,CAAC+C,EAAMjC,EAAI,K,CAEhDgE,YAAmB1F,GAEf,IAAK6F,EAASnE,EAAIoE,GAAU9F,EAC5B,GAAiB,iBAAP0B,EACV,CACI,IAAIxB,EAAWhB,KAAK8D,KAAKO,aAAavC,OAAOmB,IAAIT,GACjD,GAAGxB,GAGC,GADAA,EAAS,GAAG2F,EAASC,GAGZ,MAFFA,EAGC5G,KAAK8D,KAAKO,aAAavC,OAAO+E,OAAOrE,QAQ3CsE,QAAQC,KAAK,mC,KAClB,CACD,IAAI/E,EAAUhC,KAAK8D,KAAKO,aAAarC,QAAQiB,IAAIT,GACjD,GAAGR,EAEC,IAAK,MAAMgF,KAAYhF,EACnBgF,EAASL,QAEXG,QAAQC,KAAK,mC,GC0C/BE,OAAOC,KAlGQ,cAAmBhE,EAI9BiE,MAAmC,IAAIpF,IACvCqF,MAAmC,IAAIrF,IACvC4C,MAAmC,IAAI5C,IAEvCjC,YAAYC,GACR8D,QACA7D,KAAKuG,OAAS,IAAI5G,EAAWI,GAC7BC,KAAKuG,OAAOpG,UACZH,KAAKyC,aAAe,IAAI4D,EAAarG,MACrCA,KAAKqE,aAAe,IAAIxC,EAAU7B,MAClCA,KAAKqH,GAAK,IAAI3D,EAAK1D,MACnBA,KAAKqH,GAAG7D,OAAM,KACVxD,KAAK2E,MAAMhC,IAAI,KAAM3C,KAAKqH,IAC1BrH,KAAK2E,MAAMhC,IAAI3C,KAAKqH,GAAGnD,SAAoBlE,KAAKqH,GAAG,IAEvDrH,KAAKuG,OAAOjF,UAAS6C,UACjBnE,KAAKqH,GAAGrD,YAAY,YACdhE,KAAKqH,GAAGC,WACdtH,KAAKmD,KAAK,SACVnD,KAAKuD,aAAc,CAAI,IAE3BvD,KAAKuH,qB,CAETA,sBAEIvH,KAAKqE,aAAavB,OAAO,QAAQ6D,IAC7B,IAAIpC,GAACA,EAAEE,KAACA,GAAQkC,EAChB3G,KAAKoG,KAAK7B,GAAIpB,KAAK,UAAWsB,EAAK,IAEvCzE,KAAKqE,aAAavB,OAAO,aAAa6D,IAClC,IAAIpC,GAACA,EAAEE,KAACA,GAAQkC,EAChB3G,KAAK8F,KAAKvB,GAAIpB,KAAK,UAAWsB,EAAK,IAEvCzE,KAAKqE,aAAavB,OAAO,eAAe6D,IACpC,IAAInE,GAACA,EAAEgF,OAACA,GAAUb,EACdb,EAAO9F,KAAK8F,KAAK0B,GACjBpB,EAAOpG,KAAKoG,KAAK5D,GACrBsD,EAAK3C,KAAK,OAAQiD,EAAK,IAE3BpG,KAAKqE,aAAavB,OAAO,gBAAgB6D,IACrC,IAAInE,GAACA,EAAEgF,OAACA,GAAUb,EACdb,EAAO9F,KAAK8F,KAAK0B,GACjBpB,EAAOpG,KAAKoG,KAAK5D,GACrBsD,EAAK3C,KAAK,QAASiD,EAAK,IAE5BpG,KAAKqE,aAAavB,OAAO,eAAe6D,IACpC,IAAIa,OAACA,GAAUb,EACJ3G,KAAK8F,KAAK0B,GAChBrE,KAAK,SACVnD,KAAKmH,MAAMN,OAAOW,EAAO,G,CAGjC1B,KAAY/F,GAER,GAAqB,iBAAXA,GAEHC,KAAKmH,MAAMM,IAAI1H,GAEd,OAAOC,KAAKmH,MAAMlE,IAAIlD,GAG9B,IAAI+F,EAAO,IAAIpB,EAAK1E,MAIpB,OAHA8F,EAAKlB,eAAe7E,GACpBC,KAAKmH,MAAMxE,IAAImD,EAAKjB,OAAkBiB,GACtC9F,KAAKmD,KAAK,QACH2C,C,CAEXM,KAAYrG,GAER,GAAqB,iBAAXA,EACV,CACI,GAAGC,KAAK2E,MAAM8C,IAAI1H,GAEd,OAAOC,KAAK2E,MAAM1B,IAAIlD,GAE1B,GAAGC,KAAKoH,MAAMK,IAAI1H,GAEd,OAAOC,KAAKoH,MAAMnE,IAAIlD,E,CAG9B,IAAIqG,EAAO,IAAI1C,EAAK1D,MAIpB,OAHAoG,EAAKrC,eAAehE,GACpBC,KAAK2E,MAAMhC,IAAIyD,EAAKlC,SAAoBkC,GACxCpG,KAAKmD,KAAK,OAAQiD,GACXA,C","sources":["frontend/Connection.ts","frontend/EventPool.ts","frontend/EventTarget.ts","frontend/Peer.ts","frontend/Room.ts","frontend/WSTSProtocol.ts","frontend/index.ts"],"sourcesContent":["export interface IConnection{\r\n endpoint: string;\r\n autoPair?: boolean;\r\n}\r\nexport class Connection\r\n{\r\n public ws! : WebSocket;\r\n public endpoint : URL;\r\n public autoPair : boolean = false;\r\n public connected : boolean = false;\r\n constructor(options: IConnection){\r\n this.endpoint = new URL(options.endpoint);\r\n this.autoPair = options.autoPair || false;\r\n }\r\n public connect()\r\n {\r\n this.ws = new WebSocket(this.endpoint.href);\r\n this.addWSEvents();\r\n }\r\n public disconnect()\r\n {\r\n this.ws.close();\r\n }\r\n public addWSEvents()\r\n {\r\n this.ws.addEventListener(\"open\", () => this.eventOpen());\r\n this.ws.addEventListener(\"close\", () => this.eventClose());\r\n this.ws.addEventListener(\"error\", () => this.eventError());\r\n this.ws.addEventListener(\"message\", ({data}) => this.eventMessage(data as string | ArrayBuffer));\r\n }\r\n private eventOpen()\r\n {\r\n this.connected = true;\r\n for (const callback of this.activeConnectionEvent) {\r\n callback(void 0);\r\n }\r\n }\r\n private eventClose()\r\n {\r\n this.connected = false;\r\n }\r\n private eventError()\r\n {\r\n this.connected = false;\r\n }\r\n private recaivePackEvent : ((data:any) => any)[] = [];\r\n public onRecaivePack(func:(data:any) => any)\r\n {\r\n this.recaivePackEvent.push(func);\r\n }\r\n private activeConnectionEvent : Function[] = [];\r\n public onActive(func:Function)\r\n {\r\n if(this.connected)\r\n {\r\n func()\r\n }else{\r\n this.activeConnectionEvent.push(func);\r\n }\r\n }\r\n private eventMessage(data: string | ArrayBuffer)\r\n {\r\n if(typeof data == \"string\")\r\n {\r\n let $data = JSON.parse(data);\r\n for (const callback of this.recaivePackEvent) {\r\n callback($data);\r\n }\r\n }\r\n }\r\n public tranferToServer(data:any)\r\n {\r\n if(this.connected)\r\n {\r\n this.ws.send(JSON.stringify(data));\r\n }\r\n }\r\n}","import MWSE from \"./index\";\r\nimport { Message } from \"./WSTSProtocol\";\r\n\r\nexport default class EventPool\r\n{\r\n public wsts : MWSE;\r\n public events : Map = new Map();\r\n public signals : Map = new Map();\r\n public count = 0;\r\n constructor(wsts:MWSE){\r\n this.wsts = wsts;\r\n }\r\n public request(msg: Message) : Promise\r\n {\r\n return new Promise((ok,rej) => {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.SendRequest(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n ok(data);\r\n },\r\n (data:any) => {\r\n rej(data);\r\n }\r\n ]);\r\n })\r\n }\r\n public stream(msg: Message, callback: Function)\r\n {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.StartStream(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n callback(data);\r\n },\r\n () => { }\r\n ]);\r\n }\r\n public signal(event: string, callback: Function)\r\n {\r\n let T = this.signals.get(event);\r\n if(!T)\r\n {\r\n this.signals.set(event, [callback]);\r\n }else{\r\n T.push(callback);\r\n }\r\n }\r\n}","export default class EventTarget\r\n{\r\n private events : {[key:string]:Function[]} = {};\r\n public emit(eventName :string, ...args:any[])\r\n {\r\n if(this.events[eventName])\r\n {\r\n for (const callback of this.events[eventName]) {\r\n callback(...args);\r\n }\r\n }\r\n }\r\n public on(eventName :string, callback:Function)\r\n {\r\n if(this.events[eventName])\r\n {\r\n this.events[eventName].push(callback)\r\n }else{\r\n this.events[eventName] = [callback];\r\n }\r\n }\r\n public activeScope : boolean = false;\r\n scope(f:Function)\r\n {\r\n if(this.activeScope)\r\n {\r\n f()\r\n }else{\r\n this.on('scope', f)\r\n }\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\n\r\n\r\nexport default class Peer extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IPeerOptions;\r\n public socketId? : string;\r\n public selfSocket : boolean = false;\r\n public active : boolean = false;\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n setPeerOptions(options: string | IPeerOptions){\r\n if(typeof options == \"string\")\r\n {\r\n this.setSocketId(options)\r\n }else{\r\n this.options = options;\r\n }\r\n }\r\n setSocketId(uuid: string){\r\n this.socketId = uuid;\r\n }\r\n async metadata() : Promise\r\n {\r\n if(this.socketId == 'me')\r\n {\r\n let result = await this.mwse.EventPooling.request({\r\n type:'my/socketid'\r\n });\r\n this.selfSocket = true;\r\n this.active ||= true;\r\n this.socketId = result;\r\n this.emit('scope');\r\n this.activeScope = true;\r\n return result;\r\n }\r\n }\r\n async isReachable()\r\n {\r\n return await this.mwse.EventPooling.request({\r\n type:'is/reachable',\r\n to: this.socketId\r\n });\r\n }\r\n async enablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'everybody'\r\n });\r\n }\r\n async disablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'disable'\r\n });\r\n }\r\n async send(pack: any){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/to',\r\n pack,\r\n to: this.socketId\r\n });\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\nimport Peer from \"./Peer\";\r\n\r\nexport interface IRoomOptions\r\n{\r\n name: string;\r\n description?:string;\r\n joinType: \"free\"|\"invite\"|\"password\"|\"lock\";\r\n credential?: string;\r\n ifexistsJoin?: boolean;\r\n accessType?: \"public\"|\"private\";\r\n notifyActionInvite?: boolean;\r\n notifyActionJoined?: boolean;\r\n notifyActionEjected?: boolean;\r\n}\r\n\r\n\r\nexport default class Room extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public roomId? : string;\r\n public accessType? : \"public\"|\"private\";\r\n public description? : string;\r\n public joinType? : \"free\"|\"invite\"|\"password\"|\"lock\";\r\n public name? : string;\r\n public owner? : string;\r\n public peers : Map = new Map();\r\n\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions | string)\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n this.roomId = options;\r\n }else{\r\n let defaultOptions = {\r\n joinType: \"free\",\r\n ifexistsJoin: true,\r\n accessType: \"private\",\r\n notifyActionInvite: true,\r\n notifyActionJoined: true,\r\n notifyActionEjected: true\r\n };\r\n Object.assign(defaultOptions,options);\r\n this.options = defaultOptions as IRoomOptions;\r\n }\r\n }\r\n \r\n setRoomId(uuid: string){\r\n this.roomId = uuid;\r\n }\r\n async createRoom(roomOptions : IRoomOptions){\r\n let options = this.options || roomOptions;\r\n let result = await this.mwse.EventPooling.request({\r\n type:'create-room',\r\n ...options\r\n });\r\n if(result.status == 'fail')\r\n {\r\n if(result.message == \"ALREADY-EXISTS\" && this.options.ifexistsJoin)\r\n {\r\n return this.join();\r\n }\r\n throw new Error(result.message || result.messages);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n }\r\n }\r\n async join(){\r\n let result = await this.mwse.EventPooling.request({\r\n type:'joinroom',\r\n name: this.options.name,\r\n credential: this.options.credential\r\n });\r\n if(result.status == 'fail')\r\n {\r\n throw new Error(result.message);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n }\r\n }\r\n async send(pack: any, wom:boolean = false){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/room',\r\n pack,\r\n to: this.roomId,\r\n wom\r\n });\r\n }\r\n async fetchAllPeers(){\r\n let {status, peers} = await this.mwse.EventPooling.request({\r\n type:'room-peers',\r\n roomId: this.roomId\r\n }) as {status:\"success\"|\"fail\", peers: string[]};\r\n\r\n let cup : Peer[] = [];\r\n\r\n if(status == 'fail')\r\n {\r\n throw new Error(\"Cant using peers on room\")\r\n }else if(status == 'success'){\r\n for (const peerid of peers) {\r\n let peer = this.mwse.peer(peerid);\r\n cup.push(peer);\r\n this.peers.set(peerid, peer);\r\n }\r\n };\r\n return cup;\r\n }\r\n}","import MWSE from \"./index\";\r\n\r\nexport interface Message {\r\n [key:string|number]:any;\r\n}\r\nexport default class WSTSProtocol\r\n{\r\n public mwse : MWSE;\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n this.addListener();\r\n }\r\n public addListener()\r\n {\r\n this.mwse.server?.onRecaivePack((pack)=>{\r\n this.PackAnalyze(pack)\r\n })\r\n }\r\n public SendRaw(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer(pack);\r\n }\r\n public SendOnly(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer([pack,'R']);\r\n }\r\n public SendRequest(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'R']);\r\n }\r\n public StartStream(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'S']);\r\n }\r\n public PackAnalyze(data:any)\r\n {\r\n let [payload, id, action] = data;\r\n if(typeof id === 'number')\r\n {\r\n let callback = this.mwse.EventPooling.events.get(id);\r\n if(callback)\r\n {\r\n callback[0](payload, action);\r\n switch(action)\r\n {\r\n case 'E':{ // [E]ND flag\r\n this.mwse.EventPooling.events.delete(id);\r\n break;\r\n }\r\n case 'S': // [S]TREAM flag\r\n default:{\r\n break;\r\n }\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }else{\r\n let signals = this.mwse.EventPooling.signals.get(id);\r\n if(signals)\r\n {\r\n for (const callback of signals) {\r\n callback(payload);\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }\r\n }\r\n}","import {Connection,IConnection} from \"./Connection\";\r\nimport EventPool from \"./EventPool\";\r\nimport EventTarget from \"./EventTarget\";\r\nimport Peer from \"./Peer\";\r\nimport Room, { IRoomOptions } from \"./Room\";\r\nimport WSTSProtocol from \"./WSTSProtocol\";\r\nexport default class MWSE extends EventTarget {\r\n public server! : Connection;\r\n public WSTSProtocol! : WSTSProtocol;\r\n public EventPooling! : EventPool;\r\n public rooms : Map = new Map();\r\n public pairs : Map = new Map();\r\n public peers : Map = new Map();\r\n public me! : Peer;\r\n constructor(options: IConnection){\r\n super();\r\n this.server = new Connection(options);\r\n this.server.connect();\r\n this.WSTSProtocol = new WSTSProtocol(this);\r\n this.EventPooling = new EventPool(this);\r\n this.me = new Peer(this);\r\n this.me.scope(()=>{\r\n this.peers.set('me', this.me);\r\n this.peers.set(this.me.socketId as string, this.me);\r\n })\r\n this.server.onActive(async ()=>{\r\n this.me.setSocketId('me');\r\n await this.me.metadata();\r\n this.emit('scope');\r\n this.activeScope = true;\r\n });\r\n this.packMessagingSystem();\r\n }\r\n private packMessagingSystem()\r\n {\r\n this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.peer(to).emit('message', pack);\r\n })\r\n this.EventPooling.signal('pack/room',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.room(to).emit('message', pack);\r\n })\r\n this.EventPooling.signal('room/joined',(payload : {id:string,roomid:any,ownerid:string}) => {\r\n let {id,roomid} = payload;\r\n let room = this.room(roomid);\r\n let peer = this.peer(id);\r\n room.emit('join', peer);\r\n })\r\n this.EventPooling.signal('room/ejected',(payload : {id:string,roomid:any,ownerid:string}) => {\r\n let {id,roomid} = payload;\r\n let room = this.room(roomid);\r\n let peer = this.peer(id);\r\n room.emit('eject', peer);\r\n })\r\n this.EventPooling.signal('room/closed',(payload : {roomid:any}) => {\r\n let {roomid} = payload;\r\n let room = this.room(roomid);\r\n room.emit('close');\r\n this.rooms.delete(roomid);\r\n })\r\n }\r\n public room(options: IRoomOptions | string) : Room\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.rooms.has(options))\r\n {\r\n return this.rooms.get(options) as Room\r\n }\r\n }\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\r\n this.rooms.set(room.roomId as string, room);\r\n this.emit('room');\r\n return room;\r\n }\r\n public peer(options: string | IRoomOptions) : Peer\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.peers.has(options))\r\n {\r\n return this.peers.get(options) as Peer\r\n }\r\n if(this.pairs.has(options))\r\n {\r\n return this.pairs.get(options) as Peer\r\n }\r\n }\r\n let peer = new Peer(this);\r\n peer.setPeerOptions(options);\r\n this.peers.set(peer.socketId as string, peer);\r\n this.emit('peer', peer);\r\n return peer;\r\n }\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n MWSE: any;\r\n }\r\n}\r\n\r\nwindow.MWSE = MWSE;"],"names":["$201ddc79d766b86c$export$98b66c25bb38499d","autoPair","connected","constructor","options","this","endpoint","URL","connect","ws","WebSocket","href","addWSEvents","disconnect","close","addEventListener","eventOpen","eventClose","eventError","data","eventMessage","callback","activeConnectionEvent","recaivePackEvent","onRecaivePack","func","push","onActive","$data","JSON","parse","tranferToServer","send","stringify","$7bc29f3852fca8a1$export$2e2bcd8739ae039","events","Map","signals","count","wsts","request","msg","Promise","ok","rej","id","WSTSProtocol","SendRequest","set","stream","StartStream","signal","event","T","get","$639a7a490074f3f2$export$2e2bcd8739ae039","emit","eventName","args","on","activeScope","scope","f","$9f6c30de484136d4$export$2e2bcd8739ae039","selfSocket","active","super","mwse","setPeerOptions","setSocketId","uuid","socketId","async","result","EventPooling","type","to","value","pack","$4415e33c9749fde6$export$2e2bcd8739ae039","peers","setRoomOptions","roomId","defaultOptions","joinType","ifexistsJoin","accessType","notifyActionInvite","notifyActionJoined","notifyActionEjected","Object","assign","setRoomId","roomOptions","status","message","join","Error","messages","room","name","credential","wom","cup","peerid","peer","$023568b0c88ffd16$export$2e2bcd8739ae039","addListener","server","PackAnalyze","SendRaw","SendOnly","payload","action","delete","console","warn","callback1","window","MWSE","rooms","pairs","me","metadata","packMessagingSystem","roomid","has"],"version":3,"file":"index.js.map"} \ No newline at end of file +{"mappings":"MAIO,MAAMA,EAITC,UAA4B,EAC5BC,WAA6B,EAC7BC,YAAYC,GACRC,KAAKC,SAAW,IAAIC,IAAIH,EAAQE,UAChCD,KAAKJ,SAAWG,EAAQH,WAAY,C,CAExCO,UAEIH,KAAKI,GAAK,IAAIC,UAAUL,KAAKC,SAASK,MACtCN,KAAKO,a,CAETC,aAEIR,KAAKI,GAAGK,O,CAEZF,cAEIP,KAAKI,GAAGM,iBAAiB,QAAQ,IAAMV,KAAKW,cAC5CX,KAAKI,GAAGM,iBAAiB,SAAS,IAAMV,KAAKY,eAC7CZ,KAAKI,GAAGM,iBAAiB,SAAS,IAAMV,KAAKa,eAC7Cb,KAAKI,GAAGM,iBAAiB,WAAW,EAACI,KAACA,KAAUd,KAAKe,aAAaD,I,CAEtEH,YAEIX,KAAKH,WAAY,EACjB,IAAK,MAAMmB,KAAYhB,KAAKiB,sBACxBD,OAAS,E,CAGjBJ,aAEIZ,KAAKH,WAAY,C,CAErBgB,aAEIb,KAAKH,WAAY,C,CAErBqB,iBAAmD,GACnDC,cAAqBC,GAEjBpB,KAAKkB,iBAAiBG,KAAKD,E,CAE/BH,sBAA6C,GAC7CK,SAAgBF,GAETpB,KAAKH,UAEJuB,IAEApB,KAAKiB,sBAAsBI,KAAKD,E,CAGxCL,aAAqBD,GAEjB,GAAkB,iBAARA,EACV,CACI,IAAIS,EAAQC,KAAKC,MAAMX,GACvB,IAAK,MAAME,KAAYhB,KAAKkB,iBACxBF,EAASO,E,EAIrBG,gBAAuBZ,GAEhBd,KAAKH,WAEJG,KAAKI,GAAGuB,KAAKH,KAAKI,UAAUd,G,ECvEzB,MAAAe,EAGXC,OAAmD,IAAIC,IACvDC,QAA2C,IAAID,IAC/CE,MAAe,EACfnC,YAAYoC,GACRlC,KAAKkC,KAAOA,C,CAEhBC,QAAeC,GAEX,OAAO,IAAIC,SAAQ,CAACC,EAAGC,KACnB,IAAIC,IAAOxC,KAAKiC,MAChBjC,KAAKkC,KAAKO,aAAaC,YAAYN,EAAKI,GACxCxC,KAAK8B,OAAOa,IAAIH,EAAG,CACd1B,IACGwB,EAAGxB,EAAK,EAEXA,IACGyB,EAAIzB,EAAK,GAEf,G,CAGV8B,OAAcR,EAAcpB,GAExB,IAAIwB,IAAOxC,KAAKiC,MAChBjC,KAAKkC,KAAKO,aAAaI,YAAYT,EAAKI,GACxCxC,KAAK8B,OAAOa,IAAIH,EAAG,CACd1B,IACGE,EAASF,EAAK,EAElB,Q,CAGRgC,OAAcC,EAAe/B,GAEzB,IAAIgC,EAAIhD,KAAKgC,QAAQiB,IAAIF,GACrBC,EAIAA,EAAE3B,KAAKL,GAFPhB,KAAKgC,QAAQW,IAAII,EAAO,CAAC/B,G,EC3CtB,MAAAkC,EAEXpB,OAA6C,GAC7CqB,KAAYC,KAAsBC,GAE9B,GAAGrD,KAAK8B,OAAOsB,GAEX,IAAK,MAAMpC,KAAYhB,KAAK8B,OAAOsB,GAC/BpC,KAAYqC,E,CAIxBC,GAAUF,EAAmBpC,GAEtBhB,KAAK8B,OAAOsB,GAEXpD,KAAK8B,OAAOsB,GAAW/B,KAAKL,GAE5BhB,KAAK8B,OAAOsB,GAAa,CAACpC,E,CAGlCuC,aAA+B,EAC/BC,MAAMC,GAECzD,KAAKuD,YAEJE,IAEAzD,KAAKsD,GAAG,QAASG,E,ECpBd,MAAAC,UAAmBR,EAK9BS,YAA8B,EAC9BC,QAA0B,EAC1B9D,YAAYoC,GACR2B,QACA7D,KAAK8D,KAAO5B,C,CAEhB6B,eAAehE,GACU,iBAAXA,EAENC,KAAKgE,YAAYjE,GAEjBC,KAAKD,QAAUA,C,CAGvBiE,YAAYC,GACRjE,KAAKkE,SAAWD,C,CAEpBE,iBAEI,GAAoB,MAAjBnE,KAAKkE,SACR,CACI,IAAIE,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,gBAOT,OALAtE,KAAK2D,YAAa,EAClB3D,KAAK4D,UAAW,EAChB5D,KAAKkE,SAAWE,EAChBpE,KAAKmD,KAAK,SACVnD,KAAKuD,aAAc,EACZa,C,EAGfD,oBAEI,aAAanE,KAAK8D,KAAKO,aAAalC,QAAQ,CACxCmC,KAAK,eACLC,GAAIvE,KAAKkE,U,CAGjBC,6BACUnE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,mBACLE,MAAO,a,CAGfL,8BACUnE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,mBACLE,MAAO,W,CAGfL,WAAWM,SACDzE,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,U,KACLG,EACAF,GAAIvE,KAAKkE,U,EClDN,MAAAQ,UAAmBxB,EAU9ByB,MAAkC,IAAI5C,IAEtCjC,YAAYoC,GACR2B,QACA7D,KAAK8D,KAAO5B,C,CAEhB0C,eAAsB7E,GAElB,GAAqB,iBAAXA,EAENC,KAAK6E,OAAS9E,MACb,CACD,IAAI+E,EAAiB,CACjBC,SAAU,OACVC,cAAc,EACdC,WAAY,UACZC,oBAAoB,EACpBC,oBAAoB,EACpBC,qBAAqB,GAEzBC,OAAOC,OAAOR,EAAe/E,GAC7BC,KAAKD,QAAU+E,C,EAIvBS,UAAUtB,GACNjE,KAAK6E,OAASZ,C,CAElBE,iBAAiBqB,GACb,IAAIzF,EAAUC,KAAKD,SAAYyF,EAC3BpB,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,iBACFvE,IAEP,GAAoB,QAAjBqE,EAAOqB,OACV,CACI,GAAqB,kBAAlBrB,EAAOsB,SAA+B1F,KAAKD,QAAQiF,aAElD,OAAOhF,KAAK2F,OAEhB,MAAM,IAAIC,MAAMxB,EAAOsB,SAAWtB,EAAOyB,S,CAEzC7F,KAAKD,QAAU,IACRC,KAAKD,WACLqE,EAAO0B,MAEd9F,KAAK6E,OAAST,EAAO0B,KAAKtD,GAC1BxC,KAAK8D,KAAKiC,MAAMpD,IAAI3C,KAAK6E,OAAkB7E,K,CAGnDmE,aACI,IAAIC,QAAepE,KAAK8D,KAAKO,aAAalC,QAAQ,CAC9CmC,KAAK,WACL0B,KAAMhG,KAAKD,QAAQiG,KACnBC,WAAYjG,KAAKD,QAAQkG,aAE7B,GAAoB,QAAjB7B,EAAOqB,OAEN,MAAM,IAAIG,MAAMxB,EAAOsB,SAEvB1F,KAAKD,QAAU,IACRC,KAAKD,WACLqE,EAAO0B,MAEd9F,KAAK6E,OAAST,EAAO0B,KAAKtD,GAC1BxC,KAAK8D,KAAKiC,MAAMpD,IAAI3C,KAAK6E,OAAkB7E,K,CAGnDmE,WAAWM,EAAWyB,GAAc,SAC1BlG,KAAK8D,KAAKO,aAAalC,QAAQ,CACjCmC,KAAK,Y,KACLG,EACAF,GAAIvE,KAAK6E,O,IACTqB,G,CAGR/B,sBACI,IAAIsB,OAACA,EAAMd,MAAEA,SAAe3E,KAAK8D,KAAKO,aAAalC,QAAQ,CACvDmC,KAAK,aACLO,OAAQ7E,KAAK6E,SAGbsB,EAAe,GAEnB,GAAa,QAAVV,EAEC,MAAM,IAAIG,MAAM,4BACd,GAAa,WAAVH,EACL,IAAK,MAAMW,KAAUzB,EAAO,CACxB,IAAI0B,EAAOrG,KAAK8D,KAAKuC,KAAKD,GAC1BD,EAAI9E,KAAKgF,GACTrG,KAAK2E,MAAMhC,IAAIyD,EAAQC,E,CAG/B,OAAOF,C,ECrHA,MAAAG,EAGXxG,YAAYoC,GACRlC,KAAK8D,KAAO5B,EACZlC,KAAKuG,a,CAETA,cAEIvG,KAAK8D,KAAK0C,QAAQrF,eAAesD,IAC7BzE,KAAKyG,YAAYhC,EAAK,G,CAG9BiC,QAAejC,GAEXzE,KAAK8D,KAAK0C,OAAO9E,gBAAgB+C,E,CAErCkC,SAAgBlC,GAEZzE,KAAK8D,KAAK0C,OAAO9E,gBAAgB,CAAC+C,EAAK,K,CAE3C/B,YAAmB+B,EAAejC,GAE9BxC,KAAK8D,KAAK0C,OAAO9E,gBAAgB,CAAC+C,EAAMjC,EAAI,K,CAEhDK,YAAmB4B,EAAejC,GAE9BxC,KAAK8D,KAAK0C,OAAO9E,gBAAgB,CAAC+C,EAAMjC,EAAI,K,CAEhDiE,YAAmB3F,GAEf,IAAK8F,EAASpE,EAAIqE,GAAU/F,EAC5B,GAAiB,iBAAP0B,EACV,CACI,IAAIxB,EAAWhB,KAAK8D,KAAKO,aAAavC,OAAOmB,IAAIT,GACjD,GAAGxB,GAGC,GADAA,EAAS,GAAG4F,EAASC,GAGZ,MAFFA,EAGC7G,KAAK8D,KAAKO,aAAavC,OAAOgF,OAAOtE,QAQ3CuE,QAAQC,KAAK,mC,KAClB,CACD,IAAIhF,EAAUhC,KAAK8D,KAAKO,aAAarC,QAAQiB,IAAIT,GACjD,GAAGR,EAEC,IAAK,MAAMiF,KAAYjF,EACnBiF,EAASL,QAEXG,QAAQC,KAAK,mC,GC0C/BE,OAAOC,KAlGQ,cAAmBjE,EAI9B6C,MAAmC,IAAIhE,IACvCqF,MAAmC,IAAIrF,IACvC4C,MAAmC,IAAI5C,IAEvCjC,YAAYC,GACR8D,QACA7D,KAAKwG,OAAS,IAAI7G,EAAWI,GAC7BC,KAAKwG,OAAOrG,UACZH,KAAKyC,aAAe,IAAI6D,EAAatG,MACrCA,KAAKqE,aAAe,IAAIxC,EAAU7B,MAClCA,KAAKqH,GAAK,IAAI3D,EAAK1D,MACnBA,KAAKqH,GAAG7D,OAAM,KACVxD,KAAK2E,MAAMhC,IAAI,KAAM3C,KAAKqH,IAC1BrH,KAAK2E,MAAMhC,IAAI3C,KAAKqH,GAAGnD,SAAoBlE,KAAKqH,GAAG,IAEvDrH,KAAKwG,OAAOlF,UAAS6C,UACjBnE,KAAKqH,GAAGrD,YAAY,YACdhE,KAAKqH,GAAGC,WACdtH,KAAKmD,KAAK,SACVnD,KAAKuD,aAAc,CAAI,IAE3BvD,KAAKuH,qB,CAETA,sBAEIvH,KAAKqE,aAAavB,OAAO,QAAQ8D,IAC7B,IAAIrC,GAACA,EAAEE,KAACA,GAAQmC,EAChB5G,KAAKqG,KAAK9B,GAAIpB,KAAK,UAAWsB,EAAK,IAEvCzE,KAAKqE,aAAavB,OAAO,aAAa8D,IAClC,IAAIrC,GAACA,EAAEE,KAACA,GAAQmC,EAChB5G,KAAK8F,KAAKvB,GAAIpB,KAAK,UAAWsB,EAAK,IAEvCzE,KAAKqE,aAAavB,OAAO,eAAe8D,IACpC,IAAIpE,GAACA,EAAEgF,OAACA,GAAUZ,EACdd,EAAO9F,KAAK8F,KAAK0B,GACjBnB,EAAOrG,KAAKqG,KAAK7D,GACrBsD,EAAK3C,KAAK,OAAQkD,EAAK,IAE3BrG,KAAKqE,aAAavB,OAAO,gBAAgB8D,IACrC,IAAIpE,GAACA,EAAEgF,OAACA,GAAUZ,EACdd,EAAO9F,KAAK8F,KAAK0B,GACjBnB,EAAOrG,KAAKqG,KAAK7D,GACrBsD,EAAK3C,KAAK,QAASkD,EAAK,IAE5BrG,KAAKqE,aAAavB,OAAO,eAAe8D,IACpC,IAAIY,OAACA,GAAUZ,EACJ5G,KAAK8F,KAAK0B,GAChBrE,KAAK,SACVnD,KAAK+F,MAAMe,OAAOU,EAAO,G,CAGjC1B,KAAY/F,GAER,GAAqB,iBAAXA,GAEHC,KAAK+F,MAAM0B,IAAI1H,GAEd,OAAOC,KAAK+F,MAAM9C,IAAIlD,GAG9B,IAAI+F,EAAO,IAAIpB,EAAK1E,MAIpB,OAHA8F,EAAKlB,eAAe7E,GAEpBC,KAAKmD,KAAK,QACH2C,C,CAEXO,KAAYtG,GAER,GAAqB,iBAAXA,EACV,CACI,GAAGC,KAAK2E,MAAM8C,IAAI1H,GAEd,OAAOC,KAAK2E,MAAM1B,IAAIlD,GAE1B,GAAGC,KAAKoH,MAAMK,IAAI1H,GAEd,OAAOC,KAAKoH,MAAMnE,IAAIlD,E,CAG9B,IAAIsG,EAAO,IAAI3C,EAAK1D,MAIpB,OAHAqG,EAAKtC,eAAehE,GACpBC,KAAK2E,MAAMhC,IAAI0D,EAAKnC,SAAoBmC,GACxCrG,KAAKmD,KAAK,OAAQkD,GACXA,C","sources":["frontend/Connection.ts","frontend/EventPool.ts","frontend/EventTarget.ts","frontend/Peer.ts","frontend/Room.ts","frontend/WSTSProtocol.ts","frontend/index.ts"],"sourcesContent":["export interface IConnection{\r\n endpoint: string;\r\n autoPair?: boolean;\r\n}\r\nexport class Connection\r\n{\r\n public ws! : WebSocket;\r\n public endpoint : URL;\r\n public autoPair : boolean = false;\r\n public connected : boolean = false;\r\n constructor(options: IConnection){\r\n this.endpoint = new URL(options.endpoint);\r\n this.autoPair = options.autoPair || false;\r\n }\r\n public connect()\r\n {\r\n this.ws = new WebSocket(this.endpoint.href);\r\n this.addWSEvents();\r\n }\r\n public disconnect()\r\n {\r\n this.ws.close();\r\n }\r\n public addWSEvents()\r\n {\r\n this.ws.addEventListener(\"open\", () => this.eventOpen());\r\n this.ws.addEventListener(\"close\", () => this.eventClose());\r\n this.ws.addEventListener(\"error\", () => this.eventError());\r\n this.ws.addEventListener(\"message\", ({data}) => this.eventMessage(data as string | ArrayBuffer));\r\n }\r\n private eventOpen()\r\n {\r\n this.connected = true;\r\n for (const callback of this.activeConnectionEvent) {\r\n callback(void 0);\r\n }\r\n }\r\n private eventClose()\r\n {\r\n this.connected = false;\r\n }\r\n private eventError()\r\n {\r\n this.connected = false;\r\n }\r\n private recaivePackEvent : ((data:any) => any)[] = [];\r\n public onRecaivePack(func:(data:any) => any)\r\n {\r\n this.recaivePackEvent.push(func);\r\n }\r\n private activeConnectionEvent : Function[] = [];\r\n public onActive(func:Function)\r\n {\r\n if(this.connected)\r\n {\r\n func()\r\n }else{\r\n this.activeConnectionEvent.push(func);\r\n }\r\n }\r\n private eventMessage(data: string | ArrayBuffer)\r\n {\r\n if(typeof data == \"string\")\r\n {\r\n let $data = JSON.parse(data);\r\n for (const callback of this.recaivePackEvent) {\r\n callback($data);\r\n }\r\n }\r\n }\r\n public tranferToServer(data:any)\r\n {\r\n if(this.connected)\r\n {\r\n this.ws.send(JSON.stringify(data));\r\n }\r\n }\r\n}","import MWSE from \"./index\";\r\nimport { Message } from \"./WSTSProtocol\";\r\n\r\nexport default class EventPool\r\n{\r\n public wsts : MWSE;\r\n public events : Map = new Map();\r\n public signals : Map = new Map();\r\n public count = 0;\r\n constructor(wsts:MWSE){\r\n this.wsts = wsts;\r\n }\r\n public request(msg: Message) : Promise\r\n {\r\n return new Promise((ok,rej) => {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.SendRequest(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n ok(data);\r\n },\r\n (data:any) => {\r\n rej(data);\r\n }\r\n ]);\r\n })\r\n }\r\n public stream(msg: Message, callback: Function)\r\n {\r\n let id = ++this.count;\r\n this.wsts.WSTSProtocol.StartStream(msg, id);\r\n this.events.set(id,[\r\n (data:any) => {\r\n callback(data);\r\n },\r\n () => { }\r\n ]);\r\n }\r\n public signal(event: string, callback: Function)\r\n {\r\n let T = this.signals.get(event);\r\n if(!T)\r\n {\r\n this.signals.set(event, [callback]);\r\n }else{\r\n T.push(callback);\r\n }\r\n }\r\n}","export default class EventTarget\r\n{\r\n private events : {[key:string]:Function[]} = {};\r\n public emit(eventName :string, ...args:any[])\r\n {\r\n if(this.events[eventName])\r\n {\r\n for (const callback of this.events[eventName]) {\r\n callback(...args);\r\n }\r\n }\r\n }\r\n public on(eventName :string, callback:Function)\r\n {\r\n if(this.events[eventName])\r\n {\r\n this.events[eventName].push(callback)\r\n }else{\r\n this.events[eventName] = [callback];\r\n }\r\n }\r\n public activeScope : boolean = false;\r\n scope(f:Function)\r\n {\r\n if(this.activeScope)\r\n {\r\n f()\r\n }else{\r\n this.on('scope', f)\r\n }\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\n\r\n\r\nexport default class Peer extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IPeerOptions;\r\n public socketId? : string;\r\n public selfSocket : boolean = false;\r\n public active : boolean = false;\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n setPeerOptions(options: string | IPeerOptions){\r\n if(typeof options == \"string\")\r\n {\r\n this.setSocketId(options)\r\n }else{\r\n this.options = options;\r\n }\r\n }\r\n setSocketId(uuid: string){\r\n this.socketId = uuid;\r\n }\r\n async metadata() : Promise\r\n {\r\n if(this.socketId == 'me')\r\n {\r\n let result = await this.mwse.EventPooling.request({\r\n type:'my/socketid'\r\n });\r\n this.selfSocket = true;\r\n this.active ||= true;\r\n this.socketId = result;\r\n this.emit('scope');\r\n this.activeScope = true;\r\n return result;\r\n }\r\n }\r\n async isReachable()\r\n {\r\n return await this.mwse.EventPooling.request({\r\n type:'is/reachable',\r\n to: this.socketId\r\n });\r\n }\r\n async enablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'everybody'\r\n });\r\n }\r\n async disablePairAuth(){\r\n await this.mwse.EventPooling.request({\r\n type:'auth/pair-system',\r\n value: 'disable'\r\n });\r\n }\r\n async send(pack: any){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/to',\r\n pack,\r\n to: this.socketId\r\n });\r\n }\r\n}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\nimport Peer from \"./Peer\";\r\n\r\nexport interface IRoomOptions\r\n{\r\n name: string;\r\n description?:string;\r\n joinType: \"free\"|\"invite\"|\"password\"|\"lock\";\r\n credential?: string;\r\n ifexistsJoin?: boolean;\r\n accessType?: \"public\"|\"private\";\r\n notifyActionInvite?: boolean;\r\n notifyActionJoined?: boolean;\r\n notifyActionEjected?: boolean;\r\n}\r\n\r\n\r\nexport default class Room extends EventTarget\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public roomId? : string;\r\n public accessType? : \"public\"|\"private\";\r\n public description? : string;\r\n public joinType? : \"free\"|\"invite\"|\"password\"|\"lock\";\r\n public name? : string;\r\n public owner? : string;\r\n public peers : Map = new Map();\r\n\r\n constructor(wsts:MWSE){\r\n super();\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions | string)\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n this.roomId = options;\r\n }else{\r\n let defaultOptions = {\r\n joinType: \"free\",\r\n ifexistsJoin: true,\r\n accessType: \"private\",\r\n notifyActionInvite: true,\r\n notifyActionJoined: true,\r\n notifyActionEjected: true\r\n };\r\n Object.assign(defaultOptions,options);\r\n this.options = defaultOptions as IRoomOptions;\r\n }\r\n }\r\n \r\n setRoomId(uuid: string){\r\n this.roomId = uuid;\r\n }\r\n async createRoom(roomOptions : IRoomOptions){\r\n let options = this.options || roomOptions;\r\n let result = await this.mwse.EventPooling.request({\r\n type:'create-room',\r\n ...options\r\n });\r\n if(result.status == 'fail')\r\n {\r\n if(result.message == \"ALREADY-EXISTS\" && this.options.ifexistsJoin)\r\n {\r\n return this.join();\r\n }\r\n throw new Error(result.message || result.messages);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n this.mwse.rooms.set(this.roomId as string, this);\r\n }\r\n }\r\n async join(){\r\n let result = await this.mwse.EventPooling.request({\r\n type:'joinroom',\r\n name: this.options.name,\r\n credential: this.options.credential\r\n });\r\n if(result.status == 'fail')\r\n {\r\n throw new Error(result.message);\r\n }else{\r\n this.options = {\r\n ...this.options,\r\n ...result.room\r\n };\r\n this.roomId = result.room.id;\r\n this.mwse.rooms.set(this.roomId as string, this);\r\n }\r\n }\r\n async send(pack: any, wom:boolean = false){\r\n await this.mwse.EventPooling.request({\r\n type:'pack/room',\r\n pack,\r\n to: this.roomId,\r\n wom\r\n });\r\n }\r\n async fetchAllPeers(){\r\n let {status, peers} = await this.mwse.EventPooling.request({\r\n type:'room-peers',\r\n roomId: this.roomId\r\n }) as {status:\"success\"|\"fail\", peers: string[]};\r\n\r\n let cup : Peer[] = [];\r\n\r\n if(status == 'fail')\r\n {\r\n throw new Error(\"Cant using peers on room\")\r\n }else if(status == 'success'){\r\n for (const peerid of peers) {\r\n let peer = this.mwse.peer(peerid);\r\n cup.push(peer);\r\n this.peers.set(peerid, peer);\r\n }\r\n };\r\n return cup;\r\n }\r\n}","import MWSE from \"./index\";\r\n\r\nexport interface Message {\r\n [key:string|number]:any;\r\n}\r\nexport default class WSTSProtocol\r\n{\r\n public mwse : MWSE;\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n this.addListener();\r\n }\r\n public addListener()\r\n {\r\n this.mwse.server?.onRecaivePack((pack)=>{\r\n this.PackAnalyze(pack)\r\n })\r\n }\r\n public SendRaw(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer(pack);\r\n }\r\n public SendOnly(pack: Message)\r\n {\r\n this.mwse.server.tranferToServer([pack,'R']);\r\n }\r\n public SendRequest(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'R']);\r\n }\r\n public StartStream(pack: Message, id: number)\r\n {\r\n this.mwse.server.tranferToServer([pack, id, 'S']);\r\n }\r\n public PackAnalyze(data:any)\r\n {\r\n let [payload, id, action] = data;\r\n if(typeof id === 'number')\r\n {\r\n let callback = this.mwse.EventPooling.events.get(id);\r\n if(callback)\r\n {\r\n callback[0](payload, action);\r\n switch(action)\r\n {\r\n case 'E':{ // [E]ND flag\r\n this.mwse.EventPooling.events.delete(id);\r\n break;\r\n }\r\n case 'S': // [S]TREAM flag\r\n default:{\r\n break;\r\n }\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }else{\r\n let signals = this.mwse.EventPooling.signals.get(id);\r\n if(signals)\r\n {\r\n for (const callback of signals) {\r\n callback(payload);\r\n }\r\n }else console.warn(\"Missing event sended from server\");\r\n }\r\n }\r\n}","import {Connection,IConnection} from \"./Connection\";\r\nimport EventPool from \"./EventPool\";\r\nimport EventTarget from \"./EventTarget\";\r\nimport Peer from \"./Peer\";\r\nimport Room, { IRoomOptions } from \"./Room\";\r\nimport WSTSProtocol from \"./WSTSProtocol\";\r\nexport default class MWSE extends EventTarget {\r\n public server! : Connection;\r\n public WSTSProtocol! : WSTSProtocol;\r\n public EventPooling! : EventPool;\r\n public rooms : Map = new Map();\r\n public pairs : Map = new Map();\r\n public peers : Map = new Map();\r\n public me! : Peer;\r\n constructor(options: IConnection){\r\n super();\r\n this.server = new Connection(options);\r\n this.server.connect();\r\n this.WSTSProtocol = new WSTSProtocol(this);\r\n this.EventPooling = new EventPool(this);\r\n this.me = new Peer(this);\r\n this.me.scope(()=>{\r\n this.peers.set('me', this.me);\r\n this.peers.set(this.me.socketId as string, this.me);\r\n })\r\n this.server.onActive(async ()=>{\r\n this.me.setSocketId('me');\r\n await this.me.metadata();\r\n this.emit('scope');\r\n this.activeScope = true;\r\n });\r\n this.packMessagingSystem();\r\n }\r\n private packMessagingSystem()\r\n {\r\n this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.peer(to).emit('message', pack);\r\n })\r\n this.EventPooling.signal('pack/room',(payload : {to:string,pack:any}) => {\r\n let {to,pack} = payload;\r\n this.room(to).emit('message', pack);\r\n })\r\n this.EventPooling.signal('room/joined',(payload : {id:string,roomid:any,ownerid:string}) => {\r\n let {id,roomid} = payload;\r\n let room = this.room(roomid);\r\n let peer = this.peer(id);\r\n room.emit('join', peer);\r\n })\r\n this.EventPooling.signal('room/ejected',(payload : {id:string,roomid:any,ownerid:string}) => {\r\n let {id,roomid} = payload;\r\n let room = this.room(roomid);\r\n let peer = this.peer(id);\r\n room.emit('eject', peer);\r\n })\r\n this.EventPooling.signal('room/closed',(payload : {roomid:any}) => {\r\n let {roomid} = payload;\r\n let room = this.room(roomid);\r\n room.emit('close');\r\n this.rooms.delete(roomid);\r\n })\r\n }\r\n public room(options: IRoomOptions | string) : Room\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.rooms.has(options))\r\n {\r\n return this.rooms.get(options) as Room\r\n }\r\n }\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\r\n // this.rooms.set(room.roomId as string, room);\r\n this.emit('room');\r\n return room;\r\n }\r\n public peer(options: string | IRoomOptions) : Peer\r\n {\r\n if(typeof options == \"string\")\r\n {\r\n if(this.peers.has(options))\r\n {\r\n return this.peers.get(options) as Peer\r\n }\r\n if(this.pairs.has(options))\r\n {\r\n return this.pairs.get(options) as Peer\r\n }\r\n }\r\n let peer = new Peer(this);\r\n peer.setPeerOptions(options);\r\n this.peers.set(peer.socketId as string, peer);\r\n this.emit('peer', peer);\r\n return peer;\r\n }\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n MWSE: any;\r\n }\r\n}\r\n\r\nwindow.MWSE = MWSE;"],"names":["$201ddc79d766b86c$export$98b66c25bb38499d","autoPair","connected","constructor","options","this","endpoint","URL","connect","ws","WebSocket","href","addWSEvents","disconnect","close","addEventListener","eventOpen","eventClose","eventError","data","eventMessage","callback","activeConnectionEvent","recaivePackEvent","onRecaivePack","func","push","onActive","$data","JSON","parse","tranferToServer","send","stringify","$7bc29f3852fca8a1$export$2e2bcd8739ae039","events","Map","signals","count","wsts","request","msg","Promise","ok","rej","id","WSTSProtocol","SendRequest","set","stream","StartStream","signal","event","T","get","$639a7a490074f3f2$export$2e2bcd8739ae039","emit","eventName","args","on","activeScope","scope","f","$9f6c30de484136d4$export$2e2bcd8739ae039","selfSocket","active","super","mwse","setPeerOptions","setSocketId","uuid","socketId","async","result","EventPooling","type","to","value","pack","$4415e33c9749fde6$export$2e2bcd8739ae039","peers","setRoomOptions","roomId","defaultOptions","joinType","ifexistsJoin","accessType","notifyActionInvite","notifyActionJoined","notifyActionEjected","Object","assign","setRoomId","roomOptions","status","message","join","Error","messages","room","rooms","name","credential","wom","cup","peerid","peer","$023568b0c88ffd16$export$2e2bcd8739ae039","addListener","server","PackAnalyze","SendRaw","SendOnly","payload","action","delete","console","warn","callback1","window","MWSE","pairs","me","metadata","packMessagingSystem","roomid","has"],"version":3,"file":"index.js.map"} \ No newline at end of file