UNPKG

elmer-ui-core

Version:

web app framework

102 lines (101 loc) 3.93 kB
"use strict"; 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;