@ant-basement/core
Version:
Ant Basement JavaScript SDK Core
60 lines • 4.95 kB
JavaScript
(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