From 73c164b65e4ed532202905803b2edde52018d4a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Abdussamed=20ULUTA=C5=9E?= Date: Sun, 27 Nov 2022 22:17:31 +0300 Subject: [PATCH] Ver 1 --- frontend/Connection.ts | 61 ++++++++++++ frontend/index.ts | 6 +- frontend/index.txt | 194 +++++++++++++++++++++++++++++++++++++ package-lock.json | 11 +++ package.json | 3 +- script/Connection.d.ts | 22 +++++ script/Connection.d.ts.map | 1 + script/Connection.js | 52 ++++++++++ script/index.d.ts | 3 +- script/index.d.ts.map | 2 +- script/index.js | 10 +- test.html | 96 +++++++++--------- tsconfig.json | 8 +- 13 files changed, 408 insertions(+), 61 deletions(-) create mode 100644 frontend/Connection.ts create mode 100644 frontend/index.txt create mode 100644 script/Connection.d.ts create mode 100644 script/Connection.d.ts.map create mode 100644 script/Connection.js diff --git a/frontend/Connection.ts b/frontend/Connection.ts new file mode 100644 index 0000000..5e65c35 --- /dev/null +++ b/frontend/Connection.ts @@ -0,0 +1,61 @@ +interface IConnection{ + endpoint: string; + autoPair?: boolean; +} +export default class Connection +{ + public ws! : WebSocket; + public endpoint : URL; + public autoPair : boolean = false; + public connected : boolean = false; + constructor(options: IConnection){ + this.endpoint = new URL(options.endpoint); + this.autoPair = options.autoPair || false; + this.connect(); + } + public connect() + { + this.ws = new WebSocket(this.endpoint.href); + this.addWSEvents(); + } + public addWSEvents() + { + this.ws.addEventListener("open", () => this.eventOpen()); + this.ws.addEventListener("close", () => this.eventClose()); + this.ws.addEventListener("error", () => this.eventError()); + this.ws.addEventListener("message", ({data}) => this.eventMessage(data as string | ArrayBuffer)); + } + private eventOpen() + { + this.connected = true; + } + private eventClose() + { + this.connected = false; + } + private eventError() + { + this.connected = false; + } + private recaivePackEvent : ((data:any) => any)[] = []; + public onRecaivePack(func:(data:any) => any) + { + this.recaivePackEvent.push(func); + } + private eventMessage(data: string | ArrayBuffer) + { + if(typeof data == "string") + { + for (const callback of this.recaivePackEvent) { + callback(JSON.parse(data)); + } + } + } + public tranferToServer(data:any) + { + if(this.connected) + { + this.ws.send(JSON.stringify(data)); + } + } +} \ No newline at end of file diff --git a/frontend/index.ts b/frontend/index.ts index 4a960aa..3673e81 100644 --- a/frontend/index.ts +++ b/frontend/index.ts @@ -1,3 +1,3 @@ -namespace WSTS { - -}; \ No newline at end of file +export default class WSTS { + public connection? : Connection; +} \ No newline at end of file diff --git a/frontend/index.txt b/frontend/index.txt new file mode 100644 index 0000000..3e41c97 --- /dev/null +++ b/frontend/index.txt @@ -0,0 +1,194 @@ +function WSJS() +{ + this.isActive = false; + this.ws = WSJS.activeWS || null; + this.endpoint = null; +}; +WSJS.activeWS = null; +WSJS.prototype.connect = function(url){ + this.ws = new WebSocket(url); + this.addListeners(); +} +WSJS.prototype.addListeners = function(){ + this.ws.addEventListener("close", this.closedEvent.bind(this)); + this.ws.addEventListener("message", this.messageEvent.bind(this)); + this.ws.addEventListener("open", this.openMessage.bind(this)); +} +WSJS.prototype.closedEvent = function(){ + WSJS.activeWS = null; + this.isActive = false; + this.ws = null; + this.events.dispatchEvent(new Event("close")); +} +WSJS.prototype.openMessage = function(){ + WSJS.activeWS = this.ws; + this.isActive = true; + this.events.dispatchEvent(new Event("open")); +} +WSJS.prototype.messageEvent = function({data}){ + let [payload, id, action] = JSON.parse(data); + if(typeof id === 'number') + { + if(this.requests.has(id)) + { + this.requests.get(id)(payload, action); + switch(action) + { + case 'E':{ // [E]ND flag + this.requests.delete(id); + break; + } + case 'S': // [S]TREAM flag + default:{ + break; + } + } + }else console.warn("Missing event sended from server"); + }else{ + if(this.signals.has(id)) + { + for (const callback of this.signals.get(id)) { + callback(payload); + } + }else console.warn("Missing event sended from server"); + } +} +WSJS.prototype.events = new EventTarget(); +WSJS.prototype.scope = function(func){ + if(this.isActive) + { + func(); + }else this.events.addEventListener("open", func); +} + +WSJS.prototype.sendOnly = function(obj){ + if(this.isActive) + { + this.sendRaw([obj,'R']); + }else throw new Error(`socket could be a active`); +} +WSJS.prototype.requests = new Map(); +WSJS.prototype.requestCount = 0; +WSJS.prototype.request = async function(obj){ + if(this.isActive) + { + return await new Promise(ok => { + let id = ++this.requestCount; + this.sendRaw([obj,id,'R']); + this.requests.set(id,data => { + ok(data); + }); + }) + }else throw new Error(`socket could be a active`); +} +WSJS.prototype.stream = async function(obj,callback){ + if(this.isActive) + { + let id = ++this.requestCount; + this.sendRaw([obj, id, 'S']); + this.requests.set(id,data => { + callback(data); + }); + }else throw new Error(`socket could be a active`); +} +WSJS.prototype.signals = new Map(); +WSJS.prototype.signal = async function(name, callback){ + if(!this.signals.has(name)) + { + this.signals.set(name, [callback]); + }else{ + this.signals.get(name).push(callback); + } +} +WSJS.prototype.slot = async function(name, obj){ + if(this.isActive) + { + if(typeof name == "string") + { + this.sendOnly([obj,name]); + }else{ + throw new Error(`name could be a string, gived ${typeof name}`); + } + }else throw new Error(`socket could be a active`); +} +WSJS.prototype.sendRaw = function(obj){ + if(this.isActive) + { + this.ws.send(JSON.stringify(obj)) + }; +}; + + + + + + + +WSJS.prototype.authWith = async function(username, password){ + await this.request({ + type: 'auth/login', + username, + password + }); +}; +WSJS.prototype.fetchMyRoomInfo = async function(){ + return await this.request({ + type: 'myroom-info' + }); +}; +WSJS.prototype.createRoom = async function(options){ + let result = await this.request({ + type: 'create-room', + accessType: options.accessType || "private", + notifyActionInvite: options.notifyActionInvite === undefined ? true : options.notifyActionInvite, + notifyActionJoined: options.notifyActionJoined === undefined ? true : options.notifyActionJoined, + notifyActionEjected: options.notifyActionEjected === undefined ? true : options.notifyActionEjected, + joinType: options.joinType || "free", + description: options.description || "No Description", + name: options.name || "No", + credential: options.credential || undefined + }); + return result; +}; +WSJS.prototype.roomInfo = async function(name){ + let result = await this.request({ + type: 'room-info', + name + }); + return result; +}; +WSJS.prototype.joinRoom = async function(options){ + let result = await this.request({ + ...options, + type: 'joinroom' + }); + return result; +}; +WSJS.prototype.joinedRooms = new Map(); +WSJS.prototype.getJoinedRooms = async function(){ + return await this.request({ + type: 'joinedrooms' + }); +}; +WSJS.prototype.getRoomPeers = async function(id){ + return await this.request({ + type: 'room-peers', + roomId: id + }); +}; +WSJS.prototype.sendPackToPeer = async function(roomId, pack){ + return await this.sendOnly({ + type: 'pack/to', + to: roomId, + pack, + handshake: false + }); +}; +WSJS.prototype.sendPackToRoom = async function(roomId, pack){ + return await this.sendOnly({ + type: 'pack/room', + to: roomId, + pack, + handshake: false + }); +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 289300d..f724c49 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "joi": "^17.7.0", "knex": "^2.3.0", "sqlite3": "^5.1.2", + "systemjs": "^6.13.0", "terminal-kit": "^3.0.0", "typescript": "^4.9.3", "websocket": "^1.0.34" @@ -2082,6 +2083,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/systemjs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.13.0.tgz", + "integrity": "sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==" + }, "node_modules/tar": { "version": "6.1.12", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", @@ -3933,6 +3939,11 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, + "systemjs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/systemjs/-/systemjs-6.13.0.tgz", + "integrity": "sha512-P3cgh2bpaPvAO2NE3uRp/n6hmk4xPX4DQf+UzTlCAycssKdqhp6hjw+ENWe+aUS7TogKRFtptMosTSFeC6R55g==" + }, "tar": { "version": "6.1.12", "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", diff --git a/package.json b/package.json index 860aa58..7811606 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Mikro WebSocket Engine", "main": "Source/index.js", "scripts": { - "compile":"tsc -p tsconfig.json -w" + "compile": "tsc -p tsconfig.json -w" }, "repository": { "type": "git", @@ -24,6 +24,7 @@ "joi": "^17.7.0", "knex": "^2.3.0", "sqlite3": "^5.1.2", + "systemjs": "^6.13.0", "terminal-kit": "^3.0.0", "typescript": "^4.9.3", "websocket": "^1.0.34" diff --git a/script/Connection.d.ts b/script/Connection.d.ts new file mode 100644 index 0000000..c1c74b2 --- /dev/null +++ b/script/Connection.d.ts @@ -0,0 +1,22 @@ +interface IConnection { + endpoint: string; + autoPair?: boolean; +} +export default class Connection { + ws: WebSocket; + endpoint: URL; + autoPair: boolean; + connected: boolean; + constructor(options: IConnection); + connect(): void; + addWSEvents(): void; + private eventOpen; + private eventClose; + private eventError; + private recaivePackEvent; + onRecaivePack(func: (data: any) => any): void; + private eventMessage; + tranferToServer(data: any): void; +} +export {}; +//# sourceMappingURL=Connection.d.ts.map \ No newline at end of file diff --git a/script/Connection.d.ts.map b/script/Connection.d.ts.map new file mode 100644 index 0000000..e1214e6 --- /dev/null +++ b/script/Connection.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../frontend/Connection.ts"],"names":[],"mappings":"AAAA,UAAU,WAAW;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AACD,MAAM,CAAC,OAAO,OAAO,UAAU;IAEpB,EAAE,EAAI,SAAS,CAAC;IAChB,QAAQ,EAAG,GAAG,CAAC;IACf,QAAQ,EAAG,OAAO,CAAS;IAC3B,SAAS,EAAG,OAAO,CAAS;gBACvB,OAAO,EAAE,WAAW;IAKzB,OAAO;IAKP,WAAW;IAOlB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,gBAAgB,CAA8B;IAC/C,aAAa,CAAC,IAAI,EAAC,CAAC,IAAI,EAAC,GAAG,KAAK,GAAG;IAI3C,OAAO,CAAC,YAAY;IASb,eAAe,CAAC,IAAI,EAAC,GAAG;CAOlC"} \ No newline at end of file diff --git a/script/Connection.js b/script/Connection.js new file mode 100644 index 0000000..8ca945d --- /dev/null +++ b/script/Connection.js @@ -0,0 +1,52 @@ +var Connection = (function () { + function Connection(options) { + this.autoPair = false; + this.connected = false; + this.recaivePackEvent = []; + this.endpoint = new URL(options.endpoint); + this.autoPair = options.autoPair || false; + this.connect(); + } + Connection.prototype.connect = function () { + this.ws = new WebSocket(this.endpoint.href); + this.addWSEvents(); + }; + Connection.prototype.addWSEvents = function () { + var _this = this; + this.ws.addEventListener("open", function () { return _this.eventOpen(); }); + this.ws.addEventListener("close", function () { return _this.eventClose(); }); + this.ws.addEventListener("error", function () { return _this.eventError(); }); + this.ws.addEventListener("message", function (_a) { + var data = _a.data; + return _this.eventMessage(data); + }); + }; + Connection.prototype.eventOpen = function () { + this.connected = true; + }; + Connection.prototype.eventClose = function () { + this.connected = false; + }; + Connection.prototype.eventError = function () { + this.connected = false; + }; + Connection.prototype.onRecaivePack = function (func) { + this.recaivePackEvent.push(func); + }; + Connection.prototype.eventMessage = function (data) { + if (typeof data == "string") { + for (var _i = 0, _a = this.recaivePackEvent; _i < _a.length; _i++) { + var callback = _a[_i]; + callback(JSON.parse(data)); + } + } + }; + Connection.prototype.tranferToServer = function (data) { + if (this.connected) { + this.ws.send(JSON.stringify(data)); + } + }; + return Connection; +}()); +export default Connection; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29ubmVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2Zyb250ZW5kL0Nvbm5lY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUE7SUFNSSxvQkFBWSxPQUFvQjtRQUZ6QixhQUFRLEdBQWEsS0FBSyxDQUFDO1FBQzNCLGNBQVMsR0FBYSxLQUFLLENBQUM7UUE4QjNCLHFCQUFnQixHQUEyQixFQUFFLENBQUM7UUE1QmxELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFDTSw0QkFBTyxHQUFkO1FBRUksSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBQ00sZ0NBQVcsR0FBbEI7UUFBQSxpQkFNQztRQUpHLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLGNBQU0sT0FBQSxLQUFJLENBQUMsU0FBUyxFQUFFLEVBQWhCLENBQWdCLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxjQUFNLE9BQUEsS0FBSSxDQUFDLFVBQVUsRUFBRSxFQUFqQixDQUFpQixDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsY0FBTSxPQUFBLEtBQUksQ0FBQyxVQUFVLEVBQUUsRUFBakIsQ0FBaUIsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLFVBQUMsRUFBTTtnQkFBTCxJQUFJLFVBQUE7WUFBTSxPQUFBLEtBQUksQ0FBQyxZQUFZLENBQUMsSUFBNEIsQ0FBQztRQUEvQyxDQUErQyxDQUFDLENBQUM7SUFDckcsQ0FBQztJQUNPLDhCQUFTLEdBQWpCO1FBRUksSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUNPLCtCQUFVLEdBQWxCO1FBRUksSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUNPLCtCQUFVLEdBQWxCO1FBRUksSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQztJQUVNLGtDQUFhLEdBQXBCLFVBQXFCLElBQXNCO1FBRXZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNPLGlDQUFZLEdBQXBCLFVBQXFCLElBQTBCO1FBRTNDLElBQUcsT0FBTyxJQUFJLElBQUksUUFBUSxFQUMxQjtZQUNJLEtBQXVCLFVBQXFCLEVBQXJCLEtBQUEsSUFBSSxDQUFDLGdCQUFnQixFQUFyQixjQUFxQixFQUFyQixJQUFxQixFQUFFO2dCQUF6QyxJQUFNLFFBQVEsU0FBQTtnQkFDZixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2FBQzlCO1NBQ0o7SUFDTCxDQUFDO0lBQ00sb0NBQWUsR0FBdEIsVUFBdUIsSUFBUTtRQUUzQixJQUFHLElBQUksQ0FBQyxTQUFTLEVBQ2pCO1lBQ0ksSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0FBQyxBQXhERCxJQXdEQyIsInNvdXJjZXNDb250ZW50IjpbImludGVyZmFjZSBJQ29ubmVjdGlvbntcclxuICAgIGVuZHBvaW50OiBzdHJpbmc7XHJcbiAgICBhdXRvUGFpcj86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29ubmVjdGlvblxyXG57XHJcbiAgICBwdWJsaWMgd3MhIDogV2ViU29ja2V0O1xyXG4gICAgcHVibGljIGVuZHBvaW50IDogVVJMO1xyXG4gICAgcHVibGljIGF1dG9QYWlyIDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvbm5lY3RlZCA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnM6IElDb25uZWN0aW9uKXtcclxuICAgICAgICB0aGlzLmVuZHBvaW50ID0gbmV3IFVSTChvcHRpb25zLmVuZHBvaW50KTtcclxuICAgICAgICB0aGlzLmF1dG9QYWlyID0gb3B0aW9ucy5hdXRvUGFpciB8fCBmYWxzZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3QoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBjb25uZWN0KClcclxuICAgIHtcclxuICAgICAgICB0aGlzLndzID0gbmV3IFdlYlNvY2tldCh0aGlzLmVuZHBvaW50LmhyZWYpO1xyXG4gICAgICAgIHRoaXMuYWRkV1NFdmVudHMoKTtcclxuICAgIH1cclxuICAgIHB1YmxpYyBhZGRXU0V2ZW50cygpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwib3BlblwiLCAoKSA9PiB0aGlzLmV2ZW50T3BlbigpKTtcclxuICAgICAgICB0aGlzLndzLmFkZEV2ZW50TGlzdGVuZXIoXCJjbG9zZVwiLCAoKSA9PiB0aGlzLmV2ZW50Q2xvc2UoKSk7XHJcbiAgICAgICAgdGhpcy53cy5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgKCkgPT4gdGhpcy5ldmVudEVycm9yKCkpO1xyXG4gICAgICAgIHRoaXMud3MuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgKHtkYXRhfSkgPT4gdGhpcy5ldmVudE1lc3NhZ2UoZGF0YSBhcyBzdHJpbmcgfCBBcnJheUJ1ZmZlcikpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBldmVudE9wZW4oKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZXZlbnRDbG9zZSgpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZXZlbnRFcnJvcigpXHJcbiAgICB7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgcmVjYWl2ZVBhY2tFdmVudCA6ICgoZGF0YTphbnkpID0+IGFueSlbXSA9IFtdO1xyXG4gICAgcHVibGljIG9uUmVjYWl2ZVBhY2soZnVuYzooZGF0YTphbnkpID0+IGFueSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLnJlY2FpdmVQYWNrRXZlbnQucHVzaChmdW5jKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgZXZlbnRNZXNzYWdlKGRhdGE6IHN0cmluZyB8IEFycmF5QnVmZmVyKVxyXG4gICAge1xyXG4gICAgICAgIGlmKHR5cGVvZiBkYXRhID09IFwic3RyaW5nXCIpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIHRoaXMucmVjYWl2ZVBhY2tFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soSlNPTi5wYXJzZShkYXRhKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgdHJhbmZlclRvU2VydmVyKGRhdGE6YW55KVxyXG4gICAge1xyXG4gICAgICAgIGlmKHRoaXMuY29ubmVjdGVkKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy53cy5zZW5kKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0= \ No newline at end of file diff --git a/script/index.d.ts b/script/index.d.ts index 07445f1..6c5b8ec 100644 --- a/script/index.d.ts +++ b/script/index.d.ts @@ -1,3 +1,4 @@ -declare namespace WSTS { +export default class WSTS { + connection?: Connection; } //# sourceMappingURL=index.d.ts.map \ No newline at end of file diff --git a/script/index.d.ts.map b/script/index.d.ts.map index 3546fde..50b148e 100644 --- a/script/index.d.ts.map +++ b/script/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../frontend/index.ts"],"names":[],"mappings":"AAAA,kBAAU,IAAI,CAAC;CAEd"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../frontend/index.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,IAAI;IACd,UAAU,CAAC,EAAG,UAAU,CAAC;CACnC"} \ No newline at end of file diff --git a/script/index.js b/script/index.js index 161d85f..fafaa59 100644 --- a/script/index.js +++ b/script/index.js @@ -1,3 +1,7 @@ -"use strict"; -; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9mcm9udGVuZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIm5hbWVzcGFjZSBXU1RTIHtcclxuXHJcbn07Il19 \ No newline at end of file +var WSTS = (function () { + function WSTS() { + } + return WSTS; +}()); +export default WSTS; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9mcm9udGVuZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtJQUFBO0lBRUEsQ0FBQztJQUFELFdBQUM7QUFBRCxDQUFDLEFBRkQsSUFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGNsYXNzIFdTVFMge1xyXG4gICAgcHVibGljIGNvbm5lY3Rpb24/IDogQ29ubmVjdGlvbjtcclxufSJdfQ== \ No newline at end of file diff --git a/test.html b/test.html index aaa0108..43e3582 100644 --- a/test.html +++ b/test.html @@ -9,61 +9,61 @@