projax 3.3.54 → 3.3.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/coverage/core-bridge.ts.html +5 -2
- package/coverage/index.html +31 -31
- package/coverage/lcov-report/core-bridge.ts.html +5 -2
- package/coverage/lcov-report/index.html +31 -31
- package/coverage/lcov-report/port-extractor.ts.html +289 -289
- package/coverage/lcov-report/port-scanner.ts.html +1 -1
- package/coverage/lcov-report/port-utils.ts.html +1 -1
- package/coverage/lcov-report/script-runner.ts.html +1 -1
- package/coverage/lcov-report/test-parser.ts.html +163 -163
- package/coverage/lcov.info +344 -344
- package/coverage/port-extractor.ts.html +289 -289
- package/coverage/port-scanner.ts.html +1 -1
- package/coverage/port-utils.ts.html +1 -1
- package/coverage/script-runner.ts.html +1 -1
- package/coverage/test-parser.ts.html +163 -163
- package/dist/__tests__/core-bridge.test.d.ts +1 -0
- package/dist/__tests__/core-bridge.test.js +135 -0
- package/dist/__tests__/port-extractor.test.d.ts +1 -0
- package/dist/__tests__/port-extractor.test.js +407 -0
- package/dist/__tests__/test-parser.test.d.ts +1 -0
- package/dist/__tests__/test-parser.test.js +276 -0
- package/dist/api/__tests__/routes.test.js +10 -0
- package/dist/api/__tests__/routes.test.js.map +1 -1
- package/dist/api/core-bridge.d.ts.map +1 -1
- package/dist/api/core-bridge.js +20 -11
- package/dist/api/core-bridge.js.map +1 -1
- package/dist/core-bridge.d.ts +1 -1
- package/dist/core-bridge.js +2 -2
- package/dist/electron/renderer/assets/index-Cj4QON0s.js +66 -0
- package/dist/electron/renderer/index.html +1 -1
- package/dist/index.js +1 -1
- package/jest.config.js +4 -4
- package/package.json +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">
|
|
26
|
+
<span class="strong">100% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>143/143</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">98.38% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>61/62</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">100% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>9/9</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">100% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>137/137</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
|
|
64
|
+
<div class='status-line high'></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>
|
|
@@ -426,8 +426,8 @@
|
|
|
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">
|
|
430
|
-
<span class="cline-any cline-yes">
|
|
429
|
+
<a name='L364'></a><a href='#L364'>364</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
430
|
+
<span class="cline-any cline-yes">2x</span>
|
|
431
431
|
<span class="cline-any cline-neutral"> </span>
|
|
432
432
|
<span class="cline-any cline-neutral"> </span>
|
|
433
433
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -438,64 +438,64 @@
|
|
|
438
438
|
<span class="cline-any cline-neutral"> </span>
|
|
439
439
|
<span class="cline-any cline-neutral"> </span>
|
|
440
440
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-yes">
|
|
442
|
-
<span class="cline-any cline-
|
|
441
|
+
<span class="cline-any cline-yes">2x</span>
|
|
442
|
+
<span class="cline-any cline-yes">28x</span>
|
|
443
443
|
<span class="cline-any cline-neutral"> </span>
|
|
444
444
|
<span class="cline-any cline-neutral"> </span>
|
|
445
|
-
<span class="cline-any cline-
|
|
446
|
-
<span class="cline-any cline-
|
|
445
|
+
<span class="cline-any cline-yes">28x</span>
|
|
446
|
+
<span class="cline-any cline-yes">28x</span>
|
|
447
447
|
<span class="cline-any cline-neutral"> </span>
|
|
448
448
|
<span class="cline-any cline-neutral"> </span>
|
|
449
|
-
<span class="cline-any cline-
|
|
450
|
-
<span class="cline-any cline-
|
|
449
|
+
<span class="cline-any cline-yes">28x</span>
|
|
450
|
+
<span class="cline-any cline-yes">28x</span>
|
|
451
451
|
<span class="cline-any cline-neutral"> </span>
|
|
452
452
|
<span class="cline-any cline-neutral"> </span>
|
|
453
|
-
<span class="cline-any cline-
|
|
454
|
-
<span class="cline-any cline-
|
|
453
|
+
<span class="cline-any cline-yes">28x</span>
|
|
454
|
+
<span class="cline-any cline-yes">28x</span>
|
|
455
455
|
<span class="cline-any cline-neutral"> </span>
|
|
456
456
|
<span class="cline-any cline-neutral"> </span>
|
|
457
|
-
<span class="cline-any cline-
|
|
458
|
-
<span class="cline-any cline-
|
|
457
|
+
<span class="cline-any cline-yes">28x</span>
|
|
458
|
+
<span class="cline-any cline-yes">28x</span>
|
|
459
459
|
<span class="cline-any cline-neutral"> </span>
|
|
460
460
|
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-
|
|
462
|
-
<span class="cline-any cline-
|
|
461
|
+
<span class="cline-any cline-yes">28x</span>
|
|
462
|
+
<span class="cline-any cline-yes">28x</span>
|
|
463
463
|
<span class="cline-any cline-neutral"> </span>
|
|
464
464
|
<span class="cline-any cline-neutral"> </span>
|
|
465
|
-
<span class="cline-any cline-
|
|
466
|
-
<span class="cline-any cline-
|
|
465
|
+
<span class="cline-any cline-yes">28x</span>
|
|
466
|
+
<span class="cline-any cline-yes">28x</span>
|
|
467
467
|
<span class="cline-any cline-neutral"> </span>
|
|
468
468
|
<span class="cline-any cline-neutral"> </span>
|
|
469
|
-
<span class="cline-any cline-
|
|
470
|
-
<span class="cline-any cline-
|
|
469
|
+
<span class="cline-any cline-yes">28x</span>
|
|
470
|
+
<span class="cline-any cline-yes">28x</span>
|
|
471
471
|
<span class="cline-any cline-neutral"> </span>
|
|
472
472
|
<span class="cline-any cline-neutral"> </span>
|
|
473
|
-
<span class="cline-any cline-
|
|
474
|
-
<span class="cline-any cline-
|
|
473
|
+
<span class="cline-any cline-yes">28x</span>
|
|
474
|
+
<span class="cline-any cline-yes">23x</span>
|
|
475
475
|
<span class="cline-any cline-neutral"> </span>
|
|
476
476
|
<span class="cline-any cline-neutral"> </span>
|
|
477
|
-
<span class="cline-any cline-
|
|
477
|
+
<span class="cline-any cline-yes">28x</span>
|
|
478
478
|
<span class="cline-any cline-neutral"> </span>
|
|
479
479
|
<span class="cline-any cline-neutral"> </span>
|
|
480
480
|
<span class="cline-any cline-neutral"> </span>
|
|
481
481
|
<span class="cline-any cline-neutral"> </span>
|
|
482
482
|
<span class="cline-any cline-neutral"> </span>
|
|
483
483
|
<span class="cline-any cline-neutral"> </span>
|
|
484
|
-
<span class="cline-any cline-
|
|
485
|
-
<span class="cline-any cline-
|
|
484
|
+
<span class="cline-any cline-yes">28x</span>
|
|
485
|
+
<span class="cline-any cline-yes">28x</span>
|
|
486
486
|
<span class="cline-any cline-neutral"> </span>
|
|
487
|
-
<span class="cline-any cline-
|
|
488
|
-
<span class="cline-any cline-
|
|
487
|
+
<span class="cline-any cline-yes">28x</span>
|
|
488
|
+
<span class="cline-any cline-yes">17x</span>
|
|
489
489
|
<span class="cline-any cline-neutral"> </span>
|
|
490
490
|
<span class="cline-any cline-neutral"> </span>
|
|
491
|
-
<span class="cline-any cline-
|
|
492
|
-
<span class="cline-any cline-
|
|
493
|
-
<span class="cline-any cline-
|
|
491
|
+
<span class="cline-any cline-yes">11x</span>
|
|
492
|
+
<span class="cline-any cline-yes">11x</span>
|
|
493
|
+
<span class="cline-any cline-yes">10x</span>
|
|
494
494
|
<span class="cline-any cline-neutral"> </span>
|
|
495
|
-
<span class="cline-any cline-
|
|
496
|
-
<span class="cline-any cline-
|
|
495
|
+
<span class="cline-any cline-yes">10x</span>
|
|
496
|
+
<span class="cline-any cline-yes">10x</span>
|
|
497
497
|
<span class="cline-any cline-neutral"> </span>
|
|
498
|
-
<span class="cline-any cline-
|
|
498
|
+
<span class="cline-any cline-yes">10x</span>
|
|
499
499
|
<span class="cline-any cline-neutral"> </span>
|
|
500
500
|
<span class="cline-any cline-neutral"> </span>
|
|
501
501
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -504,17 +504,17 @@
|
|
|
504
504
|
<span class="cline-any cline-neutral"> </span>
|
|
505
505
|
<span class="cline-any cline-neutral"> </span>
|
|
506
506
|
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-
|
|
508
|
-
<span class="cline-any cline-
|
|
509
|
-
<span class="cline-any cline-
|
|
510
|
-
<span class="cline-any cline-
|
|
511
|
-
<span class="cline-any cline-
|
|
512
|
-
<span class="cline-any cline-
|
|
507
|
+
<span class="cline-any cline-yes">10x</span>
|
|
508
|
+
<span class="cline-any cline-yes">25x</span>
|
|
509
|
+
<span class="cline-any cline-yes">25x</span>
|
|
510
|
+
<span class="cline-any cline-yes">10x</span>
|
|
511
|
+
<span class="cline-any cline-yes">10x</span>
|
|
512
|
+
<span class="cline-any cline-yes">8x</span>
|
|
513
513
|
<span class="cline-any cline-neutral"> </span>
|
|
514
514
|
<span class="cline-any cline-neutral"> </span>
|
|
515
515
|
<span class="cline-any cline-neutral"> </span>
|
|
516
516
|
<span class="cline-any cline-neutral"> </span>
|
|
517
|
-
<span class="cline-any cline-
|
|
517
|
+
<span class="cline-any cline-yes">8x</span>
|
|
518
518
|
<span class="cline-any cline-neutral"> </span>
|
|
519
519
|
<span class="cline-any cline-neutral"> </span>
|
|
520
520
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -524,47 +524,47 @@
|
|
|
524
524
|
<span class="cline-any cline-neutral"> </span>
|
|
525
525
|
<span class="cline-any cline-neutral"> </span>
|
|
526
526
|
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-
|
|
527
|
+
<span class="cline-any cline-yes">11x</span>
|
|
528
528
|
<span class="cline-any cline-neutral"> </span>
|
|
529
529
|
<span class="cline-any cline-neutral"> </span>
|
|
530
530
|
<span class="cline-any cline-neutral"> </span>
|
|
531
531
|
<span class="cline-any cline-neutral"> </span>
|
|
532
532
|
<span class="cline-any cline-neutral"> </span>
|
|
533
533
|
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-
|
|
535
|
-
<span class="cline-any cline-
|
|
534
|
+
<span class="cline-any cline-yes">28x</span>
|
|
535
|
+
<span class="cline-any cline-yes">28x</span>
|
|
536
536
|
<span class="cline-any cline-neutral"> </span>
|
|
537
537
|
<span class="cline-any cline-neutral"> </span>
|
|
538
538
|
<span class="cline-any cline-neutral"> </span>
|
|
539
539
|
<span class="cline-any cline-neutral"> </span>
|
|
540
540
|
<span class="cline-any cline-neutral"> </span>
|
|
541
541
|
<span class="cline-any cline-neutral"> </span>
|
|
542
|
-
<span class="cline-any cline-
|
|
543
|
-
<span class="cline-any cline-
|
|
544
|
-
<span class="cline-any cline-
|
|
542
|
+
<span class="cline-any cline-yes">28x</span>
|
|
543
|
+
<span class="cline-any cline-yes">112x</span>
|
|
544
|
+
<span class="cline-any cline-yes">112x</span>
|
|
545
545
|
<span class="cline-any cline-neutral"> </span>
|
|
546
|
-
<span class="cline-any cline-
|
|
547
|
-
<span class="cline-any cline-
|
|
546
|
+
<span class="cline-any cline-yes">3x</span>
|
|
547
|
+
<span class="cline-any cline-yes">3x</span>
|
|
548
548
|
<span class="cline-any cline-neutral"> </span>
|
|
549
549
|
<span class="cline-any cline-neutral"> </span>
|
|
550
|
-
<span class="cline-any cline-
|
|
550
|
+
<span class="cline-any cline-yes">3x</span>
|
|
551
551
|
<span class="cline-any cline-neutral"> </span>
|
|
552
552
|
<span class="cline-any cline-neutral"> </span>
|
|
553
553
|
<span class="cline-any cline-neutral"> </span>
|
|
554
554
|
<span class="cline-any cline-neutral"> </span>
|
|
555
555
|
<span class="cline-any cline-neutral"> </span>
|
|
556
556
|
<span class="cline-any cline-neutral"> </span>
|
|
557
|
-
<span class="cline-any cline-
|
|
558
|
-
<span class="cline-any cline-
|
|
559
|
-
<span class="cline-any cline-
|
|
560
|
-
<span class="cline-any cline-
|
|
561
|
-
<span class="cline-any cline-
|
|
562
|
-
<span class="cline-any cline-
|
|
557
|
+
<span class="cline-any cline-yes">3x</span>
|
|
558
|
+
<span class="cline-any cline-yes">3x</span>
|
|
559
|
+
<span class="cline-any cline-yes">3x</span>
|
|
560
|
+
<span class="cline-any cline-yes">3x</span>
|
|
561
|
+
<span class="cline-any cline-yes">3x</span>
|
|
562
|
+
<span class="cline-any cline-yes">3x</span>
|
|
563
563
|
<span class="cline-any cline-neutral"> </span>
|
|
564
564
|
<span class="cline-any cline-neutral"> </span>
|
|
565
565
|
<span class="cline-any cline-neutral"> </span>
|
|
566
566
|
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-
|
|
567
|
+
<span class="cline-any cline-yes">3x</span>
|
|
568
568
|
<span class="cline-any cline-neutral"> </span>
|
|
569
569
|
<span class="cline-any cline-neutral"> </span>
|
|
570
570
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -573,40 +573,40 @@
|
|
|
573
573
|
<span class="cline-any cline-neutral"> </span>
|
|
574
574
|
<span class="cline-any cline-neutral"> </span>
|
|
575
575
|
<span class="cline-any cline-neutral"> </span>
|
|
576
|
-
<span class="cline-any cline-
|
|
576
|
+
<span class="cline-any cline-yes">28x</span>
|
|
577
577
|
<span class="cline-any cline-neutral"> </span>
|
|
578
578
|
<span class="cline-any cline-neutral"> </span>
|
|
579
579
|
<span class="cline-any cline-neutral"> </span>
|
|
580
580
|
<span class="cline-any cline-neutral"> </span>
|
|
581
581
|
<span class="cline-any cline-neutral"> </span>
|
|
582
582
|
<span class="cline-any cline-neutral"> </span>
|
|
583
|
-
<span class="cline-any cline-
|
|
584
|
-
<span class="cline-any cline-
|
|
583
|
+
<span class="cline-any cline-yes">28x</span>
|
|
584
|
+
<span class="cline-any cline-yes">28x</span>
|
|
585
585
|
<span class="cline-any cline-neutral"> </span>
|
|
586
|
-
<span class="cline-any cline-
|
|
587
|
-
<span class="cline-any cline-
|
|
588
|
-
<span class="cline-any cline-
|
|
586
|
+
<span class="cline-any cline-yes">28x</span>
|
|
587
|
+
<span class="cline-any cline-yes">84x</span>
|
|
588
|
+
<span class="cline-any cline-yes">84x</span>
|
|
589
589
|
<span class="cline-any cline-neutral"> </span>
|
|
590
|
-
<span class="cline-any cline-
|
|
591
|
-
<span class="cline-any cline-
|
|
590
|
+
<span class="cline-any cline-yes">1x</span>
|
|
591
|
+
<span class="cline-any cline-yes">1x</span>
|
|
592
592
|
<span class="cline-any cline-neutral"> </span>
|
|
593
593
|
<span class="cline-any cline-neutral"> </span>
|
|
594
|
-
<span class="cline-any cline-
|
|
594
|
+
<span class="cline-any cline-yes">1x</span>
|
|
595
595
|
<span class="cline-any cline-neutral"> </span>
|
|
596
596
|
<span class="cline-any cline-neutral"> </span>
|
|
597
597
|
<span class="cline-any cline-neutral"> </span>
|
|
598
598
|
<span class="cline-any cline-neutral"> </span>
|
|
599
|
-
<span class="cline-any cline-
|
|
600
|
-
<span class="cline-any cline-
|
|
601
|
-
<span class="cline-any cline-
|
|
602
|
-
<span class="cline-any cline-
|
|
603
|
-
<span class="cline-any cline-
|
|
604
|
-
<span class="cline-any cline-
|
|
599
|
+
<span class="cline-any cline-yes">1x</span>
|
|
600
|
+
<span class="cline-any cline-yes">1x</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>
|
|
605
605
|
<span class="cline-any cline-neutral"> </span>
|
|
606
606
|
<span class="cline-any cline-neutral"> </span>
|
|
607
607
|
<span class="cline-any cline-neutral"> </span>
|
|
608
608
|
<span class="cline-any cline-neutral"> </span>
|
|
609
|
-
<span class="cline-any cline-
|
|
609
|
+
<span class="cline-any cline-yes">1x</span>
|
|
610
610
|
<span class="cline-any cline-neutral"> </span>
|
|
611
611
|
<span class="cline-any cline-neutral"> </span>
|
|
612
612
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -615,40 +615,40 @@
|
|
|
615
615
|
<span class="cline-any cline-neutral"> </span>
|
|
616
616
|
<span class="cline-any cline-neutral"> </span>
|
|
617
617
|
<span class="cline-any cline-neutral"> </span>
|
|
618
|
-
<span class="cline-any cline-
|
|
618
|
+
<span class="cline-any cline-yes">28x</span>
|
|
619
619
|
<span class="cline-any cline-neutral"> </span>
|
|
620
620
|
<span class="cline-any cline-neutral"> </span>
|
|
621
621
|
<span class="cline-any cline-neutral"> </span>
|
|
622
622
|
<span class="cline-any cline-neutral"> </span>
|
|
623
623
|
<span class="cline-any cline-neutral"> </span>
|
|
624
624
|
<span class="cline-any cline-neutral"> </span>
|
|
625
|
-
<span class="cline-any cline-
|
|
626
|
-
<span class="cline-any cline-
|
|
625
|
+
<span class="cline-any cline-yes">28x</span>
|
|
626
|
+
<span class="cline-any cline-yes">28x</span>
|
|
627
627
|
<span class="cline-any cline-neutral"> </span>
|
|
628
|
-
<span class="cline-any cline-
|
|
629
|
-
<span class="cline-any cline-
|
|
630
|
-
<span class="cline-any cline-
|
|
628
|
+
<span class="cline-any cline-yes">28x</span>
|
|
629
|
+
<span class="cline-any cline-yes">56x</span>
|
|
630
|
+
<span class="cline-any cline-yes">56x</span>
|
|
631
631
|
<span class="cline-any cline-neutral"> </span>
|
|
632
|
-
<span class="cline-any cline-
|
|
633
|
-
<span class="cline-any cline-
|
|
632
|
+
<span class="cline-any cline-yes">1x</span>
|
|
633
|
+
<span class="cline-any cline-yes">1x</span>
|
|
634
634
|
<span class="cline-any cline-neutral"> </span>
|
|
635
635
|
<span class="cline-any cline-neutral"> </span>
|
|
636
|
-
<span class="cline-any cline-
|
|
636
|
+
<span class="cline-any cline-yes">1x</span>
|
|
637
637
|
<span class="cline-any cline-neutral"> </span>
|
|
638
638
|
<span class="cline-any cline-neutral"> </span>
|
|
639
639
|
<span class="cline-any cline-neutral"> </span>
|
|
640
640
|
<span class="cline-any cline-neutral"> </span>
|
|
641
|
-
<span class="cline-any cline-
|
|
642
|
-
<span class="cline-any cline-
|
|
643
|
-
<span class="cline-any cline-
|
|
644
|
-
<span class="cline-any cline-
|
|
645
|
-
<span class="cline-any cline-
|
|
646
|
-
<span class="cline-any cline-
|
|
641
|
+
<span class="cline-any cline-yes">1x</span>
|
|
642
|
+
<span class="cline-any cline-yes">1x</span>
|
|
643
|
+
<span class="cline-any cline-yes">1x</span>
|
|
644
|
+
<span class="cline-any cline-yes">1x</span>
|
|
645
|
+
<span class="cline-any cline-yes">1x</span>
|
|
646
|
+
<span class="cline-any cline-yes">1x</span>
|
|
647
647
|
<span class="cline-any cline-neutral"> </span>
|
|
648
648
|
<span class="cline-any cline-neutral"> </span>
|
|
649
649
|
<span class="cline-any cline-neutral"> </span>
|
|
650
650
|
<span class="cline-any cline-neutral"> </span>
|
|
651
|
-
<span class="cline-any cline-
|
|
651
|
+
<span class="cline-any cline-yes">1x</span>
|
|
652
652
|
<span class="cline-any cline-neutral"> </span>
|
|
653
653
|
<span class="cline-any cline-neutral"> </span>
|
|
654
654
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -657,32 +657,32 @@
|
|
|
657
657
|
<span class="cline-any cline-neutral"> </span>
|
|
658
658
|
<span class="cline-any cline-neutral"> </span>
|
|
659
659
|
<span class="cline-any cline-neutral"> </span>
|
|
660
|
-
<span class="cline-any cline-
|
|
660
|
+
<span class="cline-any cline-yes">28x</span>
|
|
661
661
|
<span class="cline-any cline-neutral"> </span>
|
|
662
662
|
<span class="cline-any cline-neutral"> </span>
|
|
663
663
|
<span class="cline-any cline-neutral"> </span>
|
|
664
664
|
<span class="cline-any cline-neutral"> </span>
|
|
665
665
|
<span class="cline-any cline-neutral"> </span>
|
|
666
666
|
<span class="cline-any cline-neutral"> </span>
|
|
667
|
-
<span class="cline-any cline-
|
|
668
|
-
<span class="cline-any cline-
|
|
667
|
+
<span class="cline-any cline-yes">28x</span>
|
|
668
|
+
<span class="cline-any cline-yes">28x</span>
|
|
669
669
|
<span class="cline-any cline-neutral"> </span>
|
|
670
|
-
<span class="cline-any cline-
|
|
671
|
-
<span class="cline-any cline-
|
|
670
|
+
<span class="cline-any cline-yes">28x</span>
|
|
671
|
+
<span class="cline-any cline-yes">26x</span>
|
|
672
672
|
<span class="cline-any cline-neutral"> </span>
|
|
673
673
|
<span class="cline-any cline-neutral"> </span>
|
|
674
|
-
<span class="cline-any cline-
|
|
675
|
-
<span class="cline-any cline-
|
|
674
|
+
<span class="cline-any cline-yes">2x</span>
|
|
675
|
+
<span class="cline-any cline-yes">2x</span>
|
|
676
676
|
<span class="cline-any cline-neutral"> </span>
|
|
677
677
|
<span class="cline-any cline-neutral"> </span>
|
|
678
|
-
<span class="cline-any cline-
|
|
679
|
-
<span class="cline-any cline-
|
|
680
|
-
<span class="cline-any cline-
|
|
681
|
-
<span class="cline-any cline-
|
|
682
|
-
<span class="cline-any cline-
|
|
683
|
-
<span class="cline-any cline-
|
|
684
|
-
<span class="cline-any cline-
|
|
685
|
-
<span class="cline-any cline-
|
|
678
|
+
<span class="cline-any cline-yes">1x</span>
|
|
679
|
+
<span class="cline-any cline-yes">1x</span>
|
|
680
|
+
<span class="cline-any cline-yes">1x</span>
|
|
681
|
+
<span class="cline-any cline-yes">1x</span>
|
|
682
|
+
<span class="cline-any cline-yes">1x</span>
|
|
683
|
+
<span class="cline-any cline-yes">1x</span>
|
|
684
|
+
<span class="cline-any cline-yes">1x</span>
|
|
685
|
+
<span class="cline-any cline-yes">1x</span>
|
|
686
686
|
<span class="cline-any cline-neutral"> </span>
|
|
687
687
|
<span class="cline-any cline-neutral"> </span>
|
|
688
688
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -694,40 +694,40 @@
|
|
|
694
694
|
<span class="cline-any cline-neutral"> </span>
|
|
695
695
|
<span class="cline-any cline-neutral"> </span>
|
|
696
696
|
<span class="cline-any cline-neutral"> </span>
|
|
697
|
-
<span class="cline-any cline-
|
|
697
|
+
<span class="cline-any cline-yes">2x</span>
|
|
698
698
|
<span class="cline-any cline-neutral"> </span>
|
|
699
699
|
<span class="cline-any cline-neutral"> </span>
|
|
700
700
|
<span class="cline-any cline-neutral"> </span>
|
|
701
701
|
<span class="cline-any cline-neutral"> </span>
|
|
702
702
|
<span class="cline-any cline-neutral"> </span>
|
|
703
703
|
<span class="cline-any cline-neutral"> </span>
|
|
704
|
-
<span class="cline-any cline-
|
|
705
|
-
<span class="cline-any cline-
|
|
704
|
+
<span class="cline-any cline-yes">28x</span>
|
|
705
|
+
<span class="cline-any cline-yes">28x</span>
|
|
706
706
|
<span class="cline-any cline-neutral"> </span>
|
|
707
|
-
<span class="cline-any cline-
|
|
708
|
-
<span class="cline-any cline-
|
|
709
|
-
<span class="cline-any cline-
|
|
707
|
+
<span class="cline-any cline-yes">28x</span>
|
|
708
|
+
<span class="cline-any cline-yes">56x</span>
|
|
709
|
+
<span class="cline-any cline-yes">56x</span>
|
|
710
710
|
<span class="cline-any cline-neutral"> </span>
|
|
711
|
-
<span class="cline-any cline-
|
|
712
|
-
<span class="cline-any cline-
|
|
711
|
+
<span class="cline-any cline-yes">2x</span>
|
|
712
|
+
<span class="cline-any cline-yes">2x</span>
|
|
713
713
|
<span class="cline-any cline-neutral"> </span>
|
|
714
714
|
<span class="cline-any cline-neutral"> </span>
|
|
715
|
-
<span class="cline-any cline-
|
|
715
|
+
<span class="cline-any cline-yes">2x</span>
|
|
716
716
|
<span class="cline-any cline-neutral"> </span>
|
|
717
717
|
<span class="cline-any cline-neutral"> </span>
|
|
718
718
|
<span class="cline-any cline-neutral"> </span>
|
|
719
719
|
<span class="cline-any cline-neutral"> </span>
|
|
720
|
-
<span class="cline-any cline-
|
|
721
|
-
<span class="cline-any cline-
|
|
722
|
-
<span class="cline-any cline-
|
|
723
|
-
<span class="cline-any cline-
|
|
724
|
-
<span class="cline-any cline-
|
|
725
|
-
<span class="cline-any cline-
|
|
720
|
+
<span class="cline-any cline-yes">2x</span>
|
|
721
|
+
<span class="cline-any cline-yes">2x</span>
|
|
722
|
+
<span class="cline-any cline-yes">2x</span>
|
|
723
|
+
<span class="cline-any cline-yes">2x</span>
|
|
724
|
+
<span class="cline-any cline-yes">2x</span>
|
|
725
|
+
<span class="cline-any cline-yes">2x</span>
|
|
726
726
|
<span class="cline-any cline-neutral"> </span>
|
|
727
727
|
<span class="cline-any cline-neutral"> </span>
|
|
728
728
|
<span class="cline-any cline-neutral"> </span>
|
|
729
729
|
<span class="cline-any cline-neutral"> </span>
|
|
730
|
-
<span class="cline-any cline-
|
|
730
|
+
<span class="cline-any cline-yes">2x</span>
|
|
731
731
|
<span class="cline-any cline-neutral"> </span>
|
|
732
732
|
<span class="cline-any cline-neutral"> </span>
|
|
733
733
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -736,47 +736,47 @@
|
|
|
736
736
|
<span class="cline-any cline-neutral"> </span>
|
|
737
737
|
<span class="cline-any cline-neutral"> </span>
|
|
738
738
|
<span class="cline-any cline-neutral"> </span>
|
|
739
|
-
<span class="cline-any cline-
|
|
739
|
+
<span class="cline-any cline-yes">28x</span>
|
|
740
740
|
<span class="cline-any cline-neutral"> </span>
|
|
741
741
|
<span class="cline-any cline-neutral"> </span>
|
|
742
742
|
<span class="cline-any cline-neutral"> </span>
|
|
743
743
|
<span class="cline-any cline-neutral"> </span>
|
|
744
744
|
<span class="cline-any cline-neutral"> </span>
|
|
745
745
|
<span class="cline-any cline-neutral"> </span>
|
|
746
|
-
<span class="cline-any cline-
|
|
747
|
-
<span class="cline-any cline-
|
|
746
|
+
<span class="cline-any cline-yes">28x</span>
|
|
747
|
+
<span class="cline-any cline-yes">28x</span>
|
|
748
748
|
<span class="cline-any cline-neutral"> </span>
|
|
749
|
-
<span class="cline-any cline-
|
|
750
|
-
<span class="cline-any cline-
|
|
751
|
-
<span class="cline-any cline-
|
|
749
|
+
<span class="cline-any cline-yes">28x</span>
|
|
750
|
+
<span class="cline-any cline-yes">112x</span>
|
|
751
|
+
<span class="cline-any cline-yes">112x</span>
|
|
752
752
|
<span class="cline-any cline-neutral"> </span>
|
|
753
|
-
<span class="cline-any cline-
|
|
754
|
-
<span class="cline-any cline-
|
|
755
|
-
<span class="cline-any cline-
|
|
753
|
+
<span class="cline-any cline-yes">7x</span>
|
|
754
|
+
<span class="cline-any cline-yes">7x</span>
|
|
755
|
+
<span class="cline-any cline-yes">7x</span>
|
|
756
756
|
<span class="cline-any cline-neutral"> </span>
|
|
757
|
-
<span class="cline-any cline-
|
|
757
|
+
<span class="cline-any cline-yes">7x</span>
|
|
758
758
|
<span class="cline-any cline-neutral"> </span>
|
|
759
|
-
<span class="cline-any cline-
|
|
759
|
+
<span class="cline-any cline-yes">14x</span>
|
|
760
760
|
<span class="cline-any cline-neutral"> </span>
|
|
761
761
|
<span class="cline-any cline-neutral"> </span>
|
|
762
|
-
<span class="cline-any cline-
|
|
762
|
+
<span class="cline-any cline-yes">12x</span>
|
|
763
763
|
<span class="cline-any cline-neutral"> </span>
|
|
764
764
|
<span class="cline-any cline-neutral"> </span>
|
|
765
765
|
<span class="cline-any cline-neutral"> </span>
|
|
766
766
|
<span class="cline-any cline-neutral"> </span>
|
|
767
767
|
<span class="cline-any cline-neutral"> </span>
|
|
768
768
|
<span class="cline-any cline-neutral"> </span>
|
|
769
|
-
<span class="cline-any cline-
|
|
770
|
-
<span class="cline-any cline-
|
|
771
|
-
<span class="cline-any cline-
|
|
772
|
-
<span class="cline-any cline-
|
|
773
|
-
<span class="cline-any cline-
|
|
774
|
-
<span class="cline-any cline-
|
|
769
|
+
<span class="cline-any cline-yes">12x</span>
|
|
770
|
+
<span class="cline-any cline-yes">31x</span>
|
|
771
|
+
<span class="cline-any cline-yes">31x</span>
|
|
772
|
+
<span class="cline-any cline-yes">7x</span>
|
|
773
|
+
<span class="cline-any cline-yes">7x</span>
|
|
774
|
+
<span class="cline-any cline-yes">7x</span>
|
|
775
775
|
<span class="cline-any cline-neutral"> </span>
|
|
776
776
|
<span class="cline-any cline-neutral"> </span>
|
|
777
777
|
<span class="cline-any cline-neutral"> </span>
|
|
778
778
|
<span class="cline-any cline-neutral"> </span>
|
|
779
|
-
<span class="cline-any cline-
|
|
779
|
+
<span class="cline-any cline-yes">7x</span>
|
|
780
780
|
<span class="cline-any cline-neutral"> </span>
|
|
781
781
|
<span class="cline-any cline-neutral"> </span>
|
|
782
782
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -786,7 +786,7 @@
|
|
|
786
786
|
<span class="cline-any cline-neutral"> </span>
|
|
787
787
|
<span class="cline-any cline-neutral"> </span>
|
|
788
788
|
<span class="cline-any cline-neutral"> </span>
|
|
789
|
-
<span class="cline-any cline-
|
|
789
|
+
<span class="cline-any cline-yes">28x</span>
|
|
790
790
|
<span class="cline-any cline-neutral"> </span>
|
|
791
791
|
<span class="cline-any cline-neutral"> </span>
|
|
792
792
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import * as fs from 'fs';
|
|
@@ -801,64 +801,64 @@ export interface PortInfo {
|
|
|
801
801
|
/**
|
|
802
802
|
* Extract ports from a project's configuration files
|
|
803
803
|
*/
|
|
804
|
-
export async function
|
|
805
|
-
const ports: PortInfo[] =
|
|
804
|
+
export async function extractPortsFromProject(projectPath: string): Promise<PortInfo[]> {
|
|
805
|
+
const ports: PortInfo[] = [];
|
|
806
806
|
|
|
807
807
|
// Extract from package.json scripts
|
|
808
|
-
const packageJsonPorts =
|
|
809
|
-
|
|
808
|
+
const packageJsonPorts = extractPortsFromPackageJson(projectPath);
|
|
809
|
+
ports.push(...packageJsonPorts);
|
|
810
810
|
|
|
811
811
|
// Extract from vite.config.js/ts
|
|
812
|
-
const vitePorts =
|
|
813
|
-
|
|
812
|
+
const vitePorts = extractPortsFromViteConfig(projectPath);
|
|
813
|
+
ports.push(...vitePorts);
|
|
814
814
|
|
|
815
815
|
// Extract from next.config.js/ts
|
|
816
|
-
const nextPorts =
|
|
817
|
-
|
|
816
|
+
const nextPorts = extractPortsFromNextConfig(projectPath);
|
|
817
|
+
ports.push(...nextPorts);
|
|
818
818
|
|
|
819
819
|
// Extract from webpack.config.js
|
|
820
|
-
const webpackPorts =
|
|
821
|
-
|
|
820
|
+
const webpackPorts = extractPortsFromWebpackConfig(projectPath);
|
|
821
|
+
ports.push(...webpackPorts);
|
|
822
822
|
|
|
823
823
|
// Extract from angular.json
|
|
824
|
-
const angularPorts =
|
|
825
|
-
|
|
824
|
+
const angularPorts = extractPortsFromAngularConfig(projectPath);
|
|
825
|
+
ports.push(...angularPorts);
|
|
826
826
|
|
|
827
827
|
// Extract from nuxt.config.js/ts
|
|
828
|
-
const nuxtPorts =
|
|
829
|
-
|
|
828
|
+
const nuxtPorts = extractPortsFromNuxtConfig(projectPath);
|
|
829
|
+
ports.push(...nuxtPorts);
|
|
830
830
|
|
|
831
831
|
// Extract from .env files
|
|
832
|
-
const envPorts =
|
|
833
|
-
|
|
832
|
+
const envPorts = extractPortsFromEnvFiles(projectPath);
|
|
833
|
+
ports.push(...envPorts);
|
|
834
834
|
|
|
835
835
|
// Remove duplicates (same port and script)
|
|
836
|
-
const uniquePorts =
|
|
837
|
-
new Map(ports.map(
|
|
836
|
+
const uniquePorts = Array.from(
|
|
837
|
+
new Map(ports.map(p => [`${p.port}-${p.script || ''}`, p])).values()
|
|
838
838
|
);
|
|
839
839
|
|
|
840
|
-
|
|
840
|
+
return uniquePorts;
|
|
841
841
|
}
|
|
842
842
|
|
|
843
843
|
/**
|
|
844
844
|
* Extract ports from package.json scripts
|
|
845
845
|
*/
|
|
846
|
-
function
|
|
847
|
-
const ports: PortInfo[] =
|
|
848
|
-
const packageJsonPath =
|
|
846
|
+
function extractPortsFromPackageJson(projectPath: string): PortInfo[] {
|
|
847
|
+
const ports: PortInfo[] = [];
|
|
848
|
+
const packageJsonPath = path.join(projectPath, 'package.json');
|
|
849
849
|
|
|
850
|
-
|
|
851
|
-
|
|
850
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
851
|
+
return ports;
|
|
852
852
|
}
|
|
853
853
|
|
|
854
|
-
|
|
855
|
-
const packageJson =
|
|
856
|
-
const scripts =
|
|
854
|
+
try {
|
|
855
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
856
|
+
const scripts = packageJson.scripts || {};
|
|
857
857
|
|
|
858
|
-
|
|
859
|
-
|
|
858
|
+
for (const [scriptName, scriptCommand] of Object.entries(scripts)) {
|
|
859
|
+
if (typeof scriptCommand === 'string') {
|
|
860
860
|
// Look for --port, -p, PORT= patterns
|
|
861
|
-
const portPatterns =
|
|
861
|
+
const portPatterns = [
|
|
862
862
|
/--port\s+(\d+)/i,
|
|
863
863
|
/-p\s+(\d+)/i,
|
|
864
864
|
/PORT\s*=\s*(\d+)/i,
|
|
@@ -867,17 +867,17 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromPa
|
|
|
867
867
|
/PORT=(\d+)/i,
|
|
868
868
|
];
|
|
869
869
|
|
|
870
|
-
|
|
871
|
-
const match =
|
|
872
|
-
|
|
873
|
-
const port =
|
|
874
|
-
|
|
875
|
-
|
|
870
|
+
for (const pattern of portPatterns) {
|
|
871
|
+
const match = scriptCommand.match(pattern);
|
|
872
|
+
if (match && match[1]) {
|
|
873
|
+
const port = parseInt(match[1], 10);
|
|
874
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
875
|
+
ports.push({
|
|
876
876
|
port,
|
|
877
877
|
script: scriptName,
|
|
878
878
|
source: 'package.json',
|
|
879
879
|
});
|
|
880
|
-
|
|
880
|
+
break; // Only add once per script
|
|
881
881
|
}
|
|
882
882
|
}
|
|
883
883
|
}
|
|
@@ -887,47 +887,47 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromPa
|
|
|
887
887
|
// Ignore parsing errors
|
|
888
888
|
}
|
|
889
889
|
|
|
890
|
-
|
|
890
|
+
return ports;
|
|
891
891
|
}
|
|
892
892
|
|
|
893
893
|
/**
|
|
894
894
|
* Extract ports from vite.config.js/ts
|
|
895
895
|
*/
|
|
896
|
-
function
|
|
897
|
-
const ports: PortInfo[] =
|
|
898
|
-
const configFiles =
|
|
896
|
+
function extractPortsFromViteConfig(projectPath: string): PortInfo[] {
|
|
897
|
+
const ports: PortInfo[] = [];
|
|
898
|
+
const configFiles = [
|
|
899
899
|
'vite.config.js',
|
|
900
900
|
'vite.config.ts',
|
|
901
901
|
'vite.config.mjs',
|
|
902
902
|
'vite.config.cjs',
|
|
903
903
|
];
|
|
904
904
|
|
|
905
|
-
|
|
906
|
-
const configPath =
|
|
907
|
-
|
|
905
|
+
for (const configFile of configFiles) {
|
|
906
|
+
const configPath = path.join(projectPath, configFile);
|
|
907
|
+
if (!fs.existsSync(configPath)) continue;
|
|
908
908
|
|
|
909
|
-
|
|
910
|
-
const content =
|
|
909
|
+
try {
|
|
910
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
911
911
|
|
|
912
912
|
// Try to extract from server.port
|
|
913
|
-
const patterns =
|
|
913
|
+
const patterns = [
|
|
914
914
|
/server\s*:\s*\{[^}]*port\s*:\s*(\d+)/i,
|
|
915
915
|
/server\s*:\s*\{[^}]*port\s*:\s*['"](\d+)['"]/i,
|
|
916
916
|
/port\s*:\s*(\d+)/i,
|
|
917
917
|
/port\s*:\s*['"](\d+)['"]/i,
|
|
918
918
|
];
|
|
919
919
|
|
|
920
|
-
|
|
921
|
-
const match =
|
|
922
|
-
|
|
923
|
-
const port =
|
|
924
|
-
|
|
925
|
-
|
|
920
|
+
for (const pattern of patterns) {
|
|
921
|
+
const match = content.match(pattern);
|
|
922
|
+
if (match && match[1]) {
|
|
923
|
+
const port = parseInt(match[1], 10);
|
|
924
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
925
|
+
ports.push({
|
|
926
926
|
port,
|
|
927
927
|
script: null,
|
|
928
928
|
source: configFile,
|
|
929
929
|
});
|
|
930
|
-
|
|
930
|
+
break;
|
|
931
931
|
}
|
|
932
932
|
}
|
|
933
933
|
}
|
|
@@ -936,40 +936,40 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromVi
|
|
|
936
936
|
}
|
|
937
937
|
}
|
|
938
938
|
|
|
939
|
-
|
|
939
|
+
return ports;
|
|
940
940
|
}
|
|
941
941
|
|
|
942
942
|
/**
|
|
943
943
|
* Extract ports from next.config.js/ts
|
|
944
944
|
*/
|
|
945
|
-
function
|
|
946
|
-
const ports: PortInfo[] =
|
|
947
|
-
const configFiles =
|
|
945
|
+
function extractPortsFromNextConfig(projectPath: string): PortInfo[] {
|
|
946
|
+
const ports: PortInfo[] = [];
|
|
947
|
+
const configFiles = ['next.config.js', 'next.config.ts', 'next.config.mjs'];
|
|
948
948
|
|
|
949
|
-
|
|
950
|
-
const configPath =
|
|
951
|
-
|
|
949
|
+
for (const configFile of configFiles) {
|
|
950
|
+
const configPath = path.join(projectPath, configFile);
|
|
951
|
+
if (!fs.existsSync(configPath)) continue;
|
|
952
952
|
|
|
953
|
-
|
|
954
|
-
const content =
|
|
953
|
+
try {
|
|
954
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
955
955
|
|
|
956
956
|
// Next.js doesn't typically configure port in config, but check for devServer
|
|
957
|
-
const patterns =
|
|
957
|
+
const patterns = [
|
|
958
958
|
/devServer\s*:\s*\{[^}]*port\s*:\s*(\d+)/i,
|
|
959
959
|
/port\s*:\s*(\d+)/i,
|
|
960
960
|
];
|
|
961
961
|
|
|
962
|
-
|
|
963
|
-
const match =
|
|
964
|
-
|
|
965
|
-
const port =
|
|
966
|
-
|
|
967
|
-
|
|
962
|
+
for (const pattern of patterns) {
|
|
963
|
+
const match = content.match(pattern);
|
|
964
|
+
if (match && match[1]) {
|
|
965
|
+
const port = parseInt(match[1], 10);
|
|
966
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
967
|
+
ports.push({
|
|
968
968
|
port,
|
|
969
969
|
script: null,
|
|
970
970
|
source: configFile,
|
|
971
971
|
});
|
|
972
|
-
|
|
972
|
+
break;
|
|
973
973
|
}
|
|
974
974
|
}
|
|
975
975
|
}
|
|
@@ -978,40 +978,40 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromNe
|
|
|
978
978
|
}
|
|
979
979
|
}
|
|
980
980
|
|
|
981
|
-
|
|
981
|
+
return ports;
|
|
982
982
|
}
|
|
983
983
|
|
|
984
984
|
/**
|
|
985
985
|
* Extract ports from webpack.config.js
|
|
986
986
|
*/
|
|
987
|
-
function
|
|
988
|
-
const ports: PortInfo[] =
|
|
989
|
-
const configFiles =
|
|
987
|
+
function extractPortsFromWebpackConfig(projectPath: string): PortInfo[] {
|
|
988
|
+
const ports: PortInfo[] = [];
|
|
989
|
+
const configFiles = ['webpack.config.js', 'webpack.config.ts'];
|
|
990
990
|
|
|
991
|
-
|
|
992
|
-
const configPath =
|
|
993
|
-
|
|
991
|
+
for (const configFile of configFiles) {
|
|
992
|
+
const configPath = path.join(projectPath, configFile);
|
|
993
|
+
if (!fs.existsSync(configPath)) continue;
|
|
994
994
|
|
|
995
|
-
|
|
996
|
-
const content =
|
|
995
|
+
try {
|
|
996
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
997
997
|
|
|
998
998
|
// Look for devServer.port
|
|
999
|
-
const patterns =
|
|
999
|
+
const patterns = [
|
|
1000
1000
|
/devServer\s*:\s*\{[^}]*port\s*:\s*(\d+)/i,
|
|
1001
1001
|
/devServer\s*:\s*\{[^}]*port\s*:\s*['"](\d+)['"]/i,
|
|
1002
1002
|
];
|
|
1003
1003
|
|
|
1004
|
-
|
|
1005
|
-
const match =
|
|
1006
|
-
|
|
1007
|
-
const port =
|
|
1008
|
-
|
|
1009
|
-
|
|
1004
|
+
for (const pattern of patterns) {
|
|
1005
|
+
const match = content.match(pattern);
|
|
1006
|
+
if (match && match[1]) {
|
|
1007
|
+
const port = parseInt(match[1], 10);
|
|
1008
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
1009
|
+
ports.push({
|
|
1010
1010
|
port,
|
|
1011
1011
|
script: null,
|
|
1012
1012
|
source: configFile,
|
|
1013
1013
|
});
|
|
1014
|
-
|
|
1014
|
+
break;
|
|
1015
1015
|
}
|
|
1016
1016
|
}
|
|
1017
1017
|
}
|
|
@@ -1020,32 +1020,32 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromWe
|
|
|
1020
1020
|
}
|
|
1021
1021
|
}
|
|
1022
1022
|
|
|
1023
|
-
|
|
1023
|
+
return ports;
|
|
1024
1024
|
}
|
|
1025
1025
|
|
|
1026
1026
|
/**
|
|
1027
1027
|
* Extract ports from angular.json
|
|
1028
1028
|
*/
|
|
1029
|
-
function
|
|
1030
|
-
const ports: PortInfo[] =
|
|
1031
|
-
const configPath =
|
|
1029
|
+
function extractPortsFromAngularConfig(projectPath: string): PortInfo[] {
|
|
1030
|
+
const ports: PortInfo[] = [];
|
|
1031
|
+
const configPath = path.join(projectPath, 'angular.json');
|
|
1032
1032
|
|
|
1033
|
-
|
|
1034
|
-
|
|
1033
|
+
if (!fs.existsSync(configPath)) {
|
|
1034
|
+
return ports;
|
|
1035
1035
|
}
|
|
1036
1036
|
|
|
1037
|
-
|
|
1038
|
-
const angularJson =
|
|
1037
|
+
try {
|
|
1038
|
+
const angularJson = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
1039
1039
|
|
|
1040
1040
|
// Navigate through projects -> architect -> serve -> options -> port
|
|
1041
|
-
const projects = <span class="
|
|
1042
|
-
|
|
1043
|
-
const project =
|
|
1044
|
-
const serve =
|
|
1045
|
-
|
|
1046
|
-
const port =
|
|
1047
|
-
|
|
1048
|
-
|
|
1041
|
+
const projects = angularJson.projects || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
|
|
1042
|
+
for (const projectName of Object.keys(projects)) {
|
|
1043
|
+
const project = projects[projectName];
|
|
1044
|
+
const serve = project?.architect?.serve;
|
|
1045
|
+
if (serve?.options?.port) {
|
|
1046
|
+
const port = parseInt(serve.options.port, 10);
|
|
1047
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
1048
|
+
ports.push({
|
|
1049
1049
|
port,
|
|
1050
1050
|
script: null,
|
|
1051
1051
|
source: 'angular.json',
|
|
@@ -1057,40 +1057,40 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromAn
|
|
|
1057
1057
|
// Ignore parsing errors
|
|
1058
1058
|
}
|
|
1059
1059
|
|
|
1060
|
-
|
|
1060
|
+
return ports;
|
|
1061
1061
|
}
|
|
1062
1062
|
|
|
1063
1063
|
/**
|
|
1064
1064
|
* Extract ports from nuxt.config.js/ts
|
|
1065
1065
|
*/
|
|
1066
|
-
function
|
|
1067
|
-
const ports: PortInfo[] =
|
|
1068
|
-
const configFiles =
|
|
1066
|
+
function extractPortsFromNuxtConfig(projectPath: string): PortInfo[] {
|
|
1067
|
+
const ports: PortInfo[] = [];
|
|
1068
|
+
const configFiles = ['nuxt.config.js', 'nuxt.config.ts'];
|
|
1069
1069
|
|
|
1070
|
-
|
|
1071
|
-
const configPath =
|
|
1072
|
-
|
|
1070
|
+
for (const configFile of configFiles) {
|
|
1071
|
+
const configPath = path.join(projectPath, configFile);
|
|
1072
|
+
if (!fs.existsSync(configPath)) continue;
|
|
1073
1073
|
|
|
1074
|
-
|
|
1075
|
-
const content =
|
|
1074
|
+
try {
|
|
1075
|
+
const content = fs.readFileSync(configPath, 'utf-8');
|
|
1076
1076
|
|
|
1077
1077
|
// Look for server.port
|
|
1078
|
-
const patterns =
|
|
1078
|
+
const patterns = [
|
|
1079
1079
|
/server\s*:\s*\{[^}]*port\s*:\s*(\d+)/i,
|
|
1080
1080
|
/server\s*:\s*\{[^}]*port\s*:\s*['"](\d+)['"]/i,
|
|
1081
1081
|
];
|
|
1082
1082
|
|
|
1083
|
-
|
|
1084
|
-
const match =
|
|
1085
|
-
|
|
1086
|
-
const port =
|
|
1087
|
-
|
|
1088
|
-
|
|
1083
|
+
for (const pattern of patterns) {
|
|
1084
|
+
const match = content.match(pattern);
|
|
1085
|
+
if (match && match[1]) {
|
|
1086
|
+
const port = parseInt(match[1], 10);
|
|
1087
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
1088
|
+
ports.push({
|
|
1089
1089
|
port,
|
|
1090
1090
|
script: null,
|
|
1091
1091
|
source: configFile,
|
|
1092
1092
|
});
|
|
1093
|
-
|
|
1093
|
+
break;
|
|
1094
1094
|
}
|
|
1095
1095
|
}
|
|
1096
1096
|
}
|
|
@@ -1099,47 +1099,47 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromNu
|
|
|
1099
1099
|
}
|
|
1100
1100
|
}
|
|
1101
1101
|
|
|
1102
|
-
|
|
1102
|
+
return ports;
|
|
1103
1103
|
}
|
|
1104
1104
|
|
|
1105
1105
|
/**
|
|
1106
1106
|
* Extract ports from .env files
|
|
1107
1107
|
*/
|
|
1108
|
-
function
|
|
1109
|
-
const ports: PortInfo[] =
|
|
1110
|
-
const envFiles =
|
|
1108
|
+
function extractPortsFromEnvFiles(projectPath: string): PortInfo[] {
|
|
1109
|
+
const ports: PortInfo[] = [];
|
|
1110
|
+
const envFiles = ['.env', '.env.local', '.env.development', '.env.production'];
|
|
1111
1111
|
|
|
1112
|
-
|
|
1113
|
-
const envPath =
|
|
1114
|
-
|
|
1112
|
+
for (const envFile of envFiles) {
|
|
1113
|
+
const envPath = path.join(projectPath, envFile);
|
|
1114
|
+
if (!fs.existsSync(envPath)) continue;
|
|
1115
1115
|
|
|
1116
|
-
|
|
1117
|
-
const content =
|
|
1118
|
-
const lines =
|
|
1116
|
+
try {
|
|
1117
|
+
const content = fs.readFileSync(envPath, 'utf-8');
|
|
1118
|
+
const lines = content.split('\n');
|
|
1119
1119
|
|
|
1120
|
-
|
|
1120
|
+
for (const line of lines) {
|
|
1121
1121
|
// Skip comments
|
|
1122
|
-
|
|
1122
|
+
if (line.trim().startsWith('#')) continue;
|
|
1123
1123
|
|
|
1124
1124
|
// Look for PORT=, VITE_PORT=, NEXT_PORT=, etc.
|
|
1125
|
-
const patterns =
|
|
1125
|
+
const patterns = [
|
|
1126
1126
|
/^PORT\s*=\s*(\d+)/i,
|
|
1127
1127
|
/^VITE_PORT\s*=\s*(\d+)/i,
|
|
1128
1128
|
/^NEXT_PORT\s*=\s*(\d+)/i,
|
|
1129
1129
|
/^REACT_APP_PORT\s*=\s*(\d+)/i,
|
|
1130
1130
|
];
|
|
1131
1131
|
|
|
1132
|
-
|
|
1133
|
-
const match =
|
|
1134
|
-
|
|
1135
|
-
const port =
|
|
1136
|
-
|
|
1137
|
-
|
|
1132
|
+
for (const pattern of patterns) {
|
|
1133
|
+
const match = line.match(pattern);
|
|
1134
|
+
if (match && match[1]) {
|
|
1135
|
+
const port = parseInt(match[1], 10);
|
|
1136
|
+
if (!isNaN(port) && port > 0 && port <= 65535) {
|
|
1137
|
+
ports.push({
|
|
1138
1138
|
port,
|
|
1139
1139
|
script: null,
|
|
1140
1140
|
source: envFile,
|
|
1141
1141
|
});
|
|
1142
|
-
|
|
1142
|
+
break;
|
|
1143
1143
|
}
|
|
1144
1144
|
}
|
|
1145
1145
|
}
|
|
@@ -1149,7 +1149,7 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromEn
|
|
|
1149
1149
|
}
|
|
1150
1150
|
}
|
|
1151
1151
|
|
|
1152
|
-
|
|
1152
|
+
return ports;
|
|
1153
1153
|
}
|
|
1154
1154
|
|
|
1155
1155
|
</pre></td></tr></table></pre>
|
|
@@ -1159,7 +1159,7 @@ function <span class="fstat-no" title="function not covered" >extractPortsFromEn
|
|
|
1159
1159
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
1160
1160
|
Code coverage generated by
|
|
1161
1161
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
1162
|
-
at 2026-01-
|
|
1162
|
+
at 2026-01-08T07:29:04.471Z
|
|
1163
1163
|
</div>
|
|
1164
1164
|
<script src="prettify.js"></script>
|
|
1165
1165
|
<script>
|