From 8670db9cbaaf69f669e52ba90d0085b6868b153d Mon Sep 17 00:00:00 2001 From: Michael Schoonmaker Date: Fri, 9 Mar 2018 12:04:12 -0800 Subject: [PATCH 1/5] Update dependencies to latest. --- package.json | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index fd06a63..4202cfc 100644 --- a/package.json +++ b/package.json @@ -13,18 +13,19 @@ "author": "Michael Schoonmaker (https://www.schoonology.com/)", "license": "MIT", "dependencies": { - "cson": "^4.0.0", - "debug": "~2.3.3", + "cson": "~5.1.0", + "debug": "~3.1.0", "hummus": "~1.0.65", - "jstransformer-sass": "~0.1.0", + "jstransformer-sass": "~1.0.0", "marked": "~0.3.6", "minimist": "~1.2.0", - "moment": "~2.17.0", - "nightmare": "~2.8.1", + "moment": "~2.21.0", + "nightmare": "~3.0.0", "pug": "~2.0.0-beta6", "resume-schema": "0.0.16", "temp": "~0.8.3", - "traverse": "~0.6.6" + "traverse": "~0.6.6", + "z-schema": "~3.19.1" }, "devDependencies": {} } From 9d2edea91eefbd9f66f81e4ea2d01625c10cbd8e Mon Sep 17 00:00:00 2001 From: Michael Schoonmaker Date: Fri, 9 Mar 2018 12:53:20 -0800 Subject: [PATCH 2/5] Migrate validation to ajv. --- lib/cobbler.js | 7 +++---- lib/validate-against-schema.js | 24 ++++++++++++++++++++++++ package.json | 4 ++-- 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 lib/validate-against-schema.js diff --git a/lib/cobbler.js b/lib/cobbler.js index 262e845..1a65b6b 100644 --- a/lib/cobbler.js +++ b/lib/cobbler.js @@ -9,7 +9,7 @@ var nightmare = require('nightmare') var path = require('path') var traverse = require('traverse') var url = require('url') -var validator = require('z-schema') +var validateAgainstSchema = require('./validate-against-schema') var RESUME_SCHEMA = require('resume-schema/schema.json') module.exports = { @@ -35,8 +35,7 @@ module.exports = { } }) .then(data => { - return validator.validate(data, RESUME_SCHEMA) - .then(_ => data) + return validateAgainstSchema(RESUME_SCHEMA, data) }) .then(data => { debug('cobbler:load')('Data: %j', data) @@ -46,7 +45,7 @@ module.exports = { if (err.errors) { throw new Error([err.message].concat( err.errors.map(validationError => { - return validationError.path + ': ' + validationError.message + return validationError.dataPath + ': ' + validationError.message }) ).join('\n')) } diff --git a/lib/validate-against-schema.js b/lib/validate-against-schema.js new file mode 100644 index 0000000..36e7712 --- /dev/null +++ b/lib/validate-against-schema.js @@ -0,0 +1,24 @@ +var Ajv = require('ajv') + +// See https://github.com/epoberezkin/ajv#using-version-6 for an explanation +// of these settings, which are required because JSONResume uses draft-04. +var ajv = new Ajv({ + allErrors: true, + schemaId: 'id' +}) +ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json')) + +function validateAgainstSchema(schema, data) { + return Promise.resolve(ajv.validate(schema, data)) + .then(function (valid) { + if (!valid) { + var error = new Error('Validation failed') + error.errors = ajv.errors + throw error + } + + return data + }) +} + +module.exports = validateAgainstSchema diff --git a/package.json b/package.json index 4202cfc..b03bfa4 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "author": "Michael Schoonmaker (https://www.schoonology.com/)", "license": "MIT", "dependencies": { + "ajv": "~6.2.1", "cson": "~5.1.0", "debug": "~3.1.0", "hummus": "~1.0.65", @@ -24,8 +25,7 @@ "pug": "~2.0.0-beta6", "resume-schema": "0.0.16", "temp": "~0.8.3", - "traverse": "~0.6.6", - "z-schema": "~3.19.1" + "traverse": "~0.6.6" }, "devDependencies": {} } From 9b9e7da10c651c2ae31c1114168882042ac9ce2d Mon Sep 17 00:00:00 2001 From: Michael Schoonmaker Date: Fri, 9 Mar 2018 13:10:36 -0800 Subject: [PATCH 3/5] Extend schema to enforce skill 'levels'. --- data/schema-ext.json | 19 +++++++++++++++++++ lib/cobbler.js | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 data/schema-ext.json diff --git a/data/schema-ext.json b/data/schema-ext.json new file mode 100644 index 0000000..55dbcc4 --- /dev/null +++ b/data/schema-ext.json @@ -0,0 +1,19 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "title": "Resume Schema Extension for Test Double", + "type": "object", + "properties": { + "skills": { + "type": "array", + "items": { + "type": "object", + "properties": { + "level": { + "type": "string", + "enum": ["Teaching others", "Pairing on", "Excited about"] + } + } + } + } + } +} diff --git a/lib/cobbler.js b/lib/cobbler.js index 1a65b6b..4c2d381 100644 --- a/lib/cobbler.js +++ b/lib/cobbler.js @@ -11,6 +11,7 @@ var traverse = require('traverse') var url = require('url') var validateAgainstSchema = require('./validate-against-schema') var RESUME_SCHEMA = require('resume-schema/schema.json') +var RESUME_SCHEMA_EXT = require('../data/schema-ext.json') module.exports = { // @@ -37,6 +38,9 @@ module.exports = { .then(data => { return validateAgainstSchema(RESUME_SCHEMA, data) }) + .then(data => { + return validateAgainstSchema(RESUME_SCHEMA_EXT, data) + }) .then(data => { debug('cobbler:load')('Data: %j', data) return data From e97278b3379789ccad499d9310ec1a5c0727b20b Mon Sep 17 00:00:00 2001 From: Michael Schoonmaker Date: Fri, 9 Mar 2018 13:10:44 -0800 Subject: [PATCH 4/5] Update styles for new level headers. --- assets/style.sass | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/style.sass b/assets/style.sass index 9efe285..d9ec750 100644 --- a/assets/style.sass +++ b/assets/style.sass @@ -100,8 +100,10 @@ section .skill-level th font-weight: $semibold-weight - padding-right: 2 * $grid-height + padding-right: $grid-height text-align: left + width: 6.4pc; + vertical-align: top; .block page-break-inside: avoid From 6213176f5c9547acbf48137b07b8327c21777e84 Mon Sep 17 00:00:00 2001 From: Michael Schoonmaker Date: Fri, 9 Mar 2018 13:16:10 -0800 Subject: [PATCH 5/5] Migrate to CSON-Parser. --- lib/cobbler.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cobbler.js b/lib/cobbler.js index 4c2d381..37b3381 100644 --- a/lib/cobbler.js +++ b/lib/cobbler.js @@ -1,6 +1,6 @@ var debug = require('debug') var fs = require('fs') -var CSON = require('cson') +var CSON = require('cson-parser') var hummus = require('hummus') var jade = require('pug') var marked = require('marked') diff --git a/package.json b/package.json index b03bfa4..9001d60 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "license": "MIT", "dependencies": { "ajv": "~6.2.1", - "cson": "~5.1.0", + "cson-parser": "~3.0.0", "debug": "~3.1.0", "hummus": "~1.0.65", "jstransformer-sass": "~1.0.0",