Compare commits
No commits in common. "085f4fa5fa1ab74d0fd17f89ab614cce6f120edc" and "8c7e5947cd36dd79e2d16c571dbda88bde9246ad" have entirely different histories.
085f4fa5fa
...
8c7e5947cd
File diff suppressed because one or more lines are too long
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">51.53% </span>
|
<span class="strong">49.43% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>2834/5499</span>
|
<span class='fraction'>2635/5330</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">85.41% </span>
|
<span class="strong">87.24% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>568/665</span>
|
<span class='fraction'>513/588</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">51.19% </span>
|
<span class="strong">41.97% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>150/293</span>
|
<span class='fraction'>123/293</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">51.53% </span>
|
<span class="strong">49.43% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>2834/5499</span>
|
<span class='fraction'>2635/5330</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class='status-line medium'></div>
|
<div class='status-line low'></div>
|
||||||
<div class="pad1">
|
<div class="pad1">
|
||||||
<table class="coverage-summary">
|
<table class="coverage-summary">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -79,33 +79,33 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody><tr>
|
<tbody><tr>
|
||||||
<td class="file low" data-value="src"><a href="src/index.html">src</a></td>
|
<td class="file medium" data-value="src"><a href="src/index.html">src</a></td>
|
||||||
<td data-value="37.57" class="pic low">
|
<td data-value="50.39" class="pic medium">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 37%"></div><div class="cover-empty" style="width: 63%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="37.57" class="pct low">37.57%</td>
|
<td data-value="50.39" class="pct medium">50.39%</td>
|
||||||
<td data-value="338" class="abs low">127/338</td>
|
<td data-value="252" class="abs medium">127/252</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="0" class="abs high">0/0</td>
|
<td data-value="0" class="abs high">0/0</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="21" class="abs low">0/21</td>
|
<td data-value="21" class="abs low">0/21</td>
|
||||||
<td data-value="37.57" class="pct low">37.57%</td>
|
<td data-value="50.39" class="pct medium">50.39%</td>
|
||||||
<td data-value="338" class="abs low">127/338</td>
|
<td data-value="252" class="abs medium">127/252</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file medium" data-value="src/core"><a href="src/core/index.html">src/core</a></td>
|
<td class="file medium" data-value="src/core"><a href="src/core/index.html">src/core</a></td>
|
||||||
<td data-value="69.23" class="pic medium">
|
<td data-value="60.64" class="pic medium">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 69%"></div><div class="cover-empty" style="width: 31%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 60%"></div><div class="cover-empty" style="width: 40%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="69.23" class="pct medium">69.23%</td>
|
<td data-value="60.64" class="pct medium">60.64%</td>
|
||||||
<td data-value="1690" class="abs medium">1170/1690</td>
|
<td data-value="1606" class="abs medium">974/1606</td>
|
||||||
<td data-value="80.43" class="pct high">80.43%</td>
|
<td data-value="85.78" class="pct high">85.78%</td>
|
||||||
<td data-value="276" class="abs high">222/276</td>
|
<td data-value="197" class="abs high">169/197</td>
|
||||||
<td data-value="79" class="pct medium">79%</td>
|
<td data-value="52" class="pct medium">52%</td>
|
||||||
<td data-value="100" class="abs medium">79/100</td>
|
<td data-value="100" class="abs medium">52/100</td>
|
||||||
<td data-value="69.23" class="pct medium">69.23%</td>
|
<td data-value="60.64" class="pct medium">60.64%</td>
|
||||||
<td data-value="1690" class="abs medium">1170/1690</td>
|
<td data-value="1606" class="abs medium">974/1606</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -125,17 +125,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="src/utils"><a href="src/utils/index.html">src/utils</a></td>
|
<td class="file high" data-value="src/utils"><a href="src/utils/index.html">src/utils</a></td>
|
||||||
<td data-value="97.71" class="pic high">
|
<td data-value="97.36" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 97%"></div><div class="cover-empty" style="width: 3%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="97.71" class="pct high">97.71%</td>
|
<td data-value="97.36" class="pct high">97.36%</td>
|
||||||
<td data-value="1137" class="abs high">1111/1137</td>
|
<td data-value="1138" class="abs high">1108/1138</td>
|
||||||
<td data-value="88.91" class="pct high">88.91%</td>
|
<td data-value="87.87" class="pct high">87.87%</td>
|
||||||
<td data-value="361" class="abs high">321/361</td>
|
<td data-value="363" class="abs high">319/363</td>
|
||||||
<td data-value="96.92" class="pct high">96.92%</td>
|
<td data-value="96.92" class="pct high">96.92%</td>
|
||||||
<td data-value="65" class="abs high">63/65</td>
|
<td data-value="65" class="abs high">63/65</td>
|
||||||
<td data-value="97.71" class="pct high">97.71%</td>
|
<td data-value="97.36" class="pct high">97.36%</td>
|
||||||
<td data-value="1137" class="abs high">1111/1137</td>
|
<td data-value="1138" class="abs high">1108/1138</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -146,7 +146,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="prettify.js"></script>
|
<script src="prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -30,9 +30,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">83.63% </span>
|
<span class="strong">81.81% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>46/55</span>
|
<span class='fraction'>45/55</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -337,50 +337,50 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">72x</span>
|
<span class="cline-any cline-yes">40x</span>
|
||||||
<span class="cline-any cline-yes">72x</span>
|
<span class="cline-any cline-yes">40x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">172x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">172x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">7x</span>
|
|
||||||
<span class="cline-any cline-yes">7x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -623,7 +623,7 @@ export class ConfigManager {
|
||||||
}
|
}
|
||||||
|
|
||||||
isIgnoredError(message: string): boolean {
|
isIgnoredError(message: string): boolean {
|
||||||
return matchPatterns(message, this.config.ignoreErrors || []);
|
return matchPatterns(message, this.config.<span class="branch-0 cbranch-no" title="branch not covered" >ignoreErrors || [])</span>;
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldSample(): boolean {
|
shouldSample(): boolean {
|
||||||
|
|
@ -802,7 +802,7 @@ export class ConfigManager {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -113,49 +113,49 @@
|
||||||
<a name='L48'></a><a href='#L48'>48</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
<a name='L48'></a><a href='#L48'>48</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">74x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">24x</span>
|
<span class="cline-any cline-yes">21x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">16x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">16x</span>
|
||||||
<span class="cline-any cline-yes">24x</span>
|
<span class="cline-any cline-yes">21x</span>
|
||||||
<span class="cline-any cline-yes">24x</span>
|
<span class="cline-any cline-yes">21x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
|
||||||
<span class="cline-any cline-yes">10x</span>
|
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">7x</span>
|
||||||
|
<span class="cline-any cline-yes">7x</span>
|
||||||
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">95x</span>
|
<span class="cline-any cline-yes">88x</span>
|
||||||
<span class="cline-any cline-yes">95x</span>
|
<span class="cline-any cline-yes">88x</span>
|
||||||
<span class="cline-any cline-yes">16x</span>
|
<span class="cline-any cline-yes">14x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">15x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">15x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">15x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">15x</span>
|
||||||
|
<span class="cline-any cline-yes">14x</span>
|
||||||
|
<span class="cline-any cline-yes">88x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
|
||||||
<span class="cline-any cline-yes">16x</span>
|
|
||||||
<span class="cline-any cline-yes">95x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">4x</span>
|
|
||||||
<span class="cline-any cline-yes">4x</span>
|
|
||||||
<span class="cline-any cline-yes">4x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">36x</span>
|
|
||||||
<span class="cline-any cline-yes">36x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">type Handler = (...args: unknown[]) => void;
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">type Handler = (...args: unknown[]) => void;
|
||||||
|
|
||||||
|
|
@ -211,7 +211,7 @@ export class EventBus {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">90.53% </span>
|
<span class="strong">89.9% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>287/317</span>
|
<span class='fraction'>285/317</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">86.11% </span>
|
<span class="strong">83.82% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>62/72</span>
|
<span class='fraction'>57/68</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">90.53% </span>
|
<span class="strong">89.9% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>287/317</span>
|
<span class='fraction'>285/317</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -412,80 +412,80 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">59x</span>
|
<span class="cline-any cline-yes">27x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">28x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">28x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
|
@ -502,32 +502,32 @@
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
|
<span class="cline-any cline-yes">80x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">83x</span>
|
||||||
|
<span class="cline-any cline-yes">83x</span>
|
||||||
|
<span class="cline-any cline-yes">83x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">82x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">83x</span>
|
||||||
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
<span class="cline-any cline-yes">79x</span>
|
<span class="cline-any cline-yes">77x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">51x</span>
|
<span class="cline-any cline-yes">51x</span>
|
||||||
<span class="cline-any cline-yes">51x</span>
|
<span class="cline-any cline-yes">51x</span>
|
||||||
<span class="cline-any cline-yes">33x</span>
|
<span class="cline-any cline-yes">33x</span>
|
||||||
|
|
@ -548,69 +548,69 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">28x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">28x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">28x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">80x</span>
|
||||||
<span class="cline-any cline-yes">50x</span>
|
<span class="cline-any cline-yes">46x</span>
|
||||||
<span class="cline-any cline-yes">50x</span>
|
<span class="cline-any cline-yes">46x</span>
|
||||||
<span class="cline-any cline-yes">50x</span>
|
<span class="cline-any cline-yes">46x</span>
|
||||||
<span class="cline-any cline-yes">50x</span>
|
<span class="cline-any cline-yes">46x</span>
|
||||||
<span class="cline-any cline-yes">50x</span>
|
<span class="cline-any cline-yes">46x</span>
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">87x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">82x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">5x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">11x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">83x</span>
|
<span class="cline-any cline-yes">83x</span>
|
||||||
<span class="cline-any cline-yes">83x</span>
|
|
||||||
<span class="cline-any cline-yes">83x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">86x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">83x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">80x</span>
|
||||||
|
<span class="cline-any cline-yes">80x</span>
|
||||||
|
<span class="cline-any cline-yes">80x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">82x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">11x</span>
|
<span class="cline-any cline-yes">11x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -639,7 +639,7 @@
|
||||||
<span class="cline-any cline-yes">11x</span>
|
<span class="cline-any cline-yes">11x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">9x</span>
|
||||||
<span class="cline-any cline-yes">12x</span>
|
<span class="cline-any cline-yes">11x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -672,30 +672,30 @@
|
||||||
<span class="cline-any cline-yes">19x</span>
|
<span class="cline-any cline-yes">19x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
|
||||||
<span class="cline-any cline-yes">61x</span>
|
|
||||||
<span class="cline-any cline-yes">61x</span>
|
|
||||||
<span class="cline-any cline-yes">61x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { SentryEvent, ErrorEvent, CountEvent } from '../types';
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { SentryEvent, ErrorEvent, CountEvent } from '../types';
|
||||||
import { EventBus } from './EventBus';
|
import { EventBus } from './EventBus';
|
||||||
|
|
@ -888,9 +888,9 @@ export class EventQueue {
|
||||||
const expiryTime = 60000;
|
const expiryTime = 60000;
|
||||||
|
|
||||||
for (const [key, entry] of this.dedupeMap) {
|
for (const [key, entry] of this.dedupeMap) {
|
||||||
if (currentTime - entry.lastTime > expiryTime) {
|
if (currentTime - entry.lastTime > expiryTime) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
||||||
this.dedupeMap.delete(key);
|
<span class="cstat-no" title="statement not covered" > this.dedupeMap.delete(key);</span>
|
||||||
}
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1021,7 +1021,7 @@ export class EventQueue {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -157,20 +157,20 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">58x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">58x</span>
|
<span class="cline-any cline-yes">26x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-yes">30x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">31x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">31x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">31x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-yes">30x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-yes">30x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">5x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
|
@ -225,17 +225,17 @@
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { LightPlugin, LightClient, SentryEvent } from '../types';
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { LightPlugin, LightClient, SentryEvent } from '../types';
|
||||||
|
|
||||||
|
|
@ -331,7 +331,7 @@ export class PluginManager {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">18.05% </span>
|
<span class="strong">16.9% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>63/349</span>
|
<span class='fraction'>59/349</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">100% </span>
|
<span class="strong">100% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>1/1</span>
|
<span class='fraction'>0/0</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">8.33% </span>
|
<span class="strong">0% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>1/12</span>
|
<span class='fraction'>0/12</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">18.05% </span>
|
<span class="strong">16.9% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>63/349</span>
|
<span class='fraction'>59/349</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -425,10 +425,10 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">32x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -773,11 +773,11 @@ export class Reporter {
|
||||||
private retryDelay: number;
|
private retryDelay: number;
|
||||||
private useShortFields: boolean = true; // 是否使用短字段编码
|
private useShortFields: boolean = true; // 是否使用短字段编码
|
||||||
|
|
||||||
constructor(dsn: DSNInfo, maxRetries: number, retryDelay: number) {
|
<span class="fstat-no" title="function not covered" > constructor(dsn: DSNInfo, maxRetries: number, retryDelay: number) {</span>
|
||||||
this.dsn = dsn;
|
<span class="cstat-no" title="statement not covered" > this.dsn = dsn;</span>
|
||||||
this.maxRetries = maxRetries;
|
<span class="cstat-no" title="statement not covered" > this.maxRetries = maxRetries;</span>
|
||||||
this.retryDelay = retryDelay;
|
<span class="cstat-no" title="statement not covered" > this.retryDelay = retryDelay;</span>
|
||||||
}
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
|
||||||
<span class="fstat-no" title="function not covered" > async report(events: SentryEvent[]): Promise<void> {</span>
|
<span class="fstat-no" title="function not covered" > async report(events: SentryEvent[]): Promise<void> {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Reporter', 'report called', { eventCount: events.length });</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Reporter', 'report called', { eventCount: events.length });</span>
|
||||||
|
|
@ -1117,7 +1117,7 @@ export class Reporter {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">87.87% </span>
|
<span class="strong">86.86% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>174/198</span>
|
<span class='fraction'>172/198</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">89.74% </span>
|
<span class="strong">80% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>35/39</span>
|
<span class='fraction'>28/35</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">87.87% </span>
|
<span class="strong">86.86% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>174/198</span>
|
<span class='fraction'>172/198</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -273,76 +273,76 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">61x</span>
|
<span class="cline-any cline-yes">29x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">19x</span>
|
||||||
|
<span class="cline-any cline-yes">19x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-yes">17x</span>
|
||||||
|
<span class="cline-any cline-yes">19x</span>
|
||||||
|
<span class="cline-any cline-yes">19x</span>
|
||||||
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-yes">19x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">20x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">20x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">18x</span>
|
|
||||||
<span class="cline-any cline-yes">20x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">20x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">20x</span>
|
<span class="cline-any cline-yes">20x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">21x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">21x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">21x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">13x</span>
|
|
||||||
<span class="cline-any cline-yes">13x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -354,26 +354,26 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">22x</span>
|
<span class="cline-any cline-yes">16x</span>
|
||||||
<span class="cline-any cline-yes">22x</span>
|
<span class="cline-any cline-yes">16x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
|
|
@ -404,15 +404,25 @@
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">7x</span>
|
||||||
<span class="cline-any cline-yes">9x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-no"> </span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">2x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -423,20 +433,10 @@
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">3x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -447,17 +447,17 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">64x</span>
|
<span class="cline-any cline-yes">31x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">64x</span>
|
<span class="cline-any cline-yes">31x</span>
|
||||||
<span class="cline-any cline-yes">64x</span>
|
<span class="cline-any cline-yes">31x</span>
|
||||||
<span class="cline-any cline-yes">64x</span>
|
<span class="cline-any cline-yes">31x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { LightConfig, SpanContext, TransactionContext, Span, Transaction, LightClient, SamplingContext } from '../types';
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import type { LightConfig, SpanContext, TransactionContext, Span, Transaction, LightClient, SamplingContext } from '../types';
|
||||||
import { Span as SpanImpl, Transaction as TransactionImpl } from '../utils/tracing';
|
import { Span as SpanImpl, Transaction as TransactionImpl } from '../utils/tracing';
|
||||||
|
|
@ -501,7 +501,7 @@ export class TracingManager {
|
||||||
<span class="cstat-no" title="statement not covered" > return Math.random() < clampedRate;</span>
|
<span class="cstat-no" title="statement not covered" > return Math.random() < clampedRate;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
|
||||||
const rate = this.config.tracesSampleRate ?? 0;
|
const rate = this.config.<span class="branch-0 cbranch-no" title="branch not covered" >tracesSampleRate ?? 0;</span>
|
||||||
if (rate >= 1) return true;
|
if (rate >= 1) return true;
|
||||||
if (rate <= 0) return <span class="branch-0 cbranch-no" title="branch not covered" >false;</span>
|
if (rate <= 0) return <span class="branch-0 cbranch-no" title="branch not covered" >false;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return Math.random() < rate;</span>
|
<span class="cstat-no" title="statement not covered" > return Math.random() < rate;</span>
|
||||||
|
|
@ -610,9 +610,9 @@ export class TracingManager {
|
||||||
this.spanStack.splice(idx, 1);
|
this.spanStack.splice(idx, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.spanStack.length === 0 && this.currentTransaction) {
|
if (this.spanStack.length === <span class="branch-0 cbranch-no" title="branch not covered" >0 && this.currentTransaction) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
||||||
this.spanStack = [this.currentTransaction];
|
<span class="cstat-no" title="statement not covered" > this.spanStack = [this.currentTransaction];</span>
|
||||||
}
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
|
||||||
logDebug('TracingManager', 'Span finished', {
|
logDebug('TracingManager', 'Span finished', {
|
||||||
op: span.op,
|
op: span.op,
|
||||||
|
|
@ -664,7 +664,7 @@ export class TracingManager {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,30 +23,30 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">69.23% </span>
|
<span class="strong">60.64% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>1170/1690</span>
|
<span class='fraction'>974/1606</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">80.43% </span>
|
<span class="strong">85.78% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>222/276</span>
|
<span class='fraction'>169/197</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">79% </span>
|
<span class="strong">52% </span>
|
||||||
<span class="quiet">Functions</span>
|
<span class="quiet">Functions</span>
|
||||||
<span class='fraction'>79/100</span>
|
<span class='fraction'>52/100</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">69.23% </span>
|
<span class="strong">60.64% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>1170/1690</span>
|
<span class='fraction'>974/1606</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -79,18 +79,18 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody><tr>
|
<tbody><tr>
|
||||||
<td class="file medium" data-value="Client.ts"><a href="Client.ts.html">Client.ts</a></td>
|
<td class="file low" data-value="Client.ts"><a href="Client.ts.html">Client.ts</a></td>
|
||||||
<td data-value="62.05" class="pic medium">
|
<td data-value="24.72" class="pic low">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 62%"></div><div class="cover-empty" style="width: 38%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 24%"></div><div class="cover-empty" style="width: 76%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="62.05" class="pct medium">62.05%</td>
|
<td data-value="24.72" class="pct low">24.72%</td>
|
||||||
<td data-value="448" class="abs medium">278/448</td>
|
<td data-value="364" class="abs low">90/364</td>
|
||||||
<td data-value="55.71" class="pct medium">55.71%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="70" class="abs medium">39/70</td>
|
<td data-value="0" class="abs high">0/0</td>
|
||||||
<td data-value="89.65" class="pct high">89.65%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="29" class="abs high">26/29</td>
|
<td data-value="29" class="abs low">0/29</td>
|
||||||
<td data-value="62.05" class="pct medium">62.05%</td>
|
<td data-value="24.72" class="pct low">24.72%</td>
|
||||||
<td data-value="448" class="abs medium">278/448</td>
|
<td data-value="364" class="abs low">90/364</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -100,8 +100,8 @@
|
||||||
</td>
|
</td>
|
||||||
<td data-value="95.9" class="pct high">95.9%</td>
|
<td data-value="95.9" class="pct high">95.9%</td>
|
||||||
<td data-value="244" class="abs high">234/244</td>
|
<td data-value="244" class="abs high">234/244</td>
|
||||||
<td data-value="83.63" class="pct high">83.63%</td>
|
<td data-value="81.81" class="pct high">81.81%</td>
|
||||||
<td data-value="55" class="abs high">46/55</td>
|
<td data-value="55" class="abs high">45/55</td>
|
||||||
<td data-value="92.85" class="pct high">92.85%</td>
|
<td data-value="92.85" class="pct high">92.85%</td>
|
||||||
<td data-value="14" class="abs high">13/14</td>
|
<td data-value="14" class="abs high">13/14</td>
|
||||||
<td data-value="95.9" class="pct high">95.9%</td>
|
<td data-value="95.9" class="pct high">95.9%</td>
|
||||||
|
|
@ -125,17 +125,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="EventQueue.ts"><a href="EventQueue.ts.html">EventQueue.ts</a></td>
|
<td class="file high" data-value="EventQueue.ts"><a href="EventQueue.ts.html">EventQueue.ts</a></td>
|
||||||
<td data-value="90.53" class="pic high">
|
<td data-value="89.9" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 90%"></div><div class="cover-empty" style="width: 10%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 89%"></div><div class="cover-empty" style="width: 11%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="90.53" class="pct high">90.53%</td>
|
<td data-value="89.9" class="pct high">89.9%</td>
|
||||||
<td data-value="317" class="abs high">287/317</td>
|
<td data-value="317" class="abs high">285/317</td>
|
||||||
<td data-value="86.11" class="pct high">86.11%</td>
|
<td data-value="83.82" class="pct high">83.82%</td>
|
||||||
<td data-value="72" class="abs high">62/72</td>
|
<td data-value="68" class="abs high">57/68</td>
|
||||||
<td data-value="81.25" class="pct high">81.25%</td>
|
<td data-value="81.25" class="pct high">81.25%</td>
|
||||||
<td data-value="16" class="abs high">13/16</td>
|
<td data-value="16" class="abs high">13/16</td>
|
||||||
<td data-value="90.53" class="pct high">90.53%</td>
|
<td data-value="89.9" class="pct high">89.9%</td>
|
||||||
<td data-value="317" class="abs high">287/317</td>
|
<td data-value="317" class="abs high">285/317</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -155,32 +155,32 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file low" data-value="Reporter.ts"><a href="Reporter.ts.html">Reporter.ts</a></td>
|
<td class="file low" data-value="Reporter.ts"><a href="Reporter.ts.html">Reporter.ts</a></td>
|
||||||
<td data-value="18.05" class="pic low">
|
<td data-value="16.9" class="pic low">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 18%"></div><div class="cover-empty" style="width: 82%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 16%"></div><div class="cover-empty" style="width: 84%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="18.05" class="pct low">18.05%</td>
|
<td data-value="16.9" class="pct low">16.9%</td>
|
||||||
<td data-value="349" class="abs low">63/349</td>
|
<td data-value="349" class="abs low">59/349</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="1" class="abs high">1/1</td>
|
<td data-value="0" class="abs high">0/0</td>
|
||||||
<td data-value="8.33" class="pct low">8.33%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="12" class="abs low">1/12</td>
|
<td data-value="12" class="abs low">0/12</td>
|
||||||
<td data-value="18.05" class="pct low">18.05%</td>
|
<td data-value="16.9" class="pct low">16.9%</td>
|
||||||
<td data-value="349" class="abs low">63/349</td>
|
<td data-value="349" class="abs low">59/349</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="TracingManager.ts"><a href="TracingManager.ts.html">TracingManager.ts</a></td>
|
<td class="file high" data-value="TracingManager.ts"><a href="TracingManager.ts.html">TracingManager.ts</a></td>
|
||||||
<td data-value="87.87" class="pic high">
|
<td data-value="86.86" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 87%"></div><div class="cover-empty" style="width: 13%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 86%"></div><div class="cover-empty" style="width: 14%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="87.87" class="pct high">87.87%</td>
|
<td data-value="86.86" class="pct high">86.86%</td>
|
||||||
<td data-value="198" class="abs high">174/198</td>
|
<td data-value="198" class="abs high">172/198</td>
|
||||||
<td data-value="89.74" class="pct high">89.74%</td>
|
<td data-value="80" class="pct high">80%</td>
|
||||||
<td data-value="39" class="abs high">35/39</td>
|
<td data-value="35" class="abs high">28/35</td>
|
||||||
<td data-value="78.57" class="pct medium">78.57%</td>
|
<td data-value="78.57" class="pct medium">78.57%</td>
|
||||||
<td data-value="14" class="abs medium">11/14</td>
|
<td data-value="14" class="abs medium">11/14</td>
|
||||||
<td data-value="87.87" class="pct high">87.87%</td>
|
<td data-value="86.86" class="pct high">86.86%</td>
|
||||||
<td data-value="198" class="abs high">174/198</td>
|
<td data-value="198" class="abs high">172/198</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -191,7 +191,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">37.57% </span>
|
<span class="strong">50.39% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>127/338</span>
|
<span class='fraction'>127/252</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">37.57% </span>
|
<span class="strong">50.39% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>127/338</span>
|
<span class='fraction'>127/252</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class='status-line low'></div>
|
<div class='status-line medium'></div>
|
||||||
<div class="pad1">
|
<div class="pad1">
|
||||||
<table class="coverage-summary">
|
<table class="coverage-summary">
|
||||||
<thead>
|
<thead>
|
||||||
|
|
@ -79,18 +79,18 @@
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody><tr>
|
<tbody><tr>
|
||||||
<td class="file low" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
|
<td class="file medium" data-value="index.ts"><a href="index.ts.html">index.ts</a></td>
|
||||||
<td data-value="37.57" class="pic low">
|
<td data-value="50.39" class="pic medium">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 37%"></div><div class="cover-empty" style="width: 63%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="37.57" class="pct low">37.57%</td>
|
<td data-value="50.39" class="pct medium">50.39%</td>
|
||||||
<td data-value="338" class="abs low">127/338</td>
|
<td data-value="252" class="abs medium">127/252</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="0" class="abs high">0/0</td>
|
<td data-value="0" class="abs high">0/0</td>
|
||||||
<td data-value="0" class="pct low">0%</td>
|
<td data-value="0" class="pct low">0%</td>
|
||||||
<td data-value="21" class="abs low">0/21</td>
|
<td data-value="21" class="abs low">0/21</td>
|
||||||
<td data-value="37.57" class="pct low">37.57%</td>
|
<td data-value="50.39" class="pct medium">50.39%</td>
|
||||||
<td data-value="338" class="abs low">127/338</td>
|
<td data-value="252" class="abs medium">127/252</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -101,7 +101,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../prettify.js"></script>
|
<script src="../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,9 +23,9 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">37.57% </span>
|
<span class="strong">50.39% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>127/338</span>
|
<span class='fraction'>127/252</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">37.57% </span>
|
<span class="strong">50.39% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>127/338</span>
|
<span class='fraction'>127/252</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -61,7 +61,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</div>
|
</div>
|
||||||
<div class='status-line low'></div>
|
<div class='status-line medium'></div>
|
||||||
<pre><table class="coverage">
|
<pre><table class="coverage">
|
||||||
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
||||||
<a name='L2'></a><a href='#L2'>2</a>
|
<a name='L2'></a><a href='#L2'>2</a>
|
||||||
|
|
@ -315,93 +315,7 @@
|
||||||
<a name='L250'></a><a href='#L250'>250</a>
|
<a name='L250'></a><a href='#L250'>250</a>
|
||||||
<a name='L251'></a><a href='#L251'>251</a>
|
<a name='L251'></a><a href='#L251'>251</a>
|
||||||
<a name='L252'></a><a href='#L252'>252</a>
|
<a name='L252'></a><a href='#L252'>252</a>
|
||||||
<a name='L253'></a><a href='#L253'>253</a>
|
<a name='L253'></a><a href='#L253'>253</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||||
<a name='L254'></a><a href='#L254'>254</a>
|
|
||||||
<a name='L255'></a><a href='#L255'>255</a>
|
|
||||||
<a name='L256'></a><a href='#L256'>256</a>
|
|
||||||
<a name='L257'></a><a href='#L257'>257</a>
|
|
||||||
<a name='L258'></a><a href='#L258'>258</a>
|
|
||||||
<a name='L259'></a><a href='#L259'>259</a>
|
|
||||||
<a name='L260'></a><a href='#L260'>260</a>
|
|
||||||
<a name='L261'></a><a href='#L261'>261</a>
|
|
||||||
<a name='L262'></a><a href='#L262'>262</a>
|
|
||||||
<a name='L263'></a><a href='#L263'>263</a>
|
|
||||||
<a name='L264'></a><a href='#L264'>264</a>
|
|
||||||
<a name='L265'></a><a href='#L265'>265</a>
|
|
||||||
<a name='L266'></a><a href='#L266'>266</a>
|
|
||||||
<a name='L267'></a><a href='#L267'>267</a>
|
|
||||||
<a name='L268'></a><a href='#L268'>268</a>
|
|
||||||
<a name='L269'></a><a href='#L269'>269</a>
|
|
||||||
<a name='L270'></a><a href='#L270'>270</a>
|
|
||||||
<a name='L271'></a><a href='#L271'>271</a>
|
|
||||||
<a name='L272'></a><a href='#L272'>272</a>
|
|
||||||
<a name='L273'></a><a href='#L273'>273</a>
|
|
||||||
<a name='L274'></a><a href='#L274'>274</a>
|
|
||||||
<a name='L275'></a><a href='#L275'>275</a>
|
|
||||||
<a name='L276'></a><a href='#L276'>276</a>
|
|
||||||
<a name='L277'></a><a href='#L277'>277</a>
|
|
||||||
<a name='L278'></a><a href='#L278'>278</a>
|
|
||||||
<a name='L279'></a><a href='#L279'>279</a>
|
|
||||||
<a name='L280'></a><a href='#L280'>280</a>
|
|
||||||
<a name='L281'></a><a href='#L281'>281</a>
|
|
||||||
<a name='L282'></a><a href='#L282'>282</a>
|
|
||||||
<a name='L283'></a><a href='#L283'>283</a>
|
|
||||||
<a name='L284'></a><a href='#L284'>284</a>
|
|
||||||
<a name='L285'></a><a href='#L285'>285</a>
|
|
||||||
<a name='L286'></a><a href='#L286'>286</a>
|
|
||||||
<a name='L287'></a><a href='#L287'>287</a>
|
|
||||||
<a name='L288'></a><a href='#L288'>288</a>
|
|
||||||
<a name='L289'></a><a href='#L289'>289</a>
|
|
||||||
<a name='L290'></a><a href='#L290'>290</a>
|
|
||||||
<a name='L291'></a><a href='#L291'>291</a>
|
|
||||||
<a name='L292'></a><a href='#L292'>292</a>
|
|
||||||
<a name='L293'></a><a href='#L293'>293</a>
|
|
||||||
<a name='L294'></a><a href='#L294'>294</a>
|
|
||||||
<a name='L295'></a><a href='#L295'>295</a>
|
|
||||||
<a name='L296'></a><a href='#L296'>296</a>
|
|
||||||
<a name='L297'></a><a href='#L297'>297</a>
|
|
||||||
<a name='L298'></a><a href='#L298'>298</a>
|
|
||||||
<a name='L299'></a><a href='#L299'>299</a>
|
|
||||||
<a name='L300'></a><a href='#L300'>300</a>
|
|
||||||
<a name='L301'></a><a href='#L301'>301</a>
|
|
||||||
<a name='L302'></a><a href='#L302'>302</a>
|
|
||||||
<a name='L303'></a><a href='#L303'>303</a>
|
|
||||||
<a name='L304'></a><a href='#L304'>304</a>
|
|
||||||
<a name='L305'></a><a href='#L305'>305</a>
|
|
||||||
<a name='L306'></a><a href='#L306'>306</a>
|
|
||||||
<a name='L307'></a><a href='#L307'>307</a>
|
|
||||||
<a name='L308'></a><a href='#L308'>308</a>
|
|
||||||
<a name='L309'></a><a href='#L309'>309</a>
|
|
||||||
<a name='L310'></a><a href='#L310'>310</a>
|
|
||||||
<a name='L311'></a><a href='#L311'>311</a>
|
|
||||||
<a name='L312'></a><a href='#L312'>312</a>
|
|
||||||
<a name='L313'></a><a href='#L313'>313</a>
|
|
||||||
<a name='L314'></a><a href='#L314'>314</a>
|
|
||||||
<a name='L315'></a><a href='#L315'>315</a>
|
|
||||||
<a name='L316'></a><a href='#L316'>316</a>
|
|
||||||
<a name='L317'></a><a href='#L317'>317</a>
|
|
||||||
<a name='L318'></a><a href='#L318'>318</a>
|
|
||||||
<a name='L319'></a><a href='#L319'>319</a>
|
|
||||||
<a name='L320'></a><a href='#L320'>320</a>
|
|
||||||
<a name='L321'></a><a href='#L321'>321</a>
|
|
||||||
<a name='L322'></a><a href='#L322'>322</a>
|
|
||||||
<a name='L323'></a><a href='#L323'>323</a>
|
|
||||||
<a name='L324'></a><a href='#L324'>324</a>
|
|
||||||
<a name='L325'></a><a href='#L325'>325</a>
|
|
||||||
<a name='L326'></a><a href='#L326'>326</a>
|
|
||||||
<a name='L327'></a><a href='#L327'>327</a>
|
|
||||||
<a name='L328'></a><a href='#L328'>328</a>
|
|
||||||
<a name='L329'></a><a href='#L329'>329</a>
|
|
||||||
<a name='L330'></a><a href='#L330'>330</a>
|
|
||||||
<a name='L331'></a><a href='#L331'>331</a>
|
|
||||||
<a name='L332'></a><a href='#L332'>332</a>
|
|
||||||
<a name='L333'></a><a href='#L333'>333</a>
|
|
||||||
<a name='L334'></a><a href='#L334'>334</a>
|
|
||||||
<a name='L335'></a><a href='#L335'>335</a>
|
|
||||||
<a name='L336'></a><a href='#L336'>336</a>
|
|
||||||
<a name='L337'></a><a href='#L337'>337</a>
|
|
||||||
<a name='L338'></a><a href='#L338'>338</a>
|
|
||||||
<a name='L339'></a><a href='#L339'>339</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -468,11 +382,6 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -486,60 +395,6 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -562,8 +417,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -571,8 +425,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -580,7 +433,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -588,8 +441,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -597,7 +449,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -605,7 +457,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -613,7 +465,7 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
|
|
@ -621,34 +473,10 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-no"> </span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -751,65 +579,60 @@ import InteractionPlugin from './plugins/InteractionPlugin';
|
||||||
import { Span as SpanClass, Transaction as TransactionClass, httpStatusToSpanStatus, dbStatusToSpanStatus, statusToSpanStatus } from './utils/tracing';
|
import { Span as SpanClass, Transaction as TransactionClass, httpStatusToSpanStatus, dbStatusToSpanStatus, statusToSpanStatus } from './utils/tracing';
|
||||||
import { serializeBaggage, parseBaggage, createBaggageFromTransaction } from './utils/baggage';
|
import { serializeBaggage, parseBaggage, createBaggageFromTransaction } from './utils/baggage';
|
||||||
import type { LightConfig, LightClient, SentryEvent, EventLevel, UserInfo, Breadcrumb, LightPlugin, ErrorEvent, PerformanceEvent, NetworkEvent, BehaviorEvent, DSNInfo, TransactionContext, SpanContext, Transaction, Span, SamplingContext, BaggageFields, SpanStatus } from './types';
|
import type { LightConfig, LightClient, SentryEvent, EventLevel, UserInfo, Breadcrumb, LightPlugin, ErrorEvent, PerformanceEvent, NetworkEvent, BehaviorEvent, DSNInfo, TransactionContext, SpanContext, Transaction, Span, SamplingContext, BaggageFields, SpanStatus } from './types';
|
||||||
import { logDebug, logError, setDebug } from './utils/logger';
|
import { logDebug, setDebug } from './utils/logger';
|
||||||
import { setAnonymousId as setStoredAnonymousId, clearAnonymousId as clearStoredAnonymousId, getAnonymousId as getStoredAnonymousId } from './utils/identity';
|
import { setAnonymousId as setStoredAnonymousId, clearAnonymousId as clearStoredAnonymousId, getAnonymousId as getStoredAnonymousId } from './utils/identity';
|
||||||
|
|
||||||
let globalClient: LightClient | null = null;
|
let globalClient: LightClient | null = null;
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function init(config: LightConfig): LightClient {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function init(config: LightConfig): LightClient {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > setDebug(config.debug === true);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > setDebug(config.debug === true);</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'init called', { dsn: config.dsn, debug: config.debug });</span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'init called', { dsn: config.dsn, debug: config.debug });</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > const client = new Client(config);</span>
|
<span class="cstat-no" title="statement not covered" > const client = new Client(config);</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > const defaultPlugins: LightPlugin[] = [</span>
|
<span class="cstat-no" title="statement not covered" > const defaultPlugins: LightPlugin[] = [</span>
|
||||||
<span class="cstat-no" title="statement not covered" > new OfflinePlugin(),</span>
|
<span class="cstat-no" title="statement not covered" > new OfflinePlugin(),</span>
|
||||||
<span class="cstat-no" title="statement not covered" > new SamplingPlugin(),</span>
|
<span class="cstat-no" title="statement not covered" > new SamplingPlugin(),</span>
|
||||||
<span class="cstat-no" title="statement not covered" > new ErrorPlugin(),</span>
|
<span class="cstat-no" title="statement not covered" > new ErrorPlugin(),</span>
|
||||||
<span class="cstat-no" title="statement not covered" > ];</span>
|
<span class="cstat-no" title="statement not covered" > ];</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > const pluginNames = config.plugins?.filter(p => typeof p === 'string') as string[] || [];</span>
|
<span class="cstat-no" title="statement not covered" > const pluginNames = config.plugins?.filter(p => typeof p === 'string') as string[] || [];</span>
|
||||||
<span class="cstat-no" title="statement not covered" > </span>
|
<span class="cstat-no" title="statement not covered" > </span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('performance') || pluginNames.includes('all')) {</span>
|
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('performance') || pluginNames.includes('all')) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new PerformancePlugin());</span>
|
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new PerformancePlugin());</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('network') || pluginNames.includes('all')) {</span>
|
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('network') || pluginNames.includes('all')) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new NetworkPlugin());</span>
|
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new NetworkPlugin());</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('behavior') || pluginNames.includes('all')) {</span>
|
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('behavior') || pluginNames.includes('all')) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new BehaviorPlugin());</span>
|
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new BehaviorPlugin());</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('router') || pluginNames.includes('all')) {</span>
|
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('router') || pluginNames.includes('all')) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new RouterPlugin());</span>
|
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new RouterPlugin());</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('interaction') || pluginNames.includes('all')) {</span>
|
<span class="cstat-no" title="statement not covered" > if (pluginNames.includes('interaction') || pluginNames.includes('all')) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new InteractionPlugin());</span>
|
<span class="cstat-no" title="statement not covered" > defaultPlugins.push(new InteractionPlugin());</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'Registering plugins', { count: defaultPlugins.length, plugins: defaultPlugins.map(p => p.name) });</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'Registering plugins', { count: defaultPlugins.length, plugins: defaultPlugins.map(p => p.name) });</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > for (const plugin of defaultPlugins) {</span>
|
<span class="cstat-no" title="statement not covered" > for (const plugin of defaultPlugins) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > client.use(plugin);</span>
|
<span class="cstat-no" title="statement not covered" > client.use(plugin);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (config.plugins) {</span>
|
<span class="cstat-no" title="statement not covered" > if (config.plugins) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > for (const plugin of config.plugins) {</span>
|
<span class="cstat-no" title="statement not covered" > for (const plugin of config.plugins) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (typeof plugin === 'object' && plugin !== null && 'name' in plugin && 'setup' in plugin) {</span>
|
<span class="cstat-no" title="statement not covered" > if (typeof plugin === 'object' && plugin !== null && 'name' in plugin && 'setup' in plugin) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > client.use(plugin as LightPlugin);</span>
|
<span class="cstat-no" title="statement not covered" > client.use(plugin as LightPlugin);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > client.init();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" ></span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient = client;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'init completed, globalClient set');</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return client;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'init failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > throw e;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > client.init();</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" ></span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > globalClient = client;</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'init completed, globalClient set');</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > return client;</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getClient(): LightClient | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getClient(): LightClient | null {</span></span>
|
||||||
|
|
@ -817,175 +640,94 @@ let globalClient: LightClient | null = null;
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureException(error: Error | unknown): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureException(error: Error | unknown): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureException called', { hasClient: !!globalClient });</span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureException called', { hasClient: !!globalClient });</span>
|
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
||||||
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient.captureException(error);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'captureException failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > globalClient.captureException(error);</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureMessage(message: string, level?: EventLevel): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureMessage(message: string, level?: EventLevel): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureMessage called', { hasClient: !!globalClient });</span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureMessage called', { hasClient: !!globalClient });</span>
|
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
||||||
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient.captureMessage(message, level);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'captureMessage failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > globalClient.captureMessage(message, level);</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureEvent(event: Partial<SentryEvent> & { type: string }): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function captureEvent(event: Partial<SentryEvent> & { type: string }): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureEvent called', { hasClient: !!globalClient });</span>
|
||||||
<span class="cstat-no" title="statement not covered" > logDebug('Index', 'captureEvent called', { hasClient: !!globalClient });</span>
|
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
||||||
<span class="cstat-no" title="statement not covered" > if (!globalClient) {</span>
|
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
||||||
<span class="cstat-no" title="statement not covered" > console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');</span>
|
<span class="cstat-no" title="statement not covered" > return;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient.captureEvent(event);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'captureEvent failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
|
<span class="cstat-no" title="statement not covered" > globalClient.captureEvent(event);</span>
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setUser(user: UserInfo | null): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setUser(user: UserInfo | null): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.setUser(user);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.setUser(user);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setUser failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setAnonymousId(id: string): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setAnonymousId(id: string): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > setStoredAnonymousId(id);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > setStoredAnonymousId(id);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setAnonymousId failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function clearAnonymousId(): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function clearAnonymousId(): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > clearStoredAnonymousId();</span>
|
||||||
<span class="cstat-no" title="statement not covered" > clearStoredAnonymousId();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'clearAnonymousId failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getAnonymousId(): string | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getAnonymousId(): string | null {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > return getStoredAnonymousId();</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return getStoredAnonymousId();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'getAnonymousId failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function startTransaction(context: TransactionContext): Transaction | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function startTransaction(context: TransactionContext): Transaction | null {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > return globalClient?.startTransaction(context) || null;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return globalClient?.startTransaction(context) || null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'startTransaction failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getCurrentTransaction(): Transaction | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getCurrentTransaction(): Transaction | null {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > return globalClient?.getCurrentTransaction() || null;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return globalClient?.getCurrentTransaction() || null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'getCurrentTransaction failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getCurrentSpan(): Span | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getCurrentSpan(): Span | null {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > return globalClient?.getCurrentSpan() || null;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return globalClient?.getCurrentSpan() || null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'getCurrentSpan failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setSpan(span: Span | null): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setSpan(span: Span | null): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.setSpan(span);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.setSpan(span);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setSpan failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function startSpan(context: SpanContext): Span | null {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function startSpan(context: SpanContext): Span | null {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > return globalClient?.startSpan(context) || null;</span>
|
||||||
<span class="cstat-no" title="statement not covered" > return globalClient?.startSpan(context) || null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'startSpan failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > return null;</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setTag(key: string, value: string): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setTag(key: string, value: string): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.setTag(key, value);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.setTag(key, value);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setTag failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setTags(tags: Record<string, string>): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setTags(tags: Record<string, string>): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.setTags(tags);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.setTags(tags);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setTags failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setExtra(key: string, value: unknown): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function setExtra(key: string, value: unknown): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.setExtra(key, value);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.setExtra(key, value);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'setExtra failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.addBreadcrumb(breadcrumb);</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.addBreadcrumb(breadcrumb);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'addBreadcrumb failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >async function flush(): Promise<void> {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >async function flush(): Promise<void> {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > await globalClient?.flush();</span>
|
||||||
<span class="cstat-no" title="statement not covered" > await globalClient?.flush();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'flush failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function disable(): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function disable(): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.disable();</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.disable();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'disable failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function enable(): void {</span></span>
|
<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function enable(): void {</span></span>
|
||||||
<span class="cstat-no" title="statement not covered" > try {</span>
|
<span class="cstat-no" title="statement not covered" > globalClient?.enable();</span>
|
||||||
<span class="cstat-no" title="statement not covered" > globalClient?.enable();</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > } catch (e) {</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > logError('Index', 'enable failed', e);</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" > }</span>
|
|
||||||
<span class="cstat-no" title="statement not covered" >}</span>
|
<span class="cstat-no" title="statement not covered" >}</span>
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|
@ -1084,7 +826,7 @@ export default {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../prettify.js"></script>
|
<script src="../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -1075,7 +1075,7 @@ export default BehaviorPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -967,7 +967,7 @@ export default ErrorPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -691,7 +691,7 @@ export default InteractionPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -1222,7 +1222,7 @@ export default NetworkPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -982,7 +982,7 @@ export default OfflinePlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -1660,7 +1660,7 @@ export default PerformancePlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -613,7 +613,7 @@ export default RouterPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -352,7 +352,7 @@ export default SamplingPlugin;
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -206,7 +206,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -367,7 +367,7 @@ export function createBaggageFromTransaction(
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -95,24 +95,24 @@
|
||||||
<a name='L30'></a><a href='#L30'>30</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
<a name='L30'></a><a href='#L30'>30</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">35x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">37x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
|
|
@ -157,7 +157,7 @@ export <span class="fstat-no" title="function not covered" >function getStoreUrl
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -949,7 +949,7 @@ export function getContextId(): string {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -334,7 +334,7 @@ export function decodeFields(obj: Record<string, unknown>): Record<stri
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ export function computeFingerprint(type: string, message: string, frames: { file
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -122,13 +122,13 @@
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">308x</span>
|
<span class="cline-any cline-yes">293x</span>
|
||||||
<span class="cline-any cline-yes">308x</span>
|
<span class="cline-any cline-yes">293x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">192x</span>
|
<span class="cline-any cline-yes">190x</span>
|
||||||
<span class="cline-any cline-yes">192x</span>
|
<span class="cline-any cline-yes">190x</span>
|
||||||
<span class="cline-any cline-yes">192x</span>
|
<span class="cline-any cline-yes">190x</span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -159,7 +159,7 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">15x</span>
|
||||||
<span class="cline-any cline-yes">13x</span>
|
<span class="cline-any cline-yes">13x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">18x</span>
|
||||||
<span class="cline-any cline-yes">11x</span>
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
|
@ -226,7 +226,7 @@ export function matchPatterns(value: string, patterns: (string | RegExp)[]): boo
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -167,17 +167,17 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">5x</span>
|
||||||
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">6x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">6x</span>
|
|
||||||
<span class="cline-any cline-yes">7x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
|
||||||
<span class="cline-any cline-yes">7x</span>
|
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
|
|
@ -280,7 +280,7 @@ export function isAnonymousTrackingEnabled(config: { trackAnonymousUsers?: boole
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">97.71% </span>
|
<span class="strong">97.36% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>1111/1137</span>
|
<span class='fraction'>1108/1138</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">88.91% </span>
|
<span class="strong">87.87% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>321/361</span>
|
<span class='fraction'>319/363</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">97.71% </span>
|
<span class="strong">97.36% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>1111/1137</span>
|
<span class='fraction'>1108/1138</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -189,13 +189,13 @@
|
||||||
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="30" class="abs high">30/30</td>
|
<td data-value="31" class="abs high">31/31</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="11" class="abs high">11/11</td>
|
<td data-value="13" class="abs high">13/13</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="4" class="abs high">4/4</td>
|
<td data-value="4" class="abs high">4/4</td>
|
||||||
<td data-value="100" class="pct high">100%</td>
|
<td data-value="100" class="pct high">100%</td>
|
||||||
<td data-value="30" class="abs high">30/30</td>
|
<td data-value="31" class="abs high">31/31</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|
@ -215,17 +215,17 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="file high" data-value="tracing.ts"><a href="tracing.ts.html">tracing.ts</a></td>
|
<td class="file high" data-value="tracing.ts"><a href="tracing.ts.html">tracing.ts</a></td>
|
||||||
<td data-value="94.94" class="pic high">
|
<td data-value="93.82" class="pic high">
|
||||||
<div class="chart"><div class="cover-fill" style="width: 94%"></div><div class="cover-empty" style="width: 6%"></div></div>
|
<div class="chart"><div class="cover-fill" style="width: 93%"></div><div class="cover-empty" style="width: 7%"></div></div>
|
||||||
</td>
|
</td>
|
||||||
<td data-value="94.94" class="pct high">94.94%</td>
|
<td data-value="93.82" class="pct high">93.82%</td>
|
||||||
<td data-value="356" class="abs high">338/356</td>
|
<td data-value="356" class="abs high">334/356</td>
|
||||||
<td data-value="86.02" class="pct high">86.02%</td>
|
<td data-value="83.08" class="pct high">83.08%</td>
|
||||||
<td data-value="136" class="abs high">117/136</td>
|
<td data-value="136" class="abs high">113/136</td>
|
||||||
<td data-value="96.15" class="pct high">96.15%</td>
|
<td data-value="96.15" class="pct high">96.15%</td>
|
||||||
<td data-value="26" class="abs high">25/26</td>
|
<td data-value="26" class="abs high">25/26</td>
|
||||||
<td data-value="94.94" class="pct high">94.94%</td>
|
<td data-value="93.82" class="pct high">93.82%</td>
|
||||||
<td data-value="356" class="abs high">338/356</td>
|
<td data-value="356" class="abs high">334/356</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
@ -236,7 +236,7 @@
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -25,14 +25,14 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">100% </span>
|
<span class="strong">100% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>30/30</span>
|
<span class='fraction'>31/31</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">100% </span>
|
<span class="strong">100% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>11/11</span>
|
<span class='fraction'>13/13</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">100% </span>
|
<span class="strong">100% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>30/30</span>
|
<span class='fraction'>31/31</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -93,18 +93,19 @@
|
||||||
<a name='L28'></a><a href='#L28'>28</a>
|
<a name='L28'></a><a href='#L28'>28</a>
|
||||||
<a name='L29'></a><a href='#L29'>29</a>
|
<a name='L29'></a><a href='#L29'>29</a>
|
||||||
<a name='L30'></a><a href='#L30'>30</a>
|
<a name='L30'></a><a href='#L30'>30</a>
|
||||||
<a name='L31'></a><a href='#L31'>31</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
<a name='L31'></a><a href='#L31'>31</a>
|
||||||
|
<a name='L32'></a><a href='#L32'>32</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">69x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">69x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">6x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">6x</span>
|
<span class="cline-any cline-yes">6x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">377x</span>
|
<span class="cline-any cline-yes">289x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">8x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
|
|
@ -112,16 +113,17 @@
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">5x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">5x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">377x</span>
|
<span class="cline-any cline-yes">289x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">8x</span>
|
||||||
|
<span class="cline-any cline-yes">8x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">7x</span>
|
<span class="cline-any cline-yes">5x</span>
|
||||||
<span class="cline-any cline-yes">10x</span>
|
<span class="cline-any cline-yes">10x</span>
|
||||||
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">let debugEnabled = false;
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">let debugEnabled = false;
|
||||||
|
|
||||||
|
|
@ -145,12 +147,13 @@ export function logDebug(tag: string, message: string, data?: unknown): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function logError(tag: string, message: string, error?: unknown): void {
|
export function logError(tag: string, message: string, error?: unknown): void {
|
||||||
|
if (!debugEnabled) return;
|
||||||
const timestamp = new Date().toISOString();
|
const timestamp = new Date().toISOString();
|
||||||
const prefix = `[LightSDK][${tag}][ERROR]`;
|
const prefix = `[LightSDK][${tag}][ERROR]`;
|
||||||
if (error !== undefined) {
|
if (error !== undefined) {
|
||||||
console.warn(`${prefix} ${timestamp} ${message}`, error);
|
console.error(`${prefix} ${timestamp} ${message}`, error);
|
||||||
} else {
|
} else {
|
||||||
console.warn(`${prefix} ${timestamp} ${message}`);
|
console.error(`${prefix} ${timestamp} ${message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</pre></td></tr></table></pre>
|
</pre></td></tr></table></pre>
|
||||||
|
|
@ -160,7 +163,7 @@ export function logError(tag: string, message: string, error?: unknown): void {
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -370,7 +370,7 @@ export function parseStackTrace(stack?: string, options: ParseStackOptions = {})
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
|
|
@ -23,16 +23,16 @@
|
||||||
<div class='clearfix'>
|
<div class='clearfix'>
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">94.94% </span>
|
<span class="strong">93.82% </span>
|
||||||
<span class="quiet">Statements</span>
|
<span class="quiet">Statements</span>
|
||||||
<span class='fraction'>338/356</span>
|
<span class='fraction'>334/356</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">86.02% </span>
|
<span class="strong">83.08% </span>
|
||||||
<span class="quiet">Branches</span>
|
<span class="quiet">Branches</span>
|
||||||
<span class='fraction'>117/136</span>
|
<span class='fraction'>113/136</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -44,9 +44,9 @@
|
||||||
|
|
||||||
|
|
||||||
<div class='fl pad1y space-right2'>
|
<div class='fl pad1y space-right2'>
|
||||||
<span class="strong">94.94% </span>
|
<span class="strong">93.82% </span>
|
||||||
<span class="quiet">Lines</span>
|
<span class="quiet">Lines</span>
|
||||||
<span class='fraction'>338/356</span>
|
<span class='fraction'>334/356</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -423,13 +423,13 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">81x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">81x</span>
|
||||||
<span class="cline-any cline-yes">82x</span>
|
<span class="cline-any cline-yes">81x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">99x</span>
|
<span class="cline-any cline-yes">98x</span>
|
||||||
<span class="cline-any cline-yes">99x</span>
|
<span class="cline-any cline-yes">98x</span>
|
||||||
<span class="cline-any cline-yes">99x</span>
|
<span class="cline-any cline-yes">98x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">21x</span>
|
<span class="cline-any cline-yes">21x</span>
|
||||||
|
|
@ -520,18 +520,18 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">100x</span>
|
<span class="cline-any cline-yes">99x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">11x</span>
|
<span class="cline-any cline-yes">11x</span>
|
||||||
|
|
@ -544,9 +544,9 @@
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">29x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">29x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">29x</span>
|
<span class="cline-any cline-yes">28x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">4x</span>
|
<span class="cline-any cline-yes">4x</span>
|
||||||
|
|
@ -585,17 +585,17 @@
|
||||||
<span class="cline-any cline-yes">16x</span>
|
<span class="cline-any cline-yes">16x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">23x</span>
|
|
||||||
<span class="cline-any cline-yes">22x</span>
|
<span class="cline-any cline-yes">22x</span>
|
||||||
<span class="cline-any cline-yes">23x</span>
|
<span class="cline-any cline-yes">21x</span>
|
||||||
<span class="cline-any cline-yes">23x</span>
|
<span class="cline-any cline-yes">22x</span>
|
||||||
<span class="cline-any cline-yes">23x</span>
|
<span class="cline-any cline-yes">22x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">22x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">23x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
|
<span class="cline-any cline-yes">22x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">3x</span>
|
<span class="cline-any cline-yes">3x</span>
|
||||||
|
|
@ -634,18 +634,18 @@
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">2x</span>
|
<span class="cline-any cline-yes">2x</span>
|
||||||
<span class="cline-any cline-yes">43x</span>
|
<span class="cline-any cline-yes">42x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">13x</span>
|
<span class="cline-any cline-yes">13x</span>
|
||||||
|
|
@ -701,21 +701,21 @@
|
||||||
<span class="cline-any cline-no"> </span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">13x</span>
|
<span class="cline-any cline-yes">13x</span>
|
||||||
<span class="cline-any cline-yes">13x</span>
|
<span class="cline-any cline-yes">13x</span>
|
||||||
<span class="cline-any cline-yes">13x</span>
|
<span class="cline-any cline-yes">13x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-no"> </span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">18x</span>
|
<span class="cline-any cline-yes">17x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">1x</span>
|
<span class="cline-any cline-yes">1x</span>
|
||||||
<span class="cline-any cline-yes">14x</span>
|
<span class="cline-any cline-yes">14x</span>
|
||||||
|
|
@ -947,9 +947,9 @@ export class Span implements SpanInterface {
|
||||||
|
|
||||||
if (this._client) {
|
if (this._client) {
|
||||||
const clientInternal = this._client as unknown as { tracingManager?: { onSpanFinished: (span: Span) => void } };
|
const clientInternal = this._client as unknown as { tracingManager?: { onSpanFinished: (span: Span) => void } };
|
||||||
if (clientInternal.tracingManager?.onSpanFinished) {
|
if (clientInternal.<span class="branch-0 cbranch-no" title="branch not covered" >tracingManager?.onSpanFinished) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
||||||
clientInternal.tracingManager.onSpanFinished(this);
|
<span class="cstat-no" title="statement not covered" > clientInternal.tracingManager.onSpanFinished(this);</span>
|
||||||
}
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1067,9 +1067,9 @@ export class Transaction extends Span implements TransactionInterface {
|
||||||
|
|
||||||
if (this._client) {
|
if (this._client) {
|
||||||
const clientInternal = this._client as unknown as { tracingManager?: { onTransactionFinished: (tx: Transaction) => void } };
|
const clientInternal = this._client as unknown as { tracingManager?: { onTransactionFinished: (tx: Transaction) => void } };
|
||||||
if (clientInternal.tracingManager?.onTransactionFinished) {
|
if (clientInternal.<span class="branch-0 cbranch-no" title="branch not covered" >tracingManager?.onTransactionFinished) <span class="branch-0 cbranch-no" title="branch not covered" >{</span></span>
|
||||||
clientInternal.tracingManager.onTransactionFinished(this);
|
<span class="cstat-no" title="statement not covered" > clientInternal.tracingManager.onTransactionFinished(this);</span>
|
||||||
}
|
<span class="cstat-no" title="statement not covered" > }</span>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1138,7 +1138,7 @@ export { generateTraceId, generateSpanId };
|
||||||
<div class='footer quiet pad2 space-top1 center small'>
|
<div class='footer quiet pad2 space-top1 center small'>
|
||||||
Code coverage generated by
|
Code coverage generated by
|
||||||
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
||||||
at 2026-06-25T15:09:05.618Z
|
at 2026-06-25T14:49:54.914Z
|
||||||
</div>
|
</div>
|
||||||
<script src="../../prettify.js"></script>
|
<script src="../../prettify.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -3,7 +3,7 @@ import { parseDSN } from '../utils/dsn';
|
||||||
import { now } from '../utils/helper';
|
import { now } from '../utils/helper';
|
||||||
import { computeFingerprint } from '../utils/hash';
|
import { computeFingerprint } from '../utils/hash';
|
||||||
import { parseStackTrace } from '../utils/stacktrace';
|
import { parseStackTrace } from '../utils/stacktrace';
|
||||||
import { logDebug, logError, setDebug } from '../utils/logger';
|
import { logDebug, setDebug } from '../utils/logger';
|
||||||
import { setAnonymousId as setStoredAnonymousId } from '../utils/identity';
|
import { setAnonymousId as setStoredAnonymousId } from '../utils/identity';
|
||||||
import { ConfigManager } from './ConfigManager';
|
import { ConfigManager } from './ConfigManager';
|
||||||
import { EventBus } from './EventBus';
|
import { EventBus } from './EventBus';
|
||||||
|
|
@ -63,13 +63,9 @@ class Client implements LightClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
init(): void {
|
init(): void {
|
||||||
try {
|
if (!this.enabled) return;
|
||||||
if (!this.enabled) return;
|
this.queue.start();
|
||||||
this.queue.start();
|
this.emit('ready');
|
||||||
this.emit('ready');
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'init failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async flushEvents(events: SentryEvent[]): Promise<void> {
|
private async flushEvents(events: SentryEvent[]): Promise<void> {
|
||||||
|
|
@ -168,68 +164,56 @@ class Client implements LightClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
captureException(error: Error | unknown): void {
|
captureException(error: Error | unknown): void {
|
||||||
try {
|
logDebug('Client', 'captureException called', { error: error instanceof Error ? error.message : String(error) });
|
||||||
logDebug('Client', 'captureException called', { error: error instanceof Error ? error.message : String(error) });
|
|
||||||
|
|
||||||
if (!this.enabled) {
|
if (!this.enabled) {
|
||||||
logDebug('Client', 'captureException skipped: SDK disabled');
|
logDebug('Client', 'captureException skipped: SDK disabled');
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
const errorEvent = this.buildErrorEvent(error);
|
|
||||||
logDebug('Client', 'Error event built', { type: errorEvent.type, message: errorEvent.message, fingerprint: (errorEvent as ErrorEvent).fingerprint });
|
|
||||||
|
|
||||||
if (this.configManager.isIgnoredError(errorEvent.message)) {
|
|
||||||
logDebug('Client', 'captureException skipped: error ignored by ignoreErrors');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.attachTraceContext(errorEvent);
|
|
||||||
errorEvent.breadcrumbs = [...this.breadcrumbs];
|
|
||||||
logDebug('Client', 'Enqueue error event', { breadcrumbs: this.breadcrumbs.length });
|
|
||||||
this.queue.enqueue(errorEvent);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'captureException failed', e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const errorEvent = this.buildErrorEvent(error);
|
||||||
|
logDebug('Client', 'Error event built', { type: errorEvent.type, message: errorEvent.message, fingerprint: (errorEvent as ErrorEvent).fingerprint });
|
||||||
|
|
||||||
|
if (this.configManager.isIgnoredError(errorEvent.message)) {
|
||||||
|
logDebug('Client', 'captureException skipped: error ignored by ignoreErrors');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.attachTraceContext(errorEvent);
|
||||||
|
errorEvent.breadcrumbs = [...this.breadcrumbs];
|
||||||
|
logDebug('Client', 'Enqueue error event', { breadcrumbs: this.breadcrumbs.length });
|
||||||
|
this.queue.enqueue(errorEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
captureMessage(message: string, level: EventLevel = 'info'): void {
|
captureMessage(message: string, level: EventLevel = 'info'): void {
|
||||||
try {
|
if (!this.enabled) return;
|
||||||
if (!this.enabled) return;
|
|
||||||
|
|
||||||
const event: ErrorEvent = {
|
const event: ErrorEvent = {
|
||||||
type: 'error',
|
type: 'error',
|
||||||
level,
|
level,
|
||||||
message,
|
message,
|
||||||
timestamp: now(),
|
timestamp: now(),
|
||||||
breadcrumbs: [...this.breadcrumbs],
|
breadcrumbs: [...this.breadcrumbs],
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.configManager.isIgnoredError(message)) return;
|
if (this.configManager.isIgnoredError(message)) return;
|
||||||
|
|
||||||
this.attachTraceContext(event);
|
this.attachTraceContext(event);
|
||||||
this.queue.enqueue(event);
|
this.queue.enqueue(event);
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'captureMessage failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
captureEvent(event: Partial<SentryEvent> & { type: string }): void {
|
captureEvent(event: Partial<SentryEvent> & { type: string }): void {
|
||||||
try {
|
if (!this.enabled) return;
|
||||||
if (!this.enabled) return;
|
|
||||||
|
|
||||||
const fullEvent = {
|
const fullEvent = {
|
||||||
timestamp: now(),
|
timestamp: now(),
|
||||||
level: 'info' as EventLevel,
|
level: 'info' as EventLevel,
|
||||||
breadcrumbs: [...this.breadcrumbs],
|
breadcrumbs: [...this.breadcrumbs],
|
||||||
...event,
|
...event,
|
||||||
} as SentryEvent;
|
} as SentryEvent;
|
||||||
|
|
||||||
this.attachTraceContext(fullEvent);
|
this.attachTraceContext(fullEvent);
|
||||||
this.queue.enqueue(fullEvent);
|
this.queue.enqueue(fullEvent);
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'captureEvent failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private attachTraceContext(event: SentryEvent): void {
|
private attachTraceContext(event: SentryEvent): void {
|
||||||
|
|
@ -289,159 +273,91 @@ class Client implements LightClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
setUser(user: UserInfo | null): void {
|
setUser(user: UserInfo | null): void {
|
||||||
try {
|
this.configManager.setUser(user);
|
||||||
this.configManager.setUser(user);
|
this.tracingManager.updateConfig(this.configManager.getAll());
|
||||||
this.tracingManager.updateConfig(this.configManager.getAll());
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setUser failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setAnonymousId(id: string): void {
|
setAnonymousId(id: string): void {
|
||||||
try {
|
setStoredAnonymousId(id);
|
||||||
setStoredAnonymousId(id);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setAnonymousId failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
startTransaction(context: TransactionContext): Transaction | null {
|
startTransaction(context: TransactionContext): Transaction | null {
|
||||||
try {
|
if (!this.enabled) return null;
|
||||||
if (!this.enabled) return null;
|
|
||||||
|
|
||||||
const transaction = this.tracingManager.startTransaction(context);
|
const transaction = this.tracingManager.startTransaction(context);
|
||||||
if (transaction && transaction.sampled) {
|
if (transaction && transaction.sampled) {
|
||||||
logDebug('Client', 'Transaction started and sampled', {
|
logDebug('Client', 'Transaction started and sampled', {
|
||||||
name: transaction.name,
|
name: transaction.name,
|
||||||
traceId: transaction.traceId,
|
traceId: transaction.traceId,
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
return transaction;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'startTransaction failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return transaction;
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentTransaction(): Transaction | null {
|
getCurrentTransaction(): Transaction | null {
|
||||||
try {
|
return this.tracingManager.getCurrentTransaction();
|
||||||
return this.tracingManager.getCurrentTransaction();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'getCurrentTransaction failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentSpan(): Span | null {
|
getCurrentSpan(): Span | null {
|
||||||
try {
|
return this.tracingManager.getCurrentSpan();
|
||||||
return this.tracingManager.getCurrentSpan();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'getCurrentSpan failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setSpan(span: Span | null): void {
|
setSpan(span: Span | null): void {
|
||||||
try {
|
this.tracingManager.setCurrentSpan(span);
|
||||||
this.tracingManager.setCurrentSpan(span);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setSpan failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
startSpan(context: SpanContext): Span | null {
|
startSpan(context: SpanContext): Span | null {
|
||||||
try {
|
if (!this.enabled) return null;
|
||||||
if (!this.enabled) return null;
|
return this.tracingManager.startSpan(context);
|
||||||
return this.tracingManager.startSpan(context);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'startSpan failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setTag(key: string, value: string): void {
|
setTag(key: string, value: string): void {
|
||||||
try {
|
this.configManager.setTag(key, value);
|
||||||
this.configManager.setTag(key, value);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setTag failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setTags(tags: Record<string, string>): void {
|
setTags(tags: Record<string, string>): void {
|
||||||
try {
|
this.configManager.setTags(tags);
|
||||||
this.configManager.setTags(tags);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setTags failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setExtra(key: string, value: unknown): void {
|
setExtra(key: string, value: unknown): void {
|
||||||
try {
|
this.configManager.setExtra(key, value);
|
||||||
this.configManager.setExtra(key, value);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'setExtra failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {
|
addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {
|
||||||
try {
|
const fullBreadcrumb: Breadcrumb = {
|
||||||
const fullBreadcrumb: Breadcrumb = {
|
...breadcrumb,
|
||||||
...breadcrumb,
|
timestamp: now(),
|
||||||
timestamp: now(),
|
};
|
||||||
};
|
|
||||||
|
|
||||||
this.breadcrumbs.push(fullBreadcrumb);
|
this.breadcrumbs.push(fullBreadcrumb);
|
||||||
if (this.breadcrumbs.length > this.maxBreadcrumbs) {
|
if (this.breadcrumbs.length > this.maxBreadcrumbs) {
|
||||||
this.breadcrumbs.shift();
|
this.breadcrumbs.shift();
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'addBreadcrumb failed', e);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async flush(): Promise<void> {
|
async flush(): Promise<void> {
|
||||||
try {
|
await this.queue.flush();
|
||||||
await this.queue.flush();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'flush failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
disable(): void {
|
disable(): void {
|
||||||
try {
|
this.enabled = false;
|
||||||
this.enabled = false;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'disable failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enable(): void {
|
enable(): void {
|
||||||
try {
|
this.enabled = true;
|
||||||
this.enabled = true;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'enable failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
use(plugin: LightPlugin): void {
|
use(plugin: LightPlugin): void {
|
||||||
try {
|
this.pluginManager.add(plugin);
|
||||||
this.pluginManager.add(plugin);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'use plugin failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
destroy(): void {
|
destroy(): void {
|
||||||
try {
|
this.pluginManager.destroy();
|
||||||
this.pluginManager.destroy();
|
this.tracingManager.destroy();
|
||||||
this.tracingManager.destroy();
|
this.queue.destroy();
|
||||||
this.queue.destroy();
|
this.eventBus.destroy();
|
||||||
this.eventBus.destroy();
|
this.breadcrumbs = [];
|
||||||
this.breadcrumbs = [];
|
|
||||||
} catch (e) {
|
|
||||||
logError('Client', 'destroy failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
228
src/index.ts
228
src/index.ts
|
|
@ -10,65 +10,60 @@ import InteractionPlugin from './plugins/InteractionPlugin';
|
||||||
import { Span as SpanClass, Transaction as TransactionClass, httpStatusToSpanStatus, dbStatusToSpanStatus, statusToSpanStatus } from './utils/tracing';
|
import { Span as SpanClass, Transaction as TransactionClass, httpStatusToSpanStatus, dbStatusToSpanStatus, statusToSpanStatus } from './utils/tracing';
|
||||||
import { serializeBaggage, parseBaggage, createBaggageFromTransaction } from './utils/baggage';
|
import { serializeBaggage, parseBaggage, createBaggageFromTransaction } from './utils/baggage';
|
||||||
import type { LightConfig, LightClient, SentryEvent, EventLevel, UserInfo, Breadcrumb, LightPlugin, ErrorEvent, PerformanceEvent, NetworkEvent, BehaviorEvent, DSNInfo, TransactionContext, SpanContext, Transaction, Span, SamplingContext, BaggageFields, SpanStatus } from './types';
|
import type { LightConfig, LightClient, SentryEvent, EventLevel, UserInfo, Breadcrumb, LightPlugin, ErrorEvent, PerformanceEvent, NetworkEvent, BehaviorEvent, DSNInfo, TransactionContext, SpanContext, Transaction, Span, SamplingContext, BaggageFields, SpanStatus } from './types';
|
||||||
import { logDebug, logError, setDebug } from './utils/logger';
|
import { logDebug, setDebug } from './utils/logger';
|
||||||
import { setAnonymousId as setStoredAnonymousId, clearAnonymousId as clearStoredAnonymousId, getAnonymousId as getStoredAnonymousId } from './utils/identity';
|
import { setAnonymousId as setStoredAnonymousId, clearAnonymousId as clearStoredAnonymousId, getAnonymousId as getStoredAnonymousId } from './utils/identity';
|
||||||
|
|
||||||
let globalClient: LightClient | null = null;
|
let globalClient: LightClient | null = null;
|
||||||
|
|
||||||
function init(config: LightConfig): LightClient {
|
function init(config: LightConfig): LightClient {
|
||||||
try {
|
setDebug(config.debug === true);
|
||||||
setDebug(config.debug === true);
|
logDebug('Index', 'init called', { dsn: config.dsn, debug: config.debug });
|
||||||
logDebug('Index', 'init called', { dsn: config.dsn, debug: config.debug });
|
|
||||||
|
|
||||||
const client = new Client(config);
|
const client = new Client(config);
|
||||||
|
|
||||||
const defaultPlugins: LightPlugin[] = [
|
const defaultPlugins: LightPlugin[] = [
|
||||||
new OfflinePlugin(),
|
new OfflinePlugin(),
|
||||||
new SamplingPlugin(),
|
new SamplingPlugin(),
|
||||||
new ErrorPlugin(),
|
new ErrorPlugin(),
|
||||||
];
|
];
|
||||||
|
|
||||||
const pluginNames = config.plugins?.filter(p => typeof p === 'string') as string[] || [];
|
const pluginNames = config.plugins?.filter(p => typeof p === 'string') as string[] || [];
|
||||||
|
|
||||||
if (pluginNames.includes('performance') || pluginNames.includes('all')) {
|
if (pluginNames.includes('performance') || pluginNames.includes('all')) {
|
||||||
defaultPlugins.push(new PerformancePlugin());
|
defaultPlugins.push(new PerformancePlugin());
|
||||||
}
|
}
|
||||||
if (pluginNames.includes('network') || pluginNames.includes('all')) {
|
if (pluginNames.includes('network') || pluginNames.includes('all')) {
|
||||||
defaultPlugins.push(new NetworkPlugin());
|
defaultPlugins.push(new NetworkPlugin());
|
||||||
}
|
}
|
||||||
if (pluginNames.includes('behavior') || pluginNames.includes('all')) {
|
if (pluginNames.includes('behavior') || pluginNames.includes('all')) {
|
||||||
defaultPlugins.push(new BehaviorPlugin());
|
defaultPlugins.push(new BehaviorPlugin());
|
||||||
}
|
}
|
||||||
if (pluginNames.includes('router') || pluginNames.includes('all')) {
|
if (pluginNames.includes('router') || pluginNames.includes('all')) {
|
||||||
defaultPlugins.push(new RouterPlugin());
|
defaultPlugins.push(new RouterPlugin());
|
||||||
}
|
}
|
||||||
if (pluginNames.includes('interaction') || pluginNames.includes('all')) {
|
if (pluginNames.includes('interaction') || pluginNames.includes('all')) {
|
||||||
defaultPlugins.push(new InteractionPlugin());
|
defaultPlugins.push(new InteractionPlugin());
|
||||||
}
|
}
|
||||||
|
|
||||||
logDebug('Index', 'Registering plugins', { count: defaultPlugins.length, plugins: defaultPlugins.map(p => p.name) });
|
logDebug('Index', 'Registering plugins', { count: defaultPlugins.length, plugins: defaultPlugins.map(p => p.name) });
|
||||||
|
|
||||||
for (const plugin of defaultPlugins) {
|
for (const plugin of defaultPlugins) {
|
||||||
client.use(plugin);
|
client.use(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.plugins) {
|
if (config.plugins) {
|
||||||
for (const plugin of config.plugins) {
|
for (const plugin of config.plugins) {
|
||||||
if (typeof plugin === 'object' && plugin !== null && 'name' in plugin && 'setup' in plugin) {
|
if (typeof plugin === 'object' && plugin !== null && 'name' in plugin && 'setup' in plugin) {
|
||||||
client.use(plugin as LightPlugin);
|
client.use(plugin as LightPlugin);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
client.init();
|
|
||||||
|
|
||||||
globalClient = client;
|
|
||||||
logDebug('Index', 'init completed, globalClient set');
|
|
||||||
return client;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'init failed', e);
|
|
||||||
throw e;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
client.init();
|
||||||
|
|
||||||
|
globalClient = client;
|
||||||
|
logDebug('Index', 'init completed, globalClient set');
|
||||||
|
return client;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getClient(): LightClient | null {
|
function getClient(): LightClient | null {
|
||||||
|
|
@ -76,175 +71,94 @@ function getClient(): LightClient | null {
|
||||||
}
|
}
|
||||||
|
|
||||||
function captureException(error: Error | unknown): void {
|
function captureException(error: Error | unknown): void {
|
||||||
try {
|
logDebug('Index', 'captureException called', { hasClient: !!globalClient });
|
||||||
logDebug('Index', 'captureException called', { hasClient: !!globalClient });
|
if (!globalClient) {
|
||||||
if (!globalClient) {
|
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
||||||
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
globalClient.captureException(error);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'captureException failed', e);
|
|
||||||
}
|
}
|
||||||
|
globalClient.captureException(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
function captureMessage(message: string, level?: EventLevel): void {
|
function captureMessage(message: string, level?: EventLevel): void {
|
||||||
try {
|
logDebug('Index', 'captureMessage called', { hasClient: !!globalClient });
|
||||||
logDebug('Index', 'captureMessage called', { hasClient: !!globalClient });
|
if (!globalClient) {
|
||||||
if (!globalClient) {
|
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
||||||
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
globalClient.captureMessage(message, level);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'captureMessage failed', e);
|
|
||||||
}
|
}
|
||||||
|
globalClient.captureMessage(message, level);
|
||||||
}
|
}
|
||||||
|
|
||||||
function captureEvent(event: Partial<SentryEvent> & { type: string }): void {
|
function captureEvent(event: Partial<SentryEvent> & { type: string }): void {
|
||||||
try {
|
logDebug('Index', 'captureEvent called', { hasClient: !!globalClient });
|
||||||
logDebug('Index', 'captureEvent called', { hasClient: !!globalClient });
|
if (!globalClient) {
|
||||||
if (!globalClient) {
|
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
||||||
console.warn('[LightSDK] SDK not initialized. Call LightSentry.init() first.');
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
globalClient.captureEvent(event);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'captureEvent failed', e);
|
|
||||||
}
|
}
|
||||||
|
globalClient.captureEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setUser(user: UserInfo | null): void {
|
function setUser(user: UserInfo | null): void {
|
||||||
try {
|
globalClient?.setUser(user);
|
||||||
globalClient?.setUser(user);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setUser failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setAnonymousId(id: string): void {
|
function setAnonymousId(id: string): void {
|
||||||
try {
|
setStoredAnonymousId(id);
|
||||||
setStoredAnonymousId(id);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setAnonymousId failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function clearAnonymousId(): void {
|
function clearAnonymousId(): void {
|
||||||
try {
|
clearStoredAnonymousId();
|
||||||
clearStoredAnonymousId();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'clearAnonymousId failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAnonymousId(): string | null {
|
function getAnonymousId(): string | null {
|
||||||
try {
|
return getStoredAnonymousId();
|
||||||
return getStoredAnonymousId();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'getAnonymousId failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function startTransaction(context: TransactionContext): Transaction | null {
|
function startTransaction(context: TransactionContext): Transaction | null {
|
||||||
try {
|
return globalClient?.startTransaction(context) || null;
|
||||||
return globalClient?.startTransaction(context) || null;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'startTransaction failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentTransaction(): Transaction | null {
|
function getCurrentTransaction(): Transaction | null {
|
||||||
try {
|
return globalClient?.getCurrentTransaction() || null;
|
||||||
return globalClient?.getCurrentTransaction() || null;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'getCurrentTransaction failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getCurrentSpan(): Span | null {
|
function getCurrentSpan(): Span | null {
|
||||||
try {
|
return globalClient?.getCurrentSpan() || null;
|
||||||
return globalClient?.getCurrentSpan() || null;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'getCurrentSpan failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSpan(span: Span | null): void {
|
function setSpan(span: Span | null): void {
|
||||||
try {
|
globalClient?.setSpan(span);
|
||||||
globalClient?.setSpan(span);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setSpan failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function startSpan(context: SpanContext): Span | null {
|
function startSpan(context: SpanContext): Span | null {
|
||||||
try {
|
return globalClient?.startSpan(context) || null;
|
||||||
return globalClient?.startSpan(context) || null;
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'startSpan failed', e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTag(key: string, value: string): void {
|
function setTag(key: string, value: string): void {
|
||||||
try {
|
globalClient?.setTag(key, value);
|
||||||
globalClient?.setTag(key, value);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setTag failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTags(tags: Record<string, string>): void {
|
function setTags(tags: Record<string, string>): void {
|
||||||
try {
|
globalClient?.setTags(tags);
|
||||||
globalClient?.setTags(tags);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setTags failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function setExtra(key: string, value: unknown): void {
|
function setExtra(key: string, value: unknown): void {
|
||||||
try {
|
globalClient?.setExtra(key, value);
|
||||||
globalClient?.setExtra(key, value);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'setExtra failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {
|
function addBreadcrumb(breadcrumb: Omit<Breadcrumb, 'timestamp'>): void {
|
||||||
try {
|
globalClient?.addBreadcrumb(breadcrumb);
|
||||||
globalClient?.addBreadcrumb(breadcrumb);
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'addBreadcrumb failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function flush(): Promise<void> {
|
async function flush(): Promise<void> {
|
||||||
try {
|
await globalClient?.flush();
|
||||||
await globalClient?.flush();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'flush failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function disable(): void {
|
function disable(): void {
|
||||||
try {
|
globalClient?.disable();
|
||||||
globalClient?.disable();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'disable failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function enable(): void {
|
function enable(): void {
|
||||||
try {
|
globalClient?.enable();
|
||||||
globalClient?.enable();
|
|
||||||
} catch (e) {
|
|
||||||
logError('Index', 'enable failed', e);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|
|
||||||
|
|
@ -20,11 +20,12 @@ export function logDebug(tag: string, message: string, data?: unknown): void {
|
||||||
}
|
}
|
||||||
|
|
||||||
export function logError(tag: string, message: string, error?: unknown): void {
|
export function logError(tag: string, message: string, error?: unknown): void {
|
||||||
|
if (!debugEnabled) return;
|
||||||
const timestamp = new Date().toISOString();
|
const timestamp = new Date().toISOString();
|
||||||
const prefix = `[LightSDK][${tag}][ERROR]`;
|
const prefix = `[LightSDK][${tag}][ERROR]`;
|
||||||
if (error !== undefined) {
|
if (error !== undefined) {
|
||||||
console.warn(`${prefix} ${timestamp} ${message}`, error);
|
console.error(`${prefix} ${timestamp} ${message}`, error);
|
||||||
} else {
|
} else {
|
||||||
console.warn(`${prefix} ${timestamp} ${message}`);
|
console.error(`${prefix} ${timestamp} ${message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,270 +0,0 @@
|
||||||
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
||||||
import Client from '../src/core/Client';
|
|
||||||
import { setAnonymousId } from '../src/utils/identity';
|
|
||||||
|
|
||||||
describe('SDK Error Safety', () => {
|
|
||||||
const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
|
||||||
const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
vi.clearAllMocks();
|
|
||||||
});
|
|
||||||
|
|
||||||
afterAll(() => {
|
|
||||||
consoleWarnSpy.mockRestore();
|
|
||||||
consoleLogSpy.mockRestore();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Client public methods should not throw', () => {
|
|
||||||
let client: Client;
|
|
||||||
|
|
||||||
beforeEach(() => {
|
|
||||||
client = new Client({
|
|
||||||
dsn: 'https://proj_abc123@log.example.com/1001',
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(() => {
|
|
||||||
client.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureException should not throw on invalid input', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.captureException(null as unknown as Error);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureException should not throw on undefined input', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.captureException(undefined);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureException should not throw when SDK is disabled', () => {
|
|
||||||
client.disable();
|
|
||||||
expect(() => {
|
|
||||||
client.captureException(new Error('test'));
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureMessage should not throw on empty message', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.captureMessage('');
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureMessage should not throw when SDK is disabled', () => {
|
|
||||||
client.disable();
|
|
||||||
expect(() => {
|
|
||||||
client.captureMessage('test');
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureEvent should not throw on minimal event', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.captureEvent({ type: 'custom' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('captureEvent should not throw when SDK is disabled', () => {
|
|
||||||
client.disable();
|
|
||||||
expect(() => {
|
|
||||||
client.captureEvent({ type: 'custom' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setUser should not throw on null input', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setUser(null);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setUser should not throw on valid input', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setUser({ id: '123', username: 'test' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setTag should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setTag('key', 'value');
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setTags should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setTags({ key1: 'val1', key2: 'val2' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setExtra should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setExtra('key', { nested: true });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('addBreadcrumb should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.addBreadcrumb({
|
|
||||||
type: 'default',
|
|
||||||
message: 'test breadcrumb',
|
|
||||||
level: 'info',
|
|
||||||
});
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('addBreadcrumb should not throw on empty breadcrumb', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.addBreadcrumb({
|
|
||||||
type: 'default',
|
|
||||||
});
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('startTransaction should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.startTransaction({ name: 'test-tx', op: 'test' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('startTransaction should not throw when SDK is disabled', () => {
|
|
||||||
client.disable();
|
|
||||||
const result = client.startTransaction({ name: 'test-tx', op: 'test' });
|
|
||||||
expect(result).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('getCurrentTransaction should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.getCurrentTransaction();
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('getCurrentSpan should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.getCurrentSpan();
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setSpan should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setSpan(null);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('startSpan should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.startSpan({ name: 'test-span', op: 'test' });
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('startSpan should not throw when SDK is disabled', () => {
|
|
||||||
client.disable();
|
|
||||||
const result = client.startSpan({ name: 'test-span', op: 'test' });
|
|
||||||
expect(result).toBeNull();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('disable should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.disable();
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('enable should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.enable();
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('use should not throw on valid plugin', () => {
|
|
||||||
const plugin = {
|
|
||||||
name: 'test-plugin',
|
|
||||||
setup: vi.fn(),
|
|
||||||
};
|
|
||||||
expect(() => {
|
|
||||||
client.use(plugin);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('use should not throw when plugin setup throws', () => {
|
|
||||||
const plugin = {
|
|
||||||
name: 'bad-plugin',
|
|
||||||
setup: () => {
|
|
||||||
throw new Error('setup failed');
|
|
||||||
},
|
|
||||||
};
|
|
||||||
expect(() => {
|
|
||||||
client.use(plugin);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('flush should not throw', async () => {
|
|
||||||
await expect(client.flush()).resolves.not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('destroy should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.destroy();
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('init should not throw', () => {
|
|
||||||
const newClient = new Client({
|
|
||||||
dsn: 'https://proj_abc123@log.example.com/1001',
|
|
||||||
});
|
|
||||||
expect(() => {
|
|
||||||
newClient.init();
|
|
||||||
}).not.toThrow();
|
|
||||||
newClient.destroy();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('setAnonymousId should not throw', () => {
|
|
||||||
expect(() => {
|
|
||||||
client.setAnonymousId('test-anon-id');
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('on/off/emit should not throw', () => {
|
|
||||||
const handler = vi.fn();
|
|
||||||
expect(() => {
|
|
||||||
client.on('test', handler);
|
|
||||||
}).not.toThrow();
|
|
||||||
expect(() => {
|
|
||||||
client.emit('test', 'data');
|
|
||||||
}).not.toThrow();
|
|
||||||
expect(() => {
|
|
||||||
client.off('test', handler);
|
|
||||||
}).not.toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('event handler errors should not affect other handlers', () => {
|
|
||||||
const handler1 = vi.fn(() => {
|
|
||||||
throw new Error('handler1 failed');
|
|
||||||
});
|
|
||||||
const handler2 = vi.fn();
|
|
||||||
|
|
||||||
client.on('test-event', handler1);
|
|
||||||
client.on('test-event', handler2);
|
|
||||||
|
|
||||||
expect(() => {
|
|
||||||
client.emit('test-event', 'data');
|
|
||||||
}).not.toThrow();
|
|
||||||
|
|
||||||
expect(handler1).toHaveBeenCalled();
|
|
||||||
expect(handler2).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('Config edge cases', () => {
|
|
||||||
it('should throw on missing DSN (config error, not SDK bug)', () => {
|
|
||||||
expect(() => {
|
|
||||||
new Client({ dsn: '' });
|
|
||||||
}).toThrow();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should throw on undefined DSN', () => {
|
|
||||||
expect(() => {
|
|
||||||
new Client({ dsn: undefined as unknown as string });
|
|
||||||
}).toThrow();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -107,73 +107,70 @@ describe('logger', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('logError', () => {
|
describe('logError', () => {
|
||||||
it('should always log errors even when debug is disabled', () => {
|
it('should not log when debug is disabled', () => {
|
||||||
setDebug(false);
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
logError('Test', 'This should not appear');
|
||||||
logError('Test', 'This should always appear');
|
expect(consoleSpy).not.toHaveBeenCalled();
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should log error message when debug is enabled', () => {
|
it('should log error message when debug is enabled', () => {
|
||||||
setDebug(true);
|
setDebug(true);
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
logError('Test', 'This error should appear');
|
logError('Test', 'This error should appear');
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should include ERROR tag in log message', () => {
|
it('should include ERROR tag in log message', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
logError('Module', 'Error message');
|
logError('Module', 'Error message');
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
const loggedMessage = consoleSpy.mock.calls[0][0];
|
const loggedMessage = consoleSpy.mock.calls[0][0];
|
||||||
expect(loggedMessage).toContain('[LightSDK][Module][ERROR]');
|
expect(loggedMessage).toContain('[LightSDK][Module][ERROR]');
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should log error with error data', () => {
|
it('should log error with error data', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
const error = new Error('Test error');
|
const error = new Error('Test error');
|
||||||
logError('Module', 'Error occurred', error);
|
logError('Module', 'Error occurred', error);
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle plain object error', () => {
|
it('should handle plain object error', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
const errorObj = { status: 404, message: 'Not found' };
|
const errorObj = { status: 404, message: 'Not found' };
|
||||||
logError('Module', 'Request failed', errorObj);
|
logError('Module', 'Request failed', errorObj);
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle error message without data', () => {
|
it('should handle error message without data', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
logError('Module', 'Simple error');
|
logError('Module', 'Simple error');
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle string error', () => {
|
it('should handle string error', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
logError('Module', 'String error', 'error details');
|
logError('Module', 'String error', 'error details');
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should handle undefined error', () => {
|
it('should handle undefined error', () => {
|
||||||
const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
setDebug(true);
|
||||||
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
logError('Module', 'Error without details', undefined);
|
logError('Module', 'Error without details', undefined);
|
||||||
expect(consoleSpy).toHaveBeenCalled();
|
expect(consoleSpy).toHaveBeenCalled();
|
||||||
consoleSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('debug toggle behavior', () => {
|
describe('debug toggle behavior', () => {
|
||||||
it('should toggle debug logs between enabled and disabled', () => {
|
it('should toggle between enabled and disabled', () => {
|
||||||
const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
const consoleLogSpy = vi.spyOn(console, 'log').mockImplementation(() => {});
|
||||||
const consoleWarnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
|
const consoleErrorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
||||||
|
|
||||||
setDebug(true);
|
setDebug(true);
|
||||||
logDebug('Test', 'Debug on');
|
logDebug('Test', 'Debug on');
|
||||||
|
|
@ -183,18 +180,13 @@ describe('logger', () => {
|
||||||
logDebug('Test', 'Debug off');
|
logDebug('Test', 'Debug off');
|
||||||
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
|
expect(consoleLogSpy).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
// logError should always work regardless of debug flag
|
|
||||||
setDebug(true);
|
setDebug(true);
|
||||||
logError('Test', 'Error on');
|
logError('Test', 'Error on');
|
||||||
const errorCallCountWhenOn = consoleWarnSpy.mock.calls.length;
|
expect(consoleErrorSpy).toHaveBeenCalled();
|
||||||
expect(errorCallCountWhenOn).toBeGreaterThan(0);
|
|
||||||
|
|
||||||
setDebug(false);
|
setDebug(false);
|
||||||
logError('Test', 'Error off');
|
logError('Test', 'Error off');
|
||||||
expect(consoleWarnSpy).toHaveBeenCalledTimes(errorCallCountWhenOn + 1);
|
expect(consoleErrorSpy).toHaveBeenCalledTimes(1);
|
||||||
|
|
||||||
consoleLogSpy.mockRestore();
|
|
||||||
consoleWarnSpy.mockRestore();
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue