diff options
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; |
