topkat-utils 1.2.117 → 1.3.4

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 +523 -427
  3. package/coverage/coverage-final.json +10 -10
  4. package/coverage/lcov-report/clean-stack-trace.ts.html +13 -10
  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 +56 -56
  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 +215 -215
  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 +626 -607
  22. package/dist/src/clean-stack-trace.js +1 -0
  23. package/dist/src/clean-stack-trace.js.map +1 -1
  24. package/dist/src/error-utils.js +1 -1
  25. package/dist/src/error-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/clean-stack-trace.ts +1 -0
  45. package/src/error-utils.ts +1 -1
  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
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">56.94% </span>
26
+ <span class="strong">40.87% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>209/367</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">72.22% </span>
33
+ <span class="strong">27.27% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>26/36</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">11.84% </span>
40
+ <span class="strong">12.5% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>9/76</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">56.94% </span>
47
+ <span class="strong">40.87% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>209/367</span>
49
+ <span class='fraction'>150/367</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line medium'></div>
64
+ <div class='status-line low'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -451,20 +451,22 @@
451
451
  <span class="cline-any cline-yes">2x</span>
452
452
  <span class="cline-any cline-yes">2x</span>
453
453
  <span class="cline-any cline-yes">2x</span>
454
- <span class="cline-any cline-yes">1x</span>
455
454
  <span class="cline-any cline-yes">2x</span>
456
455
  <span class="cline-any cline-yes">2x</span>
457
456
  <span class="cline-any cline-yes">2x</span>
458
457
  <span class="cline-any cline-yes">2x</span>
459
- <span class="cline-any cline-yes">1x</span>
458
+ <span class="cline-any cline-yes">2x</span>
459
+ <span class="cline-any cline-no">&nbsp;</span>
460
+ <span class="cline-any cline-yes">2x</span>
461
+ <span class="cline-any cline-yes">2x</span>
462
+ <span class="cline-any cline-yes">2x</span>
460
463
  <span class="cline-any cline-yes">2x</span>
461
464
  <span class="cline-any cline-yes">2x</span>
462
465
  <span class="cline-any cline-yes">2x</span>
463
- <span class="cline-any cline-yes">1x</span>
464
- <span class="cline-any cline-yes">1x</span>
465
- <span class="cline-any cline-yes">1x</span>
466
- <span class="cline-any cline-yes">1x</span>
467
- <span class="cline-any cline-yes">1x</span>
466
+ <span class="cline-any cline-yes">2x</span>
467
+ <span class="cline-any cline-yes">2x</span>
468
+ <span class="cline-any cline-no">&nbsp;</span>
469
+ <span class="cline-any cline-no">&nbsp;</span>
468
470
  <span class="cline-any cline-no">&nbsp;</span>
469
471
  <span class="cline-any cline-no">&nbsp;</span>
470
472
  <span class="cline-any cline-no">&nbsp;</span>
@@ -485,15 +487,19 @@
485
487
  <span class="cline-any cline-no">&nbsp;</span>
486
488
  <span class="cline-any cline-no">&nbsp;</span>
487
489
  <span class="cline-any cline-no">&nbsp;</span>
488
- <span class="cline-any cline-yes">1x</span>
489
- <span class="cline-any cline-yes">1x</span>
490
490
  <span class="cline-any cline-no">&nbsp;</span>
491
491
  <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-yes">1x</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-yes">2x</span>
494
+ <span class="cline-any cline-yes">2x</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-yes">2x</span>
498
+ <span class="cline-any cline-yes">2x</span>
499
+ <span class="cline-any cline-yes">2x</span>
500
+ <span class="cline-any cline-yes">2x</span>
493
501
  <span class="cline-any cline-yes">2x</span>
494
502
  <span class="cline-any cline-yes">2x</span>
495
- <span class="cline-any cline-yes">1x</span>
496
- <span class="cline-any cline-yes">1x</span>
497
503
  <span class="cline-any cline-yes">2x</span>
498
504
  <span class="cline-any cline-yes">2x</span>
499
505
  <span class="cline-any cline-yes">2x</span>
@@ -510,29 +516,25 @@
510
516
  <span class="cline-any cline-yes">2x</span>
511
517
  <span class="cline-any cline-yes">2x</span>
512
518
  <span class="cline-any cline-yes">2x</span>
519
+ <span class="cline-any cline-no">&nbsp;</span>
520
+ <span class="cline-any cline-no">&nbsp;</span>
521
+ <span class="cline-any cline-yes">2x</span>
513
522
  <span class="cline-any cline-yes">2x</span>
514
- <span class="cline-any cline-yes">1x</span>
515
- <span class="cline-any cline-yes">1x</span>
516
523
  <span class="cline-any cline-yes">2x</span>
517
524
  <span class="cline-any cline-yes">2x</span>
518
525
  <span class="cline-any cline-yes">2x</span>
519
- <span class="cline-any cline-yes">1x</span>
520
- <span class="cline-any cline-yes">1x</span>
521
526
  <span class="cline-any cline-yes">2x</span>
522
527
  <span class="cline-any cline-yes">2x</span>
523
528
  <span class="cline-any cline-yes">2x</span>
524
- <span class="cline-any cline-yes">1x</span>
525
- <span class="cline-any cline-yes">1x</span>
529
+ <span class="cline-any cline-no">&nbsp;</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
526
531
  <span class="cline-any cline-yes">2x</span>
527
532
  <span class="cline-any cline-yes">2x</span>
528
533
  <span class="cline-any cline-yes">2x</span>
529
- <span class="cline-any cline-yes">1x</span>
530
- <span class="cline-any cline-yes">1x</span>
531
- <span class="cline-any cline-yes">1x</span>
532
- <span class="cline-any cline-yes">1x</span>
533
- <span class="cline-any cline-yes">1x</span>
534
- <span class="cline-any cline-yes">1x</span>
535
- <span class="cline-any cline-yes">1x</span>
534
+ <span class="cline-any cline-yes">2x</span>
535
+ <span class="cline-any cline-yes">2x</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-no">&nbsp;</span>
536
538
  <span class="cline-any cline-no">&nbsp;</span>
537
539
  <span class="cline-any cline-no">&nbsp;</span>
538
540
  <span class="cline-any cline-no">&nbsp;</span>
@@ -540,68 +542,69 @@
540
542
  <span class="cline-any cline-no">&nbsp;</span>
541
543
  <span class="cline-any cline-no">&nbsp;</span>
542
544
  <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-yes">1x</span>
