@chief-editor/flow
Version:
Old核心数据流
1 lines • 1.56 kB
JavaScript
import{ValidateRule,ValidateType}from"@chief-editor/base";import{Validator}from"@co-hooks/validate";import{wrapFunction}from"../util/wrap";export function extractValidate(e,a){var t=a||{catchable:!1,needValidate:!1,rules:[]},r=t.catchable,n=void 0!==r&&r,i=t.needValidate,l=void 0!==i&&i,u=t.rules;if(!l||0===u.length){var o={partial:!1,valid:!0,msg:""};return{needValidate:l,catchable:n,func:function(){return Promise.resolve(o)}}}var d=new Validator(e);return d.updateRules(wrapValidate(e,u)),{needValidate:!!(a&&a.needValidate&&a.rules.length),catchable:!!a&&a.catchable,func:function(e,a,t){return d.updateValue(a,t),d.validate(e).then((function(){return d.getValidateInfo()}))}}}function wrapValidate(e,a){return a.map((function(a){var t={errorTip:a.errortip,trigger:a.trigger};switch(a.rule){case ValidateRule.FUNC:var r=t.fn?e.getHook(a.func):null,n=r||function(){return Promise.resolve()};t.fn=wrapFunction(n,e);break;case ValidateRule.MAX_COUNT:t.maxCount=a.maxCount;break;case ValidateRule.MIN_COUNT:t.minCount=a.minCount;break;case ValidateRule.MAX_LENGTH:t.maxLength=a.maxLength,t.maxLengthType=a.maxLengthType;break;case ValidateRule.MIN_LENGTH:t.minLength=a.minLength,t.minLengthType=a.minLengthType;break;case ValidateRule.REGEXP:t.regexp=a.regexp;break;case ValidateRule.REQUIRED:t.required=!0;break;case ValidateRule.TYPE:t.type=a.type,a.type===ValidateType.DATE&&(t.format=a.format)}return t}))}export function getDefaultValidate(){return{catchable:!1,needValidate:!1,func:function(){return Promise.resolve({partial:!1,valid:!0,msg:""})}}}