source: imaps-frontend/node_modules/ajv/lib/dot/custom.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: 4.8 KB
Line 
1{{# def.definitions }}
2{{# def.errors }}
3{{# def.setupKeyword }}
4{{# def.$data }}
5
6{{
7 var $rule = this
8 , $definition = 'definition' + $lvl
9 , $rDef = $rule.definition
10 , $closingBraces = '';
11 var $validate = $rDef.validate;
12 var $compile, $inline, $macro, $ruleValidate, $validateCode;
13}}
14
15{{? $isData && $rDef.$data }}
16 {{
17 $validateCode = 'keywordValidate' + $lvl;
18 var $validateSchema = $rDef.validateSchema;
19 }}
20 var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
21 var {{=$validateCode}} = {{=$definition}}.validate;
22{{??}}
23 {{
24 $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
25 if (!$ruleValidate) return;
26 $schemaValue = 'validate.schema' + $schemaPath;
27 $validateCode = $ruleValidate.code;
28 $compile = $rDef.compile;
29 $inline = $rDef.inline;
30 $macro = $rDef.macro;
31 }}
32{{?}}
33
34{{
35 var $ruleErrs = $validateCode + '.errors'
36 , $i = 'i' + $lvl
37 , $ruleErr = 'ruleErr' + $lvl
38 , $asyncKeyword = $rDef.async;
39
40 if ($asyncKeyword && !it.async)
41 throw new Error('async keyword in sync schema');
42}}
43
44
45{{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
46var {{=$errs}} = errors;
47var {{=$valid}};
48
49{{## def.callRuleValidate:
50 {{=$validateCode}}.call(
51 {{? it.opts.passContext }}this{{??}}self{{?}}
52 {{? $compile || $rDef.schema === false }}
53 , {{=$data}}
54 {{??}}
55 , {{=$schemaValue}}
56 , {{=$data}}
57 , validate.schema{{=it.schemaPath}}
58 {{?}}
59 , {{# def.dataPath }}
60 {{# def.passParentData }}
61 , rootData
62 )
63#}}
64
65{{## def.extendErrors:_inline:
66 for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
67 var {{=$ruleErr}} = vErrors[{{=$i}}];
68 if ({{=$ruleErr}}.dataPath === undefined)
69 {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
70 {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
71 {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
72 {{# _inline ? '}' : '' }}
73 {{? it.opts.verbose }}
74 {{=$ruleErr}}.schema = {{=$schemaValue}};
75 {{=$ruleErr}}.data = {{=$data}};
76 {{?}}
77 }
78#}}
79
80
81{{? $isData && $rDef.$data }}
82 {{ $closingBraces += '}'; }}
83 if ({{=$schemaValue}} === undefined) {
84 {{=$valid}} = true;
85 } else {
86 {{? $validateSchema }}
87 {{ $closingBraces += '}'; }}
88 {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
89 if ({{=$valid}}) {
90 {{?}}
91{{?}}
92
93{{? $inline }}
94 {{? $rDef.statements }}
95 {{= $ruleValidate.validate }}
96 {{??}}
97 {{=$valid}} = {{= $ruleValidate.validate }};
98 {{?}}
99{{?? $macro }}
100 {{# def.setupNextLevel }}
101 {{
102 $it.schema = $ruleValidate.validate;
103 $it.schemaPath = '';
104 }}
105 {{# def.setCompositeRule }}
106 {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
107 {{# def.resetCompositeRule }}
108 {{= $code }}
109{{??}}
110 {{# def.beginDefOut}}
111 {{# def.callRuleValidate }}
112 {{# def.storeDefOut:def_callRuleValidate }}
113
114 {{? $rDef.errors === false }}
115 {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
116 {{??}}
117 {{? $asyncKeyword }}
118 {{ $ruleErrs = 'customErrors' + $lvl; }}
119 var {{=$ruleErrs}} = null;
120 try {
121 {{=$valid}} = await {{= def_callRuleValidate }};
122 } catch (e) {
123 {{=$valid}} = false;
124 if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
125 else throw e;
126 }
127 {{??}}
128 {{=$ruleErrs}} = null;
129 {{=$valid}} = {{= def_callRuleValidate }};
130 {{?}}
131 {{?}}
132{{?}}
133
134{{? $rDef.modifying }}
135 if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
136{{?}}
137
138{{= $closingBraces }}
139
140{{## def.notValidationResult:
141 {{? $rDef.valid === undefined }}
142 !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
143 {{??}}
144 {{= !$rDef.valid }}
145 {{?}}
146#}}
147
148{{? $rDef.valid }}
149 {{? $breakOnError }} if (true) { {{?}}
150{{??}}
151 if ({{# def.notValidationResult }}) {
152 {{ $errorKeyword = $rule.keyword; }}
153 {{# def.beginDefOut}}
154 {{# def.error:'custom' }}
155 {{# def.storeDefOut:def_customError }}
156
157 {{? $inline }}
158 {{? $rDef.errors }}
159 {{? $rDef.errors != 'full' }}
160 {{# def.extendErrors:true }}
161 {{?}}
162 {{??}}
163 {{? $rDef.errors === false}}
164 {{= def_customError }}
165 {{??}}
166 if ({{=$errs}} == errors) {
167 {{= def_customError }}
168 } else {
169 {{# def.extendErrors:true }}
170 }
171 {{?}}
172 {{?}}
173 {{?? $macro }}
174 {{# def.extraError:'custom' }}
175 {{??}}
176 {{? $rDef.errors === false}}
177 {{= def_customError }}
178 {{??}}
179 if (Array.isArray({{=$ruleErrs}})) {
180 if (vErrors === null) vErrors = {{=$ruleErrs}};
181 else vErrors = vErrors.concat({{=$ruleErrs}});
182 errors = vErrors.length;
183 {{# def.extendErrors:false }}
184 } else {
185 {{= def_customError }}
186 }
187 {{?}}
188 {{?}}
189
190 } {{? $breakOnError }} else { {{?}}
191{{?}}
Note: See TracBrowser for help on using the repository browser.