544
- <span class="cline-any cline-yes">1x</span>
545
- <span class="cline-any cline-yes">1x</span>
546
545
  <span class="cline-any cline-no">&nbsp;</span>
547
- <span class="cline-any cline-yes">1x</span>
546
+ <span class="cline-any cline-no">&nbsp;</span>
547
+ <span class="cline-any cline-no">&nbsp;</span>
548
+ <span class="cline-any cline-yes">2x</span>
548
549
  <span class="cline-any cline-yes">2x</span>
549
- <span class="cline-any cline-yes">1x</span>
550
- <span class="cline-any cline-yes">1x</span>
550
+ <span class="cline-any cline-yes">2x</span>
551
+ <span class="cline-any cline-no">&nbsp;</span>
552
+ <span class="cline-any cline-yes">2x</span>
553
+ <span class="cline-any cline-yes">2x</span>
554
+ <span class="cline-any cline-no">&nbsp;</span>
555
+ <span class="cline-any cline-no">&nbsp;</span>
551
556
  <span class="cline-any cline-no">&nbsp;</span>
552
- <span class="cline-any cline-yes">1x</span>
557
+ <span class="cline-any cline-no">&nbsp;</span>
558
+ <span class="cline-any cline-yes">2x</span>
553
559
  <span class="cline-any cline-yes">2x</span>
554
- <span class="cline-any cline-yes">1x</span>
555
560
  <span class="cline-any cline-no">&nbsp;</span>
556
561
  <span class="cline-any cline-no">&nbsp;</span>
557
562
  <span class="cline-any cline-no">&nbsp;</span>
558
- <span class="cline-any cline-yes">1x</span>
559
- <span class="cline-any cline-yes">1x</span>
560
- <span class="cline-any cline-yes">1x</span>
561
- <span class="cline-any cline-yes">1x</span>
562
563
  <span class="cline-any cline-no">&nbsp;</span>
563
564
  <span class="cline-any cline-no">&nbsp;</span>
565
+ <span class="cline-any cline-yes">2x</span>
566
+ <span class="cline-any cline-yes">2x</span>
567
+ <span class="cline-any cline-no">&nbsp;</span>
564
568
  <span class="cline-any cline-no">&nbsp;</span>
565
- <span class="cline-any cline-yes">1x</span>
569
+ <span class="cline-any cline-no">&nbsp;</span>
570
+ <span class="cline-any cline-no">&nbsp;</span>
571
+ <span class="cline-any cline-yes">2x</span>
572
+ <span class="cline-any cline-yes">2x</span>
566
573
  <span class="cline-any cline-yes">2x</span>
567
- <span class="cline-any cline-yes">1x</span>
568
- <span class="cline-any cline-yes">1x</span>
569
- <span class="cline-any cline-yes">1x</span>
570
- <span class="cline-any cline-yes">1x</span>
571
574
  <span class="cline-any cline-yes">2x</span>
572
575
  <span class="cline-any cline-yes">2x</span>
573
576
  <span class="cline-any cline-yes">2x</span>
574
577
  <span class="cline-any cline-yes">2x</span>
575
578
  <span class="cline-any cline-yes">2x</span>
576
- <span class="cline-any cline-yes">1x</span>
577
- <span class="cline-any cline-yes">1x</span>
578
- <span class="cline-any cline-yes">1x</span>
579
579
  <span class="cline-any cline-yes">2x</span>
580
580
  <span class="cline-any cline-yes">2x</span>
581
581
  <span class="cline-any cline-no">&nbsp;</span>
582
582
  <span class="cline-any cline-no">&nbsp;</span>
583
583
  <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-yes">1x</span>
585
584
  <span class="cline-any cline-yes">2x</span>
586
- <span class="cline-any cline-yes">1x</span>
587
- <span class="cline-any cline-yes">1x</span>
588
- <span class="cline-any cline-yes">1x</span>
585
+ <span class="cline-any cline-yes">2x</span>
586
+ <span class="cline-any cline-no">&nbsp;</span>
587
+ <span class="cline-any cline-no">&nbsp;</span>
588
+ <span class="cline-any cline-no">&nbsp;</span>
589
+ <span class="cline-any cline-no">&nbsp;</span>
590
+ <span class="cline-any cline-yes">2x</span>
591
+ <span class="cline-any cline-yes">2x</span>
592
+ <span class="cline-any cline-yes">2x</span>
593
+ <span class="cline-any cline-yes">2x</span>
589
594
  <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-yes">1x</span>
591
- <span class="cline-any cline-yes">1x</span>
592
- <span class="cline-any cline-yes">1x</span>
593
- <span class="cline-any cline-yes">1x</span>
594
595
  <span class="cline-any cline-no">&nbsp;</span>
595
596
  <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-yes">1x</span>
597
- <span class="cline-any cline-yes">1x</span>
598
- <span class="cline-any cline-yes">1x</span>
599
- <span class="cline-any cline-yes">1x</span>
600
597
  <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-yes">1x</span>
602
- <span class="cline-any cline-yes">1x</span>
603
- <span class="cline-any cline-yes">1x</span>
604
- <span class="cline-any cline-yes">1x</span>
598
+ <span class="cline-any cline-no">&nbsp;</span>
599
+ <span class="cline-any cline-no">&nbsp;</span>
600
+ <span class="cline-any cline-no">&nbsp;</span>
601
+ <span class="cline-any cline-yes">2x</span>
602
+ <span class="cline-any cline-yes">2x</span>
603
+ <span class="cline-any cline-yes">2x</span>
604
+ <span class="cline-any cline-yes">2x</span>
605
+ <span class="cline-any cline-no">&nbsp;</span>
606
+ <span class="cline-any cline-no">&nbsp;</span>
607
+ <span class="cline-any cline-no">&nbsp;</span>
605
608
  <span class="cline-any cline-no">&nbsp;</span>
606
609
  <span class="cline-any cline-no">&nbsp;</span>
607
610
  <span class="cline-any cline-no">&nbsp;</span>
@@ -611,27 +614,23 @@
611
614
  <span class="cline-any cline-no">&nbsp;</span>
612
615
  <span class="cline-any cline-no">&nbsp;</span>
613
616
  <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-yes">1x</span>
615
- <span class="cline-any cline-yes">1x</span>
616
617
  <span class="cline-any cline-no">&nbsp;</span>
617
618
  <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-yes">1x</span>
619
619
  <span class="cline-any cline-yes">2x</span>
620
620
  <span class="cline-any cline-yes">2x</span>
621
621
  <span class="cline-any cline-no">&nbsp;</span>
