@optave/codegraph 3.4.1 → 3.6.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 (349) hide show
  1. package/README.md +50 -28
  2. package/dist/ast-analysis/engine.d.ts.map +1 -1
  3. package/dist/ast-analysis/engine.js +119 -127
  4. package/dist/ast-analysis/engine.js.map +1 -1
  5. package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
  6. package/dist/ast-analysis/rules/javascript.js +1 -0
  7. package/dist/ast-analysis/rules/javascript.js.map +1 -1
  8. package/dist/ast-analysis/visitors/ast-store-visitor.d.ts.map +1 -1
  9. package/dist/ast-analysis/visitors/ast-store-visitor.js +116 -35
  10. package/dist/ast-analysis/visitors/ast-store-visitor.js.map +1 -1
  11. package/dist/ast-analysis/visitors/complexity-visitor.d.ts.map +1 -1
  12. package/dist/ast-analysis/visitors/complexity-visitor.js +11 -13
  13. package/dist/ast-analysis/visitors/complexity-visitor.js.map +1 -1
  14. package/dist/db/better-sqlite3.d.ts +3 -0
  15. package/dist/db/better-sqlite3.d.ts.map +1 -0
  16. package/dist/db/better-sqlite3.js +19 -0
  17. package/dist/db/better-sqlite3.js.map +1 -0
  18. package/dist/db/connection.d.ts +25 -4
  19. package/dist/db/connection.d.ts.map +1 -1
  20. package/dist/db/connection.js +125 -23
  21. package/dist/db/connection.js.map +1 -1
  22. package/dist/db/index.d.ts +2 -2
  23. package/dist/db/index.d.ts.map +1 -1
  24. package/dist/db/index.js +1 -1
  25. package/dist/db/index.js.map +1 -1
  26. package/dist/db/migrations.d.ts.map +1 -1
  27. package/dist/db/migrations.js +40 -32
  28. package/dist/db/migrations.js.map +1 -1
  29. package/dist/db/query-builder.d.ts +5 -5
  30. package/dist/db/query-builder.d.ts.map +1 -1
  31. package/dist/db/query-builder.js +20 -4
  32. package/dist/db/query-builder.js.map +1 -1
  33. package/dist/db/repository/index.d.ts +1 -0
  34. package/dist/db/repository/index.d.ts.map +1 -1
  35. package/dist/db/repository/index.js +1 -0
  36. package/dist/db/repository/index.js.map +1 -1
  37. package/dist/db/repository/native-repository.d.ts +58 -0
  38. package/dist/db/repository/native-repository.d.ts.map +1 -0
  39. package/dist/db/repository/native-repository.js +261 -0
  40. package/dist/db/repository/native-repository.js.map +1 -0
  41. package/dist/db/repository/nodes.d.ts +4 -4
  42. package/dist/db/repository/nodes.d.ts.map +1 -1
  43. package/dist/db/repository/nodes.js +6 -6
  44. package/dist/db/repository/nodes.js.map +1 -1
  45. package/dist/domain/analysis/context.d.ts.map +1 -1
  46. package/dist/domain/analysis/context.js +51 -66
  47. package/dist/domain/analysis/context.js.map +1 -1
  48. package/dist/domain/analysis/dependencies.d.ts.map +1 -1
  49. package/dist/domain/analysis/dependencies.js +62 -70
  50. package/dist/domain/analysis/dependencies.js.map +1 -1
  51. package/dist/domain/analysis/diff-impact.d.ts +9 -7
  52. package/dist/domain/analysis/diff-impact.d.ts.map +1 -1
  53. package/dist/domain/analysis/exports.d.ts.map +1 -1
  54. package/dist/domain/analysis/exports.js +29 -33
  55. package/dist/domain/analysis/exports.js.map +1 -1
  56. package/dist/domain/analysis/fn-impact.d.ts +15 -17
  57. package/dist/domain/analysis/fn-impact.d.ts.map +1 -1
  58. package/dist/domain/analysis/fn-impact.js +35 -65
  59. package/dist/domain/analysis/fn-impact.js.map +1 -1
  60. package/dist/domain/analysis/module-map.d.ts.map +1 -1
  61. package/dist/domain/analysis/module-map.js +91 -6
  62. package/dist/domain/analysis/module-map.js.map +1 -1
  63. package/dist/domain/analysis/query-helpers.d.ts +20 -0
  64. package/dist/domain/analysis/query-helpers.d.ts.map +1 -0
  65. package/dist/domain/analysis/query-helpers.js +27 -0
  66. package/dist/domain/analysis/query-helpers.js.map +1 -0
  67. package/dist/domain/graph/builder/context.d.ts +2 -1
  68. package/dist/domain/graph/builder/context.d.ts.map +1 -1
  69. package/dist/domain/graph/builder/context.js +1 -0
  70. package/dist/domain/graph/builder/context.js.map +1 -1
  71. package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
  72. package/dist/domain/graph/builder/helpers.js +15 -9
  73. package/dist/domain/graph/builder/helpers.js.map +1 -1
  74. package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
  75. package/dist/domain/graph/builder/incremental.js +3 -2
  76. package/dist/domain/graph/builder/incremental.js.map +1 -1
  77. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  78. package/dist/domain/graph/builder/pipeline.js +95 -7
  79. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  80. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
  81. package/dist/domain/graph/builder/stages/build-edges.js +101 -57
  82. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
  83. package/dist/domain/graph/builder/stages/build-structure.d.ts.map +1 -1
  84. package/dist/domain/graph/builder/stages/build-structure.js +33 -3
  85. package/dist/domain/graph/builder/stages/build-structure.js.map +1 -1
  86. package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -1
  87. package/dist/domain/graph/builder/stages/collect-files.js +70 -6
  88. package/dist/domain/graph/builder/stages/collect-files.js.map +1 -1
  89. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
  90. package/dist/domain/graph/builder/stages/detect-changes.js +36 -14
  91. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
  92. package/dist/domain/graph/builder/stages/finalize.d.ts.map +1 -1
  93. package/dist/domain/graph/builder/stages/finalize.js +130 -88
  94. package/dist/domain/graph/builder/stages/finalize.js.map +1 -1
  95. package/dist/domain/graph/builder/stages/insert-nodes.d.ts.map +1 -1
  96. package/dist/domain/graph/builder/stages/insert-nodes.js +124 -16
  97. package/dist/domain/graph/builder/stages/insert-nodes.js.map +1 -1
  98. package/dist/domain/graph/builder/stages/resolve-imports.d.ts.map +1 -1
  99. package/dist/domain/graph/builder/stages/resolve-imports.js +3 -2
  100. package/dist/domain/graph/builder/stages/resolve-imports.js.map +1 -1
  101. package/dist/domain/graph/resolve.d.ts +0 -4
  102. package/dist/domain/graph/resolve.d.ts.map +1 -1
  103. package/dist/domain/graph/resolve.js +32 -48
  104. package/dist/domain/graph/resolve.js.map +1 -1
  105. package/dist/domain/graph/watcher.d.ts.map +1 -1
  106. package/dist/domain/graph/watcher.js +12 -12
  107. package/dist/domain/graph/watcher.js.map +1 -1
  108. package/dist/domain/parser.d.ts +1 -1
  109. package/dist/domain/parser.d.ts.map +1 -1
  110. package/dist/domain/parser.js +165 -101
  111. package/dist/domain/parser.js.map +1 -1
  112. package/dist/domain/search/search/cli-formatter.d.ts.map +1 -1
  113. package/dist/domain/search/search/cli-formatter.js +88 -83
  114. package/dist/domain/search/search/cli-formatter.js.map +1 -1
  115. package/dist/extractors/bash.d.ts +6 -0
  116. package/dist/extractors/bash.d.ts.map +1 -0
  117. package/dist/extractors/bash.js +91 -0
  118. package/dist/extractors/bash.js.map +1 -0
  119. package/dist/extractors/c.d.ts +6 -0
  120. package/dist/extractors/c.d.ts.map +1 -0
  121. package/dist/extractors/c.js +204 -0
  122. package/dist/extractors/c.js.map +1 -0
  123. package/dist/extractors/cpp.d.ts +6 -0
  124. package/dist/extractors/cpp.d.ts.map +1 -0
  125. package/dist/extractors/cpp.js +283 -0
  126. package/dist/extractors/cpp.js.map +1 -0
  127. package/dist/extractors/csharp.d.ts.map +1 -1
  128. package/dist/extractors/csharp.js +42 -54
  129. package/dist/extractors/csharp.js.map +1 -1
  130. package/dist/extractors/go.d.ts.map +1 -1
  131. package/dist/extractors/go.js +126 -130
  132. package/dist/extractors/go.js.map +1 -1
  133. package/dist/extractors/hcl.js +6 -6
  134. package/dist/extractors/hcl.js.map +1 -1
  135. package/dist/extractors/helpers.d.ts +32 -1
  136. package/dist/extractors/helpers.d.ts.map +1 -1
  137. package/dist/extractors/helpers.js +74 -0
  138. package/dist/extractors/helpers.js.map +1 -1
  139. package/dist/extractors/index.d.ts +6 -0
  140. package/dist/extractors/index.d.ts.map +1 -1
  141. package/dist/extractors/index.js +6 -0
  142. package/dist/extractors/index.js.map +1 -1
  143. package/dist/extractors/java.d.ts.map +1 -1
  144. package/dist/extractors/java.js +32 -47
  145. package/dist/extractors/java.js.map +1 -1
  146. package/dist/extractors/javascript.d.ts.map +1 -1
  147. package/dist/extractors/javascript.js +359 -330
  148. package/dist/extractors/javascript.js.map +1 -1
  149. package/dist/extractors/kotlin.d.ts +6 -0
  150. package/dist/extractors/kotlin.d.ts.map +1 -0
  151. package/dist/extractors/kotlin.js +275 -0
  152. package/dist/extractors/kotlin.js.map +1 -0
  153. package/dist/extractors/php.d.ts.map +1 -1
  154. package/dist/extractors/php.js +39 -44
  155. package/dist/extractors/php.js.map +1 -1
  156. package/dist/extractors/python.d.ts.map +1 -1
  157. package/dist/extractors/python.js +75 -93
  158. package/dist/extractors/python.js.map +1 -1
  159. package/dist/extractors/ruby.js +6 -13
  160. package/dist/extractors/ruby.js.map +1 -1
  161. package/dist/extractors/rust.d.ts.map +1 -1
  162. package/dist/extractors/rust.js +58 -82
  163. package/dist/extractors/rust.js.map +1 -1
  164. package/dist/extractors/scala.d.ts +6 -0
  165. package/dist/extractors/scala.d.ts.map +1 -0
  166. package/dist/extractors/scala.js +269 -0
  167. package/dist/extractors/scala.js.map +1 -0
  168. package/dist/extractors/swift.d.ts +6 -0
  169. package/dist/extractors/swift.d.ts.map +1 -0
  170. package/dist/extractors/swift.js +275 -0
  171. package/dist/extractors/swift.js.map +1 -0
  172. package/dist/features/ast.d.ts +16 -1
  173. package/dist/features/ast.d.ts.map +1 -1
  174. package/dist/features/ast.js +45 -23
  175. package/dist/features/ast.js.map +1 -1
  176. package/dist/features/audit.d.ts.map +1 -1
  177. package/dist/features/audit.js +17 -21
  178. package/dist/features/audit.js.map +1 -1
  179. package/dist/features/branch-compare.d.ts.map +1 -1
  180. package/dist/features/branch-compare.js +50 -4
  181. package/dist/features/branch-compare.js.map +1 -1
  182. package/dist/features/cfg.d.ts +7 -1
  183. package/dist/features/cfg.d.ts.map +1 -1
  184. package/dist/features/cfg.js +118 -62
  185. package/dist/features/cfg.js.map +1 -1
  186. package/dist/features/check.d.ts.map +1 -1
  187. package/dist/features/check.js +79 -62
  188. package/dist/features/check.js.map +1 -1
  189. package/dist/features/complexity-query.d.ts.map +1 -1
  190. package/dist/features/complexity-query.js +142 -137
  191. package/dist/features/complexity-query.js.map +1 -1
  192. package/dist/features/complexity.d.ts +7 -1
  193. package/dist/features/complexity.d.ts.map +1 -1
  194. package/dist/features/complexity.js +62 -1
  195. package/dist/features/complexity.js.map +1 -1
  196. package/dist/features/dataflow.d.ts +7 -1
  197. package/dist/features/dataflow.d.ts.map +1 -1
  198. package/dist/features/dataflow.js +356 -188
  199. package/dist/features/dataflow.js.map +1 -1
  200. package/dist/features/graph-enrichment.d.ts.map +1 -1
  201. package/dist/features/graph-enrichment.js +117 -104
  202. package/dist/features/graph-enrichment.js.map +1 -1
  203. package/dist/features/sequence.d.ts.map +1 -1
  204. package/dist/features/sequence.js +25 -4
  205. package/dist/features/sequence.js.map +1 -1
  206. package/dist/features/snapshot.d.ts.map +1 -1
  207. package/dist/features/snapshot.js +2 -1
  208. package/dist/features/snapshot.js.map +1 -1
  209. package/dist/features/structure-query.d.ts.map +1 -1
  210. package/dist/features/structure-query.js +29 -4
  211. package/dist/features/structure-query.js.map +1 -1
  212. package/dist/features/structure.d.ts.map +1 -1
  213. package/dist/features/structure.js +35 -15
  214. package/dist/features/structure.js.map +1 -1
  215. package/dist/graph/algorithms/leiden/adapter.d.ts.map +1 -1
  216. package/dist/graph/algorithms/leiden/adapter.js +88 -73
  217. package/dist/graph/algorithms/leiden/adapter.js.map +1 -1
  218. package/dist/graph/algorithms/leiden/index.js +43 -28
  219. package/dist/graph/algorithms/leiden/index.js.map +1 -1
  220. package/dist/graph/algorithms/leiden/optimiser.d.ts.map +1 -1
  221. package/dist/graph/algorithms/leiden/optimiser.js +90 -104
  222. package/dist/graph/algorithms/leiden/optimiser.js.map +1 -1
  223. package/dist/graph/algorithms/leiden/partition.d.ts.map +1 -1
  224. package/dist/graph/algorithms/leiden/partition.js +89 -106
  225. package/dist/graph/algorithms/leiden/partition.js.map +1 -1
  226. package/dist/graph/model.d.ts +2 -0
  227. package/dist/graph/model.d.ts.map +1 -1
  228. package/dist/graph/model.js +20 -8
  229. package/dist/graph/model.js.map +1 -1
  230. package/dist/infrastructure/config.d.ts +0 -8
  231. package/dist/infrastructure/config.d.ts.map +1 -1
  232. package/dist/infrastructure/config.js +73 -62
  233. package/dist/infrastructure/config.js.map +1 -1
  234. package/dist/infrastructure/registry.d.ts +0 -8
  235. package/dist/infrastructure/registry.d.ts.map +1 -1
  236. package/dist/infrastructure/registry.js +12 -14
  237. package/dist/infrastructure/registry.js.map +1 -1
  238. package/dist/mcp/server.d.ts.map +1 -1
  239. package/dist/mcp/server.js +47 -45
  240. package/dist/mcp/server.js.map +1 -1
  241. package/dist/presentation/audit.d.ts.map +1 -1
  242. package/dist/presentation/audit.js +61 -57
  243. package/dist/presentation/audit.js.map +1 -1
  244. package/dist/presentation/branch-compare.d.ts.map +1 -1
  245. package/dist/presentation/branch-compare.js +56 -38
  246. package/dist/presentation/branch-compare.js.map +1 -1
  247. package/dist/presentation/check.d.ts.map +1 -1
  248. package/dist/presentation/check.js +30 -32
  249. package/dist/presentation/check.js.map +1 -1
  250. package/dist/presentation/colors.d.ts.map +1 -1
  251. package/dist/presentation/colors.js +2 -0
  252. package/dist/presentation/colors.js.map +1 -1
  253. package/dist/presentation/complexity.d.ts.map +1 -1
  254. package/dist/presentation/complexity.js +25 -19
  255. package/dist/presentation/complexity.js.map +1 -1
  256. package/dist/presentation/queries-cli/exports.d.ts.map +1 -1
  257. package/dist/presentation/queries-cli/exports.js +15 -15
  258. package/dist/presentation/queries-cli/exports.js.map +1 -1
  259. package/dist/presentation/queries-cli/impact.d.ts.map +1 -1
  260. package/dist/presentation/queries-cli/impact.js +29 -19
  261. package/dist/presentation/queries-cli/impact.js.map +1 -1
  262. package/dist/types.d.ts +406 -3
  263. package/dist/types.d.ts.map +1 -1
  264. package/grammars/tree-sitter-bash.wasm +0 -0
  265. package/grammars/tree-sitter-c.wasm +0 -0
  266. package/grammars/tree-sitter-cpp.wasm +0 -0
  267. package/grammars/tree-sitter-kotlin.wasm +0 -0
  268. package/grammars/tree-sitter-scala.wasm +0 -0
  269. package/grammars/tree-sitter-swift.wasm +0 -0
  270. package/package.json +67 -11
  271. package/src/ast-analysis/engine.ts +147 -138
  272. package/src/ast-analysis/rules/javascript.ts +1 -0
  273. package/src/ast-analysis/visitors/ast-store-visitor.ts +116 -34
  274. package/src/ast-analysis/visitors/complexity-visitor.ts +11 -11
  275. package/src/db/better-sqlite3.ts +20 -0
  276. package/src/db/connection.ts +148 -26
  277. package/src/db/index.ts +4 -1
  278. package/src/db/migrations.ts +38 -32
  279. package/src/db/query-builder.ts +30 -5
  280. package/src/db/repository/index.ts +1 -0
  281. package/src/db/repository/native-repository.ts +361 -0
  282. package/src/db/repository/nodes.ts +7 -3
  283. package/src/domain/analysis/context.ts +73 -75
  284. package/src/domain/analysis/dependencies.ts +78 -68
  285. package/src/domain/analysis/exports.ts +45 -34
  286. package/src/domain/analysis/fn-impact.ts +67 -64
  287. package/src/domain/analysis/module-map.ts +103 -8
  288. package/src/domain/analysis/query-helpers.ts +35 -0
  289. package/src/domain/graph/builder/context.ts +2 -0
  290. package/src/domain/graph/builder/helpers.ts +12 -6
  291. package/src/domain/graph/builder/incremental.ts +3 -2
  292. package/src/domain/graph/builder/pipeline.ts +98 -6
  293. package/src/domain/graph/builder/stages/build-edges.ts +116 -83
  294. package/src/domain/graph/builder/stages/build-structure.ts +46 -8
  295. package/src/domain/graph/builder/stages/collect-files.ts +83 -6
  296. package/src/domain/graph/builder/stages/detect-changes.ts +44 -21
  297. package/src/domain/graph/builder/stages/finalize.ts +172 -109
  298. package/src/domain/graph/builder/stages/insert-nodes.ts +147 -17
  299. package/src/domain/graph/builder/stages/resolve-imports.ts +3 -2
  300. package/src/domain/graph/resolve.ts +34 -46
  301. package/src/domain/graph/watcher.ts +12 -14
  302. package/src/domain/parser.ts +169 -97
  303. package/src/domain/search/search/cli-formatter.ts +121 -94
  304. package/src/extractors/bash.ts +97 -0
  305. package/src/extractors/c.ts +212 -0
  306. package/src/extractors/cpp.ts +298 -0
  307. package/src/extractors/csharp.ts +53 -56
  308. package/src/extractors/go.ts +152 -134
  309. package/src/extractors/hcl.ts +6 -6
  310. package/src/extractors/helpers.ts +93 -1
  311. package/src/extractors/index.ts +6 -0
  312. package/src/extractors/java.ts +43 -48
  313. package/src/extractors/javascript.ts +382 -317
  314. package/src/extractors/kotlin.ts +293 -0
  315. package/src/extractors/php.ts +46 -40
  316. package/src/extractors/python.ts +81 -104
  317. package/src/extractors/ruby.ts +6 -13
  318. package/src/extractors/rust.ts +65 -84
  319. package/src/extractors/scala.ts +285 -0
  320. package/src/extractors/swift.ts +293 -0
  321. package/src/features/ast.ts +74 -24
  322. package/src/features/audit.ts +24 -20
  323. package/src/features/branch-compare.ts +54 -5
  324. package/src/features/cfg.ts +158 -65
  325. package/src/features/check.ts +90 -74
  326. package/src/features/complexity-query.ts +181 -163
  327. package/src/features/complexity.ts +64 -1
  328. package/src/features/dataflow.ts +462 -217
  329. package/src/features/graph-enrichment.ts +161 -117
  330. package/src/features/sequence.ts +27 -4
  331. package/src/features/snapshot.ts +2 -1
  332. package/src/features/structure-query.ts +43 -4
  333. package/src/features/structure.ts +50 -22
  334. package/src/graph/algorithms/leiden/adapter.ts +126 -71
  335. package/src/graph/algorithms/leiden/index.ts +67 -28
  336. package/src/graph/algorithms/leiden/optimiser.ts +114 -105
  337. package/src/graph/algorithms/leiden/partition.ts +131 -98
  338. package/src/graph/model.ts +19 -7
  339. package/src/infrastructure/config.ts +60 -58
  340. package/src/infrastructure/registry.ts +17 -14
  341. package/src/mcp/server.ts +48 -47
  342. package/src/presentation/audit.ts +72 -67
  343. package/src/presentation/branch-compare.ts +54 -50
  344. package/src/presentation/check.ts +34 -34
  345. package/src/presentation/colors.ts +2 -0
  346. package/src/presentation/complexity.ts +39 -33
  347. package/src/presentation/queries-cli/exports.ts +17 -17
  348. package/src/presentation/queries-cli/impact.ts +30 -22
  349. package/src/types.ts +458 -3
