diff --git a/packages/jwt/package.json b/packages/jwt/package.json index 19419375797400dd6ae0d801755b36b3a57c593c..5967f6bf110d2c7c27298e5cf572e8f71608d0e2 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 981f69ecdacd9a400e0345847a2172b3d500dd6c..f7bb3e2471ce3c105a4fba935cb70899ca81eb3a 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) } diff --git a/packages/ws-client/package.json b/packages/ws-client/package.json index 4cbd65e839d07c0e9936c42f2d72bffc888c171f..ca86ccd59a2dad6da0e8a1637e0cae2628ec7a0e 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 2d6cb42e1dfea13faa78c98ee5ef592baf8ddae3..a11a539ae9dcf9e85a4d798ef7e611a8b5a2a82e 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; diff --git a/packages/ws-server/package.json b/packages/ws-server/package.json index eb561831d62edd72d061d66c29d64bc13459a072..3c3cfc395cf7634f904638fc500c12a5054cf420 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/core/ws-setup.js b/packages/ws-server/src/core/ws-setup.js index 7a2546fd097d484dcdfb6caa4122f4d394c1f1f2..c70340480cdc68d1972db3e5352e2fd381160946 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 9b10820f4298bacb02330b94a829400a7427311c..46a331dde54ea2464bc715b9d2811d64c3e73481 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 { objDefineProps, injectToFn } = require('jsonql-utils') +const { provideUserdata } = require('jsonql-jwt') + const { nil, createWsReply, getDebug } = require('../share/helpers') + const debug = getDebug(`addProperty`) /* diff --git a/packages/ws-server/src/share/resolve-method.js b/packages/ws-server/src/share/resolve-method.js index cd3dfdfa8331b354ec32e88ce81fde28f8b5e075..d962d3462d01bf5ac6f929b6c653f4e40b3578a3 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 8ba3064f8a4351a3331123311a0e98dd2a924610..c0ff70ca6c35090d0baa3286f040717c2c3fce6f 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) }