code-auditor-mcp 3.1.1 → 3.4.1

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 (361) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +724 -1
  3. package/README.md +85 -11
  4. package/dist/__test_tmp__/spec18_test.d.ts +2 -0
  5. package/dist/__test_tmp__/spec18_test.d.ts.map +1 -0
  6. package/dist/__test_tmp__/spec18_test.js +5 -0
  7. package/dist/__test_tmp__/spec18_test.js.map +1 -0
  8. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts +6 -0
  9. package/dist/__tests__/fixtures/spec-20/scripts/tool.d.ts.map +1 -0
  10. package/dist/__tests__/fixtures/spec-20/scripts/tool.js +12 -0
  11. package/dist/__tests__/fixtures/spec-20/scripts/tool.js.map +1 -0
  12. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts +7 -0
  13. package/dist/__tests__/fixtures/spec-20/src/demo-module.d.ts.map +1 -0
  14. package/dist/__tests__/fixtures/spec-20/src/demo-module.js +13 -0
  15. package/dist/__tests__/fixtures/spec-20/src/demo-module.js.map +1 -0
  16. package/dist/analyzers/analyzerUtils.js +2 -2
  17. package/dist/analyzers/analyzerUtils.js.map +1 -1
  18. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +1 -1
  19. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  20. package/dist/analyzers/cross-language/APIContractAnalyzer.js +2 -2
  21. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  22. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts +3 -0
  23. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js +3 -3
  25. package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -1
  26. package/dist/analyzers/cross-language/SchemaValidator.d.ts +1 -1
  27. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  28. package/dist/analyzers/cross-language/SchemaValidator.js +2 -2
  29. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  30. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +83 -0
  31. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -0
  32. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +611 -0
  33. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -0
  34. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  35. package/dist/analyzers/documentationAnalyzer.js +8 -4
  36. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  37. package/dist/analyzers/orm/adapterRegistry.d.ts +41 -0
  38. package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -0
  39. package/dist/analyzers/orm/adapterRegistry.js +73 -0
  40. package/dist/analyzers/orm/adapterRegistry.js.map +1 -0
  41. package/dist/analyzers/orm/drizzleAdapter.d.ts +42 -0
  42. package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -0
  43. package/dist/analyzers/orm/drizzleAdapter.js +166 -0
  44. package/dist/analyzers/orm/drizzleAdapter.js.map +1 -0
  45. package/dist/analyzers/orm/index.d.ts +14 -0
  46. package/dist/analyzers/orm/index.d.ts.map +1 -0
  47. package/dist/analyzers/orm/index.js +24 -0
  48. package/dist/analyzers/orm/index.js.map +1 -0
  49. package/dist/analyzers/orm/prismaAdapter.d.ts +45 -0
  50. package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -0
  51. package/dist/analyzers/orm/prismaAdapter.js +170 -0
  52. package/dist/analyzers/orm/prismaAdapter.js.map +1 -0
  53. package/dist/analyzers/orm/types.d.ts +63 -0
  54. package/dist/analyzers/orm/types.d.ts.map +1 -0
  55. package/dist/analyzers/orm/types.js +10 -0
  56. package/dist/analyzers/orm/types.js.map +1 -0
  57. package/dist/analyzers/provenance.d.ts +133 -0
  58. package/dist/analyzers/provenance.d.ts.map +1 -0
  59. package/dist/analyzers/provenance.js +1041 -0
  60. package/dist/analyzers/provenance.js.map +1 -0
  61. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  62. package/dist/analyzers/reactAnalyzer.js +117 -1
  63. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  64. package/dist/analyzers/ruleRegistry.d.ts +38 -0
  65. package/dist/analyzers/ruleRegistry.d.ts.map +1 -0
  66. package/dist/analyzers/ruleRegistry.js +123 -0
  67. package/dist/analyzers/ruleRegistry.js.map +1 -0
  68. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +58 -0
  69. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -0
  70. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +445 -0
  71. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -0
  72. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +52 -0
  73. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  74. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +108 -26
  75. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  76. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +64 -0
  77. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  78. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +259 -53
  79. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  80. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  81. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +5 -15
  82. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  83. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  84. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +10 -10
  85. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  86. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +25 -0
  87. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  88. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +250 -59
  89. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  90. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +103 -0
  91. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -0
  92. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +750 -0
  93. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -0
  94. package/dist/auditRunner.d.ts.map +1 -1
  95. package/dist/auditRunner.js +499 -4
  96. package/dist/auditRunner.js.map +1 -1
  97. package/dist/baseline.d.ts +98 -0
  98. package/dist/baseline.d.ts.map +1 -0
  99. package/dist/baseline.js +184 -0
  100. package/dist/baseline.js.map +1 -0
  101. package/dist/churn/churnExtractor.d.ts +32 -0
  102. package/dist/churn/churnExtractor.d.ts.map +1 -0
  103. package/dist/churn/churnExtractor.js +264 -0
  104. package/dist/churn/churnExtractor.js.map +1 -0
  105. package/dist/cli.js +1218 -11
  106. package/dist/cli.js.map +1 -1
  107. package/dist/codeIndexDB-enhanced.js +1 -1
  108. package/dist/codeIndexDB-enhanced.js.map +1 -1
  109. package/dist/codeIndexDB.d.ts +101 -0
  110. package/dist/codeIndexDB.d.ts.map +1 -1
  111. package/dist/codeIndexDB.js +665 -5
  112. package/dist/codeIndexDB.js.map +1 -1
  113. package/dist/config/configLoader.d.ts.map +1 -1
  114. package/dist/config/configLoader.js +104 -7
  115. package/dist/config/configLoader.js.map +1 -1
  116. package/dist/config/defaults.d.ts +72 -1
  117. package/dist/config/defaults.d.ts.map +1 -1
  118. package/dist/config/defaults.js +146 -15
  119. package/dist/config/defaults.js.map +1 -1
  120. package/dist/config/pathProfiles.d.ts +38 -0
  121. package/dist/config/pathProfiles.d.ts.map +1 -0
  122. package/dist/config/pathProfiles.js +47 -0
  123. package/dist/config/pathProfiles.js.map +1 -0
  124. package/dist/conventions/conventionMiner.d.ts +63 -0
  125. package/dist/conventions/conventionMiner.d.ts.map +1 -0
  126. package/dist/conventions/conventionMiner.js +696 -0
  127. package/dist/conventions/conventionMiner.js.map +1 -0
  128. package/dist/coverage/coverageService.d.ts +49 -0
  129. package/dist/coverage/coverageService.d.ts.map +1 -0
  130. package/dist/coverage/coverageService.js +117 -0
  131. package/dist/coverage/coverageService.js.map +1 -0
  132. package/dist/coverage/istanbulParser.d.ts +84 -0
  133. package/dist/coverage/istanbulParser.d.ts.map +1 -0
  134. package/dist/coverage/istanbulParser.js +120 -0
  135. package/dist/coverage/istanbulParser.js.map +1 -0
  136. package/dist/coverage/lcovParser.d.ts +40 -0
  137. package/dist/coverage/lcovParser.d.ts.map +1 -0
  138. package/dist/coverage/lcovParser.js +168 -0
  139. package/dist/coverage/lcovParser.js.map +1 -0
  140. package/dist/fingerprint.d.ts +17 -0
  141. package/dist/fingerprint.d.ts.map +1 -1
  142. package/dist/fingerprint.js +42 -0
  143. package/dist/fingerprint.js.map +1 -1
  144. package/dist/grammars/tree-sitter-css.wasm +0 -0
  145. package/dist/graph/blastRadius.d.ts +27 -0
  146. package/dist/graph/blastRadius.d.ts.map +1 -0
  147. package/dist/graph/blastRadius.js +150 -0
  148. package/dist/graph/blastRadius.js.map +1 -0
  149. package/dist/graph/callGraph.d.ts +78 -0
  150. package/dist/graph/callGraph.d.ts.map +1 -0
  151. package/dist/graph/callGraph.js +484 -0
  152. package/dist/graph/callGraph.js.map +1 -0
  153. package/dist/graph/importGraph.d.ts +91 -0
  154. package/dist/graph/importGraph.d.ts.map +1 -0
  155. package/dist/graph/importGraph.js +602 -0
  156. package/dist/graph/importGraph.js.map +1 -0
  157. package/dist/graph/outputFormatter.d.ts +55 -0
  158. package/dist/graph/outputFormatter.d.ts.map +1 -0
  159. package/dist/graph/outputFormatter.js +283 -0
  160. package/dist/graph/outputFormatter.js.map +1 -0
  161. package/dist/hooks/codex.d.ts +36 -1
  162. package/dist/hooks/codex.d.ts.map +1 -1
  163. package/dist/hooks/codex.js +88 -54
  164. package/dist/hooks/codex.js.map +1 -1
  165. package/dist/hotspots/hotspotScorer.d.ts +20 -0
  166. package/dist/hotspots/hotspotScorer.d.ts.map +1 -0
  167. package/dist/hotspots/hotspotScorer.js +202 -0
  168. package/dist/hotspots/hotspotScorer.js.map +1 -0
  169. package/dist/invariants/invariant-rules.schema.json +42 -1
  170. package/dist/invariants/ruleEngine.d.ts +4 -1
  171. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  172. package/dist/invariants/ruleEngine.js +141 -5
  173. package/dist/invariants/ruleEngine.js.map +1 -1
  174. package/dist/invariants/ruleValidator.d.ts.map +1 -1
  175. package/dist/invariants/ruleValidator.js +62 -1
  176. package/dist/invariants/ruleValidator.js.map +1 -1
  177. package/dist/invariants/types.d.ts +23 -2
  178. package/dist/invariants/types.d.ts.map +1 -1
  179. package/dist/languages/UniversalAnalyzer.d.ts +1 -1
  180. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  181. package/dist/languages/UniversalAnalyzer.js +61 -4
  182. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  183. package/dist/languages/index.d.ts +1 -0
  184. package/dist/languages/index.d.ts.map +1 -1
  185. package/dist/languages/index.js +3 -0
  186. package/dist/languages/index.js.map +1 -1
  187. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +59 -0
  188. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -0
  189. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +236 -0
  190. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -0
  191. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  192. package/dist/languages/tree-sitter/parser.js +2 -0
  193. package/dist/languages/tree-sitter/parser.js.map +1 -1
  194. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  195. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +61 -10
  196. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  197. package/dist/ledger.d.ts +128 -0
  198. package/dist/ledger.d.ts.map +1 -0
  199. package/dist/ledger.js +345 -0
  200. package/dist/ledger.js.map +1 -0
  201. package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
  202. package/dist/mcp-tools/projectTasks.js +9 -14
  203. package/dist/mcp-tools/projectTasks.js.map +1 -1
  204. package/dist/mcp.js +0 -0
  205. package/dist/mcpAuditJobs.d.ts.map +1 -1
  206. package/dist/mcpAuditJobs.js +3 -0
  207. package/dist/mcpAuditJobs.js.map +1 -1
  208. package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
  209. package/dist/reporting/csvReportGenerator.js +7 -1
  210. package/dist/reporting/csvReportGenerator.js.map +1 -1
  211. package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
  212. package/dist/reporting/htmlReportGenerator.js +5 -1
  213. package/dist/reporting/htmlReportGenerator.js.map +1 -1
  214. package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
  215. package/dist/reporting/jsonReportGenerator.js +10 -2
  216. package/dist/reporting/jsonReportGenerator.js.map +1 -1
  217. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  218. package/dist/reporting/sarifReportGenerator.js +17 -17
  219. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  220. package/dist/scripts/runBench.d.ts +94 -0
  221. package/dist/scripts/runBench.d.ts.map +1 -0
  222. package/dist/scripts/runBench.js +1559 -0
  223. package/dist/scripts/runBench.js.map +1 -0
  224. package/dist/search/QueryParser.d.ts.map +1 -1
  225. package/dist/search/QueryParser.js +51 -4
  226. package/dist/search/QueryParser.js.map +1 -1
  227. package/dist/services/CodeMapGenerator.d.ts +33 -0
  228. package/dist/services/CodeMapGenerator.d.ts.map +1 -1
  229. package/dist/services/CodeMapGenerator.js +404 -0
  230. package/dist/services/CodeMapGenerator.js.map +1 -1
  231. package/dist/styles/normalizer.d.ts +37 -0
  232. package/dist/styles/normalizer.d.ts.map +1 -0
  233. package/dist/styles/normalizer.js +301 -0
  234. package/dist/styles/normalizer.js.map +1 -0
  235. package/dist/styles/styleExtractor.d.ts +38 -0
  236. package/dist/styles/styleExtractor.d.ts.map +1 -0
  237. package/dist/styles/styleExtractor.js +630 -0
  238. package/dist/styles/styleExtractor.js.map +1 -0
  239. package/dist/styles/styleIndexer.d.ts +35 -0
  240. package/dist/styles/styleIndexer.d.ts.map +1 -0
  241. package/dist/styles/styleIndexer.js +266 -0
  242. package/dist/styles/styleIndexer.js.map +1 -0
  243. package/dist/styles/tailwindConfigLoader.d.ts +38 -0
  244. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -0
  245. package/dist/styles/tailwindConfigLoader.js +374 -0
  246. package/dist/styles/tailwindConfigLoader.js.map +1 -0
  247. package/dist/styles/tailwindExpander.d.ts +38 -0
  248. package/dist/styles/tailwindExpander.d.ts.map +1 -0
  249. package/dist/styles/tailwindExpander.js +637 -0
  250. package/dist/styles/tailwindExpander.js.map +1 -0
  251. package/dist/styles/types.d.ts +92 -0
  252. package/dist/styles/types.d.ts.map +1 -0
  253. package/dist/styles/types.js +10 -0
  254. package/dist/styles/types.js.map +1 -0
  255. package/dist/symbols.d.ts +21 -0
  256. package/dist/symbols.d.ts.map +1 -0
  257. package/dist/symbols.js +31 -0
  258. package/dist/symbols.js.map +1 -0
  259. package/dist/types.d.ts +326 -3
  260. package/dist/types.d.ts.map +1 -1
  261. package/dist/types.js.map +1 -1
  262. package/dist/utils/fileDiscovery.d.ts +1 -0
  263. package/dist/utils/fileDiscovery.d.ts.map +1 -1
  264. package/dist/utils/fileDiscovery.js +8 -2
  265. package/dist/utils/fileDiscovery.js.map +1 -1
  266. package/package.json +9 -5
  267. package/plugin/.claude-plugin/plugin.json +1 -1
  268. package/plugin/scripts/hook-audit.sh +5 -1
  269. package/plugin/skills/code-auditor/SKILL.md +51 -0
  270. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts +0 -21
  271. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts.map +0 -1
  272. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js +0 -21
  273. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js.map +0 -1
  274. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts +0 -13
  275. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts.map +0 -1
  276. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js +0 -12
  277. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js.map +0 -1
  278. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts +0 -11
  279. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts.map +0 -1
  280. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js +0 -22
  281. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js.map +0 -1
  282. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts +0 -9
  283. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts.map +0 -1
  284. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js +0 -13
  285. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js.map +0 -1
  286. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts +0 -13
  287. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts.map +0 -1
  288. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js +0 -18
  289. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js.map +0 -1
  290. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts +0 -10
  291. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts.map +0 -1
  292. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js +0 -16
  293. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js.map +0 -1
  294. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts +0 -14
  295. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts.map +0 -1
  296. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js +0 -18
  297. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js.map +0 -1
  298. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts +0 -13
  299. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts.map +0 -1
  300. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js +0 -22
  301. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js.map +0 -1
  302. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts +0 -10
  303. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts.map +0 -1
  304. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js +0 -20
  305. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js.map +0 -1
  306. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts +0 -18
  307. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts.map +0 -1
  308. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js +0 -28
  309. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js.map +0 -1
  310. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts +0 -11
  311. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts.map +0 -1
  312. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js +0 -31
  313. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js.map +0 -1
  314. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts +0 -11
  315. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts.map +0 -1
  316. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js +0 -18
  317. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js.map +0 -1
  318. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts +0 -13
  319. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts.map +0 -1
  320. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js +0 -61
  321. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js.map +0 -1
  322. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts +0 -10
  323. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts.map +0 -1
  324. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js +0 -15
  325. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js.map +0 -1
  326. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts +0 -11
  327. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts.map +0 -1
  328. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js +0 -49
  329. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js.map +0 -1
  330. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts +0 -10
  331. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts.map +0 -1
  332. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js +0 -19
  333. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js.map +0 -1
  334. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts +0 -37
  335. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts.map +0 -1
  336. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js +0 -73
  337. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js.map +0 -1
  338. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts +0 -12
  339. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts.map +0 -1
  340. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js +0 -82
  341. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js.map +0 -1
  342. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts +0 -10
  343. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts.map +0 -1
  344. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js +0 -15
  345. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js.map +0 -1
  346. package/dist/analyzers/dataAccessAnalyzer.d.ts +0 -46
  347. package/dist/analyzers/dataAccessAnalyzer.d.ts.map +0 -1
  348. package/dist/analyzers/dataAccessAnalyzer.js +0 -474
  349. package/dist/analyzers/dataAccessAnalyzer.js.map +0 -1
  350. package/dist/analyzers/dryAnalyzer.d.ts +0 -31
  351. package/dist/analyzers/dryAnalyzer.d.ts.map +0 -1
  352. package/dist/analyzers/dryAnalyzer.js +0 -734
  353. package/dist/analyzers/dryAnalyzer.js.map +0 -1
  354. package/dist/analyzers/schemaAnalyzer.d.ts +0 -23
  355. package/dist/analyzers/schemaAnalyzer.d.ts.map +0 -1
  356. package/dist/analyzers/schemaAnalyzer.js +0 -564
  357. package/dist/analyzers/schemaAnalyzer.js.map +0 -1
  358. package/dist/analyzers/solidAnalyzer.d.ts +0 -33
  359. package/dist/analyzers/solidAnalyzer.d.ts.map +0 -1
  360. package/dist/analyzers/solidAnalyzer.js +0 -847
  361. package/dist/analyzers/solidAnalyzer.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conventionMiner.js","sourceRoot":"","sources":["../../src/conventions/conventionMiner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Coverage import service — Spec 15 R4.
