Blame view

node_modules/ajv/lib/dot/custom.jst 4.83 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
  {{# def.definitions }}
  {{# def.errors }}
  {{# def.setupKeyword }}
  {{# def.$data }}
  
  {{
    var $rule = this
      , $definition = 'definition' + $lvl
      , $rDef = $rule.definition
      , $closingBraces = '';
    var $validate = $rDef.validate;
    var $compile, $inline, $macro, $ruleValidate, $validateCode;
  }}
  
  {{? $isData && $rDef.$data }}
    {{
      $validateCode = 'keywordValidate' + $lvl;
      var $validateSchema = $rDef.validateSchema;
    }}
    var {{=$definition}} = RULES.custom['{{=$keyword}}'].definition;
    var {{=$validateCode}} = {{=$definition}}.validate;
  {{??}}
    {{
      $ruleValidate = it.useCustomRule($rule, $schema, it.schema, it);
      if (!$ruleValidate) return;
      $schemaValue = 'validate.schema' + $schemaPath;
      $validateCode = $ruleValidate.code;
      $compile = $rDef.compile;
      $inline = $rDef.inline;
      $macro = $rDef.macro;
    }}
  {{?}}
  
  {{
    var $ruleErrs = $validateCode + '.errors'
      , $i = 'i' + $lvl
      , $ruleErr = 'ruleErr' + $lvl
      , $asyncKeyword = $rDef.async;
  
    if ($asyncKeyword && !it.async)
      throw new Error('async keyword in sync schema');
  }}
  
  
  {{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
  var {{=$errs}} = errors;
  var {{=$valid}};
  
  {{## def.callRuleValidate:
    {{=$validateCode}}.call(
      {{? it.opts.passContext }}this{{??}}self{{?}}
      {{? $compile || $rDef.schema === false }}
        , {{=$data}}
      {{??}}
        , {{=$schemaValue}}
        , {{=$data}}
        , validate.schema{{=it.schemaPath}}
      {{?}}
      , {{# def.dataPath }}
      {{# def.passParentData }}
      , rootData
    )
  #}}
  
  {{## def.extendErrors:_inline:
    for (var {{=$i}}={{=$errs}}; {{=$i}}<errors; {{=$i}}++) {
      var {{=$ruleErr}} = vErrors[{{=$i}}];
      if ({{=$ruleErr}}.dataPath === undefined)
        {{=$ruleErr}}.dataPath = (dataPath || '') + {{= it.errorPath }};
      {{# _inline ? 'if (\{\{=$ruleErr\}\}.schemaPath === undefined) {' : '' }}
        {{=$ruleErr}}.schemaPath = "{{=$errSchemaPath}}";
      {{# _inline ? '}' : '' }}
      {{? it.opts.verbose }}
        {{=$ruleErr}}.schema = {{=$schemaValue}};
        {{=$ruleErr}}.data = {{=$data}};
      {{?}}
    }
  #}}
  
  
  {{? $isData && $rDef.$data }}
    {{ $closingBraces += '}'; }}
    if ({{=$schemaValue}} === undefined) {
      {{=$valid}} = true;
    } else {
    {{? $validateSchema }}
      {{ $closingBraces += '}'; }}
      {{=$valid}} = {{=$definition}}.validateSchema({{=$schemaValue}});
      if ({{=$valid}}) {
    {{?}}
  {{?}}
  
  {{? $inline }}
    {{? $rDef.statements }}
      {{= $ruleValidate.validate }}
    {{??}}
      {{=$valid}} = {{= $ruleValidate.validate }};
    {{?}}
  {{?? $macro }}
    {{# def.setupNextLevel }}
    {{
      $it.schema = $ruleValidate.validate;
      $it.schemaPath = '';
    }}
    {{# def.setCompositeRule }}
    {{ var $code = it.validate($it).replace(/validate\.schema/g, $validateCode); }}
    {{# def.resetCompositeRule }}
    {{= $code }}
  {{??}}
    {{# def.beginDefOut}}
      {{# def.callRuleValidate }}
    {{# def.storeDefOut:def_callRuleValidate }}
  
    {{? $rDef.errors === false }}
      {{=$valid}} = {{? $asyncKeyword }}await {{?}}{{= def_callRuleValidate }};
    {{??}}
      {{? $asyncKeyword }}
        {{ $ruleErrs = 'customErrors' + $lvl; }}
        var {{=$ruleErrs}} = null;
        try {
          {{=$valid}} = await {{= def_callRuleValidate }};
        } catch (e) {
          {{=$valid}} = false;
          if (e instanceof ValidationError) {{=$ruleErrs}} = e.errors;
          else throw e;
        }
      {{??}}
        {{=$ruleErrs}} = null;
        {{=$valid}} = {{= def_callRuleValidate }};
      {{?}}
    {{?}}
  {{?}}
  
  {{? $rDef.modifying }}
    if ({{=$parentData}}) {{=$data}} = {{=$parentData}}[{{=$parentDataProperty}}];
  {{?}}
  
  {{= $closingBraces }}
  
  {{## def.notValidationResult:
    {{? $rDef.valid === undefined }}
      !{{? $macro }}{{=$nextValid}}{{??}}{{=$valid}}{{?}}
    {{??}}
      {{= !$rDef.valid }}
    {{?}}
  #}}
  
  {{? $rDef.valid }}
    {{? $breakOnError }} if (true) { {{?}}
  {{??}}
    if ({{# def.notValidationResult }}) {
      {{ $errorKeyword = $rule.keyword; }}
      {{# def.beginDefOut}}
        {{# def.error:'custom' }}
      {{# def.storeDefOut:def_customError }}
  
      {{? $inline }}
        {{? $rDef.errors }}
          {{? $rDef.errors != 'full' }}
            {{# def.extendErrors:true }}
          {{?}}
        {{??}}
          {{? $rDef.errors === false}}
            {{= def_customError }}
          {{??}}
            if ({{=$errs}} == errors) {
              {{= def_customError }}
            } else {
              {{# def.extendErrors:true }}
            }
          {{?}}
        {{?}}
      {{?? $macro }}
        {{# def.extraError:'custom' }}
      {{??}}
        {{? $rDef.errors === false}}
          {{= def_customError }}
        {{??}}
          if (Array.isArray({{=$ruleErrs}})) {
            if (vErrors === null) vErrors = {{=$ruleErrs}};
            else vErrors = vErrors.concat({{=$ruleErrs}});
            errors = vErrors.length;
            {{# def.extendErrors:false }}
          } else {
            {{= def_customError }}
          }
        {{?}}
      {{?}}
  
    } {{? $breakOnError }} else { {{?}}
  {{?}}