code-auditor-mcp 5.0.2 → 5.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +326 -3
  3. package/README.md +24 -2
  4. package/configs/hhra-compat.json +12 -118
  5. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  6. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +11 -1
  7. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  8. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  9. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +57 -52
  10. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  11. package/dist/analyzers/provenance.d.ts +9 -4
  12. package/dist/analyzers/provenance.d.ts.map +1 -1
  13. package/dist/analyzers/provenance.js +8 -25
  14. package/dist/analyzers/provenance.js.map +1 -1
  15. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  16. package/dist/analyzers/reactAnalyzer.js +35 -14
  17. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  18. package/dist/analyzers/ruleRegistry.js +4 -4
  19. package/dist/analyzers/ruleRegistry.js.map +1 -1
  20. package/dist/analyzers/ruleTiming.d.ts +1 -1
  21. package/dist/analyzers/ruleTiming.js +2 -2
  22. package/dist/analyzers/ruleTiming.js.map +1 -1
  23. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +22 -26
  25. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  26. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +0 -2
  27. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +4 -5
  29. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  30. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +32 -15
  31. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  32. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +189 -115
  33. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  34. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +0 -2
  35. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  36. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +0 -5
  37. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  38. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -10
  39. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  40. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +7 -49
  41. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  42. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
  43. package/dist/analyzers/universal/schema/codeAnalysis.js +51 -3
  44. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
  45. package/dist/analyzers/universal/schema/config.d.ts.map +1 -1
  46. package/dist/analyzers/universal/schema/config.js +0 -2
  47. package/dist/analyzers/universal/schema/config.js.map +1 -1
  48. package/dist/analyzers/universal/schema/types.d.ts +0 -2
  49. package/dist/analyzers/universal/schema/types.d.ts.map +1 -1
  50. package/dist/analyzers/vendorSurfaces.d.ts +126 -0
  51. package/dist/analyzers/vendorSurfaces.d.ts.map +1 -0
  52. package/dist/analyzers/vendorSurfaces.js +580 -0
  53. package/dist/analyzers/vendorSurfaces.js.map +1 -0
  54. package/dist/auditRunner.d.ts +9 -1
  55. package/dist/auditRunner.d.ts.map +1 -1
  56. package/dist/auditRunner.js +198 -146
  57. package/dist/auditRunner.js.map +1 -1
  58. package/dist/cacheGc.d.ts +88 -0
  59. package/dist/cacheGc.d.ts.map +1 -0
  60. package/dist/cacheGc.js +196 -0
  61. package/dist/cacheGc.js.map +1 -0
  62. package/dist/churn/churnExtractor.d.ts +0 -1
  63. package/dist/churn/churnExtractor.d.ts.map +1 -1
  64. package/dist/churn/churnExtractor.js +2 -4
  65. package/dist/churn/churnExtractor.js.map +1 -1
  66. package/dist/cli.d.ts +1 -1
  67. package/dist/cli.d.ts.map +1 -1
  68. package/dist/cli.js +260 -47
  69. package/dist/cli.js.map +1 -1
  70. package/dist/codeIndex/migrations.d.ts.map +1 -1
  71. package/dist/codeIndex/migrations.js +4 -3
  72. package/dist/codeIndex/migrations.js.map +1 -1
  73. package/dist/codeIndexDB.d.ts +11 -2
  74. package/dist/codeIndexDB.d.ts.map +1 -1
  75. package/dist/codeIndexDB.js +27 -2
  76. package/dist/codeIndexDB.js.map +1 -1
  77. package/dist/config/configLoader.d.ts +60 -7
  78. package/dist/config/configLoader.d.ts.map +1 -1
  79. package/dist/config/configLoader.js +252 -60
  80. package/dist/config/configLoader.js.map +1 -1
  81. package/dist/config/defaults.d.ts +137 -43
  82. package/dist/config/defaults.d.ts.map +1 -1
  83. package/dist/config/defaults.js +174 -101
  84. package/dist/config/defaults.js.map +1 -1
  85. package/dist/config/effectiveConfig.d.ts +1 -1
  86. package/dist/config/effectiveConfig.d.ts.map +1 -1
  87. package/dist/config/effectiveConfig.js +4 -6
  88. package/dist/config/effectiveConfig.js.map +1 -1
  89. package/dist/config/pathProfiles.d.ts +4 -3
  90. package/dist/config/pathProfiles.d.ts.map +1 -1
  91. package/dist/config/pathProfiles.js +3 -2
  92. package/dist/config/pathProfiles.js.map +1 -1
  93. package/dist/constants.d.ts +2 -1
  94. package/dist/constants.d.ts.map +1 -1
  95. package/dist/constants.js +4 -0
  96. package/dist/constants.js.map +1 -1
  97. package/dist/daemon/main.d.ts +0 -1
  98. package/dist/daemon/main.d.ts.map +1 -1
  99. package/dist/daemon/main.js +11 -4
  100. package/dist/daemon/main.js.map +1 -1
  101. package/dist/dataPaths.d.ts +32 -9
  102. package/dist/dataPaths.d.ts.map +1 -1
  103. package/dist/dataPaths.js +69 -16
  104. package/dist/dataPaths.js.map +1 -1
  105. package/dist/hookLog.d.ts +54 -0
  106. package/dist/hookLog.d.ts.map +1 -0
  107. package/dist/hookLog.js +105 -0
  108. package/dist/hookLog.js.map +1 -0
  109. package/dist/hookLogPath.generated.d.ts +3 -0
  110. package/dist/hookLogPath.generated.d.ts.map +1 -0
  111. package/dist/hookLogPath.generated.js +8 -0
  112. package/dist/hookLogPath.generated.js.map +1 -0
  113. package/dist/index.d.ts +0 -5
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +0 -7
  116. package/dist/index.js.map +1 -1
  117. package/dist/installConfig.d.ts +15 -2
  118. package/dist/installConfig.d.ts.map +1 -1
  119. package/dist/installConfig.js +17 -2
  120. package/dist/installConfig.js.map +1 -1
  121. package/dist/installer.d.ts.map +1 -1
  122. package/dist/installer.js +2 -1
  123. package/dist/installer.js.map +1 -1
  124. package/dist/languages/adapterBridge.d.ts +11 -0
  125. package/dist/languages/adapterBridge.d.ts.map +1 -1
  126. package/dist/languages/adapterBridge.js +11 -0
  127. package/dist/languages/adapterBridge.js.map +1 -1
  128. package/dist/languages/types.d.ts +8 -0
  129. package/dist/languages/types.d.ts.map +1 -1
  130. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +13 -0
  131. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  132. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +135 -18
  133. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  134. package/dist/ledger.d.ts +7 -0
  135. package/dist/ledger.d.ts.map +1 -1
  136. package/dist/ledger.js +7 -0
  137. package/dist/ledger.js.map +1 -1
  138. package/dist/mcp-tools/workflowGuide.js +8 -8
  139. package/dist/mcp-tools/workflowGuide.js.map +1 -1
  140. package/dist/mcp-tools-shared.d.ts.map +1 -1
  141. package/dist/mcp-tools-shared.js +5 -2
  142. package/dist/mcp-tools-shared.js.map +1 -1
  143. package/dist/mcp-ui-simple.d.ts +5 -0
  144. package/dist/mcp-ui-simple.d.ts.map +1 -1
  145. package/dist/mcp-ui-simple.js +9 -2
  146. package/dist/mcp-ui-simple.js.map +1 -1
  147. package/dist/mcp.d.ts +0 -1
  148. package/dist/mcp.d.ts.map +1 -1
  149. package/dist/mcp.js +36 -33
  150. package/dist/mcp.js.map +1 -1
  151. package/dist/mcpAuditJobs.d.ts +10 -0
  152. package/dist/mcpAuditJobs.d.ts.map +1 -1
  153. package/dist/mcpAuditJobs.js +10 -1
  154. package/dist/mcpAuditJobs.js.map +1 -1
  155. package/dist/mcpAutoIndex.d.ts.map +1 -1
  156. package/dist/mcpAutoIndex.js +2 -1
  157. package/dist/mcpAutoIndex.js.map +1 -1
  158. package/dist/mcpDiagnostics.d.ts +2 -0
  159. package/dist/mcpDiagnostics.d.ts.map +1 -1
  160. package/dist/mcpDiagnostics.js +2 -0
  161. package/dist/mcpDiagnostics.js.map +1 -1
  162. package/dist/phase/candidates.d.ts +53 -0
  163. package/dist/phase/candidates.d.ts.map +1 -0
  164. package/dist/phase/candidates.js +67 -0
  165. package/dist/phase/candidates.js.map +1 -0
  166. package/dist/phase/colorMath.d.ts +18 -5
  167. package/dist/phase/colorMath.d.ts.map +1 -1
  168. package/dist/phase/colorMath.js +88 -5
  169. package/dist/phase/colorMath.js.map +1 -1
  170. package/dist/phase/dataAccessCallsCandidates.js +1 -1
  171. package/dist/phase/dataAccessCallsCandidates.js.map +1 -1
  172. package/dist/phase/goFunctionAnalysis.d.ts +2 -2
  173. package/dist/phase/goFunctionAnalysis.js +2 -2
  174. package/dist/phase/goFunctions.d.ts +2 -2
  175. package/dist/phase/goFunctions.js +2 -2
  176. package/dist/phase/goImports.d.ts +2 -2
  177. package/dist/phase/goImports.js +2 -2
  178. package/dist/phase/goSwitches.d.ts +2 -2
  179. package/dist/phase/goSwitches.js +2 -2
  180. package/dist/phase/imports.d.ts.map +1 -1
  181. package/dist/phase/imports.js +1 -0
  182. package/dist/phase/imports.js.map +1 -1
  183. package/dist/phase/loopQueryCandidates.js +1 -1
  184. package/dist/phase/loopQueryCandidates.js.map +1 -1
  185. package/dist/phase/oracles.d.ts +28 -0
  186. package/dist/phase/oracles.d.ts.map +1 -1
  187. package/dist/phase/oracles.js +28 -0
  188. package/dist/phase/oracles.js.map +1 -1
  189. package/dist/phase/phaseModel.d.ts +47 -8
  190. package/dist/phase/phaseModel.d.ts.map +1 -1
  191. package/dist/phase/phaseModel.js +44 -8
  192. package/dist/phase/phaseModel.js.map +1 -1
  193. package/dist/phase/producers.d.ts.map +1 -1
  194. package/dist/phase/producers.js +24 -17
  195. package/dist/phase/producers.js.map +1 -1
  196. package/dist/phase/reachability.d.ts +44 -1
  197. package/dist/phase/reachability.d.ts.map +1 -1
  198. package/dist/phase/reachability.js +79 -0
  199. package/dist/phase/reachability.js.map +1 -1
  200. package/dist/phase/rules/conventions.d.ts.map +1 -1
  201. package/dist/phase/rules/conventions.js +6 -2
  202. package/dist/phase/rules/conventions.js.map +1 -1
  203. package/dist/phase/rules/crossDomain.d.ts.map +1 -1
  204. package/dist/phase/rules/crossDomain.js +16 -6
  205. package/dist/phase/rules/crossDomain.js.map +1 -1
  206. package/dist/phase/rules/dataAccess.d.ts.map +1 -1
  207. package/dist/phase/rules/dataAccess.js +13 -0
  208. package/dist/phase/rules/dataAccess.js.map +1 -1
  209. package/dist/phase/rules/documentation.d.ts.map +1 -1
  210. package/dist/phase/rules/documentation.js +11 -1
  211. package/dist/phase/rules/documentation.js.map +1 -1
  212. package/dist/phase/rules/dry.d.ts +16 -7
  213. package/dist/phase/rules/dry.d.ts.map +1 -1
  214. package/dist/phase/rules/dry.js +51 -32
  215. package/dist/phase/rules/dry.js.map +1 -1
  216. package/dist/phase/rules/goRules.d.ts +2 -2
  217. package/dist/phase/rules/goRules.js +2 -2
  218. package/dist/phase/rules/secrets.d.ts +22 -8
  219. package/dist/phase/rules/secrets.d.ts.map +1 -1
  220. package/dist/phase/rules/secrets.js +75 -69
  221. package/dist/phase/rules/secrets.js.map +1 -1
  222. package/dist/phase/rules/styles.d.ts +23 -9
  223. package/dist/phase/rules/styles.d.ts.map +1 -1
  224. package/dist/phase/rules/styles.js +61 -15
  225. package/dist/phase/rules/styles.js.map +1 -1
  226. package/dist/phase/rules/unreferencedModule.d.ts.map +1 -1
  227. package/dist/phase/rules/unreferencedModule.js +32 -10
  228. package/dist/phase/rules/unreferencedModule.js.map +1 -1
  229. package/dist/phase/runner.d.ts +16 -7
  230. package/dist/phase/runner.d.ts.map +1 -1
  231. package/dist/phase/runner.js +32 -20
  232. package/dist/phase/runner.js.map +1 -1
  233. package/dist/phase/stringLiterals.d.ts.map +1 -1
  234. package/dist/phase/stringLiterals.js +16 -7
  235. package/dist/phase/stringLiterals.js.map +1 -1
  236. package/dist/phase/stylesCss.d.ts.map +1 -1
  237. package/dist/phase/stylesCss.js +4 -0
  238. package/dist/phase/stylesCss.js.map +1 -1
  239. package/dist/phase/stylesMarkup.d.ts.map +1 -1
  240. package/dist/phase/stylesMarkup.js +4 -0
  241. package/dist/phase/stylesMarkup.js.map +1 -1
  242. package/dist/phase/stylesSource.d.ts.map +1 -1
  243. package/dist/phase/stylesSource.js +6 -0
  244. package/dist/phase/stylesSource.js.map +1 -1
  245. package/dist/phase/testProgram.d.ts +57 -0
  246. package/dist/phase/testProgram.d.ts.map +1 -0
  247. package/dist/phase/testProgram.js +244 -0
  248. package/dist/phase/testProgram.js.map +1 -0
  249. package/dist/phase/typeDeclarations.d.ts +2 -2
  250. package/dist/phase/typeDeclarations.js +2 -2
  251. package/dist/phase/types.d.ts +104 -0
  252. package/dist/phase/types.d.ts.map +1 -1
  253. package/dist/pipeline.d.ts +4 -0
  254. package/dist/pipeline.d.ts.map +1 -1
  255. package/dist/pipeline.js +4 -0
  256. package/dist/pipeline.js.map +1 -1
  257. package/dist/pipelineAdapters.d.ts +1 -171
  258. package/dist/pipelineAdapters.d.ts.map +1 -1
  259. package/dist/pipelineAdapters.js +47 -1281
  260. package/dist/pipelineAdapters.js.map +1 -1
  261. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  262. package/dist/reporting/csvReportGenerator.js +0 -6
  263. package/dist/reporting/csvReportGenerator.js.map +1 -1
  264. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
  265. package/dist/reporting/htmlReportGenerator.js +0 -4
  266. package/dist/reporting/htmlReportGenerator.js.map +1 -1
  267. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  268. package/dist/reporting/jsonReportGenerator.js +0 -1
  269. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  270. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  271. package/dist/reporting/sarifReportGenerator.js +0 -7
  272. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  273. package/dist/services/auditJobService.d.ts +15 -0
  274. package/dist/services/auditJobService.d.ts.map +1 -1
  275. package/dist/services/auditJobService.js +15 -0
  276. package/dist/services/auditJobService.js.map +1 -1
  277. package/dist/services/projectTaskHelpers.d.ts +7 -0
  278. package/dist/services/projectTaskHelpers.d.ts.map +1 -1
  279. package/dist/services/projectTaskHelpers.js +7 -0
  280. package/dist/services/projectTaskHelpers.js.map +1 -1
  281. package/dist/services/whitelistService.d.ts +28 -0
  282. package/dist/services/whitelistService.d.ts.map +1 -1
  283. package/dist/services/whitelistService.js +28 -0
  284. package/dist/services/whitelistService.js.map +1 -1
  285. package/dist/sqlite/driver.d.ts +17 -1
  286. package/dist/sqlite/driver.d.ts.map +1 -1
  287. package/dist/sqlite/driver.js +28 -5
  288. package/dist/sqlite/driver.js.map +1 -1
  289. package/dist/styles/cssInJsHarvest.d.ts +36 -0
  290. package/dist/styles/cssInJsHarvest.d.ts.map +1 -0
  291. package/dist/styles/cssInJsHarvest.js +78 -0
  292. package/dist/styles/cssInJsHarvest.js.map +1 -0
  293. package/dist/styles/definedClasses.d.ts +95 -0
  294. package/dist/styles/definedClasses.d.ts.map +1 -0
  295. package/dist/styles/definedClasses.js +129 -0
  296. package/dist/styles/definedClasses.js.map +1 -0
  297. package/dist/styles/markupStyleHarvest.d.ts +33 -0
  298. package/dist/styles/markupStyleHarvest.d.ts.map +1 -0
  299. package/dist/styles/markupStyleHarvest.js +73 -0
  300. package/dist/styles/markupStyleHarvest.js.map +1 -0
  301. package/dist/styles/styleExtractor.d.ts +37 -0
  302. package/dist/styles/styleExtractor.d.ts.map +1 -1
  303. package/dist/styles/styleExtractor.js +89 -33
  304. package/dist/styles/styleExtractor.js.map +1 -1
  305. package/dist/styles/styleIndexer.d.ts.map +1 -1
  306. package/dist/styles/styleIndexer.js +11 -10
  307. package/dist/styles/styleIndexer.js.map +1 -1
  308. package/dist/styles/tailwindExpander.d.ts.map +1 -1
  309. package/dist/styles/tailwindExpander.js +31 -10
  310. package/dist/styles/tailwindExpander.js.map +1 -1
  311. package/dist/styles/tailwindUtilityExpander.d.ts +4 -0
  312. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  313. package/dist/styles/tailwindUtilityExpander.js +4 -0
  314. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  315. package/dist/telemetry.d.ts +67 -1
  316. package/dist/telemetry.d.ts.map +1 -1
  317. package/dist/telemetry.js +100 -20
  318. package/dist/telemetry.js.map +1 -1
  319. package/dist/types/crossLanguage.d.ts +1 -0
  320. package/dist/types/crossLanguage.d.ts.map +1 -1
  321. package/dist/types.d.ts +73 -56
  322. package/dist/types.d.ts.map +1 -1
  323. package/dist/types.js +4 -4
  324. package/dist/types.js.map +1 -1
  325. package/dist/version.generated.d.ts +1 -1
  326. package/dist/version.generated.js +1 -1
  327. package/examples/.auditrc.example.json +7 -22
  328. package/examples/.auditrc.json +12 -155
  329. package/examples/.code-auditor.json +8 -51
  330. package/examples/nextjs.auditrc.json +7 -34
  331. package/examples/node-api.auditrc.json +6 -46
  332. package/examples/react.auditrc.json +8 -25
  333. package/examples/tolerant-solid.auditrc.json +12 -44
  334. package/package.json +8 -5
  335. package/plugin/.claude-plugin/manifest.json +10 -9
  336. package/plugin/.claude-plugin/plugin.json +1 -1
  337. package/plugin/hooks/hooks.json +4 -4
  338. package/plugin/scripts/hook-audit.sh +25 -10
  339. package/plugin/scripts/hook-common.sh +12 -7
  340. package/plugin/scripts/hook-drift-check.sh +10 -1
  341. package/plugin/scripts/hook-log-path.sh +7 -0
  342. package/plugin/scripts/hook-self-audit.sh +21 -6
  343. package/plugin/scripts/hook-warm.sh +17 -11
  344. package/plugin/skills/code-auditor/SKILL.md +26 -3
  345. package/server.json +2 -2
  346. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts +0 -6
  347. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts.map +0 -1
  348. package/dist/__tests__/fixtures/spec-20/scripts/tool.js +0 -12
  349. package/dist/__tests__/fixtures/spec-20/scripts/tool.js.map +0 -1
  350. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts +0 -7
  351. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts.map +0 -1
  352. package/dist/__tests__/fixtures/spec-20/src/demo-module.js +0 -13
  353. package/dist/__tests__/fixtures/spec-20/src/demo-module.js.map +0 -1
  354. package/dist/__tests__/fixtures/spec-52/item-01-prepare-in-loop.d.ts +0 -14
  355. package/dist/__tests__/fixtures/spec-52/item-01-prepare-in-loop.d.ts.map +0 -1
  356. package/dist/__tests__/fixtures/spec-52/item-01-prepare-in-loop.js +0 -16
  357. package/dist/__tests__/fixtures/spec-52/item-01-prepare-in-loop.js.map +0 -1
  358. package/dist/__tests__/fixtures/spec-52/item-02-prepare-bind-accumulate-batch.d.ts +0 -15
  359. package/dist/__tests__/fixtures/spec-52/item-02-prepare-bind-accumulate-batch.d.ts.map +0 -1
  360. package/dist/__tests__/fixtures/spec-52/item-02-prepare-bind-accumulate-batch.js +0 -17
  361. package/dist/__tests__/fixtures/spec-52/item-02-prepare-bind-accumulate-batch.js.map +0 -1
  362. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts +0 -14
  363. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.d.ts.map +0 -1
  364. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js +0 -19
  365. package/dist/__tests__/fixtures/spec-52/item-03-exec-in-loop.js.map +0 -1
  366. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts +0 -18
  367. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.d.ts.map +0 -1
  368. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js +0 -19
  369. package/dist/__tests__/fixtures/spec-52/item-04-storage-sql-exec-in-loop.js.map +0 -1
  370. package/dist/__tests__/fixtures/spec-52/item-05-upsert-forms.d.ts +0 -19
  371. package/dist/__tests__/fixtures/spec-52/item-05-upsert-forms.d.ts.map +0 -1
  372. package/dist/__tests__/fixtures/spec-52/item-05-upsert-forms.js +0 -19
  373. package/dist/__tests__/fixtures/spec-52/item-05-upsert-forms.js.map +0 -1
  374. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts +0 -17
  375. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.d.ts.map +0 -1
  376. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.js +0 -19
  377. package/dist/__tests__/fixtures/spec-52/item-06-chained-prepare-run-in-loop.js.map +0 -1
  378. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts +0 -25
  379. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.d.ts.map +0 -1
  380. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.js +0 -21
  381. package/dist/__tests__/fixtures/spec-52/item-07-chained-prepare-bind-first-in-loop.js.map +0 -1
  382. package/dist/__tests__/fixtures/spec-52/item-08-promise-all-of-statements-in-loop.d.ts +0 -15
  383. package/dist/__tests__/fixtures/spec-52/item-08-promise-all-of-statements-in-loop.d.ts.map +0 -1
  384. package/dist/__tests__/fixtures/spec-52/item-08-promise-all-of-statements-in-loop.js +0 -19
  385. package/dist/__tests__/fixtures/spec-52/item-08-promise-all-of-statements-in-loop.js.map +0 -1
  386. package/dist/__tests__/fixtures/spec-52/item-09-promise-all-map-of-statements-in-loop.d.ts +0 -14
  387. package/dist/__tests__/fixtures/spec-52/item-09-promise-all-map-of-statements-in-loop.d.ts.map +0 -1
  388. package/dist/__tests__/fixtures/spec-52/item-09-promise-all-map-of-statements-in-loop.js +0 -14
  389. package/dist/__tests__/fixtures/spec-52/item-09-promise-all-map-of-statements-in-loop.js.map +0 -1
  390. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts +0 -15
  391. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.d.ts.map +0 -1
  392. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.js +0 -16
  393. package/dist/__tests__/fixtures/spec-52/item-10-promise-all-map-of-eager-all-in-loop.js.map +0 -1
  394. package/dist/languages/go/analyzer-darwin-amd64 +0 -0
  395. package/dist/languages/go/analyzer-darwin-arm64 +0 -0
  396. package/dist/languages/go/analyzer-linux-amd64 +0 -0
  397. package/dist/languages/go/analyzer-linux-arm64 +0 -0
  398. package/dist/languages/go/analyzer-src/analyzer.go +0 -643
  399. package/dist/languages/go/analyzer-src/dataaccess.go +0 -388
  400. package/dist/languages/go/analyzer-src/go.mod +0 -3
  401. package/dist/languages/go/analyzer-src/indexer.go +0 -268
  402. package/dist/languages/go/analyzer-src/parser.go +0 -461
  403. package/dist/languages/go/analyzer-src/solid.go +0 -311
  404. package/dist/languages/go/analyzer-src/testconventions.go +0 -25
  405. package/dist/languages/go/analyzer-src/types.go +0 -156
  406. package/dist/languages/go/analyzer-windows-amd64.exe +0 -0
  407. package/dist/languages/go/go.mod +0 -7
  408. package/dist/languages/go/main.go +0 -203
  409. package/dist/native/ast-grep-napi.darwin-arm64.node +0 -0
  410. package/dist/native/ast-grep-napi.darwin-x64.node +0 -0
  411. package/dist/native/ast-grep-napi.linux-arm64-gnu.node +0 -0
  412. package/dist/native/ast-grep-napi.linux-arm64-musl.node +0 -0
  413. package/dist/native/ast-grep-napi.linux-x64-gnu.node +0 -0
  414. package/dist/native/ast-grep-napi.linux-x64-musl.node +0 -0
  415. package/dist/native/ast-grep-napi.win32-x64-msvc.node +0 -0
  416. package/dist/native-bootstrap.d.ts +0 -15
  417. package/dist/native-bootstrap.d.ts.map +0 -1
  418. package/dist/native-bootstrap.js +0 -75
  419. package/dist/native-bootstrap.js.map +0 -1
