ref.jst (2454B)
1 {{# def.definitions }} 2 {{# def.errors }} 3 {{# def.setupKeyword }} 4 5 {{## def._validateRef:_v: 6 {{? it.opts.passContext }} 7 {{=_v}}.call(this, 8 {{??}} 9 {{=_v}}( 10 {{?}} 11 {{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData) 12 #}} 13 14 {{ var $async, $refCode; }} 15 {{? $schema == '#' || $schema == '#/' }} 16 {{ 17 if (it.isRoot) { 18 $async = it.async; 19 $refCode = 'validate'; 20 } else { 21 $async = it.root.schema.$async === true; 22 $refCode = 'root.refVal[0]'; 23 } 24 }} 25 {{??}} 26 {{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }} 27 {{? $refVal === undefined }} 28 {{ var $message = it.MissingRefError.message(it.baseId, $schema); }} 29 {{? it.opts.missingRefs == 'fail' }} 30 {{ it.logger.error($message); }} 31 {{# def.error:'$ref' }} 32 {{? $breakOnError }} if (false) { {{?}} 33 {{?? it.opts.missingRefs == 'ignore' }} 34 {{ it.logger.warn($message); }} 35 {{? $breakOnError }} if (true) { {{?}} 36 {{??}} 37 {{ throw new it.MissingRefError(it.baseId, $schema, $message); }} 38 {{?}} 39 {{?? $refVal.inline }} 40 {{# def.setupNextLevel }} 41 {{ 42 $it.schema = $refVal.schema; 43 $it.schemaPath = ''; 44 $it.errSchemaPath = $schema; 45 }} 46 {{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }} 47 {{= $code }} 48 {{? $breakOnError}} 49 if ({{=$nextValid}}) { 50 {{?}} 51 {{??}} 52 {{ 53 $async = $refVal.$async === true || (it.async && $refVal.$async !== false); 54 $refCode = $refVal.code; 55 }} 56 {{?}} 57 {{?}} 58 59 {{? $refCode }} 60 {{# def.beginDefOut}} 61 {{# def._validateRef:$refCode }} 62 {{# def.storeDefOut:__callValidate }} 63 64 {{? $async }} 65 {{ if (!it.async) throw new Error('async schema referenced by sync schema'); }} 66 {{? $breakOnError }} var {{=$valid}}; {{?}} 67 try { 68 await {{=__callValidate}}; 69 {{? $breakOnError }} {{=$valid}} = true; {{?}} 70 } catch (e) { 71 if (!(e instanceof ValidationError)) throw e; 72 if (vErrors === null) vErrors = e.errors; 73 else vErrors = vErrors.concat(e.errors); 74 errors = vErrors.length; 75 {{? $breakOnError }} {{=$valid}} = false; {{?}} 76 } 77 {{? $breakOnError }} if ({{=$valid}}) { {{?}} 78 {{??}} 79 if (!{{=__callValidate}}) { 80 if (vErrors === null) vErrors = {{=$refCode}}.errors; 81 else vErrors = vErrors.concat({{=$refCode}}.errors); 82 errors = vErrors.length; 83 } {{? $breakOnError }} else { {{?}} 84 {{?}} 85 {{?}}