109 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			109 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
{{# def.definitions }}
 | 
						|
{{# def.errors }}
 | 
						|
{{# def.missing }}
 | 
						|
{{# def.setupKeyword }}
 | 
						|
{{# def.$data }}
 | 
						|
 | 
						|
{{ var $vSchema = 'schema' + $lvl; }}
 | 
						|
 | 
						|
{{## def.setupLoop:
 | 
						|
  {{? !$isData }}
 | 
						|
    var {{=$vSchema}} = validate.schema{{=$schemaPath}};
 | 
						|
  {{?}}
 | 
						|
 | 
						|
  {{
 | 
						|
    var $i = 'i' + $lvl
 | 
						|
      , $propertyPath = 'schema' + $lvl + '[' + $i + ']'
 | 
						|
      , $missingProperty = '\' + ' + $propertyPath + ' + \'';
 | 
						|
    if (it.opts._errorDataPathProperty) {
 | 
						|
      it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
 | 
						|
    }
 | 
						|
  }}
 | 
						|
#}}
 | 
						|
 | 
						|
 | 
						|
{{## def.isRequiredOwnProperty:
 | 
						|
  Object.prototype.hasOwnProperty.call({{=$data}}, {{=$vSchema}}[{{=$i}}])
 | 
						|
#}}
 | 
						|
 | 
						|
 | 
						|
{{? !$isData }}
 | 
						|
  {{? $schema.length < it.opts.loopRequired &&
 | 
						|
      it.schema.properties && Object.keys(it.schema.properties).length }}
 | 
						|
    {{ var $required = []; }}
 | 
						|
    {{~ $schema:$property }}
 | 
						|
      {{ var $propertySch = it.schema.properties[$property]; }}
 | 
						|
      {{? !($propertySch && {{# def.nonEmptySchema:$propertySch}}) }}
 | 
						|
        {{ $required[$required.length] = $property; }}
 | 
						|
      {{?}}
 | 
						|
    {{~}}
 | 
						|
  {{??}}
 | 
						|
    {{ var $required = $schema; }}
 | 
						|
  {{?}}
 | 
						|
{{?}}
 | 
						|
 | 
						|
 | 
						|
{{? $isData || $required.length }}
 | 
						|
  {{
 | 
						|
    var $currentErrorPath = it.errorPath
 | 
						|
      , $loopRequired = $isData || $required.length >= it.opts.loopRequired
 | 
						|
      , $ownProperties = it.opts.ownProperties;
 | 
						|
  }}
 | 
						|
 | 
						|
  {{? $breakOnError }}
 | 
						|
    var missing{{=$lvl}};
 | 
						|
    {{? $loopRequired }}
 | 
						|
      {{# def.setupLoop }}
 | 
						|
      var {{=$valid}} = true;
 | 
						|
 | 
						|
      {{?$isData}}{{# def.check$dataIsArray }}{{?}}
 | 
						|
 | 
						|
      for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
 | 
						|
        {{=$valid}} = {{=$data}}[{{=$vSchema}}[{{=$i}}]] !== undefined
 | 
						|
                      {{? $ownProperties }}
 | 
						|
                        && {{# def.isRequiredOwnProperty }}
 | 
						|
                      {{?}};
 | 
						|
        if (!{{=$valid}}) break;
 | 
						|
      }
 | 
						|
 | 
						|
      {{? $isData }}  }  {{?}}
 | 
						|
 | 
						|
      {{# def.checkError:'required' }}
 | 
						|
      else {
 | 
						|
    {{??}}
 | 
						|
      if ({{# def.checkMissingProperty:$required }}) {
 | 
						|
        {{# def.errorMissingProperty:'required' }}
 | 
						|
      } else {
 | 
						|
    {{?}}
 | 
						|
  {{??}}
 | 
						|
    {{? $loopRequired }}
 | 
						|
      {{# def.setupLoop }}
 | 
						|
      {{? $isData }}
 | 
						|
        if ({{=$vSchema}} && !Array.isArray({{=$vSchema}})) {
 | 
						|
          {{# def.addError:'required' }}
 | 
						|
        } else if ({{=$vSchema}} !== undefined) {
 | 
						|
      {{?}}
 | 
						|
 | 
						|
      for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
 | 
						|
        if ({{=$data}}[{{=$vSchema}}[{{=$i}}]] === undefined
 | 
						|
            {{? $ownProperties }}
 | 
						|
              || !{{# def.isRequiredOwnProperty }}
 | 
						|
            {{?}}) {
 | 
						|
          {{# def.addError:'required' }}
 | 
						|
        }
 | 
						|
      }
 | 
						|
 | 
						|
      {{? $isData }}  }  {{?}}
 | 
						|
    {{??}}
 | 
						|
      {{~ $required:$propertyKey }}
 | 
						|
        {{# def.allErrorsMissingProperty:'required' }}
 | 
						|
      {{~}}
 | 
						|
    {{?}}
 | 
						|
  {{?}}
 | 
						|
 | 
						|
  {{ it.errorPath = $currentErrorPath; }}
 | 
						|
 | 
						|
{{?? $breakOnError }}
 | 
						|
  if (true) {
 | 
						|
{{?}}
 |