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