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