diff --git a/Source/Services/Auth.js b/Source/Services/Auth.js index 4f0097a..eb7a6b5 100644 --- a/Source/Services/Auth.js +++ b/Source/Services/Auth.js @@ -13,9 +13,26 @@ addService(({ end, next })=>{ - let {type,username,password,to} = message; + let {type,username,password,to,value} = message; switch(type) { + case "auth/pair-system":{ + if(value == 'everybody') + { + client.requiredPair = true; + end({status:"success"}); + } + if(value == 'disable') + { + client.requiredPair = false; + end({status:"success"}); + } + break; + } + case "my/socketid":{ + end(client.id); + break; + } case 'auth/public':{ client.requiredPair = false; return end({ diff --git a/Source/Services/DataTransfer.js b/Source/Services/DataTransfer.js index 6ef7388..ffe1b0f 100644 --- a/Source/Services/DataTransfer.js +++ b/Source/Services/DataTransfer.js @@ -30,6 +30,12 @@ addService(({ if(Client.clients.has(to)) { let otherPeer = Client.clients.get(to); + if(otherPeer.requiredPair && !otherPeer.pairs.has(to)) + { + return handshake && end({ + type: 'fail' + }) + } otherPeer.send([{ from: client.id, pack: pack diff --git a/frontend/Connection.ts b/frontend/Connection.ts index cd327c2..9d2adca 100644 --- a/frontend/Connection.ts +++ b/frontend/Connection.ts @@ -62,8 +62,9 @@ export class Connection { if(typeof data == "string") { + let $data = JSON.parse(data); for (const callback of this.recaivePackEvent) { - callback(JSON.parse(data)); + callback($data); } } } diff --git a/frontend/EventTarget.ts b/frontend/EventTarget.ts new file mode 100644 index 0000000..a1b76d7 --- /dev/null +++ b/frontend/EventTarget.ts @@ -0,0 +1,32 @@ +export default class EventTarget +{ + private events : {[key:string]:Function[]} = {}; + public emit(eventName :string, ...args:any[]) + { + if(this.events[eventName]) + { + for (const callback of this.events[eventName]) { + callback(...args); + } + } + } + public on(eventName :string, callback:Function) + { + if(this.events[eventName]) + { + this.events[eventName].push(callback) + }else{ + this.events[eventName] = [callback]; + } + } + public activeScope : boolean = false; + scope(f:Function) + { + if(this.activeScope) + { + f() + }else{ + this.on('scope', f) + } + } +} \ No newline at end of file diff --git a/frontend/Peer.ts b/frontend/Peer.ts index f5ac22a..aa9a7ac 100644 --- a/frontend/Peer.ts +++ b/frontend/Peer.ts @@ -1,17 +1,67 @@ +import EventTarget from "./EventTarget"; import MWSE from "./index"; interface IPeerOptions{ }; +interface IPeerMetadata{ -export default class Peer +}; + +export default class Peer extends EventTarget { - public wsts : MWSE; + public mwse : MWSE; public options! : IPeerOptions; + public socketId? : string; + public selfSocket : boolean = false; + public active : boolean = false; constructor(wsts:MWSE){ - this.wsts = wsts; + super(); + this.mwse = wsts; } - setPeerOptions(options:IPeerOptions){ - this.options = options; + setPeerOptions(options: string | IPeerOptions){ + if(typeof options == "string") + { + this.setSocketId(options) + }else{ + this.options = options; + } + } + setSocketId(uuid: string){ + this.socketId = uuid; + } + async metadata() : Promise + { + if(this.socketId == 'me') + { + let result = await this.mwse.EventPooling.request({ + type:'my/socketid' + }); + this.selfSocket = true; + this.active ||= true; + this.socketId = result; + this.emit('scope'); + this.activeScope = true; + return result; + } + } + 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(pack: any){ + await this.mwse.EventPooling.request({ + type:'pack/to', + pack, + to: this.socketId + }); } } \ No newline at end of file diff --git a/frontend/WSTSProtocol.ts b/frontend/WSTSProtocol.ts index a2321ea..3556b27 100644 --- a/frontend/WSTSProtocol.ts +++ b/frontend/WSTSProtocol.ts @@ -34,7 +34,7 @@ export default class WSTSProtocol } public PackAnalyze(data:any) { - let [payload, id, action] = JSON.parse(data); + let [payload, id, action] = data; if(typeof id === 'number') { let callback = this.mwse.EventPooling.events.get(id); diff --git a/frontend/index.ts b/frontend/index.ts index 351e29e..0f42725 100644 --- a/frontend/index.ts +++ b/frontend/index.ts @@ -1,19 +1,42 @@ import {Connection,IConnection} from "./Connection"; import EventPool from "./EventPool"; +import EventTarget from "./EventTarget"; import Peer from "./Peer"; import Room, { IRoomOptions } from "./Room"; import WSTSProtocol from "./WSTSProtocol"; -export default class MWSE { +export default class MWSE extends EventTarget { public server! : Connection; public WSTSProtocol! : WSTSProtocol; public EventPooling! : EventPool; public rooms : Map = new Map(); public pairs : Map = new Map(); + public peers : Map = new Map(); + public me! : Peer; constructor(options: IConnection){ + super(); this.server = new Connection(options); this.server.connect(); this.WSTSProtocol = new WSTSProtocol(this); this.EventPooling = new EventPool(this); + this.me = new Peer(this); + this.me.scope(()=>{ + this.peers.set('me', this.me); + this.peers.set(this.me.socketId as string, this.me); + }) + this.server.onActive(async ()=>{ + this.me.setSocketId('me'); + await this.me.metadata(); + this.emit('scope'); + this.activeScope = true; + }); + this.packMessagingSystem(); + } + private packMessagingSystem() + { + this.EventPooling.signal('pack',(payload : {to:string,pack:any}) => { + let {to,pack} = payload; + this.peer(to).emit('message', pack); + }) } public room(options: IRoomOptions) { @@ -21,10 +44,22 @@ export default class MWSE { room.setRoomOptions(options); return room; } - public peer(options: IRoomOptions) + public peer(options: string | IRoomOptions) : Peer { + if(typeof options == "string") + { + if(this.peers.has(options)) + { + return this.peers.get(options) as Peer + } + if(this.pairs.has(options)) + { + return this.pairs.get(options) as Peer + } + } let peer = new Peer(this); peer.setPeerOptions(options); + this.emit('peer', peer); return peer; } }; diff --git a/package-lock.json b/package-lock.json index e5ea925..bcc09b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,8 @@ }, "devDependencies": { "@parcel/packager-ts": "^2.7.0", - "@parcel/transformer-typescript-types": "^2.7.0" + "@parcel/transformer-typescript-types": "^2.7.0", + "tslib": "^2.4.1" } }, "node_modules/@cronvel/get-pixels": { @@ -3484,6 +3485,12 @@ "resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz", "integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA==" }, + "node_modules/tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, "node_modules/type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", @@ -6233,6 +6240,12 @@ "resolved": "https://registry.npmjs.org/tree-kit/-/tree-kit-0.7.4.tgz", "integrity": "sha512-Of3tPmVs3b6BhzyUJ7t0olisf47kYr9qAm0XaUpURMjdBn6TwiVaaMuTFoKkkvPGojd9trKAHlrGGcGKcdR1DA==" }, + "tslib": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", + "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "dev": true + }, "type": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", diff --git a/package.json b/package.json index 870014e..e219209 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,9 @@ "compile": "parcel watch --no-hmr" }, "source": "./frontend/index.ts", - "targets":{ - "default":{ - "distDir" : "./script/", + "targets": { + "default": { + "distDir": "./script/", "publicUrl": "./", "sourceMap": true, "outputFormat": "global", @@ -50,6 +50,7 @@ }, "devDependencies": { "@parcel/packager-ts": "^2.7.0", - "@parcel/transformer-typescript-types": "^2.7.0" + "@parcel/transformer-typescript-types": "^2.7.0", + "tslib": "^2.4.1" } } diff --git a/script/index.js b/script/index.js index b1c7c1a..e18d7d9 100644 --- a/script/index.js +++ b/script/index.js @@ -148,20 +148,42 @@ parcelHelpers.defineInteropFlag(exports); var _connection = require("./Connection"); var _eventPool = require("./EventPool"); var _eventPoolDefault = parcelHelpers.interopDefault(_eventPool); +var _eventTarget = require("./EventTarget"); +var _eventTargetDefault = parcelHelpers.interopDefault(_eventTarget); var _peer = require("./Peer"); var _peerDefault = parcelHelpers.interopDefault(_peer); var _room = require("./Room"); var _roomDefault = parcelHelpers.interopDefault(_room); var _wstsprotocol = require("./WSTSProtocol"); var _wstsprotocolDefault = parcelHelpers.interopDefault(_wstsprotocol); -class MWSE { +class MWSE extends (0, _eventTargetDefault.default) { rooms = new Map(); pairs = new Map(); + peers = new Map(); constructor(options){ + super(); this.server = new (0, _connection.Connection)(options); this.server.connect(); this.WSTSProtocol = new (0, _wstsprotocolDefault.default)(this); this.EventPooling = new (0, _eventPoolDefault.default)(this); + this.me = new (0, _peerDefault.default)(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 = true; + }); + this.packMessagingSystem(); + } + packMessagingSystem() { + this.EventPooling.signal("pack", (payload)=>{ + let { to , pack } = payload; + this.peer(to).emit("message", pack); + }); } room(options) { let room = new (0, _roomDefault.default)(this); @@ -169,15 +191,20 @@ class MWSE { return room; } peer(options) { + if (typeof options == "string") { + if (this.peers.has(options)) return this.peers.get(options); + if (this.pairs.has(options)) return this.pairs.get(options); + } let peer = new (0, _peerDefault.default)(this); peer.setPeerOptions(options); + this.emit("peer", peer); return peer; } } exports.default = MWSE; window.MWSE = MWSE; -},{"./Connection":"dzYK1","./EventPool":"37Faq","./Peer":"bVhKw","./Room":"7qlv2","./WSTSProtocol":"3kvWC","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"dzYK1":[function(require,module,exports) { +},{"./Connection":"dzYK1","./EventPool":"37Faq","./Peer":"bVhKw","./Room":"7qlv2","./WSTSProtocol":"3kvWC","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE","./EventTarget":"lleyn"}],"dzYK1":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); parcelHelpers.export(exports, "Connection", ()=>Connection); @@ -221,7 +248,10 @@ class Connection { else this.activeConnectionEvent.push(func); } eventMessage(data) { - if (typeof data == "string") for (const callback of this.recaivePackEvent)callback(JSON.parse(data)); + if (typeof data == "string") { + let $data = JSON.parse(data); + for (const callback of this.recaivePackEvent)callback($data); + } } tranferToServer(data) { if (this.connected) this.ws.send(JSON.stringify(data)); @@ -305,16 +335,79 @@ exports.default = EventPool; },{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"bVhKw":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -class Peer { +var _eventTarget = require("./EventTarget"); +var _eventTargetDefault = parcelHelpers.interopDefault(_eventTarget); +class Peer extends (0, _eventTargetDefault.default) { + selfSocket = false; + active = false; constructor(wsts){ - this.wsts = wsts; + super(); + this.mwse = wsts; } setPeerOptions(options) { - this.options = options; + if (typeof options == "string") this.setSocketId(options); + else this.options = options; + } + setSocketId(uuid) { + this.socketId = uuid; + } + async metadata() { + if (this.socketId == "me") { + let result = await this.mwse.EventPooling.request({ + type: "my/socketid" + }); + this.selfSocket = true; + this.active ||= true; + this.socketId = result; + this.emit("scope"); + this.activeScope = true; + return result; + } + } + 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(pack) { + await this.mwse.EventPooling.request({ + type: "pack/to", + pack, + to: this.socketId + }); } } exports.default = Peer; +},{"./EventTarget":"lleyn","@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"lleyn":[function(require,module,exports) { +var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); +parcelHelpers.defineInteropFlag(exports); +class EventTarget { + events = {}; + emit(eventName, ...args) { + if (this.events[eventName]) for (const callback of this.events[eventName])callback(...args); + } + on(eventName, callback) { + if (this.events[eventName]) this.events[eventName].push(callback); + else this.events[eventName] = [ + callback + ]; + } + activeScope = false; + scope(f) { + if (this.activeScope) f(); + else this.on("scope", f); + } +} +exports.default = EventTarget; + },{"@parcel/transformer-js/src/esmodule-helpers.js":"i1YYE"}],"7qlv2":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); @@ -375,7 +468,7 @@ class WSTSProtocol { ]); } PackAnalyze(data) { - let [payload, id, action] = JSON.parse(data); + let [payload, id, action] = data; if (typeof id === "number") { let callback = this.mwse.EventPooling.events.get(id); if (callback) { diff --git a/script/index.js.map b/script/index.js.map index fa15f8d..555528a 100644 --- a/script/index.js.map +++ b/script/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["frontend/index.ts","frontend/Connection.ts","../../../AppData/Roaming/npm/node_modules/parcel/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","frontend/EventPool.ts","frontend/Peer.ts","frontend/Room.ts","frontend/WSTSProtocol.ts"],"sourcesContent":["import {Connection,IConnection} from \"./Connection\";\r\nimport EventPool from \"./EventPool\";\r\nimport Peer from \"./Peer\";\r\nimport Room, { IRoomOptions } from \"./Room\";\r\nimport WSTSProtocol from \"./WSTSProtocol\";\r\nexport default class MWSE {\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 constructor(options: IConnection){\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 }\r\n public room(options: IRoomOptions)\r\n {\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\r\n return room;\r\n }\r\n public peer(options: IRoomOptions)\r\n {\r\n let peer = new Peer(this);\r\n peer.setPeerOptions(options);\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;","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 for (const callback of this.recaivePackEvent) {\r\n callback(JSON.parse(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}","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\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}","import MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\n\r\nexport default class Peer\r\n{\r\n public wsts : MWSE;\r\n public options! : IPeerOptions;\r\n constructor(wsts:MWSE){\r\n this.wsts = wsts;\r\n }\r\n setPeerOptions(options:IPeerOptions){\r\n this.options = options;\r\n }\r\n}","import MWSE from \"./index\";\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\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public events : {[key:string]:Function[]} = {};\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions)\r\n {\r\n this.options = options;\r\n }\r\n private 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}","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] = JSON.parse(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}"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file +{"mappings":"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","sources":["frontend/index.ts","frontend/Connection.ts","../../../AppData/Roaming/npm/node_modules/parcel/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","frontend/EventPool.ts","frontend/Peer.ts","frontend/EventTarget.ts","frontend/Room.ts","frontend/WSTSProtocol.ts"],"sourcesContent":["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 }\r\n public room(options: IRoomOptions)\r\n {\r\n let room = new Room(this);\r\n room.setRoomOptions(options);\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.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;","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}","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\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}","import EventTarget from \"./EventTarget\";\r\nimport MWSE from \"./index\";\r\n\r\ninterface IPeerOptions{\r\n\r\n};\r\ninterface IPeerMetadata{\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 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}","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 MWSE from \"./index\";\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\r\n{\r\n public mwse : MWSE;\r\n public options! : IRoomOptions;\r\n public events : {[key:string]:Function[]} = {};\r\n constructor(wsts:MWSE){\r\n this.mwse = wsts;\r\n }\r\n public setRoomOptions(options : IRoomOptions)\r\n {\r\n this.options = options;\r\n }\r\n private 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}","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}"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../"} \ No newline at end of file diff --git a/test.html b/test.html index 3d2208d..93bf2cd 100644 --- a/test.html +++ b/test.html @@ -9,10 +9,31 @@ \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 1ba353a..0e7a88c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -46,7 +46,7 @@ "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ - + /* Emit */ "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ "declarationMap": true, /* Create sourcemaps for d.ts files. */ @@ -56,7 +56,7 @@ "outDir": "./script", /* Specify an output folder for all emitted files. */ "removeComments": true, /* Disable emitting comments. */ // "noEmit": true, /* Disable emitting files from a compilation. */ - "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + "importHelpers": false, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */