1 | {{# def.definitions }}
|
---|
2 | {{# def.errors }}
|
---|
3 | {{# def.setupKeyword }}
|
---|
4 |
|
---|
5 | {{## def._validateRef:_v:
|
---|
6 | {{? it.opts.passContext }}
|
---|
7 | {{=_v}}.call(this,
|
---|
8 | {{??}}
|
---|
9 | {{=_v}}(
|
---|
10 | {{?}}
|
---|
11 | {{=$data}}, {{# def.dataPath }}{{# def.passParentData }}, rootData)
|
---|
12 | #}}
|
---|
13 |
|
---|
14 | {{ var $async, $refCode; }}
|
---|
15 | {{? $schema == '#' || $schema == '#/' }}
|
---|
16 | {{
|
---|
17 | if (it.isRoot) {
|
---|
18 | $async = it.async;
|
---|
19 | $refCode = 'validate';
|
---|
20 | } else {
|
---|
21 | $async = it.root.schema.$async === true;
|
---|
22 | $refCode = 'root.refVal[0]';
|
---|
23 | }
|
---|
24 | }}
|
---|
25 | {{??}}
|
---|
26 | {{ var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot); }}
|
---|
27 | {{? $refVal === undefined }}
|
---|
28 | {{ var $message = it.MissingRefError.message(it.baseId, $schema); }}
|
---|
29 | {{? it.opts.missingRefs == 'fail' }}
|
---|
30 | {{ it.logger.error($message); }}
|
---|
31 | {{# def.error:'$ref' }}
|
---|
32 | {{? $breakOnError }} if (false) { {{?}}
|
---|
33 | {{?? it.opts.missingRefs == 'ignore' }}
|
---|
34 | {{ it.logger.warn($message); }}
|
---|
35 | {{? $breakOnError }} if (true) { {{?}}
|
---|
36 | {{??}}
|
---|
37 | {{ throw new it.MissingRefError(it.baseId, $schema, $message); }}
|
---|
38 | {{?}}
|
---|
39 | {{?? $refVal.inline }}
|
---|
40 | {{# def.setupNextLevel }}
|
---|
41 | {{
|
---|
42 | $it.schema = $refVal.schema;
|
---|
43 | $it.schemaPath = '';
|
---|
44 | $it.errSchemaPath = $schema;
|
---|
45 | }}
|
---|
46 | {{ var $code = it.validate($it).replace(/validate\.schema/g, $refVal.code); }}
|
---|
47 | {{= $code }}
|
---|
48 | {{? $breakOnError}}
|
---|
49 | if ({{=$nextValid}}) {
|
---|
50 | {{?}}
|
---|
51 | {{??}}
|
---|
52 | {{
|
---|
53 | $async = $refVal.$async === true || (it.async && $refVal.$async !== false);
|
---|
54 | $refCode = $refVal.code;
|
---|
55 | }}
|
---|
56 | {{?}}
|
---|
57 | {{?}}
|
---|
58 |
|
---|
59 | {{? $refCode }}
|
---|
60 | {{# def.beginDefOut}}
|
---|
61 | {{# def._validateRef:$refCode }}
|
---|
62 | {{# def.storeDefOut:__callValidate }}
|
---|
63 |
|
---|
64 | {{? $async }}
|
---|
65 | {{ if (!it.async) throw new Error('async schema referenced by sync schema'); }}
|
---|
66 | {{? $breakOnError }} var {{=$valid}}; {{?}}
|
---|
67 | try {
|
---|
68 | await {{=__callValidate}};
|
---|
69 | {{? $breakOnError }} {{=$valid}} = true; {{?}}
|
---|
70 | } catch (e) {
|
---|
71 | if (!(e instanceof ValidationError)) throw e;
|
---|
72 | if (vErrors === null) vErrors = e.errors;
|
---|
73 | else vErrors = vErrors.concat(e.errors);
|
---|
74 | errors = vErrors.length;
|
---|
75 | {{? $breakOnError }} {{=$valid}} = false; {{?}}
|
---|
76 | }
|
---|
77 | {{? $breakOnError }} if ({{=$valid}}) { {{?}}
|
---|
78 | {{??}}
|
---|
79 | if (!{{=__callValidate}}) {
|
---|
80 | if (vErrors === null) vErrors = {{=$refCode}}.errors;
|
---|
81 | else vErrors = vErrors.concat({{=$refCode}}.errors);
|
---|
82 | errors = vErrors.length;
|
---|
83 | } {{? $breakOnError }} else { {{?}}
|
---|
84 | {{?}}
|
---|
85 | {{?}}
|
---|