code-auditor-mcp 3.1.1 → 3.4.0

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 (357) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +665 -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 +483 -3
  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 +261 -0
  104. package/dist/churn/churnExtractor.js.map +1 -0
  105. package/dist/cli.js +1215 -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 +661 -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 +95 -1
  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/package.json +9 -5
  263. package/plugin/.claude-plugin/plugin.json +1 -1
  264. package/plugin/scripts/hook-audit.sh +5 -1
  265. package/plugin/skills/code-auditor/SKILL.md +51 -0
  266. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts +0 -21
  267. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.d.ts.map +0 -1
  268. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js +0 -21
  269. package/dist/analyzers/__tests__/fixtures/spec-17/anonymous-callback-map.js.map +0 -1
  270. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts +0 -13
  271. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.d.ts.map +0 -1
  272. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js +0 -12
  273. package/dist/analyzers/__tests__/fixtures/spec-17/barrel-test-migration.js.map +0 -1
  274. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts +0 -11
  275. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.d.ts.map +0 -1
  276. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js +0 -22
  277. package/dist/analyzers/__tests__/fixtures/spec-17/direct-access-allow-config.js.map +0 -1
  278. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts +0 -9
  279. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.d.ts.map +0 -1
  280. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js +0 -13
  281. package/dist/analyzers/__tests__/fixtures/spec-17/exported-undocumented.js.map +0 -1
  282. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts +0 -13
  283. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.d.ts.map +0 -1
  284. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js +0 -18
  285. package/dist/analyzers/__tests__/fixtures/spec-17/for-loop-query.js.map +0 -1
  286. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts +0 -10
  287. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.d.ts.map +0 -1
  288. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js +0 -16
  289. package/dist/analyzers/__tests__/fixtures/spec-17/import-node-builtin.js.map +0 -1
  290. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts +0 -14
  291. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.d.ts.map +0 -1
  292. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js +0 -18
  293. package/dist/analyzers/__tests__/fixtures/spec-17/jsx-event-handler.js.map +0 -1
  294. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts +0 -13
  295. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.d.ts.map +0 -1
  296. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js +0 -22
  297. package/dist/analyzers/__tests__/fixtures/spec-17/nested-loops-query.js.map +0 -1
  298. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts +0 -10
  299. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.d.ts.map +0 -1
  300. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js +0 -20
  301. package/dist/analyzers/__tests__/fixtures/spec-17/nine-line-repeated.js.map +0 -1
  302. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts +0 -18
  303. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.d.ts.map +0 -1
  304. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js +0 -28
  305. package/dist/analyzers/__tests__/fixtures/spec-17/private-methods.js.map +0 -1
  306. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts +0 -11
  307. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.d.ts.map +0 -1
  308. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js +0 -31
  309. package/dist/analyzers/__tests__/fixtures/spec-17/scope-all-config.js.map +0 -1
  310. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts +0 -11
  311. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.d.ts.map +0 -1
  312. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js +0 -18
  313. package/dist/analyzers/__tests__/fixtures/spec-17/sql-tagged-template.js.map +0 -1
  314. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts +0 -13
  315. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.d.ts.map +0 -1
  316. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js +0 -61
  317. package/dist/analyzers/__tests__/fixtures/spec-17/structural-similar-methods.js.map +0 -1
  318. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts +0 -10
  319. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.d.ts.map +0 -1
  320. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js +0 -15
  321. package/dist/analyzers/__tests__/fixtures/spec-17/template-prefix-table.js.map +0 -1
  322. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts +0 -11
  323. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.d.ts.map +0 -1
  324. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js +0 -49
  325. package/dist/analyzers/__tests__/fixtures/spec-17/token-identical-20-lines.js.map +0 -1
  326. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts +0 -10
  327. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.d.ts.map +0 -1
  328. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js +0 -19
  329. package/dist/analyzers/__tests__/fixtures/spec-17/tsx-no-db-usage.js.map +0 -1
  330. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts +0 -37
  331. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.d.ts.map +0 -1
  332. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js +0 -73
  333. package/dist/analyzers/__tests__/fixtures/spec-17/twenty-methods-vs-complex.js.map +0 -1
  334. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts +0 -12
  335. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.d.ts.map +0 -1
  336. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js +0 -82
  337. package/dist/analyzers/__tests__/fixtures/spec-17/unique-method-74-lines.js.map +0 -1
  338. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts +0 -10
  339. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.d.ts.map +0 -1
  340. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js +0 -15
  341. package/dist/analyzers/__tests__/fixtures/spec-17/word-the-in-comment.js.map +0 -1
  342. package/dist/analyzers/dataAccessAnalyzer.d.ts +0 -46
  343. package/dist/analyzers/dataAccessAnalyzer.d.ts.map +0 -1
  344. package/dist/analyzers/dataAccessAnalyzer.js +0 -474
  345. package/dist/analyzers/dataAccessAnalyzer.js.map +0 -1
  346. package/dist/analyzers/dryAnalyzer.d.ts +0 -31
  347. package/dist/analyzers/dryAnalyzer.d.ts.map +0 -1
  348. package/dist/analyzers/dryAnalyzer.js +0 -734
  349. package/dist/analyzers/dryAnalyzer.js.map +0 -1
  350. package/dist/analyzers/schemaAnalyzer.d.ts +0 -23
  351. package/dist/analyzers/schemaAnalyzer.d.ts.map +0 -1
  352. package/dist/analyzers/schemaAnalyzer.js +0 -564
  353. package/dist/analyzers/schemaAnalyzer.js.map +0 -1
  354. package/dist/analyzers/solidAnalyzer.d.ts +0 -33
  355. package/dist/analyzers/solidAnalyzer.d.ts.map +0 -1
  356. package/dist/analyzers/solidAnalyzer.js +0 -847
  357. package/dist/analyzers/solidAnalyzer.js.map +0 -1
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Hotspot Scorer — Spec 13 R2 + R3.
3
+ *
4
+ * Computes hotspot scores as churn-percentile × complexity-percentile for
5
+ * every file and function. Scores are written into the hotspot_scores table
6
+ * and recomputed on every sync (idempotent).
7
+ *
8
+ * Bus-factor risk (R3): files and functions in the top quartile of hotspot
9
+ * scores whose dominant_author_share ≥ 0.9 are flagged.
10
+ */
11
+ // ---------------------------------------------------------------------------
12
+ // Public API
13
+ // ---------------------------------------------------------------------------
14
+ /**
15
+ * Compute hotspot scores and write them into the hotspot_scores table.
16
+ * Also detects bus-factor risks.
17
+ *
18
+ * @param rawDb The underlying better-sqlite3 database handle.
19
+ * @returns Array of HotspotEntry for external use (CLI / reporting).
20
+ */
21
+ export function computeHotspots(rawDb) {
22
+ // Clear previous scores
23
+ rawDb.prepare('DELETE FROM hotspot_scores').run();
24
+ // ── Gather data ──────────────────────────────────────────────────────
25
+ // File churn: rows from file_churn table
26
+ const fileChurnRows = rawDb.prepare(`
27
+ SELECT fc.file_path, fc.commit_count, fc.distinct_authors,
28
+ fc.dominant_author, fc.dominant_author_share
29
+ FROM file_churn fc
30
+ `).all();
31
+ // Function churn: rows from function_churn + function complexity
32
+ const funcChurnRows = rawDb.prepare(`
33
+ SELECT fnc.function_id, fnc.function_name, fnc.file_path,
34
+ fnc.commit_count, fnc.distinct_authors,
35
+ fnc.dominant_author, fnc.dominant_author_share,
36
+ COALESCE(fn.complexity, 0) as complexity
37
+ FROM function_churn fnc
38
+ LEFT JOIN functions fn ON fn.id = fnc.function_id
39
+ WHERE fn.complexity IS NOT NULL
40
+ `).all();
41
+ // File complexity: max function complexity per file
42
+ const fileComplexityRows = rawDb.prepare(`
43
+ SELECT file_path, COALESCE(MAX(complexity), 0) as max_complexity
44
+ FROM functions
45
+ WHERE complexity IS NOT NULL
46
+ GROUP BY file_path
47
+ `).all();
48
+ const fileComplexityMap = new Map();
49
+ for (const row of fileComplexityRows) {
50
+ fileComplexityMap.set(row.file_path, row.max_complexity);
51
+ }
52
+ // Also gather ALL functions for files that have no churn — these get
53
+ // complexity data but no churn data (score 0).
54
+ const allFilePaths = rawDb.prepare(`
55
+ SELECT DISTINCT file_path FROM functions
56
+ `).all();
57
+ // ── File-level hotspots ──────────────────────────────────────────────
58
+ const fileChurnMap = new Map();
59
+ for (const row of fileChurnRows) {
60
+ fileChurnMap.set(row.file_path, row);
61
+ }
62
+ // Build file entries: every file in functions gets an entry.
63
+ // Files with churn: churn pct × complexity pct.
64
+ // Files without churn (chill files): score = 0.
65
+ const fileEntries = [];
66
+ for (const { file_path } of allFilePaths) {
67
+ const churn = fileChurnMap.get(file_path);
68
+ const complexity = fileComplexityMap.get(file_path) ?? 0;
69
+ fileEntries.push({
70
+ target: file_path,
71
+ type: 'file',
72
+ commitCount: churn?.commit_count ?? 0,
73
+ distinctAuthors: churn?.distinct_authors ?? 0,
74
+ dominantAuthor: churn?.dominant_author ?? '',
75
+ dominantAuthorShare: churn?.dominant_author_share ?? 0,
76
+ complexity,
77
+ churnValue: churn ? churn.commit_count : 0,
78
+ complexityValue: complexity,
79
+ churnPct: 0,
80
+ complexityPct: 0,
81
+ score: 0,
82
+ busFactorRisk: false,
83
+ });
84
+ }
85
+ // ── Function-level hotspots ──────────────────────────────────────────
86
+ const funcEntries = funcChurnRows.map(row => ({
87
+ target: `${row.file_path}::${row.function_name}`,
88
+ type: 'function',
89
+ commitCount: row.commit_count,
90
+ distinctAuthors: row.distinct_authors,
91
+ dominantAuthor: row.dominant_author ?? '',
92
+ dominantAuthorShare: row.dominant_author_share ?? 0,
93
+ complexity: row.complexity,
94
+ churnValue: row.commit_count,
95
+ complexityValue: row.complexity,
96
+ churnPct: 0,
97
+ complexityPct: 0,
98
+ score: 0,
99
+ busFactorRisk: false,
100
+ functionId: row.function_id,
101
+ functionName: row.function_name,
102
+ filePath: row.file_path,
103
+ }));
104
+ // ── Percentile computation ───────────────────────────────────────────
105
+ // File churn percentiles: rank by commit_count
106
+ computePercentile(fileEntries.filter(e => e.type === 'file').filter(e => e.churnValue > 0), 'churnValue', 'churnPct');
107
+ // Zero-churn files: churnPct = 0 (already default)
108
+ // File complexity percentiles
109
+ computePercentile(fileEntries.filter(e => e.type === 'file'), 'complexityValue', 'complexityPct');
110
+ // Function churn percentiles
111
+ computePercentile(funcEntries.filter(e => e.churnValue > 0), 'churnValue', 'churnPct');
112
+ // Function complexity percentiles
113
+ computePercentile(funcEntries, 'complexityValue', 'complexityPct');
114
+ // ── Score computation ────────────────────────────────────────────────
115
+ for (const entry of fileEntries) {
116
+ entry.score = entry.churnPct * entry.complexityPct;
117
+ }
118
+ for (const entry of funcEntries) {
119
+ entry.score = entry.churnPct * entry.complexityPct;
120
+ }
121
+ const allEntries = [...fileEntries, ...funcEntries];
122
+ // ── Bus-factor risk: top quartile + dominant_author_share ≥ 0.9 ──────
123
+ const scored = allEntries.filter(e => e.score > 0).sort((a, b) => b.score - a.score);
124
+ const topQuartileCutoff = Math.max(1, Math.ceil(scored.length / 4));
125
+ const topQuartileScore = scored.length > 0 ? scored[topQuartileCutoff - 1]?.score ?? 0 : 0;
126
+ for (const entry of allEntries) {
127
+ entry.busFactorRisk =
128
+ entry.score >= topQuartileScore &&
129
+ entry.score > 0 &&
130
+ entry.dominantAuthorShare >= 0.9;
131
+ }
132
+ // ── Write to database ────────────────────────────────────────────────
133
+ const insert = rawDb.prepare(`
134
+ INSERT INTO hotspot_scores
135
+ (target, type, score, churn_pct, complexity_pct, commit_count,
136
+ distinct_authors, dominant_author, dominant_author_share,
137
+ bus_factor_risk, complexity)
138
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
139
+ `);
140
+ const txn = rawDb.transaction(() => {
141
+ for (const entry of allEntries) {
142
+ insert.run(entry.target, entry.type, entry.score, entry.churnPct, entry.complexityPct, entry.commitCount, entry.distinctAuthors, entry.dominantAuthor || null, entry.dominantAuthorShare, entry.busFactorRisk ? 1 : 0, entry.complexity);
143
+ }
144
+ });
145
+ txn();
146
+ // ── Return HotspotEntry[] ────────────────────────────────────────────
147
+ return allEntries
148
+ .filter(e => e.score > 0 || e.busFactorRisk)
149
+ .sort((a, b) => b.score - a.score)
150
+ .map(toHotspotEntry);
151
+ }
152
+ /**
153
+ * Compute percentile [0,1] for a given value field across entries.
154
+ * Modifies entries in-place by setting the targetPctField.
155
+ */
156
+ function computePercentile(entries, valueField, pctField) {
157
+ if (entries.length <= 1) {
158
+ for (const e of entries) {
159
+ e[pctField] = entries.length === 1 ? 1 : 0;
160
+ }
161
+ return;
162
+ }
163
+ // Sort ascending by the value field
164
+ const sorted = [...entries].sort((a, b) => a[valueField] - b[valueField]);
165
+ const n = sorted.length;
166
+ // Assign ranks (1-based), handling ties with the same rank
167
+ const rankMap = new Map();
168
+ let i = 0;
169
+ while (i < n) {
170
+ const val = sorted[i][valueField];
171
+ let j = i;
172
+ while (j < n && sorted[j][valueField] === val)
173
+ j++;
174
+ // All entries with the same value get the average rank
175
+ const avgRank = (i + 1 + j) / 2;
176
+ for (let k = i; k < j; k++) {
177
+ rankMap.set(sorted[k], avgRank);
178
+ }
179
+ i = j;
180
+ }
181
+ // Percentile = (rank - 1) / (n - 1)
182
+ for (const entry of entries) {
183
+ const rank = rankMap.get(entry) ?? 1;
184
+ entry[pctField] = (rank - 1) / (n - 1);
185
+ }
186
+ }
187
+ function toHotspotEntry(e) {
188
+ return {
189
+ target: e.target,
190
+ type: e.type,
191
+ score: e.score,
192
+ churnPercentile: e.churnPct,
193
+ complexityPercentile: e.complexityPct,
194
+ commitCount: e.commitCount,
195
+ distinctAuthors: e.distinctAuthors,
196
+ dominantAuthor: e.dominantAuthor,
197
+ dominantAuthorShare: e.dominantAuthorShare,
198
+ busFactorRisk: e.busFactorRisk,
199
+ complexity: e.complexity,
200
+ };
201
+ }
202
+ //# sourceMappingURL=hotspotScorer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hotspotScorer.js","sourceRoot":"","sources":["../../src/hotspots/hotspotScorer.ts"],"names":[],"mappings":"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"}
@@ -22,7 +22,7 @@
22
22
  },
