diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/schema-utils/src | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/schema-utils/src')
| -rw-r--r-- | node_modules/schema-utils/src/ValidationError.js | 25 | ||||
| -rw-r--r-- | node_modules/schema-utils/src/index.js | 9 | ||||
| -rw-r--r-- | node_modules/schema-utils/src/validateOptions.js | 37 |
3 files changed, 71 insertions, 0 deletions
diff --git a/node_modules/schema-utils/src/ValidationError.js b/node_modules/schema-utils/src/ValidationError.js new file mode 100644 index 00000000..21264b5c --- /dev/null +++ b/node_modules/schema-utils/src/ValidationError.js @@ -0,0 +1,25 @@ +/* eslint-disable + strict +*/ + +'use strict'; + +class ValidationError extends Error { + constructor(errors, name) { + super(); + + this.name = 'ValidationError'; + + this.message = `${name || ''} Invalid Options\n\n`; + + errors.forEach((err) => { + this.message += `options${err.dataPath} ${err.message}\n`; + }); + + this.errors = errors; + + Error.captureStackTrace(this, this.constructor); + } +} + +module.exports = ValidationError; diff --git a/node_modules/schema-utils/src/index.js b/node_modules/schema-utils/src/index.js new file mode 100644 index 00000000..13108c21 --- /dev/null +++ b/node_modules/schema-utils/src/index.js @@ -0,0 +1,9 @@ +/* eslint-disable + strict +*/ + +'use strict'; + +const validateOptions = require('./validateOptions'); + +module.exports = validateOptions; diff --git a/node_modules/schema-utils/src/validateOptions.js b/node_modules/schema-utils/src/validateOptions.js new file mode 100644 index 00000000..f6d9f22f --- /dev/null +++ b/node_modules/schema-utils/src/validateOptions.js @@ -0,0 +1,37 @@ +/* eslint-disable + strict, + no-param-reassign +*/ + +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +const Ajv = require('ajv'); +const ajvKeywords = require('ajv-keywords'); + +const ValidationError = require('./ValidationError'); + +const ajv = new Ajv({ + allErrors: true, + useDefaults: true, + errorDataPath: 'property', +}); + +ajvKeywords(ajv, ['instanceof', 'typeof']); + +const validateOptions = (schema, options, name) => { + if (typeof schema === 'string') { + schema = fs.readFileSync(path.resolve(schema), 'utf8'); + schema = JSON.parse(schema); + } + + if (!ajv.validate(schema, options)) { + throw new ValidationError(ajv.errors, name); + } + + return true; +}; + +module.exports = validateOptions; |
