optimised generated code for all keywords
parent
804627efe4
commit
80b04dfc4c
|
@ -31,7 +31,8 @@ function compile(schema, _rootSchema) {
|
|||
util: util,
|
||||
resolve: resolve,
|
||||
resolveRef: resolveRef,
|
||||
opts: this.opts
|
||||
opts: this.opts,
|
||||
formats: formats
|
||||
});
|
||||
|
||||
if (this.opts.beautify) {
|
||||
|
|
|
@ -2,14 +2,18 @@
|
|||
{{# def.setup:'$ref' }}
|
||||
|
||||
{{? $schema == '#' || $schema == '#/' }}
|
||||
var {{=$valid}} = validate({{=$data}}, (dataPath || '') + {{= it.errorPath }});
|
||||
{{? $breakOnError }} if ( {{?}}
|
||||
validate({{=$data}}, (dataPath || '') + {{= it.errorPath }})
|
||||
{{? $breakOnError }} ) { {{??}};{{?}}
|
||||
{{??}}
|
||||
{{ $id = it.resolveRef(it.baseId, $schema); }}
|
||||
{{? $id === undefined }}
|
||||
{{# def.error:'$ref' }}
|
||||
var {{=$valid}} = false;
|
||||
{{? $breakOnError }} if (false) { {{?}}
|
||||
{{??}}
|
||||
var {{=$valid}} = refVal[{{=$id}}]({{=$data}}, (dataPath || '') + {{= it.errorPath }});
|
||||
if (!{{=$valid}}) validate.errors.push.apply(validate.errors, refVal[{{=$id}}].errors);
|
||||
if (!refVal[{{=$id}}]({{=$data}}, (dataPath || '') + {{= it.errorPath }})) {
|
||||
validate.errors.push.apply(validate.errors, refVal[{{=$id}}].errors);
|
||||
}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
{{?}}
|
||||
{{?}}
|
||||
|
|
|
@ -2,11 +2,7 @@
|
|||
{{# def.setup:'allOf' }}
|
||||
{{# def.setupNextLevel }}
|
||||
|
||||
var {{=$valid}} = true;
|
||||
|
||||
{{~ $schema:$sch:$i }}
|
||||
{{? $i}} {{# def.ifValid }} {{?}}
|
||||
|
||||
{{
|
||||
$it.schema = $sch;
|
||||
$it.schemaPath = $schemaPath + '[' + $i + ']';
|
||||
|
@ -14,7 +10,14 @@ var {{=$valid}} = true;
|
|||
|
||||
{{= it.validate($it) }}
|
||||
|
||||
{{=$valid}} = {{=$valid}} && valid{{=$it.level}};
|
||||
{{? $breakOnError }}
|
||||
if (valid{{=$it.level}}) {
|
||||
{{ $closingBraces += '}'; }}
|
||||
{{?}}
|
||||
{{~}}
|
||||
|
||||
{{= $closingBraces }}
|
||||
{{? $breakOnError }}
|
||||
{{= $closingBraces.slice(0,-1) }}
|
||||
{{?}}
|
||||
|
||||
{{# def.cleanUp }}
|
||||
|
|
|
@ -23,4 +23,6 @@ var {{=$valid}} = false;
|
|||
|
||||
{{= $closingBraces }}
|
||||
|
||||
if ({{=$valid}}) validate.errors.length = {{=$errs}};
|
||||
if ({{=$valid}}) {
|
||||
validate.errors.length = {{=$errs}};
|
||||
{{? it.opts.allErrors }} } {{?}}
|
|
@ -3,7 +3,9 @@
|
|||
var $lvl = it.level
|
||||
, $dataLvl = it.dataLevel
|
||||
, $schema = it.schema[keyword]
|
||||
, $schemaPath = it.schemaPath + '.' + keyword;
|
||||
, $schemaPath = it.schemaPath + '.' + keyword
|
||||
, $breakOnError = !it.opts.allErrors;
|
||||
|
||||
|
||||
var $data = 'data' + ($dataLvl || '')
|
||||
, $valid = 'valid' + $lvl
|
||||
|
@ -15,8 +17,7 @@
|
|||
{{## def.setupNextLevel:
|
||||
{{
|
||||
var $it = it.util.copy(it)
|
||||
, $closingBraces = ''
|
||||
, $breakOnError = !it.opts.allErrors;
|
||||
, $closingBraces = '';
|
||||
$it.level++;
|
||||
}}
|
||||
#}}
|
||||
|
|
|
@ -15,14 +15,19 @@
|
|||
}}
|
||||
|
||||
var {{=$errs}} = validate.errors.length;
|
||||
var {{=$valid}};
|
||||
|
||||
{{## def.checkPropertyDeps:
|
||||
({{~ $deps:$dep:$i }}
|
||||
{{?$i}} && {{?}}
|
||||
{{=$data}}['{{= $dep}}'] !== undefined
|
||||
{{~}})
|
||||
#}}
|
||||
|
||||
{{ for ($property in $propertyDeps) { }}
|
||||
if ({{=$data}}['{{= $property }}'] !== undefined) {
|
||||
{{ $deps = $propertyDeps[$property]; }}
|
||||
{{=$valid}} = {{~ $deps:$dep:$i }}{{?$i}} && {{?}}{{=$data}}['{{= $dep}}'] !== undefined{{~}};
|
||||
{{# def.checkError:'dependencies' }}
|
||||
if (! {{# def.checkPropertyDeps }} )
|
||||
{{# def.error:'dependencies' }}
|
||||
{{# def.elseIfValid }}
|
||||
}
|
||||
{{ } }}
|
||||
|
@ -46,8 +51,9 @@ var {{=$valid}};
|
|||
{{?}}
|
||||
{{ } }}
|
||||
|
||||
{{? $breakOnError }}{{= $closingBraces }}{{?}}
|
||||
|
||||
{{=$valid}} = {{=$errs}} == validate.errors.length;
|
||||
{{? $breakOnError }}
|
||||
{{= $closingBraces }}
|
||||
if ({{=$errs}} == validate.errors.length) {
|
||||
{{?}}
|
||||
|
||||
{{# def.cleanUp }}
|
||||
|
|
|
@ -12,3 +12,5 @@ for (var {{=$i}}=0; {{=$i}}<enumSchema{{=$lvl}}.length; {{=$i}}++)
|
|||
}
|
||||
|
||||
{{# def.checkError:'enum' }}
|
||||
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,15 +1,25 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'format' }}
|
||||
|
||||
{{? it.opts.format !== false }}
|
||||
{{# def.setup:'format' }}
|
||||
{{ var $mode = it.opts.format == 'full' ? 'full' : 'fast'; }}
|
||||
{{
|
||||
var $mode = it.opts.format == 'full' ? 'full' : 'fast'
|
||||
, $format = it.formats[$mode][$schema];
|
||||
}}
|
||||
|
||||
var format{{=$lvl}} = formats.{{= $mode }}['{{=$schema}}'];
|
||||
var {{=$valid}} = typeof format{{=$lvl}} == 'function'
|
||||
? format{{=$lvl}}({{=$data}})
|
||||
: !format{{=$lvl}} || format{{=$lvl}}.test({{=$data}});
|
||||
{{## def.format: formats.{{= $mode }}['{{=$schema}}'] #}}
|
||||
|
||||
{{# def.checkError:'format' }}
|
||||
{{## def.checkFormat:
|
||||
{{? typeof $format == 'function' }}
|
||||
{{# def.format }}({{=$data}})
|
||||
{{??}}
|
||||
{{# def.format }}.test({{=$data}})
|
||||
{{?}}
|
||||
#}}
|
||||
|
||||
{{? it.opts.format !== false && $format }}
|
||||
if (! {{# def.checkFormat }})
|
||||
{{# def.error:'format' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
{{??}}
|
||||
var {{=$valid}} = true;
|
||||
{{? $breakOnError }} if (true) { {{?}}
|
||||
{{?}}
|
||||
|
|
|
@ -76,8 +76,9 @@ var {{=$valid}};
|
|||
{{# def.ifResultValid }}
|
||||
{{?}}
|
||||
|
||||
{{? $breakOnError }} {{= $closingBraces }} {{?}}
|
||||
|
||||
{{=$valid}} = {{=$errs}} == validate.errors.length;
|
||||
{{? $breakOnError }}
|
||||
{{= $closingBraces }}
|
||||
if ({{=$errs}} == validate.errors.length) {
|
||||
{{?}}
|
||||
|
||||
{{# def.cleanUp }}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'maxItems' }}
|
||||
|
||||
var {{=$valid}} = {{=$data}}.length <= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'maxItems' }}
|
||||
if ({{=$data}}.length > {{=$schema}})
|
||||
{{# def.error:'maxItems' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'maxLength' }}
|
||||
|
||||
var {{=$valid}} = {{# def.strLength }} <= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'maxLength' }}
|
||||
if ({{# def.strLength }} > {{=$schema}})
|
||||
{{# def.error:'maxLength' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'maxProperties' }}
|
||||
|
||||
var {{=$valid}} = Object.keys({{=$data}}).length <= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'maxProperties' }}
|
||||
if (Object.keys({{=$data}}).length > {{=$schema}})
|
||||
{{# def.error:'maxProperties' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
, $op = $exclusive ? '<' : '<=';
|
||||
}}
|
||||
|
||||
var {{=$valid}} = {{=$data}} {{=$op}} {{=$schema}};
|
||||
|
||||
{{# def.checkError:'maximum' }}
|
||||
|
||||
if (! ({{=$data}} {{=$op}} {{=$schema}}) )
|
||||
{{# def.error:'maximum' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'minItems' }}
|
||||
|
||||
var {{=$valid}} = {{=$data}}.length >= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'minItems' }}
|
||||
if ({{=$data}}.length < {{=$schema}})
|
||||
{{# def.error:'minItems' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'minLength' }}
|
||||
|
||||
var {{=$valid}} = {{# def.strLength }} >= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'minLength' }}
|
||||
if ({{# def.strLength }} < {{=$schema}})
|
||||
{{# def.error:'minLength' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -1,6 +1,6 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'minProperties' }}
|
||||
|
||||
var {{=$valid}} = Object.keys({{=$data}}).length >= {{=$schema}};
|
||||
|
||||
{{# def.checkError:'minProperties' }}
|
||||
if (Object.keys({{=$data}}).length < {{=$schema}})
|
||||
{{# def.error:'minProperties' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
, $op = $exclusive ? '>' : '>=';
|
||||
}}
|
||||
|
||||
var {{=$valid}} = {{=$data}} {{=$op}} {{=$schema}};
|
||||
|
||||
{{# def.checkError:'minimum' }}
|
||||
if (!( {{=$data}} {{=$op}} {{=$schema}} ))
|
||||
{{# def.error:'minimum' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
|
@ -2,6 +2,6 @@
|
|||
{{# def.setup:'multipleOf' }}
|
||||
|
||||
var division{{=$lvl}} = {{=$data}} / {{=$schema}};
|
||||
var {{=$valid}} = division{{=$lvl}} === parseInt(division{{=$lvl}});
|
||||
|
||||
{{# def.checkError:'multipleOf' }}
|
||||
if ({{=$data}} / {{=$schema}} !== parseInt(division{{=$lvl}}))
|
||||
{{# def.error:'multipleOf' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
|
|
|
@ -11,8 +11,9 @@ var {{=$errs}} = validate.errors.length;
|
|||
|
||||
{{= it.validate($it) }}
|
||||
|
||||
var {{=$valid}} = valid{{=$it.level}};
|
||||
{{=$valid}} = !{{=$valid}};
|
||||
if (valid{{=$it.level}})
|
||||
{{# def.error:'not' }}
|
||||
else {
|
||||
validate.errors.length = {{=$errs}};
|
||||
|
||||
if ({{=$valid}}) validate.errors.length = {{=$errs}};
|
||||
else {{# def.error:'not' }}
|
||||
{{? it.opts.allErrors }} } {{?}}
|
||||
|
|
|
@ -28,5 +28,9 @@ var {{=$valid}} = false;
|
|||
|
||||
{{= $closingBraces }}
|
||||
|
||||
if ({{=$valid}}) validate.errors.length = {{=$errs}};
|
||||
else {{# def.error:'oneOf' }}
|
||||
if (!{{=$valid}})
|
||||
{{# def.error:'oneOf' }}
|
||||
else {
|
||||
validate.errors.length = {{=$errs}};
|
||||
|
||||
{{? it.opts.allErrors }} } {{?}}
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
{{# def.setup:'pattern' }}
|
||||
|
||||
{{ new RegExp($schema); /* test if regexp is valid to fail at compile time rather than in eval */}}
|
||||
var {{=$valid}} = /{{= it.util.escapeRegExp($schema) }}/.test({{=$data}});
|
||||
|
||||
{{# def.checkError:'pattern' }}
|
||||
if (! /{{= it.util.escapeRegExp($schema) }}/.test({{=$data}}) )
|
||||
{{# def.error:'pattern' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
|
|
|
@ -124,8 +124,9 @@ var valid{{=$it.level}} = true;
|
|||
{{?}}
|
||||
{{~}}
|
||||
|
||||
{{? $breakOnError }}{{= $closingBraces }}{{?}}
|
||||
|
||||
var {{=$valid}} = {{=$errs}} == validate.errors.length;
|
||||
{{? $breakOnError }}
|
||||
{{= $closingBraces }}
|
||||
if ({{=$errs}} == validate.errors.length) {
|
||||
{{?}}
|
||||
|
||||
{{# def.cleanUp }}
|
||||
|
|
|
@ -1,18 +1,26 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'required' }}
|
||||
|
||||
{{## def.checkRequired:
|
||||
({{~ $schema:$property:$i }}
|
||||
{{? $i}} && {{?}}
|
||||
{{=$data}}{{= it.util.getProperty($property) }} !== undefined
|
||||
{{~}})
|
||||
#}}
|
||||
|
||||
{{? $schema.length <= 100 }}
|
||||
{{=$valid}} = {{~ $schema:$property:$i }}
|
||||
{{? $i}} && {{?}}
|
||||
{{=$data}}{{= it.util.getProperty($property) }} !== undefined
|
||||
{{~}};
|
||||
if (! {{# def.checkRequired }})
|
||||
{{# def.error:'required' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
{{??}}
|
||||
var schema{{=$lvl}} = validate.schema{{=$schemaPath}};
|
||||
|
||||
for (var i = 0; i < schema{{=$lvl}}.length; i++) {
|
||||
{{=$valid}} = data[schema{{=$lvl}}[i]] !== undefined;
|
||||
var {{=$valid}} = data[schema{{=$lvl}}[i]] !== undefined;
|
||||
if (!{{=$valid}}) break;
|
||||
}
|
||||
|
||||
{{# def.checkError:'required' }}
|
||||
{{? $breakOnError }} if ({{=$valid}}) { {{?}}
|
||||
{{?}}
|
||||
|
||||
{{# def.checkError:'required' }}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{{# def.definitions }}
|
||||
{{# def.setup:'uniqueItems' }}
|
||||
|
||||
var {{=$valid}} = true;
|
||||
|
||||
{{? $schema && it.opts.uniqueItems !== false }}
|
||||
var {{=$valid}} = true;
|
||||
if ({{=$data}}.length > 1) {
|
||||
var i = {{=$data}}.length, j;
|
||||
outer:
|
||||
|
@ -15,7 +15,12 @@ var {{=$valid}} = true;
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
{{# def.checkError:'uniqueItems' }}
|
||||
}
|
||||
|
||||
if (!{{=$valid}})
|
||||
{{# def.error:'uniqueItems' }}
|
||||
{{? $breakOnError }} else { {{?}}
|
||||
{{??}}
|
||||
{{? $breakOnError }} if (true) { {{?}}
|
||||
{{?}}
|
||||
|
||||
|
|
|
@ -55,7 +55,6 @@ var {{=$valid}} = true;
|
|||
{{? $shouldUseRule($rule) }}
|
||||
{{= $rule.code(it) }}
|
||||
{{? $breakOnErrors }}
|
||||
if ({{=$valid}}) {
|
||||
{{ $closingBraces1 += '}'; }}
|
||||
{{?}}
|
||||
{{?}}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ajv",
|
||||
"version": "0.3.7",
|
||||
"version": "0.3.8",
|
||||
"description": "Another JSON schema Validator",
|
||||
"main": "lib/ajv.js",
|
||||
"scripts": {
|
||||
|
|
Loading…
Reference in New Issue