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