@optave/codegraph 3.13.0 → 3.15.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 (458) hide show
  1. package/README.md +35 -34
  2. package/dist/ast-analysis/engine.d.ts.map +1 -1
  3. package/dist/ast-analysis/engine.js +38 -40
  4. package/dist/ast-analysis/engine.js.map +1 -1
  5. package/dist/ast-analysis/rules/b2.d.ts +7 -0
  6. package/dist/ast-analysis/rules/b2.d.ts.map +1 -0
  7. package/dist/ast-analysis/rules/b2.js +240 -0
  8. package/dist/ast-analysis/rules/b2.js.map +1 -0
  9. package/dist/ast-analysis/rules/b3.d.ts +6 -0
  10. package/dist/ast-analysis/rules/b3.d.ts.map +1 -0
  11. package/dist/ast-analysis/rules/b3.js +105 -0
  12. package/dist/ast-analysis/rules/b3.js.map +1 -0
  13. package/dist/ast-analysis/rules/b4.d.ts +9 -0
  14. package/dist/ast-analysis/rules/b4.d.ts.map +1 -0
  15. package/dist/ast-analysis/rules/b4.js +361 -0
  16. package/dist/ast-analysis/rules/b4.js.map +1 -0
  17. package/dist/ast-analysis/rules/b5.d.ts +4 -0
  18. package/dist/ast-analysis/rules/b5.d.ts.map +1 -0
  19. package/dist/ast-analysis/rules/b5.js +52 -0
  20. package/dist/ast-analysis/rules/b5.js.map +1 -0
  21. package/dist/ast-analysis/rules/c.d.ts +4 -0
  22. package/dist/ast-analysis/rules/c.d.ts.map +1 -0
  23. package/dist/ast-analysis/rules/c.js +143 -0
  24. package/dist/ast-analysis/rules/c.js.map +1 -0
  25. package/dist/ast-analysis/rules/index.d.ts.map +1 -1
  26. package/dist/ast-analysis/rules/index.js +34 -0
  27. package/dist/ast-analysis/rules/index.js.map +1 -1
  28. package/dist/ast-analysis/rules/javascript.d.ts.map +1 -1
  29. package/dist/ast-analysis/rules/javascript.js +3 -0
  30. package/dist/ast-analysis/rules/javascript.js.map +1 -1
  31. package/dist/ast-analysis/shared.d.ts.map +1 -1
  32. package/dist/ast-analysis/shared.js +2 -0
  33. package/dist/ast-analysis/shared.js.map +1 -1
  34. package/dist/ast-analysis/visitor-utils.d.ts +1 -0
  35. package/dist/ast-analysis/visitor-utils.d.ts.map +1 -1
  36. package/dist/ast-analysis/visitor-utils.js +5 -0
  37. package/dist/ast-analysis/visitor-utils.js.map +1 -1
  38. package/dist/ast-analysis/visitor.d.ts.map +1 -1
  39. package/dist/ast-analysis/visitor.js +60 -47
  40. package/dist/ast-analysis/visitor.js.map +1 -1
  41. package/dist/ast-analysis/visitors/cfg-visitor.d.ts.map +1 -1
  42. package/dist/ast-analysis/visitors/cfg-visitor.js +126 -76
  43. package/dist/ast-analysis/visitors/cfg-visitor.js.map +1 -1
  44. package/dist/ast-analysis/visitors/complexity-visitor.d.ts.map +1 -1
  45. package/dist/ast-analysis/visitors/complexity-visitor.js +27 -15
  46. package/dist/ast-analysis/visitors/complexity-visitor.js.map +1 -1
  47. package/dist/ast-analysis/visitors/dataflow-visitor.d.ts.map +1 -1
  48. package/dist/ast-analysis/visitors/dataflow-visitor.js +54 -21
  49. package/dist/ast-analysis/visitors/dataflow-visitor.js.map +1 -1
  50. package/dist/cli/commands/config.d.ts.map +1 -1
  51. package/dist/cli/commands/config.js +137 -134
  52. package/dist/cli/commands/config.js.map +1 -1
  53. package/dist/cli/commands/roles.d.ts.map +1 -1
  54. package/dist/cli/commands/roles.js +6 -1
  55. package/dist/cli/commands/roles.js.map +1 -1
  56. package/dist/db/better-sqlite3.d.ts +2 -1
  57. package/dist/db/better-sqlite3.d.ts.map +1 -1
  58. package/dist/db/better-sqlite3.js.map +1 -1
  59. package/dist/db/connection.d.ts +7 -1
  60. package/dist/db/connection.d.ts.map +1 -1
  61. package/dist/db/connection.js +20 -5
  62. package/dist/db/connection.js.map +1 -1
  63. package/dist/db/index.d.ts +1 -1
  64. package/dist/db/index.d.ts.map +1 -1
  65. package/dist/db/index.js +1 -1
  66. package/dist/db/index.js.map +1 -1
  67. package/dist/db/migrations.d.ts.map +1 -1
  68. package/dist/db/migrations.js +68 -0
  69. package/dist/db/migrations.js.map +1 -1
  70. package/dist/db/repository/build-stmts.d.ts.map +1 -1
  71. package/dist/db/repository/build-stmts.js +18 -0
  72. package/dist/db/repository/build-stmts.js.map +1 -1
  73. package/dist/db/repository/dataflow.d.ts +5 -0
  74. package/dist/db/repository/dataflow.d.ts.map +1 -1
  75. package/dist/db/repository/dataflow.js +14 -0
  76. package/dist/db/repository/dataflow.js.map +1 -1
  77. package/dist/db/repository/index.d.ts +1 -1
  78. package/dist/db/repository/index.d.ts.map +1 -1
  79. package/dist/db/repository/index.js +1 -1
  80. package/dist/db/repository/index.js.map +1 -1
  81. package/dist/db/repository/native-repository.d.ts.map +1 -1
  82. package/dist/db/repository/native-repository.js +47 -34
  83. package/dist/db/repository/native-repository.js.map +1 -1
  84. package/dist/domain/analysis/context.d.ts +2 -2
  85. package/dist/domain/analysis/dependencies.d.ts +2 -2
  86. package/dist/domain/analysis/diff-impact.d.ts +2 -2
  87. package/dist/domain/analysis/fn-impact.d.ts +3 -1
  88. package/dist/domain/analysis/fn-impact.d.ts.map +1 -1
  89. package/dist/domain/analysis/fn-impact.js +4 -0
  90. package/dist/domain/analysis/fn-impact.js.map +1 -1
  91. package/dist/domain/analysis/implementations.d.ts +2 -2
  92. package/dist/domain/analysis/module-map.d.ts.map +1 -1
  93. package/dist/domain/analysis/module-map.js +32 -5
  94. package/dist/domain/analysis/module-map.js.map +1 -1
  95. package/dist/domain/analysis/roles.d.ts +7 -1
  96. package/dist/domain/analysis/roles.d.ts.map +1 -1
  97. package/dist/domain/analysis/roles.js +16 -0
  98. package/dist/domain/analysis/roles.js.map +1 -1
  99. package/dist/domain/analysis/symbol-lookup.d.ts +4 -4
  100. package/dist/domain/graph/builder/call-resolver.d.ts +17 -5
  101. package/dist/domain/graph/builder/call-resolver.d.ts.map +1 -1
  102. package/dist/domain/graph/builder/call-resolver.js +85 -220
  103. package/dist/domain/graph/builder/call-resolver.js.map +1 -1
  104. package/dist/domain/graph/builder/context.d.ts +1 -0
  105. package/dist/domain/graph/builder/context.d.ts.map +1 -1
  106. package/dist/domain/graph/builder/context.js.map +1 -1
  107. package/dist/domain/graph/builder/helpers.d.ts +16 -1
  108. package/dist/domain/graph/builder/helpers.d.ts.map +1 -1
  109. package/dist/domain/graph/builder/helpers.js +162 -72
  110. package/dist/domain/graph/builder/helpers.js.map +1 -1
  111. package/dist/domain/graph/builder/incremental.d.ts.map +1 -1
  112. package/dist/domain/graph/builder/incremental.js +166 -97
  113. package/dist/domain/graph/builder/incremental.js.map +1 -1
  114. package/dist/domain/graph/builder/pipeline.d.ts.map +1 -1
  115. package/dist/domain/graph/builder/pipeline.js +10 -4
  116. package/dist/domain/graph/builder/pipeline.js.map +1 -1
  117. package/dist/domain/graph/builder/stages/build-edges.d.ts.map +1 -1
  118. package/dist/domain/graph/builder/stages/build-edges.js +496 -250
  119. package/dist/domain/graph/builder/stages/build-edges.js.map +1 -1
  120. package/dist/domain/graph/builder/stages/collect-files.d.ts.map +1 -1
  121. package/dist/domain/graph/builder/stages/collect-files.js +10 -7
  122. package/dist/domain/graph/builder/stages/collect-files.js.map +1 -1
  123. package/dist/domain/graph/builder/stages/detect-changes.d.ts.map +1 -1
  124. package/dist/domain/graph/builder/stages/detect-changes.js +2 -1
  125. package/dist/domain/graph/builder/stages/detect-changes.js.map +1 -1
  126. package/dist/domain/graph/builder/stages/native-orchestrator.d.ts.map +1 -1
  127. package/dist/domain/graph/builder/stages/native-orchestrator.js +895 -545
  128. package/dist/domain/graph/builder/stages/native-orchestrator.js.map +1 -1
  129. package/dist/domain/graph/resolver/points-to.d.ts.map +1 -1
  130. package/dist/domain/graph/resolver/points-to.js +105 -57
  131. package/dist/domain/graph/resolver/points-to.js.map +1 -1
  132. package/dist/domain/graph/resolver/strategy.d.ts +61 -0
  133. package/dist/domain/graph/resolver/strategy.d.ts.map +1 -0
  134. package/dist/domain/graph/resolver/strategy.js +222 -0
  135. package/dist/domain/graph/resolver/strategy.js.map +1 -0
  136. package/dist/domain/graph/watcher.d.ts.map +1 -1
  137. package/dist/domain/graph/watcher.js +16 -9
  138. package/dist/domain/graph/watcher.js.map +1 -1
  139. package/dist/domain/parser.d.ts +12 -0
  140. package/dist/domain/parser.d.ts.map +1 -1
  141. package/dist/domain/parser.js +12 -2
  142. package/dist/domain/parser.js.map +1 -1
  143. package/dist/domain/queries.d.ts +1 -1
  144. package/dist/domain/queries.d.ts.map +1 -1
  145. package/dist/domain/queries.js +1 -1
  146. package/dist/domain/queries.js.map +1 -1
  147. package/dist/domain/wasm-worker-entry.js +3 -0
  148. package/dist/domain/wasm-worker-entry.js.map +1 -1
  149. package/dist/domain/wasm-worker-pool.d.ts.map +1 -1
  150. package/dist/domain/wasm-worker-pool.js +24 -5
  151. package/dist/domain/wasm-worker-pool.js.map +1 -1
  152. package/dist/domain/wasm-worker-protocol.d.ts +7 -0
  153. package/dist/domain/wasm-worker-protocol.d.ts.map +1 -1
  154. package/dist/extractors/dart.js +48 -3
  155. package/dist/extractors/dart.js.map +1 -1
  156. package/dist/extractors/groovy.js +62 -3
  157. package/dist/extractors/groovy.js.map +1 -1
  158. package/dist/extractors/helpers.d.ts +4 -2
  159. package/dist/extractors/helpers.d.ts.map +1 -1
  160. package/dist/extractors/helpers.js +5 -1
  161. package/dist/extractors/helpers.js.map +1 -1
  162. package/dist/extractors/java.js +77 -1
  163. package/dist/extractors/java.js.map +1 -1
  164. package/dist/extractors/javascript.d.ts.map +1 -1
  165. package/dist/extractors/javascript.js +549 -163
  166. package/dist/extractors/javascript.js.map +1 -1
  167. package/dist/extractors/kotlin.js +58 -3
  168. package/dist/extractors/kotlin.js.map +1 -1
  169. package/dist/extractors/objc.js +25 -2
  170. package/dist/extractors/objc.js.map +1 -1
  171. package/dist/extractors/scala.js +62 -2
  172. package/dist/extractors/scala.js.map +1 -1
  173. package/dist/extractors/swift.js +52 -3
  174. package/dist/extractors/swift.js.map +1 -1
  175. package/dist/features/audit.js +26 -23
  176. package/dist/features/audit.js.map +1 -1
  177. package/dist/features/boundaries.d.ts.map +1 -1
  178. package/dist/features/boundaries.js +12 -9
  179. package/dist/features/boundaries.js.map +1 -1
  180. package/dist/features/cfg.d.ts.map +1 -1
  181. package/dist/features/cfg.js +25 -18
  182. package/dist/features/cfg.js.map +1 -1
  183. package/dist/features/check.d.ts.map +1 -1
  184. package/dist/features/check.js +18 -5
  185. package/dist/features/check.js.map +1 -1
  186. package/dist/features/communities.d.ts +4 -2
  187. package/dist/features/communities.d.ts.map +1 -1
  188. package/dist/features/communities.js +6 -4
  189. package/dist/features/communities.js.map +1 -1
  190. package/dist/features/dataflow.d.ts +60 -0
  191. package/dist/features/dataflow.d.ts.map +1 -1
  192. package/dist/features/dataflow.js +530 -6
  193. package/dist/features/dataflow.js.map +1 -1
  194. package/dist/features/manifesto.d.ts.map +1 -1
  195. package/dist/features/manifesto.js +59 -72
  196. package/dist/features/manifesto.js.map +1 -1
  197. package/dist/features/sequence.d.ts.map +1 -1
  198. package/dist/features/sequence.js +27 -22
  199. package/dist/features/sequence.js.map +1 -1
  200. package/dist/features/snapshot.d.ts.map +1 -1
  201. package/dist/features/snapshot.js +36 -28
  202. package/dist/features/snapshot.js.map +1 -1
  203. package/dist/features/structure.d.ts.map +1 -1
  204. package/dist/features/structure.js +150 -62
  205. package/dist/features/structure.js.map +1 -1
  206. package/dist/features/triage.d.ts.map +1 -1
  207. package/dist/features/triage.js +18 -11
  208. package/dist/features/triage.js.map +1 -1
  209. package/dist/graph/algorithms/bfs.d.ts +1 -1
  210. package/dist/graph/algorithms/bfs.d.ts.map +1 -1
  211. package/dist/graph/algorithms/bfs.js +14 -13
  212. package/dist/graph/algorithms/bfs.js.map +1 -1
  213. package/dist/graph/algorithms/tarjan.d.ts.map +1 -1
  214. package/dist/graph/algorithms/tarjan.js +5 -0
  215. package/dist/graph/algorithms/tarjan.js.map +1 -1
  216. package/dist/graph/builders/dependency.js +28 -22
  217. package/dist/graph/builders/dependency.js.map +1 -1
  218. package/dist/graph/classifiers/roles.d.ts +10 -1
  219. package/dist/graph/classifiers/roles.d.ts.map +1 -1
  220. package/dist/graph/classifiers/roles.js +60 -6
  221. package/dist/graph/classifiers/roles.js.map +1 -1
  222. package/dist/infrastructure/config.d.ts +10 -0
  223. package/dist/infrastructure/config.d.ts.map +1 -1
  224. package/dist/infrastructure/config.js +31 -3
  225. package/dist/infrastructure/config.js.map +1 -1
  226. package/dist/infrastructure/registry.d.ts +0 -7
  227. package/dist/infrastructure/registry.d.ts.map +1 -1
  228. package/dist/infrastructure/registry.js +29 -13
  229. package/dist/infrastructure/registry.js.map +1 -1
  230. package/dist/infrastructure/update-check.d.ts.map +1 -1
  231. package/dist/infrastructure/update-check.js +49 -31
  232. package/dist/infrastructure/update-check.js.map +1 -1
  233. package/dist/mcp/server.d.ts +2 -10
  234. package/dist/mcp/server.d.ts.map +1 -1
  235. package/dist/mcp/server.js.map +1 -1
  236. package/dist/mcp/tools/ast-query.d.ts +1 -1
  237. package/dist/mcp/tools/ast-query.d.ts.map +1 -1
  238. package/dist/mcp/tools/audit.d.ts +1 -1
  239. package/dist/mcp/tools/audit.d.ts.map +1 -1
  240. package/dist/mcp/tools/batch-query.d.ts +1 -1
  241. package/dist/mcp/tools/batch-query.d.ts.map +1 -1
  242. package/dist/mcp/tools/branch-compare.d.ts +1 -1
  243. package/dist/mcp/tools/branch-compare.d.ts.map +1 -1
  244. package/dist/mcp/tools/brief.d.ts +1 -1
  245. package/dist/mcp/tools/brief.d.ts.map +1 -1
  246. package/dist/mcp/tools/cfg.d.ts +1 -1
  247. package/dist/mcp/tools/cfg.d.ts.map +1 -1
  248. package/dist/mcp/tools/check.d.ts +1 -1
  249. package/dist/mcp/tools/check.d.ts.map +1 -1
  250. package/dist/mcp/tools/co-changes.d.ts +1 -1
  251. package/dist/mcp/tools/co-changes.d.ts.map +1 -1
  252. package/dist/mcp/tools/code-owners.d.ts +1 -1
  253. package/dist/mcp/tools/code-owners.d.ts.map +1 -1
  254. package/dist/mcp/tools/communities.d.ts +1 -1
  255. package/dist/mcp/tools/communities.d.ts.map +1 -1
  256. package/dist/mcp/tools/complexity.d.ts +1 -1
  257. package/dist/mcp/tools/complexity.d.ts.map +1 -1
  258. package/dist/mcp/tools/context.d.ts +1 -1
  259. package/dist/mcp/tools/context.d.ts.map +1 -1
  260. package/dist/mcp/tools/dataflow.d.ts +1 -1
  261. package/dist/mcp/tools/dataflow.d.ts.map +1 -1
  262. package/dist/mcp/tools/diff-impact.d.ts +1 -1
  263. package/dist/mcp/tools/diff-impact.d.ts.map +1 -1
  264. package/dist/mcp/tools/execution-flow.d.ts +1 -1
  265. package/dist/mcp/tools/execution-flow.d.ts.map +1 -1
  266. package/dist/mcp/tools/export-graph.d.ts +1 -1
  267. package/dist/mcp/tools/export-graph.d.ts.map +1 -1
  268. package/dist/mcp/tools/file-deps.d.ts +1 -1
  269. package/dist/mcp/tools/file-deps.d.ts.map +1 -1
  270. package/dist/mcp/tools/file-exports.d.ts +1 -1
  271. package/dist/mcp/tools/file-exports.d.ts.map +1 -1
  272. package/dist/mcp/tools/find-cycles.d.ts +1 -1
  273. package/dist/mcp/tools/find-cycles.d.ts.map +1 -1
  274. package/dist/mcp/tools/fn-impact.d.ts +1 -1
  275. package/dist/mcp/tools/fn-impact.d.ts.map +1 -1
  276. package/dist/mcp/tools/impact-analysis.d.ts +1 -1
  277. package/dist/mcp/tools/impact-analysis.d.ts.map +1 -1
  278. package/dist/mcp/tools/implementations.d.ts +1 -1
  279. package/dist/mcp/tools/implementations.d.ts.map +1 -1
  280. package/dist/mcp/tools/index.d.ts +2 -5
  281. package/dist/mcp/tools/index.d.ts.map +1 -1
  282. package/dist/mcp/tools/index.js.map +1 -1
  283. package/dist/mcp/tools/interfaces.d.ts +1 -1
  284. package/dist/mcp/tools/interfaces.d.ts.map +1 -1
  285. package/dist/mcp/tools/list-functions.d.ts +1 -1
  286. package/dist/mcp/tools/list-functions.d.ts.map +1 -1
  287. package/dist/mcp/tools/list-repos.d.ts +1 -1
  288. package/dist/mcp/tools/list-repos.d.ts.map +1 -1
  289. package/dist/mcp/tools/module-map.d.ts +1 -1
  290. package/dist/mcp/tools/module-map.d.ts.map +1 -1
  291. package/dist/mcp/tools/node-roles.d.ts +1 -1
  292. package/dist/mcp/tools/node-roles.d.ts.map +1 -1
  293. package/dist/mcp/tools/path.d.ts +1 -1
  294. package/dist/mcp/tools/path.d.ts.map +1 -1
  295. package/dist/mcp/tools/query.d.ts +1 -1
  296. package/dist/mcp/tools/query.d.ts.map +1 -1
  297. package/dist/mcp/tools/semantic-search.d.ts +1 -1
  298. package/dist/mcp/tools/semantic-search.d.ts.map +1 -1
  299. package/dist/mcp/tools/sequence.d.ts +1 -1
  300. package/dist/mcp/tools/sequence.d.ts.map +1 -1
  301. package/dist/mcp/tools/structure.d.ts +1 -1
  302. package/dist/mcp/tools/structure.d.ts.map +1 -1
  303. package/dist/mcp/tools/symbol-children.d.ts +1 -1
  304. package/dist/mcp/tools/symbol-children.d.ts.map +1 -1
  305. package/dist/mcp/tools/triage.d.ts +1 -1
  306. package/dist/mcp/tools/triage.d.ts.map +1 -1
  307. package/dist/mcp/tools/where.d.ts +1 -1
  308. package/dist/mcp/tools/where.d.ts.map +1 -1
  309. package/dist/mcp/types.d.ts +19 -0
  310. package/dist/mcp/types.d.ts.map +1 -0
  311. package/dist/mcp/types.js +6 -0
  312. package/dist/mcp/types.js.map +1 -0
  313. package/dist/presentation/queries-cli/index.d.ts +1 -1
  314. package/dist/presentation/queries-cli/index.d.ts.map +1 -1
  315. package/dist/presentation/queries-cli/index.js +1 -1
  316. package/dist/presentation/queries-cli/index.js.map +1 -1
  317. package/dist/presentation/queries-cli/overview.d.ts +1 -0
  318. package/dist/presentation/queries-cli/overview.d.ts.map +1 -1
  319. package/dist/presentation/queries-cli/overview.js +20 -1
  320. package/dist/presentation/queries-cli/overview.js.map +1 -1
  321. package/dist/presentation/queries-cli.d.ts +1 -1
  322. package/dist/presentation/queries-cli.d.ts.map +1 -1
  323. package/dist/presentation/queries-cli.js +1 -1
  324. package/dist/presentation/queries-cli.js.map +1 -1
  325. package/dist/presentation/viewer.d.ts.map +1 -1
  326. package/dist/presentation/viewer.js +45 -32
  327. package/dist/presentation/viewer.js.map +1 -1
  328. package/dist/shared/constants.d.ts +21 -0
  329. package/dist/shared/constants.d.ts.map +1 -1
  330. package/dist/shared/constants.js +25 -0
  331. package/dist/shared/constants.js.map +1 -1
  332. package/dist/shared/normalize.d.ts.map +1 -1
  333. package/dist/shared/normalize.js +12 -22
  334. package/dist/shared/normalize.js.map +1 -1
  335. package/dist/shared/paginate.d.ts +4 -17
  336. package/dist/shared/paginate.d.ts.map +1 -1
  337. package/dist/shared/paginate.js.map +1 -1
  338. package/dist/types.d.ts +76 -1
  339. package/dist/types.d.ts.map +1 -1
  340. package/grammars/tree-sitter-erlang.wasm +0 -0
  341. package/package.json +7 -7
  342. package/src/ast-analysis/engine.ts +43 -63
  343. package/src/ast-analysis/rules/b2.ts +263 -0
  344. package/src/ast-analysis/rules/b3.ts +127 -0
  345. package/src/ast-analysis/rules/b4.ts +378 -0
  346. package/src/ast-analysis/rules/b5.ts +65 -0
  347. package/src/ast-analysis/rules/c.ts +157 -0
  348. package/src/ast-analysis/rules/index.ts +34 -0
  349. package/src/ast-analysis/rules/javascript.ts +3 -0
  350. package/src/ast-analysis/shared.ts +2 -0
  351. package/src/ast-analysis/visitor-utils.ts +5 -0
  352. package/src/ast-analysis/visitor.ts +82 -52
  353. package/src/ast-analysis/visitors/cfg-visitor.ts +198 -84
  354. package/src/ast-analysis/visitors/complexity-visitor.ts +44 -16
  355. package/src/ast-analysis/visitors/dataflow-visitor.ts +68 -29
  356. package/src/cli/commands/config.ts +184 -184
  357. package/src/cli/commands/roles.ts +6 -1
  358. package/src/db/better-sqlite3.ts +5 -4
  359. package/src/db/connection.ts +23 -5
  360. package/src/db/index.ts +1 -0
  361. package/src/db/migrations.ts +68 -0
  362. package/src/db/repository/build-stmts.ts +30 -0
  363. package/src/db/repository/dataflow.ts +16 -0
  364. package/src/db/repository/index.ts +1 -1
  365. package/src/db/repository/native-repository.ts +56 -40
  366. package/src/domain/analysis/fn-impact.ts +4 -0
  367. package/src/domain/analysis/module-map.ts +38 -6
  368. package/src/domain/analysis/roles.ts +23 -0
  369. package/src/domain/graph/builder/call-resolver.ts +112 -232
  370. package/src/domain/graph/builder/context.ts +1 -0
  371. package/src/domain/graph/builder/helpers.ts +190 -72
  372. package/src/domain/graph/builder/incremental.ts +249 -120
  373. package/src/domain/graph/builder/pipeline.ts +11 -5
  374. package/src/domain/graph/builder/stages/build-edges.ts +696 -296
  375. package/src/domain/graph/builder/stages/collect-files.ts +12 -6
  376. package/src/domain/graph/builder/stages/detect-changes.ts +3 -1
  377. package/src/domain/graph/builder/stages/native-orchestrator.ts +1102 -590
  378. package/src/domain/graph/resolver/points-to.ts +182 -59
  379. package/src/domain/graph/resolver/strategy.ts +265 -0
  380. package/src/domain/graph/watcher.ts +19 -9
  381. package/src/domain/parser.ts +12 -2
  382. package/src/domain/queries.ts +1 -1
  383. package/src/domain/wasm-worker-entry.ts +3 -0
  384. package/src/domain/wasm-worker-pool.ts +28 -4
  385. package/src/domain/wasm-worker-protocol.ts +4 -0
  386. package/src/extractors/dart.ts +48 -3
  387. package/src/extractors/groovy.ts +62 -2
  388. package/src/extractors/helpers.ts +5 -2
  389. package/src/extractors/java.ts +80 -1
  390. package/src/extractors/javascript.ts +566 -161
  391. package/src/extractors/kotlin.ts +57 -3
  392. package/src/extractors/objc.ts +25 -1
  393. package/src/extractors/scala.ts +63 -1
  394. package/src/extractors/swift.ts +46 -3
  395. package/src/features/audit.ts +43 -34
  396. package/src/features/boundaries.ts +17 -9
  397. package/src/features/cfg.ts +31 -22
  398. package/src/features/check.ts +21 -5
  399. package/src/features/communities.ts +28 -19
  400. package/src/features/dataflow.ts +755 -6
  401. package/src/features/manifesto.ts +76 -75
  402. package/src/features/sequence.ts +29 -23
  403. package/src/features/snapshot.ts +36 -25
  404. package/src/features/structure.ts +185 -55
  405. package/src/features/triage.ts +28 -15
  406. package/src/graph/algorithms/bfs.ts +13 -12
  407. package/src/graph/algorithms/tarjan.ts +5 -0
  408. package/src/graph/builders/dependency.ts +35 -23
  409. package/src/graph/classifiers/roles.ts +74 -7
  410. package/src/infrastructure/config.ts +32 -3
  411. package/src/infrastructure/registry.ts +44 -20
  412. package/src/infrastructure/update-check.ts +55 -33
  413. package/src/mcp/server.ts +2 -8
  414. package/src/mcp/tools/ast-query.ts +1 -1
  415. package/src/mcp/tools/audit.ts +1 -1
  416. package/src/mcp/tools/batch-query.ts +1 -1
  417. package/src/mcp/tools/branch-compare.ts +1 -1
  418. package/src/mcp/tools/brief.ts +1 -1
  419. package/src/mcp/tools/cfg.ts +1 -1
  420. package/src/mcp/tools/check.ts +1 -1
  421. package/src/mcp/tools/co-changes.ts +1 -1
  422. package/src/mcp/tools/code-owners.ts +1 -1
  423. package/src/mcp/tools/communities.ts +1 -1
  424. package/src/mcp/tools/complexity.ts +1 -1
  425. package/src/mcp/tools/context.ts +1 -1
  426. package/src/mcp/tools/dataflow.ts +1 -1
  427. package/src/mcp/tools/diff-impact.ts +1 -1
  428. package/src/mcp/tools/execution-flow.ts +1 -1
  429. package/src/mcp/tools/export-graph.ts +1 -1
  430. package/src/mcp/tools/file-deps.ts +1 -1
  431. package/src/mcp/tools/file-exports.ts +1 -1
  432. package/src/mcp/tools/find-cycles.ts +1 -1
  433. package/src/mcp/tools/fn-impact.ts +1 -1
  434. package/src/mcp/tools/impact-analysis.ts +1 -1
  435. package/src/mcp/tools/implementations.ts +1 -1
  436. package/src/mcp/tools/index.ts +2 -5
  437. package/src/mcp/tools/interfaces.ts +1 -1
  438. package/src/mcp/tools/list-functions.ts +1 -1
  439. package/src/mcp/tools/list-repos.ts +1 -1
  440. package/src/mcp/tools/module-map.ts +1 -1
  441. package/src/mcp/tools/node-roles.ts +1 -1
  442. package/src/mcp/tools/path.ts +1 -1
  443. package/src/mcp/tools/query.ts +1 -1
  444. package/src/mcp/tools/semantic-search.ts +1 -1
  445. package/src/mcp/tools/sequence.ts +1 -1
  446. package/src/mcp/tools/structure.ts +1 -1
  447. package/src/mcp/tools/symbol-children.ts +1 -1
  448. package/src/mcp/tools/triage.ts +1 -1
  449. package/src/mcp/tools/where.ts +1 -1
  450. package/src/mcp/types.ts +21 -0
  451. package/src/presentation/queries-cli/index.ts +1 -1
  452. package/src/presentation/queries-cli/overview.ts +35 -1
  453. package/src/presentation/queries-cli.ts +1 -0
  454. package/src/presentation/viewer.ts +98 -87
  455. package/src/shared/constants.ts +26 -0
  456. package/src/shared/normalize.ts +13 -22
  457. package/src/shared/paginate.ts +4 -18
  458. package/src/types.ts +86 -1
