vscode-json-languageservice 3.7.0 → 3.8.3

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +12 -8
  2. package/README.md +2 -1
  3. package/lib/esm/jsonLanguageService.d.ts +6 -2
  4. package/lib/esm/jsonLanguageService.js +1 -0
  5. package/lib/esm/jsonLanguageTypes.d.ts +7 -4
  6. package/lib/esm/jsonLanguageTypes.js +7 -3
  7. package/lib/esm/parser/jsonParser.js +33 -6
  8. package/lib/esm/services/jsonCompletion.js +61 -3
  9. package/lib/esm/services/jsonSchemaService.js +18 -3
  10. package/lib/umd/jsonLanguageService.d.ts +6 -2
  11. package/lib/umd/jsonLanguageService.js +13 -4
  12. package/lib/umd/jsonLanguageTypes.d.ts +7 -4
  13. package/lib/umd/jsonLanguageTypes.js +31 -6
  14. package/lib/umd/parser/jsonParser.js +34 -6
  15. package/lib/umd/services/configuration.js +1 -0
  16. package/lib/umd/services/jsonCompletion.js +62 -3
  17. package/lib/umd/services/jsonDefinition.js +1 -0
  18. package/lib/umd/services/jsonDocumentSymbols.js +1 -0
  19. package/lib/umd/services/jsonFolding.js +1 -0
  20. package/lib/umd/services/jsonHover.js +1 -0
  21. package/lib/umd/services/jsonSchemaService.js +19 -3
  22. package/lib/umd/services/jsonSelectionRanges.js +1 -0
  23. package/lib/umd/services/jsonValidation.js +1 -0
  24. package/lib/umd/utils/colors.js +1 -0
  25. package/lib/umd/utils/json.js +1 -0
  26. package/lib/umd/utils/objects.js +1 -0
  27. package/lib/umd/utils/strings.js +1 -0
  28. package/package.json +1 -1
  29. package/.nyc_output/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
  30. package/.nyc_output/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
  31. package/.nyc_output/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
  32. package/.nyc_output/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
  33. package/.nyc_output/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
  34. package/.nyc_output/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
  35. package/.nyc_output/processinfo/0abe3076-16a9-4975-87da-4ecfc24d9226.json +0 -1
  36. package/.nyc_output/processinfo/5a0d1463-368f-4136-8a80-4c7fda7ca33b.json +0 -1
  37. package/.nyc_output/processinfo/65e3530f-ee58-4bcb-8484-70eb1822427e.json +0 -1
  38. package/.nyc_output/processinfo/a37c9066-0aa4-4d91-a56b-17754005a42d.json +0 -1
  39. package/.nyc_output/processinfo/b7eb272f-3bf3-48c4-9a42-90600332b363.json +0 -1
  40. package/.nyc_output/processinfo/cabc6994-64f7-4258-bb45-9bb5529b388e.json +0 -1
  41. package/.nyc_output/processinfo/index.json +0 -1
  42. package/coverage/lcov-report/base.css +0 -224
  43. package/coverage/lcov-report/block-navigation.js +0 -79
  44. package/coverage/lcov-report/favicon.png +0 -0
  45. package/coverage/lcov-report/index.html +0 -156
  46. package/coverage/lcov-report/prettify.css +0 -1
  47. package/coverage/lcov-report/prettify.js +0 -2
  48. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  49. package/coverage/lcov-report/sorter.js +0 -170
  50. package/coverage/lcov-report/src/index.html +0 -126
  51. package/coverage/lcov-report/src/jsonLanguageService.ts.html +0 -383
  52. package/coverage/lcov-report/src/jsonLanguageTypes.ts.html +0 -968
  53. package/coverage/lcov-report/src/parser/index.html +0 -111
  54. package/coverage/lcov-report/src/parser/jsonParser.ts.html +0 -3860
  55. package/coverage/lcov-report/src/services/configuration.ts.html +0 -1679
  56. package/coverage/lcov-report/src/services/index.html +0 -216
  57. package/coverage/lcov-report/src/services/jsonCompletion.ts.html +0 -2843
  58. package/coverage/lcov-report/src/services/jsonDocumentSymbols.ts.html +0 -911
  59. package/coverage/lcov-report/src/services/jsonFolding.ts.html +0 -455
  60. package/coverage/lcov-report/src/services/jsonHover.ts.html +0 -461
  61. package/coverage/lcov-report/src/services/jsonSchemaService.ts.html +0 -1895
  62. package/coverage/lcov-report/src/services/jsonSelectionRanges.ts.html +0 -311
  63. package/coverage/lcov-report/src/services/jsonValidation.ts.html +0 -560
  64. package/coverage/lcov-report/src/utils/colors.ts.html +0 -299
  65. package/coverage/lcov-report/src/utils/index.html +0 -156
  66. package/coverage/lcov-report/src/utils/json.ts.html +0 -206
  67. package/coverage/lcov-report/src/utils/objects.ts.html +0 -296
  68. package/coverage/lcov-report/src/utils/strings.ts.html +0 -224
  69. package/coverage/lcov.info +0 -4219
