@contractkit/openapi-to-ck 0.9.0 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build$colon$ci.log +5 -5
- package/.turbo/turbo-test$colon$ci.log +12 -12
- package/CHANGELOG.md +15 -0
- package/dist/ast-to-ck.d.ts +14 -0
- package/dist/ast-to-ck.d.ts.map +1 -1
- package/dist/{chunk-FMEMOXYD.js → chunk-76CPOLZK.js} +22 -10
- package/dist/chunk-76CPOLZK.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/plugin.js +1 -1
- package/package.json +2 -2
- package/src/ast-to-ck.ts +50 -9
- package/tests/ast-to-ck.test.ts +77 -0
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/clover.xml +0 -879
- package/coverage/coverage-final.json +0 -10
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -131
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -210
- package/coverage/src/ast-to-ck.ts.html +0 -1363
- package/coverage/src/circular-refs.ts.html +0 -298
- package/coverage/src/convert.ts.html +0 -535
- package/coverage/src/index.html +0 -221
- package/coverage/src/normalize.ts.html +0 -1162
- package/coverage/src/paths-to-ast.ts.html +0 -1129
- package/coverage/src/schema-to-ast.ts.html +0 -1378
- package/coverage/src/tag-splitter.ts.html +0 -685
- package/coverage/src/warnings.ts.html +0 -154
- package/coverage/tests/helpers.ts.html +0 -559
- package/coverage/tests/index.html +0 -116
- package/dist/chunk-FMEMOXYD.js.map +0 -1
|
@@ -1,1129 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for src/paths-to-ast.ts</title>
|
|
7
|
-
<meta charset="utf-8" />
|
|
8
|
-
<link rel="stylesheet" href="../prettify.css" />
|
|
9
|
-
<link rel="stylesheet" href="../base.css" />
|
|
10
|
-
<link rel="shortcut icon" type="image/x-icon" href="../favicon.png" />
|
|
11
|
-
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
12
|
-
<style type='text/css'>
|
|
13
|
-
.coverage-summary .sorter {
|
|
14
|
-
background-image: url(../sort-arrow-sprite.png);
|
|
15
|
-
}
|
|
16
|
-
</style>
|
|
17
|
-
</head>
|
|
18
|
-
|
|
19
|
-
<body>
|
|
20
|
-
<div class='wrapper'>
|
|
21
|
-
<div class='pad1'>
|
|
22
|
-
<h1><a href="../index.html">All files</a> / <a href="index.html">src</a> paths-to-ast.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">85.03% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>108/127</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">65.71% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>69/105</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">100% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>16/16</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">89.56% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>103/115</span>
|
|
50
|
-
</div>
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
</div>
|
|
54
|
-
<p class="quiet">
|
|
55
|
-
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
|
-
</p>
|
|
57
|
-
<template id="filterTemplate">
|
|
58
|
-
<div class="quiet">
|
|
59
|
-
Filter:
|
|
60
|
-
<input type="search" id="fileSearch">
|
|
61
|
-
</div>
|
|
62
|
-
</template>
|
|
63
|
-
</div>
|
|
64
|
-
<div class='status-line high'></div>
|
|
65
|
-
<pre><table class="coverage">
|
|
66
|
-
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
|
-
<a name='L2'></a><a href='#L2'>2</a>
|
|
68
|
-
<a name='L3'></a><a href='#L3'>3</a>
|
|
69
|
-
<a name='L4'></a><a href='#L4'>4</a>
|
|
70
|
-
<a name='L5'></a><a href='#L5'>5</a>
|
|
71
|
-
<a name='L6'></a><a href='#L6'>6</a>
|
|
72
|
-
<a name='L7'></a><a href='#L7'>7</a>
|
|
73
|
-
<a name='L8'></a><a href='#L8'>8</a>
|
|
74
|
-
<a name='L9'></a><a href='#L9'>9</a>
|
|
75
|
-
<a name='L10'></a><a href='#L10'>10</a>
|
|
76
|
-
<a name='L11'></a><a href='#L11'>11</a>
|
|
77
|
-
<a name='L12'></a><a href='#L12'>12</a>
|
|
78
|
-
<a name='L13'></a><a href='#L13'>13</a>
|
|
79
|
-
<a name='L14'></a><a href='#L14'>14</a>
|
|
80
|
-
<a name='L15'></a><a href='#L15'>15</a>
|
|
81
|
-
<a name='L16'></a><a href='#L16'>16</a>
|
|
82
|
-
<a name='L17'></a><a href='#L17'>17</a>
|
|
83
|
-
<a name='L18'></a><a href='#L18'>18</a>
|
|
84
|
-
<a name='L19'></a><a href='#L19'>19</a>
|
|
85
|
-
<a name='L20'></a><a href='#L20'>20</a>
|
|
86
|
-
<a name='L21'></a><a href='#L21'>21</a>
|
|
87
|
-
<a name='L22'></a><a href='#L22'>22</a>
|
|
88
|
-
<a name='L23'></a><a href='#L23'>23</a>
|
|
89
|
-
<a name='L24'></a><a href='#L24'>24</a>
|
|
90
|
-
<a name='L25'></a><a href='#L25'>25</a>
|
|
91
|
-
<a name='L26'></a><a href='#L26'>26</a>
|
|
92
|
-
<a name='L27'></a><a href='#L27'>27</a>
|
|
93
|
-
<a name='L28'></a><a href='#L28'>28</a>
|
|
94
|
-
<a name='L29'></a><a href='#L29'>29</a>
|
|
95
|
-
<a name='L30'></a><a href='#L30'>30</a>
|
|
96
|
-
<a name='L31'></a><a href='#L31'>31</a>
|
|
97
|
-
<a name='L32'></a><a href='#L32'>32</a>
|
|
98
|
-
<a name='L33'></a><a href='#L33'>33</a>
|
|
99
|
-
<a name='L34'></a><a href='#L34'>34</a>
|
|
100
|
-
<a name='L35'></a><a href='#L35'>35</a>
|
|
101
|
-
<a name='L36'></a><a href='#L36'>36</a>
|
|
102
|
-
<a name='L37'></a><a href='#L37'>37</a>
|
|
103
|
-
<a name='L38'></a><a href='#L38'>38</a>
|
|
104
|
-
<a name='L39'></a><a href='#L39'>39</a>
|
|
105
|
-
<a name='L40'></a><a href='#L40'>40</a>
|
|
106
|
-
<a name='L41'></a><a href='#L41'>41</a>
|
|
107
|
-
<a name='L42'></a><a href='#L42'>42</a>
|
|
108
|
-
<a name='L43'></a><a href='#L43'>43</a>
|
|
109
|
-
<a name='L44'></a><a href='#L44'>44</a>
|
|
110
|
-
<a name='L45'></a><a href='#L45'>45</a>
|
|
111
|
-
<a name='L46'></a><a href='#L46'>46</a>
|
|
112
|
-
<a name='L47'></a><a href='#L47'>47</a>
|
|
113
|
-
<a name='L48'></a><a href='#L48'>48</a>
|
|
114
|
-
<a name='L49'></a><a href='#L49'>49</a>
|
|
115
|
-
<a name='L50'></a><a href='#L50'>50</a>
|
|
116
|
-
<a name='L51'></a><a href='#L51'>51</a>
|
|
117
|
-
<a name='L52'></a><a href='#L52'>52</a>
|
|
118
|
-
<a name='L53'></a><a href='#L53'>53</a>
|
|
119
|
-
<a name='L54'></a><a href='#L54'>54</a>
|
|
120
|
-
<a name='L55'></a><a href='#L55'>55</a>
|
|
121
|
-
<a name='L56'></a><a href='#L56'>56</a>
|
|
122
|
-
<a name='L57'></a><a href='#L57'>57</a>
|
|
123
|
-
<a name='L58'></a><a href='#L58'>58</a>
|
|
124
|
-
<a name='L59'></a><a href='#L59'>59</a>
|
|
125
|
-
<a name='L60'></a><a href='#L60'>60</a>
|
|
126
|
-
<a name='L61'></a><a href='#L61'>61</a>
|
|
127
|
-
<a name='L62'></a><a href='#L62'>62</a>
|
|
128
|
-
<a name='L63'></a><a href='#L63'>63</a>
|
|
129
|
-
<a name='L64'></a><a href='#L64'>64</a>
|
|
130
|
-
<a name='L65'></a><a href='#L65'>65</a>
|
|
131
|
-
<a name='L66'></a><a href='#L66'>66</a>
|
|
132
|
-
<a name='L67'></a><a href='#L67'>67</a>
|
|
133
|
-
<a name='L68'></a><a href='#L68'>68</a>
|
|
134
|
-
<a name='L69'></a><a href='#L69'>69</a>
|
|
135
|
-
<a name='L70'></a><a href='#L70'>70</a>
|
|
136
|
-
<a name='L71'></a><a href='#L71'>71</a>
|
|
137
|
-
<a name='L72'></a><a href='#L72'>72</a>
|
|
138
|
-
<a name='L73'></a><a href='#L73'>73</a>
|
|
139
|
-
<a name='L74'></a><a href='#L74'>74</a>
|
|
140
|
-
<a name='L75'></a><a href='#L75'>75</a>
|
|
141
|
-
<a name='L76'></a><a href='#L76'>76</a>
|
|
142
|
-
<a name='L77'></a><a href='#L77'>77</a>
|
|
143
|
-
<a name='L78'></a><a href='#L78'>78</a>
|
|
144
|
-
<a name='L79'></a><a href='#L79'>79</a>
|
|
145
|
-
<a name='L80'></a><a href='#L80'>80</a>
|
|
146
|
-
<a name='L81'></a><a href='#L81'>81</a>
|
|
147
|
-
<a name='L82'></a><a href='#L82'>82</a>
|
|
148
|
-
<a name='L83'></a><a href='#L83'>83</a>
|
|
149
|
-
<a name='L84'></a><a href='#L84'>84</a>
|
|
150
|
-
<a name='L85'></a><a href='#L85'>85</a>
|
|
151
|
-
<a name='L86'></a><a href='#L86'>86</a>
|
|
152
|
-
<a name='L87'></a><a href='#L87'>87</a>
|
|
153
|
-
<a name='L88'></a><a href='#L88'>88</a>
|
|
154
|
-
<a name='L89'></a><a href='#L89'>89</a>
|
|
155
|
-
<a name='L90'></a><a href='#L90'>90</a>
|
|
156
|
-
<a name='L91'></a><a href='#L91'>91</a>
|
|
157
|
-
<a name='L92'></a><a href='#L92'>92</a>
|
|
158
|
-
<a name='L93'></a><a href='#L93'>93</a>
|
|
159
|
-
<a name='L94'></a><a href='#L94'>94</a>
|
|
160
|
-
<a name='L95'></a><a href='#L95'>95</a>
|
|
161
|
-
<a name='L96'></a><a href='#L96'>96</a>
|
|
162
|
-
<a name='L97'></a><a href='#L97'>97</a>
|
|
163
|
-
<a name='L98'></a><a href='#L98'>98</a>
|
|
164
|
-
<a name='L99'></a><a href='#L99'>99</a>
|
|
165
|
-
<a name='L100'></a><a href='#L100'>100</a>
|
|
166
|
-
<a name='L101'></a><a href='#L101'>101</a>
|
|
167
|
-
<a name='L102'></a><a href='#L102'>102</a>
|
|
168
|
-
<a name='L103'></a><a href='#L103'>103</a>
|
|
169
|
-
<a name='L104'></a><a href='#L104'>104</a>
|
|
170
|
-
<a name='L105'></a><a href='#L105'>105</a>
|
|
171
|
-
<a name='L106'></a><a href='#L106'>106</a>
|
|
172
|
-
<a name='L107'></a><a href='#L107'>107</a>
|
|
173
|
-
<a name='L108'></a><a href='#L108'>108</a>
|
|
174
|
-
<a name='L109'></a><a href='#L109'>109</a>
|
|
175
|
-
<a name='L110'></a><a href='#L110'>110</a>
|
|
176
|
-
<a name='L111'></a><a href='#L111'>111</a>
|
|
177
|
-
<a name='L112'></a><a href='#L112'>112</a>
|
|
178
|
-
<a name='L113'></a><a href='#L113'>113</a>
|
|
179
|
-
<a name='L114'></a><a href='#L114'>114</a>
|
|
180
|
-
<a name='L115'></a><a href='#L115'>115</a>
|
|
181
|
-
<a name='L116'></a><a href='#L116'>116</a>
|
|
182
|
-
<a name='L117'></a><a href='#L117'>117</a>
|
|
183
|
-
<a name='L118'></a><a href='#L118'>118</a>
|
|
184
|
-
<a name='L119'></a><a href='#L119'>119</a>
|
|
185
|
-
<a name='L120'></a><a href='#L120'>120</a>
|
|
186
|
-
<a name='L121'></a><a href='#L121'>121</a>
|
|
187
|
-
<a name='L122'></a><a href='#L122'>122</a>
|
|
188
|
-
<a name='L123'></a><a href='#L123'>123</a>
|
|
189
|
-
<a name='L124'></a><a href='#L124'>124</a>
|
|
190
|
-
<a name='L125'></a><a href='#L125'>125</a>
|
|
191
|
-
<a name='L126'></a><a href='#L126'>126</a>
|
|
192
|
-
<a name='L127'></a><a href='#L127'>127</a>
|
|
193
|
-
<a name='L128'></a><a href='#L128'>128</a>
|
|
194
|
-
<a name='L129'></a><a href='#L129'>129</a>
|
|
195
|
-
<a name='L130'></a><a href='#L130'>130</a>
|
|
196
|
-
<a name='L131'></a><a href='#L131'>131</a>
|
|
197
|
-
<a name='L132'></a><a href='#L132'>132</a>
|
|
198
|
-
<a name='L133'></a><a href='#L133'>133</a>
|
|
199
|
-
<a name='L134'></a><a href='#L134'>134</a>
|
|
200
|
-
<a name='L135'></a><a href='#L135'>135</a>
|
|
201
|
-
<a name='L136'></a><a href='#L136'>136</a>
|
|
202
|
-
<a name='L137'></a><a href='#L137'>137</a>
|
|
203
|
-
<a name='L138'></a><a href='#L138'>138</a>
|
|
204
|
-
<a name='L139'></a><a href='#L139'>139</a>
|
|
205
|
-
<a name='L140'></a><a href='#L140'>140</a>
|
|
206
|
-
<a name='L141'></a><a href='#L141'>141</a>
|
|
207
|
-
<a name='L142'></a><a href='#L142'>142</a>
|
|
208
|
-
<a name='L143'></a><a href='#L143'>143</a>
|
|
209
|
-
<a name='L144'></a><a href='#L144'>144</a>
|
|
210
|
-
<a name='L145'></a><a href='#L145'>145</a>
|
|
211
|
-
<a name='L146'></a><a href='#L146'>146</a>
|
|
212
|
-
<a name='L147'></a><a href='#L147'>147</a>
|
|
213
|
-
<a name='L148'></a><a href='#L148'>148</a>
|
|
214
|
-
<a name='L149'></a><a href='#L149'>149</a>
|
|
215
|
-
<a name='L150'></a><a href='#L150'>150</a>
|
|
216
|
-
<a name='L151'></a><a href='#L151'>151</a>
|
|
217
|
-
<a name='L152'></a><a href='#L152'>152</a>
|
|
218
|
-
<a name='L153'></a><a href='#L153'>153</a>
|
|
219
|
-
<a name='L154'></a><a href='#L154'>154</a>
|
|
220
|
-
<a name='L155'></a><a href='#L155'>155</a>
|
|
221
|
-
<a name='L156'></a><a href='#L156'>156</a>
|
|
222
|
-
<a name='L157'></a><a href='#L157'>157</a>
|
|
223
|
-
<a name='L158'></a><a href='#L158'>158</a>
|
|
224
|
-
<a name='L159'></a><a href='#L159'>159</a>
|
|
225
|
-
<a name='L160'></a><a href='#L160'>160</a>
|
|
226
|
-
<a name='L161'></a><a href='#L161'>161</a>
|
|
227
|
-
<a name='L162'></a><a href='#L162'>162</a>
|
|
228
|
-
<a name='L163'></a><a href='#L163'>163</a>
|
|
229
|
-
<a name='L164'></a><a href='#L164'>164</a>
|
|
230
|
-
<a name='L165'></a><a href='#L165'>165</a>
|
|
231
|
-
<a name='L166'></a><a href='#L166'>166</a>
|
|
232
|
-
<a name='L167'></a><a href='#L167'>167</a>
|
|
233
|
-
<a name='L168'></a><a href='#L168'>168</a>
|
|
234
|
-
<a name='L169'></a><a href='#L169'>169</a>
|
|
235
|
-
<a name='L170'></a><a href='#L170'>170</a>
|
|
236
|
-
<a name='L171'></a><a href='#L171'>171</a>
|
|
237
|
-
<a name='L172'></a><a href='#L172'>172</a>
|
|
238
|
-
<a name='L173'></a><a href='#L173'>173</a>
|
|
239
|
-
<a name='L174'></a><a href='#L174'>174</a>
|
|
240
|
-
<a name='L175'></a><a href='#L175'>175</a>
|
|
241
|
-
<a name='L176'></a><a href='#L176'>176</a>
|
|
242
|
-
<a name='L177'></a><a href='#L177'>177</a>
|
|
243
|
-
<a name='L178'></a><a href='#L178'>178</a>
|
|
244
|
-
<a name='L179'></a><a href='#L179'>179</a>
|
|
245
|
-
<a name='L180'></a><a href='#L180'>180</a>
|
|
246
|
-
<a name='L181'></a><a href='#L181'>181</a>
|
|
247
|
-
<a name='L182'></a><a href='#L182'>182</a>
|
|
248
|
-
<a name='L183'></a><a href='#L183'>183</a>
|
|
249
|
-
<a name='L184'></a><a href='#L184'>184</a>
|
|
250
|
-
<a name='L185'></a><a href='#L185'>185</a>
|
|
251
|
-
<a name='L186'></a><a href='#L186'>186</a>
|
|
252
|
-
<a name='L187'></a><a href='#L187'>187</a>
|
|
253
|
-
<a name='L188'></a><a href='#L188'>188</a>
|
|
254
|
-
<a name='L189'></a><a href='#L189'>189</a>
|
|
255
|
-
<a name='L190'></a><a href='#L190'>190</a>
|
|
256
|
-
<a name='L191'></a><a href='#L191'>191</a>
|
|
257
|
-
<a name='L192'></a><a href='#L192'>192</a>
|
|
258
|
-
<a name='L193'></a><a href='#L193'>193</a>
|
|
259
|
-
<a name='L194'></a><a href='#L194'>194</a>
|
|
260
|
-
<a name='L195'></a><a href='#L195'>195</a>
|
|
261
|
-
<a name='L196'></a><a href='#L196'>196</a>
|
|
262
|
-
<a name='L197'></a><a href='#L197'>197</a>
|
|
263
|
-
<a name='L198'></a><a href='#L198'>198</a>
|
|
264
|
-
<a name='L199'></a><a href='#L199'>199</a>
|
|
265
|
-
<a name='L200'></a><a href='#L200'>200</a>
|
|
266
|
-
<a name='L201'></a><a href='#L201'>201</a>
|
|
267
|
-
<a name='L202'></a><a href='#L202'>202</a>
|
|
268
|
-
<a name='L203'></a><a href='#L203'>203</a>
|
|
269
|
-
<a name='L204'></a><a href='#L204'>204</a>
|
|
270
|
-
<a name='L205'></a><a href='#L205'>205</a>
|
|
271
|
-
<a name='L206'></a><a href='#L206'>206</a>
|
|
272
|
-
<a name='L207'></a><a href='#L207'>207</a>
|
|
273
|
-
<a name='L208'></a><a href='#L208'>208</a>
|
|
274
|
-
<a name='L209'></a><a href='#L209'>209</a>
|
|
275
|
-
<a name='L210'></a><a href='#L210'>210</a>
|
|
276
|
-
<a name='L211'></a><a href='#L211'>211</a>
|
|
277
|
-
<a name='L212'></a><a href='#L212'>212</a>
|
|
278
|
-
<a name='L213'></a><a href='#L213'>213</a>
|
|
279
|
-
<a name='L214'></a><a href='#L214'>214</a>
|
|
280
|
-
<a name='L215'></a><a href='#L215'>215</a>
|
|
281
|
-
<a name='L216'></a><a href='#L216'>216</a>
|
|
282
|
-
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
|
-
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
|
-
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<a name='L221'></a><a href='#L221'>221</a>
|
|
287
|
-
<a name='L222'></a><a href='#L222'>222</a>
|
|
288
|
-
<a name='L223'></a><a href='#L223'>223</a>
|
|
289
|
-
<a name='L224'></a><a href='#L224'>224</a>
|
|
290
|
-
<a name='L225'></a><a href='#L225'>225</a>
|
|
291
|
-
<a name='L226'></a><a href='#L226'>226</a>
|
|
292
|
-
<a name='L227'></a><a href='#L227'>227</a>
|
|
293
|
-
<a name='L228'></a><a href='#L228'>228</a>
|
|
294
|
-
<a name='L229'></a><a href='#L229'>229</a>
|
|
295
|
-
<a name='L230'></a><a href='#L230'>230</a>
|
|
296
|
-
<a name='L231'></a><a href='#L231'>231</a>
|
|
297
|
-
<a name='L232'></a><a href='#L232'>232</a>
|
|
298
|
-
<a name='L233'></a><a href='#L233'>233</a>
|
|
299
|
-
<a name='L234'></a><a href='#L234'>234</a>
|
|
300
|
-
<a name='L235'></a><a href='#L235'>235</a>
|
|
301
|
-
<a name='L236'></a><a href='#L236'>236</a>
|
|
302
|
-
<a name='L237'></a><a href='#L237'>237</a>
|
|
303
|
-
<a name='L238'></a><a href='#L238'>238</a>
|
|
304
|
-
<a name='L239'></a><a href='#L239'>239</a>
|
|
305
|
-
<a name='L240'></a><a href='#L240'>240</a>
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a>
|
|
330
|
-
<a name='L265'></a><a href='#L265'>265</a>
|
|
331
|
-
<a name='L266'></a><a href='#L266'>266</a>
|
|
332
|
-
<a name='L267'></a><a href='#L267'>267</a>
|
|
333
|
-
<a name='L268'></a><a href='#L268'>268</a>
|
|
334
|
-
<a name='L269'></a><a href='#L269'>269</a>
|
|
335
|
-
<a name='L270'></a><a href='#L270'>270</a>
|
|
336
|
-
<a name='L271'></a><a href='#L271'>271</a>
|
|
337
|
-
<a name='L272'></a><a href='#L272'>272</a>
|
|
338
|
-
<a name='L273'></a><a href='#L273'>273</a>
|
|
339
|
-
<a name='L274'></a><a href='#L274'>274</a>
|
|
340
|
-
<a name='L275'></a><a href='#L275'>275</a>
|
|
341
|
-
<a name='L276'></a><a href='#L276'>276</a>
|
|
342
|
-
<a name='L277'></a><a href='#L277'>277</a>
|
|
343
|
-
<a name='L278'></a><a href='#L278'>278</a>
|
|
344
|
-
<a name='L279'></a><a href='#L279'>279</a>
|
|
345
|
-
<a name='L280'></a><a href='#L280'>280</a>
|
|
346
|
-
<a name='L281'></a><a href='#L281'>281</a>
|
|
347
|
-
<a name='L282'></a><a href='#L282'>282</a>
|
|
348
|
-
<a name='L283'></a><a href='#L283'>283</a>
|
|
349
|
-
<a name='L284'></a><a href='#L284'>284</a>
|
|
350
|
-
<a name='L285'></a><a href='#L285'>285</a>
|
|
351
|
-
<a name='L286'></a><a href='#L286'>286</a>
|
|
352
|
-
<a name='L287'></a><a href='#L287'>287</a>
|
|
353
|
-
<a name='L288'></a><a href='#L288'>288</a>
|
|
354
|
-
<a name='L289'></a><a href='#L289'>289</a>
|
|
355
|
-
<a name='L290'></a><a href='#L290'>290</a>
|
|
356
|
-
<a name='L291'></a><a href='#L291'>291</a>
|
|
357
|
-
<a name='L292'></a><a href='#L292'>292</a>
|
|
358
|
-
<a name='L293'></a><a href='#L293'>293</a>
|
|
359
|
-
<a name='L294'></a><a href='#L294'>294</a>
|
|
360
|
-
<a name='L295'></a><a href='#L295'>295</a>
|
|
361
|
-
<a name='L296'></a><a href='#L296'>296</a>
|
|
362
|
-
<a name='L297'></a><a href='#L297'>297</a>
|
|
363
|
-
<a name='L298'></a><a href='#L298'>298</a>
|
|
364
|
-
<a name='L299'></a><a href='#L299'>299</a>
|
|
365
|
-
<a name='L300'></a><a href='#L300'>300</a>
|
|
366
|
-
<a name='L301'></a><a href='#L301'>301</a>
|
|
367
|
-
<a name='L302'></a><a href='#L302'>302</a>
|
|
368
|
-
<a name='L303'></a><a href='#L303'>303</a>
|
|
369
|
-
<a name='L304'></a><a href='#L304'>304</a>
|
|
370
|
-
<a name='L305'></a><a href='#L305'>305</a>
|
|
371
|
-
<a name='L306'></a><a href='#L306'>306</a>
|
|
372
|
-
<a name='L307'></a><a href='#L307'>307</a>
|
|
373
|
-
<a name='L308'></a><a href='#L308'>308</a>
|
|
374
|
-
<a name='L309'></a><a href='#L309'>309</a>
|
|
375
|
-
<a name='L310'></a><a href='#L310'>310</a>
|
|
376
|
-
<a name='L311'></a><a href='#L311'>311</a>
|
|
377
|
-
<a name='L312'></a><a href='#L312'>312</a>
|
|
378
|
-
<a name='L313'></a><a href='#L313'>313</a>
|
|
379
|
-
<a name='L314'></a><a href='#L314'>314</a>
|
|
380
|
-
<a name='L315'></a><a href='#L315'>315</a>
|
|
381
|
-
<a name='L316'></a><a href='#L316'>316</a>
|
|
382
|
-
<a name='L317'></a><a href='#L317'>317</a>
|
|
383
|
-
<a name='L318'></a><a href='#L318'>318</a>
|
|
384
|
-
<a name='L319'></a><a href='#L319'>319</a>
|
|
385
|
-
<a name='L320'></a><a href='#L320'>320</a>
|
|
386
|
-
<a name='L321'></a><a href='#L321'>321</a>
|
|
387
|
-
<a name='L322'></a><a href='#L322'>322</a>
|
|
388
|
-
<a name='L323'></a><a href='#L323'>323</a>
|
|
389
|
-
<a name='L324'></a><a href='#L324'>324</a>
|
|
390
|
-
<a name='L325'></a><a href='#L325'>325</a>
|
|
391
|
-
<a name='L326'></a><a href='#L326'>326</a>
|
|
392
|
-
<a name='L327'></a><a href='#L327'>327</a>
|
|
393
|
-
<a name='L328'></a><a href='#L328'>328</a>
|
|
394
|
-
<a name='L329'></a><a href='#L329'>329</a>
|
|
395
|
-
<a name='L330'></a><a href='#L330'>330</a>
|
|
396
|
-
<a name='L331'></a><a href='#L331'>331</a>
|
|
397
|
-
<a name='L332'></a><a href='#L332'>332</a>
|
|
398
|
-
<a name='L333'></a><a href='#L333'>333</a>
|
|
399
|
-
<a name='L334'></a><a href='#L334'>334</a>
|
|
400
|
-
<a name='L335'></a><a href='#L335'>335</a>
|
|
401
|
-
<a name='L336'></a><a href='#L336'>336</a>
|
|
402
|
-
<a name='L337'></a><a href='#L337'>337</a>
|
|
403
|
-
<a name='L338'></a><a href='#L338'>338</a>
|
|
404
|
-
<a name='L339'></a><a href='#L339'>339</a>
|
|
405
|
-
<a name='L340'></a><a href='#L340'>340</a>
|
|
406
|
-
<a name='L341'></a><a href='#L341'>341</a>
|
|
407
|
-
<a name='L342'></a><a href='#L342'>342</a>
|
|
408
|
-
<a name='L343'></a><a href='#L343'>343</a>
|
|
409
|
-
<a name='L344'></a><a href='#L344'>344</a>
|
|
410
|
-
<a name='L345'></a><a href='#L345'>345</a>
|
|
411
|
-
<a name='L346'></a><a href='#L346'>346</a>
|
|
412
|
-
<a name='L347'></a><a href='#L347'>347</a>
|
|
413
|
-
<a name='L348'></a><a href='#L348'>348</a>
|
|
414
|
-
<a name='L349'></a><a href='#L349'>349</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
415
|
-
<span class="cline-any cline-neutral"> </span>
|
|
416
|
-
<span class="cline-any cline-neutral"> </span>
|
|
417
|
-
<span class="cline-any cline-neutral"> </span>
|
|
418
|
-
<span class="cline-any cline-neutral"> </span>
|
|
419
|
-
<span class="cline-any cline-neutral"> </span>
|
|
420
|
-
<span class="cline-any cline-neutral"> </span>
|
|
421
|
-
<span class="cline-any cline-neutral"> </span>
|
|
422
|
-
<span class="cline-any cline-neutral"> </span>
|
|
423
|
-
<span class="cline-any cline-neutral"> </span>
|
|
424
|
-
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-neutral"> </span>
|
|
426
|
-
<span class="cline-any cline-neutral"> </span>
|
|
427
|
-
<span class="cline-any cline-neutral"> </span>
|
|
428
|
-
<span class="cline-any cline-neutral"> </span>
|
|
429
|
-
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-neutral"> </span>
|
|
431
|
-
<span class="cline-any cline-neutral"> </span>
|
|
432
|
-
<span class="cline-any cline-neutral"> </span>
|
|
433
|
-
<span class="cline-any cline-neutral"> </span>
|
|
434
|
-
<span class="cline-any cline-neutral"> </span>
|
|
435
|
-
<span class="cline-any cline-neutral"> </span>
|
|
436
|
-
<span class="cline-any cline-neutral"> </span>
|
|
437
|
-
<span class="cline-any cline-neutral"> </span>
|
|
438
|
-
<span class="cline-any cline-yes">1x</span>
|
|
439
|
-
<span class="cline-any cline-yes">1x</span>
|
|
440
|
-
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-neutral"> </span>
|
|
442
|
-
<span class="cline-any cline-neutral"> </span>
|
|
443
|
-
<span class="cline-any cline-neutral"> </span>
|
|
444
|
-
<span class="cline-any cline-neutral"> </span>
|
|
445
|
-
<span class="cline-any cline-neutral"> </span>
|
|
446
|
-
<span class="cline-any cline-neutral"> </span>
|
|
447
|
-
<span class="cline-any cline-neutral"> </span>
|
|
448
|
-
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-neutral"> </span>
|
|
450
|
-
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-neutral"> </span>
|
|
452
|
-
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-neutral"> </span>
|
|
454
|
-
<span class="cline-any cline-neutral"> </span>
|
|
455
|
-
<span class="cline-any cline-neutral"> </span>
|
|
456
|
-
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-neutral"> </span>
|
|
458
|
-
<span class="cline-any cline-neutral"> </span>
|
|
459
|
-
<span class="cline-any cline-yes">16x</span>
|
|
460
|
-
<span class="cline-any cline-yes">16x</span>
|
|
461
|
-
<span class="cline-any cline-yes">16x</span>
|
|
462
|
-
<span class="cline-any cline-neutral"> </span>
|
|
463
|
-
<span class="cline-any cline-yes">16x</span>
|
|
464
|
-
<span class="cline-any cline-yes">34x</span>
|
|
465
|
-
<span class="cline-any cline-yes">34x</span>
|
|
466
|
-
<span class="cline-any cline-yes">34x</span>
|
|
467
|
-
<span class="cline-any cline-yes">34x</span>
|
|
468
|
-
<span class="cline-any cline-yes">34x</span>
|
|
469
|
-
<span class="cline-any cline-neutral"> </span>
|
|
470
|
-
<span class="cline-any cline-neutral"> </span>
|
|
471
|
-
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-yes">16x</span>
|
|
473
|
-
<span class="cline-any cline-neutral"> </span>
|
|
474
|
-
<span class="cline-any cline-neutral"> </span>
|
|
475
|
-
<span class="cline-any cline-neutral"> </span>
|
|
476
|
-
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-neutral"> </span>
|
|
478
|
-
<span class="cline-any cline-yes">34x</span>
|
|
479
|
-
<span class="cline-any cline-yes">34x</span>
|
|
480
|
-
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-neutral"> </span>
|
|
482
|
-
<span class="cline-any cline-yes">34x</span>
|
|
483
|
-
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-yes">34x</span>
|
|
485
|
-
<span class="cline-any cline-yes">170x</span>
|
|
486
|
-
<span class="cline-any cline-yes">170x</span>
|
|
487
|
-
<span class="cline-any cline-neutral"> </span>
|
|
488
|
-
<span class="cline-any cline-yes">54x</span>
|
|
489
|
-
<span class="cline-any cline-yes">54x</span>
|
|
490
|
-
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-neutral"> </span>
|
|
492
|
-
<span class="cline-any cline-yes">54x</span>
|
|
493
|
-
<span class="cline-any cline-yes">30x</span>
|
|
494
|
-
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-neutral"> </span>
|
|
497
|
-
<span class="cline-any cline-yes">34x</span>
|
|
498
|
-
<span class="cline-any cline-neutral"> </span>
|
|
499
|
-
<span class="cline-any cline-neutral"> </span>
|
|
500
|
-
<span class="cline-any cline-yes">34x</span>
|
|
501
|
-
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-yes">34x</span>
|
|
503
|
-
<span class="cline-any cline-neutral"> </span>
|
|
504
|
-
<span class="cline-any cline-neutral"> </span>
|
|
505
|
-
<span class="cline-any cline-neutral"> </span>
|
|
506
|
-
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-neutral"> </span>
|
|
508
|
-
<span class="cline-any cline-yes">34x</span>
|
|
509
|
-
<span class="cline-any cline-yes">12x</span>
|
|
510
|
-
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-neutral"> </span>
|
|
512
|
-
<span class="cline-any cline-yes">34x</span>
|
|
513
|
-
<span class="cline-any cline-no"> </span>
|
|
514
|
-
<span class="cline-any cline-neutral"> </span>
|
|
515
|
-
<span class="cline-any cline-neutral"> </span>
|
|
516
|
-
<span class="cline-any cline-yes">34x</span>
|
|
517
|
-
<span class="cline-any cline-neutral"> </span>
|
|
518
|
-
<span class="cline-any cline-neutral"> </span>
|
|
519
|
-
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-neutral"> </span>
|
|
521
|
-
<span class="cline-any cline-neutral"> </span>
|
|
522
|
-
<span class="cline-any cline-yes">54x</span>
|
|
523
|
-
<span class="cline-any cline-yes">54x</span>
|
|
524
|
-
<span class="cline-any cline-neutral"> </span>
|
|
525
|
-
<span class="cline-any cline-yes">54x</span>
|
|
526
|
-
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-neutral"> </span>
|
|
528
|
-
<span class="cline-any cline-neutral"> </span>
|
|
529
|
-
<span class="cline-any cline-neutral"> </span>
|
|
530
|
-
<span class="cline-any cline-neutral"> </span>
|
|
531
|
-
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-yes">54x</span>
|
|
533
|
-
<span class="cline-any cline-yes">54x</span>
|
|
534
|
-
<span class="cline-any cline-neutral"> </span>
|
|
535
|
-
<span class="cline-any cline-neutral"> </span>
|
|
536
|
-
<span class="cline-any cline-neutral"> </span>
|
|
537
|
-
<span class="cline-any cline-yes">54x</span>
|
|
538
|
-
<span class="cline-any cline-no"> </span>
|
|
539
|
-
<span class="cline-any cline-neutral"> </span>
|
|
540
|
-
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-yes">54x</span>
|
|
543
|
-
<span class="cline-any cline-no"> </span>
|
|
544
|
-
<span class="cline-any cline-neutral"> </span>
|
|
545
|
-
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-yes">54x</span>
|
|
548
|
-
<span class="cline-any cline-yes">54x</span>
|
|
549
|
-
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-yes">54x</span>
|
|
551
|
-
<span class="cline-any cline-yes">10x</span>
|
|
552
|
-
<span class="cline-any cline-yes">10x</span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-neutral"> </span>
|
|
556
|
-
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-neutral"> </span>
|
|
558
|
-
<span class="cline-any cline-yes">54x</span>
|
|
559
|
-
<span class="cline-any cline-yes">10x</span>
|
|
560
|
-
<span class="cline-any cline-neutral"> </span>
|
|
561
|
-
<span class="cline-any cline-yes">54x</span>
|
|
562
|
-
<span class="cline-any cline-no"> </span>
|
|
563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
566
|
-
<span class="cline-any cline-yes">54x</span>
|
|
567
|
-
<span class="cline-any cline-yes">10x</span>
|
|
568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
570
|
-
<span class="cline-any cline-neutral"> </span>
|
|
571
|
-
<span class="cline-any cline-yes">54x</span>
|
|
572
|
-
<span class="cline-any cline-yes">54x</span>
|
|
573
|
-
<span class="cline-any cline-yes">64x</span>
|
|
574
|
-
<span class="cline-any cline-yes">64x</span>
|
|
575
|
-
<span class="cline-any cline-yes">64x</span>
|
|
576
|
-
<span class="cline-any cline-yes">64x</span>
|
|
577
|
-
<span class="cline-any cline-neutral"> </span>
|
|
578
|
-
<span class="cline-any cline-neutral"> </span>
|
|
579
|
-
<span class="cline-any cline-neutral"> </span>
|
|
580
|
-
<span class="cline-any cline-yes">54x</span>
|
|
581
|
-
<span class="cline-any cline-yes">10x</span>
|
|
582
|
-
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-neutral"> </span>
|
|
584
|
-
<span class="cline-any cline-yes">54x</span>
|
|
585
|
-
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-neutral"> </span>
|
|
587
|
-
<span class="cline-any cline-neutral"> </span>
|
|
588
|
-
<span class="cline-any cline-neutral"> </span>
|
|
589
|
-
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-yes">34x</span>
|
|
591
|
-
<span class="cline-any cline-neutral"> </span>
|
|
592
|
-
<span class="cline-any cline-neutral"> </span>
|
|
593
|
-
<span class="cline-any cline-yes">34x</span>
|
|
594
|
-
<span class="cline-any cline-neutral"> </span>
|
|
595
|
-
<span class="cline-any cline-yes">34x</span>
|
|
596
|
-
<span class="cline-any cline-yes">12x</span>
|
|
597
|
-
<span class="cline-any cline-neutral"> </span>
|
|
598
|
-
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-neutral"> </span>
|
|
600
|
-
<span class="cline-any cline-yes">34x</span>
|
|
601
|
-
<span class="cline-any cline-yes">170x</span>
|
|
602
|
-
<span class="cline-any cline-yes">170x</span>
|
|
603
|
-
<span class="cline-any cline-yes">10x</span>
|
|
604
|
-
<span class="cline-any cline-yes">10x</span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-neutral"> </span>
|
|
607
|
-
<span class="cline-any cline-neutral"> </span>
|
|
608
|
-
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-neutral"> </span>
|
|
610
|
-
<span class="cline-any cline-neutral"> </span>
|
|
611
|
-
<span class="cline-any cline-yes">34x</span>
|
|
612
|
-
<span class="cline-any cline-neutral"> </span>
|
|
613
|
-
<span class="cline-any cline-yes">34x</span>
|
|
614
|
-
<span class="cline-any cline-yes">12x</span>
|
|
615
|
-
<span class="cline-any cline-yes">12x</span>
|
|
616
|
-
<span class="cline-any cline-yes">12x</span>
|
|
617
|
-
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
619
|
-
<span class="cline-any cline-no"> </span>
|
|
620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
624
|
-
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
627
|
-
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-neutral"> </span>
|
|
629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
630
|
-
<span class="cline-any cline-yes">22x</span>
|
|
631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-yes">22x</span>
|
|
633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
635
|
-
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
638
|
-
<span class="cline-any cline-neutral"> </span>
|
|
639
|
-
<span class="cline-any cline-neutral"> </span>
|
|
640
|
-
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-neutral"> </span>
|
|
642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
644
|
-
<span class="cline-any cline-neutral"> </span>
|
|
645
|
-
<span class="cline-any cline-neutral"> </span>
|
|
646
|
-
<span class="cline-any cline-neutral"> </span>
|
|
647
|
-
<span class="cline-any cline-neutral"> </span>
|
|
648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
650
|
-
<span class="cline-any cline-yes">10x</span>
|
|
651
|
-
<span class="cline-any cline-yes">10x</span>
|
|
652
|
-
<span class="cline-any cline-neutral"> </span>
|
|
653
|
-
<span class="cline-any cline-yes">10x</span>
|
|
654
|
-
<span class="cline-any cline-yes">10x</span>
|
|
655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
656
|
-
<span class="cline-any cline-yes">10x</span>
|
|
657
|
-
<span class="cline-any cline-yes">10x</span>
|
|
658
|
-
<span class="cline-any cline-yes">10x</span>
|
|
659
|
-
<span class="cline-any cline-yes">10x</span>
|
|
660
|
-
<span class="cline-any cline-no"> </span>
|
|
661
|
-
<span class="cline-any cline-neutral"> </span>
|
|
662
|
-
<span class="cline-any cline-yes">10x</span>
|
|
663
|
-
<span class="cline-any cline-neutral"> </span>
|
|
664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
666
|
-
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-neutral"> </span>
|
|
668
|
-
<span class="cline-any cline-yes">10x</span>
|
|
669
|
-
<span class="cline-any cline-yes">10x</span>
|
|
670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-neutral"> </span>
|
|
675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
677
|
-
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
679
|
-
<span class="cline-any cline-neutral"> </span>
|
|
680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
681
|
-
<span class="cline-any cline-yes">64x</span>
|
|
682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
683
|
-
<span class="cline-any cline-yes">64x</span>
|
|
684
|
-
<span class="cline-any cline-yes">21x</span>
|
|
685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
686
|
-
<span class="cline-any cline-neutral"> </span>
|
|
687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
688
|
-
<span class="cline-any cline-yes">43x</span>
|
|
689
|
-
<span class="cline-any cline-yes">64x</span>
|
|
690
|
-
<span class="cline-any cline-no"> </span>
|
|
691
|
-
<span class="cline-any cline-neutral"> </span>
|
|
692
|
-
<span class="cline-any cline-neutral"> </span>
|
|
693
|
-
<span class="cline-any cline-yes">43x</span>
|
|
694
|
-
<span class="cline-any cline-neutral"> </span>
|
|
695
|
-
<span class="cline-any cline-yes">43x</span>
|
|
696
|
-
<span class="cline-any cline-no"> </span>
|
|
697
|
-
<span class="cline-any cline-neutral"> </span>
|
|
698
|
-
<span class="cline-any cline-neutral"> </span>
|
|
699
|
-
<span class="cline-any cline-yes">43x</span>
|
|
700
|
-
<span class="cline-any cline-neutral"> </span>
|
|
701
|
-
<span class="cline-any cline-neutral"> </span>
|
|
702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-neutral"> </span>
|
|
705
|
-
<span class="cline-any cline-neutral"> </span>
|
|
706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-neutral"> </span>
|
|
708
|
-
<span class="cline-any cline-yes">64x</span>
|
|
709
|
-
<span class="cline-any cline-yes">3x</span>
|
|
710
|
-
<span class="cline-any cline-yes">3x</span>
|
|
711
|
-
<span class="cline-any cline-yes">4x</span>
|
|
712
|
-
<span class="cline-any cline-yes">4x</span>
|
|
713
|
-
<span class="cline-any cline-yes">4x</span>
|
|
714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-neutral"> </span>
|
|
716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-yes">3x</span>
|
|
721
|
-
<span class="cline-any cline-neutral"> </span>
|
|
722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
724
|
-
<span class="cline-any cline-neutral"> </span>
|
|
725
|
-
<span class="cline-any cline-neutral"> </span>
|
|
726
|
-
<span class="cline-any cline-neutral"> </span>
|
|
727
|
-
<span class="cline-any cline-yes">10x</span>
|
|
728
|
-
<span class="cline-any cline-yes">10x</span>
|
|
729
|
-
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
732
|
-
<span class="cline-any cline-neutral"> </span>
|
|
733
|
-
<span class="cline-any cline-no"> </span>
|
|
734
|
-
<span class="cline-any cline-neutral"> </span>
|
|
735
|
-
<span class="cline-any cline-neutral"> </span>
|
|
736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
738
|
-
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-yes">88x</span>
|
|
740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
741
|
-
<span class="cline-any cline-neutral"> </span>
|
|
742
|
-
<span class="cline-any cline-neutral"> </span>
|
|
743
|
-
<span class="cline-any cline-neutral"> </span>
|
|
744
|
-
<span class="cline-any cline-neutral"> </span>
|
|
745
|
-
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-neutral"> </span>
|
|
747
|
-
<span class="cline-any cline-neutral"> </span>
|
|
748
|
-
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-neutral"> </span>
|
|
750
|
-
<span class="cline-any cline-neutral"> </span>
|
|
751
|
-
<span class="cline-any cline-yes">53x</span>
|
|
752
|
-
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-neutral"> </span>
|
|
754
|
-
<span class="cline-any cline-neutral"> </span>
|
|
755
|
-
<span class="cline-any cline-yes">53x</span>
|
|
756
|
-
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-neutral"> </span>
|
|
758
|
-
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-neutral"> </span>
|
|
760
|
-
<span class="cline-any cline-yes">88x</span>
|
|
761
|
-
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type {
|
|
763
|
-
OpRouteNode,
|
|
764
|
-
OpOperationNode,
|
|
765
|
-
OpParamNode,
|
|
766
|
-
OpRequestNode,
|
|
767
|
-
OpResponseNode,
|
|
768
|
-
OpResponseHeaderNode,
|
|
769
|
-
HttpMethod,
|
|
770
|
-
ModelNode,
|
|
771
|
-
SourceLocation,
|
|
772
|
-
SecurityNode,
|
|
773
|
-
} from '@contractkit/core';
|
|
774
|
-
import type {
|
|
775
|
-
NormalizedDocument,
|
|
776
|
-
NormalizedPathItem,
|
|
777
|
-
NormalizedOperation,
|
|
778
|
-
NormalizedParameter,
|
|
779
|
-
NormalizedRequestBody,
|
|
780
|
-
NormalizedResponse,
|
|
781
|
-
} from './types.js';
|
|
782
|
-
import { schemaToTypeNode, extractInlineModel } from './schema-to-ast.js';
|
|
783
|
-
import type { SchemaContext } from './schema-to-ast.js';
|
|
784
|
-
import type { WarningCollector } from './warnings.js';
|
|
785
|
-
|
|
786
|
-
const LOC: SourceLocation = { file: '', line: 0 };
|
|
787
|
-
const HTTP_METHODS: HttpMethod[] = ['get', 'post', 'put', 'patch', 'delete'];
|
|
788
|
-
|
|
789
|
-
// ─── Public API ───────────────────────────────────────────────────────────
|
|
790
|
-
|
|
791
|
-
export interface PathsContext {
|
|
792
|
-
circularRefs: Set<string>;
|
|
793
|
-
warnings: WarningCollector;
|
|
794
|
-
includeComments: boolean;
|
|
795
|
-
namedSchemas: Record<string, unknown>;
|
|
796
|
-
/** Accumulates inline models extracted from request/response bodies. */
|
|
797
|
-
extractedModels: ModelNode[];
|
|
798
|
-
/** Global security from the spec (for detecting explicit overrides). */
|
|
799
|
-
globalSecurity?: Record<string, string[]>[];
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
/**
|
|
803
|
-
* Convert OpenAPI paths to OpRouteNode[].
|
|
804
|
-
* Returns routes along with a tag mapping for each route.
|
|
805
|
-
*/
|
|
806
|
-
export function pathsToRoutes(doc: NormalizedDocument, ctx: PathsContext): { routes: OpRouteNode[]; routeTags: Map<OpRouteNode, string> } {
|
|
807
|
-
const routes: OpRouteNode[] = [];
|
|
808
|
-
const routeTags = new Map<OpRouteNode, string>();
|
|
809
|
-
const paths = doc.paths ?? <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
810
|
-
|
|
811
|
-
for (const [path, pathItem] of Object.entries(paths)) {
|
|
812
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!pathItem) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
813
|
-
const result = pathItemToRoute(path, pathItem, ctx);
|
|
814
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (result) {
|
|
815
|
-
routes.push(result.route);
|
|
816
|
-
routeTags.set(result.route, result.tag);
|
|
817
|
-
}
|
|
818
|
-
}
|
|
819
|
-
|
|
820
|
-
return { routes, routeTags };
|
|
821
|
-
}
|
|
822
|
-
|
|
823
|
-
// ─── Path Item → Route ───────────────────────────────────────────────────
|
|
824
|
-
|
|
825
|
-
function pathItemToRoute(path: string, pathItem: NormalizedPathItem, ctx: PathsContext): { route: OpRouteNode; tag: string } | null {
|
|
826
|
-
const operations: OpOperationNode[] = [];
|
|
827
|
-
let primaryTag = 'default';
|
|
828
|
-
|
|
829
|
-
// Collect path-level parameters
|
|
830
|
-
const pathParams = (pathItem.parameters ?? []).filter(p => p.in === 'path');
|
|
831
|
-
|
|
832
|
-
for (const method of HTTP_METHODS) {
|
|
833
|
-
const op = pathItem[method];
|
|
834
|
-
if (!op) continue;
|
|
835
|
-
|
|
836
|
-
const opNode = operationToNode(method, op, path, ctx);
|
|
837
|
-
operations.push(opNode);
|
|
838
|
-
|
|
839
|
-
// Use first tag of first operation as the route's tag
|
|
840
|
-
if (op.tags && op.tags.length > 0 && primaryTag === 'default') {
|
|
841
|
-
primaryTag = op.tags[0]!;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (operations.length === 0) <span class="cstat-no" title="statement not covered" >return null;</span>
|
|
846
|
-
|
|
847
|
-
// Build params from path-level + inferred from path template
|
|
848
|
-
const params = buildPathParams(path, pathParams, pathItem, ctx);
|
|
849
|
-
|
|
850
|
-
const route: OpRouteNode = {
|
|
851
|
-
path,
|
|
852
|
-
operations,
|
|
853
|
-
loc: LOC,
|
|
854
|
-
};
|
|
855
|
-
|
|
856
|
-
if (params.length > 0) {
|
|
857
|
-
route.params = { kind: 'params', nodes: params };
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (pathItem.description && <span class="branch-1 cbranch-no" title="branch not covered" >ctx.includeComments) {</span>
|
|
861
|
-
<span class="cstat-no" title="statement not covered" > route.description = pathItem.description;</span>
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
return { route, tag: primaryTag };
|
|
865
|
-
}
|
|
866
|
-
|
|
867
|
-
// ─── Operation → Node ─────────────────────────────────────────────────────
|
|
868
|
-
|
|
869
|
-
function operationToNode(method: HttpMethod, op: NormalizedOperation, path: string, ctx: PathsContext): OpOperationNode {
|
|
870
|
-
const pathPrefix = `#/paths/${encodePathSegment(path)}/${method}`;
|
|
871
|
-
const schemaCtx = makeSchemaCtx(ctx, pathPrefix);
|
|
872
|
-
|
|
873
|
-
const node: OpOperationNode = {
|
|
874
|
-
method,
|
|
875
|
-
responses: [],
|
|
876
|
-
loc: LOC,
|
|
877
|
-
};
|
|
878
|
-
|
|
879
|
-
// operationId → sdk
|
|
880
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (op.operationId) {
|
|
881
|
-
node.sdk = op.operationId;
|
|
882
|
-
}
|
|
883
|
-
|
|
884
|
-
// Description
|
|
885
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (op.description && <span class="branch-1 cbranch-no" title="branch not covered" >ctx.includeComments) {</span>
|
|
886
|
-
<span class="cstat-no" title="statement not covered" > node.description = op.description;</span>
|
|
887
|
-
}
|
|
888
|
-
|
|
889
|
-
// Deprecated
|
|
890
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (op.deprecated) {
|
|
891
|
-
<span class="cstat-no" title="statement not covered" > node.modifiers = ['deprecated'];</span>
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
// Query and header parameters
|
|
895
|
-
const queryParams: OpParamNode[] = [];
|
|
896
|
-
const headerParams: OpParamNode[] = [];
|
|
897
|
-
|
|
898
|
-
for (const param of op.parameters ?? []) {
|
|
899
|
-
if (param.in === 'query') {
|
|
900
|
-
queryParams.push(parameterToNode(param, schemaCtx));
|
|
901
|
-
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="else path not taken" >E</span>} else if (param.in === 'header') {</span>
|
|
902
|
-
<span class="cstat-no" title="statement not covered" > headerParams.push(parameterToNode(param, schemaCtx));</span>
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
|
|
906
|
-
if (queryParams.length > 0) {
|
|
907
|
-
node.query = { kind: 'params', nodes: queryParams };
|
|
908
|
-
}
|
|
909
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (headerParams.length > 0) {
|
|
910
|
-
<span class="cstat-no" title="statement not covered" > node.headers = { kind: 'params', nodes: headerParams };</span>
|
|
911
|
-
}
|
|
912
|
-
|
|
913
|
-
// Request body
|
|
914
|
-
if (op.requestBody) {
|
|
915
|
-
node.request = requestBodyToNode(op.requestBody, op.operationId ?? <span class="branch-1 cbranch-no" title="branch not covered" >`${method}${toPascalCase(path)}`, s</span>chemaCtx, ctx);
|
|
916
|
-
}
|
|
917
|
-
|
|
918
|
-
// Responses
|
|
919
|
-
const responses = op.responses ?? <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
920
|
-
for (const [code, resp] of Object.entries(responses)) {
|
|
921
|
-
const statusCode = parseInt(code, 10);
|
|
922
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (isNaN(statusCode)) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
923
|
-
const respNode = responseToNode(statusCode, resp, op.operationId ?? <span class="branch-1 cbranch-no" title="branch not covered" >`${method}${toPascalCase(path)}`, s</span>chemaCtx, ctx);
|
|
924
|
-
node.responses.push(respNode);
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
// Security
|
|
928
|
-
if (op.security !== undefined) {
|
|
929
|
-
node.security = convertSecurity(op.security);
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
return node;
|
|
933
|
-
}
|
|
934
|
-
|
|
935
|
-
// ─── Parameters ───────────────────────────────────────────────────────────
|
|
936
|
-
|
|
937
|
-
function buildPathParams(path: string, pathLevelParams: NormalizedParameter[], pathItem: NormalizedPathItem, ctx: PathsContext): OpParamNode[] {
|
|
938
|
-
const schemaCtx = makeSchemaCtx(ctx, `#/paths/${encodePathSegment(path)}`);
|
|
939
|
-
|
|
940
|
-
// Collect all path params from path-level and operation-level
|
|
941
|
-
const paramMap = new Map<string, NormalizedParameter>();
|
|
942
|
-
|
|
943
|
-
for (const p of pathLevelParams) {
|
|
944
|
-
paramMap.set(p.name, p);
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
// Also check operation-level path params
|
|
948
|
-
for (const method of HTTP_METHODS) {
|
|
949
|
-
const op = pathItem[method];
|
|
950
|
-
if (!op?.parameters) continue;
|
|
951
|
-
for (const p of op.parameters) {
|
|
952
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (p.in === 'path' && <span class="branch-1 cbranch-no" title="branch not covered" >!paramMap.has(p.name)) {</span>
|
|
953
|
-
<span class="cstat-no" title="statement not covered" > paramMap.set(p.name, p);</span>
|
|
954
|
-
}
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
|
|
958
|
-
// Extract param names from path template
|
|
959
|
-
const templateNames = [...path.matchAll(/\{([^}]+)\}/g)].map(m => m[1]!);
|
|
960
|
-
|
|
961
|
-
return templateNames.map(name => {
|
|
962
|
-
const param = paramMap.get(name);
|
|
963
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (param) {
|
|
964
|
-
return parameterToNode(param, schemaCtx);
|
|
965
|
-
}
|
|
966
|
-
// Infer as uuid if no schema is given
|
|
967
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
968
|
-
name,
|
|
969
|
-
optional: false,
|
|
970
|
-
nullable: false,
|
|
971
|
-
type: { kind: 'scalar' as const, name: 'string' as const },
|
|
972
|
-
loc: LOC,
|
|
973
|
-
};
|
|
974
|
-
});
|
|
975
|
-
}
|
|
976
|
-
|
|
977
|
-
function parameterToNode(param: NormalizedParameter, ctx: SchemaContext): OpParamNode {
|
|
978
|
-
const type = param.schema ? schemaToTypeNode(param.schema, ctx) : <span class="branch-1 cbranch-no" title="branch not covered" >{ kind: 'scalar' as const, name: 'string' as const };</span>
|
|
979
|
-
|
|
980
|
-
return {
|
|
981
|
-
name: param.name,
|
|
982
|
-
optional: param.in !== 'path' && !param.required,
|
|
983
|
-
nullable: false,
|
|
984
|
-
type,
|
|
985
|
-
description: ctx.includeComments ? param.description : undefined,
|
|
986
|
-
loc: LOC,
|
|
987
|
-
};
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
// ─── Request Body ─────────────────────────────────────────────────────────
|
|
991
|
-
|
|
992
|
-
function requestBodyToNode(
|
|
993
|
-
reqBody: NormalizedRequestBody,
|
|
994
|
-
operationName: string,
|
|
995
|
-
schemaCtx: SchemaContext,
|
|
996
|
-
ctx: PathsContext,
|
|
997
|
-
): OpRequestNode | undefined {
|
|
998
|
-
const content = reqBody.content;
|
|
999
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!content) <span class="cstat-no" title="statement not covered" >return undefined;</span>
|
|
1000
|
-
|
|
1001
|
-
const supported = new Set<string>(['application/json', 'application/x-www-form-urlencoded', 'multipart/form-data']);
|
|
1002
|
-
const bodies: OpRequestNode['bodies'] = [];
|
|
1003
|
-
|
|
1004
|
-
for (const [contentType, mediaType] of Object.entries(content)) {
|
|
1005
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!supported.has(contentType) || !mediaType?.schema) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
1006
|
-
const { typeNode, model } = extractInlineModel(mediaType.schema, `${toPascalCase(operationName)}Request`, schemaCtx);
|
|
1007
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (model) {
|
|
1008
|
-
<span class="cstat-no" title="statement not covered" > ctx.extractedModels.push(model);</span>
|
|
1009
|
-
}
|
|
1010
|
-
bodies.push({
|
|
1011
|
-
contentType: contentType as OpRequestNode['bodies'][number]['contentType'],
|
|
1012
|
-
bodyType: typeNode,
|
|
1013
|
-
});
|
|
1014
|
-
}
|
|
1015
|
-
|
|
1016
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (bodies.length === 0) <span class="cstat-no" title="statement not covered" >return undefined;</span>
|
|
1017
|
-
return { bodies };
|
|
1018
|
-
}
|
|
1019
|
-
|
|
1020
|
-
// ─── Responses ────────────────────────────────────────────────────────────
|
|
1021
|
-
|
|
1022
|
-
function responseToNode(
|
|
1023
|
-
statusCode: number,
|
|
1024
|
-
resp: NormalizedResponse,
|
|
1025
|
-
operationName: string,
|
|
1026
|
-
schemaCtx: SchemaContext,
|
|
1027
|
-
ctx: PathsContext,
|
|
1028
|
-
): OpResponseNode {
|
|
1029
|
-
const headers = convertResponseHeaders(resp.headers, schemaCtx);
|
|
1030
|
-
|
|
1031
|
-
if (!resp.content) {
|
|
1032
|
-
return headers ? { statusCode, headers } : { statusCode };
|
|
1033
|
-
}
|
|
1034
|
-
|
|
1035
|
-
// Pick the first content type
|
|
1036
|
-
const [contentType, mediaType] = Object.entries(resp.content)[0] ?? <span class="branch-1 cbranch-no" title="branch not covered" >[];</span>
|
|
1037
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!contentType || !mediaType?.schema) {
|
|
1038
|
-
<span class="cstat-no" title="statement not covered" > return headers ? { statusCode, headers } : { statusCode };</span>
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
|
-
const { typeNode, model } = extractInlineModel(mediaType.schema, `${toPascalCase(operationName)}Response${statusCode}`, schemaCtx);
|
|
1042
|
-
|
|
1043
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (model) {
|
|
1044
|
-
<span class="cstat-no" title="statement not covered" > ctx.extractedModels.push(model);</span>
|
|
1045
|
-
}
|
|
1046
|
-
|
|
1047
|
-
return {
|
|
1048
|
-
statusCode,
|
|
1049
|
-
contentType: contentType as 'application/json',
|
|
1050
|
-
bodyType: typeNode,
|
|
1051
|
-
...(headers ? { headers } : {}),
|
|
1052
|
-
};
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
function convertResponseHeaders(headers: NormalizedResponse['headers'], schemaCtx: SchemaContext): OpResponseHeaderNode[] | undefined {
|
|
1056
|
-
if (!headers) return undefined;
|
|
1057
|
-
const out: OpResponseHeaderNode[] = [];
|
|
1058
|
-
for (const [name, header] of Object.entries(headers)) {
|
|
1059
|
-
<span class="missing-if-branch" title="if path not taken" >I</span>if (!header) <span class="cstat-no" title="statement not covered" >continue;</span>
|
|
1060
|
-
const type = header.schema ? schemaToTypeNode(header.schema, schemaCtx) : <span class="branch-1 cbranch-no" title="branch not covered" >{ kind: 'scalar' as const, name: 'string' as const };</span>
|
|
1061
|
-
out.push({
|
|
1062
|
-
name,
|
|
1063
|
-
optional: !header.required,
|
|
1064
|
-
type,
|
|
1065
|
-
description: schemaCtx.includeComments ? header.description : <span class="branch-1 cbranch-no" title="branch not covered" >undefined,</span>
|
|
1066
|
-
});
|
|
1067
|
-
}
|
|
1068
|
-
return out.length > 0 ? out : <span class="branch-1 cbranch-no" title="branch not covered" >undefined;</span>
|
|
1069
|
-
}
|
|
1070
|
-
|
|
1071
|
-
// ─── Security ─────────────────────────────────────────────────────────────
|
|
1072
|
-
|
|
1073
|
-
function convertSecurity(security: Record<string, string[]>[]): SecurityNode {
|
|
1074
|
-
// Empty array = explicitly no security
|
|
1075
|
-
<span class="missing-if-branch" title="else path not taken" >E</span>if (security.length === 0) {
|
|
1076
|
-
return 'none';
|
|
1077
|
-
}
|
|
1078
|
-
|
|
1079
|
-
// The DSL's security model is simpler — OpenAPI scopes/roles don't map onto named policies,
|
|
1080
|
-
// so any non-empty security requirement is collapsed to "authenticated, default policy".
|
|
1081
|
-
<span class="cstat-no" title="statement not covered" > return { loc: LOC };</span>
|
|
1082
|
-
}
|
|
1083
|
-
|
|
1084
|
-
// ─── Helpers ──────────────────────────────────────────────────────────────
|
|
1085
|
-
|
|
1086
|
-
function makeSchemaCtx(ctx: PathsContext, path: string): SchemaContext {
|
|
1087
|
-
return {
|
|
1088
|
-
circularRefs: ctx.circularRefs,
|
|
1089
|
-
warnings: ctx.warnings,
|
|
1090
|
-
path,
|
|
1091
|
-
includeComments: ctx.includeComments,
|
|
1092
|
-
namedSchemas: ctx.namedSchemas as Record<string, never>,
|
|
1093
|
-
extractedModels: ctx.extractedModels,
|
|
1094
|
-
inlineCounter: 0,
|
|
1095
|
-
};
|
|
1096
|
-
}
|
|
1097
|
-
|
|
1098
|
-
function toPascalCase(input: string): string {
|
|
1099
|
-
return input
|
|
1100
|
-
.replace(/[^a-zA-Z0-9]/g, ' ')
|
|
1101
|
-
.split(/\s+/)
|
|
1102
|
-
.filter(Boolean)
|
|
1103
|
-
.map(part => part.charAt(0).toUpperCase() + part.slice(1))
|
|
1104
|
-
.join('');
|
|
1105
|
-
}
|
|
1106
|
-
|
|
1107
|
-
function encodePathSegment(s: string): string {
|
|
1108
|
-
return s.replace(/~/g, '~0').replace(/\//g, '~1');
|
|
1109
|
-
}
|
|
1110
|
-
</pre></td></tr></table></pre>
|
|
1111
|
-
|
|
1112
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1113
|
-
</div><!-- /wrapper -->
|
|
1114
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1115
|
-
Code coverage generated by
|
|
1116
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1117
|
-
at 2026-06-12T19:14:44.390Z
|
|
1118
|
-
</div>
|
|
1119
|
-
<script src="../prettify.js"></script>
|
|
1120
|
-
<script>
|
|
1121
|
-
window.onload = function () {
|
|
1122
|
-
prettyPrint();
|
|
1123
|
-
};
|
|
1124
|
-
</script>
|
|
1125
|
-
<script src="../sorter.js"></script>
|
|
1126
|
-
<script src="../block-navigation.js"></script>
|
|
1127
|
-
</body>
|
|
1128
|
-
</html>
|
|
1129
|
-
|