abolish
Version:
A javascript object validator.
89 lines (88 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.optional = exports.$inlineAsync = exports.$inline = void 0;
exports.$skip = $skip;
exports.skipIfUndefined = skipIfUndefined;
exports.skipIfNotDefined = skipIfNotDefined;
exports.required = required;
exports.requiredT = requiredT;
/**
* $inLine object generator
* @param fn
* @param $error
*/
const $inline = (fn, $error) => {
return $error ? { $inline: fn, $error } : { $inline: fn };
};
exports.$inline = $inline;
/**
* $inLineAsync object generator
*/
const $inlineAsync = (fn, $error) => {
return $error ? { $inlineAsync: fn, $error } : { $inlineAsync: fn };
};
exports.$inlineAsync = $inlineAsync;
/**
* Skip Rule Function Type
* @param fn
*/
function $skip(fn) {
return { $skip: fn };
}
/**
* Skip if undefined
* @param rule
*/
function skipIfUndefined(rule) {
if (!Array.isArray(rule))
rule = [rule];
return [$skip((v) => v === undefined)].concat(rule);
}
/**
* Skip if is undefined || null
* @param rule
*/
function skipIfNotDefined(rule) {
if (!Array.isArray(rule))
rule = [rule];
return [$skip((v) => v === undefined || v === null)].concat(rule);
}
/**
* Optional - alias for skipIfNotDefined
*/
exports.optional = skipIfNotDefined;
/**
* Required helper function.
* @example
* required("string")
* // is same as
* ["required", "string"]
*/
function required(rule) {
if (typeof rule === "string") {
// add `required` to rule
return "required|" + rule;
}
else if (Array.isArray(rule)) {
// add `required` to rule
return ["required", ...rule];
}
else if (typeof rule === "object") {
// add `required` to rule
return { required: true, ...rule };
}
else {
throw new Error("Required: Invalid Rule");
}
}
/**
* Required helper function for typed rules.
* @param rule
* @example
* requiredT("string")
* // is same as
* ["required", "string"]
*/
function requiredT(rule) {
return required(rule);
}