@@ -1,911 +0,0 @@
1
-
2
- <!doctype html>
3
- <html lang="en">
4
-
5
- <head>
6
- <title>Code coverage report for src/services/jsonDocumentSymbols.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/services</a> jsonDocumentSymbols.ts</h1>
23
- <div class='clearfix'>
24
-
25
- <div class='fl pad1y space-right2'>
26
- <span class="strong">73.33% </span>
27
- <span class="quiet">Statements</span>
28
- <span class='fraction'>132/180</span>
29
- </div>
30
-
31
-
32
- <div class='fl pad1y space-right2'>
33
- <span class="strong">59.84% </span>
34
- <span class="quiet">Branches</span>
35
- <span class='fraction'>73/122</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'>17/17</span>
43
- </div>
44
-
45
-
46
- <div class='fl pad1y space-right2'>
47
- <span class="strong">77.36% </span>
48
- <span class="quiet">Lines</span>
49
- <span class='fraction'>123/159</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
- </div>
58
- <div class='status-line medium'></div>
59
- <pre><table class="coverage">
60
- <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
- <a name='L2'></a><a href='#L2'>2</a>
62
- <a name='L3'></a><a href='#L3'>3</a>
63
- <a name='L4'></a><a href='#L4'>4</a>
64
- <a name='L5'></a><a href='#L5'>5</a>
65
- <a name='L6'></a><a href='#L6'>6</a>
66
- <a name='L7'></a><a href='#L7'>7</a>
67
- <a name='L8'></a><a href='#L8'>8</a>
68
- <a name='L9'></a><a href='#L9'>9</a>
69
- <a name='L10'></a><a href='#L10'>10</a>
70
- <a name='L11'></a><a href='#L11'>11</a>
71
- <a name='L12'></a><a href='#L12'>12</a>
72
- <a name='L13'></a><a href='#L13'>13</a>
73
- <a name='L14'></a><a href='#L14'>14</a>
74
- <a name='L15'></a><a href='#L15'>15</a>
75
- <a name='L16'></a><a href='#L16'>16</a>
76
- <a name='L17'></a><a href='#L17'>17</a>
77
- <a name='L18'></a><a href='#L18'>18</a>
78
- <a name='L19'></a><a href='#L19'>19</a>
79
- <a name='L20'></a><a href='#L20'>20</a>
80
- <a name='L21'></a><a href='#L21'>21</a>
81
- <a name='L22'></a><a href='#L22'>22</a>
82
- <a name='L23'></a><a href='#L23'>23</a>
83
- <a name='L24'></a><a href='#L24'>24</a>
84
- <a name='L25'></a><a href='#L25'>25</a>
85
- <a name='L26'></a><a href='#L26'>26</a>
86
- <a name='L27'></a><a href='#L27'>27</a>
87
- <a name='L28'></a><a href='#L28'>28</a>
88
- <a name='L29'></a><a href='#L29'>29</a>
89
- <a name='L30'></a><a href='#L30'>30</a>
90
- <a name='L31'></a><a href='#L31'>31</a>
91
- <a name='L32'></a><a href='#L32'>32</a>
92
- <a name='L33'></a><a href='#L33'>33</a>
93
- <a name='L34'></a><a href='#L34'>34</a>
94
- <a name='L35'></a><a href='#L35'>35</a>
95
- <a name='L36'></a><a href='#L36'>36</a>
96
- <a name='L37'></a><a href='#L37'>37</a>
97
- <a name='L38'></a><a href='#L38'>38</a>
98
- <a name='L39'></a><a href='#L39'>39</a>
99
- <a name='L40'></a><a href='#L40'>40</a>
100
- <a name='L41'></a><a href='#L41'>41</a>
101
- <a name='L42'></a><a href='#L42'>42</a>
102
- <a name='L43'></a><a href='#L43'>43</a>
103
- <a name='L44'></a><a href='#L44'>44</a>
104
- <a name='L45'></a><a href='#L45'>45</a>
105
- <a name='L46'></a><a href='#L46'>46</a>
106
- <a name='L47'></a><a href='#L47'>47</a>
107
- <a name='L48'></a><a href='#L48'>48</a>
108
- <a name='L49'></a><a href='#L49'>49</a>
109
- <a name='L50'></a><a href='#L50'>50</a>
110
- <a name='L51'></a><a href='#L51'>51</a>
111
- <a name='L52'></a><a href='#L52'>52</a>
112
- <a name='L53'></a><a href='#L53'>53</a>
113
- <a name='L54'></a><a href='#L54'>54</a>
114
- <a name='L55'></a><a href='#L55'>55</a>
115
- <a name='L56'></a><a href='#L56'>56</a>
116
- <a name='L57'></a><a href='#L57'>57</a>
117
- <a name='L58'></a><a href='#L58'>58</a>
118
- <a name='L59'></a><a href='#L59'>59</a>
119
- <a name='L60'></a><a href='#L60'>60</a>
120
- <a name='L61'></a><a href='#L61'>61</a>
121
- <a name='L62'></a><a href='#L62'>62</a>
122
- <a name='L63'></a><a href='#L63'>63</a>
123
- <a name='L64'></a><a href='#L64'>64</a>
124
- <a name='L65'></a><a href='#L65'>65</a>
125
- <a name='L66'></a><a href='#L66'>66</a>
126
- <a name='L67'></a><a href='#L67'>67</a>
127
- <a name='L68'></a><a href='#L68'>68</a>
128
- <a name='L69'></a><a href='#L69'>69</a>
129
- <a name='L70'></a><a href='#L70'>70</a>
130
- <a name='L71'></a><a href='#L71'>71</a>
131
- <a name='L72'></a><a href='#L72'>72</a>
132
- <a name='L73'></a><a href='#L73'>73</a>
133
- <a name='L74'></a><a href='#L74'>74</a>
134
- <a name='L75'></a><a href='#L75'>75</a>
135
- <a name='L76'></a><a href='#L76'>76</a>
136
- <a name='L77'></a><a href='#L77'>77</a>
137
- <a name='L78'></a><a href='#L78'>78</a>
138
- <a name='L79'></a><a href='#L79'>79</a>
139
- <a name='L80'></a><a href='#L80'>80</a>
140
- <a name='L81'></a><a href='#L81'>81</a>
141
- <a name='L82'></a><a href='#L82'>82</a>
142
- <a name='L83'></a><a href='#L83'>83</a>
143
- <a name='L84'></a><a href='#L84'>84</a>
144
- <a name='L85'></a><a href='#L85'>85</a>
145
- <a name='L86'></a><a href='#L86'>86</a>
146
- <a name='L87'></a><a href='#L87'>87</a>
147
- <a name='L88'></a><a href='#L88'>88</a>
148
- <a name='L89'></a><a href='#L89'>89</a>
149
- <a name='L90'></a><a href='#L90'>90</a>
150
- <a name='L91'></a><a href='#L91'>91</a>
151
- <a name='L92'></a><a href='#L92'>92</a>
152
- <a name='L93'></a><a href='#L93'>93</a>
153
- <a name='L94'></a><a href='#L94'>94</a>
154
- <a name='L95'></a><a href='#L95'>95</a>
155
- <a name='L96'></a><a href='#L96'>96</a>
156
- <a name='L97'></a><a href='#L97'>97</a>
157
- <a name='L98'></a><a href='#L98'>98</a>
158
- <a name='L99'></a><a href='#L99'>99</a>
159
- <a name='L100'></a><a href='#L100'>100</a>
160
- <a name='L101'></a><a href='#L101'>101</a>
161
- <a name='L102'></a><a href='#L102'>102</a>
162
- <a name='L103'></a><a href='#L103'>103</a>
163
- <a name='L104'></a><a href='#L104'>104</a>
164
- <a name='L105'></a><a href='#L105'>105</a>
165
- <a name='L106'></a><a href='#L106'>106</a>
166
- <a name='L107'></a><a href='#L107'>107</a>
167
- <a name='L108'></a><a href='#L108'>108</a>
168
- <a name='L109'></a><a href='#L109'>109</a>
169
- <a name='L110'></a><a href='#L110'>110</a>
170
- <a name='L111'></a><a href='#L111'>111</a>
171
- <a name='L112'></a><a href='#L112'>112</a>
172
- <a name='L113'></a><a href='#L113'>113</a>
173
- <a name='L114'></a><a href='#L114'>114</a>
174
- <a name='L115'></a><a href='#L115'>115</a>
175
- <a name='L116'></a><a href='#L116'>116</a>
176
- <a name='L117'></a><a href='#L117'>117</a>
177
- <a name='L118'></a><a href='#L118'>118</a>
178
- <a name='L119'></a><a href='#L119'>119</a>
179
- <a name='L120'></a><a href='#L120'>120</a>
180
- <a name='L121'></a><a href='#L121'>121</a>
181
- <a name='L122'></a><a href='#L122'>122</a>
182
- <a name='L123'></a><a href='#L123'>123</a>
183
- <a name='L124'></a><a href='#L124'>124</a>
184
- <a name='L125'></a><a href='#L125'>125</a>
185
- <a name='L126'></a><a href='#L126'>126</a>
186
- <a name='L127'></a><a href='#L127'>127</a>
187
- <a name='L128'></a><a href='#L128'>128</a>
188
- <a name='L129'></a><a href='#L129'>129</a>
189
- <a name='L130'></a><a href='#L130'>130</a>
190
- <a name='L131'></a><a href='#L131'>131</a>
191
- <a name='L132'></a><a href='#L132'>132</a>
192
- <a name='L133'></a><a href='#L133'>133</a>
193
- <a name='L134'></a><a href='#L134'>134</a>
194
- <a name='L135'></a><a href='#L135'>135</a>
195
- <a name='L136'></a><a href='#L136'>136</a>
196
- <a name='L137'></a><a href='#L137'>137</a>
197
- <a name='L138'></a><a href='#L138'>138</a>
198
- <a name='L139'></a><a href='#L139'>139</a>
199
- <a name='L140'></a><a href='#L140'>140</a>
200
- <a name='L141'></a><a href='#L141'>141</a>
201
- <a name='L142'></a><a href='#L142'>142</a>
202
- <a name='L143'></a><a href='#L143'>143</a>
203
- <a name='L144'></a><a href='#L144'>144</a>
204
- <a name='L145'></a><a href='#L145'>145</a>
205
- <a name='L146'></a><a href='#L146'>146</a>
206
- <a name='L147'></a><a href='#L147'>147</a>
207
- <a name='L148'></a><a href='#L148'>148</a>
208
- <a name='L149'></a><a href='#L149'>149</a>
209
- <a name='L150'></a><a href='#L150'>150</a>
210
- <a name='L151'></a><a href='#L151'>151</a>
211
- <a name='L152'></a><a href='#L152'>152</a>
212
- <a name='L153'></a><a href='#L153'>153</a>
213
- <a name='L154'></a><a href='#L154'>154</a>
214
- <a name='L155'></a><a href='#L155'>155</a>
215
- <a name='L156'></a><a href='#L156'>156</a>
216
- <a name='L157'></a><a href='#L157'>157</a>
217
- <a name='L158'></a><a href='#L158'>158</a>
218
- <a name='L159'></a><a href='#L159'>159</a>
219
- <a name='L160'></a><a href='#L160'>160</a>
220
- <a name='L161'></a><a href='#L161'>161</a>
221
- <a name='L162'></a><a href='#L162'>162</a>
222
- <a name='L163'></a><a href='#L163'>163</a>
223
- <a name='L164'></a><a href='#L164'>164</a>
224
- <a name='L165'></a><a href='#L165'>165</a>
225
- <a name='L166'></a><a href='#L166'>166</a>
226
- <a name='L167'></a><a href='#L167'>167</a>
227
- <a name='L168'></a><a href='#L168'>168</a>
228
- <a name='L169'></a><a href='#L169'>169</a>
229
- <a name='L170'></a><a href='#L170'>170</a>
230
- <a name='L171'></a><a href='#L171'>171</a>
231
- <a name='L172'></a><a href='#L172'>172</a>
232
- <a name='L173'></a><a href='#L173'>173</a>
233
- <a name='L174'></a><a href='#L174'>174</a>
234
- <a name='L175'></a><a href='#L175'>175</a>
235
- <a name='L176'></a><a href='#L176'>176</a>
236
- <a name='L177'></a><a href='#L177'>177</a>
237
- <a name='L178'></a><a href='#L178'>178</a>
238
- <a name='L179'></a><a href='#L179'>179</a>
239
- <a name='L180'></a><a href='#L180'>180</a>
240
- <a name='L181'></a><a href='#L181'>181</a>
241
- <a name='L182'></a><a href='#L182'>182</a>
242
- <a name='L183'></a><a href='#L183'>183</a>
243
- <a name='L184'></a><a href='#L184'>184</a>
244
- <a name='L185'></a><a href='#L185'>185</a>
245
- <a name='L186'></a><a href='#L186'>186</a>
246
- <a name='L187'></a><a href='#L187'>187</a>
247
- <a name='L188'></a><a href='#L188'>188</a>
248
- <a name='L189'></a><a href='#L189'>189</a>
249
- <a name='L190'></a><a href='#L190'>190</a>
250
- <a name='L191'></a><a href='#L191'>191</a>
251
- <a name='L192'></a><a href='#L192'>192</a>
252
- <a name='L193'></a><a href='#L193'>193</a>
253
- <a name='L194'></a><a href='#L194'>194</a>
254
- <a name='L195'></a><a href='#L195'>195</a>
255
- <a name='L196'></a><a href='#L196'>196</a>
256
- <a name='L197'></a><a href='#L197'>197</a>
257
- <a name='L198'></a><a href='#L198'>198</a>
258
- <a name='L199'></a><a href='#L199'>199</a>
259
- <a name='L200'></a><a href='#L200'>200</a>
260
- <a name='L201'></a><a href='#L201'>201</a>
261
- <a name='L202'></a><a href='#L202'>202</a>
262
- <a name='L203'></a><a href='#L203'>203</a>
263
- <a name='L204'></a><a href='#L204'>204</a>
264
- <a name='L205'></a><a href='#L205'>205</a>
265
- <a name='L206'></a><a href='#L206'>206</a>
266
- <a name='L207'></a><a href='#L207'>207</a>
267
- <a name='L208'></a><a href='#L208'>208</a>
268
- <a name='L209'></a><a href='#L209'>209</a>
269
- <a name='L210'></a><a href='#L210'>210</a>
270
- <a name='L211'></a><a href='#L211'>211</a>
271
- <a name='L212'></a><a href='#L212'>212</a>
272
- <a name='L213'></a><a href='#L213'>213</a>
273
- <a name='L214'></a><a href='#L214'>214</a>
274
- <a name='L215'></a><a href='#L215'>215</a>
275
- <a name='L216'></a><a href='#L216'>216</a>
276
- <a name='L217'></a><a href='#L217'>217</a>
277
- <a name='L218'></a><a href='#L218'>218</a>
278
- <a name='L219'></a><a href='#L219'>219</a>
279
- <a name='L220'></a><a href='#L220'>220</a>
280
- <a name='L221'></a><a href='#L221'>221</a>
281
- <a name='L222'></a><a href='#L222'>222</a>
282
- <a name='L223'></a><a href='#L223'>223</a>
283
- <a name='L224'></a><a href='#L224'>224</a>
284
- <a name='L225'></a><a href='#L225'>225</a>
285
- <a name='L226'></a><a href='#L226'>226</a>
286
- <a name='L227'></a><a href='#L227'>227</a>
287
- <a name='L228'></a><a href='#L228'>228</a>
288
- <a name='L229'></a><a href='#L229'>229</a>
289
- <a name='L230'></a><a href='#L230'>230</a>
290
- <a name='L231'></a><a href='#L231'>231</a>
291
- <a name='L232'></a><a href='#L232'>232</a>
292
- <a name='L233'></a><a href='#L233'>233</a>
293
- <a name='L234'></a><a href='#L234'>234</a>
294
- <a name='L235'></a><a href='#L235'>235</a>
295
- <a name='L236'></a><a href='#L236'>236</a>
296
- <a name='L237'></a><a href='#L237'>237</a>
297
- <a name='L238'></a><a href='#L238'>238</a>
298
- <a name='L239'></a><a href='#L239'>239</a>
299
- <a name='L240'></a><a href='#L240'>240</a>
300
- <a name='L241'></a><a href='#L241'>241</a>
301
- <a name='L242'></a><a href='#L242'>242</a>
302
- <a name='L243'></a><a href='#L243'>243</a>
303
- <a name='L244'></a><a href='#L244'>244</a>
304
- <a name='L245'></a><a href='#L245'>245</a>
305
- <a name='L246'></a><a href='#L246'>246</a>
306
- <a name='L247'></a><a href='#L247'>247</a>
307
- <a name='L248'></a><a href='#L248'>248</a>
308
- <a name='L249'></a><a href='#L249'>249</a>
309
- <a name='L250'></a><a href='#L250'>250</a>
310
- <a name='L251'></a><a href='#L251'>251</a>
311
- <a name='L252'></a><a href='#L252'>252</a>
312
- <a name='L253'></a><a href='#L253'>253</a>
313
- <a name='L254'></a><a href='#L254'>254</a>
314
- <a name='L255'></a><a href='#L255'>255</a>
315
- <a name='L256'></a><a href='#L256'>256</a>
316
- <a name='L257'></a><a href='#L257'>257</a>
317
- <a name='L258'></a><a href='#L258'>258</a>
318
- <a name='L259'></a><a href='#L259'>259</a>
319
- <a name='L260'></a><a href='#L260'>260</a>
320
- <a name='L261'></a><a href='#L261'>261</a>
321
- <a name='L262'></a><a href='#L262'>262</a>
322
- <a name='L263'></a><a href='#L263'>263</a>
323
- <a name='L264'></a><a href='#L264'>264</a>
324
- <a name='L265'></a><a href='#L265'>265</a>
325
- <a name='L266'></a><a href='#L266'>266</a>
326
- <a name='L267'></a><a href='#L267'>267</a>
327
- <a name='L268'></a><a href='#L268'>268</a>
328
- <a name='L269'></a><a href='#L269'>269</a>
329
- <a name='L270'></a><a href='#L270'>270</a>
330
- <a name='L271'></a><a href='#L271'>271</a>
331
- <a name='L272'></a><a href='#L272'>272</a>
332
- <a name='L273'></a><a href='#L273'>273</a>
333
- <a name='L274'></a><a href='#L274'>274</a>
334
- <a name='L275'></a><a href='#L275'>275</a>
335
- <a name='L276'></a><a href='#L276'>276</a>
336
- <a name='L277'></a><a href='#L277'>277</a>
337
- <a name='L278'></a><a href='#L278'>278</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
338
- <span class="cline-any cline-neutral">&nbsp;</span>
339
- <span class="cline-any cline-neutral">&nbsp;</span>
340
- <span class="cline-any cline-neutral">&nbsp;</span>
341
- <span class="cline-any cline-neutral">&nbsp;</span>
342
- <span class="cline-any cline-yes">1x</span>
343
- <span class="cline-any cline-yes">1x</span>
344
- <span class="cline-any cline-yes">1x</span>
345
- <span class="cline-any cline-neutral">&nbsp;</span>
346
- <span class="cline-any cline-yes">1x</span>
347
- <span class="cline-any cline-neutral">&nbsp;</span>
348
- <span class="cline-any cline-neutral">&nbsp;</span>
349
- <span class="cline-any cline-neutral">&nbsp;</span>
350
- <span class="cline-any cline-neutral">&nbsp;</span>
351
- <span class="cline-any cline-neutral">&nbsp;</span>
352
- <span class="cline-any cline-neutral">&nbsp;</span>
353
- <span class="cline-any cline-yes">1x</span>
354
- <span class="cline-any cline-neutral">&nbsp;</span>
355
- <span class="cline-any cline-yes">329x</span>
356
- <span class="cline-any cline-neutral">&nbsp;</span>
357
- <span class="cline-any cline-neutral">&nbsp;</span>
358
- <span class="cline-any cline-yes">14x</span>
359
- <span class="cline-any cline-neutral">&nbsp;</span>
360
- <span class="cline-any cline-yes">8x</span>
361
- <span class="cline-any cline-yes">8x</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
363
- <span class="cline-any cline-neutral">&nbsp;</span>
364
- <span class="cline-any cline-neutral">&nbsp;</span>
365
- <span class="cline-any cline-yes">8x</span>
366
- <span class="cline-any cline-neutral">&nbsp;</span>
367
- <span class="cline-any cline-neutral">&nbsp;</span>
368
- <span class="cline-any cline-yes">8x</span>
369
- <span class="cline-any cline-yes">8x</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-no">&nbsp;</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
376
- <span class="cline-any cline-no">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
- <span class="cline-any cline-no">&nbsp;</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-no">&nbsp;</span>
381
- <span class="cline-any cline-no">&nbsp;</span>
382
- <span class="cline-any cline-neutral">&nbsp;</span>
383
- <span class="cline-any cline-no">&nbsp;</span>
384
- <span class="cline-any cline-neutral">&nbsp;</span>
385
- <span class="cline-any cline-neutral">&nbsp;</span>
386
- <span class="cline-any cline-neutral">&nbsp;</span>
387
- <span class="cline-any cline-neutral">&nbsp;</span>
388
- <span class="cline-any cline-neutral">&nbsp;</span>
389
- <span class="cline-any cline-no">&nbsp;</span>
390
- <span class="cline-any cline-neutral">&nbsp;</span>
391
- <span class="cline-any cline-neutral">&nbsp;</span>
392
- <span class="cline-any cline-neutral">&nbsp;</span>
393
- <span class="cline-any cline-yes">8x</span>
394
- <span class="cline-any cline-neutral">&nbsp;</span>
395
- <span class="cline-any cline-neutral">&nbsp;</span>
396
- <span class="cline-any cline-yes">8x</span>
397
- <span class="cline-any cline-yes">8x</span>
398
- <span class="cline-any cline-neutral">&nbsp;</span>
399
- <span class="cline-any cline-yes">8x</span>
400
- <span class="cline-any cline-neutral">&nbsp;</span>
401
- <span class="cline-any cline-yes">8x</span>
402
- <span class="cline-any cline-yes">76x</span>
403
- <span class="cline-any cline-yes">3x</span>
404
- <span class="cline-any cline-yes">15x</span>
405
- <span class="cline-any cline-yes">15x</span>
406
- <span class="cline-any cline-neutral">&nbsp;</span>
407
- <span class="cline-any cline-neutral">&nbsp;</span>
408
- <span class="cline-any cline-yes">73x</span>
409
- <span class="cline-any cline-yes">23x</span>
410
- <span class="cline-any cline-yes">219x</span>
411
- <span class="cline-any cline-yes">219x</span>
412
- <span class="cline-any cline-yes">218x</span>
413
- <span class="cline-any cline-yes">53x</span>
414
- <span class="cline-any cline-yes">53x</span>
415
- <span class="cline-any cline-yes">53x</span>
416
- <span class="cline-any cline-yes">53x</span>
417
- <span class="cline-any cline-yes">53x</span>
418
- <span class="cline-any cline-neutral">&nbsp;</span>
419
- <span class="cline-any cline-yes">165x</span>
420
- <span class="cline-any cline-neutral">&nbsp;</span>
421
- <span class="cline-any cline-neutral">&nbsp;</span>
422
- <span class="cline-any cline-neutral">&nbsp;</span>
423
- <span class="cline-any cline-neutral">&nbsp;</span>
424
- <span class="cline-any cline-neutral">&nbsp;</span>
425
- <span class="cline-any cline-neutral">&nbsp;</span>
426
- <span class="cline-any cline-neutral">&nbsp;</span>
427
- <span class="cline-any cline-yes">8x</span>
428
- <span class="cline-any cline-yes">76x</span>
429
- <span class="cline-any cline-yes">76x</span>
430
- <span class="cline-any cline-neutral">&nbsp;</span>
431
- <span class="cline-any cline-neutral">&nbsp;</span>
432
- <span class="cline-any cline-yes">8x</span>
433
- <span class="cline-any cline-yes">2x</span>
434
- <span class="cline-any cline-neutral">&nbsp;</span>
435
- <span class="cline-any cline-yes">8x</span>
436
- <span class="cline-any cline-neutral">&nbsp;</span>
437
- <span class="cline-any cline-neutral">&nbsp;</span>
438
- <span class="cline-any cline-yes">10x</span>
439
- <span class="cline-any cline-neutral">&nbsp;</span>
440
- <span class="cline-any cline-yes">6x</span>
441
- <span class="cline-any cline-yes">6x</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-neutral">&nbsp;</span>
444
- <span class="cline-any cline-neutral">&nbsp;</span>
445
- <span class="cline-any cline-yes">6x</span>
446
- <span class="cline-any cline-neutral">&nbsp;</span>
447
- <span class="cline-any cline-neutral">&nbsp;</span>
448
- <span class="cline-any cline-yes">6x</span>
449
- <span class="cline-any cline-yes">6x</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
455
- <span class="cline-any cline-no">&nbsp;</span>
456
- <span class="cline-any cline-no">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-neutral">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-neutral">&nbsp;</span>
466
- <span class="cline-any cline-neutral">&nbsp;</span>
467
- <span class="cline-any cline-neutral">&nbsp;</span>
468
- <span class="cline-any cline-neutral">&nbsp;</span>
469
- <span class="cline-any cline-neutral">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-neutral">&nbsp;</span>
472
- <span class="cline-any cline-neutral">&nbsp;</span>
473
- <span class="cline-any cline-neutral">&nbsp;</span>
474
- <span class="cline-any cline-yes">6x</span>
475
- <span class="cline-any cline-yes">6x</span>
476
- <span class="cline-any cline-neutral">&nbsp;</span>
477
- <span class="cline-any cline-neutral">&nbsp;</span>
478
- <span class="cline-any cline-yes">6x</span>
479
- <span class="cline-any cline-yes">6x</span>
480
- <span class="cline-any cline-neutral">&nbsp;</span>
481
- <span class="cline-any cline-yes">6x</span>
482
- <span class="cline-any cline-yes">53x</span>
483
- <span class="cline-any cline-yes">3x</span>
484
- <span class="cline-any cline-yes">12x</span>
485
- <span class="cline-any cline-yes">12x</span>
486
- <span class="cline-any cline-yes">12x</span>
487
- <span class="cline-any cline-yes">12x</span>
488
- <span class="cline-any cline-yes">12x</span>
489
- <span class="cline-any cline-yes">12x</span>
490
- <span class="cline-any cline-yes">12x</span>
491
- <span class="cline-any cline-yes">12x</span>
492
- <span class="cline-any cline-yes">12x</span>
493
- <span class="cline-any cline-neutral">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-neutral">&nbsp;</span>
496
- <span class="cline-any cline-neutral">&nbsp;</span>
497
- <span class="cline-any cline-neutral">&nbsp;</span>
498
- <span class="cline-any cline-yes">50x</span>
499
- <span class="cline-any cline-yes">20x</span>
500
- <span class="cline-any cline-yes">210x</span>
501
- <span class="cline-any cline-yes">210x</span>
502
- <span class="cline-any cline-yes">210x</span>
503
- <span class="cline-any cline-yes">35x</span>
504
- <span class="cline-any cline-yes">35x</span>
505
- <span class="cline-any cline-yes">35x</span>
506
- <span class="cline-any cline-yes">35x</span>
507
- <span class="cline-any cline-yes">35x</span>
508
- <span class="cline-any cline-yes">35x</span>
509
- <span class="cline-any cline-neutral">&nbsp;</span>
510
- <span class="cline-any cline-yes">175x</span>
511
- <span class="cline-any cline-neutral">&nbsp;</span>
512
- <span class="cline-any cline-neutral">&nbsp;</span>
513
- <span class="cline-any cline-neutral">&nbsp;</span>
514
- <span class="cline-any cline-neutral">&nbsp;</span>
515
- <span class="cline-any cline-neutral">&nbsp;</span>
516
- <span class="cline-any cline-neutral">&nbsp;</span>
517
- <span class="cline-any cline-neutral">&nbsp;</span>
518
- <span class="cline-any cline-yes">6x</span>
519
- <span class="cline-any cline-yes">53x</span>
520
- <span class="cline-any cline-yes">53x</span>
521
- <span class="cline-any cline-neutral">&nbsp;</span>
522
- <span class="cline-any cline-neutral">&nbsp;</span>
523
- <span class="cline-any cline-yes">6x</span>
524
- <span class="cline-any cline-yes">2x</span>
525
- <span class="cline-any cline-neutral">&nbsp;</span>
526
- <span class="cline-any cline-yes">6x</span>
527
- <span class="cline-any cline-neutral">&nbsp;</span>
528
- <span class="cline-any cline-neutral">&nbsp;</span>
529
- <span class="cline-any cline-neutral">&nbsp;</span>
530
- <span class="cline-any cline-yes">1x</span>
531
- <span class="cline-any cline-yes">100x</span>
532
- <span class="cline-any cline-neutral">&nbsp;</span>
533
- <span class="cline-any cline-yes">19x</span>
534
- <span class="cline-any cline-neutral">&nbsp;</span>
535
- <span class="cline-any cline-yes">1x</span>
536
- <span class="cline-any cline-neutral">&nbsp;</span>
537
- <span class="cline-any cline-yes">70x</span>
538
- <span class="cline-any cline-neutral">&nbsp;</span>
539
- <span class="cline-any cline-yes">4x</span>
540
- <span class="cline-any cline-neutral">&nbsp;</span>
541
- <span class="cline-any cline-yes">6x</span>
542
- <span class="cline-any cline-neutral">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-neutral">&nbsp;</span>
545
- <span class="cline-any cline-neutral">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span>
547
- <span class="cline-any cline-yes">1x</span>
548
- <span class="cline-any cline-yes">88x</span>
549
- <span class="cline-any cline-yes">88x</span>
550
- <span class="cline-any cline-yes">86x</span>
551
- <span class="cline-any cline-neutral">&nbsp;</span>
552
- <span class="cline-any cline-yes">88x</span>
553
- <span class="cline-any cline-yes">84x</span>
554
- <span class="cline-any cline-neutral">&nbsp;</span>
555
- <span class="cline-any cline-yes">4x</span>
556
- <span class="cline-any cline-neutral">&nbsp;</span>
557
- <span class="cline-any cline-neutral">&nbsp;</span>
558
- <span class="cline-any cline-yes">1x</span>
559
- <span class="cline-any cline-yes">1x</span>
560
- <span class="cline-any cline-yes">1x</span>
561
- <span class="cline-any cline-yes">1x</span>
562
- <span class="cline-any cline-yes">1x</span>
563
- <span class="cline-any cline-yes">1x</span>
564
- <span class="cline-any cline-yes">1x</span>
565
- <span class="cline-any cline-yes">3x</span>
566
- <span class="cline-any cline-yes">3x</span>
567
- <span class="cline-any cline-yes">2x</span>
568
- <span class="cline-any cline-yes">2x</span>
569
- <span class="cline-any cline-yes">2x</span>
570
- <span class="cline-any cline-yes">2x</span>
571
- <span class="cline-any cline-yes">2x</span>
572
- <span class="cline-any cline-yes">2x</span>
573
- <span class="cline-any cline-neutral">&nbsp;</span>
574
- <span class="cline-any cline-yes">2x</span>
575
- <span class="cline-any cline-yes">2x</span>
576
- <span class="cline-any cline-yes">2x</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-neutral">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-neutral">&nbsp;</span>
582
- <span class="cline-any cline-neutral">&nbsp;</span>
583
- <span class="cline-any cline-neutral">&nbsp;</span>
584
- <span class="cline-any cline-neutral">&nbsp;</span>
585
- <span class="cline-any cline-neutral">&nbsp;</span>
586
- <span class="cline-any cline-yes">1x</span>
587
- <span class="cline-any cline-neutral">&nbsp;</span>
588
- <span class="cline-any cline-neutral">&nbsp;</span>
589
- <span class="cline-any cline-neutral">&nbsp;</span>
590
- <span class="cline-any cline-yes">1x</span>
591
- <span class="cline-any cline-yes">2x</span>
592
- <span class="cline-any cline-yes">2x</span>
593
- <span class="cline-any cline-neutral">&nbsp;</span>
594
- <span class="cline-any cline-neutral">&nbsp;</span>
595
- <span class="cline-any cline-yes">7x</span>
596
- <span class="cline-any cline-yes">7x</span>
597
- <span class="cline-any cline-neutral">&nbsp;</span>
598
- <span class="cline-any cline-neutral">&nbsp;</span>
599
- <span class="cline-any cline-neutral">&nbsp;</span>
600
- <span class="cline-any cline-yes">2x</span>
601
- <span class="cline-any cline-yes">1x</span>
602
- <span class="cline-any cline-neutral">&nbsp;</span>
603
- <span class="cline-any cline-yes">1x</span>
604
- <span class="cline-any cline-neutral">&nbsp;</span>
605
- <span class="cline-any cline-yes">2x</span>
606
- <span class="cline-any cline-neutral">&nbsp;</span>
607
- <span class="cline-any cline-yes">2x</span>
608
- <span class="cline-any cline-neutral">&nbsp;</span>
609
- <span class="cline-any cline-neutral">&nbsp;</span>
610
- <span class="cline-any cline-yes">1x</span>
611
- <span class="cline-any cline-neutral">&nbsp;</span>
612
- <span class="cline-any cline-neutral">&nbsp;</span>
613
- <span class="cline-any cline-yes">137x</span>
614
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*---------------------------------------------------------------------------------------------
615
- * Copyright (c) Microsoft Corporation. All rights reserved.
616
- * Licensed under the MIT License. See License.txt in the project root for license information.
617
- *--------------------------------------------------------------------------------------------*/
618
- &nbsp;
619
- import * as Parser from '../parser/jsonParser';
620
- import * as Strings from '../utils/strings';
621
- import { colorFromHex } from '../utils/colors';
622
- &nbsp;
623
- import {
624
- TextDocument, Thenable, ColorInformation, ColorPresentation, Color, ASTNode, PropertyASTNode, DocumentSymbolsContext, Range, TextEdit,
625
- SymbolInformation, SymbolKind, DocumentSymbol, Location
626
- } from "../jsonLanguageTypes";
627
- &nbsp;
628
- import { IJSONSchemaService } from "./jsonSchemaService";
629
- &nbsp;
630
- export class JSONDocumentSymbols {
631
- &nbsp;
632
- constructor(private schemaService: IJSONSchemaService) {
633
- }
634
- &nbsp;
635
- public findDocumentSymbols(document: TextDocument, doc: Parser.JSONDocument, context: DocumentSymbolsContext = { resultLimit: Number.MAX_VALUE }): SymbolInformation[] {
636
- &nbsp;
637
- const root = doc.root;
638
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!root) {
639
- <span class="cstat-no" title="statement not covered" > return [];</span>
640
- }
641
- &nbsp;
642
- let limit = context.resultLimit || <span class="branch-1 cbranch-no" title="branch not covered" >Number.MAX_VALUE;</span>
643
- &nbsp;
644
- // special handling for key bindings
645
- const resourceString = document.uri;
646
- <span class="missing-if-branch" title="if path not taken" >I</span>if ((resourceString === 'vscode://defaultsettings/keybindings.json') || Strings.endsWith(resourceString.toLowerCase(), '/user/keybindings.json')) {
647
- <span class="cstat-no" title="statement not covered" > if (root.type === 'array') {</span>
648
- const result: SymbolInformation[] = <span class="cstat-no" title="statement not covered" >[];</span>
649
- <span class="cstat-no" title="statement not covered" > for (const item<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >r</span>oot.</span>items)</span> {</span>
650
- <span class="cstat-no" title="statement not covered" > if (item.type === 'object') {</span>
651
- <span class="cstat-no" title="statement not covered" > for (const property<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >i</span>tem.</span>properties)</span> {</span>
652
- <span class="cstat-no" title="statement not covered" > if (property.keyNode.value === 'key' &amp;&amp; property.valueNode) {</span>
653
- const location = <span class="cstat-no" title="statement not covered" >Location.create(document.uri, getRange(document, item));</span>
654
- <span class="cstat-no" title="statement not covered" > result.push({ name: Parser.getNodeValue(property.valueNode), kind: SymbolKind.Function, location: location });</span>
655
- <span class="cstat-no" title="statement not covered" > limit--;</span>
656
- <span class="cstat-no" title="statement not covered" > if (limit &lt;= 0) {</span>
657
- <span class="cstat-no" title="statement not covered" > if (context &amp;&amp; context.onResultLimitExceeded) {</span>
658
- <span class="cstat-no" title="statement not covered" > context.onResultLimitExceeded(resourceString);</span>
659
- }
660
- <span class="cstat-no" title="statement not covered" > return result;</span>
661
- }
662
- }
663
- }
664
- }
665
- }
666
- <span class="cstat-no" title="statement not covered" > return result;</span>
667
- }
668
- }
669
- &nbsp;
670
- const toVisit: { node: ASTNode, containerName: string }[] = [
671
- { node: root, containerName: '' }
672
- ];
673
- let nextToVisit = 0;
674
- let limitExceeded = false;
675
- &nbsp;
676
- const result: SymbolInformation[] = [];
677
- &nbsp;
678
- const collectOutlineEntries = (node: ASTNode, containerName: string): void =&gt; {
679
- if (node.type === 'array') {
680
- node.items.forEach(node =&gt; {
681
- <span class="missing-if-branch" title="else path not taken" >E</span>if (node) {
682
- toVisit.push({ node, containerName });
683
- }
684
- });
685
- } else if (node.type === 'object') {
686
- node.properties.forEach((property: PropertyASTNode) =&gt; {
687
- const valueNode = property.valueNode;
688
- if (valueNode) {
689
- if (limit &gt; 0) {
690
- limit--;
691
- const location = Location.create(document.uri, getRange(document, property));
692
- const childContainerName = containerName ? containerName + '.' + property.keyNode.value : property.keyNode.value;
693
- result.push({ name: this.getKeyLabel(property), kind: this.getSymbolKind(valueNode.type), location: location, containerName: containerName });
694
- toVisit.push({ node: valueNode, containerName: childContainerName });
695
- } else {
696
- limitExceeded = true;
697
- }
698
- }
699
- });
700
- }
701
- };
702
- &nbsp;
703
- // breath first traversal
704
- while (nextToVisit &lt; toVisit.length) {
705
- const next = toVisit[nextToVisit++];
706
- collectOutlineEntries(next.node, next.containerName);
707
- }
708
- &nbsp;
709
- if (limitExceeded &amp;&amp; context &amp;&amp; context.onResultLimitExceeded) {
710
- context.onResultLimitExceeded(resourceString);
711
- }
712
- return result;
713
- }
714
- &nbsp;
715
- public findDocumentSymbols2(document: TextDocument, doc: Parser.JSONDocument, context: DocumentSymbolsContext = { resultLimit: Number.MAX_VALUE }): DocumentSymbol[] {
716
- &nbsp;
717
- const root = doc.root;
718
- <span class="missing-if-branch" title="if path not taken" >I</span>if (!root) {
719
- <span class="cstat-no" title="statement not covered" > return [];</span>
720
- }
721
- &nbsp;
722
- let limit = context.resultLimit || <span class="branch-1 cbranch-no" title="branch not covered" >Number.MAX_VALUE;</span>
723
- &nbsp;
724
- // special handling for key bindings
725
- const resourceString = document.uri;
726
- <span class="missing-if-branch" title="if path not taken" >I</span>if ((resourceString === 'vscode://defaultsettings/keybindings.json') || Strings.endsWith(resourceString.toLowerCase(), '/user/keybindings.json')) {
727
- <span class="cstat-no" title="statement not covered" > if (root.type === 'array') {</span>
728
- const result: DocumentSymbol[] = <span class="cstat-no" title="statement not covered" >[];</span>
729
- <span class="cstat-no" title="statement not covered" > for (const item<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >r</span>oot.</span>items)</span> {</span>
730
- <span class="cstat-no" title="statement not covered" > if (item.type === 'object') {</span>
731
- <span class="cstat-no" title="statement not covered" > for (const property<span class="cstat-no" title="statement not covered" > of <span class="cstat-no" title="statement not covered" ><span class="cstat-no" title="statement not covered" >i</span>tem.</span>properties)</span> {</span>
732
- <span class="cstat-no" title="statement not covered" > if (property.keyNode.value === 'key' &amp;&amp; property.valueNode) {</span>
733
- const range = <span class="cstat-no" title="statement not covered" >getRange(document, item);</span>
734
- const selectionRange = <span class="cstat-no" title="statement not covered" >getRange(document, property.keyNode);</span>
735
- <span class="cstat-no" title="statement not covered" > result.push({ name: Parser.getNodeValue(property.valueNode), kind: SymbolKind.Function, range, selectionRange });</span>
736
- <span class="cstat-no" title="statement not covered" > limit--;</span>
737
- <span class="cstat-no" title="statement not covered" > if (limit &lt;= 0) {</span>
738
- <span class="cstat-no" title="statement not covered" > if (context &amp;&amp; context.onResultLimitExceeded) {</span>
739
- <span class="cstat-no" title="statement not covered" > context.onResultLimitExceeded(resourceString);</span>
740
- }
741
- <span class="cstat-no" title="statement not covered" > return result;</span>
742
- }
743
- }
744
- }
745
- }
746
- }
747
- <span class="cstat-no" title="statement not covered" > return result;</span>
748
- }
749
- }
750
- &nbsp;
751
- const result: DocumentSymbol[] = [];
752
- const toVisit: { node: ASTNode, result: DocumentSymbol[] }[] = [
753
- { node: root, result }
754
- ];
755
- let nextToVisit = 0;
756
- let limitExceeded = false;
757
- &nbsp;
758
- const collectOutlineEntries = (node: ASTNode, result: DocumentSymbol[]) =&gt; {
759
- if (node.type === 'array') {
760
- node.items.forEach((node, index) =&gt; {
761
- <span class="missing-if-branch" title="else path not taken" >E</span>if (node) {
762
- <span class="missing-if-branch" title="else path not taken" >E</span>if (limit &gt; 0) {
763
- limit--;
764
- const range = getRange(document, node);
765
- const selectionRange = range;
766
- const name = String(index);
767
- const symbol = { name, kind: this.getSymbolKind(node.type), range, selectionRange, children: [] };
768
- result.push(symbol);
769
- toVisit.push({ result: symbol.children, node });
770
- } else {
771
- <span class="cstat-no" title="statement not covered" > limitExceeded = true;</span>
772
- }
773
- }
774
- });
775
- } else if (node.type === 'object') {
776
- node.properties.forEach((property: PropertyASTNode) =&gt; {
777
- const valueNode = property.valueNode;
778
- <span class="missing-if-branch" title="else path not taken" >E</span>if (valueNode) {
779
- if (limit &gt; 0) {
780
- limit--;
781
- const range = getRange(document, property);
782
- const selectionRange = getRange(document, property.keyNode);
783
- const symbol = { name: this.getKeyLabel(property), kind: this.getSymbolKind(valueNode.type), range, selectionRange, children: [] };
784
- result.push(symbol);
785
- toVisit.push({ result: symbol.children, node: valueNode });
786
- } else {
787
- limitExceeded = true;
788
- }
789
- }
790
- });
791
- }
792
- };
793
- &nbsp;
794
- // breath first traversal
795
- while (nextToVisit &lt; toVisit.length) {
796
- const next = toVisit[nextToVisit++];
797
- collectOutlineEntries(next.node, next.result);
798
- }
799
- &nbsp;
800
- if (limitExceeded &amp;&amp; context &amp;&amp; context.onResultLimitExceeded) {
801
- context.onResultLimitExceeded(resourceString);
802
- }
803
- return result;
804
- }
805
- &nbsp;
806
- &nbsp;
807
- private getSymbolKind(nodeType: string): SymbolKind {
808
- switch (nodeType) {
809
- case 'object':
810
- return SymbolKind.Module;
811
- case 'string':
812
- return SymbolKind.String;
813
- case 'number':
814
- return SymbolKind.Number;
815
- case 'array':
816
- return SymbolKind.Array;
817
- case 'boolean':
818
- return SymbolKind.Boolean;
819
- <span class="branch-5 cbranch-no" title="branch not covered" > default: // 'null'</span>
820
- <span class="cstat-no" title="statement not covered" > return SymbolKind.Variable;</span>
821
- }
822
- }
823
- &nbsp;
824
- private getKeyLabel(property: PropertyASTNode) {
825
- let name = property.keyNode.value;
826
- if (name) {
827
- name = name.replace(/[\n]/g, '↵');
828
- }
829
- if (name &amp;&amp; name.trim()) {
830
- return name;
831
- }
832
- return `"${name}"`;
833
- }
834
- &nbsp;
835
- public findDocumentColors(document: TextDocument, doc: Parser.JSONDocument, context?: DocumentSymbolsContext): Thenable&lt;ColorInformation[]&gt; {
836
- return this.schemaService.getSchemaForResource(document.uri, doc).then(schema =&gt; {
837
- const result: ColorInformation[] = [];
838
- <span class="missing-if-branch" title="else path not taken" >E</span>if (schema) {
839
- let limit = context &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >typeof context.resultLimit === 'number' </span>? <span class="branch-0 cbranch-no" title="branch not covered" >context.resultLimit </span>: Number.MAX_VALUE;
840
- const matchingSchemas = doc.getMatchingSchemas(schema.schema);
841
- const visitedNode: { [nodeId: string]: boolean } = {};
842
- for (const s of matchingSchemas) {
843
- if (!s.inverted &amp;&amp; s.schema &amp;&amp; (s.schema.format === 'color' || s.schema.format === 'color-hex') &amp;&amp; s.node &amp;&amp; s.node.type === 'string') {
844
- const nodeId = String(s.node.offset);
845
- <span class="missing-if-branch" title="else path not taken" >E</span>if (!visitedNode[nodeId]) {
846
- const color = colorFromHex(Parser.getNodeValue(s.node));
847
- <span class="missing-if-branch" title="else path not taken" >E</span>if (color) {
848
- const range = getRange(document, s.node);
849
- result.push({ color, range });
850
- }
851
- visitedNode[nodeId] = true;
852
- limit--;
853
- <span class="missing-if-branch" title="if path not taken" >I</span>if (limit &lt;= 0) {
854
- <span class="cstat-no" title="statement not covered" > if (context &amp;&amp; context.onResultLimitExceeded) {</span>
855
- <span class="cstat-no" title="statement not covered" > context.onResultLimitExceeded(document.uri);</span>
856
- }
857
- <span class="cstat-no" title="statement not covered" > return result;</span>
858
- }
859
- }
860
- }
861
- }
862
- }
863
- return result;
864
- });
865
- }
866
- &nbsp;
867
- public getColorPresentations(document: TextDocument, doc: Parser.JSONDocument, color: Color, range: Range): ColorPresentation[] {
868
- const result: ColorPresentation[] = [];
869
- const red256 = Math.round(color.red * 255), green256 = Math.round(color.green * 255), blue256 = Math.round(color.blue * 255);
870
- &nbsp;
871
- function toTwoDigitHex(n: number): string {
872
- const r = n.toString(16);
873
- return r.length !== 2 ? '0' + r : r;
874
- }
875
- &nbsp;
876
- let label;
877
- if (color.alpha === 1) {
878
- label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}`;
879
- } else {
880
- label = `#${toTwoDigitHex(red256)}${toTwoDigitHex(green256)}${toTwoDigitHex(blue256)}${toTwoDigitHex(Math.round(color.alpha * 255))}`;
881
- }
882
- result.push({ label: label, textEdit: TextEdit.replace(range, JSON.stringify(label)) });
883
- &nbsp;
884
- return result;
885
- }
886
- &nbsp;
887
- }
888
- &nbsp;
889
- function getRange(document: TextDocument, node: ASTNode) {
890
- return Range.create(document.positionAt(node.offset), document.positionAt(node.offset + node.length));
891
- }</pre></td></tr></table></pre>
892
-
893
- <div class='push'></div><!-- for sticky footer -->
894
- </div><!-- /wrapper -->
895
- <div class='footer quiet pad2 space-top1 center small'>
896
- Code coverage generated by
897
- <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
898
- at Mon Apr 27 2020 21:56:17 GMT+0200 (Central European Summer Time)
899
- </div>
900
- </div>
901
- <script src="../../prettify.js"></script>
902
- <script>
903
- window.onload = function () {
904
- prettyPrint();
905
- };
906
- </script>
907
- <script src="../../sorter.js"></script>
908
- <script src="../../block-navigation.js"></script>
909
- </body>
910
- </html>
911
-