deep-package-manager
Version:
DEEP Package Manager
130 lines (112 loc) • 2.19 kB
JavaScript
/**
* Created by AlexanderC on 5/25/15.
*/
;
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;