An error occurred while loading the file. Please try again.
custom.jst 4.83 KiB
{{# 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 { {{?}} {{?}}