@ai-dev-tools/csharp-copilot-core 0.0.30 → 0.0.31

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 (303) hide show
  1. package/package.json +1 -1
  2. package/out/analyze/cecil.d.ts +0 -1
  3. package/out/analyze/cecil.js +0 -42
  4. package/out/analyze/cecil.js.map +0 -1
  5. package/out/analyze/checkCodeSyntax.d.ts +0 -7
  6. package/out/analyze/checkCodeSyntax.js +0 -67
  7. package/out/analyze/checkCodeSyntax.js.map +0 -1
  8. package/out/analyze/generateCodeDependency.d.ts +0 -6
  9. package/out/analyze/generateCodeDependency.js +0 -126
  10. package/out/analyze/generateCodeDependency.js.map +0 -1
  11. package/out/analyze/installAnalyzerTool.d.ts +0 -1
  12. package/out/analyze/installAnalyzerTool.js +0 -82
  13. package/out/analyze/installAnalyzerTool.js.map +0 -1
  14. package/out/batch/generateCodeTests.d.ts +0 -6
  15. package/out/batch/generateCodeTests.js +0 -147
  16. package/out/batch/generateCodeTests.js.map +0 -1
  17. package/out/batch/getFolderCodeFile.d.ts +0 -1
  18. package/out/batch/getFolderCodeFile.js +0 -19
  19. package/out/batch/getFolderCodeFile.js.map +0 -1
  20. package/out/batch/getProjectCodeFile.d.ts +0 -4
  21. package/out/batch/getProjectCodeFile.js +0 -86
  22. package/out/batch/getProjectCodeFile.js.map +0 -1
  23. package/out/batch/getSolutionCodeFile.d.ts +0 -8
  24. package/out/batch/getSolutionCodeFile.js +0 -70
  25. package/out/batch/getSolutionCodeFile.js.map +0 -1
  26. package/out/benchmark/formatToMarkdown.d.ts +0 -2
  27. package/out/benchmark/formatToMarkdown.js +0 -101
  28. package/out/benchmark/formatToMarkdown.js.map +0 -1
  29. package/out/benchmark/generateBenchmarkReport.d.ts +0 -1
  30. package/out/benchmark/generateBenchmarkReport.js +0 -82
  31. package/out/benchmark/generateBenchmarkReport.js.map +0 -1
  32. package/out/codeCoverage/codeCoverage.d.ts +0 -6
  33. package/out/codeCoverage/codeCoverage.js +0 -39
  34. package/out/codeCoverage/codeCoverage.js.map +0 -1
  35. package/out/codeCoverage/codeCoverageReport.d.ts +0 -6
  36. package/out/codeCoverage/codeCoverageReport.js +0 -76
  37. package/out/codeCoverage/codeCoverageReport.js.map +0 -1
  38. package/out/codeCoverage/extractCodeCoverageInfo.d.ts +0 -2
  39. package/out/codeCoverage/extractCodeCoverageInfo.js +0 -80
  40. package/out/codeCoverage/extractCodeCoverageInfo.js.map +0 -1
  41. package/out/codeCoverage/extractCoverageReportPath.d.ts +0 -1
  42. package/out/codeCoverage/extractCoverageReportPath.js +0 -24
  43. package/out/codeCoverage/extractCoverageReportPath.js.map +0 -1
  44. package/out/codeCoverage/generateCodeCoverageReport.d.ts +0 -1
  45. package/out/codeCoverage/generateCodeCoverageReport.js +0 -30
  46. package/out/codeCoverage/generateCodeCoverageReport.js.map +0 -1
  47. package/out/codeCoverage/getCodeCoverageSetting.d.ts +0 -1
  48. package/out/codeCoverage/getCodeCoverageSetting.js +0 -58
  49. package/out/codeCoverage/getCodeCoverageSetting.js.map +0 -1
  50. package/out/codeCoverage/reportTool.d.ts +0 -2
  51. package/out/codeCoverage/reportTool.js +0 -22
  52. package/out/codeCoverage/reportTool.js.map +0 -1
  53. package/out/codeCoverage/simplifyCoverageXml.d.ts +0 -2
  54. package/out/codeCoverage/simplifyCoverageXml.js +0 -117
  55. package/out/codeCoverage/simplifyCoverageXml.js.map +0 -1
  56. package/out/codebk/250804prompt/buildAfGuidelines.liquid +0 -15
  57. package/out/codebk/250804prompt/general/generalBuildAutofixGuidelines.liquid +0 -13
  58. package/out/codebk/250804prompt/general/generalUtGuidelines.liquid +0 -18
  59. package/out/codebk/250804prompt/generateUtAutoFix.liquid +0 -19
  60. package/out/codebk/250804prompt/generateUtGuidelines.liquid +0 -13
  61. package/out/codebk/250804prompt/generateUtSystem.liquid +0 -5
  62. package/out/codebk/250804prompt/generateUtUserInput.liquid +0 -27
  63. package/out/codebk/250804prompt/testAfGuidelines.liquid +0 -6
  64. package/out/codebk/250804prompt/xap/xapBuildAutofixGuidelines.liquid +0 -13
  65. package/out/codebk/250804prompt/xap/xapCodeCodeDependency.liquid +0 -0
  66. package/out/codebk/250804prompt/xap/xapCodeSample.liquid +0 -38
  67. package/out/codebk/250804prompt/xap/xapUtGuideline-240804.liquid +0 -36
  68. package/out/codebk/250804prompt/xap/xapUtGuideline.liquid +0 -36
  69. package/out/codebk/childProcessManager.d.ts +0 -1
  70. package/out/codebk/childProcessManager.js +0 -50
  71. package/out/codebk/childProcessManager.js.map +0 -1
  72. package/out/codebk/msBuidSpawn.d.ts +0 -1
  73. package/out/codebk/msBuidSpawn.js +0 -58
  74. package/out/codebk/msBuidSpawn.js.map +0 -1
  75. package/out/codebk/msBuild.d.ts +0 -1
  76. package/out/codebk/msBuild.js +0 -123
  77. package/out/codebk/msBuild.js.map +0 -1
  78. package/out/codebk/old/generateXapTestAutoFix.liquid +0 -12
  79. package/out/codebk/old/generateXapTestGuidelines-fm.liquid +0 -68
  80. package/out/codebk/old/generateXapTestGuidelines.liquid +0 -28
  81. package/out/codebk/old/xapGuideline-fm.liquid +0 -149
  82. package/out/codebk/old/xapGuideline.liquid +0 -37
  83. package/out/codebk/oldExec/checkCodeSyntax.d.ts +0 -1
  84. package/out/codebk/oldExec/checkCodeSyntax.js +0 -81
  85. package/out/codebk/oldExec/checkCodeSyntax.js.map +0 -1
  86. package/out/codebk/oldExec/codeCoverage.d.ts +0 -1
  87. package/out/codebk/oldExec/codeCoverage.js +0 -54
  88. package/out/codebk/oldExec/codeCoverage.js.map +0 -1
  89. package/out/codebk/oldExec/codeCoverageReport.d.ts +0 -1
  90. package/out/codebk/oldExec/codeCoverageReport.js +0 -64
  91. package/out/codebk/oldExec/codeCoverageReport.js.map +0 -1
  92. package/out/codebk/oldExec/containsMethods.d.ts +0 -1
  93. package/out/codebk/oldExec/containsMethods.js +0 -74
  94. package/out/codebk/oldExec/containsMethods.js.map +0 -1
  95. package/out/codebk/oldExec/generateCodeDependency.d.ts +0 -1
  96. package/out/codebk/oldExec/generateCodeDependency.js +0 -95
  97. package/out/codebk/oldExec/generateCodeDependency.js.map +0 -1
  98. package/out/codebk/oldExec/msBuild.d.ts +0 -1
  99. package/out/codebk/oldExec/msBuild.js +0 -53
  100. package/out/codebk/oldExec/msBuild.js.map +0 -1
  101. package/out/codebk/oldExec/vsTest.d.ts +0 -1
  102. package/out/codebk/oldExec/vsTest.js +0 -71
  103. package/out/codebk/oldExec/vsTest.js.map +0 -1
  104. package/out/codebk/prompts/general/generalUnitTestGuidelines-20250702.liquid +0 -56
  105. package/out/codebk/prompts/generateXapTestGuidelines-20250704.liquid +0 -21
  106. package/out/codebk/prompts/generateXapTestGuidelines-o.liquid +0 -29
  107. package/out/codebk/prompts/xap/xapGuideline-o.liquid +0 -45
  108. package/out/codebk/testbuildkill.d.ts +0 -1
  109. package/out/codebk/testbuildkill.js +0 -37
  110. package/out/codebk/testbuildkill.js.map +0 -1
  111. package/out/command/index.d.ts +0 -2
  112. package/out/command/index.js +0 -94
  113. package/out/command/index.js.map +0 -1
  114. package/out/command/utGenWrapper.d.ts +0 -4
  115. package/out/command/utGenWrapper.js +0 -46
  116. package/out/command/utGenWrapper.js.map +0 -1
  117. package/out/exit/childProcessManager.d.ts +0 -2
  118. package/out/exit/childProcessManager.js +0 -43
  119. package/out/exit/childProcessManager.js.map +0 -1
  120. package/out/exit/setupProcessSignalHandler.d.ts +0 -1
  121. package/out/exit/setupProcessSignalHandler.js +0 -18
  122. package/out/exit/setupProcessSignalHandler.js.map +0 -1
  123. package/out/gen/autoFix.d.ts +0 -4
  124. package/out/gen/autoFix.js +0 -125
  125. package/out/gen/autoFix.js.map +0 -1
  126. package/out/gen/csharpUtGen.d.ts +0 -2
  127. package/out/gen/csharpUtGen.js +0 -125
  128. package/out/gen/csharpUtGen.js.map +0 -1
  129. package/out/gen/ensureValidLLMResponse.d.ts +0 -1
  130. package/out/gen/ensureValidLLMResponse.js +0 -19
  131. package/out/gen/ensureValidLLMResponse.js.map +0 -1
  132. package/out/gen/postGen/extractCodeFromResponse.d.ts +0 -1
  133. package/out/gen/postGen/extractCodeFromResponse.js +0 -37
  134. package/out/gen/postGen/extractCodeFromResponse.js.map +0 -1
  135. package/out/gen/postGen/postGenProcess.d.ts +0 -1
  136. package/out/gen/postGen/postGenProcess.js +0 -37
  137. package/out/gen/postGen/postGenProcess.js.map +0 -1
  138. package/out/gen/postGen/removeComments.d.ts +0 -1
  139. package/out/gen/postGen/removeComments.js +0 -92
  140. package/out/gen/postGen/removeComments.js.map +0 -1
  141. package/out/gen/postGen/removeSingleLines.d.ts +0 -1
  142. package/out/gen/postGen/removeSingleLines.js +0 -28
  143. package/out/gen/postGen/removeSingleLines.js.map +0 -1
  144. package/out/gen/postGen/repairRequiredNameSpaces.d.ts +0 -2
  145. package/out/gen/postGen/repairRequiredNameSpaces.js +0 -141
  146. package/out/gen/postGen/repairRequiredNameSpaces.js.map +0 -1
  147. package/out/gen/postGen/validateTestCode.d.ts +0 -1
  148. package/out/gen/postGen/validateTestCode.js +0 -14
  149. package/out/gen/postGen/validateTestCode.js.map +0 -1
  150. package/out/gen/preGen/excludeFileName.d.ts +0 -1
  151. package/out/gen/preGen/excludeFileName.js +0 -49
  152. package/out/gen/preGen/excludeFileName.js.map +0 -1
  153. package/out/gen/preGen/excludeSpecificTag.d.ts +0 -1
  154. package/out/gen/preGen/excludeSpecificTag.js +0 -18
  155. package/out/gen/preGen/excludeSpecificTag.js.map +0 -1
  156. package/out/gen/preGen/preGenProcess.d.ts +0 -1
  157. package/out/gen/preGen/preGenProcess.js +0 -22
  158. package/out/gen/preGen/preGenProcess.js.map +0 -1
  159. package/out/gen/preGen/validateCode.d.ts +0 -3
  160. package/out/gen/preGen/validateCode.js +0 -62
  161. package/out/gen/preGen/validateCode.js.map +0 -1
  162. package/out/index.d.ts +0 -3
  163. package/out/index.js +0 -10
  164. package/out/index.js.map +0 -1
  165. package/out/llm/model/Gpt.d.ts +0 -1
  166. package/out/llm/model/Gpt.js +0 -93
  167. package/out/llm/model/Gpt.js.map +0 -1
  168. package/out/llm/preparePrompt.d.ts +0 -2
  169. package/out/llm/preparePrompt.js +0 -135
  170. package/out/llm/preparePrompt.js.map +0 -1
  171. package/out/llm/prompt/buildAfGuidelines.liquid +0 -15
  172. package/out/llm/prompt/general/generalBuildAutofixGuidelines.liquid +0 -13
  173. package/out/llm/prompt/general/generalUtGuidelines.liquid +0 -16
  174. package/out/llm/prompt/generateUtAutoFix.liquid +0 -23
  175. package/out/llm/prompt/generateUtDependency.liquid +0 -3
  176. package/out/llm/prompt/generateUtSystem.liquid +0 -5
  177. package/out/llm/prompt/generateUtTemplate.liquid +0 -32
  178. package/out/llm/prompt/generateUtUserInput.liquid +0 -4
  179. package/out/llm/prompt/xap/xapBuildAutofixGuidelines.liquid +0 -13
  180. package/out/llm/prompt/xap/xapCodeCodeDependency.liquid +0 -0
  181. package/out/llm/prompt/xap/xapCodeSample.liquid +0 -38
  182. package/out/llm/prompt/xap/xapUtGuideline.liquid +0 -37
  183. package/out/llm/sendRequestToLLM.d.ts +0 -4
  184. package/out/llm/sendRequestToLLM.js +0 -9
  185. package/out/llm/sendRequestToLLM.js.map +0 -1
  186. package/out/llm/sendRequestToSelfHostLLM.d.ts +0 -4
  187. package/out/llm/sendRequestToSelfHostLLM.js +0 -41
  188. package/out/llm/sendRequestToSelfHostLLM.js.map +0 -1
  189. package/out/metrics/appInsightTelemetry.d.ts +0 -6
  190. package/out/metrics/appInsightTelemetry.js +0 -77
  191. package/out/metrics/appInsightTelemetry.js.map +0 -1
  192. package/out/metrics/machineId.d.ts +0 -11
  193. package/out/metrics/machineId.js +0 -85
  194. package/out/metrics/machineId.js.map +0 -1
  195. package/out/setup/setup.d.ts +0 -1
  196. package/out/setup/setup.js +0 -10
  197. package/out/setup/setup.js.map +0 -1
  198. package/out/setup/setupConsole.d.ts +0 -1
  199. package/out/setup/setupConsole.js +0 -23
  200. package/out/setup/setupConsole.js.map +0 -1
  201. package/out/setup/setupLLMRequest.d.ts +0 -2
  202. package/out/setup/setupLLMRequest.js +0 -10
  203. package/out/setup/setupLLMRequest.js.map +0 -1
  204. package/out/tools/devenvcom.cmd +0 -13
  205. package/out/tools/devenvexe.cmd +0 -13
  206. package/out/tools/msbuildexe.cmd +0 -13
  207. package/out/tools/vstestexe.cmd +0 -13
  208. package/out/types/benchmark.d.ts +0 -11
  209. package/out/types/benchmark.js +0 -3
  210. package/out/types/benchmark.js.map +0 -1
  211. package/out/types/buildResult.d.ts +0 -8
  212. package/out/types/buildResult.js +0 -3
  213. package/out/types/buildResult.js.map +0 -1
  214. package/out/types/constants.d.ts +0 -6
  215. package/out/types/constants.js +0 -10
  216. package/out/types/constants.js.map +0 -1
  217. package/out/types/genResult.d.ts +0 -10
  218. package/out/types/genResult.js +0 -3
  219. package/out/types/genResult.js.map +0 -1
  220. package/out/types/testResult.d.ts +0 -12
  221. package/out/types/testResult.js +0 -3
  222. package/out/types/testResult.js.map +0 -1
  223. package/out/types/verifyResult.d.ts +0 -8
  224. package/out/types/verifyResult.js +0 -3
  225. package/out/types/verifyResult.js.map +0 -1
  226. package/out/utils/checkTestProject.d.ts +0 -2
  227. package/out/utils/checkTestProject.js +0 -79
  228. package/out/utils/checkTestProject.js.map +0 -1
  229. package/out/utils/checkXapCode.d.ts +0 -2
  230. package/out/utils/checkXapCode.js +0 -59
  231. package/out/utils/checkXapCode.js.map +0 -1
  232. package/out/utils/delay.d.ts +0 -1
  233. package/out/utils/delay.js +0 -7
  234. package/out/utils/delay.js.map +0 -1
  235. package/out/utils/detectTestFramework.d.ts +0 -1
  236. package/out/utils/detectTestFramework.js +0 -33
  237. package/out/utils/detectTestFramework.js.map +0 -1
  238. package/out/utils/fileUtils.d.ts +0 -2
  239. package/out/utils/fileUtils.js +0 -42
  240. package/out/utils/fileUtils.js.map +0 -1
  241. package/out/utils/generateCodeSha256.d.ts +0 -1
  242. package/out/utils/generateCodeSha256.js +0 -46
  243. package/out/utils/generateCodeSha256.js.map +0 -1
  244. package/out/utils/getCodeStructurePath.d.ts +0 -5
  245. package/out/utils/getCodeStructurePath.js +0 -155
  246. package/out/utils/getCodeStructurePath.js.map +0 -1
  247. package/out/utils/getOrCreateDir.d.ts +0 -2
  248. package/out/utils/getOrCreateDir.js +0 -63
  249. package/out/utils/getOrCreateDir.js.map +0 -1
  250. package/out/utils/getTestCodeInfo.d.ts +0 -2
  251. package/out/utils/getTestCodeInfo.js +0 -121
  252. package/out/utils/getTestCodeInfo.js.map +0 -1
  253. package/out/utils/getTestFile.d.ts +0 -13
  254. package/out/utils/getTestFile.js +0 -295
  255. package/out/utils/getTestFile.js.map +0 -1
  256. package/out/utils/parseBuildResult.d.ts +0 -3
  257. package/out/utils/parseBuildResult.js +0 -44
  258. package/out/utils/parseBuildResult.js.map +0 -1
  259. package/out/utils/parseSyntaxCheckResult.d.ts +0 -2
  260. package/out/utils/parseSyntaxCheckResult.js +0 -38
  261. package/out/utils/parseSyntaxCheckResult.js.map +0 -1
  262. package/out/utils/parseVstestResult.d.ts +0 -3
  263. package/out/utils/parseVstestResult.js +0 -61
  264. package/out/utils/parseVstestResult.js.map +0 -1
  265. package/out/utils/removeFailedTestMethods.d.ts +0 -3
  266. package/out/utils/removeFailedTestMethods.js +0 -207
  267. package/out/utils/removeFailedTestMethods.js.map +0 -1
  268. package/out/utils/runCommand.d.ts +0 -1
  269. package/out/utils/runCommand.js +0 -14
  270. package/out/utils/runCommand.js.map +0 -1
  271. package/out/utils/spawnExec.d.ts +0 -1
  272. package/out/utils/spawnExec.js +0 -80
  273. package/out/utils/spawnExec.js.map +0 -1
  274. package/out/utils/verifyBuildErrorCausedFile.d.ts +0 -1
  275. package/out/utils/verifyBuildErrorCausedFile.js +0 -60
  276. package/out/utils/verifyBuildErrorCausedFile.js.map +0 -1
  277. package/out/utils/verifyTestCode.d.ts +0 -2
  278. package/out/utils/verifyTestCode.js +0 -25
  279. package/out/utils/verifyTestCode.js.map +0 -1
  280. package/out/utils/writeGenCode.d.ts +0 -1
  281. package/out/utils/writeGenCode.js +0 -50
  282. package/out/utils/writeGenCode.js.map +0 -1
  283. package/out/vs/msBuild.d.ts +0 -13
  284. package/out/vs/msBuild.js +0 -49
  285. package/out/vs/msBuild.js.map +0 -1
  286. package/out/vs/vsTest.d.ts +0 -15
  287. package/out/vs/vsTest.js +0 -75
  288. package/out/vs/vsTest.js.map +0 -1
  289. package/out/vs/vsTools.d.ts +0 -7
  290. package/out/vs/vsTools.js +0 -177
  291. package/out/vs/vsTools.js.map +0 -1
  292. package/out/vsPlugin/getVsPluginVerifyResult.d.ts +0 -2
  293. package/out/vsPlugin/getVsPluginVerifyResult.js +0 -41
  294. package/out/vsPlugin/getVsPluginVerifyResult.js.map +0 -1
  295. package/out/vsPlugin/interactionConstants.d.ts +0 -2
  296. package/out/vsPlugin/interactionConstants.js +0 -10
  297. package/out/vsPlugin/interactionConstants.js.map +0 -1
  298. package/out/vsPlugin/sendStdToVsPlugin.d.ts +0 -1
  299. package/out/vsPlugin/sendStdToVsPlugin.js +0 -12
  300. package/out/vsPlugin/sendStdToVsPlugin.js.map +0 -1
  301. package/out/vsPlugin/stdListener.d.ts +0 -3
  302. package/out/vsPlugin/stdListener.js +0 -57
  303. package/out/vsPlugin/stdListener.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-dev-tools/csharp-copilot-core",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "Core library for csharp-copilot",
