elmer-ui-core
Version:
web app framework
78 lines (77 loc) • 3.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createParamChecker = void 0;
var typeChecker_1 = require("./typeChecker");
var dataTypeValidators_1 = require("./validators/dataTypeValidators");
function onError(msg, fn, params) {
if (fn && typeof fn === "function") {
fn(msg, params);
}
else {
console.error(msg, params);
}
}
function createParamTypeChecker(checkerType, types) {
function factory(value, options) {
var cType = factory.type;
var exOptions = options ? options : {
error: null
};
var validate = null;
switch (cType) {
case typeChecker_1.EnumCheckerTypes.oneOf: {
validate = dataTypeValidators_1.oneOfValidator;
break;
}
case typeChecker_1.EnumCheckerTypes.oneValueOf: {
validate = dataTypeValidators_1.oneValueOfValidator;
break;
}
case typeChecker_1.EnumCheckerTypes.oneEnumValueOf: {
validate = dataTypeValidators_1.oneEnumValueOfValidator;
break;
}
}
exOptions.silence = true;
if (typeof validate === "function") {
if (!validate(value, factory.checkers, exOptions) && value !== undefined && value !== null) {
var lType = Object.prototype.toString.call(value);
var checkTypes_1 = [];
types.map(function (tmpChecker) {
checkTypes_1.push(tmpChecker.type);
});
var checkTypesStr = checkTypes_1.join(",");
onError("\u53C2\u6570\u7C7B\u578B\u4E0D\u5339\u914D,\u5B9A\u4E49\u7C7B\u578B[" + cType + "(" + checkTypesStr + ")]\uFF0C\u4F20\u5165\u503C\u7C7B\u578B" + lType + "\u3002", (options ? options.error : null), types);
return false;
}
}
else {
onError(cType + "未定义validate方法。", (options ? options.error : null), types);
return false;
}
return true;
}
factory.isRequired = function (value, options) {
if (value === undefined || value === null || (typeof value === "string" && value.length <= 0)) {
var errMsg = "属性值不能为undefined或null";
options && typeof options.error === "function" && options.error(errMsg);
return false;
}
else {
return factory(value, options);
}
};
factory.isRequired.type = checkerType;
function factoryParamTypeChecker(myCheckerType, checkers) {
if (!checkers || checkers.length <= 0) {
throw new Error("设置错误,至少设置一个数据类型检查规则。");
}
else {
factory.checkers = checkers;
factory.type = myCheckerType;
return factory;
}
}
return factoryParamTypeChecker(checkerType, types);
}
exports.createParamChecker = createParamTypeChecker;