622
622
  <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-yes">1x</span>
624
- <span class="cline-any cline-yes">1x</span>
625
- <span class="cline-any cline-yes">1x</span>
626
- <span class="cline-any cline-yes">1x</span>
627
- <span class="cline-any cline-yes">1x</span>
628
- <span class="cline-any cline-yes">1x</span>
629
- <span class="cline-any cline-yes">1x</span>
630
- <span class="cline-any cline-yes">1x</span>
631
- <span class="cline-any cline-yes">1x</span>
632
623
  <span class="cline-any cline-yes">2x</span>
633
624
  <span class="cline-any cline-yes">2x</span>
634
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>
628
+ <span class="cline-any cline-no">&nbsp;</span>
629
+ <span class="cline-any cline-no">&nbsp;</span>
630
+ <span class="cline-any cline-no">&nbsp;</span>
631
+ <span class="cline-any cline-no">&nbsp;</span>
632
+ <span class="cline-any cline-yes">2x</span>
633
+ <span class="cline-any cline-yes">2x</span>
635
634
  <span class="cline-any cline-yes">2x</span>
636
635
  <span class="cline-any cline-yes">2x</span>
637
636
  <span class="cline-any cline-yes">2x</span>
@@ -640,41 +639,45 @@
640
639
  <span class="cline-any cline-yes">2x</span>
641
640
  <span class="cline-any cline-yes">2x</span>
642
641
  <span class="cline-any cline-yes">2x</span>
643
- <span class="cline-any cline-yes">1x</span>
644
642
  <span class="cline-any cline-yes">2x</span>
645
- <span class="cline-any cline-yes">1x</span>
646
- <span class="cline-any cline-yes">1x</span>
647
- <span class="cline-any cline-yes">1x</span>
643
+ <span class="cline-any cline-yes">2x</span>
644
+ <span class="cline-any cline-yes">2x</span>
645
+ <span class="cline-any cline-yes">2x</span>
646
+ <span class="cline-any cline-yes">2x</span>
647
+ <span class="cline-any cline-yes">2x</span>
648
+ <span class="cline-any cline-no">&nbsp;</span>
649
+ <span class="cline-any cline-yes">2x</span>
650
+ <span class="cline-any cline-no">&nbsp;</span>
651
+ <span class="cline-any cline-no">&nbsp;</span>
648
652
  <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-yes">1x</span>
650
653
  <span class="cline-any cline-no">&nbsp;</span>
651
654
  <span class="cline-any cline-no">&nbsp;</span>
652
655
  <span class="cline-any cline-no">&nbsp;</span>
653
656
  <span class="cline-any cline-no">&nbsp;</span>
654
657
  <span class="cline-any cline-no">&nbsp;</span>
655
658
  <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-yes">1x</span>
657
- <span class="cline-any cline-yes">1x</span>
658
- <span class="cline-any cline-yes">1x</span>
659
- <span class="cline-any cline-yes">1x</span>
660
- <span class="cline-any cline-yes">1x</span>
661
- <span class="cline-any cline-yes">1x</span>
662
- <span class="cline-any cline-yes">1x</span>
659
+ <span class="cline-any cline-no">&nbsp;</span>
660
+ <span class="cline-any cline-no">&nbsp;</span>
661
+ <span class="cline-any cline-yes">2x</span>
662
+ <span class="cline-any cline-yes">2x</span>
663
+ <span class="cline-any cline-yes">2x</span>
664
+ <span class="cline-any cline-yes">2x</span>
665
+ <span class="cline-any cline-yes">2x</span>
666
+ <span class="cline-any cline-no">&nbsp;</span>
667
+ <span class="cline-any cline-no">&nbsp;</span>
663
668
  <span class="cline-any cline-yes">2x</span>
664
669
  <span class="cline-any cline-yes">2x</span>
665
670
  <span class="cline-any cline-yes">2x</span>
666
- <span class="cline-any cline-yes">1x</span>
667
- <span class="cline-any cline-yes">1x</span>
668
671
  <span class="cline-any cline-yes">2x</span>
669
672
  <span class="cline-any cline-yes">2x</span>
670
673
  <span class="cline-any cline-yes">2x</span>
671
674
  <span class="cline-any cline-yes">2x</span>
672
675
  <span class="cline-any cline-yes">2x</span>
673
- <span class="cline-any cline-yes">1x</span>
674
- <span class="cline-any cline-yes">1x</span>
675
- <span class="cline-any cline-yes">1x</span>
676
- <span class="cline-any cline-yes">1x</span>
677
- <span class="cline-any cline-yes">1x</span>
676
+ <span class="cline-any cline-yes">2x</span>
677
+ <span class="cline-any cline-yes">2x</span>
678
+ <span class="cline-any cline-no">&nbsp;</span>
679
+ <span class="cline-any cline-no">&nbsp;</span>
680
+ <span class="cline-any cline-no">&nbsp;</span>
678
681
  <span class="cline-any cline-no">&nbsp;</span>
679
682
  <span class="cline-any cline-no">&nbsp;</span>
680
683
  <span class="cline-any cline-no">&nbsp;</span>
@@ -687,12 +690,14 @@
687
690
  <span class="cline-any cline-no">&nbsp;</span>
688
691
  <span class="cline-any cline-no">&nbsp;</span>
689
692
  <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-yes">1x</span>
693
+ <span class="cline-any cline-no">&nbsp;</span>
694
+ <span class="cline-any cline-no">&nbsp;</span>
695
+ <span class="cline-any cline-yes">2x</span>
696
+ <span class="cline-any cline-no">&nbsp;</span>
691
697
  <span class="cline-any cline-no">&nbsp;</span>
692
698
  <span class="cline-any cline-no">&nbsp;</span>
693
699
  <span class="cline-any cline-no">&nbsp;</span>
694
700
  <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-yes">1x</span>
696
701
  <span class="cline-any cline-no">&nbsp;</span>
697
702
  <span class="cline-any cline-no">&nbsp;</span>
698
703
  <span class="cline-any cline-no">&nbsp;</span>
@@ -720,29 +725,26 @@
720
725
  <span class="cline-any cline-no">&nbsp;</span>
721
726
  <span class="cline-any cline-no">&nbsp;</span>
722
727
  <span class="cline-any cline-no">&nbsp;</span>
723
- <span class="cline-any cline-yes">1x</span>
724
- <span class="cline-any cline-yes">1x</span>
725
- <span class="cline-any cline-yes">1x</span>
726
- <span class="cline-any cline-yes">1x</span>
727
- <span class="cline-any cline-yes">1x</span>
728
728
  <span class="cline-any cline-yes">2x</span>
