projax 3.3.51 ā 3.3.53
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/README.md +0 -73
- package/coverage/core-bridge.ts.html +24 -3
- package/coverage/index.html +34 -19
- package/coverage/lcov-report/core-bridge.ts.html +24 -3
- package/coverage/lcov-report/index.html +34 -19
- package/coverage/lcov-report/port-extractor.ts.html +1 -1
- package/coverage/lcov-report/port-scanner.ts.html +3 -3
- package/coverage/lcov-report/port-utils.ts.html +1 -1
- package/coverage/lcov-report/script-runner.ts.html +302 -11
- package/coverage/lcov-report/test-parser.ts.html +799 -0
- package/coverage/lcov.info +270 -49
- package/coverage/port-extractor.ts.html +1 -1
- package/coverage/port-scanner.ts.html +3 -3
- package/coverage/port-utils.ts.html +1 -1
- package/coverage/script-runner.ts.html +302 -11
- package/coverage/test-parser.ts.html +799 -0
- package/dist/__tests__/port-scanner.test.js +17 -7
- package/dist/__tests__/script-runner.test.js +17 -7
- package/dist/api/__tests__/database.test.js +17 -7
- package/dist/api/__tests__/database.test.js.map +1 -1
- package/dist/api/__tests__/routes.test.js +18 -7
- package/dist/api/__tests__/routes.test.js.map +1 -1
- package/dist/api/__tests__/scanner.test.js +18 -7
- package/dist/api/__tests__/scanner.test.js.map +1 -1
- package/dist/api/core-bridge.d.ts +8 -0
- package/dist/api/core-bridge.d.ts.map +1 -0
- package/dist/api/core-bridge.js +86 -0
- package/dist/api/core-bridge.js.map +1 -0
- package/dist/api/database.d.ts +0 -8
- package/dist/api/database.d.ts.map +1 -1
- package/dist/api/database.js +24 -57
- package/dist/api/database.js.map +1 -1
- package/dist/api/index.js +19 -9
- package/dist/api/index.js.map +1 -1
- package/dist/api/migrate.js +1 -2
- package/dist/api/migrate.js.map +1 -1
- package/dist/api/package.json +6 -3
- package/dist/api/routes/backup.d.ts +2 -1
- package/dist/api/routes/backup.d.ts.map +1 -1
- package/dist/api/routes/backup.js +4 -4
- package/dist/api/routes/backup.js.map +1 -1
- package/dist/api/routes/index.d.ts +2 -1
- package/dist/api/routes/index.d.ts.map +1 -1
- package/dist/api/routes/index.js +0 -2
- package/dist/api/routes/index.js.map +1 -1
- package/dist/api/routes/projects.d.ts +2 -1
- package/dist/api/routes/projects.d.ts.map +1 -1
- package/dist/api/routes/projects.js +19 -9
- package/dist/api/routes/projects.js.map +1 -1
- package/dist/api/routes/settings.d.ts +2 -1
- package/dist/api/routes/settings.d.ts.map +1 -1
- package/dist/api/routes/settings.js +22 -57
- package/dist/api/routes/settings.js.map +1 -1
- package/dist/api/routes/workspaces.d.ts +2 -1
- package/dist/api/routes/workspaces.d.ts.map +1 -1
- package/dist/api/routes/workspaces.js +29 -104
- package/dist/api/routes/workspaces.js.map +1 -1
- package/dist/api/services/scanner.js +19 -10
- package/dist/api/services/scanner.js.map +1 -1
- package/dist/api/services/test-parser.js +2 -3
- package/dist/api/services/test-parser.js.map +1 -1
- package/dist/api/types.d.ts +0 -5
- package/dist/api/types.d.ts.map +1 -1
- package/dist/core/__tests__/database.test.js +17 -7
- package/dist/core/__tests__/detector.test.js +17 -7
- package/dist/core/__tests__/index.test.js +18 -7
- package/dist/core/__tests__/scanner.test.js +18 -7
- package/dist/core/__tests__/settings.test.js +18 -7
- package/dist/core/backup-utils.js +20 -11
- package/dist/core/database.js +18 -9
- package/dist/core/detector.js +21 -11
- package/dist/core/git-utils.js +19 -10
- package/dist/core/index.js +5 -5
- package/dist/core/scanner.js +2 -3
- package/dist/core/settings.d.ts +0 -85
- package/dist/core/settings.js +9 -306
- package/dist/core/workspace-utils.js +20 -11
- package/dist/core-bridge.js +22 -8
- package/dist/electron/core/__tests__/database.test.js +17 -7
- package/dist/electron/core/__tests__/detector.test.js +17 -7
- package/dist/electron/core/__tests__/index.test.js +18 -7
- package/dist/electron/core/__tests__/scanner.test.js +18 -7
- package/dist/electron/core/__tests__/settings.test.js +18 -7
- package/dist/electron/core/backup-utils.js +20 -11
- package/dist/electron/core/database.js +18 -9
- package/dist/electron/core/detector.js +21 -11
- package/dist/electron/core/git-utils.js +19 -10
- package/dist/electron/core/index.js +5 -5
- package/dist/electron/core/scanner.js +2 -3
- package/dist/electron/core/settings.d.ts +0 -85
- package/dist/electron/core/settings.js +9 -306
- package/dist/electron/core/workspace-utils.js +20 -11
- package/dist/electron/core.js +22 -8
- package/dist/electron/main.js +143 -444
- package/dist/electron/port-extractor.js +18 -9
- package/dist/electron/port-scanner.js +21 -12
- package/dist/electron/port-utils.js +4 -5
- package/dist/electron/preload.d.ts +2 -13
- package/dist/electron/preload.js +2 -9
- package/dist/electron/renderer/assets/index-BjZn_mEF.js +66 -0
- package/dist/electron/renderer/assets/index-CZmDxbJO.js +66 -0
- package/dist/electron/renderer/assets/{index-DWe2TQFv.css ā index-DfocdjIj.css} +1 -1
- package/dist/electron/renderer/index.html +2 -2
- package/dist/electron/script-runner.js +29 -20
- package/dist/index.js +37 -134
- package/dist/port-extractor.js +18 -9
- package/dist/port-scanner.js +21 -12
- package/dist/port-utils.js +4 -5
- package/dist/prxi.d.ts +1 -0
- package/dist/prxi.js +1106 -0
- package/dist/prxi.tsx +6 -6
- package/dist/script-runner.js +29 -20
- package/dist/test-parser.js +2 -3
- package/jest.config.js +8 -0
- package/package.json +9 -6
- package/dist/api/routes/mcp.d.ts +0 -3
- package/dist/api/routes/mcp.d.ts.map +0 -1
- package/dist/api/routes/mcp.js +0 -147
- package/dist/api/routes/mcp.js.map +0 -1
- package/dist/electron/renderer/assets/index-59AhiV_K.css +0 -1
- package/dist/electron/renderer/assets/index-A04svynq.js +0 -62
- package/dist/electron/renderer/assets/index-B-etDnj2.js +0 -64
- package/dist/electron/renderer/assets/index-BGodNljq.js +0 -62
- package/dist/electron/renderer/assets/index-Bx18Cyic.js +0 -64
- package/dist/electron/renderer/assets/index-ByBOaxqv.js +0 -62
- package/dist/electron/renderer/assets/index-ByHY-x-j.js +0 -62
- package/dist/electron/renderer/assets/index-C1SRt6Jx.js +0 -62
- package/dist/electron/renderer/assets/index-C8f5yNYe.js +0 -64
- package/dist/electron/renderer/assets/index-C9Fo49a8.js +0 -61
- package/dist/electron/renderer/assets/index-CGx7K7jh.js +0 -62
- package/dist/electron/renderer/assets/index-CIZ3Wl6c.css +0 -1
- package/dist/electron/renderer/assets/index-CJbsU9y8.css +0 -1
- package/dist/electron/renderer/assets/index-CJrLunKK.js +0 -62
- package/dist/electron/renderer/assets/index-CQTleudf.css +0 -1
- package/dist/electron/renderer/assets/index-CQcilqlv.js +0 -62
- package/dist/electron/renderer/assets/index-CS-85xbL.css +0 -1
- package/dist/electron/renderer/assets/index-CYph0WPA.js +0 -62
- package/dist/electron/renderer/assets/index-C_WSLD6y.css +0 -1
- package/dist/electron/renderer/assets/index-CgB-tTpV.js +0 -62
- package/dist/electron/renderer/assets/index-ChoTzPLo.css +0 -1
- package/dist/electron/renderer/assets/index-CopVNRnR.js +0 -64
- package/dist/electron/renderer/assets/index-D1jmaGv5.css +0 -1
- package/dist/electron/renderer/assets/index-D2AOB6Er.js +0 -62
- package/dist/electron/renderer/assets/index-DAfjuYKX.js +0 -61
- package/dist/electron/renderer/assets/index-DEOOHPEi.css +0 -1
- package/dist/electron/renderer/assets/index-DTtg6XrF.css +0 -1
- package/dist/electron/renderer/assets/index-DUvcepWm.js +0 -64
- package/dist/electron/renderer/assets/index-DVWDlM1D.js +0 -62
- package/dist/electron/renderer/assets/index-DZzB20Xf.css +0 -1
- package/dist/electron/renderer/assets/index-Dk0EQt0u.css +0 -1
- package/dist/electron/renderer/assets/index-DknLdADV.js +0 -63
- package/dist/electron/renderer/assets/index-DocuD8Lk.js +0 -64
- package/dist/electron/renderer/assets/index-DwRy5FqP.js +0 -62
- package/dist/electron/renderer/assets/index-DyU-xfd8.css +0 -1
- package/dist/electron/renderer/assets/index-GwC-JVUy.css +0 -1
- package/dist/electron/renderer/assets/index-JXrtTB1F.js +0 -63
- package/dist/electron/renderer/assets/index-Ocrdv8Lb.css +0 -1
- package/dist/electron/renderer/assets/index-R-HsWJ0K.js +0 -62
- package/dist/electron/renderer/assets/index-Ytah0wbZ.js +0 -62
- package/dist/electron/renderer/assets/index-ZVyXUshO.css +0 -1
- package/dist/electron/renderer/assets/index-Z_8dJn3i.js +0 -62
- package/dist/electron/renderer/assets/index-fehviker.js +0 -63
- package/dist/electron/renderer/assets/index-nts9ST-M.js +0 -62
- package/dist/electron/renderer/assets/index-q8NVIH3g.css +0 -1
- package/dist/electron/renderer/assets/index-thUWIXon.js +0 -62
- package/dist/electron/renderer/assets/index-tuQmrwcm.css +0 -1
- package/dist/prxi/src/index.tsx +0 -1370
|
@@ -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">25% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>122/
|
|
28
|
+
<span class='fraction'>122/488</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">21.89% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>30/
|
|
35
|
+
<span class='fraction'>30/137</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">26% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>13/
|
|
42
|
+
<span class='fraction'>13/50</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">25.21% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>120/
|
|
49
|
+
<span class='fraction'>120/476</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -1053,7 +1053,104 @@
|
|
|
1053
1053
|
<a name='L988'></a><a href='#L988'>988</a>
|
|
1054
1054
|
<a name='L989'></a><a href='#L989'>989</a>
|
|
1055
1055
|
<a name='L990'></a><a href='#L990'>990</a>
|
|
1056
|
-
<a name='L991'></a><a href='#L991'>991</a
|
|
1056
|
+
<a name='L991'></a><a href='#L991'>991</a>
|
|
1057
|
+
<a name='L992'></a><a href='#L992'>992</a>
|
|
1058
|
+
<a name='L993'></a><a href='#L993'>993</a>
|
|
1059
|
+
<a name='L994'></a><a href='#L994'>994</a>
|
|
1060
|
+
<a name='L995'></a><a href='#L995'>995</a>
|
|
1061
|
+
<a name='L996'></a><a href='#L996'>996</a>
|
|
1062
|
+
<a name='L997'></a><a href='#L997'>997</a>
|
|
1063
|
+
<a name='L998'></a><a href='#L998'>998</a>
|
|
1064
|
+
<a name='L999'></a><a href='#L999'>999</a>
|
|
1065
|
+
<a name='L1000'></a><a href='#L1000'>1000</a>
|
|
1066
|
+
<a name='L1001'></a><a href='#L1001'>1001</a>
|
|
1067
|
+
<a name='L1002'></a><a href='#L1002'>1002</a>
|
|
1068
|
+
<a name='L1003'></a><a href='#L1003'>1003</a>
|
|
1069
|
+
<a name='L1004'></a><a href='#L1004'>1004</a>
|
|
1070
|
+
<a name='L1005'></a><a href='#L1005'>1005</a>
|
|
1071
|
+
<a name='L1006'></a><a href='#L1006'>1006</a>
|
|
1072
|
+
<a name='L1007'></a><a href='#L1007'>1007</a>
|
|
1073
|
+
<a name='L1008'></a><a href='#L1008'>1008</a>
|
|
1074
|
+
<a name='L1009'></a><a href='#L1009'>1009</a>
|
|
1075
|
+
<a name='L1010'></a><a href='#L1010'>1010</a>
|
|
1076
|
+
<a name='L1011'></a><a href='#L1011'>1011</a>
|
|
1077
|
+
<a name='L1012'></a><a href='#L1012'>1012</a>
|
|
1078
|
+
<a name='L1013'></a><a href='#L1013'>1013</a>
|
|
1079
|
+
<a name='L1014'></a><a href='#L1014'>1014</a>
|
|
1080
|
+
<a name='L1015'></a><a href='#L1015'>1015</a>
|
|
1081
|
+
<a name='L1016'></a><a href='#L1016'>1016</a>
|
|
1082
|
+
<a name='L1017'></a><a href='#L1017'>1017</a>
|
|
1083
|
+
<a name='L1018'></a><a href='#L1018'>1018</a>
|
|
1084
|
+
<a name='L1019'></a><a href='#L1019'>1019</a>
|
|
1085
|
+
<a name='L1020'></a><a href='#L1020'>1020</a>
|
|
1086
|
+
<a name='L1021'></a><a href='#L1021'>1021</a>
|
|
1087
|
+
<a name='L1022'></a><a href='#L1022'>1022</a>
|
|
1088
|
+
<a name='L1023'></a><a href='#L1023'>1023</a>
|
|
1089
|
+
<a name='L1024'></a><a href='#L1024'>1024</a>
|
|
1090
|
+
<a name='L1025'></a><a href='#L1025'>1025</a>
|
|
1091
|
+
<a name='L1026'></a><a href='#L1026'>1026</a>
|
|
1092
|
+
<a name='L1027'></a><a href='#L1027'>1027</a>
|
|
1093
|
+
<a name='L1028'></a><a href='#L1028'>1028</a>
|
|
1094
|
+
<a name='L1029'></a><a href='#L1029'>1029</a>
|
|
1095
|
+
<a name='L1030'></a><a href='#L1030'>1030</a>
|
|
1096
|
+
<a name='L1031'></a><a href='#L1031'>1031</a>
|
|
1097
|
+
<a name='L1032'></a><a href='#L1032'>1032</a>
|
|
1098
|
+
<a name='L1033'></a><a href='#L1033'>1033</a>
|
|
1099
|
+
<a name='L1034'></a><a href='#L1034'>1034</a>
|
|
1100
|
+
<a name='L1035'></a><a href='#L1035'>1035</a>
|
|
1101
|
+
<a name='L1036'></a><a href='#L1036'>1036</a>
|
|
1102
|
+
<a name='L1037'></a><a href='#L1037'>1037</a>
|
|
1103
|
+
<a name='L1038'></a><a href='#L1038'>1038</a>
|
|
1104
|
+
<a name='L1039'></a><a href='#L1039'>1039</a>
|
|
1105
|
+
<a name='L1040'></a><a href='#L1040'>1040</a>
|
|
1106
|
+
<a name='L1041'></a><a href='#L1041'>1041</a>
|
|
1107
|
+
<a name='L1042'></a><a href='#L1042'>1042</a>
|
|
1108
|
+
<a name='L1043'></a><a href='#L1043'>1043</a>
|
|
1109
|
+
<a name='L1044'></a><a href='#L1044'>1044</a>
|
|
1110
|
+
<a name='L1045'></a><a href='#L1045'>1045</a>
|
|
1111
|
+
<a name='L1046'></a><a href='#L1046'>1046</a>
|
|
1112
|
+
<a name='L1047'></a><a href='#L1047'>1047</a>
|
|
1113
|
+
<a name='L1048'></a><a href='#L1048'>1048</a>
|
|
1114
|
+
<a name='L1049'></a><a href='#L1049'>1049</a>
|
|
1115
|
+
<a name='L1050'></a><a href='#L1050'>1050</a>
|
|
1116
|
+
<a name='L1051'></a><a href='#L1051'>1051</a>
|
|
1117
|
+
<a name='L1052'></a><a href='#L1052'>1052</a>
|
|
1118
|
+
<a name='L1053'></a><a href='#L1053'>1053</a>
|
|
1119
|
+
<a name='L1054'></a><a href='#L1054'>1054</a>
|
|
1120
|
+
<a name='L1055'></a><a href='#L1055'>1055</a>
|
|
1121
|
+
<a name='L1056'></a><a href='#L1056'>1056</a>
|
|
1122
|
+
<a name='L1057'></a><a href='#L1057'>1057</a>
|
|
1123
|
+
<a name='L1058'></a><a href='#L1058'>1058</a>
|
|
1124
|
+
<a name='L1059'></a><a href='#L1059'>1059</a>
|
|
1125
|
+
<a name='L1060'></a><a href='#L1060'>1060</a>
|
|
1126
|
+
<a name='L1061'></a><a href='#L1061'>1061</a>
|
|
1127
|
+
<a name='L1062'></a><a href='#L1062'>1062</a>
|
|
1128
|
+
<a name='L1063'></a><a href='#L1063'>1063</a>
|
|
1129
|
+
<a name='L1064'></a><a href='#L1064'>1064</a>
|
|
1130
|
+
<a name='L1065'></a><a href='#L1065'>1065</a>
|
|
1131
|
+
<a name='L1066'></a><a href='#L1066'>1066</a>
|
|
1132
|
+
<a name='L1067'></a><a href='#L1067'>1067</a>
|
|
1133
|
+
<a name='L1068'></a><a href='#L1068'>1068</a>
|
|
1134
|
+
<a name='L1069'></a><a href='#L1069'>1069</a>
|
|
1135
|
+
<a name='L1070'></a><a href='#L1070'>1070</a>
|
|
1136
|
+
<a name='L1071'></a><a href='#L1071'>1071</a>
|
|
1137
|
+
<a name='L1072'></a><a href='#L1072'>1072</a>
|
|
1138
|
+
<a name='L1073'></a><a href='#L1073'>1073</a>
|
|
1139
|
+
<a name='L1074'></a><a href='#L1074'>1074</a>
|
|
1140
|
+
<a name='L1075'></a><a href='#L1075'>1075</a>
|
|
1141
|
+
<a name='L1076'></a><a href='#L1076'>1076</a>
|
|
1142
|
+
<a name='L1077'></a><a href='#L1077'>1077</a>
|
|
1143
|
+
<a name='L1078'></a><a href='#L1078'>1078</a>
|
|
1144
|
+
<a name='L1079'></a><a href='#L1079'>1079</a>
|
|
1145
|
+
<a name='L1080'></a><a href='#L1080'>1080</a>
|
|
1146
|
+
<a name='L1081'></a><a href='#L1081'>1081</a>
|
|
1147
|
+
<a name='L1082'></a><a href='#L1082'>1082</a>
|
|
1148
|
+
<a name='L1083'></a><a href='#L1083'>1083</a>
|
|
1149
|
+
<a name='L1084'></a><a href='#L1084'>1084</a>
|
|
1150
|
+
<a name='L1085'></a><a href='#L1085'>1085</a>
|
|
1151
|
+
<a name='L1086'></a><a href='#L1086'>1086</a>
|
|
1152
|
+
<a name='L1087'></a><a href='#L1087'>1087</a>
|
|
1153
|
+
<a name='L1088'></a><a href='#L1088'>1088</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
1057
1154
|
<span class="cline-any cline-yes">1x</span>
|
|
1058
1155
|
<span class="cline-any cline-yes">1x</span>
|
|
1059
1156
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1979,6 +2076,9 @@
|
|
|
1979
2076
|
<span class="cline-any cline-neutral"> </span>
|
|
1980
2077
|
<span class="cline-any cline-neutral"> </span>
|
|
1981
2078
|
<span class="cline-any cline-neutral"> </span>
|
|
2079
|
+
<span class="cline-any cline-no"> </span>
|
|
2080
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2081
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1982
2082
|
<span class="cline-any cline-neutral"> </span>
|
|
1983
2083
|
<span class="cline-any cline-no"> </span>
|
|
1984
2084
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2039,6 +2139,100 @@
|
|
|
2039
2139
|
<span class="cline-any cline-neutral"> </span>
|
|
2040
2140
|
<span class="cline-any cline-neutral"> </span>
|
|
2041
2141
|
<span class="cline-any cline-neutral"> </span>
|
|
2142
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2143
|
+
<span class="cline-any cline-no"> </span>
|
|
2144
|
+
<span class="cline-any cline-no"> </span>
|
|
2145
|
+
<span class="cline-any cline-no"> </span>
|
|
2146
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2147
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2148
|
+
<span class="cline-any cline-no"> </span>
|
|
2149
|
+
<span class="cline-any cline-no"> </span>
|
|
2150
|
+
<span class="cline-any cline-no"> </span>
|
|
2151
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2152
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2153
|
+
<span class="cline-any cline-no"> </span>
|
|
2154
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2155
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2156
|
+
<span class="cline-any cline-no"> </span>
|
|
2157
|
+
<span class="cline-any cline-no"> </span>
|
|
2158
|
+
<span class="cline-any cline-no"> </span>
|
|
2159
|
+
<span class="cline-any cline-no"> </span>
|
|
2160
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2161
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2162
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2163
|
+
<span class="cline-any cline-no"> </span>
|
|
2164
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2165
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2166
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2167
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2168
|
+
<span class="cline-any cline-no"> </span>
|
|
2169
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2170
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2171
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2172
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2173
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2174
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2175
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2176
|
+
<span class="cline-any cline-no"> </span>
|
|
2177
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2178
|
+
<span class="cline-any cline-no"> </span>
|
|
2179
|
+
<span class="cline-any cline-no"> </span>
|
|
2180
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2181
|
+
<span class="cline-any cline-no"> </span>
|
|
2182
|
+
<span class="cline-any cline-no"> </span>
|
|
2183
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2184
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2185
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2186
|
+
<span class="cline-any cline-no"> </span>
|
|
2187
|
+
<span class="cline-any cline-no"> </span>
|
|
2188
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2189
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2190
|
+
<span class="cline-any cline-no"> </span>
|
|
2191
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2192
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2193
|
+
<span class="cline-any cline-no"> </span>
|
|
2194
|
+
<span class="cline-any cline-no"> </span>
|
|
2195
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2196
|
+
<span class="cline-any cline-no"> </span>
|
|
2197
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2198
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2199
|
+
<span class="cline-any cline-no"> </span>
|
|
2200
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2201
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2202
|
+
<span class="cline-any cline-no"> </span>
|
|
2203
|
+
<span class="cline-any cline-no"> </span>
|
|
2204
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2205
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2206
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2207
|
+
<span class="cline-any cline-no"> </span>
|
|
2208
|
+
<span class="cline-any cline-no"> </span>
|
|
2209
|
+
<span class="cline-any cline-no"> </span>
|
|
2210
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2211
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2212
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2213
|
+
<span class="cline-any cline-no"> </span>
|
|
2214
|
+
<span class="cline-any cline-no"> </span>
|
|
2215
|
+
<span class="cline-any cline-no"> </span>
|
|
2216
|
+
<span class="cline-any cline-no"> </span>
|
|
2217
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2218
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2219
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2220
|
+
<span class="cline-any cline-no"> </span>
|
|
2221
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2222
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2223
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2224
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2225
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2226
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2227
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2228
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2229
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2230
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2231
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2232
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2233
|
+
<span class="cline-any cline-no"> </span>
|
|
2234
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2235
|
+
<span class="cline-any cline-neutral"> </span>
|
|
2042
2236
|
<span class="cline-any cline-no"> </span>
|
|
2043
2237
|
<span class="cline-any cline-neutral"> </span>
|
|
2044
2238
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2957,7 +3151,7 @@ export function <span class="fstat-no" title="function not covered" >runScriptIn
|
|
|
2957
3151
|
<span class="cstat-no" title="statement not covered" > addProcess(processInfo);</span>
|
|
2958
3152
|
|
|
2959
3153
|
// Listen for process exit to clean up tracking
|
|
2960
|
-
<span class="cstat-no" title="statement not covered" > child.on('exit', <span class="fstat-no" title="function not covered" >
|
|
3154
|
+
<span class="cstat-no" title="statement not covered" > child.on('exit', <span class="fstat-no" title="function not covered" >async </span>(code, signal) => {</span>
|
|
2961
3155
|
// Remove from tracking when process exits
|
|
2962
3156
|
<span class="cstat-no" title="statement not covered" > removeProcess(child.pid!);</span>
|
|
2963
3157
|
|
|
@@ -2967,6 +3161,9 @@ export function <span class="fstat-no" title="function not covered" >runScriptIn
|
|
|
2967
3161
|
} else <span class="cstat-no" title="statement not covered" ><span class="missing-if-branch" title="if path not taken" >I</span>if (signal !== null) {</span>
|
|
2968
3162
|
<span class="cstat-no" title="statement not covered" > fs.appendFileSync(logFile, `\n\n[Process killed by signal ${signal}]\n`);</span>
|
|
2969
3163
|
}
|
|
3164
|
+
|
|
3165
|
+
// Check if this was a test script and parse results
|
|
3166
|
+
<span class="cstat-no" title="statement not covered" > await checkAndParseTestResults(logFile, projectPath, scriptName);</span>
|
|
2970
3167
|
});
|
|
2971
3168
|
|
|
2972
3169
|
// Unref so parent can exit and process runs independently
|
|
@@ -3027,12 +3224,106 @@ export function <span class="fstat-no" title="function not covered" >runScriptIn
|
|
|
3027
3224
|
// Ignore errors
|
|
3028
3225
|
}
|
|
3029
3226
|
}, 5000);
|
|
3227
|
+
|
|
3228
|
+
// Check for test results periodically (for watch mode tests)
|
|
3229
|
+
// Parse results every 10 seconds for the first 60 seconds, then every 30 seconds
|
|
3230
|
+
let parseAttempt = <span class="cstat-no" title="statement not covered" >0;</span>
|
|
3231
|
+
const parseInterval = <span class="cstat-no" title="statement not covered" >setInterval(<span class="fstat-no" title="function not covered" >async </span>() => {</span>
|
|
3232
|
+
<span class="cstat-no" title="statement not covered" > parseAttempt++;</span>
|
|
3233
|
+
|
|
3234
|
+
// Stop parsing after 10 minutes or if process is dead
|
|
3235
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (parseAttempt > 20 || !child.pid) {</span>
|
|
3236
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(parseInterval);</span>
|
|
3237
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3238
|
+
}
|
|
3239
|
+
|
|
3240
|
+
<span class="cstat-no" title="statement not covered" > await checkAndParseTestResults(logFile, projectPath, scriptName);</span>
|
|
3241
|
+
|
|
3242
|
+
// After first minute, slow down to every 30 seconds
|
|
3243
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (parseAttempt >= 6) {</span>
|
|
3244
|
+
<span class="cstat-no" title="statement not covered" > clearInterval(parseInterval);</span>
|
|
3245
|
+
const slowInterval = <span class="cstat-no" title="statement not covered" >setInterval(<span class="fstat-no" title="function not covered" >async </span>() => {</span>
|
|
3246
|
+
<span class="cstat-no" title="statement not covered" > await checkAndParseTestResults(logFile, projectPath, scriptName);</span>
|
|
3247
|
+
}, 30000);
|
|
3248
|
+
|
|
3249
|
+
// Stop after 10 minutes total
|
|
3250
|
+
<span class="cstat-no" title="statement not covered" > setTimeout(<span class="fstat-no" title="function not covered" >() =</span>> <span class="cstat-no" title="statement not covered" >clearInterval(slowInterval),</span> 540000);</span>
|
|
3251
|
+
}
|
|
3252
|
+
}, 10000); // Initial interval: every 10 seconds
|
|
3030
3253
|
|
|
3031
3254
|
// Resolve with PID since process is running in background
|
|
3032
3255
|
<span class="cstat-no" title="statement not covered" > resolve(child.pid);</span>
|
|
3033
3256
|
});
|
|
3034
3257
|
}
|
|
3035
3258
|
|
|
3259
|
+
/**
|
|
3260
|
+
* Check log file for test output and parse results
|
|
3261
|
+
*/
|
|
3262
|
+
async function <span class="fstat-no" title="function not covered" >checkAndParseTestResults(</span>logFile: string, projectPath: string, scriptName: string): Promise<void> {
|
|
3263
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
3264
|
+
// Only parse if script name suggests it's a test command
|
|
3265
|
+
const testScriptPatterns = <span class="cstat-no" title="statement not covered" >['test', 'spec', 'jest', 'vitest', 'mocha', 'pytest', 'unittest'];</span>
|
|
3266
|
+
const isTestScript = <span class="cstat-no" title="statement not covered" >testScriptPatterns.some(<span class="fstat-no" title="function not covered" >pattern </span>=> <span class="cstat-no" title="statement not covered" >scriptName.toLowerCase().includes(pattern))</span>;</span>
|
|
3267
|
+
|
|
3268
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isTestScript) {</span>
|
|
3269
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3270
|
+
}
|
|
3271
|
+
|
|
3272
|
+
// Read the log file
|
|
3273
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!fs.existsSync(logFile)) {</span>
|
|
3274
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3275
|
+
}
|
|
3276
|
+
|
|
3277
|
+
const logContent = <span class="cstat-no" title="statement not covered" >fs.readFileSync(logFile, 'utf-8');</span>
|
|
3278
|
+
|
|
3279
|
+
// Import test parser (dynamic to avoid circular dependency issues)
|
|
3280
|
+
const testParserPath = <span class="cstat-no" title="statement not covered" >path.join(__dirname, 'test-parser.js');</span>
|
|
3281
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!fs.existsSync(testParserPath)) {</span>
|
|
3282
|
+
// Parser not available (might be in development mode)
|
|
3283
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3284
|
+
}
|
|
3285
|
+
|
|
3286
|
+
const { parseTestOutput, isTestOutput } = <span class="cstat-no" title="statement not covered" >await import(testParserPath<span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >);</span></span></span>
|
|
3287
|
+
|
|
3288
|
+
// Check if output contains test results
|
|
3289
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!isTestOutput(logContent)) {</span>
|
|
3290
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3291
|
+
}
|
|
3292
|
+
|
|
3293
|
+
// Parse test results
|
|
3294
|
+
const parsed = <span class="cstat-no" title="statement not covered" >parseTestOutput(logContent);</span>
|
|
3295
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!parsed) {</span>
|
|
3296
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3297
|
+
}
|
|
3298
|
+
|
|
3299
|
+
// Get project from database
|
|
3300
|
+
const db = <span class="cstat-no" title="statement not covered" >getDatabaseManager();</span>
|
|
3301
|
+
const project = <span class="cstat-no" title="statement not covered" >db.getProjectByPath(projectPath);</span>
|
|
3302
|
+
<span class="cstat-no" title="statement not covered" > <span class="missing-if-branch" title="if path not taken" >I</span>if (!project) {</span>
|
|
3303
|
+
<span class="cstat-no" title="statement not covered" > return;</span>
|
|
3304
|
+
}
|
|
3305
|
+
|
|
3306
|
+
// Save test results to database
|
|
3307
|
+
<span class="cstat-no" title="statement not covered" > db.addTestResult(</span>
|
|
3308
|
+
project.id,
|
|
3309
|
+
scriptName,
|
|
3310
|
+
parsed.passed,
|
|
3311
|
+
parsed.failed,
|
|
3312
|
+
parsed.skipped,
|
|
3313
|
+
parsed.total,
|
|
3314
|
+
parsed.duration,
|
|
3315
|
+
parsed.coverage,
|
|
3316
|
+
parsed.framework,
|
|
3317
|
+
logContent.slice(-5000) // Store last 5000 chars of output
|
|
3318
|
+
);
|
|
3319
|
+
|
|
3320
|
+
<span class="cstat-no" title="statement not covered" > console.log(`\nš Test results saved: ${parsed.passed} passed, ${parsed.failed} failed, ${parsed.skipped} skipped`);</span>
|
|
3321
|
+
} catch (error) {
|
|
3322
|
+
// Silently fail - test parsing is optional
|
|
3323
|
+
<span class="cstat-no" title="statement not covered" > console.error('Error parsing test results:', error);</span>
|
|
3324
|
+
}
|
|
3325
|
+
}
|
|
3326
|
+
|
|
3036
3327
|
</pre></td></tr></table></pre>
|
|
3037
3328
|
|
|
3038
3329
|
<div class='push'></div><!-- for sticky footer -->
|
|
@@ -3040,7 +3331,7 @@ export function <span class="fstat-no" title="function not covered" >runScriptIn
|
|
|
3040
3331
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
3041
3332
|
Code coverage generated by
|
|
3042
3333
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
3043
|
-
at
|
|
3334
|
+
at 2026-01-08T01:22:23.536Z
|
|
3044
3335
|
</div>
|
|
3045
3336
|
<script src="prettify.js"></script>
|
|
3046
3337
|
<script>
|