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