diff --git a/packages/contract-cli/TODO.md b/packages/contract-cli/TODO.md new file mode 100644 index 0000000000000000000000000000000000000000..38ac1e90f66eb72606e2946ae5545a71d87a7f9c --- /dev/null +++ b/packages/contract-cli/TODO.md @@ -0,0 +1,4 @@ +## 2020-02-21 + +- Need to add a clean up action when pass `development: true` then remove existing contract before start (instead of our current method in the post generate method) +- When `enableAuth: false` TBC if `development:true` should we include those resolvers inside the private folder as well diff --git a/packages/contract-cli/package.json b/packages/contract-cli/package.json index 2b865fa4c968c7d9323b9f9829531a50de601148..47fa13110723a19b813c7104953e599c6173661e 100755 --- a/packages/contract-cli/package.json +++ b/packages/contract-cli/package.json @@ -1,6 +1,6 @@ { "name": "jsonql-contract", - "version": "1.8.6", + "version": "1.8.7", "description": "JS API / command line tool to generate the contract.json for jsonql", "main": "index.js", "files": [ @@ -12,11 +12,11 @@ ], "scripts": { "dev": "DEBUG=jsonql-contract:* node ./test.js", - "coverage": "nyc ava --verbose", - "prepare": "ava --verbose", + "coverage": "nyc ava", + "prepare": "ava", "cli": "DEBUG=jsonql-contract* node ./cli.js", "cli:watch": "DEBUG=jsonql-contract* node ./watch.js", - "test": "ava --verbose", + "test": "ava", "test:cli": "npm run cli configFile ./tests/fixtures/cmd-config-test.js", "test:doc": "DEBUG=jsonql-contract:* ava ./tests/contract-with-doc.test.js", "test:gen": "DEBUG=jsonql-contract:* ava ./tests/generator.test.js", @@ -28,7 +28,8 @@ "test:custom": "DEBUG=jsonql-contract:* ava tests/custom-login.test.js", "test:debug": "DEBUG=jsonql* ava tests/koa-debug.test.js", "test:split": "DEBUG=jsonql-contract* ava tests/split-task.test.js", - "test:dc": "DEBUG=jsonql-contract* ava tests/debug-contract.test.js" + "test:dc": "DEBUG=jsonql-contract* ava tests/debug-contract.test.js", + "test:public": "DEBUG=jsonql-contract:* ava tests/public-enable-auth-false.test.js" }, "keywords": [ "jsonql", @@ -58,21 +59,20 @@ "kefir": "^3.8.6", "lodash": "^4.17.15", "nb-split-tasks": "^0.6.0", - "yargs": "^15.0.2" + "yargs": "^15.1.0" }, "devDependencies": { - "ava": "^2.4.0", - "nyc": "^15.0.0", - "request": "^2.88.0" + "ava": "^3.3.0", + "nyc": "^15.0.0" }, "ava": { "files": [ - "tests/**/*.test.js", - "!tests/fixtures/**/*.*" + "tests/**/*.test.js" ], - "sources": [ - "**/*.{js,jsx}", - "!dist/**/*" + "ignoredByWatcher": [ + "dist/**/*", + "tests/fixtures/**/*.*", + "tests/cmd.test.js" ], "cache": true, "concurrency": 5, @@ -80,7 +80,7 @@ "failWithoutAssertions": false, "tap": false, "verbose": true, - "compileEnhancements": false + "timeout": "60s" }, "engine": { "node": ">=8" diff --git a/packages/contract-cli/src/generator/get-resolver.js b/packages/contract-cli/src/generator/get-resolver.js index 86bf0297cb1ef68e6c18067e6302e105b5226201..be7c59190441c2799d45598776691e5dfa1a947b 100644 --- a/packages/contract-cli/src/generator/get-resolver.js +++ b/packages/contract-cli/src/generator/get-resolver.js @@ -83,7 +83,7 @@ const checkResolver = (indexFile, inDir, fileType, config) => (baseFile) => { const fileName = basename(fileParts[1], ext) // const evt = basename(fileParts[1]); switch (ctn) { - case 4: // this will definely inside the public folder + case 4: // this will be inside the public folder if (inTypesArray(type)) { // we need to shift down one level to get the filename const fileName4 = basename(fileParts[2], ext) diff --git a/packages/contract-cli/src/generator/helpers.js b/packages/contract-cli/src/generator/helpers.js index ad70dfc82ae480ca014378116817bb4b09468934..d503b2aa63969f6e11f2ac0f81d1edf5994cddcf 100644 --- a/packages/contract-cli/src/generator/helpers.js +++ b/packages/contract-cli/src/generator/helpers.js @@ -76,12 +76,14 @@ const addSocketProps = function(type, config, obj) { /** * Check if it's a public folder + * 2020-02-21 we remove this line `config.enableAuth === true && ` + * to allow public folder get include into the contract regardless enableAuth * @param {array} files file path split * @param {object} config publicKey replace the PUBLIC_KEY * @return {boolean} true on success or undefined on fail */ const checkIfIsPublic = (files, config) => ( - config.enableAuth === true && files[1] === config.publicMethodDir + files[1] === config.publicMethodDir ) /** diff --git a/packages/contract-cli/src/options.js b/packages/contract-cli/src/options.js index da6a8ef9fe28788c697b8f7687ad6987cad932f6..a017211677a1d725684b353f113510b68839e9d2 100644 --- a/packages/contract-cli/src/options.js +++ b/packages/contract-cli/src/options.js @@ -35,9 +35,9 @@ const constProps = { const defaultOptions = { // give the contract an expired time expired: createConfig(0, [NUMBER_TYPE]), - + // passing extra props to the contract.json extraContractProps: createConfig(false, [OBJECT_TYPE], {[OPTIONAL_KEY]: true}), - + // Auth related props loginHandlerName: createConfig(ISSUER_NAME, [STRING_TYPE]), logoutHandlerName: createConfig(LOGOUT_NAME, [STRING_TYPE]), validatorHandlerName: createConfig(VALIDATOR_NAME, [STRING_TYPE, BOOLEAN_TYPE]), @@ -72,7 +72,9 @@ const defaultOptions = { // ported from jsonql-koa buildContractOnStart: constructConfig(false, [BOOLEAN_TYPE], true), // @1.8.x enable or disable the split tasks - enableSplitTask: createConfig(false, [BOOLEAN_TYPE]) + enableSplitTask: createConfig(false, [BOOLEAN_TYPE]), + // add 1.8.7 to determine if we clean out the contract folder or not + development: createConfig(false, [BOOLEAN_TYPE]) } // export it module.exports = config => checkConfigAsync(config, defaultOptions, constProps) diff --git a/packages/contract-cli/tests/public-enable-auth-false.test.js b/packages/contract-cli/tests/public-enable-auth-false.test.js new file mode 100644 index 0000000000000000000000000000000000000000..1ba8d411311d57eb62496468092726a9564df421 --- /dev/null +++ b/packages/contract-cli/tests/public-enable-auth-false.test.js @@ -0,0 +1,35 @@ +// test if it picks up the public folder even when enableAuth is false +const test = require('ava') +const { join } = require('path') +const fsx = require('fs-extra') + +const baseDir = join(__dirname, 'fixtures') +const resolverDir = join(baseDir, 'resolvers') + +const contractDir = join(baseDir, 'tmp', 'public') + +const debug = require('debug')('jsonql-contract:test:debug-public') + +const generator = require('../index') + +test.before(async t => { + t.context.result = await generator({ + resolverDir, + contractDir, + + returnAs: 'json', + enableAuth: false + }) +}) + + +test.after(t => { + // fsx.removeSync(contractDir) +}) + +test(`the contract should contain resolver inside the pulic folder`, t => { + + debug(t.context.result) + + t.truthy(t.context.result.query.anyoneCanGetThis) +}) diff --git a/packages/node-client/tests/fixtures/jwt/contract.json b/packages/node-client/tests/fixtures/jwt/contract.json index cd53c3d74c14695a94b3d34ce24ce7b5deb42dec..136cadac9efdacdbe5bbf2dcc7a8ade5eb351f8d 100644 --- a/packages/node-client/tests/fixtures/jwt/contract.json +++ b/packages/node-client/tests/fixtures/jwt/contract.json @@ -102,7 +102,7 @@ ] } }, - "timestamp": 1577242325, + "timestamp": 1582268247, "sourceType": "script", "socket": { "gateway": {