UNPKG

obey

Version:

Data modelling and validation library

44 lines (39 loc) 1.25 kB
/* * Copyright (c) 2015 TechnologyAdvice */ /** * Modifiers allow for coercion/modification of a value present in the object * when validation occurs * @namespace modifiers */ const modifiers = { /** * @memberof modifiers * @property {Object} Library of modifiers */ lib: {}, /** * Execute method calls the appropriate modifier and passes in the value or * throws an error if the modifier does not exist * @memberof modifiers * @param {Object} def The property configuration * @param {*} value The value being validated * @returns {function} The return value of the modifier function */ execute: function(def, value) { if (modifiers.lib[def.modifier]) return modifiers.lib[def.modifier](value) throw new Error(`Modifier '${def.modifier}' does not exist`) }, /** * Adds new modifier to the library * @memberof modifiers * @param {string} name The name of the modifier * @param {function} fn The modifier's method */ add: (name, fn) => { if (typeof name !== 'string') throw new Error('Modifier name should be a string') if (typeof fn !== 'function') throw new Error('Modifier method should be a function') modifiers.lib[name] = fn } } module.exports = modifiers