source: imaps-frontend/node_modules/ajv/lib/dot/properties.jst

main
Last change on this file was d565449, checked in by stefan toskovski <stefantoska84@…>, 4 weeks ago

Update repo after prototype presentation

  • Property mode set to 100644
File size: 7.5 KB
Line 
1{{# def.definitions }}
2{{# def.errors }}
3{{# def.setupKeyword }}
4{{# def.setupNextLevel }}
5
6
7{{## def.validateAdditional:
8 {{ /* additionalProperties is schema */
9 $it.schema = $aProperties;
10 $it.schemaPath = it.schemaPath + '.additionalProperties';
11 $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';
12 $it.errorPath = it.opts._errorDataPathProperty
13 ? it.errorPath
14 : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
15 var $passData = $data + '[' + $key + ']';
16 $it.dataPathArr[$dataNxt] = $key;
17 }}
18
19 {{# def.generateSubschemaCode }}
20 {{# def.optimizeValidate }}
21#}}
22
23
24{{
25 var $key = 'key' + $lvl
26 , $idx = 'idx' + $lvl
27 , $dataNxt = $it.dataLevel = it.dataLevel + 1
28 , $nextData = 'data' + $dataNxt
29 , $dataProperties = 'dataProperties' + $lvl;
30
31 var $schemaKeys = Object.keys($schema || {}).filter(notProto)
32 , $pProperties = it.schema.patternProperties || {}
33 , $pPropertyKeys = Object.keys($pProperties).filter(notProto)
34 , $aProperties = it.schema.additionalProperties
35 , $someProperties = $schemaKeys.length || $pPropertyKeys.length
36 , $noAdditional = $aProperties === false
37 , $additionalIsSchema = typeof $aProperties == 'object'
38 && Object.keys($aProperties).length
39 , $removeAdditional = it.opts.removeAdditional
40 , $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional
41 , $ownProperties = it.opts.ownProperties
42 , $currentBaseId = it.baseId;
43
44 var $required = it.schema.required;
45 if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {
46 var $requiredHash = it.util.toHash($required);
47 }
48
49 function notProto(p) { return p !== '__proto__'; }
50}}
51
52
53var {{=$errs}} = errors;
54var {{=$nextValid}} = true;
55{{? $ownProperties }}
56 var {{=$dataProperties}} = undefined;
57{{?}}
58
59{{? $checkAdditional }}
60 {{# def.iterateProperties }}
61 {{? $someProperties }}
62 var isAdditional{{=$lvl}} = !(false
63 {{? $schemaKeys.length }}
64 {{? $schemaKeys.length > 8 }}
65 || validate.schema{{=$schemaPath}}.hasOwnProperty({{=$key}})
66 {{??}}
67 {{~ $schemaKeys:$propertyKey }}
68 || {{=$key}} == {{= it.util.toQuotedString($propertyKey) }}
69 {{~}}
70 {{?}}
71 {{?}}
72 {{? $pPropertyKeys.length }}
73 {{~ $pPropertyKeys:$pProperty:$i }}
74 || {{= it.usePattern($pProperty) }}.test({{=$key}})
75 {{~}}
76 {{?}}
77 );
78
79 if (isAdditional{{=$lvl}}) {
80 {{?}}
81 {{? $removeAdditional == 'all' }}
82 delete {{=$data}}[{{=$key}}];
83 {{??}}
84 {{
85 var $currentErrorPath = it.errorPath;
86 var $additionalProperty = '\' + ' + $key + ' + \'';
87 if (it.opts._errorDataPathProperty) {
88 it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
89 }
90 }}
91 {{? $noAdditional }}
92 {{? $removeAdditional }}
93 delete {{=$data}}[{{=$key}}];
94 {{??}}
95 {{=$nextValid}} = false;
96 {{
97 var $currErrSchemaPath = $errSchemaPath;
98 $errSchemaPath = it.errSchemaPath + '/additionalProperties';
99 }}
100 {{# def.error:'additionalProperties' }}
101 {{ $errSchemaPath = $currErrSchemaPath; }}
102 {{? $breakOnError }} break; {{?}}
103 {{?}}
104 {{?? $additionalIsSchema }}
105 {{? $removeAdditional == 'failing' }}
106 var {{=$errs}} = errors;
107 {{# def.setCompositeRule }}
108
109 {{# def.validateAdditional }}
110
111 if (!{{=$nextValid}}) {
112 errors = {{=$errs}};
113 if (validate.errors !== null) {
114 if (errors) validate.errors.length = errors;
115 else validate.errors = null;
116 }
117 delete {{=$data}}[{{=$key}}];
118 }
119
120 {{# def.resetCompositeRule }}
121 {{??}}
122 {{# def.validateAdditional }}
123 {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}}
124 {{?}}
125 {{?}}
126 {{ it.errorPath = $currentErrorPath; }}
127 {{?}}
128 {{? $someProperties }}
129 }
130 {{?}}
131 }
132
133 {{# def.ifResultValid }}
134{{?}}
135
136{{ var $useDefaults = it.opts.useDefaults && !it.compositeRule; }}
137
138{{? $schemaKeys.length }}
139 {{~ $schemaKeys:$propertyKey }}
140 {{ var $sch = $schema[$propertyKey]; }}
141
142 {{? {{# def.nonEmptySchema:$sch}} }}
143 {{
144 var $prop = it.util.getProperty($propertyKey)
145 , $passData = $data + $prop
146 , $hasDefault = $useDefaults && $sch.default !== undefined;
147 $it.schema = $sch;
148 $it.schemaPath = $schemaPath + $prop;
149 $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);
150 $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);
151 $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);
152 }}
153
154 {{# def.generateSubschemaCode }}
155
156 {{? {{# def.willOptimize }} }}
157 {{
158 $code = {{# def._optimizeValidate }};
159 var $useData = $passData;
160 }}
161 {{??}}
162 {{ var $useData = $nextData; }}
163 var {{=$nextData}} = {{=$passData}};
164 {{?}}
165
166 {{? $hasDefault }}
167 {{= $code }}
168 {{??}}
169 {{? $requiredHash && $requiredHash[$propertyKey] }}
170 if ({{# def.noPropertyInData }}) {
171 {{=$nextValid}} = false;
172 {{
173 var $currentErrorPath = it.errorPath
174 , $currErrSchemaPath = $errSchemaPath
175 , $missingProperty = it.util.escapeQuotes($propertyKey);
176 if (it.opts._errorDataPathProperty) {
177 it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);
178 }
179 $errSchemaPath = it.errSchemaPath + '/required';
180 }}
181 {{# def.error:'required' }}
182 {{ $errSchemaPath = $currErrSchemaPath; }}
183 {{ it.errorPath = $currentErrorPath; }}
184 } else {
185 {{??}}
186 {{? $breakOnError }}
187 if ({{# def.noPropertyInData }}) {
188 {{=$nextValid}} = true;
189 } else {
190 {{??}}
191 if ({{=$useData}} !== undefined
192 {{? $ownProperties }}
193 && {{# def.isOwnProperty }}
194 {{?}}
195 ) {
196 {{?}}
197 {{?}}
198
199 {{= $code }}
200 }
201 {{?}} {{ /* $hasDefault */ }}
202 {{?}} {{ /* def.nonEmptySchema */ }}
203
204 {{# def.ifResultValid }}
205 {{~}}
206{{?}}
207
208{{? $pPropertyKeys.length }}
209 {{~ $pPropertyKeys:$pProperty }}
210 {{ var $sch = $pProperties[$pProperty]; }}
211
212 {{? {{# def.nonEmptySchema:$sch}} }}
213 {{
214 $it.schema = $sch;
215 $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);
216 $it.errSchemaPath = it.errSchemaPath + '/patternProperties/'
217 + it.util.escapeFragment($pProperty);
218 }}
219
220 {{# def.iterateProperties }}
221 if ({{= it.usePattern($pProperty) }}.test({{=$key}})) {
222 {{
223 $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);
224 var $passData = $data + '[' + $key + ']';
225 $it.dataPathArr[$dataNxt] = $key;
226 }}
227
228 {{# def.generateSubschemaCode }}
229 {{# def.optimizeValidate }}
230
231 {{? $breakOnError }} if (!{{=$nextValid}}) break; {{?}}
232 }
233 {{? $breakOnError }} else {{=$nextValid}} = true; {{?}}
234 }
235
236 {{# def.ifResultValid }}
237 {{?}} {{ /* def.nonEmptySchema */ }}
238 {{~}}
239{{?}}
240
241
242{{? $breakOnError }}
243 {{= $closingBraces }}
244 if ({{=$errs}} == errors) {
245{{?}}
Note: See TracBrowser for help on using the repository browser.