UNPKG

@ant-basement/core

Version:

Ant Basement JavaScript SDK Core

60 lines 4.95 kB
(function (factory) { if (typeof module === "object" && typeof module.exports === "object") { var v = factory(require, exports); if (v !== undefined) module.exports = v; } else if (typeof define === "function" && define.amd) { define(["require", "exports", "tslib", "parameter", "./rules", "../error", "../constant"], factory); } })(function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const parameter_1 = tslib_1.__importDefault(require("parameter")); const rules_1 = require("./rules"); const error_1 = require("../error"); const constant_1 = require("../constant"); class Validator { constructor(options) { this.p = new parameter_1.default(options); for (const ruleName of Object.keys(rules_1.rules)) { const name = ruleName.match(/ruleOf([a-zA-Z]+)/)[1]; this.p.addRule(name[0].toLowerCase() + name.slice(1), rules_1.rules[ruleName]); } } validate(rules, obj) { if (typeof obj !== 'object' && typeof rules === 'string') { obj = { field: obj }; rules = { field: rules }; } const message = this.p.validate(rules, obj); if (!message) { return null; } const result = message.map(mistake => { if (mistake.field) { let target = JSON.parse(JSON.stringify(obj)); const fields = mistake.field.match(/[^\.\[\]]+/g); while (fields.length) { const field = fields.shift(); if (!target.hasOwnProperty(field)) { break; } target = target[field]; } mistake.value = target; } return mistake; }); function getMessage(result) { if (Array.isArray(result)) { return result.map(getMessage).join('; '); } return `${result.field} ${result.message}`; } throw new error_1.BasementClientError(constant_1.ErrorName.VALIDATION_ERROR, constant_1.ErrorCode.VALIDATION_FAILED, constant_1.ErrorType.COMMON_ERROR, getMessage(result)); } } exports.Validator = Validator; }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxpdHkvdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztJQUFBLGtFQUFrQztJQUNsQyxtQ0FBZ0M7SUFDaEMsb0NBQStDO0lBRS9DLDBDQUE4RDtJQUU5RCxNQUFhLFNBQVM7UUFFcEIsWUFBWSxPQUE0QjtZQUN0QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksbUJBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoQyxLQUFLLE1BQU0sUUFBUSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBSyxDQUFDLEVBQUU7Z0JBRXpDLE1BQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsYUFBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7YUFDeEU7UUFDSCxDQUFDO1FBUU0sUUFBUSxDQUFDLEtBQVUsRUFBRSxHQUFRO1lBRWxDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDeEQsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxDQUFDO2dCQUNyQixLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7YUFDMUI7WUFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDWixPQUFPLElBQUksQ0FBQzthQUNiO1lBR0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDbkMsSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO29CQUNqQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDN0MsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBRWxELE9BQU8sTUFBTSxDQUFDLE1BQU0sRUFBRTt3QkFDcEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTs0QkFDakMsTUFBTTt5QkFDUDt3QkFFRCxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN4QjtvQkFFRCxPQUFPLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztpQkFDeEI7Z0JBRUQsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7WUFFSCxTQUFTLFVBQVUsQ0FBQyxNQUFNO2dCQUN4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3pCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQzFDO2dCQUVELE9BQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QyxDQUFDO1lBRUQsTUFBTSxJQUFJLDJCQUFtQixDQUMzQixvQkFBUyxDQUFDLGdCQUFnQixFQUMxQixvQkFBUyxDQUFDLGlCQUFpQixFQUMzQixvQkFBUyxDQUFDLFlBQVksRUFDdEIsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUNuQixDQUFDO1FBQ0osQ0FBQztLQUNGO0lBbEVELDhCQWtFQyJ9