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