You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
637 B
33 lines
637 B
const { exit } = require('./exit') |
|
|
|
// proxy to joi for option validation |
|
exports.createSchema = fn => { |
|
const joi = require('joi') |
|
|
|
let schema = fn(joi) |
|
if (typeof schema === 'object' && typeof schema.validate !== 'function') { |
|
schema = joi.object(schema) |
|
} |
|
|
|
return schema |
|
} |
|
|
|
exports.validate = (obj, schema, cb) => { |
|
const { error } = schema.validate(obj) |
|
if (error) { |
|
cb(error.details[0].message) |
|
|
|
if (process.env.VUE_CLI_TEST) { |
|
throw error |
|
} else { |
|
exit(1) |
|
} |
|
} |
|
} |
|
|
|
exports.validateSync = (obj, schema) => { |
|
const { error } = schema.validate(obj) |
|
if (error) { |
|
throw error |
|
} |
|
}
|
|
|