@@ -27,6 +27,22 @@ function extractExpressionText(node) {
27
27
  }
28
28
  return truncate(node.text);
29
29
  }
30
+ function extractCallName(node) {
31
+ for (const field of ['function', 'method', 'name']) {
32
+ const fn = node.childForFieldName(field);
33
+ if (fn)
34
+ return fn.text;
35
+ }
36
+ return node.text?.split('(')[0] || '?';
37
+ }
38
+ /** Extract receiver for call expressions (e.g. "obj" in "obj.method()"). */
39
+ function extractCallReceiver(node) {
40
+ const fn = node.childForFieldName('function');
41
+ if (!fn || fn.type !== 'member_expression')
42
+ return null;
43
+ const obj = fn.childForFieldName('object');
44
+ return obj ? obj.text : null;
45
+ }
30
46
  function extractName(kind, node) {
31
47
  if (kind === 'throw') {
32
48
  for (let i = 0; i < node.childCount; i++) {
@@ -81,50 +97,115 @@ export function createAstStoreVisitor(astTypeMap, defs, relPath, nodeIdMap) {
81
97
  return null;
82
98
  return nodeIdMap.get(`${parentDef.name}|${parentDef.kind}|${parentDef.line}`) || null;
83
99
  }
100
+ /** Recursively walk a subtree collecting AST nodes — used for arguments-only traversal. */
101
+ function walkSubtree(node) {
102
+ if (!node)
103
+ return;
104
+ if (matched.has(node.id))
105
+ return;
106
+ const kind = astTypeMap[node.type];
107
+ if (kind === 'call') {
108
+ // Capture this call and recurse only into its arguments
109
+ collectNode(node, kind);
110
+ walkCallArguments(node);
111
+ return;
112
+ }
113
+ if (kind) {
114
+ collectNode(node, kind);
115
+ if (kind !== 'string' && kind !== 'regex')
116
+ return; // skipChildren for non-leaf kinds
117
+ }
118
+ for (let i = 0; i < node.childCount; i++) {
119
+ walkSubtree(node.child(i));
120
+ }
121
+ }
122
+ /**
123
+ * Recurse into only the arguments of a call node — mirrors the native engine's
124
+ * strategy that prevents double-counting nested calls in the function field
125
+ * (e.g. chained calls like `a().b()`).
126
+ */
127
+ function walkCallArguments(callNode) {
128
+ // Try field-based lookup first, fall back to kind-based matching
129
+ const argsNode = callNode.childForFieldName('arguments') ??
130
+ findChildByKind(callNode, ['arguments', 'argument_list', 'method_arguments']);
131
+ if (!argsNode)
132
+ return;
133
+ for (let i = 0; i < argsNode.childCount; i++) {
134
+ walkSubtree(argsNode.child(i));
135
+ }
136
+ }
137
+ function findChildByKind(node, kinds) {
138
+ for (let i = 0; i < node.childCount; i++) {
139
+ const child = node.child(i);
140
+ if (child && kinds.includes(child.type))
141
+ return child;
142
+ }
143
+ return null;
144
+ }
145
+ function collectNode(node, kind) {
146
+ if (matched.has(node.id))
147
+ return;
148
+ const line = node.startPosition.row + 1;
149
+ let name;
150
+ let text = null;
151
+ let receiver = null;
152
+ if (kind === 'call') {
153
+ name = extractCallName(node);
154
+ text = truncate(node.text);
155
+ receiver = extractCallReceiver(node);
156
+ }
157
+ else if (kind === 'new') {
158
+ name = extractNewName(node);
159
+ text = truncate(node.text);
160
+ }
161
+ else if (kind === 'throw') {
162
+ name = extractName('throw', node);
163
+ text = extractExpressionText(node);
164
+ }
165
+ else if (kind === 'await') {
166
+ name = extractName('await', node);
167
+ text = extractExpressionText(node);
168
+ }
169
+ else if (kind === 'string') {
170
+ const content = node.text?.replace(/^['"`]|['"`]$/g, '') || '';
171
+ if (content.length < 2)
172
+ return;
173
+ name = truncate(content, 100);
174
+ text = truncate(node.text);
175
+ }
176
+ else if (kind === 'regex') {
177
+ name = node.text || '?';
178
+ text = truncate(node.text);
179
+ }
180
+ rows.push({
181
+ file: relPath,
182
+ line,
183
+ kind,
184
+ name,
185
+ text,
186
+ receiver,
187
+ parentNodeId: resolveParentNodeId(line),
188
+ });
189
+ matched.add(node.id);
190
+ }
84
191
  return {
85
192
  name: 'ast-store',
86
193
  enterNode(node, _context) {
194
+ // Guard: skip re-collection but do NOT skipChildren — node.id (memory address)
195
+ // can be reused by tree-sitter, so a collision would incorrectly suppress an
196
+ // unrelated subtree. The parent call's skipChildren handles the intended case.
87
197
  if (matched.has(node.id))
88
198
  return;
89
199
  const kind = astTypeMap[node.type];
90
200
  if (!kind)
91
201
  return;
92
- const line = node.startPosition.row + 1;
93
- let name;
94
- let text = null;
95
- if (kind === 'new') {
96
- name = extractNewName(node);
97
- text = truncate(node.text);
98
- }
99
- else if (kind === 'throw') {
100
- name = extractName('throw', node);
101
- text = extractExpressionText(node);
102
- }
103
- else if (kind === 'await') {
104
- name = extractName('await', node);
105
- text = extractExpressionText(node);
106
- }
107
- else if (kind === 'string') {
108
- const content = node.text?.replace(/^['"`]|['"`]$/g, '') || '';
109
- if (content.length < 2)
110
- return;
111
- name = truncate(content, 100);
112
- text = truncate(node.text);
113
- }
114
- else if (kind === 'regex') {
115
- name = node.text || '?';
116
- text = truncate(node.text);
202
+ collectNode(node, kind);
203
+ if (kind === 'call') {
204
+ // Mirror native: skip full subtree, recurse only into arguments.
205
+ // Prevents double-counting chained calls like service.getUser().getName().
206
+ walkCallArguments(node);
207
+ return { skipChildren: true };
117
208
  }
118
- rows.push({
119
- file: relPath,
120
- line,
121
- kind,
122
- name,
123
- text,
124
- receiver: null,
125
- parentNodeId: resolveParentNodeId(line),
126
- });
127
- matched.add(node.id);
128
209
  if (kind !== 'string' && kind !== 'regex') {
129
210
  return { skipChildren: true };
130
211
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ast-store-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast-store-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/ast-store-visitor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"complexity-visitor.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/complexity-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AAO/F,KAAK,QAAQ,GAAG,GAAG,CAAC;AA6IpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,EACxB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAChE,OAAO,CAkGT"}
1
+ {"version":3,"file":"complexity-visitor.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/complexity-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAmC,OAAO,EAAkB,MAAM,gBAAgB,CAAC;AAO/F,KAAK,QAAQ,GAAG,GAAG,CAAC;AAuJpB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,EAChB,MAAM,CAAC,EAAE,QAAQ,GAAG,IAAI,EACxB,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAChE,OAAO,CAwFT"}
@@ -54,6 +54,16 @@ function classifyBranchNode(node, type, nestingLevel, cRules, acc) {
54
54
  acc.cyclomatic--;
55
55
  }
56
56
  }
57
+ function classifyLogicalOp(node, cRules, acc) {
58
+ const op = node.child(1)?.type;
59
+ if (!op || !cRules.logicalOperators.has(op))
60
+ return;
61
+ acc.cyclomatic++;
62
+ const parent = node.parent;
63
+ const sameSequence = parent != null && parent.type === cRules.logicalNodeType && parent.child(1)?.type === op;
64
+ if (!sameSequence)
65
+ acc.cognitive++;
66
+ }
57
67
  function classifyPlainElse(node, type, cRules, acc) {
58
68
  if (cRules.elseViaAlternative &&
59
69
  type !== cRules.ifNodeType &&
@@ -144,19 +154,7 @@ export function createComplexityVisitor(cRules, hRules, options = {}) {
144
154
  if (nestingLevel > acc.maxNesting)
145
155
  acc.maxNesting = nestingLevel;
146
156
  if (type === cRules.logicalNodeType) {
147
- const op = node.child(1)?.type;
148
- if (op && cRules.logicalOperators.has(op)) {
149
- acc.cyclomatic++;
150
- const parent = node.parent;
151
- let sameSequence = false;
152
- if (parent && parent.type === cRules.logicalNodeType) {
153
- const parentOp = parent.child(1)?.type;
154
- if (parentOp === op)
155
- sameSequence = true;
156
- }
157
- if (!sameSequence)
158
- acc.cognitive++;
159
- }
157
+ classifyLogicalOp(node, cRules, acc);
160
158
  }
161
159
  if (type === cRules.optionalChainType)
162
160
  acc.cyclomatic++;
@@ -1 +1 @@
1
- {"version":3,"file":"complexity-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/complexity-visitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"complexity-visitor.js","sourceRoot":"","sources":["../../../src/ast-analysis/visitors/complexity-visitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Return the `better-sqlite3` Database constructor, loading it on first call. */
2
+ export declare function getDatabase(): new (...args: any[]) => any;
3
+ //# sourceMappingURL=better-sqlite3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-sqlite3.d.ts","sourceRoot":"","sources":["../../src/db/better-sqlite3.ts"],"names":[],"mappings":"AAaA,kFAAkF;AAClF,wBAAgB,WAAW,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAKzD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Lazy-loaded better-sqlite3 constructor.
3
+ *
4
+ * Centralises the `createRequire` + cache pattern so every call site that
5
+ * needs a JS-side SQLite handle can `import { getDatabase } from '…/db/better-sqlite3.js'`
6
+ * instead of duplicating the boilerplate. The native engine path (NativeDatabase /
7
+ * rusqlite) never touches this module.
8
+ */
9
+ import { createRequire } from 'node:module';
10
+ const _require = createRequire(import.meta.url);
11
+ let _Database;
12
+ /** Return the `better-sqlite3` Database constructor, loading it on first call. */
13
+ export function getDatabase() {
14
+ if (!_Database) {
15
+ _Database = _require('better-sqlite3');
16
+ }
17
+ return _Database;
18
+ }
19
+ //# sourceMappingURL=better-sqlite3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"better-sqlite3.js","sourceRoot":"","sources":["../../src/db/better-sqlite3.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChD,IAAI,SAAc,CAAC;AAEnB,kFAAkF;AAClF,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { BetterSqlite3Database } from '../types.js';
1
+ import type { BetterSqlite3Database, NativeDatabase } from '../types.js';
2
2
  import { Repository } from './repository/base.js';
3
3
  /** DB instance with optional advisory lock path. */
4
4
  export type LockedDatabase = BetterSqlite3Database & {
@@ -15,8 +15,6 @@ export type LockedDatabase = BetterSqlite3Database & {
15
15
  export declare function findRepoRoot(fromDir?: string): string | null;
16
16
  /** Reset the cached repo root (for testing). */
17
17
  export declare function _resetRepoRootCache(): void;
18
- /** Reset the version warning flag (for testing). */
19
- export declare function _resetVersionWarning(): void;
20
18
  export declare function openDb(dbPath: string): LockedDatabase;
21
19
  export declare function closeDb(db: LockedDatabase): void;
22
20
  /**
@@ -34,6 +32,15 @@ export declare function flushDeferredClose(): void;
34
32
  * Call `flushDeferredClose()` before deleting the DB file.
35
33
  */
36
34
  export declare function closeDbDeferred(db: LockedDatabase): void;
35
+ /** A better-sqlite3 handle optionally paired with a NativeDatabase. */
36
+ export interface LockedDatabasePair {
37
+ db: LockedDatabase;
38
+ nativeDb?: NativeDatabase;
39
+ }
40
+ /** Close both handles: NativeDatabase first (fast), then better-sqlite3 (releases lock). */
41
+ export declare function closeDbPair(pair: LockedDatabasePair): void;
42
+ /** Close NativeDatabase immediately, defer better-sqlite3 WAL checkpoint. */
43
+ export declare function closeDbPairDeferred(pair: LockedDatabasePair): void;
37
44
  export declare function findDbPath(customPath?: string): string;
38
45
  /** Open a database in readonly mode, with a user-friendly error if the DB doesn't exist. */
39
46
  export declare function openReadonlyOrFail(customPath?: string): BetterSqlite3Database;
@@ -41,7 +48,9 @@ export declare function openReadonlyOrFail(customPath?: string): BetterSqlite3Da
41
48
  * Open a Repository from either an injected instance or a DB path.
42
49
  *
43
50
  * When `opts.repo` is a Repository instance, returns it directly (no DB opened).
44
- * Otherwise opens a readonly SQLite DB and wraps it in SqliteRepository.
51
+ * When the native engine is available, opens a NativeDatabase (rusqlite) and
52
+ * wraps it in NativeRepository. Otherwise falls back to better-sqlite3 via
53
+ * SqliteRepository.
45
54
  */
46
55
  export declare function openRepo(customDbPath?: string, opts?: {
47
56
  repo?: Repository;
@@ -49,4 +58,16 @@ export declare function openRepo(customDbPath?: string, opts?: {
49
58
  repo: Repository;
50
59
  close(): void;
51
60
  };
61
+ /**
62
+ * Open a readonly DB with an optional NativeDatabase alongside it.
63
+ *
64
+ * Returns the better-sqlite3 handle (for backwards compat) plus an optional
65
+ * NativeDatabase for modules that can use batched Rust query methods.
66
+ * Callers should use nativeDb when available and fall back to db.prepare().
67
+ */
68
+ export declare function openReadonlyWithNative(customPath?: string): {
69
+ db: BetterSqlite3Database;
70
+ nativeDb: NativeDatabase | undefined;
71
+ close(): void;
72
+ };
52
73
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAqBlD,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAK7E;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B5D;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AA4DD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAWrD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAGhD;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAmBxD;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAuCtD;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,CA8B7E;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAO,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CAgBrC"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAuClD,oDAAoD;AACpD,MAAM,MAAM,cAAc,GAAG,qBAAqB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAK7E;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B5D;AAED,gDAAgD;AAChD,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AA4DD,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAYrD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAGhD;AAKD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CASzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,CAmBxD;AAOD,uEAAuE;AACvE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,cAAc,CAAC;IACnB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED,4FAA4F;AAC5F,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAS1D;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CASlE;AAED,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAuCtD;AAED,4FAA4F;AAC5F,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAmB7E;AA2BD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CACtB,YAAY,CAAC,EAAE,MAAM,EACrB,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,UAAU,CAAA;CAAO,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,CA+BrC;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG;IAC3D,EAAE,EAAE,qBAAqB,CAAC;IAC1B,QAAQ,EAAE,cAAc,GAAG,SAAS,CAAC;IACrC,KAAK,IAAI,IAAI,CAAC;CACf,CA4BA"}
@@ -2,10 +2,12 @@ import { execFileSync } from 'node:child_process';
2
2
  import fs from 'node:fs';
3
3
  import path from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
- import Database from 'better-sqlite3';
6
5
  import { debug, warn } from '../infrastructure/logger.js';
6
+ import { getNative, isNativeAvailable } from '../infrastructure/native.js';
7
7
  import { DbError } from '../shared/errors.js';
8
+ import { getDatabase } from './better-sqlite3.js';
8
9
  import { Repository } from './repository/base.js';
10
+ import { NativeRepository } from './repository/native-repository.js';
9
11
  import { SqliteRepository } from './repository/sqlite-repository.js';
10
12
  /** Lazy-loaded package version (read once from package.json). */
11
13
  let _packageVersion;
@@ -25,6 +27,22 @@ function getPackageVersion() {
25
27
  }
26
28
  /** Warn once per process when DB version mismatches the running codegraph version. */
27
29
  let _versionWarned = false;
30
+ /** Check and warn (once) if the running codegraph version differs from the DB build version. */
31
+ function warnOnVersionMismatch(getBuildVersion) {
32
+ if (_versionWarned)
33
+ return;
34
+ _versionWarned = true;
35
+ try {
36
+ const buildVersion = getBuildVersion();
37
+ const currentVersion = getPackageVersion();
38
+ if (buildVersion && currentVersion && buildVersion !== currentVersion) {
39
+ warn(`DB was built with codegraph v${buildVersion}, running v${currentVersion}. Consider: codegraph build --no-incremental`);
40
+ }
41
+ }
42
+ catch {
43
+ // build_meta table may not exist in older DBs — silently ignore
44
+ }
45
+ }
28
46
  let _cachedRepoRoot; // undefined = not computed, null = not a git repo
29
47
  let _cachedRepoRootCwd; // cwd at the time the cache was populated
30
48
  /**
@@ -73,10 +91,6 @@ export function _resetRepoRootCache() {
73
91
  _cachedRepoRoot = undefined;
74
92
  _cachedRepoRootCwd = undefined;
75
93
  }
76
- /** Reset the version warning flag (for testing). */
77
- export function _resetVersionWarning() {
78
- _versionWarned = false;
79
- }
80
94
  function isProcessAlive(pid) {
81
95
  try {
82
96
  process.kill(pid, 0);
@@ -144,6 +158,7 @@ export function openDb(dbPath) {
144
158
  if (!fs.existsSync(dir))
145
159
  fs.mkdirSync(dir, { recursive: true });
146
160
  acquireAdvisoryLock(dbPath);
161
+ const Database = getDatabase();
147
162
  const db = new Database(dbPath);
148
163
  db.pragma('journal_mode = WAL');
149
164
  db.pragma('busy_timeout = 5000');
@@ -202,6 +217,30 @@ export function closeDbDeferred(db) {
202
217
  }
203
218
  });
204
219
  }
220
+ /** Close both handles: NativeDatabase first (fast), then better-sqlite3 (releases lock). */
221
+ export function closeDbPair(pair) {
222
+ if (pair.nativeDb) {
223
+ try {
224
+ pair.nativeDb.close();
225
+ }
226
+ catch {
227
+ /* ignore */
228
+ }
229
+ }
230
+ closeDb(pair.db);
231
+ }
232
+ /** Close NativeDatabase immediately, defer better-sqlite3 WAL checkpoint. */
233
+ export function closeDbPairDeferred(pair) {
234
+ if (pair.nativeDb) {
235
+ try {
236
+ pair.nativeDb.close();
237
+ }
238
+ catch {
239
+ /* ignore */
240
+ }
241
+ }
242
+ closeDbDeferred(pair.db);
243
+ }
205
244
  export function findDbPath(customPath) {
206
245
  if (customPath)
207
246
  return path.resolve(customPath);
@@ -254,31 +293,45 @@ export function openReadonlyOrFail(customPath) {
254
293
  if (!fs.existsSync(dbPath)) {
255
294
  throw new DbError(`No codegraph database found at ${dbPath}.\nRun "codegraph build" first to analyze your codebase.`, { file: dbPath });
256
295
  }
296
+ const Database = getDatabase();
257
297
  const db = new Database(dbPath, { readonly: true });
258
- // Warn once per process if the DB was built with a different codegraph version
259
- if (!_versionWarned) {
260
- try {
261
- const row = db
262
- .prepare('SELECT value FROM build_meta WHERE key = ?')
263
- .get('codegraph_version');
264
- const buildVersion = row?.value;
265
- const currentVersion = getPackageVersion();
266
- if (buildVersion && currentVersion && buildVersion !== currentVersion) {
267
- warn(`DB was built with codegraph v${buildVersion}, running v${currentVersion}. Consider: codegraph build --no-incremental`);
268
- }
269
- }
270
- catch {
271
- // build_meta table may not exist in older DBs — silently ignore
272
- }
273
- _versionWarned = true;
274
- }
298
+ warnOnVersionMismatch(() => {
299
+ const row = db
300
+ .prepare('SELECT value FROM build_meta WHERE key = ?')
301
+ .get('codegraph_version');
302
+ return row?.value;
303
+ });
275
304
  return db;
276
305
  }
306
+ /** Open a NativeRepository via rusqlite, throwing DbError if the DB file is missing. */
307
+ function openRepoNative(customDbPath) {
308
+ const dbPath = findDbPath(customDbPath);
309
+ if (!fs.existsSync(dbPath)) {
310
+ throw new DbError(`No codegraph database found at ${dbPath}.\nRun "codegraph build" first to analyze your codebase.`, { file: dbPath });
311
+ }
312
+ const native = getNative();
313
+ const ndb = native.NativeDatabase.openReadonly(dbPath);
314
+ try {
315
+ warnOnVersionMismatch(() => ndb.getBuildMeta('codegraph_version'));
316
+ return {
317
+ repo: new NativeRepository(ndb),
318
+ close() {
319
+ ndb.close();
320
+ },
321
+ };
322
+ }
323
+ catch (innerErr) {
324
+ ndb.close();
325
+ throw innerErr;
326
+ }
327
+ }
277
328
  /**
278
329
  * Open a Repository from either an injected instance or a DB path.
279
330
  *
280
331
  * When `opts.repo` is a Repository instance, returns it directly (no DB opened).
281
- * Otherwise opens a readonly SQLite DB and wraps it in SqliteRepository.
332
+ * When the native engine is available, opens a NativeDatabase (rusqlite) and
333
+ * wraps it in NativeRepository. Otherwise falls back to better-sqlite3 via
334
+ * SqliteRepository.
282
335
  */
283
336
  export function openRepo(customDbPath, opts = {}) {
284
337
  if (opts.repo != null) {
@@ -287,6 +340,19 @@ export function openRepo(customDbPath, opts = {}) {
287
340
  }
288
341
  return { repo: opts.repo, close() { } };
289
342
  }
343
+ // Try native rusqlite path first (Phase 6.14)
344
+ if (isNativeAvailable()) {
345
+ try {
346
+ return openRepoNative(customDbPath);
347
+ }
348
+ catch (e) {
349
+ // Re-throw user-visible errors (e.g. DB not found) — only silently
350
+ // fall back for native-engine failures (e.g. incompatible native binary).
351
+ if (e instanceof DbError)
352
+ throw e;
353
+ debug(`openRepo: native path failed, falling back to better-sqlite3: ${e.message}`);
354
+ }
355
+ }
290
356
  const db = openReadonlyOrFail(customDbPath);
291
357
  return {
292
358
  repo: new SqliteRepository(db),
@@ -295,4 +361,40 @@ export function openRepo(customDbPath, opts = {}) {
295
361
  },
296
362
  };
297
363
  }
364
+ /**
365
+ * Open a readonly DB with an optional NativeDatabase alongside it.
366
+ *
367
+ * Returns the better-sqlite3 handle (for backwards compat) plus an optional
368
+ * NativeDatabase for modules that can use batched Rust query methods.
369
+ * Callers should use nativeDb when available and fall back to db.prepare().
370
+ */
371
+ export function openReadonlyWithNative(customPath) {
372
+ const db = openReadonlyOrFail(customPath);
373
+ let nativeDb;
374
+ if (isNativeAvailable()) {
375
+ try {
376
+ const dbPath = findDbPath(customPath);
377
+ const native = getNative();
378
+ nativeDb = native.NativeDatabase.openReadonly(dbPath);
379
+ }
380
+ catch (e) {
381
+ debug(`openReadonlyWithNative: native path failed: ${e.message}`);
382
+ }
383
+ }
384
+ return {
385
+ db,
386
+ nativeDb,
387
+ close() {
388
+ db.close();
389
+ if (nativeDb) {
390
+ try {
391
+ nativeDb.close();
392
+ }
393
+ catch {
394
+ // already closed or not closeable
395
+ }
396
+ }
397
+ },
398
+ };
399
+ }
298
400
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/db/connection.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export type { LockedDatabase } from './connection.js';
2
- export { closeDb, closeDbDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openRepo, } from './connection.js';
1
+ export type { LockedDatabase, LockedDatabasePair } from './connection.js';
2
+ export { closeDb, closeDbDeferred, closeDbPair, closeDbPairDeferred, findDbPath, findRepoRoot, flushDeferredClose, openDb, openReadonlyOrFail, openReadonlyWithNative, openRepo, } from './connection.js';
3
3
  export { getBuildMeta, initSchema, MIGRATIONS, setBuildMeta } from './migrations.js';
4
4
  export { fanInJoinSQL, fanOutJoinSQL, kindInClause, NodeQuery, testFilterSQL, } from './query-builder.js';
5
5
  export { bulkNodeIdsByFile, countCrossFileCallers, countEdges, countFiles, countNodes, deleteCfgForNode, findAllIncomingEdges, findAllOutgoingEdges, findCalleeNames, findCallees, findCallerNames, findCallers, findCrossFileCallTargets, findDistinctCallers, findFileNodes, findImplementors, findImportDependents, findImportSources, findImportTargets, findInterfaces, findIntraFileCallEdges, findNodeById, findNodeByQualifiedName, findNodeChildren, findNodesByFile, findNodesByScope, findNodesForTriage, findNodesWithFanIn, getCallableNodes, getCallEdges, getCfgBlocks, getCfgEdges, getClassHierarchy, getCoChangeMeta, getComplexityForNode, getEmbeddingCount, getEmbeddingMeta, getFileNodesAll, getFunctionNodeId, getImportEdges, getLineCountForNode, getMaxEndLineForFile, getNodeId, hasCfgTables, hasCoChanges, hasDataflowTable, hasEmbeddings, InMemoryRepository, iterateFunctionNodes, listFunctionNodes, purgeFileData, purgeFilesData, Repository, SqliteRepository, upsertCoChangeMeta, } from './repository/index.js';