86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
{{# def.definitions }}
 | 
						|
{{# def.errors }}
 | 
						|
{{# def.setupKeyword }}
 | 
						|
 | 
						|
{{## def._validateRef:_v:
 | 
						|
  {{? it.opts.passContext }}
 | 
						|
    {{=_v}}.call(this,
 | 
						|
  {{??}}
 | 
						|
    {{=_v}}(
 | 
						|
  {{?}}
 | 
						|
    {{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData)
 | 
						|
#}}
 | 
						|
 | 
						|
{{ var $async, $refCode; }}
 | 
						|
{{? $schema == '#' || $schema == '#/' }}
 | 
						|
  {{
 | 
						|
    if (it.isRoot) {
 | 
						|
      $async = it.async;
 | 
						|
      $refCode = 'validate';
 | 
						|
    } else {
 | 
						|
      $async = it.root.schema.$async === true;
 | 
						|
      $refCode = 'root.refVal[0]';
 | 
						|
    }
 | 
						|
  }}
 | 
						|
{{??}}
 | 
						|
  {{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }}
 | 
						|
  {{? $refVal === undefined }}
 | 
						|
    {{ var $message = it.MissingRefError.message(it.baseId, $schema); }}
 | 
						|
    {{? it.opts.missingRefs == 'fail' }}
 | 
						|
      {{ it.logger.error($message); }}
 | 
						|
      {{# def.error:'$ref' }}
 | 
						|
      {{? $breakOnError }} if (false) { {{?}}
 | 
						|
    {{?? it.opts.missingRefs == 'ignore' }}
 | 
						|
      {{ it.logger.warn($message); }}
 | 
						|
      {{? $breakOnError }} if (true) { {{?}}
 | 
						|
    {{??}}
 | 
						|
      {{ throw new it.MissingRefError(it.baseId, $schema, $message); }}
 | 
						|
    {{?}}
 | 
						|
  {{?? $refVal.inline }}
 | 
						|
    {{# def.setupNextLevel }}
 | 
						|
    {{
 | 
						|
      $it.schema = $refVal.schema;
 | 
						|
      $it.schemaPath = '';
 | 
						|
      $it.errSchemaPath = $schema;
 | 
						|
    }}
 | 
						|
    {{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }}
 | 
						|
    {{= $code }}
 | 
						|
    {{? $breakOnError}}
 | 
						|
      if ({{=$nextValid}}) {
 | 
						|
    {{?}}
 | 
						|
  {{??}}
 | 
						|
    {{
 | 
						|
      $async = $refVal.$async === true || (it.async && $refVal.$async !== false);
 | 
						|
      $refCode = $refVal.code;
 | 
						|
    }}
 | 
						|
  {{?}}
 | 
						|
{{?}}
 | 
						|
 | 
						|
{{? $refCode }}
 | 
						|
  {{# def.beginDefOut}}
 | 
						|
    {{# def._validateRef:$refCode }}
 | 
						|
  {{# def.storeDefOut:__callValidate }}
 | 
						|
 | 
						|
  {{? $async }}
 | 
						|
    {{ if (!it.async) throw new Error('async schema referenced by sync schema'); }}
 | 
						|
    {{? $breakOnError }} var {{=$valid}}; {{?}}
 | 
						|
    try {
 | 
						|
      await {{=__callValidate}};
 | 
						|
      {{? $breakOnError }} {{=$valid}} = true; {{?}}
 | 
						|
    } catch (e) {
 | 
						|
      if (!(e instanceof ValidationError)) throw e;
 | 
						|
      if (vErrors === null) vErrors = e.errors;
 | 
						|
      else vErrors = vErrors.concat(e.errors);
 | 
						|
      errors = vErrors.length;
 | 
						|
      {{? $breakOnError }} {{=$valid}} = false; {{?}}
 | 
						|
    }
 | 
						|
    {{? $breakOnError }} if ({{=$valid}}) { {{?}}
 | 
						|
  {{??}}
 | 
						|
    if (!{{=__callValidate}}) {
 | 
						|
      if (vErrors === null) vErrors = {{=$refCode}}.errors;
 | 
						|
      else vErrors = vErrors.concat({{=$refCode}}.errors);
 | 
						|
      errors = vErrors.length;
 | 
						|
    } {{? $breakOnError }} else { {{?}}
 | 
						|
  {{?}}
 | 
						|
{{?}}
 |