driftdetect-core 0.7.1 → 0.8.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 (466) hide show
  1. package/dist/boundaries/types.d.ts +1 -1
  2. package/dist/boundaries/types.d.ts.map +1 -1
  3. package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -1
  4. package/dist/call-graph/analysis/graph-builder.js +2 -0
  5. package/dist/call-graph/analysis/graph-builder.js.map +1 -1
  6. package/dist/call-graph/extractors/cpp-data-access-extractor.d.ts +37 -0
  7. package/dist/call-graph/extractors/cpp-data-access-extractor.d.ts.map +1 -0
  8. package/dist/call-graph/extractors/cpp-data-access-extractor.js +467 -0
  9. package/dist/call-graph/extractors/cpp-data-access-extractor.js.map +1 -0
  10. package/dist/call-graph/extractors/cpp-hybrid-extractor.d.ts +89 -0
  11. package/dist/call-graph/extractors/cpp-hybrid-extractor.d.ts.map +1 -0
  12. package/dist/call-graph/extractors/cpp-hybrid-extractor.js +541 -0
  13. package/dist/call-graph/extractors/cpp-hybrid-extractor.js.map +1 -0
  14. package/dist/call-graph/extractors/index.d.ts +8 -1
  15. package/dist/call-graph/extractors/index.d.ts.map +1 -1
  16. package/dist/call-graph/extractors/index.js +9 -1
  17. package/dist/call-graph/extractors/index.js.map +1 -1
  18. package/dist/call-graph/extractors/regex/cpp-regex.d.ts +46 -0
  19. package/dist/call-graph/extractors/regex/cpp-regex.d.ts.map +1 -0
  20. package/dist/call-graph/extractors/regex/cpp-regex.js +325 -0
  21. package/dist/call-graph/extractors/regex/cpp-regex.js.map +1 -0
  22. package/dist/call-graph/extractors/regex/index.d.ts +2 -0
  23. package/dist/call-graph/extractors/regex/index.d.ts.map +1 -1
  24. package/dist/call-graph/extractors/regex/index.js +16 -0
  25. package/dist/call-graph/extractors/regex/index.js.map +1 -1
  26. package/dist/call-graph/extractors/regex/rust-regex.d.ts +45 -0
  27. package/dist/call-graph/extractors/regex/rust-regex.d.ts.map +1 -0
  28. package/dist/call-graph/extractors/regex/rust-regex.js +517 -0
  29. package/dist/call-graph/extractors/regex/rust-regex.js.map +1 -0
  30. package/dist/call-graph/extractors/rust-data-access-extractor.d.ts +35 -0
  31. package/dist/call-graph/extractors/rust-data-access-extractor.d.ts.map +1 -0
  32. package/dist/call-graph/extractors/rust-data-access-extractor.js +349 -0
  33. package/dist/call-graph/extractors/rust-data-access-extractor.js.map +1 -0
  34. package/dist/call-graph/extractors/rust-extractor.d.ts +125 -0
  35. package/dist/call-graph/extractors/rust-extractor.d.ts.map +1 -0
  36. package/dist/call-graph/extractors/rust-extractor.js +604 -0
  37. package/dist/call-graph/extractors/rust-extractor.js.map +1 -0
  38. package/dist/call-graph/extractors/rust-hybrid-extractor.d.ts +119 -0
  39. package/dist/call-graph/extractors/rust-hybrid-extractor.d.ts.map +1 -0
  40. package/dist/call-graph/extractors/rust-hybrid-extractor.js +548 -0
  41. package/dist/call-graph/extractors/rust-hybrid-extractor.js.map +1 -0
  42. package/dist/call-graph/index.d.ts +2 -0
  43. package/dist/call-graph/index.d.ts.map +1 -1
  44. package/dist/call-graph/index.js +4 -0
  45. package/dist/call-graph/index.js.map +1 -1
  46. package/dist/call-graph/streaming-builder.d.ts +60 -0
  47. package/dist/call-graph/streaming-builder.d.ts.map +1 -0
  48. package/dist/call-graph/streaming-builder.js +204 -0
  49. package/dist/call-graph/streaming-builder.js.map +1 -0
  50. package/dist/call-graph/types.d.ts +1 -1
  51. package/dist/call-graph/types.d.ts.map +1 -1
  52. package/dist/call-graph/unified-provider.d.ts +72 -0
  53. package/dist/call-graph/unified-provider.d.ts.map +1 -0
  54. package/dist/call-graph/unified-provider.js +502 -0
  55. package/dist/call-graph/unified-provider.js.map +1 -0
  56. package/dist/constants/extractors/regex/rust-regex.d.ts +43 -0
  57. package/dist/constants/extractors/regex/rust-regex.d.ts.map +1 -0
  58. package/dist/constants/extractors/regex/rust-regex.js +370 -0
  59. package/dist/constants/extractors/regex/rust-regex.js.map +1 -0
  60. package/dist/constants/types.d.ts +1 -1
  61. package/dist/constants/types.d.ts.map +1 -1
  62. package/dist/constants/types.js.map +1 -1
  63. package/dist/constraints/store/constraint-store.d.ts.map +1 -1
  64. package/dist/constraints/store/constraint-store.js +2 -0
  65. package/dist/constraints/store/constraint-store.js.map +1 -1
  66. package/dist/constraints/types.d.ts +1 -1
  67. package/dist/constraints/types.d.ts.map +1 -1
  68. package/dist/constraints/types.js +2 -0
  69. package/dist/constraints/types.js.map +1 -1
  70. package/dist/context/context-generator.d.ts +38 -0
  71. package/dist/context/context-generator.d.ts.map +1 -0
  72. package/dist/context/context-generator.js +392 -0
  73. package/dist/context/context-generator.js.map +1 -0
  74. package/dist/context/index.d.ts +13 -0
  75. package/dist/context/index.d.ts.map +1 -0
  76. package/dist/context/index.js +14 -0
  77. package/dist/context/index.js.map +1 -0
  78. package/dist/context/package-detector.d.ts +53 -0
  79. package/dist/context/package-detector.d.ts.map +1 -0
  80. package/dist/context/package-detector.js +672 -0
  81. package/dist/context/package-detector.js.map +1 -0
  82. package/dist/context/types.d.ts +258 -0
  83. package/dist/context/types.d.ts.map +1 -0
  84. package/dist/context/types.js +10 -0
  85. package/dist/context/types.js.map +1 -0
  86. package/dist/cpp/cpp-analyzer.d.ts +179 -0
  87. package/dist/cpp/cpp-analyzer.d.ts.map +1 -0
  88. package/dist/cpp/cpp-analyzer.js +532 -0
  89. package/dist/cpp/cpp-analyzer.js.map +1 -0
  90. package/dist/cpp/index.d.ts +9 -0
  91. package/dist/cpp/index.d.ts.map +1 -0
  92. package/dist/cpp/index.js +9 -0
  93. package/dist/cpp/index.js.map +1 -0
  94. package/dist/decisions/analyzer/decision-mining-analyzer.d.ts.map +1 -1
  95. package/dist/decisions/analyzer/decision-mining-analyzer.js +4 -0
  96. package/dist/decisions/analyzer/decision-mining-analyzer.js.map +1 -1
  97. package/dist/decisions/types.d.ts +1 -1
  98. package/dist/decisions/types.d.ts.map +1 -1
  99. package/dist/environment/extractors/cpp-env-extractor.d.ts +58 -0
  100. package/dist/environment/extractors/cpp-env-extractor.d.ts.map +1 -0
  101. package/dist/environment/extractors/cpp-env-extractor.js +298 -0
  102. package/dist/environment/extractors/cpp-env-extractor.js.map +1 -0
  103. package/dist/environment/extractors/index.d.ts +2 -0
  104. package/dist/environment/extractors/index.d.ts.map +1 -1
  105. package/dist/environment/extractors/index.js +2 -0
  106. package/dist/environment/extractors/index.js.map +1 -1
  107. package/dist/environment/extractors/rust-env-extractor.d.ts +58 -0
  108. package/dist/environment/extractors/rust-env-extractor.d.ts.map +1 -0
  109. package/dist/environment/extractors/rust-env-extractor.js +297 -0
  110. package/dist/environment/extractors/rust-env-extractor.js.map +1 -0
  111. package/dist/environment/index.d.ts +1 -1
  112. package/dist/environment/index.d.ts.map +1 -1
  113. package/dist/environment/index.js +1 -1
  114. package/dist/environment/index.js.map +1 -1
  115. package/dist/environment/types.d.ts +2 -2
  116. package/dist/environment/types.d.ts.map +1 -1
  117. package/dist/environment/types.js.map +1 -1
  118. package/dist/index.d.ts +15 -3
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +62 -2
  121. package/dist/index.js.map +1 -1
  122. package/dist/licensing/feature-guard.d.ts +103 -0
  123. package/dist/licensing/feature-guard.d.ts.map +1 -0
  124. package/dist/licensing/feature-guard.js +195 -0
  125. package/dist/licensing/feature-guard.js.map +1 -0
  126. package/dist/licensing/index.d.ts +46 -0
  127. package/dist/licensing/index.d.ts.map +1 -0
  128. package/dist/licensing/index.js +47 -0
  129. package/dist/licensing/index.js.map +1 -0
  130. package/dist/licensing/license-manager.d.ts +88 -0
  131. package/dist/licensing/license-manager.d.ts.map +1 -0
  132. package/dist/licensing/license-manager.js +251 -0
  133. package/dist/licensing/license-manager.js.map +1 -0
  134. package/dist/licensing/license-validator.d.ts +60 -0
  135. package/dist/licensing/license-validator.d.ts.map +1 -0
  136. package/dist/licensing/license-validator.js +300 -0
  137. package/dist/licensing/license-validator.js.map +1 -0
  138. package/dist/licensing/types.d.ts +76 -0
  139. package/dist/licensing/types.d.ts.map +1 -0
  140. package/dist/licensing/types.js +51 -0
  141. package/dist/licensing/types.js.map +1 -0
  142. package/dist/parsers/tree-sitter/cpp-loader.d.ts +51 -0
  143. package/dist/parsers/tree-sitter/cpp-loader.d.ts.map +1 -0
  144. package/dist/parsers/tree-sitter/cpp-loader.js +162 -0
  145. package/dist/parsers/tree-sitter/cpp-loader.js.map +1 -0
  146. package/dist/parsers/tree-sitter/index.d.ts +6 -0
  147. package/dist/parsers/tree-sitter/index.d.ts.map +1 -1
  148. package/dist/parsers/tree-sitter/index.js +16 -0
  149. package/dist/parsers/tree-sitter/index.js.map +1 -1
  150. package/dist/parsers/tree-sitter/rust-loader.d.ts +50 -0
  151. package/dist/parsers/tree-sitter/rust-loader.d.ts.map +1 -0
  152. package/dist/parsers/tree-sitter/rust-loader.js +161 -0
  153. package/dist/parsers/tree-sitter/rust-loader.js.map +1 -0
  154. package/dist/parsers/tree-sitter/tree-sitter-cpp-parser.d.ts +198 -0
  155. package/dist/parsers/tree-sitter/tree-sitter-cpp-parser.d.ts.map +1 -0
  156. package/dist/parsers/tree-sitter/tree-sitter-cpp-parser.js +671 -0
  157. package/dist/parsers/tree-sitter/tree-sitter-cpp-parser.js.map +1 -0
  158. package/dist/parsers/tree-sitter/tree-sitter-rust-parser.d.ts +180 -0
  159. package/dist/parsers/tree-sitter/tree-sitter-rust-parser.d.ts.map +1 -0
  160. package/dist/parsers/tree-sitter/tree-sitter-rust-parser.js +478 -0
  161. package/dist/parsers/tree-sitter/tree-sitter-rust-parser.js.map +1 -0
  162. package/dist/parsers/types.d.ts +1 -1
  163. package/dist/parsers/types.d.ts.map +1 -1
  164. package/dist/patterns/adapters/pattern-store-adapter.d.ts.map +1 -1
  165. package/dist/patterns/adapters/pattern-store-adapter.js +35 -10
  166. package/dist/patterns/adapters/pattern-store-adapter.js.map +1 -1
  167. package/dist/quality-gates/gates/base-gate.d.ts +71 -0
  168. package/dist/quality-gates/gates/base-gate.d.ts.map +1 -0
  169. package/dist/quality-gates/gates/base-gate.js +178 -0
  170. package/dist/quality-gates/gates/base-gate.js.map +1 -0
  171. package/dist/quality-gates/gates/constraint-verification/constraint-verification-gate.d.ts +62 -0
  172. package/dist/quality-gates/gates/constraint-verification/constraint-verification-gate.d.ts.map +1 -0
  173. package/dist/quality-gates/gates/constraint-verification/constraint-verification-gate.js +255 -0
  174. package/dist/quality-gates/gates/constraint-verification/constraint-verification-gate.js.map +1 -0
  175. package/dist/quality-gates/gates/constraint-verification/index.d.ts +7 -0
  176. package/dist/quality-gates/gates/constraint-verification/index.d.ts.map +1 -0
  177. package/dist/quality-gates/gates/constraint-verification/index.js +7 -0
  178. package/dist/quality-gates/gates/constraint-verification/index.js.map +1 -0
  179. package/dist/quality-gates/gates/custom-rules/custom-rules-gate.d.ts +73 -0
  180. package/dist/quality-gates/gates/custom-rules/custom-rules-gate.d.ts.map +1 -0
  181. package/dist/quality-gates/gates/custom-rules/custom-rules-gate.js +351 -0
  182. package/dist/quality-gates/gates/custom-rules/custom-rules-gate.js.map +1 -0
  183. package/dist/quality-gates/gates/custom-rules/index.d.ts +7 -0
  184. package/dist/quality-gates/gates/custom-rules/index.d.ts.map +1 -0
  185. package/dist/quality-gates/gates/custom-rules/index.js +7 -0
  186. package/dist/quality-gates/gates/custom-rules/index.js.map +1 -0
  187. package/dist/quality-gates/gates/impact-simulation/impact-simulation-gate.d.ts +61 -0
  188. package/dist/quality-gates/gates/impact-simulation/impact-simulation-gate.d.ts.map +1 -0
  189. package/dist/quality-gates/gates/impact-simulation/impact-simulation-gate.js +318 -0
  190. package/dist/quality-gates/gates/impact-simulation/impact-simulation-gate.js.map +1 -0
  191. package/dist/quality-gates/gates/impact-simulation/index.d.ts +7 -0
  192. package/dist/quality-gates/gates/impact-simulation/index.d.ts.map +1 -0
  193. package/dist/quality-gates/gates/impact-simulation/index.js +7 -0
  194. package/dist/quality-gates/gates/impact-simulation/index.js.map +1 -0
  195. package/dist/quality-gates/gates/index.d.ts +13 -0
  196. package/dist/quality-gates/gates/index.d.ts.map +1 -0
  197. package/dist/quality-gates/gates/index.js +13 -0
  198. package/dist/quality-gates/gates/index.js.map +1 -0
  199. package/dist/quality-gates/gates/pattern-compliance/index.d.ts +7 -0
  200. package/dist/quality-gates/gates/pattern-compliance/index.d.ts.map +1 -0
  201. package/dist/quality-gates/gates/pattern-compliance/index.js +7 -0
  202. package/dist/quality-gates/gates/pattern-compliance/index.js.map +1 -0
  203. package/dist/quality-gates/gates/pattern-compliance/pattern-compliance-gate.d.ts +61 -0
  204. package/dist/quality-gates/gates/pattern-compliance/pattern-compliance-gate.d.ts.map +1 -0
  205. package/dist/quality-gates/gates/pattern-compliance/pattern-compliance-gate.js +261 -0
  206. package/dist/quality-gates/gates/pattern-compliance/pattern-compliance-gate.js.map +1 -0
  207. package/dist/quality-gates/gates/regression-detection/index.d.ts +7 -0
  208. package/dist/quality-gates/gates/regression-detection/index.d.ts.map +1 -0
  209. package/dist/quality-gates/gates/regression-detection/index.js +7 -0
  210. package/dist/quality-gates/gates/regression-detection/index.js.map +1 -0
  211. package/dist/quality-gates/gates/regression-detection/regression-detection-gate.d.ts +69 -0
  212. package/dist/quality-gates/gates/regression-detection/regression-detection-gate.d.ts.map +1 -0
  213. package/dist/quality-gates/gates/regression-detection/regression-detection-gate.js +330 -0
  214. package/dist/quality-gates/gates/regression-detection/regression-detection-gate.js.map +1 -0
  215. package/dist/quality-gates/gates/security-boundary/index.d.ts +7 -0
  216. package/dist/quality-gates/gates/security-boundary/index.d.ts.map +1 -0
  217. package/dist/quality-gates/gates/security-boundary/index.js +7 -0
  218. package/dist/quality-gates/gates/security-boundary/index.js.map +1 -0
  219. package/dist/quality-gates/gates/security-boundary/security-boundary-gate.d.ts +65 -0
  220. package/dist/quality-gates/gates/security-boundary/security-boundary-gate.d.ts.map +1 -0
  221. package/dist/quality-gates/gates/security-boundary/security-boundary-gate.js +307 -0
  222. package/dist/quality-gates/gates/security-boundary/security-boundary-gate.js.map +1 -0
  223. package/dist/quality-gates/index.d.ts +35 -0
  224. package/dist/quality-gates/index.d.ts.map +1 -0
  225. package/dist/quality-gates/index.js +43 -0
  226. package/dist/quality-gates/index.js.map +1 -0
  227. package/dist/quality-gates/orchestrator/gate-orchestrator.d.ts +79 -0
  228. package/dist/quality-gates/orchestrator/gate-orchestrator.d.ts.map +1 -0
  229. package/dist/quality-gates/orchestrator/gate-orchestrator.js +314 -0
  230. package/dist/quality-gates/orchestrator/gate-orchestrator.js.map +1 -0
  231. package/dist/quality-gates/orchestrator/gate-registry.d.ts +53 -0
  232. package/dist/quality-gates/orchestrator/gate-registry.d.ts.map +1 -0
  233. package/dist/quality-gates/orchestrator/gate-registry.js +141 -0
  234. package/dist/quality-gates/orchestrator/gate-registry.js.map +1 -0
  235. package/dist/quality-gates/orchestrator/index.d.ts +10 -0
  236. package/dist/quality-gates/orchestrator/index.d.ts.map +1 -0
  237. package/dist/quality-gates/orchestrator/index.js +10 -0
  238. package/dist/quality-gates/orchestrator/index.js.map +1 -0
  239. package/dist/quality-gates/orchestrator/parallel-executor.d.ts +35 -0
  240. package/dist/quality-gates/orchestrator/parallel-executor.d.ts.map +1 -0
  241. package/dist/quality-gates/orchestrator/parallel-executor.js +70 -0
  242. package/dist/quality-gates/orchestrator/parallel-executor.js.map +1 -0
  243. package/dist/quality-gates/orchestrator/result-aggregator.d.ts +27 -0
  244. package/dist/quality-gates/orchestrator/result-aggregator.d.ts.map +1 -0
  245. package/dist/quality-gates/orchestrator/result-aggregator.js +70 -0
  246. package/dist/quality-gates/orchestrator/result-aggregator.js.map +1 -0
  247. package/dist/quality-gates/policy/default-policies.d.ts +14 -0
  248. package/dist/quality-gates/policy/default-policies.d.ts.map +1 -0
  249. package/dist/quality-gates/policy/default-policies.js +266 -0
  250. package/dist/quality-gates/policy/default-policies.js.map +1 -0
  251. package/dist/quality-gates/policy/index.d.ts +9 -0
  252. package/dist/quality-gates/policy/index.d.ts.map +1 -0
  253. package/dist/quality-gates/policy/index.js +9 -0
  254. package/dist/quality-gates/policy/index.js.map +1 -0
  255. package/dist/quality-gates/policy/policy-evaluator.d.ts +43 -0
  256. package/dist/quality-gates/policy/policy-evaluator.d.ts.map +1 -0
  257. package/dist/quality-gates/policy/policy-evaluator.js +136 -0
  258. package/dist/quality-gates/policy/policy-evaluator.js.map +1 -0
  259. package/dist/quality-gates/policy/policy-loader.d.ts +72 -0
  260. package/dist/quality-gates/policy/policy-loader.d.ts.map +1 -0
  261. package/dist/quality-gates/policy/policy-loader.js +228 -0
  262. package/dist/quality-gates/policy/policy-loader.js.map +1 -0
  263. package/dist/quality-gates/reporters/github-reporter.d.ts +19 -0
  264. package/dist/quality-gates/reporters/github-reporter.d.ts.map +1 -0
  265. package/dist/quality-gates/reporters/github-reporter.js +49 -0
  266. package/dist/quality-gates/reporters/github-reporter.js.map +1 -0
  267. package/dist/quality-gates/reporters/gitlab-reporter.d.ts +20 -0
  268. package/dist/quality-gates/reporters/gitlab-reporter.d.ts.map +1 -0
  269. package/dist/quality-gates/reporters/gitlab-reporter.js +42 -0
  270. package/dist/quality-gates/reporters/gitlab-reporter.js.map +1 -0
  271. package/dist/quality-gates/reporters/index.d.ts +12 -0
  272. package/dist/quality-gates/reporters/index.d.ts.map +1 -0
  273. package/dist/quality-gates/reporters/index.js +12 -0
  274. package/dist/quality-gates/reporters/index.js.map +1 -0
  275. package/dist/quality-gates/reporters/json-reporter.d.ts +18 -0
  276. package/dist/quality-gates/reporters/json-reporter.d.ts.map +1 -0
  277. package/dist/quality-gates/reporters/json-reporter.js +51 -0
  278. package/dist/quality-gates/reporters/json-reporter.js.map +1 -0
  279. package/dist/quality-gates/reporters/reporter-interface.d.ts +35 -0
  280. package/dist/quality-gates/reporters/reporter-interface.d.ts.map +1 -0
  281. package/dist/quality-gates/reporters/reporter-interface.js +22 -0
  282. package/dist/quality-gates/reporters/reporter-interface.js.map +1 -0
  283. package/dist/quality-gates/reporters/sarif-reporter.d.ts +22 -0
  284. package/dist/quality-gates/reporters/sarif-reporter.d.ts.map +1 -0
  285. package/dist/quality-gates/reporters/sarif-reporter.js +85 -0
  286. package/dist/quality-gates/reporters/sarif-reporter.js.map +1 -0
  287. package/dist/quality-gates/reporters/text-reporter.d.ts +18 -0
  288. package/dist/quality-gates/reporters/text-reporter.d.ts.map +1 -0
  289. package/dist/quality-gates/reporters/text-reporter.js +92 -0
  290. package/dist/quality-gates/reporters/text-reporter.js.map +1 -0
  291. package/dist/quality-gates/store/gate-run-store.d.ts +37 -0
  292. package/dist/quality-gates/store/gate-run-store.d.ts.map +1 -0
  293. package/dist/quality-gates/store/gate-run-store.js +104 -0
  294. package/dist/quality-gates/store/gate-run-store.js.map +1 -0
  295. package/dist/quality-gates/store/index.d.ts +8 -0
  296. package/dist/quality-gates/store/index.d.ts.map +1 -0
  297. package/dist/quality-gates/store/index.js +8 -0
  298. package/dist/quality-gates/store/index.js.map +1 -0
  299. package/dist/quality-gates/store/snapshot-store.d.ts +41 -0
  300. package/dist/quality-gates/store/snapshot-store.d.ts.map +1 -0
  301. package/dist/quality-gates/store/snapshot-store.js +117 -0
  302. package/dist/quality-gates/store/snapshot-store.js.map +1 -0
  303. package/dist/quality-gates/types.d.ts +992 -0
  304. package/dist/quality-gates/types.d.ts.map +1 -0
  305. package/dist/quality-gates/types.js +14 -0
  306. package/dist/quality-gates/types.js.map +1 -0
  307. package/dist/rust/index.d.ts +7 -0
  308. package/dist/rust/index.d.ts.map +1 -0
  309. package/dist/rust/index.js +8 -0
  310. package/dist/rust/index.js.map +1 -0
  311. package/dist/rust/rust-analyzer.d.ts +185 -0
  312. package/dist/rust/rust-analyzer.d.ts.map +1 -0
  313. package/dist/rust/rust-analyzer.js +538 -0
  314. package/dist/rust/rust-analyzer.js.map +1 -0
  315. package/dist/scanner/file-walker.d.ts.map +1 -1
  316. package/dist/scanner/file-walker.js +11 -0
  317. package/dist/scanner/file-walker.js.map +1 -1
  318. package/dist/simulation/simulation-engine.d.ts +6 -0
  319. package/dist/simulation/simulation-engine.d.ts.map +1 -1
  320. package/dist/simulation/simulation-engine.js +6 -0
  321. package/dist/simulation/simulation-engine.js.map +1 -1
  322. package/dist/speculative/types.d.ts +1 -1
  323. package/dist/speculative/types.d.ts.map +1 -1
  324. package/dist/speculative/types.js +2 -0
  325. package/dist/speculative/types.js.map +1 -1
  326. package/dist/store/project-config.d.ts +19 -0
  327. package/dist/store/project-config.d.ts.map +1 -1
  328. package/dist/store/project-config.js.map +1 -1
  329. package/dist/telemetry/index.d.ts +10 -0
  330. package/dist/telemetry/index.d.ts.map +1 -0
  331. package/dist/telemetry/index.js +11 -0
  332. package/dist/telemetry/index.js.map +1 -0
  333. package/dist/telemetry/telemetry-client.d.ts +127 -0
  334. package/dist/telemetry/telemetry-client.d.ts.map +1 -0
  335. package/dist/telemetry/telemetry-client.js +373 -0
  336. package/dist/telemetry/telemetry-client.js.map +1 -0
  337. package/dist/telemetry/types.d.ts +160 -0
  338. package/dist/telemetry/types.d.ts.map +1 -0
  339. package/dist/telemetry/types.js +27 -0
  340. package/dist/telemetry/types.js.map +1 -0
  341. package/dist/test-topology/extractors/cpp-test-extractor.d.ts +38 -0
  342. package/dist/test-topology/extractors/cpp-test-extractor.d.ts.map +1 -0
  343. package/dist/test-topology/extractors/cpp-test-extractor.js +507 -0
  344. package/dist/test-topology/extractors/cpp-test-extractor.js.map +1 -0
  345. package/dist/test-topology/extractors/index.d.ts +2 -0
  346. package/dist/test-topology/extractors/index.d.ts.map +1 -1
  347. package/dist/test-topology/extractors/index.js +2 -0
  348. package/dist/test-topology/extractors/index.js.map +1 -1
  349. package/dist/test-topology/extractors/regex/index.d.ts +1 -0
  350. package/dist/test-topology/extractors/regex/index.d.ts.map +1 -1
  351. package/dist/test-topology/extractors/regex/index.js +4 -0
  352. package/dist/test-topology/extractors/regex/index.js.map +1 -1
  353. package/dist/test-topology/extractors/regex/rust-test-regex.d.ts +66 -0
  354. package/dist/test-topology/extractors/regex/rust-test-regex.d.ts.map +1 -0
  355. package/dist/test-topology/extractors/regex/rust-test-regex.js +565 -0
  356. package/dist/test-topology/extractors/regex/rust-test-regex.js.map +1 -0
  357. package/dist/test-topology/extractors/rust-test-extractor.d.ts +49 -0
  358. package/dist/test-topology/extractors/rust-test-extractor.d.ts.map +1 -0
  359. package/dist/test-topology/extractors/rust-test-extractor.js +422 -0
  360. package/dist/test-topology/extractors/rust-test-extractor.js.map +1 -0
  361. package/dist/test-topology/hybrid-test-topology-analyzer.d.ts.map +1 -1
  362. package/dist/test-topology/hybrid-test-topology-analyzer.js +2 -0
  363. package/dist/test-topology/hybrid-test-topology-analyzer.js.map +1 -1
  364. package/dist/test-topology/test-topology-analyzer.d.ts.map +1 -1
  365. package/dist/test-topology/test-topology-analyzer.js +2 -0
  366. package/dist/test-topology/test-topology-analyzer.js.map +1 -1
  367. package/dist/test-topology/types.d.ts +2 -2
  368. package/dist/test-topology/types.d.ts.map +1 -1
  369. package/dist/unified-provider/integration/unified-scanner.d.ts.map +1 -1
  370. package/dist/unified-provider/integration/unified-scanner.js +3 -0
  371. package/dist/unified-provider/integration/unified-scanner.js.map +1 -1
  372. package/dist/unified-provider/matching/diesel-matcher.d.ts +33 -0
  373. package/dist/unified-provider/matching/diesel-matcher.d.ts.map +1 -0
  374. package/dist/unified-provider/matching/diesel-matcher.js +210 -0
  375. package/dist/unified-provider/matching/diesel-matcher.js.map +1 -0
  376. package/dist/unified-provider/matching/index.d.ts +3 -1
  377. package/dist/unified-provider/matching/index.d.ts.map +1 -1
  378. package/dist/unified-provider/matching/index.js +4 -1
  379. package/dist/unified-provider/matching/index.js.map +1 -1
  380. package/dist/unified-provider/matching/matcher-registry.d.ts.map +1 -1
  381. package/dist/unified-provider/matching/matcher-registry.js +7 -2
  382. package/dist/unified-provider/matching/matcher-registry.js.map +1 -1
  383. package/dist/unified-provider/matching/seaorm-matcher.d.ts +35 -0
  384. package/dist/unified-provider/matching/seaorm-matcher.d.ts.map +1 -0
  385. package/dist/unified-provider/matching/seaorm-matcher.js +200 -0
  386. package/dist/unified-provider/matching/seaorm-matcher.js.map +1 -0
  387. package/dist/unified-provider/matching/sqlx-matcher.d.ts +19 -24
  388. package/dist/unified-provider/matching/sqlx-matcher.d.ts.map +1 -1
  389. package/dist/unified-provider/matching/sqlx-matcher.js +171 -149
  390. package/dist/unified-provider/matching/sqlx-matcher.js.map +1 -1
  391. package/dist/unified-provider/normalization/cpp-normalizer.d.ts +62 -0
  392. package/dist/unified-provider/normalization/cpp-normalizer.d.ts.map +1 -0
  393. package/dist/unified-provider/normalization/cpp-normalizer.js +581 -0
  394. package/dist/unified-provider/normalization/cpp-normalizer.js.map +1 -0
  395. package/dist/unified-provider/normalization/index.d.ts +2 -0
  396. package/dist/unified-provider/normalization/index.d.ts.map +1 -1
  397. package/dist/unified-provider/normalization/index.js +11 -1
  398. package/dist/unified-provider/normalization/index.js.map +1 -1
  399. package/dist/unified-provider/normalization/rust-normalizer.d.ts +71 -0
  400. package/dist/unified-provider/normalization/rust-normalizer.d.ts.map +1 -0
  401. package/dist/unified-provider/normalization/rust-normalizer.js +670 -0
  402. package/dist/unified-provider/normalization/rust-normalizer.js.map +1 -0
  403. package/dist/unified-provider/parsing/parser-registry.d.ts.map +1 -1
  404. package/dist/unified-provider/parsing/parser-registry.js +62 -1
  405. package/dist/unified-provider/parsing/parser-registry.js.map +1 -1
  406. package/dist/unified-provider/provider/unified-language-provider.js +1 -1
  407. package/dist/unified-provider/provider/unified-language-provider.js.map +1 -1
  408. package/dist/unified-provider/types.d.ts +1 -1
  409. package/dist/unified-provider/types.d.ts.map +1 -1
  410. package/dist/wrappers/index.d.ts.map +1 -1
  411. package/dist/wrappers/index.js +2 -0
  412. package/dist/wrappers/index.js.map +1 -1
  413. package/dist/wrappers/integration/adapter.d.ts.map +1 -1
  414. package/dist/wrappers/integration/adapter.js +2 -0
  415. package/dist/wrappers/integration/adapter.js.map +1 -1
  416. package/dist/wrappers/integration/scanner.d.ts.map +1 -1
  417. package/dist/wrappers/integration/scanner.js +2 -0
  418. package/dist/wrappers/integration/scanner.js.map +1 -1
  419. package/dist/wrappers/primitives/registry.d.ts +18 -0
  420. package/dist/wrappers/primitives/registry.d.ts.map +1 -1
  421. package/dist/wrappers/primitives/registry.js +190 -0
  422. package/dist/wrappers/primitives/registry.js.map +1 -1
  423. package/dist/wrappers/types.d.ts +1 -1
  424. package/dist/wrappers/types.d.ts.map +1 -1
  425. package/package.json +5 -2
  426. package/LICENSE +0 -21
  427. package/dist/lake/lake.bak/index-store.d.ts +0 -82
  428. package/dist/lake/lake.bak/index-store.d.ts.map +0 -1
  429. package/dist/lake/lake.bak/index-store.js +0 -357
  430. package/dist/lake/lake.bak/index-store.js.map +0 -1
  431. package/dist/lake/lake.bak/index.d.ts +0 -81
  432. package/dist/lake/lake.bak/index.d.ts.map +0 -1
  433. package/dist/lake/lake.bak/index.js +0 -114
  434. package/dist/lake/lake.bak/index.js.map +0 -1
  435. package/dist/lake/lake.bak/manifest-store.d.ts +0 -51
  436. package/dist/lake/lake.bak/manifest-store.d.ts.map +0 -1
  437. package/dist/lake/lake.bak/manifest-store.js +0 -347
  438. package/dist/lake/lake.bak/manifest-store.js.map +0 -1
  439. package/dist/lake/lake.bak/query-engine.d.ts +0 -112
  440. package/dist/lake/lake.bak/query-engine.d.ts.map +0 -1
  441. package/dist/lake/lake.bak/query-engine.js +0 -370
  442. package/dist/lake/lake.bak/query-engine.js.map +0 -1
  443. package/dist/lake/lake.bak/types.d.ts +0 -428
  444. package/dist/lake/lake.bak/types.d.ts.map +0 -1
  445. package/dist/lake/lake.bak/types.js +0 -46
  446. package/dist/lake/lake.bak/types.js.map +0 -1
  447. package/dist/lake/lake.bak/view-materializer.d.ts +0 -70
  448. package/dist/lake/lake.bak/view-materializer.d.ts.map +0 -1
  449. package/dist/lake/lake.bak/view-materializer.js +0 -314
  450. package/dist/lake/lake.bak/view-materializer.js.map +0 -1
  451. package/dist/lake/lake.bak/view-store.d.ts +0 -57
  452. package/dist/lake/lake.bak/view-store.d.ts.map +0 -1
  453. package/dist/lake/lake.bak/view-store.js +0 -348
  454. package/dist/lake/lake.bak/view-store.js.map +0 -1
  455. package/dist/unified-provider/migration/deprecated-extractors.d.ts +0 -104
  456. package/dist/unified-provider/migration/deprecated-extractors.d.ts.map +0 -1
  457. package/dist/unified-provider/migration/deprecated-extractors.js +0 -129
  458. package/dist/unified-provider/migration/deprecated-extractors.js.map +0 -1
  459. package/dist/unified-provider/migration/deprecated-scanner.d.ts +0 -40
  460. package/dist/unified-provider/migration/deprecated-scanner.d.ts.map +0 -1
  461. package/dist/unified-provider/migration/deprecated-scanner.js +0 -49
  462. package/dist/unified-provider/migration/deprecated-scanner.js.map +0 -1
  463. package/dist/unified-provider/migration/index.d.ts +0 -41
  464. package/dist/unified-provider/migration/index.d.ts.map +0 -1
  465. package/dist/unified-provider/migration/index.js +0 -43
  466. package/dist/unified-provider/migration/index.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Rust Test Regex Extractor
