관리-도구
편집 파일: ref.jst
{{# 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; $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 { {{=it.yieldAwait}} {{=__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 { {{?}} {{?}} {{?}}