[d565449] | 1 | {{# def.definitions }}
|
---|
| 2 | {{# def.errors }}
|
---|
| 3 | {{# def.setupKeyword }}
|
---|
| 4 |
|
---|
| 5 | {{## def.skipFormat:
|
---|
| 6 | {{? $breakOnError }} if (true) { {{?}}
|
---|
| 7 | {{ return out; }}
|
---|
| 8 | #}}
|
---|
| 9 |
|
---|
| 10 | {{? it.opts.format === false }}{{# def.skipFormat }}{{?}}
|
---|
| 11 |
|
---|
| 12 |
|
---|
| 13 | {{# def.$data }}
|
---|
| 14 |
|
---|
| 15 |
|
---|
| 16 | {{## def.$dataCheckFormat:
|
---|
| 17 | {{# def.$dataNotType:'string' }}
|
---|
| 18 | ({{? $unknownFormats != 'ignore' }}
|
---|
| 19 | ({{=$schemaValue}} && !{{=$format}}
|
---|
| 20 | {{? $allowUnknown }}
|
---|
| 21 | && self._opts.unknownFormats.indexOf({{=$schemaValue}}) == -1
|
---|
| 22 | {{?}}) ||
|
---|
| 23 | {{?}}
|
---|
| 24 | ({{=$format}} && {{=$formatType}} == '{{=$ruleType}}'
|
---|
| 25 | && !(typeof {{=$format}} == 'function'
|
---|
| 26 | ? {{? it.async}}
|
---|
| 27 | (async{{=$lvl}} ? await {{=$format}}({{=$data}}) : {{=$format}}({{=$data}}))
|
---|
| 28 | {{??}}
|
---|
| 29 | {{=$format}}({{=$data}})
|
---|
| 30 | {{?}}
|
---|
| 31 | : {{=$format}}.test({{=$data}}))))
|
---|
| 32 | #}}
|
---|
| 33 |
|
---|
| 34 | {{## def.checkFormat:
|
---|
| 35 | {{
|
---|
| 36 | var $formatRef = 'formats' + it.util.getProperty($schema);
|
---|
| 37 | if ($isObject) $formatRef += '.validate';
|
---|
| 38 | }}
|
---|
| 39 | {{? typeof $format == 'function' }}
|
---|
| 40 | {{=$formatRef}}({{=$data}})
|
---|
| 41 | {{??}}
|
---|
| 42 | {{=$formatRef}}.test({{=$data}})
|
---|
| 43 | {{?}}
|
---|
| 44 | #}}
|
---|
| 45 |
|
---|
| 46 |
|
---|
| 47 | {{
|
---|
| 48 | var $unknownFormats = it.opts.unknownFormats
|
---|
| 49 | , $allowUnknown = Array.isArray($unknownFormats);
|
---|
| 50 | }}
|
---|
| 51 |
|
---|
| 52 | {{? $isData }}
|
---|
| 53 | {{
|
---|
| 54 | var $format = 'format' + $lvl
|
---|
| 55 | , $isObject = 'isObject' + $lvl
|
---|
| 56 | , $formatType = 'formatType' + $lvl;
|
---|
| 57 | }}
|
---|
| 58 | var {{=$format}} = formats[{{=$schemaValue}}];
|
---|
| 59 | var {{=$isObject}} = typeof {{=$format}} == 'object'
|
---|
| 60 | && !({{=$format}} instanceof RegExp)
|
---|
| 61 | && {{=$format}}.validate;
|
---|
| 62 | var {{=$formatType}} = {{=$isObject}} && {{=$format}}.type || 'string';
|
---|
| 63 | if ({{=$isObject}}) {
|
---|
| 64 | {{? it.async}}
|
---|
| 65 | var async{{=$lvl}} = {{=$format}}.async;
|
---|
| 66 | {{?}}
|
---|
| 67 | {{=$format}} = {{=$format}}.validate;
|
---|
| 68 | }
|
---|
| 69 | if ({{# def.$dataCheckFormat }}) {
|
---|
| 70 | {{??}}
|
---|
| 71 | {{ var $format = it.formats[$schema]; }}
|
---|
| 72 | {{? !$format }}
|
---|
| 73 | {{? $unknownFormats == 'ignore' }}
|
---|
| 74 | {{ it.logger.warn('unknown format "' + $schema + '" ignored in schema at path "' + it.errSchemaPath + '"'); }}
|
---|
| 75 | {{# def.skipFormat }}
|
---|
| 76 | {{?? $allowUnknown && $unknownFormats.indexOf($schema) >= 0 }}
|
---|
| 77 | {{# def.skipFormat }}
|
---|
| 78 | {{??}}
|
---|
| 79 | {{ throw new Error('unknown format "' + $schema + '" is used in schema at path "' + it.errSchemaPath + '"'); }}
|
---|
| 80 | {{?}}
|
---|
| 81 | {{?}}
|
---|
| 82 | {{
|
---|
| 83 | var $isObject = typeof $format == 'object'
|
---|
| 84 | && !($format instanceof RegExp)
|
---|
| 85 | && $format.validate;
|
---|
| 86 | var $formatType = $isObject && $format.type || 'string';
|
---|
| 87 | if ($isObject) {
|
---|
| 88 | var $async = $format.async === true;
|
---|
| 89 | $format = $format.validate;
|
---|
| 90 | }
|
---|
| 91 | }}
|
---|
| 92 | {{? $formatType != $ruleType }}
|
---|
| 93 | {{# def.skipFormat }}
|
---|
| 94 | {{?}}
|
---|
| 95 | {{? $async }}
|
---|
| 96 | {{
|
---|
| 97 | if (!it.async) throw new Error('async format in sync schema');
|
---|
| 98 | var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';
|
---|
| 99 | }}
|
---|
| 100 | if (!(await {{=$formatRef}}({{=$data}}))) {
|
---|
| 101 | {{??}}
|
---|
| 102 | if (!{{# def.checkFormat }}) {
|
---|
| 103 | {{?}}
|
---|
| 104 | {{?}}
|
---|
| 105 | {{# def.error:'format' }}
|
---|
| 106 | } {{? $breakOnError }} else { {{?}}
|
---|