From 26105034da4fcce7ac883c899d781f016559310d Mon Sep 17 00:00:00 2001 From: ruki Date: Thu, 8 Nov 2018 00:38:48 +0800 Subject: switch to vuepress --- node_modules/schema-utils/src/validateOptions.js | 37 ++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 node_modules/schema-utils/src/validateOptions.js (limited to 'node_modules/schema-utils/src/validateOptions.js') 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; -- cgit v1.2.3