107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			107 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | {{# def.definitions }} | ||
|  | {{# def.errors }} | ||
|  | {{# def.setupKeyword }} | ||
|  | 
 | ||
|  | {{## def.skipFormat: | ||
|  |   {{? $breakOnError }} if (true) { {{?}} | ||
|  |   {{ return out; }} | ||
|  | #}} | ||
|  | 
 | ||
|  | {{? it.opts.format === false }}{{# def.skipFormat }}{{?}} | ||
|  | 
 | ||
|  | 
 | ||
|  | {{# def.$data }} | ||
|  | 
 | ||
|  | 
 | ||
|  | {{## def.$dataCheckFormat: | ||
|  |   {{# def.$dataNotType:'string' }} | ||
|  |   ({{? $unknownFormats != 'ignore' }} | ||
|  |      ({{=$schemaValue}} && !{{=$format}} | ||
|  |       {{? $allowUnknown }} | ||
|  |         && self._opts.unknownFormats.indexOf({{=$schemaValue}}) == -1 | ||
|  |       {{?}}) || | ||
|  |    {{?}} | ||
|  |    ({{=$format}} && {{=$formatType}} == '{{=$ruleType}}' | ||
|  |                  && !(typeof {{=$format}} == 'function' | ||
|  |                      ? {{? it.async}} | ||
|  |                         (async{{=$lvl}} ? await {{=$format}}({{=$data}}) : {{=$format}}({{=$data}})) | ||
|  |                        {{??}} | ||
|  |                         {{=$format}}({{=$data}}) | ||
|  |                        {{?}} | ||
|  |                      : {{=$format}}.test({{=$data}})))) | ||
|  | #}} | ||
|  | 
 | ||
|  | {{## def.checkFormat: | ||
|  |   {{ | ||
|  |     var $formatRef = 'formats' + it.util.getProperty($schema); | ||
|  |     if ($isObject) $formatRef += '.validate'; | ||
|  |   }} | ||
|  |   {{? typeof $format == 'function' }} | ||
|  |     {{=$formatRef}}({{=$data}}) | ||
|  |   {{??}} | ||
|  |     {{=$formatRef}}.test({{=$data}}) | ||
|  |   {{?}} | ||
|  | #}} | ||
|  | 
 | ||
|  | 
 | ||
|  | {{ | ||
|  |   var $unknownFormats = it.opts.unknownFormats | ||
|  |     , $allowUnknown = Array.isArray($unknownFormats); | ||
|  | }} | ||
|  | 
 | ||
|  | {{? $isData }} | ||
|  |   {{ | ||
|  |     var $format = 'format' + $lvl | ||
|  |       , $isObject = 'isObject' + $lvl | ||
|  |       , $formatType = 'formatType' + $lvl; | ||
|  |   }} | ||
|  |   var {{=$format}} = formats[{{=$schemaValue}}]; | ||
|  |   var {{=$isObject}} = typeof {{=$format}} == 'object' | ||
|  |                         && !({{=$format}} instanceof RegExp) | ||
|  |                         && {{=$format}}.validate; | ||
|  |   var {{=$formatType}} = {{=$isObject}} && {{=$format}}.type || 'string'; | ||
|  |   if ({{=$isObject}}) { | ||
|  |     {{? it.async}} | ||
|  |       var async{{=$lvl}} = {{=$format}}.async; | ||
|  |     {{?}} | ||
|  |     {{=$format}} = {{=$format}}.validate; | ||
|  |   } | ||
|  |   if ({{# def.$dataCheckFormat }}) { | ||
|  | {{??}} | ||
|  |   {{ var $format = it.formats[$schema]; }} | ||
|  |   {{? !$format }} | ||
|  |     {{? $unknownFormats == 'ignore' }} | ||
|  |       {{ it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); }} | ||
|  |       {{# def.skipFormat }} | ||
|  |     {{?? $allowUnknown && $unknownFormats.indexOf($schema) >= 0 }} | ||
|  |       {{# def.skipFormat }} | ||
|  |     {{??}} | ||
|  |       {{ throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); }} | ||
|  |     {{?}} | ||
|  |   {{?}} | ||
|  |   {{ | ||
|  |     var $isObject = typeof $format == 'object' | ||
|  |                     && !($format instanceof RegExp) | ||
|  |                     && $format.validate; | ||
|  |     var $formatType = $isObject && $format.type || 'string'; | ||
|  |     if ($isObject) { | ||
|  |       var $async = $format.async === true; | ||
|  |       $format = $format.validate; | ||
|  |     } | ||
|  |   }} | ||
|  |   {{? $formatType != $ruleType }} | ||
|  |     {{# def.skipFormat }} | ||
|  |   {{?}} | ||
|  |   {{? $async }} | ||
|  |     {{ | ||
|  |       if (!it.async) throw new Error('async format in sync schema'); | ||
|  |       var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate'; | ||
|  |     }} | ||
|  |     if (!(await {{=$formatRef}}({{=$data}}))) { | ||
|  |   {{??}} | ||
|  |     if (!{{# def.checkFormat }}) { | ||
|  |   {{?}} | ||
|  | {{?}} | ||
|  |     {{# def.error:'format' }} | ||
|  |   } {{? $breakOnError }} else { {{?}} |