From fef1ae338a026386ee926c26bec3a060868e362d Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Thu, 28 Jan 2021 12:58:42 +0000 Subject: [PATCH] fix(core): update --- package-lock.json | 20 +++++++++++++---- package.json | 2 +- ts/typedsocket.classes.typedsocket.ts | 31 ++++++++++++++++++++------- 3 files changed, 40 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index b241c0b..fc9c2a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1950,9 +1950,9 @@ } }, "@pushrocks/smartsocket": { - "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==", + "version": "1.2.7", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartsocket/-/smartsocket-1.2.7.tgz", + "integrity": "sha512-EBtWZRnoC9/0/KuBq2k6fTeFXx6r4LvXTS64VvC2lJkx5UgWhG0ZNhOTkMtVlf96fCk5Y9v9PS8UbG8fO7M1Gg==", "requires": { "@apiglobal/typedrequest-interfaces": "^1.0.15", "@pushrocks/isohash": "^1.0.2", @@ -1961,7 +1961,7 @@ "@pushrocks/smartdelay": "^2.0.10", "@pushrocks/smartenv": "^4.0.16", "@pushrocks/smartexpress": "^3.0.100", - "@pushrocks/smartjson": "^4.0.5", + "@pushrocks/smartjson": "^4.0.6", "@pushrocks/smartlog": "^2.0.39", "@pushrocks/smartpromise": "^3.1.3", "@pushrocks/smartrx": "^2.0.19", @@ -1972,6 +1972,18 @@ "socket.io-client": "^3.1.0" }, "dependencies": { + "@pushrocks/smartjson": { + "version": "4.0.6", + "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmartjson/-/smartjson-4.0.6.tgz", + "integrity": "sha512-lykr068RSDHs0+EXCvIDVxjKnDtRQ2M7EXOo5jVrUU6/OEdfRl9ErM1K/oPafiEi47/PtTrwLlp1KdSgqkRjmg==", + "requires": { + "@types/buffer-json": "^2.0.0", + "@types/fast-json-stable-stringify": "^2.0.0", + "buffer-json": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "lodash.clonedeep": "^4.5.0" + } + }, "@pushrocks/smarttime": { "version": "3.0.38", "resolved": "https://verdaccio.lossless.one/@pushrocks%2fsmarttime/-/smarttime-3.0.38.tgz", diff --git a/package.json b/package.json index 635654d..7371631 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "@apiglobal/typedrequest-interfaces": "^1.0.15", "@pushrocks/isohash": "^1.0.2", "@pushrocks/smartexpress": "^3.0.100", - "@pushrocks/smartsocket": "^1.2.6", + "@pushrocks/smartsocket": "^1.2.7", "@pushrocks/smartstring": "^3.0.24" }, "browserslist": [ diff --git a/ts/typedsocket.classes.typedsocket.ts b/ts/typedsocket.classes.typedsocket.ts index b05572f..b90295a 100644 --- a/ts/typedsocket.classes.typedsocket.ts +++ b/ts/typedsocket.classes.typedsocket.ts @@ -82,6 +82,7 @@ export class TypedSocket { url: `${domain.nodeParsedUrl.protocol}//${domain.nodeParsedUrl.hostname}`, autoReconnect: true, } + console.log(`starting typedsocket with the following settings:`) console.log(socketOptions); const smartsocketClient = new plugins.smartsocket.SmartsocketClient(socketOptions); smartsocketClient.addSocketFunction( @@ -156,32 +157,46 @@ export class TypedSocket { return typedrequest; } - public async findTargetConnection( - findFuncArg: (connectionArg: plugins.smartsocket.SocketConnection) => boolean + public async findAllTargetConnections( + asyncFindFuncArg: (connectionArg: plugins.smartsocket.SocketConnection) => Promise ) { if (this.socketServerOrClient instanceof plugins.smartsocket.Smartsocket) { + const matchingSockets: plugins.smartsocket.SocketConnection[] = []; for (const socketConnection of this.socketServerOrClient.socketConnections.getArray()) { - if (findFuncArg(socketConnection)) { - return socketConnection; + if (await asyncFindFuncArg(socketConnection)) { + matchingSockets.push(socketConnection); } } + return matchingSockets; } else { throw new Error('this method >>findTargetConnection<< is only available from the server'); } } - public async findTargetConnectionByTag(keyArg: string, payload?: any) { - this.findTargetConnection(socketConnectionArg => { + public async findTargetConnection( + asyncFindFuncArg: (connectionArg: plugins.smartsocket.SocketConnection) => Promise + ) { + const allMatching = this.findAllTargetConnections(asyncFindFuncArg); + return allMatching[0]; + } + + public async findAllTargetConnectionsByTag(keyArg: string, payloadArg?: any) { + return this.findAllTargetConnections(async socketConnectionArg => { let result: boolean; - if (!payload) { + if (!payloadArg) { result = !!socketConnectionArg.getTagById('keyArg') } else { - result = !!socketConnectionArg.getTagById('keyArg') === payload; + result = !!socketConnectionArg.getTagById('keyArg') === payloadArg; } return result; }) } + public async findTargetConnectionByTag(keyArg: string, payloadArg?: any) { + const allResults = this.findAllTargetConnectionsByTag(keyArg, payloadArg) + return allResults[0]; + } + public async stop() { await this.socketServerOrClient.stop() }