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