729
729
  <span class="cline-any cline-yes">2x</span>
730
- <span class="cline-any cline-yes">1x</span>
731
- <span class="cline-any cline-yes">1x</span>
732
- <span class="cline-any cline-yes">1x</span>
733
- <span class="cline-any cline-yes">1x</span>
734
- <span class="cline-any cline-yes">1x</span>
730
+ <span class="cline-any cline-yes">2x</span>
731
+ <span class="cline-any cline-yes">2x</span>
732
+ <span class="cline-any cline-yes">2x</span>
733
+ <span class="cline-any cline-yes">2x</span>
734
+ <span class="cline-any cline-yes">2x</span>
735
735
  <span class="cline-any cline-no">&nbsp;</span>
736
736
  <span class="cline-any cline-no">&nbsp;</span>
737
- <span class="cline-any cline-yes">1x</span>
738
- <span class="cline-any cline-yes">1x</span>
739
- <span class="cline-any cline-yes">1x</span>
740
- <span class="cline-any cline-yes">1x</span>
741
737
  <span class="cline-any cline-no">&nbsp;</span>
742
- <span class="cline-any cline-yes">1x</span>
743
- <span class="cline-any cline-yes">1x</span>
744
- <span class="cline-any cline-yes">1x</span>
745
- <span class="cline-any cline-yes">1x</span>
738
+ <span class="cline-any cline-no">&nbsp;</span>
739
+ <span class="cline-any cline-no">&nbsp;</span>
740
+ <span class="cline-any cline-no">&nbsp;</span>
741
+ <span class="cline-any cline-no">&nbsp;</span>
742
+ <span class="cline-any cline-yes">2x</span>
743
+ <span class="cline-any cline-yes">2x</span>
744
+ <span class="cline-any cline-yes">2x</span>
745
+ <span class="cline-any cline-yes">2x</span>
746
+ <span class="cline-any cline-no">&nbsp;</span>
747
+ <span class="cline-any cline-no">&nbsp;</span>
746
748
  <span class="cline-any cline-no">&nbsp;</span>
747
749
  <span class="cline-any cline-no">&nbsp;</span>
748
750
  <span class="cline-any cline-no">&nbsp;</span>
@@ -788,16 +790,14 @@
788
790
  <span class="cline-any cline-no">&nbsp;</span>
789
791
  <span class="cline-any cline-no">&nbsp;</span>
790
792
  <span class="cline-any cline-no">&nbsp;</span>
791
- <span class="cline-any cline-yes">1x</span>
792
- <span class="cline-any cline-yes">1x</span>
793
793
  <span class="cline-any cline-no">&nbsp;</span>
794
794
  <span class="cline-any cline-no">&nbsp;</span>
795
795
  <span class="cline-any cline-no">&nbsp;</span>
796
796
  <span class="cline-any cline-yes">2x</span>
797
797
  <span class="cline-any cline-yes">2x</span>
798
- <span class="cline-any cline-yes">1x</span>
799
- <span class="cline-any cline-yes">1x</span>
800
- <span class="cline-any cline-yes">1x</span>
798
+ <span class="cline-any cline-no">&nbsp;</span>
799
+ <span class="cline-any cline-no">&nbsp;</span>
800
+ <span class="cline-any cline-no">&nbsp;</span>
801
801
  <span class="cline-any cline-neutral">&nbsp;</span>
802
802
  <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/* eslint-disable no-console */
803
803
  /* eslint-disable no-control-regex */
