UNPKG

elmer-ui-core

Version:

web app framework

78 lines (77 loc) 3.04 kB
"use strict"; 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;