apeman-app-validate
Version:
apeman app to do schema validation.
37 lines (33 loc) • 964 B
JavaScript
/**
* @function validateData
*/
const apemanerror = require('apemanerror')
const apemanschema = require('apemanschema')
/** @lends validateData */
function validateData (data, schema, options = {}) {
if (!data) {
let code = apemanerror.ApErrorCodes.RESOURCE_DATA_MISSING_ERROR
return apemanerror.newError(code, options.namespace, {
trigger: 'apeman-app-validate'
})
}
if (Array.isArray(data)) {
let errors = data
.map((data, i) => validateData(data, schema, options))
.filter((error) => !!error)
.reduce((a, b) => [].concat(a, b), [])
return errors.length > 0 ? errors : null
}
let errors = apemanschema.validate(data, schema)
if (!errors) {
return null
}
let $pointer = data.$pointer || '/'
return errors.map((error) => {
let pointer = error.source.pointer
error.source.pointer = [ '/', $pointer, pointer ].join('/')
return error
})
}
module.exports = validateData