@@ -0,0 +1,240 @@
1
+ import { makeDataflowRules } from '../shared.js';
2
+ // ─── Kotlin ───────────────────────────────────────────────────────────────────
3
+ //
4
+ // Kotlin function_declaration wraps params in `function_value_parameters`.
5
+ // The name is a `simple_identifier` direct child (found via findChild in extractor).
6
+ // call_expression: first child is simple_identifier OR navigation_expression (method call).
7
+ // navigation_expression: acts as member access for `obj.method()`.
8
+ // Field names for call function/args are NOT standard named fields in tree-sitter-kotlin,
9
+ // so we leave callFunctionField/callArgsField at defaults — childForFieldName returns null
10
+ // gracefully and the analysis falls back to skipping arg tracking.
11
+ function getKotlinParamListNode(funcNode) {
12
+ for (const child of funcNode.namedChildren) {
13
+ if (child.type === 'function_value_parameters')
14
+ return child;
15
+ }
16
+ return null;
17
+ }
18
+ function extractKotlinParamName(node) {
19
+ if (node.type !== 'parameter')
20
+ return null;
21
+ const nameNode = node.childForFieldName('name');
22
+ if (nameNode)
23
+ return [nameNode.text];
24
+ // Fallback: find simple_identifier among named children
25
+ for (const child of node.namedChildren) {
26
+ if (child.type === 'simple_identifier')
27
+ return [child.text];
28
+ }
29
+ return null;
30
+ }
31
+ export const dataflowKotlin = makeDataflowRules({
32
+ functionNodes: new Set(['function_declaration']),
33
+ nameField: 'name',
34
+ getParamListNode: getKotlinParamListNode,
35
+ paramWrapperTypes: new Set(['parameter']),
36
+ extractParamName: extractKotlinParamName,
37
+ returnNode: 'return_statement',
38
+ callNode: 'call_expression',
39
+ // tree-sitter-kotlin does not expose standard named fields for call function/args;
40
+ // defaults ('function'/'arguments') will return null gracefully.
41
+ memberNode: 'navigation_expression',
42
+ // Field names for navigation_expression object/property also lack standard names;
43
+ // defaults will return null gracefully.
44
+ });
45
+ // ─── Swift ────────────────────────────────────────────────────────────────────
46
+ //
47
+ // Swift function_declaration: name is `simple_identifier`, params in child node.
48
+ // The extractor uses findChild(node, 'simple_identifier') for the function name.
49
+ // Swift's tree-sitter grammar wraps params in a `parameter` or `parameters` node.
50
+ // call_expression: first child is simple_identifier or navigation_expression.
51
+ // navigation_expression: obj.method() — last child is navigation_suffix > simple_identifier.
52
+ function getSwiftParamListNode(funcNode) {
53
+ // Look for parameter_clause or parameters as a direct child
54
+ for (let i = 0; i < funcNode.childCount; i++) {
55
+ const child = funcNode.child(i);
56
+ if (!child)
57
+ continue;
58
+ if (child.type === 'parameter_clause' || child.type === 'parameters')
59
+ return child;
60
+ }
61
+ return null;
62
+ }
63
+ function extractSwiftParamName(node) {
64
+ if (node.type === 'parameter') {
65
+ // Swift parameters have internal label + external label; use internal name
66
+ // The `name` field in tree-sitter-swift is the internal parameter name
67
+ const nameNode = node.childForFieldName('name') ?? node.childForFieldName('internal_name');
68
+ if (nameNode)
69
+ return [nameNode.text];
70
+ // Fallback: find simple_identifier
71
+ for (const child of node.namedChildren) {
72
+ if (child.type === 'simple_identifier')
73
+ return [child.text];
74
+ }
75
+ }
76
+ return null;
77
+ }
78
+ export const dataflowSwift = makeDataflowRules({
79
+ functionNodes: new Set(['function_declaration']),
80
+ nameField: 'name',
81
+ getParamListNode: getSwiftParamListNode,
82
+ paramWrapperTypes: new Set(['parameter']),
83
+ extractParamName: extractSwiftParamName,
84
+ returnNode: 'return_statement',
85
+ callNode: 'call_expression',
86
+ // tree-sitter-swift call_expression: function is first child, args follow.
87
+ // No standard named fields — leave defaults to return null gracefully.
88
+ memberNode: 'navigation_expression',
89
+ // navigation_expression field names are non-standard in tree-sitter-swift.
90
+ });
91
+ // ─── Scala ────────────────────────────────────────────────────────────────────
92
+ //
93
+ // Scala function_definition: `node.childForFieldName('name')` for the name (confirmed
94
+ // in extractor). Parameters are via findChild(funcNode, 'parameters') (no named field).
95
+ // call_expression: `childForFieldName('function')` confirmed in extractor line 146.
96
+ // field_expression: `childForFieldName('value')` = object, `childForFieldName('field')` = property.
97
+ // val_definition / var_definition: `childForFieldName('pattern')` = name side.
98
+ function getScalaParamListNode(funcNode) {
99
+ // Scala parameters list is a direct child; extractor uses findChild(funcNode, 'parameters')
100
+ for (let i = 0; i < funcNode.childCount; i++) {
101
+ const child = funcNode.child(i);
102
+ if (child?.type === 'parameters')
103
+ return child;
104
+ }
105
+ return null;
106
+ }
107
+ function extractScalaParamName(node) {
108
+ if (node.type !== 'parameter')
109
+ return null;
110
+ // Extractor uses findChild(param, 'identifier')
111
+ for (const child of node.namedChildren) {
112
+ if (child.type === 'identifier')
113
+ return [child.text];
114
+ }
115
+ return null;
116
+ }
117
+ export const dataflowScala = makeDataflowRules({
118
+ functionNodes: new Set(['function_definition']),
119
+ nameField: 'name',
120
+ getParamListNode: getScalaParamListNode,
121
+ paramWrapperTypes: new Set(['parameter']),
122
+ extractParamName: extractScalaParamName,
123
+ returnNode: 'return_expression',
124
+ varDeclaratorNodes: new Set(['val_definition', 'var_definition']),
125
+ varNameField: 'pattern',
126
+ callNode: 'call_expression',
127
+ callFunctionField: 'function',
128
+ callArgsField: 'arguments',
129
+ memberNode: 'field_expression',
130
+ memberObjectField: 'value',
131
+ memberPropertyField: 'field',
132
+ });
133
+ // ─── Dart ─────────────────────────────────────────────────────────────────────
134
+ //
135
+ // Dart uses `function_signature` for top-level functions and `method_signature`
136
+ // for class methods (both confirmed in extractor). The extractor uses
137
+ // `childForFieldName('name')` for the function name on both node types.
138
+ // Dart call: `selector` node with `argument_part` — the extractor uses this.
139
+ // There is no standard `call_expression` node type in tree-sitter-dart.
140
+ // We use `function_signature` as the primary function node type.
141
+ // Parameters: `childForFieldName('parameters')` on function_signature (confirmed in extractor).
142
+ function extractDartParamName(node) {
143
+ // Dart: parameter types include 'formal_parameter', 'named_formal_parameter',
144
+ // 'optional_formal_parameter', and bare 'identifier'
145
+ if (node.type === 'formal_parameter' ||
146
+ node.type === 'optional_formal_parameter' ||
147
+ node.type === 'named_formal_parameter') {
148
+ const nameNode = node.childForFieldName('name');
149
+ if (nameNode)
150
+ return [nameNode.text];
151
+ // Fallback: last identifier child is usually the name
152
+ let lastName = null;
153
+ for (const child of node.namedChildren) {
154
+ if (child.type === 'identifier')
155
+ lastName = child.text;
156
+ }
157
+ if (lastName)
158
+ return [lastName];
159
+ }
160
+ if (node.type === 'identifier')
161
+ return [node.text];
162
+ return null;
163
+ }
164
+ export const dataflowDart = makeDataflowRules({
165
+ functionNodes: new Set(['function_signature', 'method_signature']),
166
+ nameField: 'name',
167
+ paramListField: 'parameters',
168
+ paramWrapperTypes: new Set([
169
+ 'formal_parameter',
170
+ 'optional_formal_parameter',
171
+ 'named_formal_parameter',
172
+ ]),
173
+ extractParamName: extractDartParamName,
174
+ returnNode: 'return_statement',
175
+ callNode: 'call_expression',
176
+ // tree-sitter-dart does not have standard named fields for calls;
177
+ // the extractor uses `selector` nodes instead. Leave defaults.
178
+ });
179
+ // ─── Groovy ───────────────────────────────────────────────────────────────────
180
+ //
181
+ // Groovy has multiple function node types (method_definition/declaration,
182
+ // constructor_definition/declaration, function_definition/declaration).
183
+ // Params: `childForFieldName('parameters')` with fallback to findChild('formal_parameters')
184
+ // (confirmed in extractor extractGroovyParams, line 334).
185
+ // call_expression: `childForFieldName('function')` confirmed in extractor line 299.
186
+ // field_expression: `childForFieldName('argument')` = object (confirmed in extractor line 303),
187
+ // `childForFieldName('field')` = property.
188
+ function getGroovyParamListNode(funcNode) {
189
+ const byField = funcNode.childForFieldName('parameters');
190
+ if (byField)
191
+ return byField;
192
+ // Fallback: search for formal_parameters child
193
+ for (let i = 0; i < funcNode.childCount; i++) {
194
+ const child = funcNode.child(i);
195
+ if (child?.type === 'formal_parameters')
196
+ return child;
197
+ }
198
+ return null;
199
+ }
200
+ function extractGroovyParamName(node) {
201
+ if (node.type === 'formal_parameter' || node.type === 'parameter') {
202
+ const nameNode = node.childForFieldName('name');
203
+ if (nameNode)
204
+ return [nameNode.text];
205
+ // Fallback: first identifier child
206
+ for (const child of node.namedChildren) {
207
+ if (child.type === 'identifier')
208
+ return [child.text];
209
+ }
210
+ }
211
+ return null;
212
+ }
213
+ export const dataflowGroovy = makeDataflowRules({
214
+ functionNodes: new Set([
215
+ 'method_definition',
216
+ 'method_declaration',
217
+ 'constructor_definition',
218
+ 'constructor_declaration',
219
+ 'function_definition',
220
+ 'function_declaration',
221
+ ]),
222
+ nameField: 'name',
223
+ getParamListNode: getGroovyParamListNode,
224
+ paramWrapperTypes: new Set(['formal_parameter', 'parameter']),
225
+ extractParamName: extractGroovyParamName,
226
+ returnNode: 'return_statement',
227
+ varDeclaratorNode: 'variable_declarator',
228
+ callNodes: new Set([
229
+ 'call_expression',
230
+ 'function_call',
231
+ 'juxt_function_call',
232
+ 'method_invocation',
233
+ ]),
234
+ callFunctionField: 'function',
235
+ callArgsField: 'arguments',
236
+ memberNode: 'field_expression',
237
+ memberObjectField: 'argument',
238
+ memberPropertyField: 'field',
239
+ });
240
+ //# sourceMappingURL=b2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b2.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DataflowRulesConfig } from '../../types.js';
2
+ export declare const dataflowLua: DataflowRulesConfig;
3
+ export declare const dataflowR: DataflowRulesConfig;
4
+ export declare const dataflowJulia: DataflowRulesConfig;
5
+ export declare const dataflowBash: DataflowRulesConfig;
6
+ //# sourceMappingURL=b3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b3.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b3.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAa1D,eAAO,MAAM,WAAW,EAAE,mBAiBxB,CAAC;AAeH,eAAO,MAAM,SAAS,EAAE,mBA4BtB,CAAC;AAeH,eAAO,MAAM,aAAa,EAAE,mBAmB1B,CAAC;AAUH,eAAO,MAAM,YAAY,EAAE,mBASzB,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { makeDataflowRules } from '../shared.js';
2
+ // ─── Lua ──────────────────────────────────────────────────────────────────────
3
+ //
4
+ // Lua function_declaration: name via `childForFieldName('name')` (confirmed in extractor line 47).
5
+ // The name node may be `method_index_expression`, `dot_index_expression`, or `identifier`.
6
+ // Parameters: `childForFieldName('parameters')` (confirmed in extractor line 89) — returns
7
+ // a node containing `identifier` children directly (no wrapper type).
8
+ // function_call: name via `childForFieldName('name')` (confirmed in extractor line 132).
9
+ // dot_index_expression: table=`childForFieldName('table')`, field=`childForFieldName('field')`.
10
+ // method_index_expression: table=`childForFieldName('table')`, method=`childForFieldName('method')`.
11
+ export const dataflowLua = makeDataflowRules({
12
+ functionNodes: new Set(['function_declaration']),
13
+ nameField: 'name',
14
+ paramListField: 'parameters',
15
+ // Lua params are bare identifier children in the param list — no wrapper type
16
+ paramIdentifier: 'identifier',
17
+ returnNode: 'return_statement',
18
+ callNode: 'function_call',
19
+ callFunctionField: 'name',
20
+ callArgsField: 'arguments',
21
+ memberNode: 'dot_index_expression',
22
+ memberObjectField: 'table',
23
+ memberPropertyField: 'field',
24
+ });
25
+ // ─── R ────────────────────────────────────────────────────────────────────────
26
+ //
27
+ // R functions are defined as: `name <- function_definition` (binary_operator with `<-`).
28
+ // The extractor handles this as binary_operator + function_definition on the RHS.
29
+ // There is no standalone function declaration node — `function_definition` is always
30
+ // an RHS expression. The parent `binary_operator` is the true "function node".
31
+ // R does NOT have an explicit `return` statement keyword that always appears —
32
+ // `return()` is a regular function call. Set returnNode: null.
33
+ // call node: `call` (confirmed in extractor handleCall line 111).
34
+ // The call node's first child (not a named field) is the function expression.
35
+ // Parameters: findChild(funcDef, 'parameters') on function_definition (extractor line 88).
36
+ // Each parameter is a `parameter` node with `childForFieldName('name')` or identifier child.
37
+ export const dataflowR = makeDataflowRules({
38
+ // R functions are the `binary_operator` node where RHS is `function_definition`.
39
+ // We track the binary_operator as a function scope, but the param list lives
40
+ // inside the nested `function_definition` child. This is best-effort: the
41
+ // unified dataflow walker will find `binary_operator` nodes but may not locate
42
+ // the param list via the standard field walk. Most analysis benefit comes from
43
+ // variable tracking and call arg flows.
44
+ // Use function_definition directly: the walker will enter it as function scope.
45
+ functionNodes: new Set(['function_definition']),
46
+ // R function_definition has no 'name' field — the name comes from the enclosing
47
+ // binary_operator's LHS. The nameExtractor is not needed here since the
48
+ // extractor handles name resolution; the dataflow visitor just needs to find
49
+ // the function scope boundary.
50
+ nameField: 'name',
51
+ paramListField: 'parameters',
52
+ paramWrapperTypes: new Set(['parameter']),
53
+ returnNode: null, // R uses return() as a function call, not a statement
54
+ callNode: 'call',
55
+ // R `call` node has the function as its first child (not a named field).
56
+ // Leaving callFunctionField at default 'function' — childForFieldName will
57
+ // return null, and the analysis falls back to skipping the callee name.
58
+ assignmentNode: 'binary_operator',
59
+ assignLeftField: 'left',
60
+ assignRightField: 'right',
61
+ });
62
+ // ─── Julia ────────────────────────────────────────────────────────────────────
63
+ //
64
+ // Julia function_definition: extractor uses a `signature` child → `call_expression`
65
+ // to find the function name + params (complex nesting). The function node type
66
+ // is `function_definition` (confirmed in extractor line 41).
67
+ // The params are inside the signature's call_expression's argument_list.
68
+ // For dataflow purposes, we just mark function_definition as the scope boundary.
69
+ // Params are inside function_definition → signature → call_expression → argument_list.
70
+ // Since there's no direct param list field on function_definition, use getParamListNode.
71
+ // call_expression: `node.child(0)` for function name (confirmed in extractor handleCall line 387).
72
+ // Julia has explicit `return_statement` (confirmed in extractor comment: "Julia has explicit return").
73
+ // variable assignment: `assignment` node (confirmed in extractor handleAssignment line 158).
74
+ export const dataflowJulia = makeDataflowRules({
75
+ functionNodes: new Set(['function_definition']),
76
+ nameField: 'name',
77
+ // Julia params are buried deep: function_definition → signature → call_expression → argument_list.
78
+ // No direct named field on function_definition for params. Leave param extraction
79
+ // to best-effort: getParamListNode returns null (default), so params will be skipped
80
+ // gracefully. The primary value is function scope tracking and call arg flows.
81
+ paramListField: 'parameters',
82
+ returnNode: 'return_statement',
83
+ assignmentNode: 'assignment',
84
+ assignLeftField: 'left',
85
+ assignRightField: 'right',
86
+ callNode: 'call_expression',
87
+ // Julia call_expression: first child is the function (no named field 'function').
88
+ // Leave callFunctionField at default — will return null gracefully.
89
+ });
90
+ // ─── Bash ─────────────────────────────────────────────────────────────────────
91
+ //
92
+ // Bash function_definition: name via `childForFieldName('name')` (confirmed in extractor line 42).
93
+ // Bash has no typed parameters or return values.
94
+ // command: `command_name` child (extractor handleBashCommand line 55).
95
+ // No param lists, no return nodes, no variable declarators in the conventional sense.
96
+ // Minimal config — primarily useful for function scope tracking and call edges.
97
+ export const dataflowBash = makeDataflowRules({
98
+ functionNodes: new Set(['function_definition']),
99
+ nameField: 'name',
100
+ returnNode: null, // Bash has no explicit return statement node (return is a command)
101
+ callNode: 'command',
102
+ // Bash `command` node: function name is in `command_name` child (not a named field).
103
+ // Leave callFunctionField at default — will return null gracefully.
104
+ });
105
+ //# sourceMappingURL=b3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b3.js","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b3.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,iFAAiF;AACjF,EAAE;AACF,mGAAmG;AACnG,2FAA2F;AAC3F,2FAA2F;AAC3F,sEAAsE;AACtE,yFAAyF;AACzF,gGAAgG;AAChG,qGAAqG;AAErG,MAAM,CAAC,MAAM,WAAW,GAAwB,iBAAiB,CAAC;IAChE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAChD,SAAS,EAAE,MAAM;IAEjB,cAAc,EAAE,YAAY;IAC5B,8EAA8E;IAC9E,eAAe,EAAE,YAAY;IAE7B,UAAU,EAAE,kBAAkB;IAE9B,QAAQ,EAAE,eAAe;IACzB,iBAAiB,EAAE,MAAM;IACzB,aAAa,EAAE,WAAW;IAE1B,UAAU,EAAE,sBAAsB;IAClC,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;CAC7B,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,yFAAyF;AACzF,kFAAkF;AAClF,qFAAqF;AACrF,+EAA+E;AAC/E,+EAA+E;AAC/E,+DAA+D;AAC/D,kEAAkE;AAClE,8EAA8E;AAC9E,2FAA2F;AAC3F,6FAA6F;AAE7F,MAAM,CAAC,MAAM,SAAS,GAAwB,iBAAiB,CAAC;IAC9D,iFAAiF;IACjF,6EAA6E;IAC7E,0EAA0E;IAC1E,+EAA+E;IAC/E,+EAA+E;IAC/E,wCAAwC;IACxC,gFAAgF;IAChF,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,gFAAgF;IAChF,wEAAwE;IACxE,6EAA6E;IAC7E,+BAA+B;IAC/B,SAAS,EAAE,MAAM;IAEjB,cAAc,EAAE,YAAY;IAC5B,iBAAiB,EAAE,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IAEzC,UAAU,EAAE,IAAI,EAAE,sDAAsD;IAExE,QAAQ,EAAE,MAAM;IAChB,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IAExE,cAAc,EAAE,iBAAiB;IACjC,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,OAAO;CAC1B,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,oFAAoF;AACpF,+EAA+E;AAC/E,6DAA6D;AAC7D,yEAAyE;AACzE,iFAAiF;AACjF,uFAAuF;AACvF,yFAAyF;AACzF,mGAAmG;AACnG,uGAAuG;AACvG,6FAA6F;AAE7F,MAAM,CAAC,MAAM,aAAa,GAAwB,iBAAiB,CAAC;IAClE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM;IAEjB,mGAAmG;IACnG,kFAAkF;IAClF,qFAAqF;IACrF,+EAA+E;IAC/E,cAAc,EAAE,YAAY;IAE5B,UAAU,EAAE,kBAAkB;IAE9B,cAAc,EAAE,YAAY;IAC5B,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,OAAO;IAEzB,QAAQ,EAAE,iBAAiB;IAC3B,kFAAkF;IAClF,oEAAoE;CACrE,CAAC,CAAC;AAEH,iFAAiF;AACjF,EAAE;AACF,mGAAmG;AACnG,iDAAiD;AACjD,uEAAuE;AACvE,sFAAsF;AACtF,gFAAgF;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAwB,iBAAiB,CAAC;IACjE,aAAa,EAAE,IAAI,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC/C,SAAS,EAAE,MAAM;IAEjB,UAAU,EAAE,IAAI,EAAE,mEAAmE;IAErF,QAAQ,EAAE,SAAS;IACnB,qFAAqF;IACrF,oEAAoE;CACrE,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { DataflowRulesConfig } from '../../types.js';
2
+ export declare const dataflowHaskell: DataflowRulesConfig;
3
+ export declare const dataflowOCaml: DataflowRulesConfig;
4
+ export declare const dataflowFSharp: DataflowRulesConfig;
5
+ export declare const dataflowGleam: DataflowRulesConfig;
6
+ export declare const dataflowElixir: DataflowRulesConfig;
7
+ export declare const dataflowErlang: DataflowRulesConfig;
8
+ export declare const dataflowClojure: DataflowRulesConfig;
9
+ //# sourceMappingURL=b4.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"b4.d.ts","sourceRoot":"","sources":["../../../src/ast-analysis/rules/b4.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAkB,MAAM,gBAAgB,CAAC;AAoC1E,eAAO,MAAM,eAAe,EAAE,mBAa5B,CAAC;AAqCH,eAAO,MAAM,aAAa,EAAE,mBAiB1B,CAAC;AA+BH,eAAO,MAAM,cAAc,EAAE,mBAe3B,CAAC;AAuBH,eAAO,MAAM,aAAa,EAAE,mBAgB1B,CAAC;AA4CH,eAAO,MAAM,cAAc,EAAE,mBAc3B,CAAC;AA8CH,eAAO,MAAM,cAAc,EAAE,mBAW3B,CAAC;AA2DH,eAAO,MAAM,eAAe,EAAE,mBAe5B,CAAC"}