@@ -820,14 +820,14 @@ export const logger = {
820
820
  if (typeof preprocessLog === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >str = preprocessLog(str) || str</span>
821
821
  &nbsp;
822
822
  const paddingX = configFn()?.terminal?.theme?.paddingX
823
- const padX = ' '.repeat(paddingX || 0)
823
+ const padX = ' '.repeat(paddingX<span class="branch-0 cbranch-no" title="branch not covered" > || 0)</span>
824
824
  str = padX + str.replace(/\n/g, '\n' + padX)
825
825
  &nbsp;
826
826
  if (isset(console[level])) console[level](str)
827
- <span class="branch-0 cbranch-no" title="branch not covered" > else console.log(str)</span>
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>
828
828
  &nbsp;
829
829
  logger.raw.push(str + `\n`)
830
- <span class="fstat-no" title="function not covered" > logger.raw = logger.raw.slice(logger.raw.length - configFn()?.nbOfLogsToKeep, logger?.raw?.length)</span>
830
+ logger.raw = logger.raw.slice(logger.raw.length - configFn()?.nbOfLogsToKeep, logger?.raw?.length)
831
831
  },
832
832
  /**
833
833
  * @param {String[]|String} inputLogs
@@ -853,15 +853,15 @@ export const logger = {
853
853
  <span class="cstat-no" title="statement not covered" > if (content) {</span>
854
854
  <span class="cstat-no" title="statement not covered" > const style = !isset(R) ? isset(code) ? code2css[code] : undefined : `color:rgb(${R},${G},${B})`</span>
855
855
  <span class="cstat-no" title="statement not covered" > htmlLogs += isset(style) ? `&lt;span style='${style}'&gt;${content.replace(/\n/g, '&lt;br&gt;')}&lt;/span&gt;` : content.replace(/\n/g, '&lt;br&gt;')</span>
856
- }
857
- <span class="fstat-no" title="function not covered" > } else htmlLogs += bit.replace(/\n/g, '&lt;br&gt;')</span>
856
+ <span class="cstat-no" title="statement not covered" > }</span>
857
+ <span class="cstat-no" title="statement not covered" > } else htmlLogs += bit.replace(/\n/g, '&lt;br&gt;')</span>
858
858
  <span class="cstat-no" title="statement not covered" > }</span>
859
859
  <span class="cstat-no" title="statement not covered" > })</span>
860
- return `&lt;div style='color:#ccc'&gt;${htmlLogs}&lt;br&gt;&lt;/div&gt;`
860
+ <span class="cstat-no" title="statement not covered" > return `&lt;div style='color:#ccc'&gt;${htmlLogs}&lt;br&gt;&lt;/div&gt;`</span>
861
861
  },
862
862
  <span class="fstat-no" title="function not covered" > toText(inputLogs = [...logger.raw]) {</span>
863
- const str = Array.isArray(inputLogs) ? inputLogs.join('\n') : inputLogs
864
- return str.replace(/\x1b\[.*?m/g, '')
863
+ <span class="cstat-no" title="statement not covered" > const str = Array.isArray(inputLogs) ? inputLogs.join('\n') : inputLogs</span>
864
+ <span class="cstat-no" title="statement not covered" > return str.replace(/\x1b\[.*?m/g, '')</span>
865
865
  },
866
866
  raw: [] as string[],
867
867
  json: [] as string[],
@@ -870,32 +870,32 @@ export const logger = {
870
870
  /**
871
871
  // console colored output
872
872
  // * console.log(C.green(C.dim('Hey bro !')))
873
- // * or C<span class="fstat-no" title="function not covered" >.log() // will use paddi</span>ng and color defined by themes
874
- // * or C.l<span class="fstat-no" title="function not covered" >ine('MY TITLE', 53)</span>
875
- // * or C<span class="fstat-no" title="function not covered" >.gradientize(myLongString</span>)
873
+ // * or C.log() // will use padding and color defined by themes
874
+ // * or C.line('MY TITLE', 53)
875
+ // * or C.gradientize(myLongString)
876
876
  */
877
- export con<span class="fstat-no" title="function not covered" >st C = {</span>
878
- dim: <span class="fstat-no" title="function not covered" >str <span class="fstat-no" title="function not covered" >=&gt; C.output(2, str),</span> // o</span>pacity 0.5
879
- green:<span class="fstat-no" title="function not covered" > <span class="fstat-no" title="function not covered" >str =&gt; C.output(32, str)</span>,</span>
880
- red: <span class="fstat-no" title="function not covered" >s<span class="fstat-no" title="function not covered" >tr =&gt; C.output(31, str),</span></span>
881
- yellow: <span class="fstat-no" title="function not covered" >s<span class="fstat-no" title="function not covered" >tr =&gt; C.output(33, str),</span></span>
877
+ export const C = {
878
+ dim: <span class="fstat-no" title="function not covered" >str =&gt; C.output(2, str),</span> // opacity 0.5
879
+ green: <span class="fstat-no" title="function not covered" >str =&gt; C.output(32, str),</span>
880
+ red: <span class="fstat-no" title="function not covered" >str =&gt; C.output(31, str),</span>
881
+ yellow: <span class="fstat-no" title="function not covered" >str =&gt; C.output(33, str),</span>
882
882
  grey: <span class="fstat-no" title="function not covered" >str =&gt; C.output(2, str),</span>
883
883
  magenta: <span class="fstat-no" title="function not covered" >str =&gt; C.output(35, str),</span>
884
884
  cyan: <span class="fstat-no" title="function not covered" >str =&gt; C.output(36, str),</span>
885
885
  blue: <span class="fstat-no" title="function not covered" >str =&gt; C.output(34, str),</span>
886
- primary:<span class="fstat-no" title="function not covered" > <span class="fstat-no" title="function not covered" >str =&gt; {</span></span>
887
- const primary: Color = configFn()?.terminal?.theme?.primary
888
- return C.rgb(...primary) + str + C.reset
886
+ primary: <span class="fstat-no" title="function not covered" >str =&gt; {</span>
887
+ <span class="cstat-no" title="statement not covered" > const primary: Color = configFn()?.terminal?.theme?.primary</span>
888
+ <span class="cstat-no" title="statement not covered" > return C.rgb(...primary) + str + C.reset</span>
889
889
  },
890
890
  reset: '\x1b[0m',
891
- <span class="fstat-no" title="function not covered" > output: <span class="fstat-no" title="function not covered" >(code, str = '') =&gt; configFn()?.terminal?.noColor ? str : `\x1b[${code}m${str}\x1b[0m`,</span></span>
891
+ output: <span class="fstat-no" title="function not covered" >(code, str = '') =&gt; configFn()?.terminal?.noColor ? str : `\x1b[${code}m${str}\x1b[0m`,</span>
892
892
  // true RGB colors B-*
893
893
  rgb: (r, g = 0, b = 0) =&gt; configFn()?.terminal?.noColor || !isset(r, g, b) <span class="branch-0 cbranch-no" title="branch not covered" >? '' </span>: `\x1b[38;2;${r};${g};${b}m`,
894
894
  bg: <span class="fstat-no" title="function not covered" >(r?, g?, b?) =&gt; configFn()?.terminal?.noColor || !isset(r, g, b) ? '' : `${'\x1b['}48;2;${r};${g};${b}m`,</span>
895
895
  /** Output a line of title */
896
896
  <span class="fstat-no" title="function not covered" > line(title = '', length = configFn()?.terminal?.theme?.pageWidth, clr = configFn()?.terminal?.theme?.primary, char = '=', paddingX = configFn()?.terminal?.theme?.paddingX) {</span>
897
- const padX = ' '.repeat(paddingX || 0)
898
- <span class="fstat-no" title="function not covered" > this.log('\u00A0\n' + padX + this.rgb(...clr) + (title + ' ').padEnd(length || 0, char) + this.reset + padX + '\u00A0\n')</span>
897
+ <span class="cstat-no" title="statement not covered" > const padX = ' '.repeat(paddingX || 0)</span>
898
+ <span class="cstat-no" title="statement not covered" > this.log('\u00A0\n' + padX + this.rgb(...clr) + (title + ' ').padEnd(length || 0, char) + this.reset + padX + '\u00A0\n')</span>
899
899
  },
900
900
  /** Eg: ['cell1', 'cell2', 'cell3'], [25, 15] will start cell2 at 25 and cell 3 at 25 + 15
901
901
  * @param {Array} limits default divide the viewport
@@ -908,52 +908,52 @@ export con<span class="fstat-no" title="function not covered" >st C = {</span>
908
908
  <span class="cstat-no" title="statement not covered" > }</span>
909
909
  <span class="cstat-no" title="statement not covered" > const str = strings.reduce((glob, str = '', i) =&gt; {</span>
910
910
  <span class="cstat-no" title="statement not covered" > const realCharLength = str.toString().replace(/\x1b\[.*?m/, '').length</span>
911
- const charLength = str.toString().length
912
- const realLimit = limits[i] + charLength - realCharLength
913
- <span class="fstat-no" title="function not covered" > return glob + str.toString().substring(0, realLimit || 999).padEnd(realLimit || 0, ' ')</span>
911
+ <span class="cstat-no" title="statement not covered" > const charLength = str.toString().length</span>
912
+ <span class="cstat-no" title="statement not covered" > const realLimit = limits[i] + charLength - realCharLength</span>
913
+ <span class="cstat-no" title="statement not covered" > return glob + str.toString().substring(0, realLimit || 999).padEnd(realLimit || 0, ' ')</span>
914
914
  <span class="cstat-no" title="statement not covered" > }, '')</span>
915
- this.logClr(str, clr, paddingX)
916
- <span class="fstat-no" title="function not covered" > },</span>
915
+ <span class="cstat-no" title="statement not covered" > this.logClr(str, clr, paddingX)</span>
916
+ },
917
917
  /** Console log alias */
918
918
  <span class="fstat-no" title="function not covered" > log(...stringsCtxMayBeFirstParam) {</span>
919
919
  <span class="cstat-no" title="statement not covered" > stringsCtxMayBeFirstParam.forEach(str =&gt; this.logClr(str, undefined, undefined))</span>
920
920
  },
921
921
  <span class="fstat-no" title="function not covered" > logClr(str, clr = configFn()?.terminal?.theme?.fontColor, paddingX = configFn()?.terminal?.theme?.paddingX) {</span>
922
- <span class="fstat-no" title="function not covered" > if (!isset(str)) return</span>
922
+ <span class="cstat-no" title="statement not covered" > if (!isset(str)) return</span>
923
923
  <span class="cstat-no" title="statement not covered" > const padX = ' '.repeat(paddingX || 0)</span>
924
924
  <span class="cstat-no" title="statement not covered" > str = padX + (typeof clr !== 'undefined' ? this.rgb(...clr) : '') + str.toString().replace(/\n/g, '\n' + padX + (typeof clr !== 'undefined' ? this.rgb(...clr) : ''))</span>
925
925
  <span class="cstat-no" title="statement not covered" > logger.log(str + this.reset, 'info')</span>
926
926
  },
927
927
  <span class="fstat-no" title="function not covered" > info(...str) {</span>
928
- str.forEach((s, i) =&gt; {
929
- <span class="fstat-no" title="function not covered" > if (i === 0) this.logClr('ⓘ ' + s, configFn()?.terminal?.theme?.primary)</span>
928
+ <span class="cstat-no" title="statement not covered" > str.forEach((s, i) =&gt; {</span>
929
+ <span class="cstat-no" title="statement not covered" > if (i === 0) this.logClr('ⓘ ' + s, configFn()?.terminal?.theme?.primary)</span>
930
930
  <span class="cstat-no" title="statement not covered" > else this.log(this.dimStrSplit(s))</span>
931
931
  <span class="cstat-no" title="statement not covered" > })</span>
932
932
  <span class="cstat-no" title="statement not covered" > this.log(' ')</span>
933
933
  },
934
934
  <span class="fstat-no" title="function not covered" > success(...str) {</span>
935
- str.forEach((s, i) =&gt; {
936
- <span class="fstat-no" title="function not covered" > if (i === 0) this.log(this.green('✓ ' + s))</span>
937
- else this.log(this.dimStrSplit(s))
938
- })
935
+ <span class="cstat-no" title="statement not covered" > str.forEach((s, i) =&gt; {</span>
936
+ <span class="cstat-no" title="statement not covered" > if (i === 0) this.log(this.green('✓ ' + s))</span>
937
+ <span class="cstat-no" title="statement not covered" > else this.log(this.dimStrSplit(s))</span>
938
+ <span class="cstat-no" title="statement not covered" > })</span>
939
939
  },
940
- /** First param<span class="fstat-no" title="function not covered" > **false** to avoid logging stack trace */</span>
941
- error: <span class="fstat-no" title="function not covered" >(...errors)<span class="fstat-no" title="function not covered" > =&gt; logErrPrivate('error', [255, 0, 0], ...errors),</span></span>
942
- /** First para<span class="fstat-no" title="function not covered" >m **false** to avoid logging stack trace */</span>
943
- <span class="fstat-no" title="function not covered" > warning: (...str) =&gt; logErrPrivate('warn', [255, 122, 0], ...str),</span>
940
+ /** First param **false** to avoid logging stack trace */
941
+ error: <span class="fstat-no" title="function not covered" >(...errors) =&gt; logErrPrivate('error', [255, 0, 0], ...errors),</span>
942
+ /** First param **false** to avoid logging stack trace */
943
+ warning: (...str) =&gt; logErrPrivate('warn', [255, 122, 0], ...str),
944
944
  customError: <span class="fstat-no" title="function not covered" >(color, ...str) =&gt; logErrPrivate('error', color, ...str),</span>
945
945
  customWarning: <span class="fstat-no" title="function not covered" >(color, ...str) =&gt; logErrPrivate('warn', color, ...str),</span>
946
946
  applicationError: <span class="fstat-no" title="function not covered" >(color, ...str) =&gt; logErrPrivate('warn', color, ...str),</span>
947
947
  warningLight: <span class="fstat-no" title="function not covered" >(_, ...str) =&gt; logErrPrivate('warn', [196, 120, 52], ...str),</span>
948
- <span class="fstat-no" title="function not covered" ><span class="fstat-no" title="function not covered" > dimStrSplit(...logs) {</span></span>
948
+ <span class="fstat-no" title="function not covered" > dimStrSplit(...logs) {</span>
949
949
  <span class="cstat-no" title="statement not covered" > const logsStr: string[] = []</span>
950
950
  <span class="cstat-no" title="statement not covered" > logs.filter(isset).forEach(log =&gt; log.toString().split('\n').forEach(line =&gt; line &amp;&amp; logsStr.push(this.dim(` ${line}`))))</span>
951
951
  <span class="cstat-no" title="statement not covered" > return logsStr.join('\n')</span>
952
952
  },
953
953
  <span class="fstat-no" title="function not covered" > notifShow() {</span>
954
- console.log('\n\u00A0')
955
- this.notifications.forEach(fn =&gt; fn())
956
- <span class="fstat-no" title="function not covered" > this.notifications = []</span>
954
+ <span class="cstat-no" title="statement not covered" > console.log('\n\u00A0')</span>
955
+ <span class="cstat-no" title="statement not covered" > this.notifications.forEach(fn =&gt; fn())</span>
956
+ <span class="cstat-no" title="statement not covered" > this.notifications = []</span>
957
957
  <span class="cstat-no" title="statement not covered" > console.log('\n\u00A0')</span>
958
958
  },
959
959
  /** Keep in memory the logs to show when needed with C.notifShow()
@@ -961,10 +961,10 @@ export con<span class="fstat-no" title="function not covered" >st C = {</span>
961
961
  <span class="fstat-no" title="function not covered" > notification(type, ...messages) {</span>
962
962
  <span class="cstat-no" title="statement not covered" > this.notifications.push(() =&gt; {</span>
963
963
  <span class="cstat-no" title="statement not covered" > if (isset(this[type])) {</span>
964
- this[type](...messages)
965
- } else {
966
- this.warning('Wrong param for C.notification')
967
- <span class="fstat-no" title="function not covered" > }</span>
964
+ <span class="cstat-no" title="statement not covered" > this[type](...messages)</span>
965
+ <span class="cstat-no" title="statement not covered" > } else {</span>
966
+ <span class="cstat-no" title="statement not covered" > this.warning('Wrong param for C.notification')</span>
967
+ <span class="cstat-no" title="statement not covered" > }</span>
968
968
  <span class="cstat-no" title="statement not covered" > })</span>
969
969
  },
970
970
  notifications: [] as any[], // fn array
@@ -979,24 +979,24 @@ export con<span class="fstat-no" title="function not covered" >st C = {</span>
979
979
  <span class="cstat-no" title="statement not covered" > const padX = ' '.repeat(paddingX || 0)</span>
980
980
  <span class="cstat-no" title="statement not covered" > const padLine = bg + padX + ' '.padEnd(largestLine, ' ') + padX + '\x1b[0m\n'</span>
981
981
  <span class="cstat-no" title="statement not covered" ></span>
982
- console.log(padLine.repeat(paddingY || 0) +
983
- <span class="fstat-no" title="function not covered" > lines.reduce((s, line, i) =&gt; {</span>
982
+ <span class="cstat-no" title="statement not covered" > console.log(padLine.repeat(paddingY || 0) +</span>
983
+ <span class="cstat-no" title="statement not covered" > lines.reduce((s, line, i) =&gt; {</span>
984
984
  <span class="cstat-no" title="statement not covered" > return s + bg + padX + this.rgb(...((rgb1 as Color).map((val, i2) =&gt; Math.round(val - i * rgbParts[i2]))) as Color) + line.padEnd(largestLine, ' ') + padX + '\x1b[0m\n'</span>
985
985
  <span class="cstat-no" title="statement not covered" > }, '') +</span>
986
- padLine.repeat(paddingY || 0))
986
+ <span class="cstat-no" title="statement not covered" > padLine.repeat(paddingY || 0))</span>
987
987
  },
988
- <span class="fstat-no" title="function not covered" ><span class="fstat-no" title="function not covered" > debugModeLog(title, ...string) {</span></span>
988
+ <span class="fstat-no" title="function not covered" > debugModeLog(title, ...string) {</span>
989
989
  <span class="cstat-no" title="statement not covered" > this.logClr('🐞 ' + title, configFn()?.terminal?.theme?.debugModeColor, 0)</span>
990
990
  <span class="cstat-no" title="statement not covered" > this.log(this.dimStrSplit(...string))</span>
991
991
  },
992
992
  /** allow to clear the last lines written to console */
993
993
  <span class="fstat-no" title="function not covered" > clearLastLines(n: number = 2) {</span>
994
- for (let i = 0; i &lt; n; i++) {
995
- process?.stdout?.moveCursor?.(0, -1) // Move up one line
996
- process?.stdout?.clearLine?.(0)
997
- }
998
- process?.stdout?.cursorTo?.(0) // Move cursor to beginning of the current line
999
- }
994
+ <span class="cstat-no" title="statement not covered" > for (let i = 0; i &lt; n; i++) {</span>
995
+ <span class="cstat-no" title="statement not covered" > process?.stdout?.moveCursor?.(0, -1) // Move up one line</span>
996
+ <span class="cstat-no" title="statement not covered" > process?.stdout?.clearLine?.(0)</span>
997
+ <span class="cstat-no" title="statement not covered" > }</span>
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>
1000
1000
  }
1001
1001
  &nbsp;
1002
1002
  function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
@@ -1004,41 +1004,41 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1004
1004
  &nbsp;
1005
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>
1006
1006
  &nbsp;
1007
- let stackTrace = (new Error('')).stack || ''
1007
+ let stackTrace = (new Error('')).stack<span class="branch-0 cbranch-no" title="branch not covered" > || ''</span>
1008
1008
  const displayStack = errors[0] === false <span class="branch-0 cbranch-no" title="branch not covered" >? errors.shift() </span>: true
1009
- const symbol = level === 'error' ? '✘ ' : '⚠ '
1010
- if (errors.length &gt; 1 &amp;&amp; !isset(errors[0])) errors.shift()
1009
+ const symbol = level === 'error' <span class="branch-0 cbranch-no" title="branch not covered" >? '✘ ' </span>: '⚠ '
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>
1011
1011
  &nbsp;
1012
1012
  const getStringFromErr = (err, i) =&gt; {
1013
1013
  if (!isset(err)) <span class="branch-0 cbranch-no" title="branch not covered" >return ''</span>
1014
1014
  else if (typeof err === 'string') {
1015
1015
  if (i === 0) return C.rgb(...color) + symbol + err + C.reset
1016
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
- } else if (err instanceof Error) {
1017
+ }<span class="branch-0 cbranch-no" title="branch not covered" > else if (err instanceof Error) {</span>
1018
1018
  <span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyInstanceOfError(err, level, color)</span>
1019
1019
  <span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
1020
1020
  <span class="cstat-no" title="statement not covered" > return str</span>
1021
1021
  <span class="cstat-no" title="statement not covered" > } else if (typeof err === 'object') {</span>
1022
1022
  <span class="cstat-no" title="statement not covered" > let msg = ''</span>
1023
1023
  <span class="cstat-no" title="statement not covered" > msg += removeCircularJSONstringify(err, 2).split('\n').map(val =&gt; C.dim(val)).join('\n') + '\n'</span>
1024
- const { str, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo || err, level, color)
1025
- if (stkTrc) stackTrace = stkTrc
1026
- msg += str
1027
- return msg
1028
- } else return ''
1024
+ <span class="cstat-no" title="statement not covered" > const { str, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo || err, level, color)</span>
1025
+ <span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
1026
+ <span class="cstat-no" title="statement not covered" > msg += str</span>
1027
+ <span class="cstat-no" title="statement not covered" > return msg</span>
1028
+ <span class="cstat-no" title="statement not covered" > } else return ''</span>
1029
1029
  }
1030
1030
  &nbsp;
1031
1031
  if (errors.length &amp;&amp; errors[0]) {
1032
1032
  const messages = errors.map((e, i) =&gt; {
1033
- if (typeof e?.log === 'function') {
1034
- e.log()
1035
- return ''
1033
+ if (typeof e?.log === 'function') <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
1034
+ <span class="cstat-no" title="statement not covered" > e.log()</span>
1035
+ <span class="cstat-no" title="statement not covered" > return ''</span>
1036
1036
  } else return getStringFromErr(e, i)
1037
1037
  })
1038
1038
  // Stack
1039
1039
  if (displayStack) {
1040
1040
  messages.push(isProd <span class="branch-0 cbranch-no" title="branch not covered" >? stackTrace </span>: cleanStackTrace(stackTrace) + '\n')
1041
- <span class="fstat-no" title="function not covered" > }</span>
1041
+ }
1042
1042
  logger.log(messages.join(''), level)
1043
1043
  }
1044
1044
  }
@@ -1055,8 +1055,8 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1055
1055
  <span class="cstat-no" title="statement not covered" > // ExtraInfos</span>
1056
1056
  <span class="cstat-no" title="statement not covered" > if (isset(err.extraInfo)) {</span>
1057
1057
  <span class="cstat-no" title="statement not covered" > const { str: str2, stackTrace: stkTrc } = stringifyExtraInfos(err.extraInfo, type, color, level++)</span>
1058
- if (stkTrc) stackTrace = stkTrc
1059
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > str += str2</span></span>
1058
+ <span class="cstat-no" title="statement not covered" > if (stkTrc) stackTrace = stkTrc</span>
1059
+ <span class="cstat-no" title="statement not covered" > str += str2</span>
1060
1060
  <span class="cstat-no" title="statement not covered" > }</span>
1061
1061
  <span class="cstat-no" title="statement not covered" > return { str, stackTrace }</span>
1062
1062
  <span class="cstat-no" title="statement not covered" >}</span>
@@ -1088,25 +1088,25 @@ function logErrPrivate(level: NotInfoLogLevel, color: Color, ...errors) {
1088
1088
  <span class="cstat-no" title="statement not covered" > .map(val =&gt; C.dim(val)).join('\n') + '\n')</span>
1089
1089
  <span class="cstat-no" title="statement not covered" > }</span>
1090
1090
  <span class="cstat-no" title="statement not covered" > return {</span>
1091
- str: (extraInfos.length &gt; 1 ? extraInfos.join('') : '') + (originalError.length &gt; 1 ? originalError.join('') + '\n' : ''),
1092
- stackTrace
1093
- }
1094
- }
1095
- }
1091
+ <span class="cstat-no" title="statement not covered" > str: (extraInfos.length &gt; 1 ? extraInfos.join('') : '') + (originalError.length &gt; 1 ? originalError.join('') + '\n' : ''),</span>
1092
+ <span class="cstat-no" title="statement not covered" > stackTrace</span>
1093
+ <span class="cstat-no" title="statement not covered" > }</span>
1094
+ <span class="cstat-no" title="statement not covered" > }</span>
1095
+ <span class="cstat-no" title="statement not covered" >}</span>
1096
1096
  &nbsp;
