chain-able
Version:
interfaces that describe their intentions.
43 lines (35 loc) • 4.22 kB
JavaScript
var ENV_DEVELOPMENT = require('../deps/env/dev')
var not = require('../deps/conditional/not')
var isFalse = require('../deps/is/false')
var withSpecification = require('../deps/encase/withSpecification')
var validatorBuilder = require('../deps/validators/validatorBuilder')
var encaseType = require('./encase')
// we'll be opinionated and say either `false` or `throw`
var spec = withSpecification(not(isFalse))
/**
* @pattern factory plugin
* @param {string} name
* @param {Object} parent
* @param {Object} built
* @return {void}
*/
module.exports = function validatorPlugin(name, parent, built) {
// core domain of this fn, used by validators and configured fns
var type = built.type
if (type) {
// if (ENV_DEVELOPMENT) {
// this.debugSteps('added built type')
// }
// create our validator in the factory,
var validator = validatorBuilder(type)
// then encase it, prepare a TypeError factory
var encase = encaseType(name, parent, built)
var validatorMethod = encase(validator, type, spec)
/* istanbul ignore next: dev */
if (ENV_DEVELOPMENT) {
validatorMethod.type = type
}
this.onCall(validatorMethod).onSet(validatorMethod)
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VzIjpbInR5cGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVOVl9ERVZFTE9QTUVOVCA9IHJlcXVpcmUoJy4uL2RlcHMvZW52L2RldicpXG5jb25zdCBub3QgPSByZXF1aXJlKCcuLi9kZXBzL2NvbmRpdGlvbmFsL25vdCcpXG5jb25zdCBpc0ZhbHNlID0gcmVxdWlyZSgnLi4vZGVwcy9pcy9mYWxzZScpXG5jb25zdCB3aXRoU3BlY2lmaWNhdGlvbiA9IHJlcXVpcmUoJy4uL2RlcHMvZW5jYXNlL3dpdGhTcGVjaWZpY2F0aW9uJylcbmNvbnN0IHZhbGlkYXRvckJ1aWxkZXIgPSByZXF1aXJlKCcuLi9kZXBzL3ZhbGlkYXRvcnMvdmFsaWRhdG9yQnVpbGRlcicpXG5jb25zdCBlbmNhc2VUeXBlID0gcmVxdWlyZSgnLi9lbmNhc2UnKVxuXG4vLyB3ZSdsbCBiZSBvcGluaW9uYXRlZCBhbmQgc2F5IGVpdGhlciBgZmFsc2VgIG9yIGB0aHJvd2BcbmNvbnN0IHNwZWMgPSB3aXRoU3BlY2lmaWNhdGlvbihub3QoaXNGYWxzZSkpXG5cbi8qKlxuICogQHBhdHRlcm4gZmFjdG9yeSBwbHVnaW5cbiAqIEBwYXJhbSAge3N0cmluZ30gbmFtZVxuICogQHBhcmFtICB7T2JqZWN0fSBwYXJlbnRcbiAqIEBwYXJhbSAge09iamVjdH0gYnVpbHRcbiAqIEByZXR1cm4ge3ZvaWR9XG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdmFsaWRhdG9yUGx1Z2luKG5hbWUsIHBhcmVudCwgYnVpbHQpIHtcbiAgLy8gY29yZSBkb21haW4gb2YgdGhpcyBmbiwgdXNlZCBieSB2YWxpZGF0b3JzIGFuZCBjb25maWd1cmVkIGZuc1xuICBjb25zdCB0eXBlID0gYnVpbHQudHlwZVxuXG4gIGlmICh0eXBlKSB7XG4gICAgLy8gaWYgKEVOVl9ERVZFTE9QTUVOVCkge1xuICAgIC8vICAgdGhpcy5kZWJ1Z1N0ZXBzKCdhZGRlZCBidWlsdCB0eXBlJylcbiAgICAvLyB9XG5cbiAgICAvLyBjcmVhdGUgb3VyIHZhbGlkYXRvciBpbiB0aGUgZmFjdG9yeSxcbiAgICBjb25zdCB2YWxpZGF0b3IgPSB2YWxpZGF0b3JCdWlsZGVyKHR5cGUpXG5cbiAgICAvLyB0aGVuIGVuY2FzZSBpdCwgcHJlcGFyZSBhIFR5cGVFcnJvciBmYWN0b3J5XG4gICAgY29uc3QgZW5jYXNlID0gZW5jYXNlVHlwZShuYW1lLCBwYXJlbnQsIGJ1aWx0KVxuICAgIGNvbnN0IHZhbGlkYXRvck1ldGhvZCA9IGVuY2FzZSh2YWxpZGF0b3IsIHR5cGUsIHNwZWMpXG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dDogZGV2ICovXG4gICAgaWYgKEVOVl9ERVZFTE9QTUVOVCkge1xuICAgICAgdmFsaWRhdG9yTWV0aG9kLnR5cGUgPSB0eXBlXG4gICAgfVxuXG4gICAgdGhpcy5vbkNhbGwodmFsaWRhdG9yTWV0aG9kKS5vblNldCh2YWxpZGF0b3JNZXRob2QpXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxlQUFlLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDO0FBQ2xEQSxHQUFLLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQztBQUM5Q0EsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDM0NBLEdBQUssQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsa0NBQWtDLENBQUM7QUFDckVBLEdBQUssQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMscUNBQXFDLENBQUM7QUFDdkVBLEdBQUssQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQzs7O0FBR3RDQSxHQUFLLENBQUMsSUFBSSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQzs7Ozs7Ozs7O0FBUzVDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxlQUFlLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7O0VBRTdEQSxHQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJOztFQUV2QixJQUFJLElBQUksRUFBRTs7Ozs7O0lBTVJBLEdBQUssQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDOzs7SUFHeENBLEdBQUssQ0FBQyxNQUFNLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDO0lBQzlDQSxHQUFLLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzs7O0lBR3JELElBQUksZUFBZSxFQUFFO01BQ25CLGVBQWUsQ0FBQyxJQUFJLEdBQUcsSUFBSTtLQUM1Qjs7SUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7R0FDcEQ7Q0FDRjsifQ==