[d565449] | 1 | {{# def.definitions }}
|
---|
| 2 | {{# def.errors }}
|
---|
| 3 | {{# def.missing }}
|
---|
| 4 | {{# def.setupKeyword }}
|
---|
| 5 | {{# def.$data }}
|
---|
| 6 |
|
---|
| 7 | {{ var $vSchema = 'schema' + $lvl; }}
|
---|
| 8 |
|
---|
| 9 | {{## def.setupLoop:
|
---|
| 10 | {{? !$isData }}
|
---|
| 11 | var {{=$vSchema}} = validate.schema{{=$schemaPath}};
|
---|
| 12 | {{?}}
|
---|
| 13 |
|
---|
| 14 | {{
|
---|
| 15 | var $i = 'i' + $lvl
|
---|
| 16 | , $propertyPath = 'schema' + $lvl + '[' + $i + ']'
|
---|
| 17 | , $missingProperty = '\' + ' + $propertyPath + ' + \'';
|
---|
| 18 | if (it.opts._errorDataPathProperty) {
|
---|
| 19 | it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);
|
---|
| 20 | }
|
---|
| 21 | }}
|
---|
| 22 | #}}
|
---|
| 23 |
|
---|
| 24 |
|
---|
| 25 | {{## def.isRequiredOwnProperty:
|
---|
| 26 | Object.prototype.hasOwnProperty.call({{=$data}}, {{=$vSchema}}[{{=$i}}])
|
---|
| 27 | #}}
|
---|
| 28 |
|
---|
| 29 |
|
---|
| 30 | {{? !$isData }}
|
---|
| 31 | {{? $schema.length < it.opts.loopRequired &&
|
---|
| 32 | it.schema.properties && Object.keys(it.schema.properties).length }}
|
---|
| 33 | {{ var $required = []; }}
|
---|
| 34 | {{~ $schema:$property }}
|
---|
| 35 | {{ var $propertySch = it.schema.properties[$property]; }}
|
---|
| 36 | {{? !($propertySch && {{# def.nonEmptySchema:$propertySch}}) }}
|
---|
| 37 | {{ $required[$required.length] = $property; }}
|
---|
| 38 | {{?}}
|
---|
| 39 | {{~}}
|
---|
| 40 | {{??}}
|
---|
| 41 | {{ var $required = $schema; }}
|
---|
| 42 | {{?}}
|
---|
| 43 | {{?}}
|
---|
| 44 |
|
---|
| 45 |
|
---|
| 46 | {{? $isData || $required.length }}
|
---|
| 47 | {{
|
---|
| 48 | var $currentErrorPath = it.errorPath
|
---|
| 49 | , $loopRequired = $isData || $required.length >= it.opts.loopRequired
|
---|
| 50 | , $ownProperties = it.opts.ownProperties;
|
---|
| 51 | }}
|
---|
| 52 |
|
---|
| 53 | {{? $breakOnError }}
|
---|
| 54 | var missing{{=$lvl}};
|
---|
| 55 | {{? $loopRequired }}
|
---|
| 56 | {{# def.setupLoop }}
|
---|
| 57 | var {{=$valid}} = true;
|
---|
| 58 |
|
---|
| 59 | {{?$isData}}{{# def.check$dataIsArray }}{{?}}
|
---|
| 60 |
|
---|
| 61 | for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
|
---|
| 62 | {{=$valid}} = {{=$data}}[{{=$vSchema}}[{{=$i}}]] !== undefined
|
---|
| 63 | {{? $ownProperties }}
|
---|
| 64 | && {{# def.isRequiredOwnProperty }}
|
---|
| 65 | {{?}};
|
---|
| 66 | if (!{{=$valid}}) break;
|
---|
| 67 | }
|
---|
| 68 |
|
---|
| 69 | {{? $isData }} } {{?}}
|
---|
| 70 |
|
---|
| 71 | {{# def.checkError:'required' }}
|
---|
| 72 | else {
|
---|
| 73 | {{??}}
|
---|
| 74 | if ({{# def.checkMissingProperty:$required }}) {
|
---|
| 75 | {{# def.errorMissingProperty:'required' }}
|
---|
| 76 | } else {
|
---|
| 77 | {{?}}
|
---|
| 78 | {{??}}
|
---|
| 79 | {{? $loopRequired }}
|
---|
| 80 | {{# def.setupLoop }}
|
---|
| 81 | {{? $isData }}
|
---|
| 82 | if ({{=$vSchema}} && !Array.isArray({{=$vSchema}})) {
|
---|
| 83 | {{# def.addError:'required' }}
|
---|
| 84 | } else if ({{=$vSchema}} !== undefined) {
|
---|
| 85 | {{?}}
|
---|
| 86 |
|
---|
| 87 | for (var {{=$i}} = 0; {{=$i}} < {{=$vSchema}}.length; {{=$i}}++) {
|
---|
| 88 | if ({{=$data}}[{{=$vSchema}}[{{=$i}}]] === undefined
|
---|
| 89 | {{? $ownProperties }}
|
---|
| 90 | || !{{# def.isRequiredOwnProperty }}
|
---|
| 91 | {{?}}) {
|
---|
| 92 | {{# def.addError:'required' }}
|
---|
| 93 | }
|
---|
| 94 | }
|
---|
| 95 |
|
---|
| 96 | {{? $isData }} } {{?}}
|
---|
| 97 | {{??}}
|
---|
| 98 | {{~ $required:$propertyKey }}
|
---|
| 99 | {{# def.allErrorsMissingProperty:'required' }}
|
---|
| 100 | {{~}}
|
---|
| 101 | {{?}}
|
---|
| 102 | {{?}}
|
---|
| 103 |
|
---|
| 104 | {{ it.errorPath = $currentErrorPath; }}
|
---|
| 105 |
|
---|
| 106 | {{?? $breakOnError }}
|
---|
| 107 | if (true) {
|
---|
| 108 | {{?}}
|
---|