From f4d820d37e7e3982bd42740996e683d9574aed36 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Thu, 28 Jan 2021 02:12:22 +0000 Subject: [PATCH] fix(core): update --- package-lock.json | 75 +++++++++++++++++++-------- package.json | 4 +- ts/typedsocket.classes.typedsocket.ts | 32 +++++++++++- 3 files changed, 86 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5a8fecf..dd4a1f9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1950,9 +1950,9 @@ } }, "@pushrocks/smartsocket": { - "version": "1.2.2", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartsocket/-/smartsocket-1.2.2.tgz", - "integrity": "sha512-qx5xqlepEGYBTNg+tLjQTgmcxjyHdaysuFLcadxPHYkPdQF13LUnnpvNOeglCW2dgPKP4lIwIOLDyecMtz2ZWw==", + "version": "1.2.6", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartsocket/-/smartsocket-1.2.6.tgz", + "integrity": "sha512-rHOs/ANrgnrt+AHuUNAOzb+X5FrtP/yaC/6qp7lQSorb6x73T5343/9TB875kI1Q3trqlwJDvJy7+uJQ7zMMhg==", "requires": { "@apiglobal/typedrequest-interfaces": "^1.0.15", "@pushrocks/isohash": "^1.0.2", @@ -1960,15 +1960,31 @@ "@pushrocks/lik": "^4.0.20", "@pushrocks/smartdelay": "^2.0.10", "@pushrocks/smartenv": "^4.0.16", - "@pushrocks/smartexpress": "^3.0.99", + "@pushrocks/smartexpress": "^3.0.100", + "@pushrocks/smartjson": "^4.0.5", "@pushrocks/smartlog": "^2.0.39", "@pushrocks/smartpromise": "^3.1.3", "@pushrocks/smartrx": "^2.0.19", - "@pushrocks/smarttime": "^3.0.37", - "@types/socket.io": "^2.1.12", - "@types/socket.io-client": "^1.4.34", - "socket.io": "^3.0.4", - "socket.io-client": "^3.0.4" + "@pushrocks/smarttime": "^3.0.38", + "@types/socket.io": "^2.1.13", + "@types/socket.io-client": "^1.4.35", + "socket.io": "^3.1.0", + "socket.io-client": "^3.1.0" + }, + "dependencies": { + "@pushrocks/smarttime": { + "version": "3.0.38", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.38.tgz", + "integrity": "sha512-oVT48eZE66OTmDALAsWkk3GXUQiqzkei7mo526UbuMN2iLY8I9WgsxmLfa8Fp4llQmocncW3WTqGyhnEOAuDgA==", + "requires": { + "@pushrocks/lik": "^4.0.17", + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartpromise": "^3.0.2", + "croner": "^1.1.23", + "dayjs": "^1.9.1", + "is-nan": "^1.3.0" + } + } } }, "@pushrocks/smartstring": { @@ -2036,15 +2052,30 @@ } }, "@pushrocks/tapbundle": { - "version": "3.2.9", - "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.2.9.tgz", - "integrity": "sha512-vtmYL/l7BZvAzySh7cYnnTG6CFMp5zYtowJuMAmqUjhIaQaWW1Tvbrpjp7lVwRXj2JlL/i69KcJ6RVdLItK+rA==", + "version": "3.2.10", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2ftapbundle/-/tapbundle-3.2.10.tgz", + "integrity": "sha512-EPFSiFMx6uxWcZgANT1yDigTknVl1FCRIaiuf2AEkpg4vR5ZIZQKDIWkrFZY0ajUWJ6vCM631TmIcJvUnyWJXw==", "requires": { - "@pushrocks/smartdelay": "^2.0.9", - "@pushrocks/smartenv": "^4.0.10", - "@pushrocks/smartpromise": "^3.0.2", - "@pushrocks/smarttime": "^3.0.19", + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartenv": "^4.0.16", + "@pushrocks/smartpromise": "^3.1.3", + "@pushrocks/smarttime": "^3.0.38", "smartchai": "^2.0.1" + }, + "dependencies": { + "@pushrocks/smarttime": { + "version": "3.0.38", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.38.tgz", + "integrity": "sha512-oVT48eZE66OTmDALAsWkk3GXUQiqzkei7mo526UbuMN2iLY8I9WgsxmLfa8Fp4llQmocncW3WTqGyhnEOAuDgA==", + "requires": { + "@pushrocks/lik": "^4.0.17", + "@pushrocks/smartdelay": "^2.0.10", + "@pushrocks/smartpromise": "^3.0.2", + "croner": "^1.1.23", + "dayjs": "^1.9.1", + "is-nan": "^1.3.0" + } + } } }, "@pushrocks/webrequest": { @@ -2418,9 +2449,9 @@ "dev": true }, "@types/socket.io": { - "version": "2.1.12", - "resolved": "https://verdaccio.lossless.one/@types%2fsocket.io/-/socket.io-2.1.12.tgz", - "integrity": "sha512-oStc5VFkpb0AsjOxQUj9ztX5Iziatyla/rjZTYbFGoVrrKwd+JU2mtxk7iSl5RGYx9WunLo6UXW1fBzQok/ZyA==", + "version": "2.1.13", + "resolved": "https://verdaccio.lossless.one/@types%2fsocket.io/-/socket.io-2.1.13.tgz", + "integrity": "sha512-JRgH3nCgsWel4OPANkhH8TelpXvacAJ9VeryjuqCDiaVDMpLysd6sbt0dr6Z15pqH3p2YpOT3T1C5vQ+O/7uyg==", "requires": { "@types/engine.io": "*", "@types/node": "*", @@ -8134,9 +8165,9 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pathval": { - "version": "1.1.0", - "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" + "version": "1.1.1", + "resolved": "https://verdaccio.lossless.one/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==" }, "pbkdf2": { "version": "3.1.1", diff --git a/package.json b/package.json index 0c6795d..e33e0c7 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@gitzone/tsbuild": "^2.1.25", "@gitzone/tsbundle": "^1.0.78", "@gitzone/tstest": "^1.0.44", - "@pushrocks/tapbundle": "^3.2.9", + "@pushrocks/tapbundle": "^3.2.10", "@types/node": "^14.14.22", "tslint": "^6.1.3", "tslint-config-prettier": "^1.15.0" @@ -25,7 +25,7 @@ "@apiglobal/typedrequest-interfaces": "^1.0.15", "@pushrocks/isohash": "^1.0.2", "@pushrocks/smartexpress": "^3.0.100", - "@pushrocks/smartsocket": "^1.2.2", + "@pushrocks/smartsocket": "^1.2.6", "@pushrocks/smartstring": "^3.0.24" }, "browserslist": [ diff --git a/ts/typedsocket.classes.typedsocket.ts b/ts/typedsocket.classes.typedsocket.ts index 4890262..b05572f 100644 --- a/ts/typedsocket.classes.typedsocket.ts +++ b/ts/typedsocket.classes.typedsocket.ts @@ -4,6 +4,8 @@ import type * as smartexpress from '@pushrocks/smartexpress'; const publicRoleName = 'publicRoleName'; const publicRolePass = 'publicRolePass'; +export type TTypedSocketSide = 'server' | 'client'; + export class TypedSocket { // STATIC /** @@ -35,6 +37,7 @@ export class TypedSocket { }) ); const typedsocket = new TypedSocket( + 'server', typedrouterArg, async ( dataArg: T, @@ -91,6 +94,7 @@ export class TypedSocket { }) ); const typedsocket = new TypedSocket( + 'client', typedrouterArg, async (dataArg: T): Promise => { const response: T = (smartsocketClient.serverCall('processMessage', dataArg) as any) as T; @@ -105,6 +109,7 @@ export class TypedSocket { } // INSTANCE + public side: TTypedSocketSide; public typedrouter: plugins.typedrequest.TypedRouter; private postMethod: plugins.typedrequest.IPostMethod & (( @@ -113,15 +118,28 @@ export class TypedSocket { ) => Promise); private socketServerOrClient: plugins.smartsocket.Smartsocket | plugins.smartsocket.SmartsocketClient; constructor( + sideArg: TTypedSocketSide, typedrouterArg: plugins.typedrequest.TypedRouter, postMethodArg: plugins.typedrequest.IPostMethod, socketServerOrClientArg: plugins.smartsocket.Smartsocket | plugins.smartsocket.SmartsocketClient ) { + this.side = sideArg; this.typedrouter = typedrouterArg; this.postMethod = postMethodArg; this.socketServerOrClient = socketServerOrClientArg; } + public addTag(keyArg: string, payloadArg: any) { + if (this.side === 'client' && this.socketServerOrClient instanceof plugins.smartsocket.SmartsocketClient) { + this.socketServerOrClient.socketConnection.addTag({ + id: keyArg, + payload: payloadArg + }) + } else { + throw new Error('tagging is only supported on clients'); + } + } + public createTypedRequest( methodName: T['method'], targetConnection?: plugins.smartsocket.SocketConnection @@ -148,10 +166,22 @@ export class TypedSocket { } } } else { - console.warn('this method >>findTargetConnection<< is only available from the server'); + throw new Error('this method >>findTargetConnection<< is only available from the server'); } } + public async findTargetConnectionByTag(keyArg: string, payload?: any) { + this.findTargetConnection(socketConnectionArg => { + let result: boolean; + if (!payload) { + result = !!socketConnectionArg.getTagById('keyArg') + } else { + result = !!socketConnectionArg.getTagById('keyArg') === payload; + } + return result; + }) + } + public async stop() { await this.socketServerOrClient.stop() }