86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| {{# 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 { {{?}}
 | |
|   {{?}}
 | |
| {{?}}
 |