1097
1097
  /**
1098
- <span class="fstat-no" title="function not covered" > * Call this at each steps of your progress and change the step value</span>
1098
+ * Call this at each steps of your progress and change the step value
1099
1099
  * @param {Number} step Number of "char" to output
1100
1100
  * @param {String} char Default: '.'
1101
1101
  * @param {String} msg String before char. Final output will be `${str}${char.repeat(step)}`
1102
1102
  */
1103
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>
1104
1104
  <span class="cstat-no" title="statement not covered" > if (typeof process?.stdout?.clearLine === 'function') {</span>
1105
- process.stdout.clearLine(0)
1106
- process.stdout.cursorTo(0)
1107
- process.stdout.write(`${msg}${char.repeat(step)}\x1b[0m`) // \x1b[0m == reset color
1108
- }
1109
- <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" >}</span></span></span>
1105
+ <span class="cstat-no" title="statement not covered" > process.stdout.clearLine(0)</span>
1106
+ <span class="cstat-no" title="statement not covered" > process.stdout.cursorTo(0)</span>
1107
+ <span class="cstat-no" title="statement not covered" > process.stdout.write(`${msg}${char.repeat(step)}\x1b[0m`) // \x1b[0m == reset color</span>
1108
+ <span class="cstat-no" title="statement not covered" > }</span>
1109
+ <span class="cstat-no" title="statement not covered" >}</span>
1110
1110
  &nbsp;
