UNPKG

obey

Version:

Data modelling and validation library

74 lines (65 loc) 2.06 kB
/* * Copyright (c) 2015 TechnologyAdvice */ const rules = require('./rules') const types = require('./types') const modifiers = require('./modifiers') const creators = require('./creators') const validators = require('./lib/validators') const ValidationError = require('./lib/error') const plugins = require('./lib/plugins') /** * The main object for Obey; exposes the core API methods for standard use as * well as the API for all other modules * @namespace obey */ module.exports = { /** * API, exposes modules to make lib API accessible */ rules, types, modifiers, creators, validators, ValidationError, /** * Returns a composed rule from a definition object * @memberof obey * @param {Object} def The rule definition * @returns {Object} */ rule: def => rules.build(def), /** * Returns a composed model from a definition object * @memberof obey * @param {Object} obj The definition object * @param {boolean} [strict=true] Whether or not to enforce strict validation * @returns {Object} */ model: (obj, strict = true) => rules.build({ type: 'object', keys: obj, strict }), /** * Creates and stores (or replaces) a type * @memberof obey * @param {string} name The name of the type * @param {Object|function} handler The type method or object of methods */ type: (name, handler) => types.add(name, handler), /** * Creates and stores a modifier * @memberof obey * @param {string} name The modifier's name * @param {function} fn The method for the modifier */ modifier: (name, fn) => modifiers.add(name, fn), /** * Creates and stores a creator * @memberof obey * @param {string} name The creator's name * @param {function} fn The method for the creator */ creator: (name, fn) => creators.add(name, fn), /** * Adds given package to plugins lib. * * @param {string} name The package name * @param {function|Object} pkg The package reference */ // TODO: make this actually useful use: (name, pkg) => plugins.add(name, pkg) }