topkat-utils 1.2.116 → 1.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/README.md +260 -219
  2. package/coverage/clover.xml +533 -433
  3. package/coverage/coverage-final.json +9 -9
  4. package/coverage/lcov-report/clean-stack-trace.ts.html +1 -1
  5. package/coverage/lcov-report/config.ts.html +2 -2
  6. package/coverage/lcov-report/error-utils.ts.html +2 -2
  7. package/coverage/lcov-report/index.html +50 -50
  8. package/coverage/lcov-report/is-empty.ts.html +1 -1
  9. package/coverage/lcov-report/is-nodejs.ts.html +1 -1
  10. package/coverage/lcov-report/is-object.ts.html +1 -1
  11. package/coverage/lcov-report/isset.ts.html +1 -1
  12. package/coverage/lcov-report/logger-utils.ts.html +65 -50
  13. package/coverage/lcov-report/loop-utils.ts.html +179 -8
  14. package/coverage/lcov-report/math-utils.ts.html +35 -8
  15. package/coverage/lcov-report/object-utils.ts.html +20 -8
  16. package/coverage/lcov-report/regexp-utils.ts.html +45 -12
  17. package/coverage/lcov-report/remove-circular-json-stringify.ts.html +1 -1
  18. package/coverage/lcov-report/string-utils.ts.html +54 -12
  19. package/coverage/lcov-report/timer-utils.ts.html +2 -2
  20. package/coverage/lcov-report/transaction-utils.ts.html +1 -1
  21. package/coverage/lcov.info +634 -559
  22. package/dist/src/error-utils.js +1 -1
  23. package/dist/src/error-utils.js.map +1 -1
  24. package/dist/src/logger-utils.js +3 -0
  25. package/dist/src/logger-utils.js.map +1 -1
  26. package/dist/src/loop-utils.d.ts +54 -2
  27. package/dist/src/loop-utils.js +48 -2
  28. package/dist/src/loop-utils.js.map +1 -1
  29. package/dist/src/math-utils.d.ts +1 -1
  30. package/dist/src/math-utils.js +6 -2
  31. package/dist/src/math-utils.js.map +1 -1
  32. package/dist/src/object-utils.d.ts +3 -1
  33. package/dist/src/object-utils.js +7 -4
  34. package/dist/src/object-utils.js.map +1 -1
  35. package/dist/src/regexp-utils.d.ts +9 -4
  36. package/dist/src/regexp-utils.js +8 -5
  37. package/dist/src/regexp-utils.js.map +1 -1
  38. package/dist/src/string-utils.d.ts +13 -4
  39. package/dist/src/string-utils.js +16 -6
  40. package/dist/src/string-utils.js.map +1 -1
  41. package/dist/src/timer-utils.d.ts +1 -1
  42. package/dist/src/timer-utils.js +1 -1
  43. package/package.json +45 -8
  44. package/src/error-utils.ts +1 -1
  45. package/src/logger-utils.ts +5 -0
  46. package/src/loop-utils.ts +59 -2
  47. package/src/math-utils.ts +11 -2
  48. package/src/object-utils.ts +6 -2
  49. package/src/regexp-utils.ts +17 -6
  50. package/src/string-utils.ts +19 -5
  51. package/src/timer-utils.ts +1 -1