5
5
  "main": "out/index.js",
6
6
  "typings": "out/index.d.ts",
@@ -1 +0,0 @@
1
- export declare function analyzeCecil(assemblyPath: string): Promise<any>;
@@ -1,42 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.analyzeCecil = analyzeCecil;
7
- const edge_js_1 = __importDefault(require("edge-js"));
8
- const path_1 = __importDefault(require("path"));
9
- const analyzeCecilFunc = edge_js_1.default.func({
10
- source: `
11
- using System.Threading.Tasks;
12
- using Mono.Cecil;
13
- using System.Linq;
14
-
15
- public class Startup {
16
- public async Task<object> Invoke(dynamic input) {
17
- var asm = AssemblyDefinition.ReadAssembly((string)input);
18
- var types = asm.MainModule.Types.Select(t => new {
19
- t.FullName,
20
- Methods = t.Methods.Select(m => m.FullName).ToArray()
21
- }).ToArray();
22
- return types;
23
- }
24
- }
25
- `,
26
- references: [
27
- path_1.default.resolve(__dirname, './dotnetLibs/Mono.Cecil.dll')
28
- ]
29
- });
30
- function analyzeCecil(assemblyPath) {
31
- return new Promise((resolve, reject) => {
32
- analyzeCecilFunc(assemblyPath, (err, result) => {
33
- if (err)
34
- reject(err);
35
- else
36
- resolve(result);
37
- });
38
- });
39
- }
40
- const res = analyzeCecil("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Tests\\bin\\Debug\\SharedSegments.Tests.dll");
41
- console.log('Cecil Analysis Result:', res);
42
- //# sourceMappingURL=cecil.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cecil.js","sourceRoot":"","sources":["../../src/analyze/cecil.ts"],"names":[],"mappings":";;;;;AAyBA,oCAOC;AAhCD,sDAA2B;AAC3B,gDAAwB;AAExB,MAAM,gBAAgB,GAAG,iBAAI,CAAC,IAAI,CAAC;IAC/B,MAAM,EAAE;;;;;;;;;;;;;;;GAeT;IACC,UAAU,EAAE;QACR,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,6BAA6B,CAAC;KACzD;CACJ,CAAC,CAAC;AAEH,SAAgB,YAAY,CAAC,YAAoB;IAC7C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,gBAAgB,CAAC,YAAY,EAAE,CAAC,GAAU,EAAE,MAAW,EAAE,EAAE;YACvD,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAChB,OAAO,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,GAAG,GAAG,YAAY,CAAC,8HAA8H,CAAC,CAAA;AACxJ,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC","sourcesContent":["import edge from 'edge-js';\r\nimport path from 'path';\r\n\r\nconst analyzeCecilFunc = edge.func({\r\n source: `\r\n using System.Threading.Tasks;\r\n using Mono.Cecil;\r\n using System.Linq;\r\n\r\n public class Startup {\r\n public async Task<object> Invoke(dynamic input) {\r\n var asm = AssemblyDefinition.ReadAssembly((string)input);\r\n var types = asm.MainModule.Types.Select(t => new {\r\n t.FullName,\r\n Methods = t.Methods.Select(m => m.FullName).ToArray()\r\n }).ToArray();\r\n return types;\r\n }\r\n }\r\n `,\r\n references: [\r\n path.resolve(__dirname, './dotnetLibs/Mono.Cecil.dll')\r\n ]\r\n});\r\n\r\nexport function analyzeCecil(assemblyPath: string): Promise<any> {\r\n return new Promise((resolve, reject) => {\r\n analyzeCecilFunc(assemblyPath, (err: Error, result: any) => {\r\n if (err) reject(err);\r\n else resolve(result);\r\n });\r\n });\r\n}\r\n\r\nconst res = analyzeCecil(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Tests\\\\bin\\\\Debug\\\\SharedSegments.Tests.dll\")\r\nconsole.log('Cecil Analysis Result:', res);\r\n"]}
@@ -1,7 +0,0 @@
1
- import { VerifyResult } from '../types/verifyResult';
2
- export declare function checkCodeSyntax(testFilePath: string): Promise<VerifyResult>;
3
- export declare function codeSyntaxCheckErrorHandler(error: any): boolean;
4
- export declare function codeSyntaxCheckCloseHandler(code: any, stdout: any, stderr: any): {
5
- success: boolean;
6
- message: any;
7
- };
@@ -1,67 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkCodeSyntax = checkCodeSyntax;
4
- exports.codeSyntaxCheckErrorHandler = codeSyntaxCheckErrorHandler;
5
- exports.codeSyntaxCheckCloseHandler = codeSyntaxCheckCloseHandler;
6
- const parseBuildResult_1 = require("../utils/parseBuildResult");
7
- const getOrCreateDir_1 = require("../utils/getOrCreateDir");
8
- const parseSyntaxCheckResult_1 = require("../utils/parseSyntaxCheckResult");
9
- const spawnExec_1 = require("../utils/spawnExec");
10
- const DllRefCacheDir = "./dllref/";
11
- async function checkCodeSyntax(testFilePath) {
12
- const { success, message } = await runTestCodeSyntaxCheck(testFilePath);
13
- if (!success) {
14
- console.error(`Code analysis failed: ${message}`);
15
- return { success: true, message, buildErrors: undefined, testResult: undefined }; // return true to build the project since syntax check fails
16
- }
17
- if (message.includes("PassedSyntaxCheck")) {
18
- // console.log(`Pass Syntax check: ${message}`);
19
- return { success: true, message, buildErrors: undefined, testResult: undefined };
20
- }
21
- if (message.includes("SyntaxErrors:")) {
22
- const syntaxErrors = getSyntaxErrors(message);
23
- const buildResult = (0, parseSyntaxCheckResult_1.parseSyntaxCheckErrors)(testFilePath, syntaxErrors);
24
- const errorMessage = (0, parseBuildResult_1.formatMsbuildResultToMarkdown)(buildResult);
25
- // console.error(`Syntax errors found in the code:\n ${syntaxErrors}`);
26
- return { success: false, message: errorMessage, buildErrors: buildResult, testResult: undefined };
27
- }
28
- return { success: true, message, buildErrors: undefined, testResult: undefined };
29
- }
30
- function getSyntaxErrors(message) {
31
- const match = message.match(/SyntaxErrors:\s*\n([\s\S]*)/);
32
- if (!match || match.length < 2) {
33
- return "";
34
- }
35
- return match[1];
36
- }
37
- function runTestCodeSyntaxCheck(testCodePath) {
38
- const args = ['-b', testCodePath];
39
- const workDir = (0, getOrCreateDir_1.getTmpCacheDir)(DllRefCacheDir);
40
- console.log(`Running Code Syntax Check...`);
41
- return (0, spawnExec_1.runSpawn)("ccanalyzer", args, workDir, codeSyntaxCheckErrorHandler, codeSyntaxCheckCloseHandler);
42
- }
43
- function codeSyntaxCheckErrorHandler(error) {
44
- console.error(`codeSyntaxCheckErrorHandler - failed: ${error.message}`);
45
- return true;
46
- }
47
- function codeSyntaxCheckCloseHandler(code, stdout, stderr) {
48
- if (code !== 0) {
49
- console.error(`Code Syntax check failed with exit code ${code}`);
50
- return { success: false, message: stdout };
51
- }
52
- if (stderr) {
53
- console.error(`Warnings/Errors:\n${stderr}`);
54
- return { success: false, message: stdout };
55
- }
56
- console.log(`Code Syntax check succeeded:\n${stdout}`);
57
- return { success: true, message: stdout };
58
- }
59
- // checkCodeSyntax("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Tests\\Eplant\\PluginTest\\ResponseBuilder\\EplantUserUpdateResponseBuilderTest.cs",).then(result => {
60
- // checkCodeSyntax("D:\\code\\AIUnitTestExample\\test\\ToListinator.Tests\\ToListCountAnalyzerTests.cs",).then(result => {
61
- // if (result.success) {
62
- // console.log("Code syntax check passed:", result.message);
63
- // } else {
64
- // console.error("Code syntax check failed:", result.message);
65
- // }
66
- // });
67
- //# sourceMappingURL=checkCodeSyntax.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkCodeSyntax.js","sourceRoot":"","sources":["../../src/analyze/checkCodeSyntax.ts"],"names":[],"mappings":"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","sourcesContent":["import { VerifyResult } from '../types/verifyResult';\r\nimport { formatMsbuildResultToMarkdown } from '../utils/parseBuildResult';\r\nimport { getTmpCacheDir } from '../utils/getOrCreateDir';\r\nimport { parseSyntaxCheckErrors } from '../utils/parseSyntaxCheckResult';\r\nimport { runSpawn } from '../utils/spawnExec';\r\n\r\nconst DllRefCacheDir = \"./dllref/\"\r\n\r\nexport async function checkCodeSyntax(testFilePath: string): Promise<VerifyResult> {\r\n const { success, message } = await runTestCodeSyntaxCheck(testFilePath);\r\n if (!success) {\r\n console.error(`Code analysis failed: ${message}`);\r\n return { success: true, message, buildErrors: undefined, testResult: undefined }; // return true to build the project since syntax check fails\r\n }\r\n\r\n if (message.includes(\"PassedSyntaxCheck\")) {\r\n // console.log(`Pass Syntax check: ${message}`);\r\n return { success: true, message, buildErrors: undefined, testResult: undefined };\r\n }\r\n\r\n if (message.includes(\"SyntaxErrors:\")) {\r\n const syntaxErrors = getSyntaxErrors(message);\r\n const buildResult = parseSyntaxCheckErrors(testFilePath, syntaxErrors);\r\n const errorMessage = formatMsbuildResultToMarkdown(buildResult);\r\n // console.error(`Syntax errors found in the code:\\n ${syntaxErrors}`);\r\n return { success: false, message: errorMessage, buildErrors: buildResult, testResult: undefined };\r\n }\r\n\r\n return { success: true, message, buildErrors: undefined, testResult: undefined };\r\n}\r\n\r\nfunction getSyntaxErrors(message: string) {\r\n const match = message.match(/SyntaxErrors:\\s*\\n([\\s\\S]*)/);\r\n if (!match || match.length < 2) {\r\n return \"\";\r\n }\r\n\r\n return match[1];\r\n}\r\n\r\nfunction runTestCodeSyntaxCheck(testCodePath: string): Promise<any> {\r\n const args = ['-b', testCodePath];\r\n const workDir = getTmpCacheDir(DllRefCacheDir);\r\n console.log(`Running Code Syntax Check...`);\r\n return runSpawn(\"ccanalyzer\", args, workDir, codeSyntaxCheckErrorHandler, codeSyntaxCheckCloseHandler);\r\n}\r\n\r\n\r\nexport function codeSyntaxCheckErrorHandler(error) {\r\n console.error(`codeSyntaxCheckErrorHandler - failed: ${error.message}`);\r\n return true;\r\n}\r\n\r\nexport function codeSyntaxCheckCloseHandler(code, stdout, stderr) {\r\n if (code !== 0) {\r\n console.error(`Code Syntax check failed with exit code ${code}`);\r\n return { success: false, message: stdout };\r\n }\r\n\r\n if (stderr) {\r\n console.error(`Warnings/Errors:\\n${stderr}`);\r\n return { success: false, message: stdout };\r\n }\r\n\r\n console.log(`Code Syntax check succeeded:\\n${stdout}`);\r\n return { success: true, message: stdout };\r\n}\r\n\r\n// checkCodeSyntax(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Tests\\\\Eplant\\\\PluginTest\\\\ResponseBuilder\\\\EplantUserUpdateResponseBuilderTest.cs\",).then(result => {\r\n// checkCodeSyntax(\"D:\\\\code\\\\AIUnitTestExample\\\\test\\\\ToListinator.Tests\\\\ToListCountAnalyzerTests.cs\",).then(result => {\r\n// if (result.success) {\r\n// console.log(\"Code syntax check passed:\", result.message);\r\n// } else {\r\n// console.error(\"Code syntax check failed:\", result.message);\r\n// }\r\n// });"]}
@@ -1,6 +0,0 @@
1
- export declare function generateCodeDependency(sourceCodePath: string, nugetPackagePath?: string): Promise<string>;
2
- export declare function codeAnalyzerErrorHandler(error: any): boolean;
3
- export declare function codeAnalyzerCloseHandler(code: any, stdout: any, stderr: any): {
4
- success: boolean;
5
- message: any;
6
- };
@@ -1,126 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.generateCodeDependency = generateCodeDependency;
37
- exports.codeAnalyzerErrorHandler = codeAnalyzerErrorHandler;
38
- exports.codeAnalyzerCloseHandler = codeAnalyzerCloseHandler;
39
- const fs = __importStar(require("fs"));
40
- const path = __importStar(require("path"));
41
- const generateCodeSha256_1 = require("../utils/generateCodeSha256");
42
- const getOrCreateDir_1 = require("../utils/getOrCreateDir");
43
- const spawnExec_1 = require("../utils/spawnExec");
44
- const DepAnalyzerDir = "./deps/";
45
- async function generateCodeDependency(sourceCodePath, nugetPackagePath = null) {
46
- const startTime = Date.now();
47
- const normalizedPath = path.normalize(sourceCodePath);
48
- const codeDepsFileName = normalizedPath.replace(".cs", "").replace(":", "").replaceAll(".", "").split("\\").reverse().join("_");
49
- const codeDepsDir = (0, getOrCreateDir_1.getTmpCacheDir)(DepAnalyzerDir);
50
- const codeDepsFilePath = path.join(codeDepsDir, codeDepsFileName + ".deps");
51
- let depsStr;
52
- if (fs.existsSync(codeDepsFilePath)) {
53
- depsStr = getCachedCodeDeps(normalizedPath, codeDepsFilePath);
54
- }
55
- if (!depsStr) {
56
- const { success, message } = await runCsharpCodeAnalyzer(normalizedPath, nugetPackagePath);
57
- if (!success) {
58
- console.error(`Code analysis failed: ${message}`);
59
- return "";
60
- }
61
- depsStr = getDependency(codeDepsFilePath);
62
- }
63
- console.log(`Generate depencency time: ${(Date.now() - startTime) / 1000} seconds`);
64
- return depsStr;
65
- }
66
- function runCsharpCodeAnalyzer(sourceCodePath, nugetPackagePath = null) {
67
- const args = ['-c', sourceCodePath];
68
- if (nugetPackagePath) {
69
- args.push('-p');
70
- args.push(nugetPackagePath);
71
- }
72
- const workDir = (0, getOrCreateDir_1.getTmpCacheDir)(DepAnalyzerDir);
73
- console.log('📦 Running Csharp code analyzer...');
74
- return (0, spawnExec_1.runSpawn)("ccanalyzer", args, workDir, codeAnalyzerErrorHandler, codeAnalyzerCloseHandler);
75
- }
76
- function codeAnalyzerErrorHandler(error) {
77
- console.error(`codeAnalyzerErrorHandler - failed: ${error.message}`);
78
- return true;
79
- }
80
- function codeAnalyzerCloseHandler(code, stdout, stderr) {
81
- if (code !== 0) {
82
- console.error(`Code Analyze failed with exit code ${code}`);
83
- return { success: false, message: stdout };
84
- }
85
- if (stderr) {
86
- console.error(`Warnings/Errors:\n${stderr}`);
87
- return { success: false, message: stdout };
88
- }
89
- console.log(`Code Analyze succeeded:\n${stdout}`);
90
- return { success: true, message: stdout };
91
- }
92
- function getCachedCodeDeps(sourceCodePath, depsFilePath) {
93
- try {
94
- const fileContent = fs.readFileSync(depsFilePath, 'utf-8');
95
- const lines = fileContent.split(/\r?\n/);
96
- const cachedSha256 = lines[0];
97
- const depsContent = lines.slice(1).join('\n').trim();
98
- const currentSha256 = (0, generateCodeSha256_1.generateCodeSha256)(sourceCodePath);
99
- if (currentSha256 === cachedSha256) {
100
- console.log('code unchanged, returning cached deps.');
101
- return depsContent;
102
- }
103
- else {
104
- console.log('code has changed.');
105
- return null;
106
- }
107
- }
108
- catch (err) {
109
- console.error('Error:', err);
110
- return null;
111
- }
112
- }
113
- function getDependency(depsFilePath) {
114
- const fileContent = fs.readFileSync(depsFilePath, 'utf-8').trim();
115
- const lines = fileContent.split(/\r?\n/);
116
- const dependencyStr = lines.slice(1).join('\n');
117
- return dependencyStr;
118
- }
119
- // generateCodeDependency("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Plugins\\Workflows\\Eplant\\Conditions\\EplantRequestCategoryCondition.cs");
120
- // generateCodeDependency("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Plugins\\Workflows\\Eplant\\ResponseBuilders\\EplantMigrateResponseBuilder.cs");
121
- // generateCodeDependency("D:/code/CS.Service.Fundamental/SharedSegments/SharedSegments/SharedSegments.Plugins/Workflows/Eplant/EplantConfigManager.cs");
122
- // generateCodeDependency("C:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Plugins\\Workflows\\Eplant\\ResponseBuilders\\EplantMeResponseBuilder.cs");
123
- // generateCodeDependency("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Plugins\\Workflows\\Eplant\\RequestBuilders\\EplantRankRequestBuilder.cs");
124
- // getDependency("D:\\code\\ai-dev-tools\\csharp-ut-copilot\\csharp-ut-core\\out\\atmpCache\\deps\\SqmidHelper_Utils_HttpRequestParser_Overview_Workflows_SharedSegmentsPlugins_SharedSegments_SharedSegments_CSServiceFundamental_code_D.deps");
125
- // getCachedCodeDeps("D:\\code\\UCMDynamics\\private\\DynamicCode\\Plugin\\UCMDynamics.AppointmentPlugin\\AppointmentOperation.cs", "D:\\code\\ai-dev-tools\\csharp-ut-copilot\\csharp-ut-core\\out\\atmpCache\\deps\\AppointmentOperation_UCMDynamicsAppointmentPlugin_Plugin_DynamicCode_private_UCMDynamics_code_D.deps");
126
- //# sourceMappingURL=generateCodeDependency.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateCodeDependency.js","sourceRoot":"","sources":["../../src/analyze/generateCodeDependency.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nimport { generateCodeSha256 } from '../utils/generateCodeSha256';\r\nimport { getTmpCacheDir } from '../utils/getOrCreateDir';\r\nimport { runSpawn } from '../utils/spawnExec';\r\n\r\nconst DepAnalyzerDir = \"./deps/\"\r\n\r\nexport async function generateCodeDependency(sourceCodePath: string, nugetPackagePath: string = null): Promise<string> {\r\n const startTime = Date.now();\r\n\r\n const normalizedPath = path.normalize(sourceCodePath);\r\n const codeDepsFileName = normalizedPath.replace(\".cs\", \"\").replace(\":\", \"\").replaceAll(\".\", \"\").split(\"\\\\\").reverse().join(\"_\");\r\n const codeDepsDir = getTmpCacheDir(DepAnalyzerDir);\r\n const codeDepsFilePath = path.join(codeDepsDir, codeDepsFileName + \".deps\");\r\n let depsStr;\r\n if (fs.existsSync(codeDepsFilePath)) {\r\n depsStr = getCachedCodeDeps(normalizedPath, codeDepsFilePath);\r\n }\r\n if (!depsStr) {\r\n const { success, message } = await runCsharpCodeAnalyzer(normalizedPath, nugetPackagePath);\r\n if (!success) {\r\n console.error(`Code analysis failed: ${message}`);\r\n return \"\";\r\n }\r\n depsStr = getDependency(codeDepsFilePath);\r\n }\r\n\r\n console.log(`Generate depencency time: ${(Date.now() - startTime) / 1000} seconds`);\r\n\r\n return depsStr;\r\n}\r\n\r\nfunction runCsharpCodeAnalyzer(sourceCodePath: string, nugetPackagePath = null): Promise<any> {\r\n const args = ['-c', sourceCodePath];\r\n if (nugetPackagePath) {\r\n args.push('-p');\r\n args.push(nugetPackagePath);\r\n }\r\n const workDir = getTmpCacheDir(DepAnalyzerDir);\r\n console.log('📦 Running Csharp code analyzer...');\r\n return runSpawn(\"ccanalyzer\", args, workDir, codeAnalyzerErrorHandler, codeAnalyzerCloseHandler);\r\n}\r\n\r\nexport function codeAnalyzerErrorHandler(error) {\r\n console.error(`codeAnalyzerErrorHandler - failed: ${error.message}`);\r\n return true;\r\n}\r\n\r\nexport function codeAnalyzerCloseHandler(code, stdout, stderr) {\r\n if (code !== 0) {\r\n console.error(`Code Analyze failed with exit code ${code}`);\r\n return { success: false, message: stdout };\r\n }\r\n\r\n if (stderr) {\r\n console.error(`Warnings/Errors:\\n${stderr}`);\r\n return { success: false, message: stdout };\r\n }\r\n\r\n console.log(`Code Analyze succeeded:\\n${stdout}`);\r\n return { success: true, message: stdout };\r\n}\r\n\r\nfunction getCachedCodeDeps(sourceCodePath: string, depsFilePath: string) {\r\n try {\r\n const fileContent = fs.readFileSync(depsFilePath, 'utf-8');\r\n\r\n const lines = fileContent.split(/\\r?\\n/);\r\n\r\n const cachedSha256 = lines[0];\r\n const depsContent = lines.slice(1).join('\\n').trim();\r\n\r\n const currentSha256 = generateCodeSha256(sourceCodePath);\r\n\r\n if (currentSha256 === cachedSha256) {\r\n console.log('code unchanged, returning cached deps.');\r\n return depsContent;\r\n } else {\r\n console.log('code has changed.');\r\n return null;\r\n }\r\n } catch (err) {\r\n console.error('Error:', err);\r\n return null;\r\n }\r\n}\r\n\r\nfunction getDependency(depsFilePath: string) {\r\n const fileContent = fs.readFileSync(depsFilePath, 'utf-8').trim();\r\n const lines = fileContent.split(/\\r?\\n/);\r\n const dependencyStr = lines.slice(1).join('\\n');\r\n return dependencyStr;\r\n}\r\n\r\n// generateCodeDependency(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Plugins\\\\Workflows\\\\Eplant\\\\Conditions\\\\EplantRequestCategoryCondition.cs\");\r\n// generateCodeDependency(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Plugins\\\\Workflows\\\\Eplant\\\\ResponseBuilders\\\\EplantMigrateResponseBuilder.cs\");\r\n// generateCodeDependency(\"D:/code/CS.Service.Fundamental/SharedSegments/SharedSegments/SharedSegments.Plugins/Workflows/Eplant/EplantConfigManager.cs\");\r\n// generateCodeDependency(\"C:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Plugins\\\\Workflows\\\\Eplant\\\\ResponseBuilders\\\\EplantMeResponseBuilder.cs\");\r\n// generateCodeDependency(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Plugins\\\\Workflows\\\\Eplant\\\\RequestBuilders\\\\EplantRankRequestBuilder.cs\");\r\n// getDependency(\"D:\\\\code\\\\ai-dev-tools\\\\csharp-ut-copilot\\\\csharp-ut-core\\\\out\\\\atmpCache\\\\deps\\\\SqmidHelper_Utils_HttpRequestParser_Overview_Workflows_SharedSegmentsPlugins_SharedSegments_SharedSegments_CSServiceFundamental_code_D.deps\");\r\n// getCachedCodeDeps(\"D:\\\\code\\\\UCMDynamics\\\\private\\\\DynamicCode\\\\Plugin\\\\UCMDynamics.AppointmentPlugin\\\\AppointmentOperation.cs\", \"D:\\\\code\\\\ai-dev-tools\\\\csharp-ut-copilot\\\\csharp-ut-core\\\\out\\\\atmpCache\\\\deps\\\\AppointmentOperation_UCMDynamicsAppointmentPlugin_Plugin_DynamicCode_private_UCMDynamics_code_D.deps\");"]}
@@ -1 +0,0 @@
1
- export declare function installOrUpdateAnalyzerTool(): void;
@@ -1,82 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.installOrUpdateAnalyzerTool = installOrUpdateAnalyzerTool;
4
- const runCommand_1 = require("../utils/runCommand");
5
- const packageId = 'Csharp.Code.Analyzer';
6
- function getInstalledVersion() {
7
- const output = (0, runCommand_1.runCommand)('dotnet tool list --global');
8
- const lines = output.split(/\r?\n/).slice(2); // skip header lines
9
- for (const line of lines) {
10
- const parts = line.trim().split(/\s+/);
11
- if (parts[0].toLowerCase() === packageId.toLowerCase()) {
12
- return parts[1];
13
- }
14
- }
15
- return null;
16
- }
17
- function getLatestVersion() {
18
- console.log(`Searching for latest version of ${packageId}`);
19
- const output = (0, runCommand_1.runCommand)(`dotnet tool search ${packageId}`);
20
- const lines = output.split(/\r?\n/).slice(2); // skip header lines
21
- for (const line of lines) {
22
- const parts = line.trim().split(/\s+/);
23
- if (parts[0].toLowerCase() === packageId.toLowerCase()) {
24
- const latestVersion = parts[1];
25
- console.log(`Get the latest version: ${latestVersion}`);
26
- return latestVersion;
27
- }
28
- }
29
- return null;
30
- }
31
- function isNewerVersion(current, latest) {
32
- if (!latest) {
33
- return false; // Cannot compare if latest version is not available
34
- }
35
- const parse = (v) => v.split('.').map(Number);
36
- const [cMajor, cMinor, cPatch] = parse(current);
37
- const [lMajor, lMinor, lPatch] = parse(latest);
38
- if (lMajor > cMajor)
39
- return true;
40
- if (lMajor === cMajor && lMinor > cMinor)
41
- return true;
42
- if (lMajor === cMajor && lMinor === cMinor && lPatch > cPatch)
43
- return true;
44
- return false;
45
- }
46
- function ensureNugetOrgSource() {
47
- const output = (0, runCommand_1.runCommand)('dotnet nuget list source');
48
- if (!output.includes('https://api.nuget.org/v3/index.json')) {
49
- console.log('Adding nuget.org source...');
50
- (0, runCommand_1.runCommand)('dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org');
51
- }
52
- }
53
- function installOrUpdateAnalyzerTool() {
54
- const startTime = Date.now();
55
- ensureNugetOrgSource();
56
- const installedVersion = getInstalledVersion();
57
- const latestVersion = getLatestVersion();
58
- if (!latestVersion) {
59
- console.error('!!!Cannot get latest version from NuGet.');
60
- if (!installedVersion) {
61
- console.error('!!!Cannot get installed version.');
62
- return;
63
- }
64
- }
65
- if (installedVersion) {
66
- console.log(`${packageId} is installed (version ${installedVersion})`);
67
- if (isNewerVersion(installedVersion, latestVersion)) {
68
- console.log(`Updating ${packageId} to version ${latestVersion}...`);
69
- (0, runCommand_1.runCommand)(`dotnet tool update --global ${packageId}`);
70
- }
71
- else {
72
- console.log(`${packageId} is already up to date.`);
73
- }
74
- }
75
- else {
76
- console.log(`${packageId} is not installed. Installing version ${latestVersion}...`);
77
- (0, runCommand_1.runCommand)(`dotnet tool install --global ${packageId}`);
78
- }
79
- console.log(`InstallOrUpdateAnalyzerTool time: ${(Date.now() - startTime) / 1000} seconds`);
80
- }
81
- // installOrUpdateAnalyzerTool();
82
- //# sourceMappingURL=installAnalyzerTool.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"installAnalyzerTool.js","sourceRoot":"","sources":["../../src/analyze/installAnalyzerTool.ts"],"names":[],"mappings":"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","sourcesContent":["import { runCommand } from '../utils/runCommand';\r\n\r\nconst packageId = 'Csharp.Code.Analyzer';\r\n\r\nfunction getInstalledVersion(): string | null {\r\n const output = runCommand('dotnet tool list --global');\r\n const lines = output.split(/\\r?\\n/).slice(2); // skip header lines\r\n for (const line of lines) {\r\n const parts = line.trim().split(/\\s+/);\r\n if (parts[0].toLowerCase() === packageId.toLowerCase()) {\r\n return parts[1];\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction getLatestVersion(): string | null {\r\n console.log(`Searching for latest version of ${packageId}`);\r\n const output = runCommand(`dotnet tool search ${packageId}`);\r\n const lines = output.split(/\\r?\\n/).slice(2); // skip header lines\r\n for (const line of lines) {\r\n const parts = line.trim().split(/\\s+/);\r\n if (parts[0].toLowerCase() === packageId.toLowerCase()) {\r\n const latestVersion = parts[1];\r\n console.log(`Get the latest version: ${latestVersion}`);\r\n return latestVersion;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nfunction isNewerVersion(current: string, latest: string): boolean {\r\n if (!latest) {\r\n return false; // Cannot compare if latest version is not available\r\n }\r\n const parse = (v: string) => v.split('.').map(Number);\r\n const [cMajor, cMinor, cPatch] = parse(current);\r\n const [lMajor, lMinor, lPatch] = parse(latest);\r\n\r\n if (lMajor > cMajor) return true;\r\n if (lMajor === cMajor && lMinor > cMinor) return true;\r\n if (lMajor === cMajor && lMinor === cMinor && lPatch > cPatch) return true;\r\n return false;\r\n}\r\n\r\nfunction ensureNugetOrgSource() {\r\n const output = runCommand('dotnet nuget list source');\r\n if (!output.includes('https://api.nuget.org/v3/index.json')) {\r\n console.log('Adding nuget.org source...');\r\n runCommand('dotnet nuget add source https://api.nuget.org/v3/index.json --name nuget.org');\r\n }\r\n}\r\n\r\n\r\nexport function installOrUpdateAnalyzerTool() {\r\n const startTime = Date.now();\r\n\r\n ensureNugetOrgSource();\r\n\r\n const installedVersion = getInstalledVersion();\r\n const latestVersion = getLatestVersion();\r\n\r\n if (!latestVersion) {\r\n console.error('!!!Cannot get latest version from NuGet.');\r\n if (!installedVersion) {\r\n console.error('!!!Cannot get installed version.');\r\n return;\r\n }\r\n }\r\n\r\n if (installedVersion) {\r\n console.log(`${packageId} is installed (version ${installedVersion})`);\r\n if (isNewerVersion(installedVersion, latestVersion)) {\r\n console.log(`Updating ${packageId} to version ${latestVersion}...`);\r\n runCommand(`dotnet tool update --global ${packageId}`);\r\n } else {\r\n console.log(`${packageId} is already up to date.`);\r\n }\r\n } else {\r\n console.log(`${packageId} is not installed. Installing version ${latestVersion}...`);\r\n runCommand(`dotnet tool install --global ${packageId}`);\r\n }\r\n console.log(`InstallOrUpdateAnalyzerTool time: ${(Date.now() - startTime) / 1000} seconds`);\r\n}\r\n\r\n// installOrUpdateAnalyzerTool();\r\n"]}
@@ -1,6 +0,0 @@
1
- import { BenchmarkRow } from '../types/benchmark';
2
- export declare const CACHEFile: string;
3
- export declare function generateBatchTests(path: any, enableAutoFix: boolean, keepFailedTests: boolean, isBenchmark?: boolean): Promise<BenchmarkRow[]>;
4
- export declare function generateTestByCodeFiles(paths: string[], enableAutoFix: boolean, keepFailedTests: boolean, isBenchmark?: boolean, projectPath?: string, solutionPath?: string): Promise<BenchmarkRow[]>;
5
- export declare function commentOutCsFile(testFilePath: string): void;
6
- export declare function isDirectory(path: string): boolean;
@@ -1,147 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.CACHEFile = void 0;
37
- exports.generateBatchTests = generateBatchTests;
38
- exports.generateTestByCodeFiles = generateTestByCodeFiles;
39
- exports.commentOutCsFile = commentOutCsFile;
40
- exports.isDirectory = isDirectory;
41
- const fs = __importStar(require("fs"));
42
- const path = __importStar(require("path"));
43
- const constants_1 = require("../types/constants");
44
- const generateCodeCoverageReport_1 = require("../codeCoverage/generateCodeCoverageReport");
45
- const csharpUtGen_1 = require("../gen/csharpUtGen");
46
- const getFolderCodeFile_1 = require("./getFolderCodeFile");
47
- const getProjectCodeFile_1 = require("./getProjectCodeFile");
48
- const getSolutionCodeFile_1 = require("./getSolutionCodeFile");
49
- exports.CACHEFile = path.join(__dirname, "../genResultsCache.json");
50
- async function generateBatchTests(path, enableAutoFix, keepFailedTests, isBenchmark = false) {
51
- let benchmarkRows;
52
- let projectPath;
53
- let solutionPath;
54
- if (Array.isArray(path)) {
55
- benchmarkRows = await generateTestByCodeFiles(path, enableAutoFix, keepFailedTests, isBenchmark);
56
- }
57
- else if (isFileWithSuffix(path, '.csproj')) {
58
- projectPath = path;
59
- const codeFiles = await (0, getProjectCodeFile_1.getSourceFilesFromCsproj)(path);
60
- benchmarkRows = await generateTestByCodeFiles(codeFiles, enableAutoFix, keepFailedTests, isBenchmark);
61
- }
62
- else if (isFileWithSuffix(path, '.sln')) {
63
- solutionPath = path;
64
- const projectToFiles = await (0, getSolutionCodeFile_1.getSourceFilesFromSolution)(path);
65
- Object.entries(projectToFiles).forEach(async ([project, files]) => {
66
- console.log(`Project: ${project}`);
67
- const projectBenchmarkRows = await generateTestByCodeFiles(files, enableAutoFix, keepFailedTests, isBenchmark, project, solutionPath);
68
- benchmarkRows.push(...projectBenchmarkRows);
69
- });
70
- }
71
- else {
72
- if (!isDirectory(path)) {
73
- console.error(`Invalid path: ${path}. It should be a directory, .csproj, or .sln file.`);
74
- return [];
75
- }
76
- const codeFiles = await (0, getFolderCodeFile_1.getAllCsFiles)(path);
77
- benchmarkRows = await generateTestByCodeFiles(codeFiles, enableAutoFix, keepFailedTests, isBenchmark);
78
- }
79
- return benchmarkRows;
80
- }
81
- async function generateTestByCodeFiles(paths, enableAutoFix, keepFailedTests, isBenchmark = false, projectPath, solutionPath) {
82
- const startTime = Date.now();
83
- const testProjectPaths = [];
84
- const genResults = getCachedGenResults();
85
- for (const codeFilePath of paths) {
86
- if (!fs.existsSync(codeFilePath)) {
87
- console.error(`Path does not exist: ${codeFilePath}`);
88
- continue;
89
- }
90
- if (isBenchmark && genResults.some(result => result.codeFilePath === codeFilePath)) {
91
- console.log(`Test code already generated for: ${codeFilePath}`);
92
- continue;
93
- }
94
- const genResult = await (0, csharpUtGen_1.generateCsharpUtCode)(codeFilePath, "", enableAutoFix, keepFailedTests, constants_1.CSHARPUTGEN, true);
95
- if (!genResult?.success && genResult?.buildResult) {
96
- // comment build failed code to unblock following tests
97
- commentOutCsFile(genResult.testFilePath);
98
- }
99
- genResult.testFilePath && console.log(`Updated gen test to file: ${genResult.testFilePath}`);
100
- genResult && genResults.push({
101
- solutionPath,
102
- projectPath,
103
- codeFilePath,
104
- testFilePath: genResult.testFilePath,
105
- success: genResult.success,
106
- buildResult: genResult.buildResult,
107
- testResult: genResult.testResult,
108
- });
109
- if (genResult.testProjectPath && !testProjectPaths.includes(genResult.testProjectPath)) {
110
- testProjectPaths.push(genResult.testProjectPath);
111
- }
112
- fs.writeFileSync(exports.CACHEFile, JSON.stringify(genResults), 'utf-8');
113
- console.log(`Current progress: ${genResults?.length / paths.length} (${genResults?.length}/${paths.length})`);
114
- }
115
- await (0, generateCodeCoverageReport_1.generateCodeCoverageReport)(testProjectPaths, paths);
116
- console.log(`Batch Generate UT time: ${(Date.now() - startTime) / 1000} seconds`);
117
- return genResults;
118
- }
119
- function isFileWithSuffix(filePath, suffix) {
120
- return filePath.toLowerCase().endsWith(suffix.toLowerCase());
121
- }
122
- function getCachedGenResults() {
123
- if (!fs.existsSync(exports.CACHEFile)) {
124
- return [];
125
- }
126
- const cachedData = fs.readFileSync(exports.CACHEFile, 'utf-8');
127
- const genResults = JSON.parse(cachedData);
128
- return genResults;
129
- }
130
- function commentOutCsFile(testFilePath) {
131
- const content = fs.readFileSync(testFilePath, 'utf-8');
132
- const commented = content
133
- .split(/\r?\n/)
134
- .map(line => `// ${line}`)
135
- .join('\n');
136
- fs.writeFileSync(testFilePath, commented, 'utf-8');
137
- console.log(`Commented out test file: ${testFilePath}`);
138
- }
139
- function isDirectory(path) {
140
- try {
141
- return fs.statSync(path).isDirectory();
142
- }
143
- catch (err) {
144
- return false;
145
- }
146
- }
147
- //# sourceMappingURL=generateCodeTests.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generateCodeTests.js","sourceRoot":"","sources":["../../src/batch/generateCodeTests.ts"],"names":[],"mappings":"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","sourcesContent":["import * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nimport { BenchmarkRow } from '../types/benchmark';\r\nimport { CSHARPUTGEN } from '../types/constants';\r\nimport { generateCodeCoverageReport } from '../codeCoverage/generateCodeCoverageReport';\r\nimport { generateCsharpUtCode } from \"../gen/csharpUtGen\";\r\nimport { getAllCsFiles } from './getFolderCodeFile';\r\nimport { getSourceFilesFromCsproj } from './getProjectCodeFile';\r\nimport { getSourceFilesFromSolution } from './getSolutionCodeFile';\r\n\r\nexport const CACHEFile = path.join(__dirname, \"../genResultsCache.json\");\r\nexport async function generateBatchTests(\r\n path: any,\r\n enableAutoFix: boolean,\r\n keepFailedTests: boolean,\r\n isBenchmark: boolean = false): Promise<BenchmarkRow[]> {\r\n let benchmarkRows;\r\n let projectPath;\r\n let solutionPath;\r\n if (Array.isArray(path)) {\r\n benchmarkRows = await generateTestByCodeFiles(path, enableAutoFix, keepFailedTests, isBenchmark);\r\n } else if (isFileWithSuffix(path, '.csproj')) {\r\n projectPath = path;\r\n const codeFiles = await getSourceFilesFromCsproj(path);\r\n benchmarkRows = await generateTestByCodeFiles(codeFiles, enableAutoFix, keepFailedTests, isBenchmark);\r\n } else if (isFileWithSuffix(path, '.sln')) {\r\n solutionPath = path;\r\n const projectToFiles = await getSourceFilesFromSolution(path);\r\n Object.entries(projectToFiles).forEach(async ([project, files]) => {\r\n console.log(`Project: ${project}`);\r\n const projectBenchmarkRows = await generateTestByCodeFiles(files, enableAutoFix, keepFailedTests, isBenchmark, project, solutionPath);\r\n benchmarkRows.push(...projectBenchmarkRows);\r\n });\r\n } else {\r\n if (!isDirectory(path)) {\r\n console.error(`Invalid path: ${path}. It should be a directory, .csproj, or .sln file.`);\r\n return [];\r\n }\r\n const codeFiles = await getAllCsFiles(path);\r\n benchmarkRows = await generateTestByCodeFiles(codeFiles, enableAutoFix, keepFailedTests, isBenchmark);\r\n }\r\n\r\n return benchmarkRows;\r\n}\r\n\r\nexport async function generateTestByCodeFiles(\r\n paths: string[],\r\n enableAutoFix: boolean,\r\n keepFailedTests: boolean,\r\n isBenchmark: boolean = false,\r\n projectPath?: string,\r\n solutionPath?: string\r\n): Promise<BenchmarkRow[]> {\r\n const startTime = Date.now();\r\n\r\n const testProjectPaths = [];\r\n const genResults = getCachedGenResults();\r\n for (const codeFilePath of paths) {\r\n if (!fs.existsSync(codeFilePath)) {\r\n console.error(`Path does not exist: ${codeFilePath}`);\r\n continue;\r\n }\r\n\r\n if (isBenchmark && genResults.some(result => result.codeFilePath === codeFilePath)) {\r\n console.log(`Test code already generated for: ${codeFilePath}`);\r\n continue;\r\n }\r\n\r\n const genResult = await generateCsharpUtCode(codeFilePath, \"\", enableAutoFix, keepFailedTests, CSHARPUTGEN, true);\r\n if (!genResult?.success && genResult?.buildResult) {\r\n // comment build failed code to unblock following tests\r\n commentOutCsFile(genResult.testFilePath);\r\n }\r\n genResult.testFilePath && console.log(`Updated gen test to file: ${genResult.testFilePath}`);\r\n\r\n genResult && genResults.push({\r\n solutionPath,\r\n projectPath,\r\n codeFilePath,\r\n testFilePath: genResult.testFilePath, \r\n success: genResult.success,\r\n buildResult: genResult.buildResult,\r\n testResult: genResult.testResult,\r\n });\r\n\r\n if (genResult.testProjectPath && !testProjectPaths.includes(genResult.testProjectPath)) {\r\n testProjectPaths.push(genResult.testProjectPath);\r\n }\r\n\r\n fs.writeFileSync(CACHEFile, JSON.stringify(genResults), 'utf-8');\r\n console.log(`Current progress: ${genResults?.length / paths.length} (${genResults?.length}/${paths.length})`);\r\n }\r\n\r\n await generateCodeCoverageReport(testProjectPaths, paths);\r\n\r\n console.log(`Batch Generate UT time: ${(Date.now() - startTime) / 1000} seconds`);\r\n\r\n return genResults;\r\n}\r\n\r\nfunction isFileWithSuffix(filePath: string, suffix: string): boolean {\r\n return filePath.toLowerCase().endsWith(suffix.toLowerCase());\r\n}\r\n\r\nfunction getCachedGenResults() {\r\n if (!fs.existsSync(CACHEFile)) {\r\n return [];\r\n }\r\n const cachedData = fs.readFileSync(CACHEFile, 'utf-8');\r\n const genResults = JSON.parse(cachedData);\r\n return genResults;\r\n}\r\n\r\nexport function commentOutCsFile(testFilePath: string) {\r\n const content = fs.readFileSync(testFilePath, 'utf-8');\r\n const commented = content\r\n .split(/\\r?\\n/)\r\n .map(line => `// ${line}`)\r\n .join('\\n');\r\n\r\n fs.writeFileSync(testFilePath, commented, 'utf-8');\r\n console.log(`Commented out test file: ${testFilePath}`);\r\n}\r\n\r\nexport function isDirectory(path: string): boolean {\r\n try {\r\n return fs.statSync(path).isDirectory();\r\n } catch (err) {\r\n return false;\r\n }\r\n}"]}
@@ -1 +0,0 @@
1
- export declare function getAllCsFiles(rootDir: string): Promise<string[]>;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAllCsFiles = getAllCsFiles;
7
- const fast_glob_1 = __importDefault(require("fast-glob"));
8
- async function getAllCsFiles(rootDir) {
9
- return await (0, fast_glob_1.default)('**/*.cs', {
10
- cwd: rootDir,
11
- absolute: true,
12
- onlyFiles: true,
13
- ignore: ['**/bin/**', '**/obj/**', '**/node_modules/**'],
14
- });
15
- }
16
- // getAllCsFiles("D:\\code\\CS.Service.Fundamental\\SharedSegments\\SharedSegments\\SharedSegments.Plugins\\Workflows\\Eplant\\").then(files => {
17
- // console.log('Found .cs files:', files);
18
- // });
19
- //# sourceMappingURL=getFolderCodeFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFolderCodeFile.js","sourceRoot":"","sources":["../../src/batch/getFolderCodeFile.ts"],"names":[],"mappings":";;;;;AAGA,sCAOC;AAVD,0DAA2B;AAGpB,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,OAAO,MAAM,IAAA,mBAAE,EAAC,SAAS,EAAE;QACzB,GAAG,EAAE,OAAO;QACZ,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,oBAAoB,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAGD,iJAAiJ;AACjJ,4CAA4C;AAC5C,MAAM","sourcesContent":["import fg from 'fast-glob';\r\nimport path from 'path';\r\n\r\nexport async function getAllCsFiles(rootDir: string): Promise<string[]> {\r\n return await fg('**/*.cs', {\r\n cwd: rootDir,\r\n absolute: true,\r\n onlyFiles: true,\r\n ignore: ['**/bin/**', '**/obj/**', '**/node_modules/**'],\r\n });\r\n}\r\n\r\n\r\n// getAllCsFiles(\"D:\\\\code\\\\CS.Service.Fundamental\\\\SharedSegments\\\\SharedSegments\\\\SharedSegments.Plugins\\\\Workflows\\\\Eplant\\\\\").then(files => {\r\n// console.log('Found .cs files:', files);\r\n// });"]}
@@ -1,4 +0,0 @@
1
- /**
2
- * parse .csproj to extract all source files
3
- */
4
- export declare function getSourceFilesFromCsproj(csprojPath: string): Promise<string[]>;