Spaces:
Runtime error
Runtime error
{{# 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) { | |
{{?}} | |