From ba157e3baea5efb4f313b7e94c24c997fa3dc86c Mon Sep 17 00:00:00 2001 From: joelchu Date: Thu, 17 Oct 2019 23:23:20 +0800 Subject: [PATCH 1/4] use USERDATA_PROP_NAME for provideUserdata --- packages/jwt/package.json | 20 +++++++++---------- .../jwt/src/server/auth/provide-userdata.js | 3 ++- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/packages/jwt/package.json b/packages/jwt/package.json index 19419375..5967f6bf 100644 --- a/packages/jwt/package.json +++ b/packages/jwt/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-jwt", - "version": "1.3.2", + "version": "1.3.3", "description": "jwt authentication helpers library for jsonql browser / node", "main": "main.js", "module": "index.js", @@ -36,29 +36,29 @@ "author": "Joel Chu ", "license": "ISC", "dependencies": { - "colors": "^1.3.3", + "colors": "^1.4.0", "fs-extra": "^8.1.0", - "jsonql-constants": "^1.8.3", + "jsonql-constants": "^1.8.5", "jsonql-errors": "^1.1.3", "jsonql-params-validator": "^1.4.11", - "jsonql-utils": "^0.6.10", + "jsonql-utils": "^0.7.6", "jsonwebtoken": "^8.5.1", "jwt-decode": "^2.2.0", "socketio-jwt": "^4.5.0", - "yargs": "^14.0.0" + "yargs": "^14.2.0" }, "bin": { "jsonql-jwt": "./cmd.js" }, "devDependencies": { - "socket.io-client": "^2.2.0", + "socket.io-client": "^2.3.0", "ws": "^7.1.2", "ava": "^2.4.0", "debug": "^4.1.1", "esm": "^3.2.25", - "koa": "^2.8.1", - "rollup": "^1.21.4", - "rollup-plugin-alias": "^2.0.0", + "koa": "^2.10.0", + "rollup": "^1.24.0", + "rollup-plugin-alias": "^2.0.1", "rollup-plugin-async": "^1.2.0", "rollup-plugin-buble": "^0.19.8", "rollup-plugin-bundle-size": "^1.0.3", @@ -72,7 +72,7 @@ "rollup-plugin-serve": "^1.0.1", "rollup-plugin-terser": "^5.1.2", "server-io-core": "^1.2.0", - "socket.io": "^2.2.0" + "socket.io": "^2.3.0" }, "ava": { "files": [ diff --git a/packages/jwt/src/server/auth/provide-userdata.js b/packages/jwt/src/server/auth/provide-userdata.js index 981f69ec..f7bb3e24 100644 --- a/packages/jwt/src/server/auth/provide-userdata.js +++ b/packages/jwt/src/server/auth/provide-userdata.js @@ -1,4 +1,5 @@ const { injectToFn } = require('jsonql-utils') +const { USERDATA_PROP_NAME } = require('jsonql-constants') /** * After the user login we will use this Object.define add a new property * to the resolver with the decoded user data @@ -7,5 +8,5 @@ const { injectToFn } = require('jsonql-utils') * @return {function} added property resolver */ module.exports = function(resolver, userdata) { - return injectToFn(resolver, 'userdata', userdata, true) + return injectToFn(resolver, USERDATA_PROP_NAME, userdata, true) } -- Gitee From ddc4e273bdef454240d4c80c120c318a0ef02872 Mon Sep 17 00:00:00 2001 From: joelchu Date: Thu, 17 Oct 2019 23:27:21 +0800 Subject: [PATCH 2/4] complete update the addProperty method for jsonql-ws-server --- packages/ws-server/package.json | 4 ++-- packages/ws-server/src/share/add-property.js | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index eb561831..3c3cfc39 100755 --- a/packages/ws-server/package.json +++ b/packages/ws-server/package.json @@ -31,9 +31,9 @@ "debug": "^4.1.1", "esm": "^3.2.25", "fs-extra": "^8.1.0", - "jsonql-constants": "^1.8.4", + "jsonql-constants": "^1.8.5", "jsonql-errors": "^1.1.3", - "jsonql-jwt": "^1.3.2", + "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-resolver": "^0.9.4", "jsonql-utils": "^0.7.6", diff --git a/packages/ws-server/src/share/add-property.js b/packages/ws-server/src/share/add-property.js index 9b10820f..2628b671 100644 --- a/packages/ws-server/src/share/add-property.js +++ b/packages/ws-server/src/share/add-property.js @@ -1,14 +1,17 @@ // add required properties to the resolver +const _ = require('lodash') const { EMIT_REPLY_TYPE, SEND_MSG_PROP_NAME, MESSAGE_PROP_NAME, JS_WS_NAME } = require('jsonql-constants') -const _ = require('lodash') // @BUG it's weird this file is not here but no error was throw const { objDefineProps } = require('jsonql-utils') +const { provideUserdata } = require('jsonql-jwt') + const { nil, createWsReply, getDebug } = require('../share/helpers') + const debug = getDebug(`addProperty`) /* -- Gitee From 14ca3d4aca02420acdff1cee6b45a97c870ddd95 Mon Sep 17 00:00:00 2001 From: joelchu Date: Thu, 17 Oct 2019 23:37:44 +0800 Subject: [PATCH 3/4] fixed the resolve-method problem --- packages/ws-server/src/core/ws-setup.js | 2 +- packages/ws-server/src/share/add-property.js | 2 +- packages/ws-server/src/share/resolve-method.js | 11 ++++++----- packages/ws-server/tests/ws-connect-es6.test.js | 5 +++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/ws-server/src/core/ws-setup.js b/packages/ws-server/src/core/ws-setup.js index 7a2546fd..c7034048 100644 --- a/packages/ws-server/src/core/ws-setup.js +++ b/packages/ws-server/src/core/ws-setup.js @@ -14,7 +14,7 @@ const { createWsReply, getUserdata } = require('../share/helpers') -const resolveMethod = require('../share/resolve-method') +const { resolveMethod } = require('../share/resolve-method') const debug = getDebug('ws-setup') diff --git a/packages/ws-server/src/share/add-property.js b/packages/ws-server/src/share/add-property.js index 2628b671..46a331dd 100644 --- a/packages/ws-server/src/share/add-property.js +++ b/packages/ws-server/src/share/add-property.js @@ -7,7 +7,7 @@ const { JS_WS_NAME } = require('jsonql-constants') // @BUG it's weird this file is not here but no error was throw -const { objDefineProps } = require('jsonql-utils') +const { objDefineProps, injectToFn } = require('jsonql-utils') const { provideUserdata } = require('jsonql-jwt') const { nil, createWsReply, getDebug } = require('../share/helpers') diff --git a/packages/ws-server/src/share/resolve-method.js b/packages/ws-server/src/share/resolve-method.js index cd3dfdfa..d962d346 100644 --- a/packages/ws-server/src/share/resolve-method.js +++ b/packages/ws-server/src/share/resolve-method.js @@ -2,6 +2,7 @@ const fs = require('fs') const { join } = require('path') const { isUndefined } = require('lodash') + const { JsonqlAuthorisationError, JsonqlResolverNotFoundError, @@ -17,14 +18,13 @@ const { } = require('jsonql-constants') const { validateSync } = require('jsonql-params-validator') const { provideUserdata } = require('jsonql-jwt') -const { dasherize, injectToFn } = require('jsonql-utils') - -const debug = require('debug')('jsonql-ws-server:resolve-method') - const { getResolver } = require('jsonql-resolver') +const { getDebug } = require('./helpers') const { addProperty } = require('./add-property') +const debug = getDebug('resolve-method') + /** * similiar to the one in Koa-middleware without the ctx * @param {string} resolverName name to call @@ -42,9 +42,10 @@ const resolveMethod = function(resolverName, args, params, opts, ws, userdata = try { return Reflect.apply(tfn, null, args) } catch(e) { + debug(`resolveMethod Error`, e) throw new JsonqlResolverAppError(resolverName, e) } } // we only need to export one method -module.exports = resolveMethod +module.exports = { resolveMethod } diff --git a/packages/ws-server/tests/ws-connect-es6.test.js b/packages/ws-server/tests/ws-connect-es6.test.js index 8ba3064f..c0ff70ca 100644 --- a/packages/ws-server/tests/ws-connect-es6.test.js +++ b/packages/ws-server/tests/ws-connect-es6.test.js @@ -39,7 +39,7 @@ test.after(t => { }) test.cb('Grouping all test together as one because the way ws reponse to on.message', t => { - t.plan(8) + t.plan(9) // connect to the server let client = t.context.client; @@ -88,7 +88,8 @@ test.cb('Grouping all test together as one because the way ws reponse to on.mess t.truthy(data.error, 'causeError should have error field') t.is(json.type, ERROR_TYPE) - t.true(data.error.className === 'JsonqlResolverAppError' && data.error.message === 'causeError') + t.is(data.error.className, 'JsonqlResolverAppError', 'Expect to received resolver app error') + t.is(data.error.message, 'causeError', 'Expect to get the resolver name via message field') shouldEnd(++i, t) } -- Gitee From 6d111ffab8549b6d50a4ce922459a3edcc88c2e0 Mon Sep 17 00:00:00 2001 From: joelchu Date: Thu, 17 Oct 2019 23:41:54 +0800 Subject: [PATCH 4/4] fixed the ping pong problem --- packages/ws-client/package.json | 6 +++--- packages/ws-client/tests/test-node.test.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 4cbd65e8..ca86ccd5 100755 --- a/packages/ws-client/package.json +++ b/packages/ws-client/package.json @@ -47,9 +47,9 @@ "node": ">=8" }, "dependencies": { - "jsonql-constants": "^1.8.4", + "jsonql-constants": "^1.8.5", "jsonql-errors": "^1.1.3", - "jsonql-jwt": "^1.3.2", + "jsonql-jwt": "^1.3.3", "jsonql-params-validator": "^1.4.11", "jsonql-utils": "^0.7.6", "nb-event-service": "^1.8.3" @@ -59,7 +59,7 @@ "esm": "^3.2.25", "fs-extra": "^8.1.0", "jsonql-contract": "^1.7.21", - "jsonql-ws-server": "^1.3.1", + "jsonql-ws-server": "^1.3.2", "kefir": "^3.8.6", "ws": "^7.1.2" }, diff --git a/packages/ws-client/tests/test-node.test.js b/packages/ws-client/tests/test-node.test.js index 2d6cb42e..a11a539a 100644 --- a/packages/ws-client/tests/test-node.test.js +++ b/packages/ws-client/tests/test-node.test.js @@ -68,7 +68,7 @@ test.serial('It should able to create the WebSocket client object', t => { }) test.serial.cb('The ws client can connect to the WebSocket server public interface', t => { - t.plan(2) + t.plan(3) let ctn = 0; const client = t.context.client; -- Gitee