3
+ *
4
+ * Orchestrates importing coverage data from lcov .info or Istanbul JSON files,
5
+ * auto-detecting the format and storing results in the CodeIndexDB.
6
+ */
7
+ export type CoverageFormat = 'lcov' | 'istanbul';
8
+ export interface ImportResult {
9
+ format: CoverageFormat;
10
+ filesImported: number;
11
+ entriesImported: number;
12
+ basis: 'measured';
13
+ source: string;
14
+ }
15
+ /**
16
+ * Detect the coverage format from file content.
17
+ * LCOV files start with "TN:" — Istanbul files are JSON.
18
+ */
19
+ export declare function detectFormat(content: string): CoverageFormat;
20
+ /**
21
+ * Import a coverage file into the CodeIndexDB.
22
+ *
23
+ * @param filePath - Path to the coverage file (.info or .json)
24
+ * @param projectRoot - Project root for resolving relative paths
25
+ * @returns Import statistics
26
+ */
27
+ export declare function importCoverageFile(filePath: string, projectRoot: string): Promise<ImportResult>;
28
+ /**
29
+ * Generate a coverage report from the DB.
30
+ */
31
+ export declare function generateCoverageReport(): Promise<{
32
+ totalFunctions: number;
33
+ coveredFunctions: number;
34
+ coverageRate: number;
35
+ byRiskDecile: Array<{
36
+ decile: number;
37
+ covered: number;
38
+ total: number;
39
+ rate: number;
40
+ }>;
41
+ untestedTopDecile: Array<{
42
+ functionName: string;
43
+ filePath: string;
44
+ riskScore: number;
45
+ basis: string;
46
+ }>;
47
+ staleImport: boolean;
48
+ }>;
49
+ //# sourceMappingURL=coverageService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverageService.d.ts","sourceRoot":"","sources":["../../src/coverage/coverageService.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAM5D;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAgFvB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,IAAI,OAAO,CAAC;IACtD,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,iBAAiB,EAAE,KAAK,CAAC;QACvB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC,CA+BD"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Coverage import service — Spec 15 R4.
3
+ *
4
+ * Orchestrates importing coverage data from lcov .info or Istanbul JSON files,
5
+ * auto-detecting the format and storing results in the CodeIndexDB.
6
+ */
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import { CodeIndexDB } from '../codeIndexDB.js';
10
+ import { parseLcov, lcovToLineCoverage } from './lcovParser.js';
11
+ import { parseIstanbul, istanbulToLineCoverage } from './istanbulParser.js';
12
+ /**
13
+ * Detect the coverage format from file content.
14
+ * LCOV files start with "TN:" — Istanbul files are JSON.
15
+ */
16
+ export function detectFormat(content) {
17
+ const trimmed = content.trim();
18
+ if (trimmed.startsWith('TN:') || trimmed.startsWith('SF:')) {
19
+ return 'lcov';
20
+ }
21
+ return 'istanbul';
22
+ }
23
+ /**
24
+ * Import a coverage file into the CodeIndexDB.
25
+ *
26
+ * @param filePath - Path to the coverage file (.info or .json)
27
+ * @param projectRoot - Project root for resolving relative paths
28
+ * @returns Import statistics
29
+ */
30
+ export async function importCoverageFile(filePath, projectRoot) {
31
+ const raw = await fs.readFile(filePath, 'utf-8');
32
+ const format = detectFormat(raw);
33
+ let lineCoverage;
34
+ let filesImported;
35
+ if (format === 'lcov') {
36
+ const entries = parseLcov(raw);
37
+ lineCoverage = lcovToLineCoverage(entries);
38
+ filesImported = new Set(entries.map((e) => e.sourceFile).filter(Boolean)).size;
39
+ }
40
+ else {
41
+ const parsed = parseIstanbul(raw);
42
+ lineCoverage = istanbulToLineCoverage(parsed);
43
+ filesImported = parsed.length;
44
+ }
45
+ // Query all indexed functions from the DB and match against coverage
46
+ const db = CodeIndexDB.getInstance();
47
+ await db.initialize();
48
+ const allFunctions = db.rawDb
49
+ .prepare(`SELECT id, name, file_path, line_number, is_exported FROM functions
50
+ WHERE language IN ('typescript', 'javascript', 'go')`)
51
+ .all();
52
+ const entries = [];
53
+ const absoluteProjectRoot = path.resolve(projectRoot);
54
+ for (const fn of allFunctions) {
55
+ let covered = false;
56
+ // Try matching by absolute path and relative-path variants
57
+ for (const [covFilePath, coveredLines] of lineCoverage) {
58
+ const absPath = normalizePath(path.resolve(absoluteProjectRoot, covFilePath));
59
+ const fnAbsPath = normalizePath(path.resolve(absoluteProjectRoot, fn.file_path));
60
+ if (absPath === fnAbsPath || covFilePath === fn.file_path) {
61
+ covered = coveredLines.has(fn.line_number);
62
+ break;
63
+ }
64
+ }
65
+ entries.push({
66
+ functionName: fn.name,
67
+ filePath: fn.file_path,
68
+ lineNumber: fn.line_number,
69
+ basis: 'measured',
70
+ covered,
71
+ source: filePath,
72
+ });
73
+ }
74
+ const entriesImported = entries.filter((e) => e.covered).length;
75
+ db.importCoverageData(entries);
76
+ return {
77
+ format,
78
+ filesImported,
79
+ entriesImported,
80
+ basis: 'measured',
81
+ source: filePath,
82
+ };
83
+ }
84
+ /**
85
+ * Generate a coverage report from the DB.
86
+ */
87
+ export async function generateCoverageReport() {
88
+ const db = CodeIndexDB.getInstance();
89
+ await db.initialize();
90
+ const byRiskDecile = db.getCoverageByRiskDecile(10);
91
+ const untestedTopDecile = db.getUntestedTopDecile(0.1);
92
+ const staleImport = db.isCoverageStale();
93
+ // Overall stats
94
+ const totalResult = db.rawDb
95
+ .prepare('SELECT COUNT(*) as cnt FROM functions')
96
+ .get();
97
+ const coveredResult = db.rawDb
98
+ .prepare(`SELECT COUNT(DISTINCT function_name || ':' || file_path) as cnt
99
+ FROM coverage_data WHERE covered = 1`)
100
+ .get();
101
+ const totalFunctions = totalResult.cnt;
102
+ const coveredFunctions = coveredResult.cnt;
103
+ const coverageRate = totalFunctions > 0 ? coveredFunctions / totalFunctions : 0;
104
+ return {
105
+ totalFunctions,
106
+ coveredFunctions,
107
+ coverageRate,
108
+ byRiskDecile,
109
+ untestedTopDecile,
110
+ staleImport,
111
+ };
112
+ }
113
+ // ── Helpers ──────────────────────────────────────────────────────────────
114
+ function normalizePath(p) {
115
+ return p.replace(/\\/g, '/').replace(/\/+$/, '');
116
+ }
117
+ //# sourceMappingURL=coverageService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coverageService.js","sourceRoot":"","sources":["../../src/coverage/coverageService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Istanbul (JSON) coverage parser — Spec 15 R4.
3
+ *
4
+ * Parses Istanbul/nyc JSON coverage output. The format is a map of
5
+ * file paths → coverage data objects with statementMap, fnMap, and hit counts.
6
+ *
7
+ * Format reference: https://github.com/istanbuljs/istanbuljs
8
+ */
9
+ export interface IstanbulCoverage {
10
+ [filePath: string]: {
11
+ path: string;
12
+ statementMap: Record<string, {
13
+ start: {
14
+ line: number;
15
+ column: number;
16
+ };
17
+ end: {
18
+ line: number;
19
+ column: number;
20
+ };
21
+ }>;
22
+ fnMap: Record<string, {
23
+ name: string;
24
+ decl: {
25
+ start: {
26
+ line: number;
27
+ column: number;
28
+ };
29
+ end: {
30
+ line: number;
31
+ column: number;
32
+ };
33
+ };
34
+ loc: {
35
+ start: {
36
+ line: number;
37
+ column: number;
38
+ };
39
+ end: {
40
+ line: number;
41
+ column: number;
42
+ };
43
+ };
44
+ line?: number;
45
+ }>;
46
+ branchMap: Record<string, unknown>;
47
+ /** Statement hit counts: statementId → execution count */
48
+ s: Record<string, number>;
49
+ /** Function hit counts: functionId → execution count */
50
+ f: Record<string, number>;
51
+ /** Branch hit counts */
52
+ b: Record<string, number[]>;
53
+ /** Full path to the source file */
54
+ [key: string]: unknown;
55
+ };
56
+ }
57
+ interface ParsedFile {
58
+ sourceFile: string;
59
+ /** Set of covered line numbers (statement hit count > 0) */
60
+ coveredLines: Set<number>;
61
+ /** Map of function name → { line, hitCount } */
62
+ functions: Map<string, {
63
+ line: number;
64
+ hitCount: number;
65
+ }>;
66
+ /** Total statements */
67
+ totalStatements: number;
68
+ /** Covered statements */
69
+ coveredStatements: number;
70
+ }
71
+ /**
72
+ * Parse Istanbul JSON coverage data string.
73
+ */
74
+ export declare function parseIstanbul(content: string): ParsedFile[];
75
+ /**
76
+ * Convert Istanbul parsed files to a file → covered lines map.
77
+ */
78
+ export declare function istanbulToLineCoverage(files: ParsedFile[]): Map<string, Set<number>>;
79
+ /**
80
+ * Convert Istanbul parsed files to a file → covered function names map.
81
+ */
82
+ export declare function istanbulToFunctionCoverage(files: ParsedFile[]): Map<string, Set<string>>;
83
+ export {};
84
+ //# sourceMappingURL=istanbulParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"istanbulParser.d.ts","sourceRoot":"","sources":["../../src/coverage/istanbulParser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;YAC3B,KAAK,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YACxC,GAAG,EAAE;gBAAE,IAAI,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;SACvC,CAAC,CAAC;QACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE;gBAAE,KAAK,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,GAAG,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;aAAE,CAAC;YACzF,GAAG,EAAE;gBAAE,KAAK,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAC;gBAAC,GAAG,EAAE;oBAAE,IAAI,EAAE,MAAM,CAAC;oBAAC,MAAM,EAAE,MAAM,CAAA;iBAAE,CAAA;aAAE,CAAC;YACxF,IAAI,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,0DAA0D;QAC1D,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,wDAAwD;QACxD,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1B,wBAAwB;QACxB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5B,mCAAmC;QACnC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;CACH;AAED,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B,gDAAgD;IAChD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,uBAAuB;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAuE3D;AAgCD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAMpF;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAUxF"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Istanbul (JSON) coverage parser — Spec 15 R4.
3
+ *
4
+ * Parses Istanbul/nyc JSON coverage output. The format is a map of
5
+ * file paths → coverage data objects with statementMap, fnMap, and hit counts.
6
+ *
7
+ * Format reference: https://github.com/istanbuljs/istanbuljs
8
+ */
9
+ /**
10
+ * Parse Istanbul JSON coverage data string.
11
+ */
12
+ export function parseIstanbul(content) {
13
+ const raw = JSON.parse(content);
14
+ // Istanbul output can be a top-level map of file → data, or wrapped in
15
+ // an object with a `coverage` or individual file keys.
16
+ const data = extractCoverageMap(raw);
17
+ if (!data)
18
+ return [];
19
+ const results = [];
20
+ for (const [filePath, fileData] of Object.entries(data)) {
21
+ if (!fileData || typeof fileData !== 'object')
22
+ continue;
23
+ const fd = fileData;
24
+ // Use `path` field if available, otherwise use the key
25
+ const sourceFile = typeof fd.path === 'string' ? fd.path : filePath;
26
+ const coveredLines = new Set();
27
+ const functions = new Map();
28
+ // Build line coverage from statements
29
+ const stmtMap = fd.statementMap;
30
+ const s = fd.s;
31
+ if (stmtMap && s) {
32
+ for (const [stmtId, loc] of Object.entries(stmtMap)) {
33
+ const hitCount = s[stmtId] ?? 0;
34
+ if (hitCount > 0 && loc?.start?.line) {
35
+ coveredLines.add(loc.start.line);
36
+ }
37
+ }
38
+ }
39
+ // Build function coverage
40
+ const fnMap = fd.fnMap;
41
+ const f = fd.f;
42
+ if (fnMap && f) {
43
+ for (const [fnId, fnData] of Object.entries(fnMap)) {
44
+ if (!fnData || typeof fnData !== 'object')
45
+ continue;
46
+ const hitCount = f[fnId] ?? 0;
47
+ const line = fnData.line ??
48
+ fnData.decl?.start?.line ??
49
+ fnData.loc?.start?.line ??
50
+ 0;
51
+ if (fnData.name) {
52
+ functions.set(fnData.name, { line, hitCount });
53
+ }
54
+ }
55
+ }
56
+ const totalStatements = stmtMap ? Object.keys(stmtMap).length : 0;
57
+ const coveredStatements = s
58
+ ? Object.values(s).filter((c) => c > 0).length
59
+ : 0;
60
+ results.push({
61
+ sourceFile,
62
+ coveredLines,
63
+ functions,
64
+ totalStatements,
65
+ coveredStatements,
66
+ });
67
+ }
68
+ return results;
69
+ }
70
+ /**
71
+ * Extract the coverage data map from a raw Istanbul JSON value.
72
+ * Handles different wrapper formats.
73
+ */
74
+ function extractCoverageMap(raw) {
75
+ if (raw === null || raw === undefined || typeof raw !== 'object')
76
+ return null;
77
+ const obj = raw;
78
+ // Direct map of filePath → coverage data (most common)
79
+ // Check if any value has a `statementMap` field
80
+ for (const val of Object.values(obj)) {
81
+ if (val && typeof val === 'object' && 'statementMap' in val) {
82
+ return obj;
83
+ }
84
+ }
85
+ // "istanbul" key (older format)
86
+ if ('istanbul' in obj) {
87
+ return extractCoverageMap(obj.istanbul);
88
+ }
89
+ // "coverage" or "coverageMap" key
90
+ if ('coverage' in obj) {
91
+ return extractCoverageMap(obj.coverage);
92
+ }
93
+ return null;
94
+ }
95
+ /**
96
+ * Convert Istanbul parsed files to a file → covered lines map.
97
+ */
98
+ export function istanbulToLineCoverage(files) {
99
+ const map = new Map();
100
+ for (const f of files) {
101
+ map.set(f.sourceFile, f.coveredLines);
102
+ }
103
+ return map;
104
+ }
105
+ /**
106
+ * Convert Istanbul parsed files to a file → covered function names map.
107
+ */
108
+ export function istanbulToFunctionCoverage(files) {
109
+ const map = new Map();
110
+ for (const f of files) {
111
+ const covered = new Set();
112
+ for (const [fnName, { hitCount }] of f.functions) {
113
+ if (hitCount > 0)
114
+ covered.add(fnName);
115
+ }
116
+ map.set(f.sourceFile, covered);
117
+ }
118
+ return map;
119
+ }
120
+ //# sourceMappingURL=istanbulParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"istanbulParser.js","sourceRoot":"","sources":["../../src/coverage/istanbulParser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuCH;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEzC,uEAAuE;IACvE,uDAAuD;IACvD,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,SAAS;QACxD,MAAM,EAAE,GAAG,QAAmC,CAAC;QAE/C,uDAAuD;QACvD,MAAM,UAAU,GAAG,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8C,CAAC;QAExE,sCAAsC;QACtC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAuE,CAAC;QAC3F,MAAM,CAAC,GAAG,EAAE,CAAC,CAAuC,CAAC;QAErD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,QAAQ,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oBACrC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,0BAA0B;QAC1B,MAAM,KAAK,GAAG,EAAE,CAAC,KAKH,CAAC;QACf,MAAM,CAAC,GAAG,EAAE,CAAC,CAAuC,CAAC;QAErD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,SAAS;gBACpD,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,IAAI,GACR,MAAM,CAAC,IAAI;oBACX,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI;oBACxB,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI;oBACvB,CAAC,CAAC;gBACJ,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;oBAChB,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,CAAC;YACzB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;YAC9C,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO,CAAC,IAAI,CAAC;YACX,UAAU;YACV,YAAY;YACZ,SAAS;YACT,eAAe;YACf,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE9E,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,uDAAuD;IACvD,gDAAgD;IAChD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,cAAc,IAAK,GAA+B,EAAE,CAAC;YACzF,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,kCAAkC;IAClC,IAAI,UAAU,IAAI,GAAG,EAAE,CAAC;QACtB,OAAO,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAmB;IACxD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAAmB;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YACjD,IAAI,QAAQ,GAAG,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * LCOV (.info) coverage parser — Spec 15 R4.
3
+ *
4
+ * Parses LCOV tracefiles produced by Istanbul/nyc, c8, and similar tools.
5
+ * Extracts per-file, per-line, and per-function coverage data.
6
+ *
7
+ * Format reference: https://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
8
+ */
9
+ export interface LcovEntry {
10
+ /** Source file path (SF:) */
11
+ sourceFile: string;
12
+ /** Array of [lineNumber, executionCount] tuples (DA:) */
13
+ lines: Array<[number, number]>;
14
+ /** Map of function name → [line, hitCount] (FN: + FNDA:) */
15
+ functions: Map<string, {
16
+ line: number;
17
+ hitCount: number;
18
+ }>;
19
+ /** Lines found (LF:) */
20
+ linesFound: number;
21
+ /** Lines hit (LH:) */
22
+ linesHit: number;
23
+ /** Test name (TN:) */
24
+ testName?: string;
25
+ }
26
+ /**
27
+ * Parse an LCOV .info file string into structured entries.
28
+ * One entry per `end_of_record` delimited record.
29
+ */
30
+ export declare function parseLcov(content: string): LcovEntry[];
31
+ /**
32
+ * Convert LCOV entries to a flat coverage map:
33
+ * sourceFile → Set of covered line numbers.
34
+ */
35
+ export declare function lcovToLineCoverage(entries: LcovEntry[]): Map<string, Set<number>>;
36
+ /**
37
+ * Convert LCOV entries to a flat set of covered function names per file.
38
+ */
39
+ export declare function lcovToFunctionCoverage(entries: LcovEntry[]): Map<string, Set<string>>;
40
+ //# sourceMappingURL=lcovParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lcovParser.d.ts","sourceRoot":"","sources":["../../src/coverage/lcovParser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/B,4DAA4D;IAC5D,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3D,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CA6FtD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAgBjF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAerF"}
@@ -0,0 +1,168 @@
1
+ /**
2
+ * LCOV (.info) coverage parser — Spec 15 R4.
3
+ *
4
+ * Parses LCOV tracefiles produced by Istanbul/nyc, c8, and similar tools.
5
+ * Extracts per-file, per-line, and per-function coverage data.
6
+ *
7
+ * Format reference: https://ltp.sourceforge.net/coverage/lcov/geninfo.1.php
8
+ */
9
+ /**
10
+ * Parse an LCOV .info file string into structured entries.
11
+ * One entry per `end_of_record` delimited record.
12
+ */
13
+ export function parseLcov(content) {
14
+ const entries = [];
15
+ let current = null;
16
+ /** Pending FN: entries waiting for their FNDA: match in subsequent lines. */
17
+ let pendingFns = new Map(); // name → line
18
+ let pendingTestName;
19
+ for (const line of content.split('\n')) {
20
+ const trimmed = line.trim();
21
+ if (trimmed === '' || trimmed === 'end_of_record') {
22
+ if (trimmed === 'end_of_record' && current) {
23
+ current = null;
24
+ pendingFns = new Map();
25
+ pendingTestName = undefined;
26
+ }
27
+ continue;
28
+ }
29
+ const colonIdx = trimmed.indexOf(':');
30
+ if (colonIdx < 0)
31
+ continue;
32
+ const tag = trimmed.substring(0, colonIdx);
33
+ const value = trimmed.substring(colonIdx + 1);
34
+ switch (tag) {
35
+ case 'TN':
36
+ // Record test name — applied to the next SF or existing current entry
37
+ pendingTestName = value;
38
+ if (!current) {
39
+ current = createEmptyEntry();
40
+ }
41
+ current.testName = value;
42
+ break;
43
+ case 'SF':
44
+ // New source file — start a fresh record
45
+ current = createEmptyEntry();
46
+ current.sourceFile = value;
47
+ if (pendingTestName) {
48
+ current.testName = pendingTestName;
49
+ pendingTestName = undefined;
50
+ }
51
+ entries.push(current);
52
+ break;
53
+ case 'DA': {
54
+ if (!current)
55
+ break;
56
+ const [lineNum, count] = value.split(',').map(Number);
57
+ if (!isNaN(lineNum) && !isNaN(count)) {
58
+ current.lines.push([lineNum, count]);
59
+ }
60
+ break;
61
+ }
62
+ case 'LF':
63
+ if (current)
64
+ current.linesFound = parseInt(value, 10) || 0;
65
+ break;
66
+ case 'LH':
67
+ if (current)
68
+ current.linesHit = parseInt(value, 10) || 0;
69
+ break;
70
+ case 'FN': {
71
+ if (!current)
72
+ break;
73
+ const [lineNum, fnName] = splitComma(value);
74
+ if (lineNum !== null && fnName) {
75
+ pendingFns.set(fnName, lineNum);
76
+ }
77
+ break;
78
+ }
79
+ case 'FNDA': {
80
+ if (!current)
81
+ break;
82
+ const [countStr, fnName] = splitComma(value);
83
+ const count = countStr ?? NaN;
84
+ if (fnName && !isNaN(count)) {
85
+ const line = pendingFns.get(fnName);
86
+ current.functions.set(fnName, {
87
+ line: line ?? 0,
88
+ hitCount: count,
89
+ });
90
+ }
91
+ break;
92
+ }
93
+ case 'BRDA':
94
+ case 'BRF':
95
+ case 'BRH':
96
+ // Branch coverage — not needed for function-level detection
97
+ break;
98
+ }
99
+ }
100
+ return entries;
101
+ }
102
+ /**
103
+ * Convert LCOV entries to a flat coverage map:
104
+ * sourceFile → Set of covered line numbers.
105
+ */
106
+ export function lcovToLineCoverage(entries) {
107
+ const map = new Map();
108
+ for (const entry of entries) {
109
+ const covered = new Set();
110
+ for (const [line, count] of entry.lines) {
111
+ if (count > 0)
112
+ covered.add(line);
113
+ }
114
+ // Merge with existing (multiple records can cover the same file)
115
+ const existing = map.get(entry.sourceFile);
116
+ if (existing) {
117
+ for (const c of covered)
118
+ existing.add(c);
119
+ }
120
+ else {
121
+ map.set(entry.sourceFile, covered);
122
+ }
123
+ }
124
+ return map;
125
+ }
126
+ /**
127
+ * Convert LCOV entries to a flat set of covered function names per file.
128
+ */
129
+ export function lcovToFunctionCoverage(entries) {
130
+ const map = new Map();
131
+ for (const entry of entries) {
132
+ const covered = new Set();
133
+ for (const [fnName, { hitCount }] of entry.functions) {
134
+ if (hitCount > 0)
135
+ covered.add(fnName);
136
+ }
137
+ const existing = map.get(entry.sourceFile);
138
+ if (existing) {
139
+ for (const c of covered)
140
+ existing.add(c);
141
+ }
142
+ else {
143
+ map.set(entry.sourceFile, covered);
144
+ }
145
+ }
146
+ return map;
147
+ }
148
+ // ── Helpers ──────────────────────────────────────────────────────────────
149
+ function createEmptyEntry() {
150
+ return {
151
+ sourceFile: '',
152
+ lines: [],
153
+ functions: new Map(),
154
+ linesFound: 0,
155
+ linesHit: 0,
156
+ };
157
+ }
158
+ /** Split "123,foo" → [123, "foo"]; handles commas in function names. */
159
+ function splitComma(value) {
160
+ const idx = value.indexOf(',');
161
+ if (idx < 0)
162
+ return [null, null];
163
+ const first = value.substring(0, idx);
164
+ const rest = value.substring(idx + 1);
165
+ const num = parseInt(first, 10);
166
+ return [isNaN(num) ? null : num, rest || null];
167
+ }
168
+ //# sourceMappingURL=lcovParser.js.map