You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
85 lines
2.4 KiB
85 lines
2.4 KiB
{{# def.definitions }} |
|
{{# def.errors }} |
|
{{# def.setupKeyword }} |
|
|
|
{{## def._validateRef:_v: |
|
{{? it.opts.passContext }} |
|
{{=_v}}.call(this, |
|
{{??}} |
|
{{=_v}}( |
|
{{?}} |
|
{{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData) |
|
#}} |
|
|
|
{{ var $async, $refCode; }} |
|
{{? $schema == '#' || $schema == '#/' }} |
|
{{ |
|
if (it.isRoot) { |
|
$async = it.async; |
|
$refCode = 'validate'; |
|
} else { |
|
$async = it.root.schema.$async === true; |
|
$refCode = 'root.refVal[0]'; |
|
} |
|
}} |
|
{{??}} |
|
{{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }} |
|
{{? $refVal === undefined }} |
|
{{ var $message = it.MissingRefError.message(it.baseId, $schema); }} |
|
{{? it.opts.missingRefs == 'fail' }} |
|
{{ it.logger.error($message); }} |
|
{{# def.error:'$ref' }} |
|
{{? $breakOnError }} if (false) { {{?}} |
|
{{?? it.opts.missingRefs == 'ignore' }} |
|
{{ it.logger.warn($message); }} |
|
{{? $breakOnError }} if (true) { {{?}} |
|
{{??}} |
|
{{ throw new it.MissingRefError(it.baseId, $schema, $message); }} |
|
{{?}} |
|
{{?? $refVal.inline }} |
|
{{# def.setupNextLevel }} |
|
{{ |
|
$it.schema = $refVal.schema; |
|
$it.schemaPath = ''; |
|
$it.errSchemaPath = $schema; |
|
}} |
|
{{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }} |
|
{{= $code }} |
|
{{? $breakOnError}} |
|
if ({{=$nextValid}}) { |
|
{{?}} |
|
{{??}} |
|
{{ |
|
$async = $refVal.$async === true || (it.async && $refVal.$async !== false); |
|
$refCode = $refVal.code; |
|
}} |
|
{{?}} |
|
{{?}} |
|
|
|
{{? $refCode }} |
|
{{# def.beginDefOut}} |
|
{{# def._validateRef:$refCode }} |
|
{{# def.storeDefOut:__callValidate }} |
|
|
|
{{? $async }} |
|
{{ if (!it.async) throw new Error('async schema referenced by sync schema'); }} |
|
{{? $breakOnError }} var {{=$valid}}; {{?}} |
|
try { |
|
await {{=__callValidate}}; |
|
{{? $breakOnError }} {{=$valid}} = true; {{?}} |
|
} catch (e) { |
|
if (!(e instanceof ValidationError)) throw e; |
|
if (vErrors === null) vErrors = e.errors; |
|
else vErrors = vErrors.concat(e.errors); |
|
errors = vErrors.length; |
|
{{? $breakOnError }} {{=$valid}} = false; {{?}} |
|
} |
|
{{? $breakOnError }} if ({{=$valid}}) { {{?}} |
|
{{??}} |
|
if (!{{=__callValidate}}) { |
|
if (vErrors === null) vErrors = {{=$refCode}}.errors; |
|
else vErrors = vErrors.concat({{=$refCode}}.errors); |
|
errors = vErrors.length; |
|
} {{? $breakOnError }} else { {{?}} |
|
{{?}} |
|
{{?}}
|
|
|