Blame view

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