23
23
  "kind": {
24
24
  "type": "string",
25
- "enum": ["import-ban", "call-constraint", "module-boundary", "naming", "ast-pattern"],
25
+ "enum": ["import-ban", "call-constraint", "module-boundary", "naming", "ast-pattern", "style-mechanism", "no-raw-values"],
26
26
  "description": "The kind of invariant rule."
27
27
  },
28
28
  "severity": {
@@ -129,6 +129,47 @@
129
129
  }
130
130
  }
131
131
  }
132
+ },
133
+ {
134
+ "if": { "properties": { "kind": { "const": "style-mechanism" } } },
135
+ "then": {
136
+ "required": ["allow"],
137
+ "properties": {
138
+ "allow": {
139
+ "type": "array",
140
+ "minItems": 1,
141
+ "items": { "type": "string" },
142
+ "description": "Allowed style mechanisms (e.g. ['tailwind', 'css'])."
143
+ },
144
+ "path": {
145
+ "type": "string",
146
+ "description": "Path glob. Only files matching this pattern are checked."
147
+ }
148
+ }
149
+ }
150
+ },
151
+ {
152
+ "if": { "properties": { "kind": { "const": "no-raw-values" } } },
153
+ "then": {
154
+ "required": ["properties"],
155
+ "properties": {
156
+ "properties": {
157
+ "type": "array",
158
+ "minItems": 1,
159
+ "items": { "type": "string" },
160
+ "description": "CSS properties to check (e.g. ['color', 'background-color'])."
161
+ },
162
+ "allowValues": {
163
+ "type": "array",
164
+ "items": { "type": "string" },
165
+ "description": "Values always allowed even without a token ref (e.g. ['inherit', 'transparent'])."
166
+ },
167
+ "path": {
168
+ "type": "string",
169
+ "description": "Path glob. Only files matching this pattern are checked."
170
+ }
171
+ }
172
+ }
132
173
  }