@@ -190,7 +190,7 @@ export function cleanStackTrace(stack) {
190
190
  <div class='footer quiet pad2 space-top1 center small'>
191
191
  Code coverage generated by
192
192
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
193
- at 2025-03-13T18:42:56.377Z
193
+ at 2025-03-16T15:15:26.592Z
194
194
  </div>
195
195
  <script src="prettify.js"></script>
196
196
  <script>
@@ -214,7 +214,7 @@
214
214
  <span class="cline-any cline-yes">2x</span>
215
215
  <span class="cline-any cline-yes">2x</span>
216
216
  <span class="cline-any cline-yes">2x</span>
217
- <span class="cline-any cline-yes">8x</span>
217
+ <span class="cline-any cline-yes">10x</span>
218
218
  <span class="cline-any cline-yes">2x</span>
219
219
  <span class="cline-any cline-no">&nbsp;</span>
220
220
  <span class="cline-any cline-no">&nbsp;</span>
@@ -349,7 +349,7 @@ type RecursivePartial&lt;T&gt; = {
349
349
  <div class='footer quiet pad2 space-top1 center small'>
350
350
  Code coverage generated by
351
351
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
352
- at 2025-03-13T18:42:56.377Z
352
+ at 2025-03-16T15:15:26.592Z
353
353
  </div>
354
354
  <script src="prettify.js"></script>
355
355
  <script>
@@ -546,7 +546,7 @@ export const failSafe = tryCatch // ALIAS
546
546
  <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function extraInfosRendererDefault(extraInfos) {</span></span>
547
547
  <span class="cstat-no" title="statement not covered" > return [</span>
548
548
  <span class="cstat-no" title="statement not covered" > '== EXTRA INFOS ==',</span>
549
- <span class="cstat-no" title="statement not covered" > removeCircularJSONstringify(extraInfos, 2)</span>
549
+ <span class="cstat-no" title="statement not covered" > removeCircularJSONstringify({ ...extraInfos, msg: undefined, message: undefined }, 2)</span>
550
550
  <span class="cstat-no" title="statement not covered" > ]</span>
551
551
  <span class="cstat-no" title="statement not covered" >}</span>
552
552
  &nbsp;
@@ -715,7 +715,7 @@ export const failSafe = tryCatch // ALIAS
715
715
  <div class='footer quiet pad2 space-top1 center small'>
716
716
  Code coverage generated by
717
717
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
718
- at 2025-03-13T18:42:56.377Z
718
+ at 2025-03-16T15:15:26.592Z
719
719
  </div>
720
720
  <script src="prettify.js"></script>
721
721
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">39.46% </span>
26
+ <span class="strong">39.49% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>719/1822</span>
28
+ <span class='fraction'>759/1922</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">77.27% </span>
33
+ <span class="strong">56.36% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>51/66</span>
35
+ <span class='fraction'>31/55</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">10.56% </span>
40
+ <span class="strong">9.62% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>15/142</span>
42
+ <span class='fraction'>13/135</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">39.46% </span>
47
+ <span class="strong">39.49% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>719/1822</span>
49
+ <span class='fraction'>759/1922</span>
50
50
  </div>
51
51
 
52
52
 
@@ -185,77 +185,77 @@
185
185
 
186
186
  <tr>
187
187
  <td class="file low" data-value="logger-utils.ts"><a href="logger-utils.ts.html">logger-utils.ts</a></td>
188
- <td data-value="42.81" class="pic low">
189
- <div class="chart"><div class="cover-fill" style="width: 42%"></div><div class="cover-empty" style="width: 58%"></div></div>
188
+ <td data-value="40.87" class="pic low">
189
+ <div class="chart"><div class="cover-fill" style="width: 40%"></div><div class="cover-empty" style="width: 60%"></div></div>
190
190
  </td>
191
- <td data-value="42.81" class="pct low">42.81%</td>
192
- <td data-value="362" class="abs low">155/362</td>
193
- <td data-value="78.78" class="pct medium">78.78%</td>
194
- <td data-value="33" class="abs medium">26/33</td>
195
- <td data-value="14.58" class="pct low">14.58%</td>
196
- <td data-value="48" class="abs low">7/48</td>
197
- <td data-value="42.81" class="pct low">42.81%</td>
198
- <td data-value="362" class="abs low">155/362</td>
191
+ <td data-value="40.87" class="pct low">40.87%</td>
192
+ <td data-value="367" class="abs low">150/367</td>
193
+ <td data-value="27.27" class="pct low">27.27%</td>
194
+ <td data-value="22" class="abs low">6/22</td>
195
+ <td data-value="12.5" class="pct low">12.5%</td>
196
+ <td data-value="40" class="abs low">5/40</td>
197
+ <td data-value="40.87" class="pct low">40.87%</td>
198
+ <td data-value="367" class="abs low">150/367</td>
199
199
  </tr>
200
200
 
201
201
  <tr>
202
202
  <td class="file low" data-value="loop-utils.ts"><a href="loop-utils.ts.html">loop-utils.ts</a></td>
203
- <td data-value="46.22" class="pic low">
204
- <div class="chart"><div class="cover-fill" style="width: 46%"></div><div class="cover-empty" style="width: 54%"></div></div>
203
+ <td data-value="47.23" class="pic low">
204
+ <div class="chart"><div class="cover-fill" style="width: 47%"></div><div class="cover-empty" style="width: 53%"></div></div>
205
205
  </td>
206
- <td data-value="46.22" class="pct low">46.22%</td>
207
- <td data-value="106" class="abs low">49/106</td>
206
+ <td data-value="47.23" class="pct low">47.23%</td>
207
+ <td data-value="163" class="abs low">77/163</td>
208
208
  <td data-value="100" class="pct high">100%</td>
209
209
  <td data-value="0" class="abs high">0/0</td>
210
210
  <td data-value="0" class="pct low">0%</td>
211
211
  <td data-value="4" class="abs low">0/4</td>
212
- <td data-value="46.22" class="pct low">46.22%</td>
213
- <td data-value="106" class="abs low">49/106</td>
212
+ <td data-value="47.23" class="pct low">47.23%</td>
213
+ <td data-value="163" class="abs low">77/163</td>
214
214
  </tr>
215
215
 
216
216
  <tr>
217
217
  <td class="file medium" data-value="math-utils.ts"><a href="math-utils.ts.html">math-utils.ts</a></td>
218
- <td data-value="58" class="pic medium">
219
- <div class="chart"><div class="cover-fill" style="width: 58%"></div><div class="cover-empty" style="width: 42%"></div></div>
218
+ <td data-value="50.84" class="pic medium">
219
+ <div class="chart"><div class="cover-fill" style="width: 50%"></div><div class="cover-empty" style="width: 50%"></div></div>
220
220
  </td>
221
- <td data-value="58" class="pct medium">58%</td>
222
- <td data-value="50" class="abs medium">29/50</td>
221
+ <td data-value="50.84" class="pct medium">50.84%</td>
222
+ <td data-value="59" class="abs medium">30/59</td>
223
223
  <td data-value="100" class="pct high">100%</td>
224
224
  <td data-value="0" class="abs high">0/0</td>
225
225
  <td data-value="0" class="pct low">0%</td>
226
226
  <td data-value="9" class="abs low">0/9</td>
227
- <td data-value="58" class="pct medium">58%</td>
228
- <td data-value="50" class="abs medium">29/50</td>
227
+ <td data-value="50.84" class="pct medium">50.84%</td>
228
+ <td data-value="59" class="abs medium">30/59</td>
229
229
  </tr>
230
230
 
231
231
  <tr>
232
232
  <td class="file low" data-value="object-utils.ts"><a href="object-utils.ts.html">object-utils.ts</a></td>
233
- <td data-value="28.63" class="pic low">
234
- <div class="chart"><div class="cover-fill" style="width: 28%"></div><div class="cover-empty" style="width: 72%"></div></div>
233
+ <td data-value="29.05" class="pic low">
234
+ <div class="chart"><div class="cover-fill" style="width: 29%"></div><div class="cover-empty" style="width: 71%"></div></div>
235
235
  </td>
236
- <td data-value="28.63" class="pct low">28.63%</td>
237
- <td data-value="440" class="abs low">126/440</td>
236
+ <td data-value="29.05" class="pct low">29.05%</td>
237
+ <td data-value="444" class="abs low">129/444</td>
238
238
  <td data-value="100" class="pct high">100%</td>
239
239
  <td data-value="0" class="abs high">0/0</td>
240
240
  <td data-value="0" class="pct low">0%</td>
241
241
  <td data-value="27" class="abs low">0/27</td>
242
- <td data-value="28.63" class="pct low">28.63%</td>
243
- <td data-value="440" class="abs low">126/440</td>
242
+ <td data-value="29.05" class="pct low">29.05%</td>
243
+ <td data-value="444" class="abs low">129/444</td>
244
244
  </tr>
245
245
 
246
246
  <tr>
247
247
  <td class="file low" data-value="regexp-utils.ts"><a href="regexp-utils.ts.html">regexp-utils.ts</a></td>
248
- <td data-value="43.9" class="pic low">
249
- <div class="chart"><div class="cover-fill" style="width: 43%"></div><div class="cover-empty" style="width: 57%"></div></div>
248
+ <td data-value="40.38" class="pic low">
249
+ <div class="chart"><div class="cover-fill" style="width: 40%"></div><div class="cover-empty" style="width: 60%"></div></div>
250
250
  </td>
251
- <td data-value="43.9" class="pct low">43.9%</td>
252
- <td data-value="41" class="abs low">18/41</td>
251
+ <td data-value="40.38" class="pct low">40.38%</td>
252
+ <td data-value="52" class="abs low">21/52</td>
253
253
  <td data-value="100" class="pct high">100%</td>
254
254
  <td data-value="0" class="abs high">0/0</td>
255
255
  <td data-value="0" class="pct low">0%</td>
256
256
  <td data-value="3" class="abs low">0/3</td>
257
- <td data-value="43.9" class="pct low">43.9%</td>
258
- <td data-value="41" class="abs low">18/41</td>
257
+ <td data-value="40.38" class="pct low">40.38%</td>
258
+ <td data-value="52" class="abs low">21/52</td>
259
259
  </tr>
260
260
 
261
261
  <tr>
@@ -275,17 +275,17 @@
275
275
 
276
276
  <tr>
277
277
  <td class="file low" data-value="string-utils.ts"><a href="string-utils.ts.html">string-utils.ts</a></td>
278
- <td data-value="32.97" class="pic low">
279
- <div class="chart"><div class="cover-fill" style="width: 32%"></div><div class="cover-empty" style="width: 68%"></div></div>
278
+ <td data-value="34.81" class="pic low">
279
+ <div class="chart"><div class="cover-fill" style="width: 34%"></div><div class="cover-empty" style="width: 66%"></div></div>
280
280
  </td>
281
- <td data-value="32.97" class="pct low">32.97%</td>
282
- <td data-value="279" class="abs low">92/279</td>
281
+ <td data-value="34.81" class="pct low">34.81%</td>
282
+ <td data-value="293" class="abs low">102/293</td>
283
283
  <td data-value="100" class="pct high">100%</td>
284
284
  <td data-value="0" class="abs high">0/0</td>
285
285
  <td data-value="0" class="pct low">0%</td>
286
- <td data-value="23" class="abs low">0/23</td>
287
- <td data-value="32.97" class="pct low">32.97%</td>
288
- <td data-value="279" class="abs low">92/279</td>
286
+ <td data-value="24" class="abs low">0/24</td>
287
+ <td data-value="34.81" class="pct low">34.81%</td>
288
+ <td data-value="293" class="abs low">102/293</td>
289
289
  </tr>
290
290
 
291
291
  <tr>
@@ -326,7 +326,7 @@
326
326
  <div class='footer quiet pad2 space-top1 center small'>
327
327
  Code coverage generated by
328
328
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
329
- at 2025-03-13T18:42:56.377Z
329
+ at 2025-03-16T15:15:26.592Z
330
330
  </div>
331
331
  <script src="prettify.js"></script>
332
332
  <script>
@@ -88,7 +88,7 @@
88
88
  <div class='footer quiet pad2 space-top1 center small'>
89
89
  Code coverage generated by
90
90
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
91
- at 2025-03-13T18:42:56.377Z
91
+ at 2025-03-16T15:15:26.592Z
92
92
  </div>
93
93
  <script src="prettify.js"></script>
94
94
  <script>
@@ -94,7 +94,7 @@ export function isNodeJs(): boolean {
94
94
  <div class='footer quiet pad2 space-top1 center small'>
95
95
  Code coverage generated by
96
96
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
97
- at 2025-03-13T18:42:56.377Z
97
+ at 2025-03-16T15:15:26.592Z
98
98
  </div>
99
99
  <script src="prettify.js"></script>
100
100
  <script>
@@ -76,7 +76,7 @@
76
76
  <div class='footer quiet pad2 space-top1 center small'>
77
77
  Code coverage generated by
78
78
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
79
- at 2025-03-13T18:42:56.377Z
79
+ at 2025-03-16T15:15:26.592Z
80
80
  </div>
81
81
  <script src="prettify.js"></script>
82
82
  <script>
@@ -76,7 +76,7 @@
76
76
  <div class='footer quiet pad2 space-top1 center small'>
77
77
  Code coverage generated by
78
78
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
79
- at 2025-03-13T18:42:56.377Z
79
+ at 2025-03-16T15:15:26.592Z
80
80
  </div>
81
81
  <script src="prettify.js"></script>
82
82
  <script>
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">42.81% </span>
26
+ <span class="strong">40.87% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>155/362</span>
28
+ <span class='fraction'>150/367</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">78.78% </span>
33
+ <span class="strong">27.27% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/33</span>
35
+ <span class='fraction'>6/22</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">14.58% </span>
40
+ <span class="strong">12.5% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>7/48</span>
42
+ <span class='fraction'>5/40</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">42.81% </span>
47
+ <span class="strong">40.87% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>155/362</span>
49
+ <span class='fraction'>150/367</span>
50
50
  </div>
51
51
 
52
52
 
@@ -426,7 +426,17 @@
426
426
  <a name='L361'></a><a href='#L361'>361</a>
427
427
  <a name='L362'></a><a href='#L362'>362</a>
428
428
  <a name='L363'></a><a href='#L363'>363</a>
429
- <a name='L364'></a><a href='#L364'>364</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
429
+ <a name='L364'></a><a href='#L364'>364</a>
430
+ <a name='L365'></a><a href='#L365'>365</a>
431
+ <a name='L366'></a><a href='#L366'>366</a>
432
+ <a name='L367'></a><a href='#L367'>367</a>
433
+ <a name='L368'></a><a href='#L368'>368</a>
434
+ <a name='L369'></a><a href='#L369'>369</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
435
+ <span class="cline-any cline-yes">2x</span>
436
+ <span class="cline-any cline-yes">2x</span>
437
+ <span class="cline-any cline-yes">2x</span>
438
+ <span class="cline-any cline-yes">2x</span>
439
+ <span class="cline-any cline-yes">2x</span>
430
440
  <span class="cline-any cline-yes">2x</span>
431
441
  <span class="cline-any cline-yes">2x</span>
432
442
  <span class="cline-any cline-yes">2x</span>
@@ -612,13 +622,13 @@
612
622
  <span class="cline-any cline-no">&nbsp;</span>
613
623
  <span class="cline-any cline-yes">2x</span>
614
624
  <span class="cline-any cline-yes">2x</span>
615
- <span class="cline-any cline-yes">1x</span>
625
+ <span class="cline-any cline-yes">2x</span>
626
+ <span class="cline-any cline-no">&nbsp;</span>
627
+ <span class="cline-any cline-no">&nbsp;</span>
616
628
  <span class="cline-any cline-no">&nbsp;</span>
617
629
  <span class="cline-any cline-no">&nbsp;</span>
618
630
  <span class="cline-any cline-no">&nbsp;</span>
619
631
  <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-yes">1x</span>
621
- <span class="cline-any cline-yes">1x</span>
622
632
  <span class="cline-any cline-yes">2x</span>
623
633
  <span class="cline-any cline-yes">2x</span>
624
634
  <span class="cline-any cline-yes">2x</span>
@@ -634,9 +644,10 @@
634
644
  <span class="cline-any cline-yes">2x</span>
635
645
  <span class="cline-any cline-yes">2x</span>
636
646
  <span class="cline-any cline-yes">2x</span>
637
- <span class="cline-any cline-yes">1x</span>
638
- <span class="cline-any cline-yes">1x</span>
639
- <span class="cline-any cline-yes">1x</span>
647
+ <span class="cline-any cline-yes">2x</span>
648
+ <span class="cline-any cline-no">&nbsp;</span>
649
+ <span class="cline-any cline-yes">2x</span>
650
+ <span class="cline-any cline-no">&nbsp;</span>
640
651
  <span class="cline-any cline-no">&nbsp;</span>
641
652
  <span class="cline-any cline-no">&nbsp;</span>
642
653
  <span class="cline-any cline-no">&nbsp;</span>
@@ -647,14 +658,13 @@
647
658
  <span class="cline-any cline-no">&nbsp;</span>
648
659
  <span class="cline-any cline-no">&nbsp;</span>
649
660
  <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-yes">1x</span>
651
661
  <span class="cline-any cline-yes">2x</span>
652
662
  <span class="cline-any cline-yes">2x</span>
653
663
  <span class="cline-any cline-yes">2x</span>
654
664
  <span class="cline-any cline-yes">2x</span>
655
- <span class="cline-any cline-yes">1x</span>
665
+ <span class="cline-any cline-yes">2x</span>
666
+ <span class="cline-any cline-no">&nbsp;</span>
656
667
  <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-yes">1x</span>
658
668
  <span class="cline-any cline-yes">2x</span>
659
669
  <span class="cline-any cline-yes">2x</span>
660
670
  <span class="cline-any cline-yes">2x</span>
@@ -681,7 +691,7 @@
681
691
  <span class="cline-any cline-no">&nbsp;</span>
682
692
  <span class="cline-any cline-no">&nbsp;</span>
683
693
  <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-yes">1x</span>
694
+ <span class="cline-any cline-no">&nbsp;</span>
685
695
  <span class="cline-any cline-yes">2x</span>
686
696
  <span class="cline-any cline-no">&nbsp;</span>
687
697
  <span class="cline-any cline-no">&nbsp;</span>
@@ -714,25 +724,25 @@
714
724
  <span class="cline-any cline-no">&nbsp;</span>
715
725
  <span class="cline-any cline-no">&nbsp;</span>
716
726
  <span class="cline-any cline-no">&nbsp;</span>
717
- <span class="cline-any cline-yes">1x</span>
727
+ <span class="cline-any cline-no">&nbsp;</span>
728
+ <span class="cline-any cline-yes">2x</span>
718
729
  <span class="cline-any cline-yes">2x</span>
719
730
  <span class="cline-any cline-yes">2x</span>
720
731
  <span class="cline-any cline-yes">2x</span>
721
732
  <span class="cline-any cline-yes">2x</span>
722
733
  <span class="cline-any cline-yes">2x</span>
723
734
  <span class="cline-any cline-yes">2x</span>
724
- <span class="cline-any cline-yes">1x</span>
725
735
  <span class="cline-any cline-no">&nbsp;</span>
726
736
  <span class="cline-any cline-no">&nbsp;</span>
727
737
  <span class="cline-any cline-no">&nbsp;</span>
728
738
  <span class="cline-any cline-no">&nbsp;</span>
729
739
  <span class="cline-any cline-no">&nbsp;</span>
730
740
  <span class="cline-any cline-no">&nbsp;</span>
731
- <span class="cline-any cline-yes">1x</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-yes">2x</span>
732
743
  <span class="cline-any cline-yes">2x</span>
733
744
  <span class="cline-any cline-yes">2x</span>
734
745
  <span class="cline-any cline-yes">2x</span>
735
- <span class="cline-any cline-yes">1x</span>
736
746
  <span class="cline-any cline-no">&nbsp;</span>
737
747
  <span class="cline-any cline-no">&nbsp;</span>
738
748
  <span class="cline-any cline-no">&nbsp;</span>
@@ -782,12 +792,12 @@
782
792
  <span class="cline-any cline-no">&nbsp;</span>
783
793
  <span class="cline-any cline-no">&nbsp;</span>
784
794
  <span class="cline-any cline-no">&nbsp;</span>
785
- <span class="cline-any cline-yes">1x</span>
795
+ <span class="cline-any cline-no">&nbsp;</span>
786
796
  <span class="cline-any cline-yes">2x</span>
787
797
  <span class="cline-any cline-yes">2x</span>
788
798
  <span class="cline-any cline-no">&nbsp;</span>
789
799
  <span class="cline-any cline-no">&nbsp;</span>
790
- <span class="cline-any cline-yes">1x</span>
800
+ <span class="cline-any cline-no">&nbsp;</span>
791
801
  <span class="cline-any cline-neutral">&nbsp;</span>
792
802
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable no-console */
793
803
  /* eslint-disable no-control-regex */
@@ -808,6 +818,11 @@ export const logger = {
808
818
  log(str: string, level: LogLevels = 'info') {
809
819
  const { preprocessLog } = configFn()
810
820
  if (typeof preprocessLog === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >str = preprocessLog(str) || str</span>
821
+ &nbsp;
822
+ const paddingX = configFn()?.terminal?.theme?.paddingX
823
+ const padX = ' '.repeat(paddingX<span class="branch-0 cbranch-no" title="branch not covered" > || 0)</span>
824
+ str = padX + str.replace(/\n/g, '\n' + padX)
825
+ &nbsp;
811
826
  if (isset(console[level])) console[level](str)
812
827
  <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > else console.log(str)</span></span>
813
828
  &nbsp;
@@ -974,32 +989,32 @@ export const C = {
974
989
  <span class="cstat-no" title="statement not covered" > this.logClr('🐞 ' + title, configFn()?.terminal?.theme?.debugModeColor, 0)</span>
975
990
  <span class="cstat-no" title="statement not covered" > this.log(this.dimStrSplit(...string))</span>
976
991
  },
977
- <span class="fstat-no" title="function not covered" > /** allow to clear the last lines written to console */</span>
992
+ /** allow to clear the last lines written to console */
978
993
  <span class="fstat-no" title="function not covered" > clearLastLines(n: number = 2) {</span>
979
994
  <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; n; i++) {</span>
980
995
  <span class="cstat-no" title="statement not covered" > process?.stdout?.moveCursor?.(0, -1) // Move up one line</span>
981
996
  <span class="cstat-no" title="statement not covered" > process?.stdout?.clearLine?.(0)</span>
982
997
  <span class="cstat-no" title="statement not covered" > }</span>
983
- process?.stdout?.cursorTo?.(0) // Move cursor to beginning of the current line
984
- }
998
+ <span class="cstat-no" title="statement not covered" > process?.stdout?.cursorTo?.(0) // Move cursor to beginning of the current line</span>
999
+ <span class="cstat-no" title="statement not covered" > }</span>
985
1000
  }
986
1001
  &nbsp;
987
1002
  function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
988
1003
  const { isProd } = configFn()
989
1004
  &nbsp;
990
- if (errors.length === 1 &amp;&amp; typeof errors[0].log === 'function') return errors[0].log()
1005
+ if (errors.length === 1 &amp;&amp; typeof errors[0].log === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >return errors[0].log()</span>
991
1006
  &nbsp;
992
- let stackTrace = (new Error('')).stack ||<span class="branch-0 cbranch-no" title="branch not covered" > ''</span>
993
- const displayStack = errors[0] === false ? errors.shift() : true
1007
+ let stackTrace = (new Error('')).stack<span class="branch-0 cbranch-no" title="branch not covered" > || ''</span>
1008
+ const displayStack = errors[0] === false <span class="branch-0 cbranch-no" title="branch not covered" >? errors.shift() </span>: true
994
1009
  const symbol = level === 'error' <span class="branch-0 cbranch-no" title="branch not covered" >? '✘ ' </span>: '⚠ '
995
- if (errors.length &gt; 1 &amp;&amp; !isset(errors[0])) errors.shift()
1010
+ if (errors.length &gt; 1<span class="branch-0 cbranch-no" title="branch not covered" > &amp;&amp; !isset(errors[0]))</span> <span class="branch-0 cbranch-no" title="branch not covered" >errors.shift()</span>
996
1011
  &nbsp;
997
1012
  const getStringFromErr = (err, i) =&gt; {
998
- if (!isset(err)) return ''
1013
+ if (!isset(err)) <span class="branch-0 cbranch-no" title="branch not covered" >return ''</span>
999
1014
  else if (typeof err === 'string') {
1000
1015
  if (i === 0) return C.rgb(...color) + symbol + err + C.reset
1001
- else return err.split('\n').map(val =&gt; C.dim(val)).join('\n')
1002
- } else if (err instanceof Error) {
1016
+ <span class="cstat-no" title="statement not covered" ><span class="branch-0 cbranch-no" title="branch not covered" > else return err.split('\n').map(val =&gt; C.dim(val)).join('\n')</span></span>
1017
+ }<span class="branch-0 cbranch-no" title="branch not covered" > else if (err instanceof Error) {</span>
1003
1018
  <span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyInstanceOfError(err, level, color)</span>
1004
1019
  <span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
1005
1020
  <span class="cstat-no" title="statement not covered" > return str</span>
@@ -1010,25 +1025,25 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1010
1025
  <span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
1011
1026
  <span class="cstat-no" title="statement not covered" > msg += str</span>
1012
1027
  <span class="cstat-no" title="statement not covered" > return msg</span>
1013
- } else return ''
1028
+ <span class="cstat-no" title="statement not covered" > } else return ''</span>
1014
1029
  }
1015
1030
  &nbsp;
1016
1031
  if (errors.length &amp;&amp; errors[0]) {
1017
1032
  const messages = errors.map((e, i) =&gt; {
1018
- if (typeof e?.log === 'function') {
1033
+ if (typeof e?.log === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1019
1034
  <span class="cstat-no" title="statement not covered" > e.log()</span>
1020
- return ''
1035
+ <span class="cstat-no" title="statement not covered" > return ''</span>
1021
1036
  } else return getStringFromErr(e, i)
1022
1037
  })
1023
1038
  // Stack
1024
1039
  if (displayStack) {
1025
- messages.push(isProd ? stackTrace : cleanStackTrace(stackTrace) + '\n')
1040
+ messages.push(isProd <span class="branch-0 cbranch-no" title="branch not covered" >? stackTrace </span>: cleanStackTrace(stackTrace) + '\n')
1026
1041
  }
1027
1042
  logger.log(messages.join(''), level)
1028
1043
  }
1029
1044
  }
1030
1045
  &nbsp;
1031
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="fstat-no" title="function not covered" >function stringifyInstanceOfError(err, type = 'error', color: Color = [255, 0, 0], level = 0) { // level = keep track of recursions</span></span></span>
1046
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function stringifyInstanceOfError(err, type = 'error', color: Color = [255, 0, 0], level = 0) { // level = keep track of recursions</span></span>
1032
1047
  <span class="cstat-no" title="statement not covered" > if (level &gt; 5) return { str: '' }</span>
1033
1048
  <span class="cstat-no" title="statement not covered" > let str = ''</span>
1034
1049
  <span class="cstat-no" title="statement not covered" > let stackTrace</span>
@@ -1044,9 +1059,9 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1044
1059
  <span class="cstat-no" title="statement not covered" > str += str2</span>
1045
1060
  <span class="cstat-no" title="statement not covered" > }</span>
1046
1061
  <span class="cstat-no" title="statement not covered" > return { str, stackTrace }</span>
1047
- }
1062
+ <span class="cstat-no" title="statement not covered" >}</span>
1048
1063
  &nbsp;
1049
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="fstat-no" title="function not covered" >function stringifyExtraInfos(extraInfoOriginal, type, color, level = 0) {</span></span></span>
1064
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function stringifyExtraInfos(extraInfoOriginal, type, color, level = 0) {</span></span>
1050
1065
  <span class="cstat-no" title="statement not covered" > let stackTrace</span>
1051
1066
  <span class="cstat-no" title="statement not covered" > const originalError = [C.dim(`ORIGINAL ERROR ${'-'.repeat(39)}\n`)]</span>
1052
1067
  <span class="cstat-no" title="statement not covered" > if (extraInfoOriginal instanceof Error) { // case where error is passed directly to extraInfos</span>
@@ -1077,25 +1092,25 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1077
1092
  <span class="cstat-no" title="statement not covered" > stackTrace</span>
1078
1093
  <span class="cstat-no" title="statement not covered" > }</span>
1079
1094
  <span class="cstat-no" title="statement not covered" > }</span>
1080
- }
1095
+ <span class="cstat-no" title="statement not covered" >}</span>
1081
1096
  &nbsp;
1082
1097
  /**
1083
1098
  * Call this at each steps of your progress and change the step value
1084
1099
  * @param {Number} step Number of "char" to output
1085
1100
  * @param {String} char Default: '.'
1086
1101
  * @param {String} msg String before char. Final output will be `${str}${char.repeat(step)}`
1087
- <span class="fstat-no" title="function not covered" > */</span>
1102
+ */
1088
1103
  <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function cliProgressBar(step: number, char = '.', msg = `\x1b[2mⓘ Waiting response`) {</span></span>
1089
1104
  <span class="cstat-no" title="statement not covered" > if (typeof process?.stdout?.clearLine === 'function') {</span>
1090
1105
  <span class="cstat-no" title="statement not covered" > process.stdout.clearLine(0)</span>
1091
1106
  <span class="cstat-no" title="statement not covered" > process.stdout.cursorTo(0)</span>
1092
1107
  <span class="cstat-no" title="statement not covered" > process.stdout.write(`${msg}${char.repeat(step)}\x1b[0m`) // \x1b[0m == reset color</span>
1093
1108
  <span class="cstat-no" title="statement not covered" > }</span>
1094
- }
1109
+ <span class="cstat-no" title="statement not covered" >}</span>
1095
1110
  &nbsp;