1111
1111
  type loadingSpinnerTypes = 'arrow' | 'dots'
1112
1112
  &nbsp;
@@ -1156,16 +1156,16 @@ type loadingSpinnerTypes = 'arrow' | 'dots'
1156
1156
  <span class="cstat-no" title="statement not covered" > : '\x1b[32m✓ ' + this.progressMessage + '\n\n'</span>
1157
1157
  <span class="cstat-no" title="statement not covered" > )</span>
1158
1158
  <span class="cstat-no" title="statement not covered" > this.progressMessage = ''</span>
1159
- }
1160
- error() {
1161
- <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" > return this.end(true)</span></span>
1159
+ <span class="cstat-no" title="statement not covered" > }</span>
1160
+ <span class="cstat-no" title="statement not covered" > error() {</span>
1161
+ <span class="cstat-no" title="statement not covered" > return this.end(true)</span>
1162
1162
  <span class="cstat-no" title="statement not covered" > }</span>
1163
1163
  <span class="cstat-no" title="statement not covered" >}</span>
1164
1164
  &nbsp;
1165
1165
  &nbsp;
1166
- <span class="fstat-no" title="function not covered" >export function dim(str = '') {</span>
1167
- return configFn()?.terminal?.noColor ? str : `\x1b[2m${str.toString().split('\n').join('\x1b[0m\n\x1b[2m')}\x1b[0m`
1168
- }
1166
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >export function dim(str = '') {</span></span>
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>
1168
+ <span class="cstat-no" title="statement not covered" >}</span>
1169
1169
  &nbsp;
1170
1170
  &nbsp;</pre></td></tr></table></pre>
1171
1171
 
@@ -1174,7 +1174,7 @@ type loadingSpinnerTypes = 'arrow' | 'dots'
1174
1174
  <div class='footer quiet pad2 space-top1 center small'>
1175
1175
  Code coverage generated by
1176
1176
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1177
- at 2025-03-13T19:05:26.769Z
1177
+ at 2025-03-16T15:53:34.514Z
1178
1178
  </div>
1179
1179
  <script src="prettify.js"></script>
1180
1180
  <script>