133
174
  ]
134
175
  }
@@ -1,11 +1,14 @@
1
1
  /**
2
2
  * Invariant Rules Engine — checks files and call graph against user-defined rules.
3
3
  *
4
- * Four rule kinds:
4
+ * Rule kinds:
5
5
  * import-ban — no file may import a banned module (except exempt files)
6
6
  * call-constraint — restrict which files may call a given function
7
7
  * module-boundary — files in `from` may not import from `to`
8
8
  * naming — exported symbols must match a regex
9
+ * ast-pattern — AST node pattern matching via @ast-grep/napi
10
+ * style-mechanism — enforce allowed style mechanisms per file
11
+ * no-raw-values — enforce design-token references for specified CSS properties
9
12
  */
10
13
  import type { CodeIndexDB } from '../codeIndexDB.js';
11
14
  import type { InvariantRule, RuleCheckResult } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"ruleEngine.d.ts","sourceRoot":"","sources":["../../src/invariants/ruleEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,aAAa,EAOb,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA+e9C,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kDAAkD;IAClD,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CA2FtE;AAsCD,iDAAiD;AACjD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
1
+ {"version":3,"file":"ruleEngine.d.ts","sourceRoot":"","sources":["../../src/invariants/ruleEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EACV,aAAa,EASb,eAAe,EAChB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAgnB9C,MAAM,WAAW,iBAAiB;IAChC,qCAAqC;IACrC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kDAAkD;IAClD,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,0DAA0D;IAC1D,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,eAAe,CAwHtE;AAsCD,iDAAiD;AACjD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
@@ -1,14 +1,18 @@
1
1
  /**
2
2
  * Invariant Rules Engine — checks files and call graph against user-defined rules.
3
3
  *
4
- * Four rule kinds:
4
+ * Rule kinds:
5
5
  * import-ban — no file may import a banned module (except exempt files)
6
6
  * call-constraint — restrict which files may call a given function
7
7
  * module-boundary — files in `from` may not import from `to`
8
8
  * naming — exported symbols must match a regex
9
+ * ast-pattern — AST node pattern matching via @ast-grep/napi
10
+ * style-mechanism — enforce allowed style mechanisms per file
11
+ * no-raw-values — enforce design-token references for specified CSS properties
9
12
  */
10
13
  import picomatch from 'picomatch';
11
14
  import { readFileSync } from 'fs';
15
+ import path from 'path';
12
16
  import sg from '@ast-grep/napi';
13
17
  export { hasRules } from './ruleValidator.js';
14
18
  // ── Globbing helpers ──────────────────────────────────────────────────────
@@ -307,6 +311,10 @@ function checkNaming(rule, filePath, exportedSymbols) {
307
311
  return violations; // invalid regex should have been caught by validation
308
312
  }
309
313
  for (const sym of exportedSymbols) {
314
+ // Non-Latin identifiers are unclassifiable by Latin casing conventions — skip
315
+ if (/[^\p{Script=Latin}\p{N}_$]/u.test(sym.name)) {
316
+ continue;
317
+ }
310
318
  if (!regex.test(sym.name)) {
311
319
  violations.push({
312
320
  ruleId: rule.id,
@@ -369,6 +377,108 @@ function checkAstPattern(rule, filePath, source) {
369
377
  }
370
378
  return violations;
371
379
  }
380
+ // ── style-mechanism checker ────────────────────────────────────────────────
381
+ /**
382
+ * Enforce that style declarations in matching files only use allowed mechanisms.
383
+ * Queries the style_declarations table in the CodeIndexDB.
384
+ */
385
+ function checkStyleMechanism(rule, files, db) {
386
+ const violations = [];
387
+ const dbAny = db;
388
+ if (!dbAny.db)
389
+ return violations;
390
+ const allowedSet = new Set(rule.allow);
391
+ for (const file of files) {
392
+ // Check path filter
393
+ if (rule.path && !matchesPattern(rule.path, file))
394
+ continue;
395
+ try {
396
+ const rows = dbAny.db.prepare(`
397
+ SELECT DISTINCT mechanism, file_path, line
398
+ FROM style_declarations
399
+ WHERE file_path = ?
400
+ ORDER BY line
401
+ `).all(file);
402
+ for (const row of rows) {
403
+ if (!allowedSet.has(row.mechanism)) {
404
+ violations.push({
405
+ ruleId: rule.id,
406
+ kind: 'style-mechanism',
407
+ severity: rule.severity,
408
+ message: rule.message ||
409
+ `Style mechanism "${row.mechanism}" is not allowed (allowed: ${rule.allow.join(', ')})`,
410
+ file: row.file_path,
411
+ line: row.line,
412
+ });
413
+ // One violation per mechanism per file is sufficient
414
+ break;
415
+ }
416
+ }
417
+ }
418
+ catch {
419
+ // Table may not exist yet (no style index built)
420
+ continue;
421
+ }
422
+ }
423
+ return violations;
424
+ }
425
+ // ── no-raw-values checker ──────────────────────────────────────────────────
426
+ /**
427
+ * Enforce that designated CSS properties reference a design token.
428
+ * A declaration whose normalized_value is not in allowValues AND has no
429
+ * token_ref is a violation.
430
+ */
431
+ function checkNoRawValues(rule, files, db) {
432
+ const violations = [];
433
+ const dbAny = db;
434
+ if (!dbAny.db)
435
+ return violations;
436
+ const propertiesSet = new Set(rule.properties);
437
+ const allowValuesSet = new Set(rule.allowValues ?? []);
438
+ for (const file of files) {
439
+ // Check path filter
440
+ if (rule.path && !matchesPattern(rule.path, file))
441
+ continue;
442
+ try {
443
+ const rows = dbAny.db.prepare(`
444
+ SELECT property, raw_value, normalized_value, file_path, line
445
+ FROM style_declarations
446
+ WHERE file_path = ?
447
+ ORDER BY line
448
+ `).all(file);
449
+ for (const row of rows) {
450
+ if (!propertiesSet.has(row.property))
451
+ continue;
452
+ const normVal = row.normalized_value ?? row.raw_value;
453
+ if (allowValuesSet.has(normVal) || allowValuesSet.has(row.raw_value))
454
+ continue;
455
+ // Check if this declaration has a token ref
456
+ const tokenRow = dbAny.db.prepare(`
457
+ SELECT token_ref FROM style_declarations
458
+ WHERE file_path = ? AND line = ? AND property = ? AND token_ref IS NOT NULL
459
+ LIMIT 1
460
+ `).get(row.file_path, row.line, row.property);
461
+ if (tokenRow)
462
+ continue; // has a token ref — allowed
463
+ violations.push({
464
+ ruleId: rule.id,
465
+ kind: 'no-raw-values',
466
+ severity: rule.severity,
467
+ message: rule.message ||
468
+ `CSS property "${row.property}" has raw value "${row.raw_value}" — use a design token`,
469
+ file: row.file_path,
470
+ line: row.line,
471
+ symbol: row.property,
472
+ });
473
+ }
474
+ }
475
+ catch {
476
+ // Table may not exist yet (no style index built)
477
+ continue;
478
+ }
479
+ }
480
+ return violations;
481
+ }
372
482
  // ── Exported symbol extraction ────────────────────────────────────────────
373
483
  /**
374
484
  * Extract all exported symbol names from a source file using regex.
@@ -388,7 +498,7 @@ function extractExportedSymbols(filePath) {
388
498
  const symbols = [];
389
499
  // ── export function|class|const|let|var|type|interface|enum name ────────
390
500
  // Covers: export function foo(), export class Bar {}, export const baz = ...
391
- const declRe = /^export\s+(?:(?:default\s+)?(?:function|class)\s+(\w+)|(?:const|let|var)\s+(\w+))/gm;
501
+ const declRe = /^export\s+(?:(?:default\s+)?(?:function|class)\s+([\p{L}\p{N}_]+)|(?:const|let|var)\s+([\p{L}\p{N}_]+))/gmu;
392
502
  let m;
393
503
  while ((m = declRe.exec(source)) !== null) {
394
504
  const name = m[1] || m[2]; // m[1] = function/class name, m[2] = const/let/var name
@@ -403,7 +513,7 @@ function extractExportedSymbols(filePath) {
403
513
  const body = m[1];
404
514
  // Split on comma, then extract the first identifier (skip "as alias" forms)
405
515
  for (const part of body.split(',')) {
406
- const nameMatch = part.match(/^\s*(\w+)/);
516
+ const nameMatch = part.match(/^\s*([\p{L}\p{N}_]+)/u);
407
517
  if (nameMatch) {
408
518
  symbols.push({ name: nameMatch[1], line: lineNumberAt(source, m.index) });
409
519
  }
@@ -411,7 +521,7 @@ function extractExportedSymbols(filePath) {
411
521
  }
412
522
  // ── export default <identifier> ─────────────────────────────────────────
413
523
  // e.g. export default MyComponent
414
- const defaultIdRe = /^export\s+default\s+(\w+)\s*[;,\n]/gm;
524
+ const defaultIdRe = /^export\s+default\s+([\p{L}\p{N}_]+)\s*[;,\n]/gmu;
415
525
  while ((m = defaultIdRe.exec(source)) !== null) {
416
526
  symbols.push({ name: m[1], line: lineNumberAt(source, m.index) });
417
527
  }
@@ -435,12 +545,18 @@ export function checkRules(options) {
435
545
  const moduleBoundaries = rules.filter(r => r.kind === 'module-boundary');
436
546
  const namingRules = rules.filter(r => r.kind === 'naming');
437
547
  const astPatterns = rules.filter(r => r.kind === 'ast-pattern');
548
+ const styleMechanisms = rules.filter(r => r.kind === 'style-mechanism');
549
+ const noRawValues = rules.filter(r => r.kind === 'no-raw-values');
438
550
  const fileDataMap = new Map();
439
551
  // Adjust file paths to be relative to project dir for reading
440
552
  for (const file of files) {
441
553
  // Strip any leading './' for consistency
442
- const normalized = file.replace(/^\.\//, '');
554
+ let normalized = file.replace(/^\.\//, '');
443
555
  const fullPath = file.startsWith('/') ? file : `${projectDir}/${normalized}`;
556
+ // Make absolute paths relative to projectDir so glob patterns match
557
+ if (path.isAbsolute(normalized)) {
558
+ normalized = path.relative(projectDir, normalized);
559
+ }
444
560
  try {
445
561
  fileDataMap.set(normalized, {
446
562
  imports: extractImports(fullPath),
@@ -497,6 +613,26 @@ export function checkRules(options) {
497
613
  }
498
614
  }
499
615
  }
616
+ // 6. style-mechanism and no-raw-values checks — require DB (style index)
617
+ if (db) {
618
+ const scopedPaths = files.map(f => f.replace(/^\.\//, ''));
619
+ for (const rule of styleMechanisms) {
620
+ try {
621
+ violations.push(...checkStyleMechanism(rule, scopedPaths, db));
622
+ }
623
+ catch (err) {
624
+ errors.push(`Error checking style-mechanism "${rule.id}": ${err.message}`);
625
+ }
626
+ }
627
+ for (const rule of noRawValues) {
628
+ try {
629
+ violations.push(...checkNoRawValues(rule, scopedPaths, db));
630
+ }
631
+ catch (err) {
632
+ errors.push(`Error checking no-raw-values "${rule.id}": ${err.message}`);
633
+ }
634
+ }
635
+ }
500
636
  return { rules, violations, errors };
501
637
  }
502
638
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../../src/invariants/ruleEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleEngine.js","sourceRoot":"","sources":["../../src/invariants/ruleEngine.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ruleValidator.d.ts","sourceRoot":"","sources":["../../src/invariants/ruleValidator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,EAAE,CA6C1E;AAkND;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEjD"}
1
+ {"version":3,"file":"ruleValidator.d.ts","sourceRoot":"","sources":["../../src/invariants/ruleValidator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAmBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,EAAE,CA6C1E;AAiRD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEjD"}