UNPKG

abolish

Version:

A javascript object validator.

96 lines (95 loc) 2.31 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Rule = Rule; exports.RuleTyped = RuleTyped; exports.Schema = Schema; exports.SchemaTyped = SchemaTyped; const StringToRules_1 = __importDefault(require("./StringToRules")); /** * Converts an array of rules (string | object)[] to one object rule * @example * const rule = Rule(['required', {min: 10, max: 20}, '!exact']) * // will return * { required: true, min: 10, max: 20, exact: false } * * @param rules * @constructor */ function Rule(rules) { /** * Convert to array if not array. */ if (!Array.isArray(rules)) rules = [rules]; /** * Stores generated rules */ let generatedRule = {}; /** * Loop Through each rule * * 1. convert to object if string * 2. add rule to generatedRule object */ for (let rule of rules) { if (typeof rule === "string") rule = (0, StringToRules_1.default)(rule); generatedRule = { ...generatedRule, ...rule }; } return generatedRule; } /** * Typed version of Rule * @param rule * @constructor */ function RuleTyped(rule) { return Rule(rule); } /** * Parse object value as rule * @param rules * @constructor */ function Schema(rules) { /** * Stores generated rules */ let generatedRule = {}; /** * Loop Through each rule * * 1. convert to object if string * 2. add rule to generatedRule object */ for (let key of Object.keys(rules)) { let rule = rules[key]; /** * Exclude non rule related super keys e.g $include */ if (key === "$include") { generatedRule[key] = rule; } else { if (typeof rule === "string") { rule = (0, StringToRules_1.default)(rule); } else if (Array.isArray(rule)) { rule = Rule(rule); } generatedRule[key] = rule; } } return generatedRule; } /** * Parse object value as rule * @param rules * @constructor */ function SchemaTyped(rules) { return Schema(rules); }