topkat-utils 1.3.11 → 1.3.13
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/dist/src/error-utils.js +10 -2
- package/dist/src/error-utils.js.map +1 -1
- package/package.json +1 -1
- package/src/error-utils.ts +10 -1
- package/.yarn/install-state.gz +0 -0
- package/coverage/clover.xml +0 -1982
- package/coverage/coverage-final.json +0 -17
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/clean-stack-trace.ts.html +0 -199
- package/coverage/lcov-report/config.ts.html +0 -352
- package/coverage/lcov-report/error-utils.ts.html +0 -739
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -341
- package/coverage/lcov-report/is-empty.ts.html +0 -103
- package/coverage/lcov-report/is-nodejs.ts.html +0 -109
- package/coverage/lcov-report/is-object.ts.html +0 -91
- package/coverage/lcov-report/isset.ts.html +0 -91
- package/coverage/lcov-report/logger-utils.ts.html +0 -1159
- package/coverage/lcov-report/loop-utils.ts.html +0 -574
- package/coverage/lcov-report/math-utils.ts.html +0 -259
- package/coverage/lcov-report/object-utils.ts.html +0 -1471
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/regexp-utils.ts.html +0 -238
- package/coverage/lcov-report/remove-circular-json-stringify.ts.html +0 -139
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov-report/string-utils.ts.html +0 -964
- package/coverage/lcov-report/timer-utils.ts.html +0 -349
- package/coverage/lcov-report/transaction-utils.ts.html +0 -274
- package/coverage/lcov.info +0 -2396
|
@@ -1,1159 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
<!doctype html>
|
|
3
|
-
<html lang="en">
|
|
4
|
-
|
|
5
|
-
<head>
|
|
6
|
-
<title>Code coverage report for logger-utils.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> logger-utils.ts</h1>
|
|
23
|
-
<div class='clearfix'>
|
|
24
|
-
|
|
25
|
-
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">40.89% </span>
|
|
27
|
-
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>146/357</span>
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">31.81% </span>
|
|
34
|
-
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>7/22</span>
|
|
36
|
-
</div>
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">12.5% </span>
|
|
41
|
-
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>5/40</span>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">40.89% </span>
|
|
48
|
-
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>146/357</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 low'></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>
|
|
415
|
-
<a name='L350'></a><a href='#L350'>350</a>
|
|
416
|
-
<a name='L351'></a><a href='#L351'>351</a>
|
|
417
|
-
<a name='L352'></a><a href='#L352'>352</a>
|
|
418
|
-
<a name='L353'></a><a href='#L353'>353</a>
|
|
419
|
-
<a name='L354'></a><a href='#L354'>354</a>
|
|
420
|
-
<a name='L355'></a><a href='#L355'>355</a>
|
|
421
|
-
<a name='L356'></a><a href='#L356'>356</a>
|
|
422
|
-
<a name='L357'></a><a href='#L357'>357</a>
|
|
423
|
-
<a name='L358'></a><a href='#L358'>358</a>
|
|
424
|
-
<a name='L359'></a><a href='#L359'>359</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
425
|
-
<span class="cline-any cline-yes">2x</span>
|
|
426
|
-
<span class="cline-any cline-yes">2x</span>
|
|
427
|
-
<span class="cline-any cline-yes">2x</span>
|
|
428
|
-
<span class="cline-any cline-yes">2x</span>
|
|
429
|
-
<span class="cline-any cline-yes">2x</span>
|
|
430
|
-
<span class="cline-any cline-yes">2x</span>
|
|
431
|
-
<span class="cline-any cline-yes">2x</span>
|
|
432
|
-
<span class="cline-any cline-yes">2x</span>
|
|
433
|
-
<span class="cline-any cline-yes">2x</span>
|
|
434
|
-
<span class="cline-any cline-yes">2x</span>
|
|
435
|
-
<span class="cline-any cline-yes">2x</span>
|
|
436
|
-
<span class="cline-any cline-yes">2x</span>
|
|
437
|
-
<span class="cline-any cline-yes">2x</span>
|
|
438
|
-
<span class="cline-any cline-yes">2x</span>
|
|
439
|
-
<span class="cline-any cline-yes">2x</span>
|
|
440
|
-
<span class="cline-any cline-yes">2x</span>
|
|
441
|
-
<span class="cline-any cline-yes">2x</span>
|
|
442
|
-
<span class="cline-any cline-yes">2x</span>
|
|
443
|
-
<span class="cline-any cline-yes">2x</span>
|
|
444
|
-
<span class="cline-any cline-yes">2x</span>
|
|
445
|
-
<span class="cline-any cline-no"> </span>
|
|
446
|
-
<span class="cline-any cline-yes">2x</span>
|
|
447
|
-
<span class="cline-any cline-yes">2x</span>
|
|
448
|
-
<span class="cline-any cline-yes">2x</span>
|
|
449
|
-
<span class="cline-any cline-yes">2x</span>
|
|
450
|
-
<span class="cline-any cline-yes">2x</span>
|
|
451
|
-
<span class="cline-any cline-yes">2x</span>
|
|
452
|
-
<span class="cline-any cline-yes">2x</span>
|
|
453
|
-
<span class="cline-any cline-yes">2x</span>
|
|
454
|
-
<span class="cline-any cline-no"> </span>
|
|
455
|
-
<span class="cline-any cline-no"> </span>
|
|
456
|
-
<span class="cline-any cline-no"> </span>
|
|
457
|
-
<span class="cline-any cline-no"> </span>
|
|
458
|
-
<span class="cline-any cline-no"> </span>
|
|
459
|
-
<span class="cline-any cline-no"> </span>
|
|
460
|
-
<span class="cline-any cline-no"> </span>
|
|
461
|
-
<span class="cline-any cline-no"> </span>
|
|
462
|
-
<span class="cline-any cline-no"> </span>
|
|
463
|
-
<span class="cline-any cline-no"> </span>
|
|
464
|
-
<span class="cline-any cline-no"> </span>
|
|
465
|
-
<span class="cline-any cline-no"> </span>
|
|
466
|
-
<span class="cline-any cline-no"> </span>
|
|
467
|
-
<span class="cline-any cline-no"> </span>
|
|
468
|
-
<span class="cline-any cline-no"> </span>
|
|
469
|
-
<span class="cline-any cline-no"> </span>
|
|
470
|
-
<span class="cline-any cline-no"> </span>
|
|
471
|
-
<span class="cline-any cline-no"> </span>
|
|
472
|
-
<span class="cline-any cline-no"> </span>
|
|
473
|
-
<span class="cline-any cline-no"> </span>
|
|
474
|
-
<span class="cline-any cline-no"> </span>
|
|
475
|
-
<span class="cline-any cline-no"> </span>
|
|
476
|
-
<span class="cline-any cline-no"> </span>
|
|
477
|
-
<span class="cline-any cline-no"> </span>
|
|
478
|
-
<span class="cline-any cline-no"> </span>
|
|
479
|
-
<span class="cline-any cline-yes">2x</span>
|
|
480
|
-
<span class="cline-any cline-yes">2x</span>
|
|
481
|
-
<span class="cline-any cline-no"> </span>
|
|
482
|
-
<span class="cline-any cline-no"> </span>
|
|
483
|
-
<span class="cline-any cline-yes">2x</span>
|
|
484
|
-
<span class="cline-any cline-yes">2x</span>
|
|
485
|
-
<span class="cline-any cline-yes">2x</span>
|
|
486
|
-
<span class="cline-any cline-yes">2x</span>
|
|
487
|
-
<span class="cline-any cline-yes">2x</span>
|
|
488
|
-
<span class="cline-any cline-yes">2x</span>
|
|
489
|
-
<span class="cline-any cline-yes">2x</span>
|
|
490
|
-
<span class="cline-any cline-yes">2x</span>
|
|
491
|
-
<span class="cline-any cline-yes">2x</span>
|
|
492
|
-
<span class="cline-any cline-yes">2x</span>
|
|
493
|
-
<span class="cline-any cline-yes">2x</span>
|
|
494
|
-
<span class="cline-any cline-yes">2x</span>
|
|
495
|
-
<span class="cline-any cline-yes">2x</span>
|
|
496
|
-
<span class="cline-any cline-yes">2x</span>
|
|
497
|
-
<span class="cline-any cline-yes">2x</span>
|
|
498
|
-
<span class="cline-any cline-yes">2x</span>
|
|
499
|
-
<span class="cline-any cline-yes">2x</span>
|
|
500
|
-
<span class="cline-any cline-yes">2x</span>
|
|
501
|
-
<span class="cline-any cline-yes">2x</span>
|
|
502
|
-
<span class="cline-any cline-yes">2x</span>
|
|
503
|
-
<span class="cline-any cline-yes">2x</span>
|
|
504
|
-
<span class="cline-any cline-yes">2x</span>
|
|
505
|
-
<span class="cline-any cline-no"> </span>
|
|
506
|
-
<span class="cline-any cline-no"> </span>
|
|
507
|
-
<span class="cline-any cline-yes">2x</span>
|
|
508
|
-
<span class="cline-any cline-yes">2x</span>
|
|
509
|
-
<span class="cline-any cline-yes">2x</span>
|
|
510
|
-
<span class="cline-any cline-yes">2x</span>
|
|
511
|
-
<span class="cline-any cline-yes">2x</span>
|
|
512
|
-
<span class="cline-any cline-yes">2x</span>
|
|
513
|
-
<span class="cline-any cline-yes">2x</span>
|
|
514
|
-
<span class="cline-any cline-yes">2x</span>
|
|
515
|
-
<span class="cline-any cline-no"> </span>
|
|
516
|
-
<span class="cline-any cline-yes">2x</span>
|
|
517
|
-
<span class="cline-any cline-yes">2x</span>
|
|
518
|
-
<span class="cline-any cline-yes">2x</span>
|
|
519
|
-
<span class="cline-any cline-yes">2x</span>
|
|
520
|
-
<span class="cline-any cline-yes">2x</span>
|
|
521
|
-
<span class="cline-any cline-no"> </span>
|
|
522
|
-
<span class="cline-any cline-no"> </span>
|
|
523
|
-
<span class="cline-any cline-no"> </span>
|
|
524
|
-
<span class="cline-any cline-no"> </span>
|
|
525
|
-
<span class="cline-any cline-no"> </span>
|
|
526
|
-
<span class="cline-any cline-no"> </span>
|
|
527
|
-
<span class="cline-any cline-no"> </span>
|
|
528
|
-
<span class="cline-any cline-no"> </span>
|
|
529
|
-
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-no"> </span>
|
|
531
|
-
<span class="cline-any cline-no"> </span>
|
|
532
|
-
<span class="cline-any cline-no"> </span>
|
|
533
|
-
<span class="cline-any cline-yes">2x</span>
|
|
534
|
-
<span class="cline-any cline-yes">2x</span>
|
|
535
|
-
<span class="cline-any cline-yes">2x</span>
|
|
536
|
-
<span class="cline-any cline-no"> </span>
|
|
537
|
-
<span class="cline-any cline-yes">2x</span>
|
|
538
|
-
<span class="cline-any cline-yes">2x</span>
|
|
539
|
-
<span class="cline-any cline-no"> </span>
|
|
540
|
-
<span class="cline-any cline-no"> </span>
|
|
541
|
-
<span class="cline-any cline-no"> </span>
|
|
542
|
-
<span class="cline-any cline-yes">2x</span>
|
|
543
|
-
<span class="cline-any cline-yes">2x</span>
|
|
544
|
-
<span class="cline-any cline-no"> </span>
|
|
545
|
-
<span class="cline-any cline-no"> </span>
|
|
546
|
-
<span class="cline-any cline-no"> </span>
|
|
547
|
-
<span class="cline-any cline-no"> </span>
|
|
548
|
-
<span class="cline-any cline-no"> </span>
|
|
549
|
-
<span class="cline-any cline-yes">2x</span>
|
|
550
|
-
<span class="cline-any cline-yes">2x</span>
|
|
551
|
-
<span class="cline-any cline-no"> </span>
|
|
552
|
-
<span class="cline-any cline-no"> </span>
|
|
553
|
-
<span class="cline-any cline-no"> </span>
|
|
554
|
-
<span class="cline-any cline-no"> </span>
|
|
555
|
-
<span class="cline-any cline-yes">2x</span>
|
|
556
|
-
<span class="cline-any cline-yes">2x</span>
|
|
557
|
-
<span class="cline-any cline-yes">2x</span>
|
|
558
|
-
<span class="cline-any cline-yes">2x</span>
|
|
559
|
-
<span class="cline-any cline-yes">2x</span>
|
|
560
|
-
<span class="cline-any cline-yes">2x</span>
|
|
561
|
-
<span class="cline-any cline-yes">2x</span>
|
|
562
|
-
<span class="cline-any cline-yes">2x</span>
|
|
563
|
-
<span class="cline-any cline-yes">2x</span>
|
|
564
|
-
<span class="cline-any cline-yes">2x</span>
|
|
565
|
-
<span class="cline-any cline-no"> </span>
|
|
566
|
-
<span class="cline-any cline-no"> </span>
|
|
567
|
-
<span class="cline-any cline-no"> </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-no"> </span>
|
|
571
|
-
<span class="cline-any cline-no"> </span>
|
|
572
|
-
<span class="cline-any cline-no"> </span>
|
|
573
|
-
<span class="cline-any cline-no"> </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-yes">2x</span>
|
|
578
|
-
<span class="cline-any cline-no"> </span>
|
|
579
|
-
<span class="cline-any cline-no"> </span>
|
|
580
|
-
<span class="cline-any cline-no"> </span>
|
|
581
|
-
<span class="cline-any cline-no"> </span>
|
|
582
|
-
<span class="cline-any cline-no"> </span>
|
|
583
|
-
<span class="cline-any cline-no"> </span>
|
|
584
|
-
<span class="cline-any cline-no"> </span>
|
|
585
|
-
<span class="cline-any cline-yes">2x</span>
|
|
586
|
-
<span class="cline-any cline-yes">2x</span>
|
|
587
|
-
<span class="cline-any cline-yes">2x</span>
|
|
588
|
-
<span class="cline-any cline-yes">2x</span>
|
|
589
|
-
<span class="cline-any cline-no"> </span>
|
|
590
|
-
<span class="cline-any cline-no"> </span>
|
|
591
|
-
<span class="cline-any cline-no"> </span>
|
|
592
|
-
<span class="cline-any cline-no"> </span>
|
|
593
|
-
<span class="cline-any cline-no"> </span>
|
|
594
|
-
<span class="cline-any cline-no"> </span>
|
|
595
|
-
<span class="cline-any cline-no"> </span>
|
|
596
|
-
<span class="cline-any cline-no"> </span>
|
|
597
|
-
<span class="cline-any cline-no"> </span>
|
|
598
|
-
<span class="cline-any cline-no"> </span>
|
|
599
|
-
<span class="cline-any cline-no"> </span>
|
|
600
|
-
<span class="cline-any cline-no"> </span>
|
|
601
|
-
<span class="cline-any cline-no"> </span>
|
|
602
|
-
<span class="cline-any cline-yes">2x</span>
|
|
603
|
-
<span class="cline-any cline-yes">2x</span>
|
|
604
|
-
<span class="cline-any cline-no"> </span>
|
|
605
|
-
<span class="cline-any cline-no"> </span>
|
|
606
|
-
<span class="cline-any cline-yes">2x</span>
|
|
607
|
-
<span class="cline-any cline-yes">2x</span>
|
|
608
|
-
<span class="cline-any cline-yes">2x</span>
|
|
609
|
-
<span class="cline-any cline-no"> </span>
|
|
610
|
-
<span class="cline-any cline-no"> </span>
|
|
611
|
-
<span class="cline-any cline-no"> </span>
|
|
612
|
-
<span class="cline-any cline-no"> </span>
|
|
613
|
-
<span class="cline-any cline-no"> </span>
|
|
614
|
-
<span class="cline-any cline-no"> </span>
|
|
615
|
-
<span class="cline-any cline-yes">2x</span>
|
|
616
|
-
<span class="cline-any cline-yes">2x</span>
|
|
617
|
-
<span class="cline-any cline-yes">2x</span>
|
|
618
|
-
<span class="cline-any cline-yes">2x</span>
|
|
619
|
-
<span class="cline-any cline-yes">2x</span>
|
|
620
|
-
<span class="cline-any cline-yes">2x</span>
|
|
621
|
-
<span class="cline-any cline-yes">2x</span>
|
|
622
|
-
<span class="cline-any cline-yes">2x</span>
|
|
623
|
-
<span class="cline-any cline-yes">2x</span>
|
|
624
|
-
<span class="cline-any cline-yes">2x</span>
|
|
625
|
-
<span class="cline-any cline-yes">2x</span>
|
|
626
|
-
<span class="cline-any cline-yes">2x</span>
|
|
627
|
-
<span class="cline-any cline-yes">2x</span>
|
|
628
|
-
<span class="cline-any cline-yes">2x</span>
|
|
629
|
-
<span class="cline-any cline-yes">2x</span>
|
|
630
|
-
<span class="cline-any cline-yes">2x</span>
|
|
631
|
-
<span class="cline-any cline-no"> </span>
|
|
632
|
-
<span class="cline-any cline-yes">2x</span>
|
|
633
|
-
<span class="cline-any cline-no"> </span>
|
|
634
|
-
<span class="cline-any cline-no"> </span>
|
|
635
|
-
<span class="cline-any cline-no"> </span>
|
|
636
|
-
<span class="cline-any cline-no"> </span>
|
|
637
|
-
<span class="cline-any cline-no"> </span>
|
|
638
|
-
<span class="cline-any cline-no"> </span>
|
|
639
|
-
<span class="cline-any cline-no"> </span>
|
|
640
|
-
<span class="cline-any cline-no"> </span>
|
|
641
|
-
<span class="cline-any cline-no"> </span>
|
|
642
|
-
<span class="cline-any cline-no"> </span>
|
|
643
|
-
<span class="cline-any cline-no"> </span>
|
|
644
|
-
<span class="cline-any cline-yes">2x</span>
|
|
645
|
-
<span class="cline-any cline-yes">2x</span>
|
|
646
|
-
<span class="cline-any cline-yes">2x</span>
|
|
647
|
-
<span class="cline-any cline-yes">2x</span>
|
|
648
|
-
<span class="cline-any cline-yes">2x</span>
|
|
649
|
-
<span class="cline-any cline-no"> </span>
|
|
650
|
-
<span class="cline-any cline-no"> </span>
|
|
651
|
-
<span class="cline-any cline-yes">2x</span>
|
|
652
|
-
<span class="cline-any cline-yes">2x</span>
|
|
653
|
-
<span class="cline-any cline-yes">2x</span>
|
|
654
|
-
<span class="cline-any cline-yes">2x</span>
|
|
655
|
-
<span class="cline-any cline-yes">2x</span>
|
|
656
|
-
<span class="cline-any cline-yes">2x</span>
|
|
657
|
-
<span class="cline-any cline-yes">2x</span>
|
|
658
|
-
<span class="cline-any cline-yes">2x</span>
|
|
659
|
-
<span class="cline-any cline-yes">2x</span>
|
|
660
|
-
<span class="cline-any cline-yes">2x</span>
|
|
661
|
-
<span class="cline-any cline-no"> </span>
|
|
662
|
-
<span class="cline-any cline-no"> </span>
|
|
663
|
-
<span class="cline-any cline-no"> </span>
|
|
664
|
-
<span class="cline-any cline-no"> </span>
|
|
665
|
-
<span class="cline-any cline-no"> </span>
|
|
666
|
-
<span class="cline-any cline-no"> </span>
|
|
667
|
-
<span class="cline-any cline-no"> </span>
|
|
668
|
-
<span class="cline-any cline-no"> </span>
|
|
669
|
-
<span class="cline-any cline-no"> </span>
|
|
670
|
-
<span class="cline-any cline-no"> </span>
|
|
671
|
-
<span class="cline-any cline-no"> </span>
|
|
672
|
-
<span class="cline-any cline-no"> </span>
|
|
673
|
-
<span class="cline-any cline-no"> </span>
|
|
674
|
-
<span class="cline-any cline-no"> </span>
|
|
675
|
-
<span class="cline-any cline-no"> </span>
|
|
676
|
-
<span class="cline-any cline-no"> </span>
|
|
677
|
-
<span class="cline-any cline-no"> </span>
|
|
678
|
-
<span class="cline-any cline-yes">2x</span>
|
|
679
|
-
<span class="cline-any cline-no"> </span>
|
|
680
|
-
<span class="cline-any cline-no"> </span>
|
|
681
|
-
<span class="cline-any cline-no"> </span>
|
|
682
|
-
<span class="cline-any cline-no"> </span>
|
|
683
|
-
<span class="cline-any cline-no"> </span>
|
|
684
|
-
<span class="cline-any cline-no"> </span>
|
|
685
|
-
<span class="cline-any cline-no"> </span>
|
|
686
|
-
<span class="cline-any cline-no"> </span>
|
|
687
|
-
<span class="cline-any cline-no"> </span>
|
|
688
|
-
<span class="cline-any cline-no"> </span>
|
|
689
|
-
<span class="cline-any cline-no"> </span>
|
|
690
|
-
<span class="cline-any cline-no"> </span>
|
|
691
|
-
<span class="cline-any cline-no"> </span>
|
|
692
|
-
<span class="cline-any cline-no"> </span>
|
|
693
|
-
<span class="cline-any cline-no"> </span>
|
|
694
|
-
<span class="cline-any cline-no"> </span>
|
|
695
|
-
<span class="cline-any cline-no"> </span>
|
|
696
|
-
<span class="cline-any cline-no"> </span>
|
|
697
|
-
<span class="cline-any cline-no"> </span>
|
|
698
|
-
<span class="cline-any cline-no"> </span>
|
|
699
|
-
<span class="cline-any cline-no"> </span>
|
|
700
|
-
<span class="cline-any cline-no"> </span>
|
|
701
|
-
<span class="cline-any cline-no"> </span>
|
|
702
|
-
<span class="cline-any cline-no"> </span>
|
|
703
|
-
<span class="cline-any cline-no"> </span>
|
|
704
|
-
<span class="cline-any cline-no"> </span>
|
|
705
|
-
<span class="cline-any cline-no"> </span>
|
|
706
|
-
<span class="cline-any cline-no"> </span>
|
|
707
|
-
<span class="cline-any cline-no"> </span>
|
|
708
|
-
<span class="cline-any cline-no"> </span>
|
|
709
|
-
<span class="cline-any cline-no"> </span>
|
|
710
|
-
<span class="cline-any cline-no"> </span>
|
|
711
|
-
<span class="cline-any cline-yes">2x</span>
|
|
712
|
-
<span class="cline-any cline-yes">2x</span>
|
|
713
|
-
<span class="cline-any cline-yes">2x</span>
|
|
714
|
-
<span class="cline-any cline-yes">2x</span>
|
|
715
|
-
<span class="cline-any cline-yes">2x</span>
|
|
716
|
-
<span class="cline-any cline-yes">2x</span>
|
|
717
|
-
<span class="cline-any cline-yes">2x</span>
|
|
718
|
-
<span class="cline-any cline-no"> </span>
|
|
719
|
-
<span class="cline-any cline-no"> </span>
|
|
720
|
-
<span class="cline-any cline-no"> </span>
|
|
721
|
-
<span class="cline-any cline-no"> </span>
|
|
722
|
-
<span class="cline-any cline-no"> </span>
|
|
723
|
-
<span class="cline-any cline-no"> </span>
|
|
724
|
-
<span class="cline-any cline-yes">2x</span>
|
|
725
|
-
<span class="cline-any cline-yes">2x</span>
|
|
726
|
-
<span class="cline-any cline-yes">2x</span>
|
|
727
|
-
<span class="cline-any cline-yes">2x</span>
|
|
728
|
-
<span class="cline-any cline-no"> </span>
|
|
729
|
-
<span class="cline-any cline-no"> </span>
|
|
730
|
-
<span class="cline-any cline-no"> </span>
|
|
731
|
-
<span class="cline-any cline-no"> </span>
|
|
732
|
-
<span class="cline-any cline-no"> </span>
|
|
733
|
-
<span class="cline-any cline-no"> </span>
|
|
734
|
-
<span class="cline-any cline-no"> </span>
|
|
735
|
-
<span class="cline-any cline-no"> </span>
|
|
736
|
-
<span class="cline-any cline-no"> </span>
|
|
737
|
-
<span class="cline-any cline-no"> </span>
|
|
738
|
-
<span class="cline-any cline-no"> </span>
|
|
739
|
-
<span class="cline-any cline-no"> </span>
|
|
740
|
-
<span class="cline-any cline-no"> </span>
|
|
741
|
-
<span class="cline-any cline-no"> </span>
|
|
742
|
-
<span class="cline-any cline-no"> </span>
|
|
743
|
-
<span class="cline-any cline-no"> </span>
|
|
744
|
-
<span class="cline-any cline-no"> </span>
|
|
745
|
-
<span class="cline-any cline-no"> </span>
|
|
746
|
-
<span class="cline-any cline-no"> </span>
|
|
747
|
-
<span class="cline-any cline-no"> </span>
|
|
748
|
-
<span class="cline-any cline-no"> </span>
|
|
749
|
-
<span class="cline-any cline-no"> </span>
|
|
750
|
-
<span class="cline-any cline-no"> </span>
|
|
751
|
-
<span class="cline-any cline-no"> </span>
|
|
752
|
-
<span class="cline-any cline-no"> </span>
|
|
753
|
-
<span class="cline-any cline-no"> </span>
|
|
754
|
-
<span class="cline-any cline-no"> </span>
|
|
755
|
-
<span class="cline-any cline-no"> </span>
|
|
756
|
-
<span class="cline-any cline-no"> </span>
|
|
757
|
-
<span class="cline-any cline-no"> </span>
|
|
758
|
-
<span class="cline-any cline-no"> </span>
|
|
759
|
-
<span class="cline-any cline-no"> </span>
|
|
760
|
-
<span class="cline-any cline-no"> </span>
|
|
761
|
-
<span class="cline-any cline-no"> </span>
|
|
762
|
-
<span class="cline-any cline-no"> </span>
|
|
763
|
-
<span class="cline-any cline-no"> </span>
|
|
764
|
-
<span class="cline-any cline-no"> </span>
|
|
765
|
-
<span class="cline-any cline-no"> </span>
|
|
766
|
-
<span class="cline-any cline-no"> </span>
|
|
767
|
-
<span class="cline-any cline-no"> </span>
|
|
768
|
-
<span class="cline-any cline-no"> </span>
|
|
769
|
-
<span class="cline-any cline-no"> </span>
|
|
770
|
-
<span class="cline-any cline-no"> </span>
|
|
771
|
-
<span class="cline-any cline-no"> </span>
|
|
772
|
-
<span class="cline-any cline-no"> </span>
|
|
773
|
-
<span class="cline-any cline-no"> </span>
|
|
774
|
-
<span class="cline-any cline-no"> </span>
|
|
775
|
-
<span class="cline-any cline-no"> </span>
|
|
776
|
-
<span class="cline-any cline-yes">2x</span>
|
|
777
|
-
<span class="cline-any cline-yes">2x</span>
|
|
778
|
-
<span class="cline-any cline-no"> </span>
|
|
779
|
-
<span class="cline-any cline-no"> </span>
|
|
780
|
-
<span class="cline-any cline-no"> </span>
|
|
781
|
-
<span class="cline-any cline-neutral"> </span>
|
|
782
|
-
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable no-console */
|
|
783
|
-
/* eslint-disable no-control-regex */
|
|
784
|
-
//----------------------------------------
|
|
785
|
-
// LOGGER
|
|
786
|
-
//----------------------------------------
|
|
787
|
-
import { configFn } from './config'
|
|
788
|
-
import { isset } from './isset'
|
|
789
|
-
import { Color } from './types'
|
|
790
|
-
import { removeCircularJSONstringify } from './remove-circular-json-stringify'
|
|
791
|
-
import { cleanStackTrace } from './clean-stack-trace'
|
|
792
|
-
|
|
793
|
-
type NotInfoLogLevel = 'error' | 'warn'
|
|
794
|
-
type LogLevels = NotInfoLogLevel | 'info'
|
|
795
|
-
|
|
796
|
-
export const logger = {
|
|
797
|
-
/** log is an OUTDATED alisas of info, appError is for warning */
|
|
798
|
-
log(str: string, level: LogLevels = 'info') {
|
|
799
|
-
const { preprocessLog } = configFn()
|
|
800
|
-
if (typeof preprocessLog === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >str = preprocessLog(str) || str</span>
|
|
801
|
-
|
|
802
|
-
if (isset(console[level])) console[level](str)
|
|
803
|
-
<span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > else console.log(str)</span></span>
|
|
804
|
-
|
|
805
|
-
logger.raw.push(str + `\n`)
|
|
806
|
-
logger.raw = logger.raw.slice(logger.raw.length - configFn()?.nbOfLogsToKeep, logger?.raw?.length)
|
|
807
|
-
},
|
|
808
|
-
/**
|
|
809
|
-
* @param {String[]|String} inputLogs
|
|
810
|
-
*/
|
|
811
|
-
<span class="fstat-no" title="function not covered" > toHtml(inputLogs = [...logger.raw]) {</span>
|
|
812
|
-
<span class="cstat-no" title="statement not covered" > if (!Array.isArray(inputLogs)) inputLogs = [inputLogs]</span>
|
|
813
|
-
<span class="cstat-no" title="statement not covered" > const code2css = {</span>
|
|
814
|
-
<span class="cstat-no" title="statement not covered" > 2: `opacity:.5`, // dim</span>
|
|
815
|
-
<span class="cstat-no" title="statement not covered" > 32: `color:#679933`, // green</span>
|
|
816
|
-
<span class="cstat-no" title="statement not covered" > 31: `color:#A8383B`, // red</span>
|
|
817
|
-
<span class="cstat-no" title="statement not covered" > 33: `color:#D7941C`, // yellow</span>
|
|
818
|
-
<span class="cstat-no" title="statement not covered" > 35: `color:#C21949`, // magenta</span>
|
|
819
|
-
<span class="cstat-no" title="statement not covered" > 36: `color:#128C6D`, // cyan</span>
|
|
820
|
-
<span class="cstat-no" title="statement not covered" > 34: `color:#1B568B`, // blue</span>
|
|
821
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
822
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
823
|
-
<span class="cstat-no" title="statement not covered" > let htmlLogs = ''</span>
|
|
824
|
-
<span class="cstat-no" title="statement not covered" > inputLogs.join('<br/>').split('\x1b[').forEach((bit, i) => {</span>
|
|
825
|
-
<span class="cstat-no" title="statement not covered" > // the first doesn't have a preceding (may be undef)</span>
|
|
826
|
-
<span class="cstat-no" title="statement not covered" > if (bit) {</span>
|
|
827
|
-
<span class="cstat-no" title="statement not covered" > if (i !== 0) {</span>
|
|
828
|
-
<span class="cstat-no" title="statement not covered" > const [, code, R, G, B, content] = bit.match(/(^\d\d?)(?:;|m)(?:\d;(\d+);(\d+);(\d+)m)?(.*$)/) || []</span>
|
|
829
|
-
<span class="cstat-no" title="statement not covered" > if (content) {</span>
|
|
830
|
-
<span class="cstat-no" title="statement not covered" > const style = !isset(R) ? isset(code) ? code2css[code] : undefined : `color:rgb(${R},${G},${B})`</span>
|
|
831
|
-
<span class="cstat-no" title="statement not covered" > htmlLogs += isset(style) ? `<span style='${style}'>${content.replace(/\n/g, '<br>')}</span>` : content.replace(/\n/g, '<br>')</span>
|
|
832
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
833
|
-
<span class="cstat-no" title="statement not covered" > } else htmlLogs += bit.replace(/\n/g, '<br>')</span>
|
|
834
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
835
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
836
|
-
<span class="cstat-no" title="statement not covered" > return `<div style='color:#ccc'>${htmlLogs}<br></div>`</span>
|
|
837
|
-
},
|
|
838
|
-
<span class="fstat-no" title="function not covered" > toText(inputLogs = [...logger.raw]) {</span>
|
|
839
|
-
<span class="cstat-no" title="statement not covered" > const str = Array.isArray(inputLogs) ? inputLogs.join('\n') : inputLogs</span>
|
|
840
|
-
<span class="cstat-no" title="statement not covered" > return str.replace(/\x1b\[.*?m/g, '')</span>
|
|
841
|
-
},
|
|
842
|
-
raw: [] as string[],
|
|
843
|
-
json: [] as string[],
|
|
844
|
-
}
|
|
845
|
-
|
|
846
|
-
/**
|
|
847
|
-
// console colored output
|
|
848
|
-
// * console.log(C.green(C.dim('Hey bro !')))
|
|
849
|
-
// * or C.log() // will use color defined by themes
|
|
850
|
-
// * or C.line('MY TITLE', 53)
|
|
851
|
-
// * or C.gradientize(myLongString)
|
|
852
|
-
*/
|
|
853
|
-
export const C = {
|
|
854
|
-
dim: <span class="fstat-no" title="function not covered" >str => C.output(2, str),</span> // opacity 0.5
|
|
855
|
-
green: <span class="fstat-no" title="function not covered" >str => C.output(32, str),</span>
|
|
856
|
-
red: <span class="fstat-no" title="function not covered" >str => C.output(31, str),</span>
|
|
857
|
-
yellow: <span class="fstat-no" title="function not covered" >str => C.output(33, str),</span>
|
|
858
|
-
grey: <span class="fstat-no" title="function not covered" >str => C.output(2, str),</span>
|
|
859
|
-
magenta: <span class="fstat-no" title="function not covered" >str => C.output(35, str),</span>
|
|
860
|
-
cyan: <span class="fstat-no" title="function not covered" >str => C.output(36, str),</span>
|
|
861
|
-
blue: <span class="fstat-no" title="function not covered" >str => C.output(34, str),</span>
|
|
862
|
-
primary: <span class="fstat-no" title="function not covered" >str => {</span>
|
|
863
|
-
<span class="cstat-no" title="statement not covered" > const primary: Color = configFn()?.terminal?.theme?.primary</span>
|
|
864
|
-
<span class="cstat-no" title="statement not covered" > return C.rgb(...primary) + str + C.reset</span>
|
|
865
|
-
},
|
|
866
|
-
reset: '\x1b[0m',
|
|
867
|
-
output: <span class="fstat-no" title="function not covered" >(code, str = '') => configFn()?.terminal?.noColor ? str : `\x1b[${code}m${str}\x1b[0m`,</span>
|
|
868
|
-
// true RGB colors B-*
|
|
869
|
-
rgb: (r, g = 0, b = 0) => configFn()?.terminal?.noColor || !isset(r, g, b) <span class="branch-0 cbranch-no" title="branch not covered" >? '' </span>: `\x1b[38;2;${r};${g};${b}m`,
|
|
870
|
-
bg: <span class="fstat-no" title="function not covered" >(r?, g?, b?) => configFn()?.terminal?.noColor || !isset(r, g, b) ? '' : `${'\x1b['}48;2;${r};${g};${b}m`,</span>
|
|
871
|
-
/** Output a line of title */
|
|
872
|
-
<span class="fstat-no" title="function not covered" > line(title = '', length = configFn()?.terminal?.theme?.pageWidth, clr = configFn()?.terminal?.theme?.primary, char = '=') {</span>
|
|
873
|
-
<span class="cstat-no" title="statement not covered" > this.log('\u00A0\n' + this.rgb(...clr) + (title + ' ').padEnd(length || 0, char) + this.reset + '\u00A0\n')</span>
|
|
874
|
-
},
|
|
875
|
-
/** Eg: ['cell1', 'cell2', 'cell3'], [25, 15] will start cell2 at 25 and cell 3 at 25 + 15
|
|
876
|
-
* @param {Array} limits default divide the viewport
|
|
877
|
-
*/
|
|
878
|
-
<span class="fstat-no" title="function not covered" > cols(strings, limits: number[] = [], clr = configFn()?.terminal?.theme?.fontColor) {</span>
|
|
879
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
880
|
-
<span class="cstat-no" title="statement not covered" > if (!limits.length) {</span>
|
|
881
|
-
<span class="cstat-no" title="statement not covered" > const colWidth = Math.round(configFn()?.terminal?.theme.pageWidth / strings.length)</span>
|
|
882
|
-
<span class="cstat-no" title="statement not covered" > limits = Array(strings.length - 1).fill(2).map((_, i) => colWidth * i + 1) as number[]</span>
|
|
883
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
884
|
-
<span class="cstat-no" title="statement not covered" > const str = strings.reduce((glob, str = '', i) => {</span>
|
|
885
|
-
<span class="cstat-no" title="statement not covered" > const realCharLength = str.toString().replace(/\x1b\[.*?m/, '').length</span>
|
|
886
|
-
<span class="cstat-no" title="statement not covered" > const charLength = str.toString().length</span>
|
|
887
|
-
<span class="cstat-no" title="statement not covered" > const realLimit = limits[i] + charLength - realCharLength</span>
|
|
888
|
-
<span class="cstat-no" title="statement not covered" > return glob + str.toString().substring(0, realLimit || 999).padEnd(realLimit || 0, ' ')</span>
|
|
889
|
-
<span class="cstat-no" title="statement not covered" > }, '')</span>
|
|
890
|
-
<span class="cstat-no" title="statement not covered" > this.logClr(str, clr)</span>
|
|
891
|
-
},
|
|
892
|
-
/** Console log alias */
|
|
893
|
-
<span class="fstat-no" title="function not covered" > log(...stringsCtxMayBeFirstParam) {</span>
|
|
894
|
-
<span class="cstat-no" title="statement not covered" > stringsCtxMayBeFirstParam.forEach(str => this.logClr(str))</span>
|
|
895
|
-
},
|
|
896
|
-
<span class="fstat-no" title="function not covered" > logClr(str, clr = configFn()?.terminal?.theme?.fontColor) {</span>
|
|
897
|
-
<span class="cstat-no" title="statement not covered" > if (!isset(str)) return</span>
|
|
898
|
-
<span class="cstat-no" title="statement not covered" > str = (typeof clr !== 'undefined' ? this.rgb(...clr) : '') + str.toString().replace(/\n/g, '\n' + (typeof clr !== 'undefined' ? this.rgb(...clr) : ''))</span>
|
|
899
|
-
<span class="cstat-no" title="statement not covered" > logger.log(str + this.reset, 'info')</span>
|
|
900
|
-
},
|
|
901
|
-
<span class="fstat-no" title="function not covered" > info(...str) {</span>
|
|
902
|
-
<span class="cstat-no" title="statement not covered" > str.forEach((s, i) => {</span>
|
|
903
|
-
<span class="cstat-no" title="statement not covered" > if (i === 0) this.logClr('ⓘ ' + s, configFn()?.terminal?.theme?.primary)</span>
|
|
904
|
-
<span class="cstat-no" title="statement not covered" > else this.log(this.dimStrSplit(s))</span>
|
|
905
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
906
|
-
<span class="cstat-no" title="statement not covered" > this.log(' ')</span>
|
|
907
|
-
},
|
|
908
|
-
<span class="fstat-no" title="function not covered" > success(...str) {</span>
|
|
909
|
-
<span class="cstat-no" title="statement not covered" > str.forEach((s, i) => {</span>
|
|
910
|
-
<span class="cstat-no" title="statement not covered" > if (i === 0) this.log(this.green('✓ ' + s))</span>
|
|
911
|
-
<span class="cstat-no" title="statement not covered" > else this.log(this.dimStrSplit(s))</span>
|
|
912
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
913
|
-
},
|
|
914
|
-
/** First param **false** to avoid logging stack trace */
|
|
915
|
-
error: <span class="fstat-no" title="function not covered" >(...errors) => logErrPrivate('error', [255, 0, 0], ...errors),</span>
|
|
916
|
-
/** First param **false** to avoid logging stack trace */
|
|
917
|
-
warning: (...str) => logErrPrivate('warn', [255, 122, 0], ...str),
|
|
918
|
-
customError: <span class="fstat-no" title="function not covered" >(color, ...str) => logErrPrivate('error', color, ...str),</span>
|
|
919
|
-
customWarning: <span class="fstat-no" title="function not covered" >(color, ...str) => logErrPrivate('warn', color, ...str),</span>
|
|
920
|
-
applicationError: <span class="fstat-no" title="function not covered" >(color, ...str) => logErrPrivate('warn', color, ...str),</span>
|
|
921
|
-
warningLight: <span class="fstat-no" title="function not covered" >(_, ...str) => logErrPrivate('warn', [196, 120, 52], ...str),</span>
|
|
922
|
-
<span class="fstat-no" title="function not covered" > dimStrSplit(...logs) {</span>
|
|
923
|
-
<span class="cstat-no" title="statement not covered" > const logsStr: string[] = []</span>
|
|
924
|
-
<span class="cstat-no" title="statement not covered" > logs.filter(isset).forEach(log => log.toString().split('\n').forEach(line => line && logsStr.push(this.dim(` ${line}`))))</span>
|
|
925
|
-
<span class="cstat-no" title="statement not covered" > return logsStr.join('\n')</span>
|
|
926
|
-
},
|
|
927
|
-
<span class="fstat-no" title="function not covered" > notifShow() {</span>
|
|
928
|
-
<span class="cstat-no" title="statement not covered" > console.log('\n\u00A0')</span>
|
|
929
|
-
<span class="cstat-no" title="statement not covered" > this.notifications.forEach(fn => fn())</span>
|
|
930
|
-
<span class="cstat-no" title="statement not covered" > this.notifications = []</span>
|
|
931
|
-
<span class="cstat-no" title="statement not covered" > console.log('\n\u00A0')</span>
|
|
932
|
-
},
|
|
933
|
-
/** Keep in memory the logs to show when needed with C.notifShow()
|
|
934
|
-
* Ex: C.notification('info', str); */
|
|
935
|
-
<span class="fstat-no" title="function not covered" > notification(type, ...messages) {</span>
|
|
936
|
-
<span class="cstat-no" title="statement not covered" > this.notifications.push(() => {</span>
|
|
937
|
-
<span class="cstat-no" title="statement not covered" > if (isset(this[type])) {</span>
|
|
938
|
-
<span class="cstat-no" title="statement not covered" > this[type](...messages)</span>
|
|
939
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
940
|
-
<span class="cstat-no" title="statement not covered" > this.warning('Wrong param for C.notification')</span>
|
|
941
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
942
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
943
|
-
},
|
|
944
|
-
notifications: [] as any[], // fn array
|
|
945
|
-
/** Gratientize lines of text (separated by \n) */
|
|
946
|
-
<span class="fstat-no" title="function not covered" > gradientize(str = '', rgb1 = configFn()?.terminal?.theme?.shade1, rgb2 = configFn()?.terminal?.theme?.shade2, bgRgb = configFn()?.terminal?.theme?.bgColor, paddingY = 2) {</span>
|
|
947
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
948
|
-
<span class="cstat-no" title="statement not covered" > const lines = str.split('\n')</span>
|
|
949
|
-
<span class="cstat-no" title="statement not covered" > const largestLine = lines.reduce((sum, line) => sum < line.length ? line.length : sum, 0)</span>
|
|
950
|
-
<span class="cstat-no" title="statement not covered" > const rgbParts = rgb1.map((val, i) => (val - rgb2[i]) / (lines.length))</span>
|
|
951
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
952
|
-
<span class="cstat-no" title="statement not covered" > const bg = bgRgb ? this.bg(bgRgb[0], bgRgb[1], bgRgb[2]) : ''</span>
|
|
953
|
-
<span class="cstat-no" title="statement not covered" > const padLine = bg + ' '.padEnd(largestLine, ' ') + '\x1b[0m\n'</span>
|
|
954
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
955
|
-
<span class="cstat-no" title="statement not covered" > console.log(padLine.repeat(paddingY) +</span>
|
|
956
|
-
<span class="cstat-no" title="statement not covered" > lines.reduce((s, line, i) => {</span>
|
|
957
|
-
<span class="cstat-no" title="statement not covered" > return s + bg + this.rgb(...((rgb1 as Color).map((val, i2) => Math.round(val - i * rgbParts[i2]))) as Color) + line.padEnd(largestLine, ' ') + '\x1b[0m\n'</span>
|
|
958
|
-
<span class="cstat-no" title="statement not covered" > }, '') +</span>
|
|
959
|
-
<span class="cstat-no" title="statement not covered" > padLine.repeat(paddingY))</span>
|
|
960
|
-
},
|
|
961
|
-
<span class="fstat-no" title="function not covered" > debugModeLog(title, ...string) {</span>
|
|
962
|
-
<span class="cstat-no" title="statement not covered" > this.logClr('🐞 ' + title, configFn()?.terminal?.theme?.debugModeColor)</span>
|
|
963
|
-
<span class="cstat-no" title="statement not covered" > this.log(this.dimStrSplit(...string))</span>
|
|
964
|
-
},
|
|
965
|
-
/** allow to clear the last lines written to console */
|
|
966
|
-
<span class="fstat-no" title="function not covered" > clearLastLines(n: number = 2) {</span>
|
|
967
|
-
<span class="cstat-no" title="statement not covered" > for (let i = 0; i < n; i++) {</span>
|
|
968
|
-
<span class="cstat-no" title="statement not covered" > process?.stdout?.moveCursor?.(0, -1) // Move up one line</span>
|
|
969
|
-
<span class="cstat-no" title="statement not covered" > process?.stdout?.clearLine?.(0)</span>
|
|
970
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
971
|
-
<span class="cstat-no" title="statement not covered" > process?.stdout?.cursorTo?.(0) // Move cursor to beginning of the current line</span>
|
|
972
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
|
|
976
|
-
const { isProd } = configFn()
|
|
977
|
-
|
|
978
|
-
if (errors.length === 1 && typeof errors[0]?.log === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >return errors[0].log()</span>
|
|
979
|
-
|
|
980
|
-
let stackTrace = (new Error('')).stack<span class="branch-0 cbranch-no" title="branch not covered" > || ''</span>
|
|
981
|
-
const displayStack = errors[0] === false <span class="branch-0 cbranch-no" title="branch not covered" >? errors.shift() </span>: true
|
|
982
|
-
const symbol = level === 'error' <span class="branch-0 cbranch-no" title="branch not covered" >? '✘ ' </span>: '⚠ '
|
|
983
|
-
if (errors.length > 1<span class="branch-0 cbranch-no" title="branch not covered" > && !isset(errors[0]))</span> <span class="branch-0 cbranch-no" title="branch not covered" >errors.shift() /</span>/ remove first empty object
|
|
984
|
-
|
|
985
|
-
const getStringFromErr = (err, i) => {
|
|
986
|
-
if (!isset(err)) <span class="branch-0 cbranch-no" title="branch not covered" >return ''</span>
|
|
987
|
-
else if (typeof err === 'string') {
|
|
988
|
-
if (i === 0) return C.rgb(...color) + symbol + err + C.reset
|
|
989
|
-
<span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > else return err.split('\n').map(val => C.dim(val)).join('\n')</span></span>
|
|
990
|
-
}<span class="branch-0 cbranch-no" title="branch not covered" > else if (err instanceof Error) {</span>
|
|
991
|
-
<span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyInstanceOfError(err, level, color)</span>
|
|
992
|
-
<span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
|
|
993
|
-
<span class="cstat-no" title="statement not covered" > return str</span>
|
|
994
|
-
<span class="cstat-no" title="statement not covered" > } else if (typeof err === 'object') {</span>
|
|
995
|
-
<span class="cstat-no" title="statement not covered" > let msg = ''</span>
|
|
996
|
-
<span class="cstat-no" title="statement not covered" > msg += removeCircularJSONstringify(err, 2).split('\n').map(val => C.dim(val)).join('\n') + '\n'</span>
|
|
997
|
-
<span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo || err, level, color)</span>
|
|
998
|
-
<span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
|
|
999
|
-
<span class="cstat-no" title="statement not covered" > msg += str</span>
|
|
1000
|
-
<span class="cstat-no" title="statement not covered" > return msg</span>
|
|
1001
|
-
<span class="cstat-no" title="statement not covered" > } else return ''</span>
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
if (errors.length && errors[0]) {
|
|
1005
|
-
const messages = errors.map((e, i) => {
|
|
1006
|
-
if (typeof e?.log === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
1007
|
-
<span class="cstat-no" title="statement not covered" > e.log()</span>
|
|
1008
|
-
<span class="cstat-no" title="statement not covered" > return ''</span>
|
|
1009
|
-
} else return getStringFromErr(e, i)
|
|
1010
|
-
})
|
|
1011
|
-
// Stack
|
|
1012
|
-
if (displayStack) {
|
|
1013
|
-
messages.push(isProd <span class="branch-0 cbranch-no" title="branch not covered" >? stackTrace </span>: cleanStackTrace(stackTrace) + '\n')
|
|
1014
|
-
}
|
|
1015
|
-
logger.log(messages.join(''), level)
|
|
1016
|
-
}
|
|
1017
|
-
}
|
|
1018
|
-
|
|
1019
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function stringifyInstanceOfError(err, type = 'error', color: Color = [255, 0, 0], level = 0) { // level = keep track of recursions</span></span>
|
|
1020
|
-
<span class="cstat-no" title="statement not covered" > if (level > 5) return { str: '' }</span>
|
|
1021
|
-
<span class="cstat-no" title="statement not covered" > let str = ''</span>
|
|
1022
|
-
<span class="cstat-no" title="statement not covered" > let stackTrace</span>
|
|
1023
|
-
<span class="cstat-no" title="statement not covered" > const symbol = type === 'error' ? '✘ ' : '⚠ '</span>
|
|
1024
|
-
<span class="cstat-no" title="statement not covered" > const title = err.msg || err.message || err.id || (err.stack ? err.stack.split('\n')[0] : 'Error')</span>
|
|
1025
|
-
<span class="cstat-no" title="statement not covered" > // Err mess</span>
|
|
1026
|
-
<span class="cstat-no" title="statement not covered" > str += C.rgb(...color) + symbol + title + C.reset + '\n'</span>
|
|
1027
|
-
<span class="cstat-no" title="statement not covered" > if (err.stack) stackTrace = err.stack // more relevant</span>
|
|
1028
|
-
<span class="cstat-no" title="statement not covered" > // ExtraInfos</span>
|
|
1029
|
-
<span class="cstat-no" title="statement not covered" > if (isset(err.extraInfo)) {</span>
|
|
1030
|
-
<span class="cstat-no" title="statement not covered" > const { str: str2, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo, type, color, level++)</span>
|
|
1031
|
-
<span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
|
|
1032
|
-
<span class="cstat-no" title="statement not covered" > str += str2</span>
|
|
1033
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1034
|
-
<span class="cstat-no" title="statement not covered" > return { str, stackTrace }</span>
|
|
1035
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1036
|
-
|
|
1037
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function stringifyExtraInfos(extraInfoOriginal, type, color, level = 0) {</span></span>
|
|
1038
|
-
<span class="cstat-no" title="statement not covered" > let stackTrace</span>
|
|
1039
|
-
<span class="cstat-no" title="statement not covered" > const originalError = [C.dim(`ORIGINAL ERROR ${'-'.repeat(39)}\n`)]</span>
|
|
1040
|
-
<span class="cstat-no" title="statement not covered" > if (extraInfoOriginal instanceof Error) { // case where error is passed directly to extraInfos</span>
|
|
1041
|
-
<span class="cstat-no" title="statement not covered" > return stringifyInstanceOfError(extraInfoOriginal, type, color)</span>
|
|
1042
|
-
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
1043
|
-
<span class="cstat-no" title="statement not covered" > const extraInfo = { ...extraInfoOriginal }</span>
|
|
1044
|
-
<span class="cstat-no" title="statement not covered" > const extraInfos = [C.dim(`EXTRA INFOS ${'-'.repeat(41)}\n`)]</span>
|
|
1045
|
-
<span class="cstat-no" title="statement not covered" > if (typeof extraInfo === 'object' && Object.keys(extraInfo).length) {</span>
|
|
1046
|
-
<span class="cstat-no" title="statement not covered" > for (const itemName in extraInfo) {</span>
|
|
1047
|
-
<span class="cstat-no" title="statement not covered" > if (extraInfo[itemName] instanceof Error) {</span>
|
|
1048
|
-
<span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyInstanceOfError(extraInfo[itemName], type, color, level++)</span>
|
|
1049
|
-
<span class="cstat-no" title="statement not covered" > originalError.push(str)</span>
|
|
1050
|
-
<span class="cstat-no" title="statement not covered" > stackTrace = stkTrc</span>
|
|
1051
|
-
<span class="cstat-no" title="statement not covered" > delete extraInfo[itemName]</span>
|
|
1052
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1053
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1054
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1055
|
-
<span class="cstat-no" title="statement not covered" > if (Object.keys(extraInfo).length) {</span>
|
|
1056
|
-
<span class="cstat-no" title="statement not covered" > extraInfos.push(</span>
|
|
1057
|
-
<span class="cstat-no" title="statement not covered" > removeCircularJSONstringify(extraInfo, 2)</span>
|
|
1058
|
-
<span class="cstat-no" title="statement not covered" > .replace(/(?:^\s*{(?:\n {2})?|}\s*$)/g, '')</span>
|
|
1059
|
-
<span class="cstat-no" title="statement not covered" > .replace(/\n {2}/g, '\n')</span>
|
|
1060
|
-
<span class="cstat-no" title="statement not covered" > .split('\n')</span>
|
|
1061
|
-
<span class="cstat-no" title="statement not covered" > .map(val => C.dim(val)).join('\n') + '\n')</span>
|
|
1062
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1063
|
-
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
1064
|
-
<span class="cstat-no" title="statement not covered" > str: (extraInfos.length > 1 ? extraInfos.join('') : '') + (originalError.length > 1 ? originalError.join('') + '\n' : ''),</span>
|
|
1065
|
-
<span class="cstat-no" title="statement not covered" > stackTrace</span>
|
|
1066
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1067
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1068
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1069
|
-
|
|
1070
|
-
/**
|
|
1071
|
-
* Call this at each steps of your progress and change the step value
|
|
1072
|
-
* @param {Number} step Number of "char" to output
|
|
1073
|
-
* @param {String} char Default: '.'
|
|
1074
|
-
* @param {String} msg String before char. Final output will be `${str}${char.repeat(step)}`
|
|
1075
|
-
*/
|
|
1076
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function cliProgressBar(step: number, char = '.', msg = `\x1b[2mⓘ Waiting response`) {</span></span>
|
|
1077
|
-
<span class="cstat-no" title="statement not covered" > if (typeof process?.stdout?.clearLine === 'function') {</span>
|
|
1078
|
-
<span class="cstat-no" title="statement not covered" > process.stdout.cursorTo(0)</span>
|
|
1079
|
-
<span class="cstat-no" title="statement not covered" > process.stdout.write(`${msg}${char.repeat(step)}\x1b[0m`) // \x1b[0m == reset color</span>
|
|
1080
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1081
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1082
|
-
|
|
1083
|
-
type loadingSpinnerTypes = 'arrow' | 'dots'
|
|
1084
|
-
|
|
1085
|
-
/** This allow an intuitive inline loading spinner with a check mark when loading as finished or a red cross for errors */
|
|
1086
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >export class cliLoadingSpinner {</span></span></span>
|
|
1087
|
-
<span class="cstat-no" title="statement not covered" > /** Please use it like spinner.start('myStuff') then spinner.end()</span>
|
|
1088
|
-
<span class="cstat-no" title="statement not covered" > * @param {String} type in: ['arrow', 'dots']</span>
|
|
1089
|
-
<span class="cstat-no" title="statement not covered" > */</span>
|
|
1090
|
-
<span class="cstat-no" title="statement not covered" > frameRate: number</span>
|
|
1091
|
-
<span class="cstat-no" title="statement not covered" > animFrames: string[]</span>
|
|
1092
|
-
<span class="cstat-no" title="statement not covered" > activeProcess: any</span>
|
|
1093
|
-
<span class="cstat-no" title="statement not covered" > frameNb: number = 0</span>
|
|
1094
|
-
<span class="cstat-no" title="statement not covered" > progressMessage: string = ''</span>
|
|
1095
|
-
<span class="cstat-no" title="statement not covered" > interval: any = -1</span>
|
|
1096
|
-
<span class="cstat-no" title="statement not covered" ></span>
|
|
1097
|
-
<span class="cstat-no" title="statement not covered" > constructor(type = 'dots' as loadingSpinnerTypes, activeProcess = process) {</span>
|
|
1098
|
-
<span class="cstat-no" title="statement not covered" > const anims = {</span>
|
|
1099
|
-
<span class="cstat-no" title="statement not covered" > arrow: {</span>
|
|
1100
|
-
<span class="cstat-no" title="statement not covered" > interval: 120,</span>
|
|
1101
|
-
<span class="cstat-no" title="statement not covered" > frames: ['▹▹▹▹▹', '▸▹▹▹▹', '▹▸▹▹▹', '▹▹▸▹▹', '▹▹▹▸▹', '▹▹▹▹▸']</span>
|
|
1102
|
-
<span class="cstat-no" title="statement not covered" > },</span>
|
|
1103
|
-
<span class="cstat-no" title="statement not covered" > dots: {</span>
|
|
1104
|
-
<span class="cstat-no" title="statement not covered" > interval: 80,</span>
|
|
1105
|
-
<span class="cstat-no" title="statement not covered" > frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']</span>
|
|
1106
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1107
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1108
|
-
<span class="cstat-no" title="statement not covered" > this.frameRate = anims[type].interval</span>
|
|
1109
|
-
<span class="cstat-no" title="statement not covered" > this.animFrames = anims[type].frames</span>
|
|
1110
|
-
<span class="cstat-no" title="statement not covered" > this.activeProcess = activeProcess</span>
|
|
1111
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1112
|
-
<span class="cstat-no" title="statement not covered" > start(msg) {</span>
|
|
1113
|
-
<span class="cstat-no" title="statement not covered" > this.frameNb = 0</span>
|
|
1114
|
-
<span class="cstat-no" title="statement not covered" > this.progressMessage = msg</span>
|
|
1115
|
-
<span class="cstat-no" title="statement not covered" > this.interval = setInterval(() => {</span>
|
|
1116
|
-
<span class="cstat-no" title="statement not covered" > this.activeProcess?.stdout?.cursorTo?.(0) // Move cursor to beginning of the current line</span>
|
|
1117
|
-
<span class="cstat-no" title="statement not covered" > const symbol = this.animFrames[this.frameNb++ % this.animFrames.length]</span>
|
|
1118
|
-
<span class="cstat-no" title="statement not covered" > this.activeProcess.stdout.write(C.primary(symbol) + ' ' + this.progressMessage)</span>
|
|
1119
|
-
<span class="cstat-no" title="statement not covered" > }, this.frameRate)</span>
|
|
1120
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1121
|
-
<span class="cstat-no" title="statement not covered" > end(error = false) {</span>
|
|
1122
|
-
<span class="cstat-no" title="statement not covered" > clearInterval(this.interval)</span>
|
|
1123
|
-
<span class="cstat-no" title="statement not covered" > this.activeProcess?.stdout?.cursorTo?.(0)</span>
|
|
1124
|
-
<span class="cstat-no" title="statement not covered" > C.log(</span>
|
|
1125
|
-
<span class="cstat-no" title="statement not covered" > error ? C.red('✘ ' + this.progressMessage + '\n\n')</span>
|
|
1126
|
-
<span class="cstat-no" title="statement not covered" > : '\x1b[32m✓ ' + this.progressMessage + '\n\n'</span>
|
|
1127
|
-
<span class="cstat-no" title="statement not covered" > )</span>
|
|
1128
|
-
<span class="cstat-no" title="statement not covered" > this.progressMessage = ''</span>
|
|
1129
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1130
|
-
<span class="cstat-no" title="statement not covered" > error() {</span>
|
|
1131
|
-
<span class="cstat-no" title="statement not covered" > return this.end(true)</span>
|
|
1132
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
1133
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function dim(str = '') {</span></span>
|
|
1137
|
-
<span class="cstat-no" title="statement not covered" > return configFn()?.terminal?.noColor ? str : `\x1b[2m${str.toString().split('\n').join('\x1b[0m\n\x1b[2m')}\x1b[0m`</span>
|
|
1138
|
-
<span class="cstat-no" title="statement not covered" >}</span>
|
|
1139
|
-
|
|
1140
|
-
</pre></td></tr></table></pre>
|
|
1141
|
-
|
|
1142
|
-
<div class='push'></div><!-- for sticky footer -->
|
|
1143
|
-
</div><!-- /wrapper -->
|
|
1144
|
-
<div class='footer quiet pad2 space-top1 center small'>
|
|
1145
|
-
Code coverage generated by
|
|
1146
|
-
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1147
|
-
at 2025-03-19T11:41:20.328Z
|
|
1148
|
-
</div>
|
|
1149
|
-
<script src="prettify.js"></script>
|
|
1150
|
-
<script>
|
|
1151
|
-
window.onload = function () {
|
|
1152
|
-
prettyPrint();
|
|
1153
|
-
};
|
|
1154
|
-
</script>
|
|
1155
|
-
<script src="sorter.js"></script>
|
|
1156
|
-
<script src="block-navigation.js"></script>
|
|
1157
|
-
</body>
|
|
1158
|
-
</html>
|
|
1159
|
-
|