| 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 { {{?}}
 
- {{?}}
 
 
  |