3
+ *
4
+ * Regex-based fallback for extracting test information when tree-sitter is unavailable.
5
+ * Supports Rust's built-in test framework, tokio-test, and common testing patterns.
6
+ *
7
+ * @requirements Rust Language Support
8
+ */
9
+ import type { TestExtraction, TestCase, MockStatement, SetupBlock, TestFramework } from '../../types.js';
10
+ export declare class RustTestRegexExtractor {
11
+ readonly language: "rust";
12
+ readonly extensions: string[];
13
+ /**
14
+ * Extract test information using regex patterns
15
+ */
16
+ extract(content: string, filePath: string): TestExtraction;
17
+ /**
18
+ * Detect test framework from imports and patterns
19
+ */
20
+ detectFramework(content: string): TestFramework;
21
+ /**
22
+ * Extract test cases from content
23
+ */
24
+ extractTestCases(content: string, filePath: string, _framework: TestFramework): TestCase[];
25
+ /**
26
+ * Extract test body based on brace matching
27
+ */
28
+ private extractTestBody;
29
+ /**
30
+ * Find the end of a block starting at given index
31
+ */
32
+ private findBlockEnd;
33
+ /**
34
+ * Extract function calls from test body
35
+ */
36
+ private extractFunctionCalls;
37
+ /**
38
+ * Extract assertions from test body
39
+ */
40
+ private extractAssertions;
41
+ /**
42
+ * Extract mock statements
43
+ */
44
+ extractMocks(content: string): MockStatement[];
45
+ /**
46
+ * Extract setup blocks
47
+ */
48
+ extractSetupBlocks(content: string): SetupBlock[];
49
+ /**
50
+ * Check if a function name is a test framework call
51
+ */
52
+ private isTestFrameworkCall;
53
+ /**
54
+ * Get line number from character index
55
+ */
56
+ private getLineNumber;
57
+ /**
58
+ * Calculate test quality signals
59
+ */
60
+ private calculateQuality;
61
+ }
62
+ /**
63
+ * Factory function
64
+ */
65
+ export declare function createRustTestRegexExtractor(): RustTestRegexExtractor;
66
+ //# sourceMappingURL=rust-test-regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust-test-regex.d.ts","sourceRoot":"","sources":["../../../../src/test-topology/extractors/regex/rust-test-regex.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,aAAa,EACb,UAAU,EAGV,aAAa,EACd,MAAM,gBAAgB,CAAC;AAMxB,qBAAa,sBAAsB;IACjC,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IACpC,QAAQ,CAAC,UAAU,WAAW;IAE9B;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc;IA2B1D;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa;IAmB/C;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,GAAG,QAAQ,EAAE;IAgJ1F;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoBpB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0C5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAkFzB;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE;IA0E9C;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAgFjD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA8BzB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,IAAI,sBAAsB,CAErE"}
@@ -0,0 +1,565 @@
1
+ /**
2
+ * Rust Test Regex Extractor
3
+ *
4
+ * Regex-based fallback for extracting test information when tree-sitter is unavailable.
5
+ * Supports Rust's built-in test framework, tokio-test, and common testing patterns.
6
+ *
7
+ * @requirements Rust Language Support
8
+ */
9
+ // ============================================================================
10
+ // Extractor
11
+ // ============================================================================
12
+ export class RustTestRegexExtractor {
13
+ language = 'rust';
14
+ extensions = ['.rs'];
15
+ /**
16
+ * Extract test information using regex patterns
17
+ */
18
+ extract(content, filePath) {
19
+ const framework = this.detectFramework(content);
20
+ const testCases = this.extractTestCases(content, filePath, framework);
21
+ const mocks = this.extractMocks(content);
22
+ const setupBlocks = this.extractSetupBlocks(content);
23
+ // Enrich test cases with quality signals
24
+ for (const test of testCases) {
25
+ const testBody = this.extractTestBody(content, test.line);
26
+ const assertions = this.extractAssertions(testBody, test.line, framework);
27
+ const testMocks = mocks.filter(m => m.line >= test.line && m.line <= test.line + 100);
28
+ test.assertions = assertions;
29
+ test.quality = this.calculateQuality(assertions, testMocks, test.directCalls);
30
+ }
31
+ return {
32
+ file: filePath,
33
+ framework,
34
+ language: 'rust',
35
+ testCases,
36
+ mocks,
37
+ setupBlocks,
38
+ };
39
+ }
40
+ /**
41
+ * Detect test framework from imports and patterns
42
+ */
43
+ detectFramework(content) {
44
+ // Check for tokio test
45
+ if (content.includes('#[tokio::test]'))
46
+ return 'tokio-test';
47
+ // Check for proptest
48
+ if (content.includes('proptest!') || content.includes('use proptest'))
49
+ return 'proptest';
50
+ // Check for criterion benchmarks
51
+ if (content.includes('criterion_group!') || content.includes('use criterion'))
52
+ return 'criterion';
53
+ // Check for rstest
54
+ if (content.includes('#[rstest]') || content.includes('use rstest'))
55
+ return 'rstest';
56
+ // Check for standard test attribute
57
+ if (content.includes('#[test]') || content.includes('#[cfg(test)]'))
58
+ return 'rust-test';
59
+ return 'unknown';
60
+ }
61
+ /**
62
+ * Extract test cases from content
63
+ */
64
+ extractTestCases(content, filePath, _framework) {
65
+ const testCases = [];
66
+ // Pattern 1: #[test] fn test_name() {
67
+ const testFuncPattern = /#\[test\]\s*(?:#\[[^\]]*\]\s*)*(?:async\s+)?fn\s+([a-zA-Z_]\w*)\s*\(\s*\)/g;
68
+ let match;
69
+ while ((match = testFuncPattern.exec(content)) !== null) {
70
+ const name = match[1];
71
+ const line = this.getLineNumber(content, match.index);
72
+ const testBody = this.extractTestBody(content, line);
73
+ const directCalls = this.extractFunctionCalls(testBody);
74
+ testCases.push({
75
+ id: `${filePath}:${name}:${line}`,
76
+ name,
77
+ qualifiedName: name,
78
+ file: filePath,
79
+ line,
80
+ directCalls,
81
+ transitiveCalls: [],
82
+ assertions: [],
83
+ quality: {
84
+ assertionCount: 0,
85
+ hasErrorCases: false,
86
+ hasEdgeCases: false,
87
+ mockRatio: 0,
88
+ setupRatio: 0,
89
+ score: 50,
90
+ },
91
+ });
92
+ }
93
+ // Pattern 2: #[tokio::test] async fn test_name() {
94
+ const tokioTestPattern = /#\[tokio::test(?:\([^\)]*\))?\]\s*(?:#\[[^\]]*\]\s*)*async\s+fn\s+([a-zA-Z_]\w*)\s*\(\s*\)/g;
95
+ while ((match = tokioTestPattern.exec(content)) !== null) {
96
+ const name = match[1];
97
+ const line = this.getLineNumber(content, match.index);
98
+ const testBody = this.extractTestBody(content, line);
99
+ const directCalls = this.extractFunctionCalls(testBody);
100
+ // Check if already added by previous pattern
101
+ if (testCases.some(t => t.name === name && t.line === line))
102
+ continue;
103
+ testCases.push({
104
+ id: `${filePath}:${name}:${line}`,
105
+ name,
106
+ qualifiedName: name,
107
+ file: filePath,
108
+ line,
109
+ directCalls,
110
+ transitiveCalls: [],
111
+ assertions: [],
112
+ quality: {
113
+ assertionCount: 0,
114
+ hasErrorCases: false,
115
+ hasEdgeCases: false,
116
+ mockRatio: 0,
117
+ setupRatio: 0,
118
+ score: 50,
119
+ },
120
+ });
121
+ }
122
+ // Pattern 3: #[rstest] fn test_name(params) {
123
+ const rstestPattern = /#\[rstest(?:\([^\)]*\))?\]\s*(?:#\[[^\]]*\]\s*)*(?:async\s+)?fn\s+([a-zA-Z_]\w*)\s*\([^)]*\)/g;
124
+ while ((match = rstestPattern.exec(content)) !== null) {
125
+ const name = match[1];
126
+ const line = this.getLineNumber(content, match.index);
127
+ const testBody = this.extractTestBody(content, line);
128
+ const directCalls = this.extractFunctionCalls(testBody);
129
+ // Check if already added
130
+ if (testCases.some(t => t.name === name && t.line === line))
131
+ continue;
132
+ testCases.push({
133
+ id: `${filePath}:${name}:${line}`,
134
+ name,
135
+ qualifiedName: name,
136
+ file: filePath,
137
+ line,
138
+ directCalls,
139
+ transitiveCalls: [],
140
+ assertions: [],
141
+ quality: {
142
+ assertionCount: 0,
143
+ hasErrorCases: false,
144
+ hasEdgeCases: false,
145
+ mockRatio: 0,
146
+ setupRatio: 0,
147
+ score: 50,
148
+ },
149
+ });
150
+ }
151
+ // Pattern 4: mod tests { ... } - find tests inside test modules
152
+ const testModPattern = /#\[cfg\(test\)\]\s*mod\s+(\w+)\s*\{/g;
153
+ while ((match = testModPattern.exec(content)) !== null) {
154
+ const modStart = match.index;
155
+ const modEnd = this.findBlockEnd(content, modStart);
156
+ const modBody = content.slice(modStart, modEnd);
157
+ // Find tests within the module
158
+ const innerTestPattern = /#\[test\]\s*(?:#\[[^\]]*\]\s*)*(?:async\s+)?fn\s+([a-zA-Z_]\w*)\s*\(\s*\)/g;
159
+ let innerMatch;
160
+ while ((innerMatch = innerTestPattern.exec(modBody)) !== null) {
161
+ const name = innerMatch[1];
162
+ const absoluteIndex = modStart + innerMatch.index;
163
+ const line = this.getLineNumber(content, absoluteIndex);
164
+ // Check if already added
165
+ if (testCases.some(t => t.name === name && t.line === line))
166
+ continue;
167
+ const testBody = this.extractTestBody(content, line);
168
+ const directCalls = this.extractFunctionCalls(testBody);
169
+ testCases.push({
170
+ id: `${filePath}:${name}:${line}`,
171
+ name,
172
+ qualifiedName: `tests::${name}`,
173
+ file: filePath,
174
+ line,
175
+ directCalls,
176
+ transitiveCalls: [],
177
+ assertions: [],
178
+ quality: {
179
+ assertionCount: 0,
180
+ hasErrorCases: false,
181
+ hasEdgeCases: false,
182
+ mockRatio: 0,
183
+ setupRatio: 0,
184
+ score: 50,
185
+ },
186
+ });
187
+ }
188
+ }
189
+ return testCases;
190
+ }
191
+ /**
192
+ * Extract test body based on brace matching
193
+ */
194
+ extractTestBody(content, startLine) {
195
+ const lines = content.split('\n');
196
+ const bodyLines = [];
197
+ let braceCount = 0;
198
+ let started = false;
199
+ for (let i = startLine - 1; i < Math.min(startLine + 200, lines.length); i++) {
200
+ const line = lines[i];
201
+ for (const char of line) {
202
+ if (char === '{') {
203
+ braceCount++;
204
+ started = true;
205
+ }
206
+ else if (char === '}') {
207
+ braceCount--;
208
+ }
209
+ }
210
+ if (started) {
211
+ bodyLines.push(line);
212
+ }
213
+ if (started && braceCount === 0) {
214
+ break;
215
+ }
216
+ }
217
+ return bodyLines.join('\n');
218
+ }
219
+ /**
220
+ * Find the end of a block starting at given index
221
+ */
222
+ findBlockEnd(content, startIndex) {
223
+ let braceCount = 0;
224
+ let started = false;
225
+ for (let i = startIndex; i < content.length; i++) {
226
+ const char = content[i];
227
+ if (char === '{') {
228
+ braceCount++;
229
+ started = true;
230
+ }
231
+ else if (char === '}') {
232
+ braceCount--;
233
+ if (started && braceCount === 0) {
234
+ return i + 1;
235
+ }
236
+ }
237
+ }
238
+ return content.length;
239
+ }
240
+ /**
241
+ * Extract function calls from test body
242
+ */
243
+ extractFunctionCalls(body) {
244
+ const calls = [];
245
+ const seen = new Set();
246
+ // Pattern for function calls: func_name(
247
+ const callPattern = /\b([a-z_][a-z0-9_]*)\s*\(/g;
248
+ let match;
249
+ while ((match = callPattern.exec(body)) !== null) {
250
+ const name = match[1];
251
+ if (this.isTestFrameworkCall(name))
252
+ continue;
253
+ if (!seen.has(name)) {
254
+ seen.add(name);
255
+ calls.push(name);
256
+ }
257
+ }
258
+ // Pattern for method calls: .method_name(
259
+ const methodPattern = /\.([a-z_][a-z0-9_]*)\s*\(/g;
260
+ while ((match = methodPattern.exec(body)) !== null) {
261
+ const name = match[1];
262
+ if (this.isTestFrameworkCall(name))
263
+ continue;
264
+ if (!seen.has(name)) {
265
+ seen.add(name);
266
+ calls.push(name);
267
+ }
268
+ }
269
+ // Pattern for path calls: Path::func(
270
+ const pathPattern = /::([a-z_][a-z0-9_]*)\s*\(/g;
271
+ while ((match = pathPattern.exec(body)) !== null) {
272
+ const name = match[1];
273
+ if (this.isTestFrameworkCall(name))
274
+ continue;
275
+ if (!seen.has(name)) {
276
+ seen.add(name);
277
+ calls.push(name);
278
+ }
279
+ }
280
+ return calls;
281
+ }
282
+ /**
283
+ * Extract assertions from test body
284
+ */
285
+ extractAssertions(body, baseLineNum, _framework) {
286
+ const assertions = [];
287
+ const lines = body.split('\n');
288
+ for (let i = 0; i < lines.length; i++) {
289
+ const line = lines[i];
290
+ const lineNum = baseLineNum + i;
291
+ // Standard assert macros
292
+ const assertMatch = line.match(/\b(assert|assert_eq|assert_ne|assert_matches|debug_assert|debug_assert_eq|debug_assert_ne)!\s*\(/);
293
+ if (assertMatch) {
294
+ const macro = assertMatch[1];
295
+ assertions.push({
296
+ matcher: macro,
297
+ line: lineNum,
298
+ isErrorAssertion: false,
299
+ isEdgeCaseAssertion: macro === 'assert_ne' || macro === 'debug_assert_ne',
300
+ });
301
+ }
302
+ // panic! and unreachable!
303
+ const panicMatch = line.match(/\b(panic|unreachable|unimplemented|todo)!\s*\(/);
304
+ if (panicMatch) {
305
+ assertions.push({
306
+ matcher: panicMatch[1],
307
+ line: lineNum,
308
+ isErrorAssertion: true,
309
+ isEdgeCaseAssertion: false,
310
+ });
311
+ }
312
+ // Result assertions: .unwrap(), .expect(), .is_ok(), .is_err()
313
+ const resultMatch = line.match(/\.(unwrap|expect|is_ok|is_err|unwrap_err|unwrap_or|unwrap_or_else)\s*\(/);
314
+ if (resultMatch) {
315
+ const method = resultMatch[1];
316
+ assertions.push({
317
+ matcher: method,
318
+ line: lineNum,
319
+ isErrorAssertion: method === 'is_err' || method === 'unwrap_err',
320
+ isEdgeCaseAssertion: method === 'is_ok' || method === 'is_err',
321
+ });
322
+ }
323
+ // Option assertions: .is_some(), .is_none()
324
+ const optionMatch = line.match(/\.(is_some|is_none|unwrap|expect)\s*\(/);
325
+ if (optionMatch && !resultMatch) {
326
+ const method = optionMatch[1];
327
+ assertions.push({
328
+ matcher: method,
329
+ line: lineNum,
330
+ isErrorAssertion: false,
331
+ isEdgeCaseAssertion: method === 'is_none',
332
+ });
333
+ }
334
+ // #[should_panic] attribute (check in test attributes)
335
+ if (line.includes('#[should_panic')) {
336
+ assertions.push({
337
+ matcher: 'should_panic',
338
+ line: lineNum,
339
+ isErrorAssertion: true,
340
+ isEdgeCaseAssertion: false,
341
+ });
342
+ }
343
+ // proptest assertions
344
+ if (line.includes('prop_assert!') || line.includes('prop_assert_eq!')) {
345
+ const propMatch = line.match(/\b(prop_assert|prop_assert_eq|prop_assert_ne)!\s*\(/);
346
+ if (propMatch) {
347
+ assertions.push({
348
+ matcher: propMatch[1],
349
+ line: lineNum,
350
+ isErrorAssertion: false,
351
+ isEdgeCaseAssertion: false,
352
+ });
353
+ }
354
+ }
355
+ }
356
+ return assertions;
357
+ }
358
+ /**
359
+ * Extract mock statements
360
+ */
361
+ extractMocks(content) {
362
+ const mocks = [];
363
+ // mockall: #[automock] or mock! macro
364
+ const automockPattern = /#\[automock\]/g;
365
+ let match;
366
+ while ((match = automockPattern.exec(content)) !== null) {
367
+ mocks.push({
368
+ target: 'automock',
369
+ mockType: 'mockall',
370
+ line: this.getLineNumber(content, match.index),
371
+ isExternal: false,
372
+ });
373
+ }
374
+ // mockall: mock! macro
375
+ const mockMacroPattern = /mock!\s*\{/g;
376
+ while ((match = mockMacroPattern.exec(content)) !== null) {
377
+ mocks.push({
378
+ target: 'mock!',
379
+ mockType: 'mockall',
380
+ line: this.getLineNumber(content, match.index),
381
+ isExternal: false,
382
+ });
383
+ }
384
+ // mockall: MockXxx::new()
385
+ const mockNewPattern = /Mock([A-Z]\w*)::new\s*\(/g;
386
+ while ((match = mockNewPattern.exec(content)) !== null) {
387
+ mocks.push({
388
+ target: `Mock${match[1]}`,
389
+ mockType: 'mockall',
390
+ line: this.getLineNumber(content, match.index),
391
+ isExternal: false,
392
+ });
393
+ }
394
+ // mockall: .expect_method()
395
+ const expectPattern = /\.expect_([a-z_]\w*)\s*\(/g;
396
+ while ((match = expectPattern.exec(content)) !== null) {
397
+ mocks.push({
398
+ target: `expect_${match[1]}`,
399
+ mockType: 'mockall',
400
+ line: this.getLineNumber(content, match.index),
401
+ isExternal: false,
402
+ });
403
+ }
404
+ // wiremock: MockServer::start()
405
+ const wiremockPattern = /MockServer::start\s*\(/g;
406
+ while ((match = wiremockPattern.exec(content)) !== null) {
407
+ mocks.push({
408
+ target: 'MockServer',
409
+ mockType: 'wiremock',
410
+ line: this.getLineNumber(content, match.index),
411
+ isExternal: true,
412
+ });
413
+ }
414
+ // httpmock: MockServer::start()
415
+ const httpmockPattern = /httpmock::MockServer/g;
416
+ while ((match = httpmockPattern.exec(content)) !== null) {
417
+ mocks.push({
418
+ target: 'httpmock::MockServer',
419
+ mockType: 'httpmock',
420
+ line: this.getLineNumber(content, match.index),
421
+ isExternal: true,
422
+ });
423
+ }
424
+ return mocks;
425
+ }
426
+ /**
427
+ * Extract setup blocks
428
+ */
429
+ extractSetupBlocks(content) {
430
+ const blocks = [];
431
+ // #[fixture] attribute (rstest)
432
+ const fixturePattern = /#\[fixture\]\s*(?:pub\s+)?fn\s+([a-zA-Z_]\w*)/g;
433
+ let match;
434
+ while ((match = fixturePattern.exec(content)) !== null) {
435
+ const line = this.getLineNumber(content, match.index);
436
+ const body = this.extractTestBody(content, line);
437
+ const calls = this.extractFunctionCalls(body);
438
+ blocks.push({
439
+ type: 'beforeEach',
440
+ line,
441
+ calls,
442
+ });
443
+ }
444
+ // setup() or setup_*() functions in test modules
445
+ const setupFnPattern = /fn\s+(setup(?:_\w+)?)\s*\(\s*\)/g;
446
+ while ((match = setupFnPattern.exec(content)) !== null) {
447
+ const line = this.getLineNumber(content, match.index);
448
+ const body = this.extractTestBody(content, line);
449
+ const calls = this.extractFunctionCalls(body);
450
+ blocks.push({
451
+ type: 'beforeEach',
452
+ line,
453
+ calls,
454
+ });
455
+ }
456
+ // teardown() or teardown_*() functions
457
+ const teardownFnPattern = /fn\s+(teardown(?:_\w+)?)\s*\(\s*\)/g;
458
+ while ((match = teardownFnPattern.exec(content)) !== null) {
459
+ const line = this.getLineNumber(content, match.index);
460
+ const body = this.extractTestBody(content, line);
461
+ const calls = this.extractFunctionCalls(body);
462
+ blocks.push({
463
+ type: 'afterEach',
464
+ line,
465
+ calls,
466
+ });
467
+ }
468
+ // Drop implementations (cleanup)
469
+ const dropPattern = /impl\s+Drop\s+for\s+(\w+)/g;
470
+ while ((match = dropPattern.exec(content)) !== null) {
471
+ blocks.push({
472
+ type: 'afterEach',
473
+ line: this.getLineNumber(content, match.index),
474
+ calls: ['drop'],
475
+ });
476
+ }
477
+ // ctor (constructor) crate for global setup
478
+ const ctorPattern = /#\[ctor\]/g;
479
+ while ((match = ctorPattern.exec(content)) !== null) {
480
+ blocks.push({
481
+ type: 'beforeAll',
482
+ line: this.getLineNumber(content, match.index),
483
+ calls: [],
484
+ });
485
+ }
486
+ // dtor (destructor) crate for global teardown
487
+ const dtorPattern = /#\[dtor\]/g;
488
+ while ((match = dtorPattern.exec(content)) !== null) {
489
+ blocks.push({
490
+ type: 'afterAll',
491
+ line: this.getLineNumber(content, match.index),
492
+ calls: [],
493
+ });
494
+ }
495
+ return blocks;
496
+ }
497
+ /**
498
+ * Check if a function name is a test framework call
499
+ */
500
+ isTestFrameworkCall(name) {
501
+ const frameworkCalls = [
502
+ // Standard assertions
503
+ 'assert', 'assert_eq', 'assert_ne', 'assert_matches',
504
+ 'debug_assert', 'debug_assert_eq', 'debug_assert_ne',
505
+ 'panic', 'unreachable', 'unimplemented', 'todo',
506
+ // Result/Option methods
507
+ 'unwrap', 'expect', 'is_ok', 'is_err', 'is_some', 'is_none',
508
+ 'unwrap_err', 'unwrap_or', 'unwrap_or_else', 'unwrap_or_default',
509
+ 'ok', 'err', 'map', 'map_err', 'and_then', 'or_else',
510
+ // proptest
511
+ 'prop_assert', 'prop_assert_eq', 'prop_assert_ne',
512
+ // Common test utilities
513
+ 'setup', 'teardown', 'before', 'after',
514
+ // mockall
515
+ 'expect', 'returning', 'times', 'with', 'withf',
516
+ ];
517
+ return frameworkCalls.includes(name);
518
+ }
519
+ /**
520
+ * Get line number from character index
521
+ */
522
+ getLineNumber(content, index) {
523
+ return content.slice(0, index).split('\n').length;
524
+ }
525
+ /**
526
+ * Calculate test quality signals
527
+ */
528
+ calculateQuality(assertions, mocks, directCalls) {
529
+ const assertionCount = assertions.length;
530
+ const hasErrorCases = assertions.some(a => a.isErrorAssertion);
531
+ const hasEdgeCases = assertions.some(a => a.isEdgeCaseAssertion);
532
+ const totalCalls = mocks.length + directCalls.length;
533
+ const mockRatio = totalCalls > 0 ? mocks.length / totalCalls : 0;
534
+ let score = 50;
535
+ if (assertionCount >= 1)
536
+ score += 10;
537
+ if (assertionCount >= 3)
538
+ score += 10;
539
+ if (hasErrorCases)
540
+ score += 15;
541
+ if (hasEdgeCases)
542
+ score += 10;
543
+ if (mockRatio > 0.7)
544
+ score -= 15;
545
+ else if (mockRatio > 0.5)
546
+ score -= 5;
547
+ if (assertionCount === 0)
548
+ score -= 20;
549
+ return {
550
+ assertionCount,
551
+ hasErrorCases,
552
+ hasEdgeCases,
553
+ mockRatio: Math.round(mockRatio * 100) / 100,
554
+ setupRatio: 0,
555
+ score: Math.max(0, Math.min(100, score)),
556
+ };
557
+ }
558
+ }
559
+ /**
560
+ * Factory function
561
+ */
562
+ export function createRustTestRegexExtractor() {
563
+ return new RustTestRegexExtractor();
564
+ }
565
+ //# sourceMappingURL=rust-test-regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rust-test-regex.js","sourceRoot":"","sources":["../../../../src/test-topology/extractors/regex/rust-test-regex.ts"],"names":[],"mappings":"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"}