elmer-ui-core
Version:
web app framework
102 lines (101 loc) • 3.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTypeChecker = exports.EnumCheckerTypes = void 0;
var dataTypeValidators_1 = require("./validators/dataTypeValidators");
var EnumCheckerTypes;
(function (EnumCheckerTypes) {
EnumCheckerTypes["string"] = "string";
EnumCheckerTypes["number"] = "number";
EnumCheckerTypes["array"] = "array";
EnumCheckerTypes["any"] = "any";
EnumCheckerTypes["boolean"] = "boolean";
EnumCheckerTypes["bool"] = "bool";
EnumCheckerTypes["date"] = "date";
EnumCheckerTypes["func"] = "func";
EnumCheckerTypes["object"] = "object";
EnumCheckerTypes["oneOf"] = "oneOf";
EnumCheckerTypes["oneValueOf"] = "oneValueOf";
EnumCheckerTypes["oneEnumValueOf"] = "oneEnumValueOf";
})(EnumCheckerTypes = exports.EnumCheckerTypes || (exports.EnumCheckerTypes = {}));
function createRequiredChecker(type, validate) {
var factory = function (value, options) {
return validate(value, options);
};
factory.isRequired = (function (value, options) {
if (value === undefined || value === null) {
var errMsg = "属性值不能为undefined或null";
options && typeof options.error === "function" && options.error(errMsg);
return false;
}
return factory(value, options);
}).bind({ factory: factory });
factory.type = type;
factory.isRequired.type = type;
return factory;
}
function createDataTypeChecker(type) {
function onError(msg, fn) {
if (fn && typeof fn === "function") {
fn(msg);
}
else {
console.error(msg);
}
}
function dataTypeChecker(value, options) {
var validate = null;
var checkType = this.type;
switch (checkType) {
case EnumCheckerTypes.string: {
validate = dataTypeValidators_1.stringValidator;
break;
}
case EnumCheckerTypes.number: {
validate = dataTypeValidators_1.numberValidator;
break;
}
case EnumCheckerTypes.boolean: {
validate = dataTypeValidators_1.booleanValidator;
break;
}
case EnumCheckerTypes.bool: {
validate = dataTypeValidators_1.booleanValidator;
break;
}
case EnumCheckerTypes.array: {
validate = dataTypeValidators_1.arrayValidator;
break;
}
case EnumCheckerTypes.object: {
validate = dataTypeValidators_1.objectValidator;
break;
}
case EnumCheckerTypes.func: {
validate = dataTypeValidators_1.funcValidator;
break;
}
case EnumCheckerTypes.any: {
validate = dataTypeValidators_1.anyValidator;
break;
}
case EnumCheckerTypes.date: {
validate = dataTypeValidators_1.dateValidator;
break;
}
}
if (typeof validate === "function") {
if (!validate(value, options) && value !== undefined && value !== null) {
var lType = Object.prototype.toString.call(value);
!options.silence && onError("\u53C2\u6570\u7C7B\u578B\u4E0D\u5339\u914D,\u5B9A\u4E49\u7C7B\u578B[" + checkType + "]\uFF0C\u4F20\u5165\u503C\u7C7B\u578B" + lType + "\u3002" + options, (options ? options.error : null));
return false;
}
}
else {
!options.silence && onError(checkType + "未定义validate方法。", (options ? options.error : null));
return false;
}
return true;
}
return createRequiredChecker(type, dataTypeChecker.bind({ type: type }));
}
exports.createTypeChecker = createDataTypeChecker;