123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- {{# def.definitions }}
- {{# def.errors }}
- {{# def.setupKeyword }}
- {{# def.$data }}
- {{
- var $rule = this
- , $definition = 'definition' + $lvl
- , $rDef = $rule.definition
- , $closingBraces = '';
- var $validate = $rDef.validate;
- var $compile, $inline, $macro, $ruleValidate, $validateCode;
- }}
- {{? $isData && $rDef.$data }}
- {{
- $validateCode = 'keywordValidate' + $lvl;
- var $validateSchema = $rDef.validateSchema;
- }}
- var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
- var {{=$validateCode}} = {{=$definition}}.validate;
- {{??}}
- {{
- $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
- if (!$ruleValidate) return;
- $schemaValue = 'validate.schema' + $schemaPath;
- $validateCode = $ruleValidate.code;
- $compile = $rDef.compile;
- $inline = $rDef.inline;
- $macro = $rDef.macro;
- }}
- {{?}}
- {{
- var $ruleErrs = $validateCode + '.errors'
- , $i = 'i' + $lvl
- , $ruleErr = 'ruleErr' + $lvl
- , $asyncKeyword = $rDef.async;
- if ($asyncKeyword && !it.async)
- throw new Error('async keyword in sync schema');
- }}
- {{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
- var {{=$errs}} = errors;
- var {{=$valid}};
- {{## def.callRuleValidate:
- {{=$validateCode}}.call(
- {{? it.opts.passContext }}this{{??}}self{{?}}
- {{? $compile || $rDef.schema === false }}
- , {{=$data}}
- {{??}}
- , {{=$schemaValue}}
- , {{=$data}}
- , validate.schema{{=it.schemaPath}}
- {{?}}
- , {{# def.dataPath }}
- {{# def.passParentData }}
- , rootData
- )
- #}}
- {{## def.extendErrors:_inline:
- for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
- var {{=$ruleErr}} = vErrors[{{=$i}}];
- if ({{=$ruleErr}}.dataPath === undefined)
- {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
- {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
- {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
- {{# _inline ? '}' : '' }}
- {{? it.opts.verbose }}
- {{=$ruleErr}}.schema = {{=$schemaValue}};
- {{=$ruleErr}}.data = {{=$data}};
- {{?}}
- }
- #}}
- {{? $isData && $rDef.$data }}
- {{ $closingBraces += '}'; }}
- if ({{=$schemaValue}} === undefined) {
- {{=$valid}} = true;
- } else {
- {{? $validateSchema }}
- {{ $closingBraces += '}'; }}
- {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
- if ({{=$valid}}) {
- {{?}}
- {{?}}
- {{? $inline }}
- {{? $rDef.statements }}
- {{= $ruleValidate.validate }}
- {{??}}
- {{=$valid}} = {{= $ruleValidate.validate }};
- {{?}}
- {{?? $macro }}
- {{# def.setupNextLevel }}
- {{
- $it.schema = $ruleValidate.validate;
- $it.schemaPath = '';
- }}
- {{# def.setCompositeRule }}
- {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
- {{# def.resetCompositeRule }}
- {{= $code }}
- {{??}}
- {{# def.beginDefOut}}
- {{# def.callRuleValidate }}
- {{# def.storeDefOut:def_callRuleValidate }}
- {{? $rDef.errors === false }}
- {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
- {{??}}
- {{? $asyncKeyword }}
- {{ $ruleErrs = 'customErrors' + $lvl; }}
- var {{=$ruleErrs}} = null;
- try {
- {{=$valid}} = await {{= def_callRuleValidate }};
- } catch (e) {
- {{=$valid}} = false;
- if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
- else throw e;
- }
- {{??}}
- {{=$ruleErrs}} = null;
- {{=$valid}} = {{= def_callRuleValidate }};
- {{?}}
- {{?}}
- {{?}}
- {{? $rDef.modifying }}
- if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
- {{?}}
- {{= $closingBraces }}
- {{## def.notValidationResult:
- {{? $rDef.valid === undefined }}
- !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
- {{??}}
- {{= !$rDef.valid }}
- {{?}}
- #}}
- {{? $rDef.valid }}
- {{? $breakOnError }} if (true) { {{?}}
- {{??}}
- if ({{# def.notValidationResult }}) {
- {{ $errorKeyword = $rule.keyword; }}
- {{# def.beginDefOut}}
- {{# def.error:'custom' }}
- {{# def.storeDefOut:def_customError }}
- {{? $inline }}
- {{? $rDef.errors }}
- {{? $rDef.errors != 'full' }}
- {{# def.extendErrors:true }}
- {{?}}
- {{??}}
- {{? $rDef.errors === false}}
- {{= def_customError }}
- {{??}}
- if ({{=$errs}} == errors) {
- {{= def_customError }}
- } else {
- {{# def.extendErrors:true }}
- }
- {{?}}
- {{?}}
- {{?? $macro }}
- {{# def.extraError:'custom' }}
- {{??}}
- {{? $rDef.errors === false}}
- {{= def_customError }}
- {{??}}
- if (Array.isArray({{=$ruleErrs}})) {
- if (vErrors === null) vErrors = {{=$ruleErrs}};
- else vErrors = vErrors.concat({{=$ruleErrs}});
- errors = vErrors.length;
- {{# def.extendErrors:false }}
- } else {
- {{= def_customError }}
- }
- {{?}}
- {{?}}
- } {{? $breakOnError }} else { {{?}}
- {{?}}
|