UNPKG

deep-package-manager

Version:
130 lines (112 loc) 2.19 kB
/** * Created by AlexanderC on 5/25/15. */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.JoiHelper = undefined; var _joi = require('joi'); var _joi2 = _interopRequireDefault(_joi); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Abstraction on Joi validation expressions */ class JoiHelper { /** * List expression * * @returns {*} */ static list() { return _joi2.default.array().required(); } /** * List expression with predefined values * * @param {Array} cases * @returns {*} */ static listEnum(cases) { return JoiHelper.list().allow(cases); } /** * String expression with predefined values * * @param {Array} cases * @returns {*} */ static stringEnum(cases) { return JoiHelper.string().allow(cases); } /** * Array of strings expression * * @param {Boolean} lowercase * @returns {*} */ static stringArray(lowercase = false) { let proto = _joi2.default.string(); if (lowercase) { proto.lowercase(); } return _joi2.default.array().items(proto); } /** * String or nothing expression * * @returns {String} */ static maybeString() { return _joi2.default.string().optional(); } /** * Semantical versioning expression * * @returns {*} */ static semver() { return JoiHelper.string().regex(/^.+$/); } /** * String expression * * @returns {*|String} */ static string() { return _joi2.default.string().required(); } /** * Boolean expression * * @returns {*} */ static bool() { return _joi2.default.boolean().required(); } /** * Alphanumeric expression * * @returns {*|String} */ static alnum() { return JoiHelper.string().alphanum(); } /** * Email expression * * @returns {*|{type, invalids, rules}} */ static email() { return JoiHelper.string().email(); } /** * Website expression * * @returns {*|{type, invalids, rules}} */ static website() { return JoiHelper.string().uri(); } } exports.JoiHelper = JoiHelper;