Spaces:
Sleeping
Sleeping
| {{# def.definitions }} | |
| {{# def.errors }} | |
| {{# def.setupKeyword }} | |
| {{# def.setupNextLevel }} | |
| {{## def.validateAdditional: | |
| {{ /* additionalProperties is schema */ | |
| $it.schema = $aProperties; | |
| $it.schemaPath = it.schemaPath + '.additionalProperties'; | |
| $it.errSchemaPath = it.errSchemaPath + '/additionalProperties'; | |
| $it.errorPath = it.opts._errorDataPathProperty | |
| ? it.errorPath | |
| : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); | |
| var $passData = $data + '[' + $key + ']'; | |
| $it.dataPathArr[$dataNxt] = $key; | |
| }} | |
| {{# def.generateSubschemaCode }} | |
| {{# def.optimizeValidate }} | |
| #}} | |
| {{ | |
| var $key = 'key' + $lvl | |
| , $idx = 'idx' + $lvl | |
| , $dataNxt = $it.dataLevel = it.dataLevel + 1 | |
| , $nextData = 'data' + $dataNxt | |
| , $dataProperties = 'dataProperties' + $lvl; | |
| var $schemaKeys = Object.keys($schema || {}).filter(notProto) | |
| , $pProperties = it.schema.patternProperties || {} | |
| , $pPropertyKeys = Object.keys($pProperties).filter(notProto) | |
| , $aProperties = it.schema.additionalProperties | |
| , $someProperties = $schemaKeys.length || $pPropertyKeys.length | |
| , $noAdditional = $aProperties === false | |
| , $additionalIsSchema = typeof $aProperties == 'object' | |
| && Object.keys($aProperties).length | |
| , $removeAdditional = it.opts.removeAdditional | |
| , $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional | |
| , $ownProperties = it.opts.ownProperties | |
| , $currentBaseId = it.baseId; | |
| var $required = it.schema.required; | |
| if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) { | |
| var $requiredHash = it.util.toHash($required); | |
| } | |
| function notProto(p) { return p !== '__proto__'; } | |
| }} | |
| var {{=$errs}} = errors; | |
| var {{=$nextValid}} = true; | |
| {{? $ownProperties }} | |
| var {{=$dataProperties}} = undefined; | |
| {{?}} | |
| {{? $checkAdditional }} | |
| {{# def.iterateProperties }} | |
| {{? $someProperties }} | |
| var isAdditional{{=$lvl}} = !(false | |
| {{? $schemaKeys.length }} | |
| {{? $schemaKeys.length > 8 }} | |
| || validate.schema{{=$schemaPath}}.hasOwnProperty({{=$key}}) | |
| {{??}} | |
| {{~ $schemaKeys:$propertyKey }} | |
| || {{=$key}} == {{= it.util.toQuotedString($propertyKey) }} | |
| {{~}} | |
| {{?}} | |
| {{?}} | |
| {{? $pPropertyKeys.length }} | |
| {{~ $pPropertyKeys:$pProperty:$i }} | |
| || {{= it.usePattern($pProperty) }}.test({{=$key}}) | |
| {{~}} | |
| {{?}} | |
| ); | |
| if (isAdditional{{=$lvl}}) { | |
| {{?}} | |
| {{? $removeAdditional == 'all' }} | |
| delete {{=$data}}[{{=$key}}]; | |
| {{??}} | |
| {{ | |
| var $currentErrorPath = it.errorPath; | |
| var $additionalProperty = '\' + ' + $key + ' + \''; | |
| if (it.opts._errorDataPathProperty) { | |
| it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); | |
| } | |
| }} | |
| {{? $noAdditional }} | |
| {{? $removeAdditional }} | |
| delete {{=$data}}[{{=$key}}]; | |
| {{??}} | |
| {{=$nextValid}} = false; | |
| {{ | |
| var $currErrSchemaPath = $errSchemaPath; | |
| $errSchemaPath = it.errSchemaPath + '/additionalProperties'; | |
| }} | |
| {{# def.error:'additionalProperties' }} | |
| {{ $errSchemaPath = $currErrSchemaPath; }} | |
| {{? $breakOnError }} break; {{?}} | |
| {{?}} | |
| {{?? $additionalIsSchema }} | |
| {{? $removeAdditional == 'failing' }} | |
| var {{=$errs}} = errors; | |
| {{# def.setCompositeRule }} | |
| {{# def.validateAdditional }} | |
| if (!{{=$nextValid}}) { | |
| errors = {{=$errs}}; | |
| if (validate.errors !== null) { | |
| if (errors) validate.errors.length = errors; | |
| else validate.errors = null; | |
| } | |
| delete {{=$data}}[{{=$key}}]; | |
| } | |
| {{# def.resetCompositeRule }} | |
| {{??}} | |
| {{# def.validateAdditional }} | |
| {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}} | |
| {{?}} | |
| {{?}} | |
| {{ it.errorPath = $currentErrorPath; }} | |
| {{?}} | |
| {{? $someProperties }} | |
| } | |
| {{?}} | |
| } | |
| {{# def.ifResultValid }} | |
| {{?}} | |
| {{ var $useDefaults = it.opts.useDefaults && !it.compositeRule; }} | |
| {{? $schemaKeys.length }} | |
| {{~ $schemaKeys:$propertyKey }} | |
| {{ var $sch = $schema[$propertyKey]; }} | |
| {{? {{# def.nonEmptySchema:$sch}} }} | |
| {{ | |
| var $prop = it.util.getProperty($propertyKey) | |
| , $passData = $data + $prop | |
| , $hasDefault = $useDefaults && $sch.default !== undefined; | |
| $it.schema = $sch; | |
| $it.schemaPath = $schemaPath + $prop; | |
| $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey); | |
| $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers); | |
| $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey); | |
| }} | |
| {{# def.generateSubschemaCode }} | |
| {{? {{# def.willOptimize }} }} | |
| {{ | |
| $code = {{# def._optimizeValidate }}; | |
| var $useData = $passData; | |
| }} | |
| {{??}} | |
| {{ var $useData = $nextData; }} | |
| var {{=$nextData}} = {{=$passData}}; | |
| {{?}} | |
| {{? $hasDefault }} | |
| {{= $code }} | |
| {{??}} | |
| {{? $requiredHash && $requiredHash[$propertyKey] }} | |
| if ({{# def.noPropertyInData }}) { | |
| {{=$nextValid}} = false; | |
| {{ | |
| var $currentErrorPath = it.errorPath | |
| , $currErrSchemaPath = $errSchemaPath | |
| , $missingProperty = it.util.escapeQuotes($propertyKey); | |
| if (it.opts._errorDataPathProperty) { | |
| it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers); | |
| } | |
| $errSchemaPath = it.errSchemaPath + '/required'; | |
| }} | |
| {{# def.error:'required' }} | |
| {{ $errSchemaPath = $currErrSchemaPath; }} | |
| {{ it.errorPath = $currentErrorPath; }} | |
| } else { | |
| {{??}} | |
| {{? $breakOnError }} | |
| if ({{# def.noPropertyInData }}) { | |
| {{=$nextValid}} = true; | |
| } else { | |
| {{??}} | |
| if ({{=$useData}} !== undefined | |
| {{? $ownProperties }} | |
| && {{# def.isOwnProperty }} | |
| {{?}} | |
| ) { | |
| {{?}} | |
| {{?}} | |
| {{= $code }} | |
| } | |
| {{?}} {{ /* $hasDefault */ }} | |
| {{?}} {{ /* def.nonEmptySchema */ }} | |
| {{# def.ifResultValid }} | |
| {{~}} | |
| {{?}} | |
| {{? $pPropertyKeys.length }} | |
| {{~ $pPropertyKeys:$pProperty }} | |
| {{ var $sch = $pProperties[$pProperty]; }} | |
| {{? {{# def.nonEmptySchema:$sch}} }} | |
| {{ | |
| $it.schema = $sch; | |
| $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty); | |
| $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' | |
| + it.util.escapeFragment($pProperty); | |
| }} | |
| {{# def.iterateProperties }} | |
| if ({{= it.usePattern($pProperty) }}.test({{=$key}})) { | |
| {{ | |
| $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers); | |
| var $passData = $data + '[' + $key + ']'; | |
| $it.dataPathArr[$dataNxt] = $key; | |
| }} | |
| {{# def.generateSubschemaCode }} | |
| {{# def.optimizeValidate }} | |
| {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}} | |
| } | |
| {{? $breakOnError }} else {{=$nextValid}} = true; {{?}} | |
| } | |
| {{# def.ifResultValid }} | |
| {{?}} {{ /* def.nonEmptySchema */ }} | |
| {{~}} | |
| {{?}} | |
| {{? $breakOnError }} | |
| {{= $closingBraces }} | |
| if ({{=$errs}} == errors) { | |
| {{?}} | |