1096
1111
  type loadingSpinnerTypes = 'arrow' | 'dots'
1097
1112
  &nbsp;
1098
- <span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >/** This allow an intuitive inline loading spinner with a check mark when loading as finished or a red cross for errors */</span></span>
1113
+ /** This allow an intuitive inline loading spinner with a check mark when loading as finished or a red cross for errors */
1099
1114
  <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >export class cliLoadingSpinner {</span></span></span>
1100
1115
  <span class="cstat-no" title="statement not covered" > /** Please use it like spinner.start('myStuff') then spinner.end()</span>
1101
1116
  <span class="cstat-no" title="statement not covered" > * @param {String} type in: ['arrow', 'dots']</span>
@@ -1145,12 +1160,12 @@ type loadingSpinnerTypes = 'arrow' | 'dots'
1145
1160
  <span class="cstat-no" title="statement not covered" > error() {</span>
1146
1161
  <span class="cstat-no" title="statement not covered" > return this.end(true)</span>
1147
1162
  <span class="cstat-no" title="statement not covered" > }</span>
1148
- }
1163
+ <span class="cstat-no" title="statement not covered" >}</span>
1149
1164
  &nbsp;
1150
1165
  &nbsp;
1151
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="fstat-no" title="function not covered" >export function dim(str = '') {</span></span></span>
1166
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function dim(str = '') {</span></span>
1152
1167
  <span class="cstat-no" title="statement not covered" > return configFn()?.terminal?.noColor ? str : `\x1b[2m${str.toString().split('\n').join('\x1b[0m\n\x1b[2m')}\x1b[0m`</span>
1153
- }
1168
+ <span class="cstat-no" title="statement not covered" >}</span>
1154
1169
  &nbsp;
1155
1170
  &nbsp;</pre></td></tr></table></pre>
1156
1171
 
@@ -1159,7 +1174,7 @@ type loadingSpinnerTypes = 'arrow' | 'dots'
1159
1174
  <div class='footer quiet pad2 space-top1 center small'>
1160
1175
  Code coverage generated by
1161
1176
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1162
- at 2025-03-13T18:42:56.377Z
1177
+ at 2025-03-16T15:15:26.592Z
1163
1178
  </div>
1164
1179
  <script src="prettify.js"></script>
1165
1180
  <script>