@@ -1,461 +0,0 @@
1
- package analyzer
2
-
3
- import (
4
- "fmt"
5
- "go/ast"
6
- "go/parser"
7
- "go/token"
8
- "strings"
9
- )
10
-
11
- // Parser handles Go AST parsing and entity extraction
12
- type Parser struct {
13
- fileSet *token.FileSet
14
- files map[string]*ast.File
15
- options AnalysisOptions
16
- }
17
-
18
- // NewParser creates a new Go parser
19
- func NewParser(options AnalysisOptions) *Parser {
20
- return &Parser{
21
- fileSet: token.NewFileSet(),
22
- files: make(map[string]*ast.File),
23
- options: options,
24
- }
25
- }
26
-
27
- // ParseFiles parses the given Go files
28
- func (p *Parser) ParseFiles(filePaths []string) error {
29
- for _, filePath := range filePaths {
30
- if !strings.HasSuffix(filePath, ".go") {
31
- continue
32
- }
33
-
34
- file, err := parser.ParseFile(p.fileSet, filePath, nil, parser.ParseComments)
35
- if err != nil {
36
- return fmt.Errorf("failed to parse %s: %w", filePath, err)
37
- }
38
-
39
- p.files[filePath] = file
40
- }
41
-
42
- return nil
43
- }
44
-
45
- // ParseContent parses Go source code from a string
46
- func (p *Parser) ParseContent(filePath, content string) error {
47
- if !strings.HasSuffix(filePath, ".go") {
48
- return fmt.Errorf("not a Go file: %s", filePath)
49
- }
50
-
51
- file, err := parser.ParseFile(p.fileSet, filePath, content, parser.ParseComments)
52
- if err != nil {
53
- return fmt.Errorf("failed to parse content for %s: %w", filePath, err)
54
- }
55
-
56
- p.files[filePath] = file
57
- return nil
58
- }
59
-
60
- // ExtractFunctions extracts all functions from parsed files
61
- func (p *Parser) ExtractFunctions() []Function {
62
- var functions []Function
63
-
64
- for filePath, file := range p.files {
65
- ast.Inspect(file, func(n ast.Node) bool {
66
- switch node := n.(type) {
67
- case *ast.FuncDecl:
68
- // Skip test functions (Test*/Benchmark*/Example*/Fuzz*): they are
69
- // `go test` entry points, not production API. Mirrors the Go
70
- // test-function convention in languages/testConventions.ts.
71
- if isTestFunction(node.Name.Name) {
72
- return true
73
- }
74
- function := p.extractFunction(node, filePath, file)
75
- functions = append(functions, function)
76
- }
77
- return true
78
- })
79
- }
80
-
81
- return functions
82
- }
83
-
84
- // ExtractStructs extracts all structs from parsed files
85
- func (p *Parser) ExtractStructs() []Struct {
86
- var structs []Struct
87
-
88
- for filePath, file := range p.files {
89
- ast.Inspect(file, func(n ast.Node) bool {
90
- switch node := n.(type) {
91
- case *ast.GenDecl:
92
- if node.Tok == token.TYPE {
93
- for _, spec := range node.Specs {
94
- if typeSpec, ok := spec.(*ast.TypeSpec); ok {
95
- if structType, ok := typeSpec.Type.(*ast.StructType); ok {
96
- structInfo := p.extractStruct(typeSpec, structType, filePath, file)
97
- structs = append(structs, structInfo)
98
- }
99
- }
100
- }
101
- }
102
- }
103
- return true
104
- })
105
- }
106
-
107
- return structs
108
- }
109
-
110
- // ExtractInterfaces extracts all interfaces from parsed files
111
- func (p *Parser) ExtractInterfaces() []Interface {
112
- var interfaces []Interface
113
-
114
- for filePath, file := range p.files {
115
- ast.Inspect(file, func(n ast.Node) bool {
116
- switch node := n.(type) {
117
- case *ast.GenDecl:
118
- if node.Tok == token.TYPE {
119
- for _, spec := range node.Specs {
120
- if typeSpec, ok := spec.(*ast.TypeSpec); ok {
121
- if interfaceType, ok := typeSpec.Type.(*ast.InterfaceType); ok {
122
- interfaceInfo := p.extractInterface(typeSpec, interfaceType, filePath, file)
123
- interfaces = append(interfaces, interfaceInfo)
124
- }
125
- }
126
- }
127
- }
128
- }
129
- return true
130
- })
131
- }
132
-
133
- return interfaces
134
- }
135
-
136
- // extractFunction extracts function information from AST
137
- func (p *Parser) extractFunction(funcDecl *ast.FuncDecl, filePath string, file *ast.File) Function {
138
- pos := p.fileSet.Position(funcDecl.Pos())
139
- end := p.fileSet.Position(funcDecl.End())
140
-
141
- function := Function{
142
- EntityInfo: EntityInfo{
143
- Name: funcDecl.Name.Name,
144
- Type: "function",
145
- File: filePath,
146
- StartLine: pos.Line,
147
- EndLine: end.Line,
148
- Package: file.Name.Name,
149
- },
150
- IsMethod: funcDecl.Recv != nil,
151
- IsExported: ast.IsExported(funcDecl.Name.Name),
152
- }
153
-
154
- // Extract receiver for methods
155
- if funcDecl.Recv != nil && len(funcDecl.Recv.List) > 0 {
156
- if field := funcDecl.Recv.List[0]; field.Type != nil {
157
- function.Receiver = p.typeToString(field.Type)
158
- }
159
- }
160
-
161
- // Extract parameters
162
- if funcDecl.Type.Params != nil {
163
- for _, param := range funcDecl.Type.Params.List {
164
- paramType := p.typeToString(param.Type)
165
- if len(param.Names) > 0 {
166
- for _, name := range param.Names {
167
- function.Parameters = append(function.Parameters, Parameter{
168
- Name: name.Name,
169
- Type: paramType,
170
- Language: "go",
171
- })
172
- }
173
- } else {
174
- // Anonymous parameter
175
- function.Parameters = append(function.Parameters, Parameter{
176
- Name: "",
177
- Type: paramType,
178
- Language: "go",
179
- })
180
- }
181
- }
182
- }
183
-
184
- // Extract return type
185
- if funcDecl.Type.Results != nil {
186
- var returnTypes []string
187
- for _, result := range funcDecl.Type.Results.List {
188
- returnTypes = append(returnTypes, p.typeToString(result.Type))
189
- }
190
- function.ReturnType = strings.Join(returnTypes, ", ")
191
- }
192
-
193
- // Build signature
194
- function.Signature = p.buildFunctionSignature(function)
195
-
196
- // Extract purpose from comments
197
- if funcDecl.Doc != nil {
198
- function.Purpose = p.extractPurposeFromComments(funcDecl.Doc.Text())
199
- }
200
-
201
- // Calculate complexity (basic implementation)
202
- function.Complexity = p.calculateComplexity(funcDecl)
203
-
204
- return function
205
- }
206
-
207
- // extractStruct extracts struct information from AST
208
- func (p *Parser) extractStruct(typeSpec *ast.TypeSpec, structType *ast.StructType, filePath string, file *ast.File) Struct {
209
- pos := p.fileSet.Position(typeSpec.Pos())
210
- end := p.fileSet.Position(typeSpec.End())
211
-
212
- structInfo := Struct{
213
- EntityInfo: EntityInfo{
214
- Name: typeSpec.Name.Name,
215
- Type: "struct",
216
- File: filePath,
217
- StartLine: pos.Line,
218
- EndLine: end.Line,
219
- Package: file.Name.Name,
220
- },
221
- IsExported: ast.IsExported(typeSpec.Name.Name),
222
- }
223
-
224
- // Extract fields
225
- if structType.Fields != nil {
226
- for _, field := range structType.Fields.List {
227
- fieldType := p.typeToString(field.Type)
228
- tag := ""
229
- if field.Tag != nil {
230
- tag = field.Tag.Value
231
- }
232
-
233
- if len(field.Names) > 0 {
234
- for _, name := range field.Names {
235
- structInfo.Fields = append(structInfo.Fields, Field{
236
- Name: name.Name,
237
- Type: fieldType,
238
- Tag: tag,
239
- IsExported: ast.IsExported(name.Name),
240
- })
241
- }
242
- } else {
243
- // Embedded field
244
- structInfo.Fields = append(structInfo.Fields, Field{
245
- Name: fieldType, // Use type as name for embedded fields
246
- Type: fieldType,
247
- Tag: tag,
248
- IsExported: true, // Embedded fields are typically exported
249
- })
250
- }
251
- }
252
- }
253
-
254
- // Build signature
255
- structInfo.Signature = fmt.Sprintf("type %s struct", structInfo.Name)
256
-
257
- return structInfo
258
- }
259
-
260
- // extractInterface extracts interface information from AST
261
- func (p *Parser) extractInterface(typeSpec *ast.TypeSpec, interfaceType *ast.InterfaceType, filePath string, file *ast.File) Interface {
262
- pos := p.fileSet.Position(typeSpec.Pos())
263
- end := p.fileSet.Position(typeSpec.End())
264
-
265
- interfaceInfo := Interface{
266
- EntityInfo: EntityInfo{
267
- Name: typeSpec.Name.Name,
268
- Type: "interface",
269
- File: filePath,
270
- StartLine: pos.Line,
271
- EndLine: end.Line,
272
- Package: file.Name.Name,
273
- },
274
- IsExported: ast.IsExported(typeSpec.Name.Name),
275
- }
276
-
277
- // Extract methods
278
- if interfaceType.Methods != nil {
279
- for _, method := range interfaceType.Methods.List {
280
- if len(method.Names) > 0 {
281
- // Named method
282
- for _, name := range method.Names {
283
- if funcType, ok := method.Type.(*ast.FuncType); ok {
284
- methodInfo := Method{
285
- Name: name.Name,
286
- Signature: p.buildMethodSignature(name.Name, funcType),
287
- }
288
-
289
- // Extract parameters
290
- if funcType.Params != nil {
291
- for _, param := range funcType.Params.List {
292
- paramType := p.typeToString(param.Type)
293
- if len(param.Names) > 0 {
294
- for _, paramName := range param.Names {
295
- methodInfo.Parameters = append(methodInfo.Parameters, Parameter{
296
- Name: paramName.Name,
297
- Type: paramType,
298
- Language: "go",
299
- })
300
- }
301
- }
302
- }
303
- }
304
-
305
- // Extract return type
306
- if funcType.Results != nil {
307
- var returnTypes []string
308
- for _, result := range funcType.Results.List {
309
- returnTypes = append(returnTypes, p.typeToString(result.Type))
310
- }
311
- methodInfo.ReturnType = strings.Join(returnTypes, ", ")
312
- }
313
-
314
- interfaceInfo.Methods = append(interfaceInfo.Methods, methodInfo)
315
- }
316
- }
317
- }
318
- }
319
- }
320
-
321
- // Build signature
322
- interfaceInfo.Signature = fmt.Sprintf("type %s interface", interfaceInfo.Name)
323
-
324
- return interfaceInfo
325
- }
326
-
327
- // typeToString converts an AST type to string representation
328
- func (p *Parser) typeToString(expr ast.Expr) string {
329
- switch t := expr.(type) {
330
- case *ast.Ident:
331
- return t.Name
332
- case *ast.SelectorExpr:
333
- return p.typeToString(t.X) + "." + t.Sel.Name
334
- case *ast.StarExpr:
335
- return "*" + p.typeToString(t.X)
336
- case *ast.ArrayType:
337
- if t.Len == nil {
338
- return "[]" + p.typeToString(t.Elt)
339
- }
340
- return "[...]" + p.typeToString(t.Elt)
341
- case *ast.MapType:
342
- return "map[" + p.typeToString(t.Key) + "]" + p.typeToString(t.Value)
343
- case *ast.ChanType:
344
- dir := ""
345
- switch t.Dir {
346
- case ast.SEND:
347
- dir = "chan<- "
348
- case ast.RECV:
349
- dir = "<-chan "
350
- default:
351
- dir = "chan "
352
- }
353
- return dir + p.typeToString(t.Value)
354
- case *ast.FuncType:
355
- return "func" // Simplified for now
356
- case *ast.InterfaceType:
357
- return "interface{}"
358
- case *ast.StructType:
359
- return "struct{}"
360
- default:
361
- return "unknown"
362
- }
363
- }
364
-
365
- // buildFunctionSignature builds a function signature string
366
- func (p *Parser) buildFunctionSignature(function Function) string {
367
- var parts []string
368
-
369
- // Add receiver for methods
370
- if function.IsMethod && function.Receiver != "" {
371
- parts = append(parts, fmt.Sprintf("func (%s)", function.Receiver))
372
- } else {
373
- parts = append(parts, "func")
374
- }
375
-
376
- // Add function name
377
- parts = append(parts, function.Name)
378
-
379
- // Add parameters
380
- var paramStrs []string
381
- for _, param := range function.Parameters {
382
- if param.Name != "" {
383
- paramStrs = append(paramStrs, fmt.Sprintf("%s %s", param.Name, param.Type))
384
- } else {
385
- paramStrs = append(paramStrs, param.Type)
386
- }
387
- }
388
- parts = append(parts, fmt.Sprintf("(%s)", strings.Join(paramStrs, ", ")))
389
-
390
- // Add return type
391
- if function.ReturnType != "" {
392
- parts = append(parts, function.ReturnType)
393
- }
394
-
395
- return strings.Join(parts, " ")
396
- }
397
-
398
- // buildMethodSignature builds a method signature string for interfaces
399
- func (p *Parser) buildMethodSignature(name string, funcType *ast.FuncType) string {
400
- var parts []string
401
- parts = append(parts, name)
402
-
403
- // Add parameters
404
- var paramStrs []string
405
- if funcType.Params != nil {
406
- for _, param := range funcType.Params.List {
407
- paramType := p.typeToString(param.Type)
408
- if len(param.Names) > 0 {
409
- for _, paramName := range param.Names {
410
- paramStrs = append(paramStrs, fmt.Sprintf("%s %s", paramName.Name, paramType))
411
- }
412
- } else {
413
- paramStrs = append(paramStrs, paramType)
414
- }
415
- }
416
- }
417
- parts = append(parts, fmt.Sprintf("(%s)", strings.Join(paramStrs, ", ")))
418
-
419
- // Add return type
420
- if funcType.Results != nil {
421
- var returnTypes []string
422
- for _, result := range funcType.Results.List {
423
- returnTypes = append(returnTypes, p.typeToString(result.Type))
424
- }
425
- if len(returnTypes) > 0 {
426
- parts = append(parts, strings.Join(returnTypes, ", "))
427
- }
428
- }
429
-
430
- return strings.Join(parts, " ")
431
- }
432
-
433
- // extractPurposeFromComments extracts purpose from Go doc comments
434
- func (p *Parser) extractPurposeFromComments(docText string) string {
435
- lines := strings.Split(strings.TrimSpace(docText), "\n")
436
- if len(lines) > 0 {
437
- // Take the first line as purpose, removing comment markers
438
- purpose := strings.TrimSpace(lines[0])
439
- purpose = strings.TrimPrefix(purpose, "//")
440
- purpose = strings.TrimSpace(purpose)
441
- return purpose
442
- }
443
- return ""
444
- }
445
-
446
- // calculateComplexity calculates basic cyclomatic complexity
447
- func (p *Parser) calculateComplexity(funcDecl *ast.FuncDecl) int {
448
- complexity := 1 // Base complexity
449
-
450
- ast.Inspect(funcDecl, func(n ast.Node) bool {
451
- switch n.(type) {
452
- case *ast.IfStmt, *ast.ForStmt, *ast.RangeStmt, *ast.SwitchStmt, *ast.TypeSwitchStmt:
453
- complexity++
454
- case *ast.CaseClause:
455
- complexity++
456
- }
457
- return true
458
- })
459
-
460
- return complexity
461
- }