@aroman22/codegraph-vba-darwin-arm64 1.5.2 → 1.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 (335) hide show
  1. package/bin/codegraph +5 -0
  2. package/lib/dist/bin/codegraph.d.ts +1 -1
  3. package/lib/dist/bin/codegraph.d.ts.map +1 -1
  4. package/lib/dist/bin/codegraph.js +307 -81
  5. package/lib/dist/bin/codegraph.js.map +1 -1
  6. package/lib/dist/bin/command-supervision.d.ts +38 -1
  7. package/lib/dist/bin/command-supervision.d.ts.map +1 -1
  8. package/lib/dist/bin/command-supervision.js +22 -3
  9. package/lib/dist/bin/command-supervision.js.map +1 -1
  10. package/lib/dist/db/index.d.ts +84 -5
  11. package/lib/dist/db/index.d.ts.map +1 -1
  12. package/lib/dist/db/index.js +209 -12
  13. package/lib/dist/db/index.js.map +1 -1
  14. package/lib/dist/db/migrations.d.ts +1 -1
  15. package/lib/dist/db/migrations.d.ts.map +1 -1
  16. package/lib/dist/db/migrations.js +80 -3
  17. package/lib/dist/db/migrations.js.map +1 -1
  18. package/lib/dist/db/queries.d.ts +116 -4
  19. package/lib/dist/db/queries.d.ts.map +1 -1
  20. package/lib/dist/db/queries.js +294 -7
  21. package/lib/dist/db/queries.js.map +1 -1
  22. package/lib/dist/db/schema.sql +43 -1
  23. package/lib/dist/db/wal-valve.d.ts +106 -0
  24. package/lib/dist/db/wal-valve.d.ts.map +1 -0
  25. package/lib/dist/db/wal-valve.js +208 -0
  26. package/lib/dist/db/wal-valve.js.map +1 -0
  27. package/lib/dist/directory.d.ts +9 -5
  28. package/lib/dist/directory.d.ts.map +1 -1
  29. package/lib/dist/directory.js +210 -19
  30. package/lib/dist/directory.js.map +1 -1
  31. package/lib/dist/extraction/cfml-extractor.d.ts +107 -0
  32. package/lib/dist/extraction/cfml-extractor.d.ts.map +1 -0
  33. package/lib/dist/extraction/cfml-extractor.js +494 -0
  34. package/lib/dist/extraction/cfml-extractor.js.map +1 -0
  35. package/lib/dist/extraction/grammars.d.ts +25 -1
  36. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  37. package/lib/dist/extraction/grammars.js +177 -23
  38. package/lib/dist/extraction/grammars.js.map +1 -1
  39. package/lib/dist/extraction/index.d.ts +47 -2
  40. package/lib/dist/extraction/index.d.ts.map +1 -1
  41. package/lib/dist/extraction/index.js +568 -51
  42. package/lib/dist/extraction/index.js.map +1 -1
  43. package/lib/dist/extraction/languages/arkts.d.ts +3 -0
  44. package/lib/dist/extraction/languages/arkts.d.ts.map +1 -0
  45. package/lib/dist/extraction/languages/arkts.js +127 -0
  46. package/lib/dist/extraction/languages/arkts.js.map +1 -0
  47. package/lib/dist/extraction/languages/c-cpp.d.ts +98 -0
  48. package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
  49. package/lib/dist/extraction/languages/c-cpp.js +563 -1
  50. package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
  51. package/lib/dist/extraction/languages/cfquery.d.ts +12 -0
  52. package/lib/dist/extraction/languages/cfquery.d.ts.map +1 -0
  53. package/lib/dist/extraction/languages/cfquery.js +28 -0
  54. package/lib/dist/extraction/languages/cfquery.js.map +1 -0
  55. package/lib/dist/extraction/languages/cfscript.d.ts +3 -0
  56. package/lib/dist/extraction/languages/cfscript.d.ts.map +1 -0
  57. package/lib/dist/extraction/languages/cfscript.js +73 -0
  58. package/lib/dist/extraction/languages/cfscript.js.map +1 -0
  59. package/lib/dist/extraction/languages/cobol.d.ts +33 -0
  60. package/lib/dist/extraction/languages/cobol.d.ts.map +1 -0
  61. package/lib/dist/extraction/languages/cobol.js +499 -0
  62. package/lib/dist/extraction/languages/cobol.js.map +1 -0
  63. package/lib/dist/extraction/languages/erlang.d.ts +3 -0
  64. package/lib/dist/extraction/languages/erlang.d.ts.map +1 -0
  65. package/lib/dist/extraction/languages/erlang.js +350 -0
  66. package/lib/dist/extraction/languages/erlang.js.map +1 -0
  67. package/lib/dist/extraction/languages/index.d.ts.map +1 -1
  68. package/lib/dist/extraction/languages/index.js +18 -0
  69. package/lib/dist/extraction/languages/index.js.map +1 -1
  70. package/lib/dist/extraction/languages/nix.d.ts +3 -0
  71. package/lib/dist/extraction/languages/nix.d.ts.map +1 -0
  72. package/lib/dist/extraction/languages/nix.js +294 -0
  73. package/lib/dist/extraction/languages/nix.js.map +1 -0
  74. package/lib/dist/extraction/languages/solidity.d.ts +3 -0
  75. package/lib/dist/extraction/languages/solidity.d.ts.map +1 -0
  76. package/lib/dist/extraction/languages/solidity.js +293 -0
  77. package/lib/dist/extraction/languages/solidity.js.map +1 -0
  78. package/lib/dist/extraction/languages/terraform.d.ts +3 -0
  79. package/lib/dist/extraction/languages/terraform.d.ts.map +1 -0
  80. package/lib/dist/extraction/languages/terraform.js +641 -0
  81. package/lib/dist/extraction/languages/terraform.js.map +1 -0
  82. package/lib/dist/extraction/languages/vbnet.d.ts +11 -0
  83. package/lib/dist/extraction/languages/vbnet.d.ts.map +1 -0
  84. package/lib/dist/extraction/languages/vbnet.js +141 -0
  85. package/lib/dist/extraction/languages/vbnet.js.map +1 -0
  86. package/lib/dist/extraction/mybatis-extractor.d.ts +30 -10
  87. package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -1
  88. package/lib/dist/extraction/mybatis-extractor.js +140 -38
  89. package/lib/dist/extraction/mybatis-extractor.js.map +1 -1
  90. package/lib/dist/extraction/parse-pool.d.ts +28 -1
  91. package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
  92. package/lib/dist/extraction/parse-pool.js +76 -7
  93. package/lib/dist/extraction/parse-pool.js.map +1 -1
  94. package/lib/dist/extraction/parse-worker.js +11 -4
  95. package/lib/dist/extraction/parse-worker.js.map +1 -1
  96. package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
  97. package/lib/dist/extraction/tree-sitter-helpers.js +1 -0
  98. package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
  99. package/lib/dist/extraction/tree-sitter-types.d.ts +20 -1
  100. package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
  101. package/lib/dist/extraction/tree-sitter.d.ts +60 -1
  102. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  103. package/lib/dist/extraction/tree-sitter.js +905 -20
  104. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  105. package/lib/dist/extraction/vba/call-sweep.d.ts +3 -0
  106. package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -0
  107. package/lib/dist/extraction/vba/call-sweep.js +206 -0
  108. package/lib/dist/extraction/vba/call-sweep.js.map +1 -0
  109. package/lib/dist/extraction/vba/calls.d.ts +55 -0
  110. package/lib/dist/extraction/vba/calls.d.ts.map +1 -0
  111. package/lib/dist/extraction/vba/calls.js +439 -0
  112. package/lib/dist/extraction/vba/calls.js.map +1 -0
  113. package/lib/dist/extraction/vba/constants.d.ts +42 -0
  114. package/lib/dist/extraction/vba/constants.d.ts.map +1 -0
  115. package/lib/dist/extraction/vba/constants.js +112 -0
  116. package/lib/dist/extraction/vba/constants.js.map +1 -0
  117. package/lib/dist/extraction/vba/context.d.ts +175 -0
  118. package/lib/dist/extraction/vba/context.d.ts.map +1 -0
  119. package/lib/dist/extraction/vba/context.js +268 -0
  120. package/lib/dist/extraction/vba/context.js.map +1 -0
  121. package/lib/dist/extraction/vba/controls.d.ts +24 -0
  122. package/lib/dist/extraction/vba/controls.d.ts.map +1 -0
  123. package/lib/dist/extraction/vba/controls.js +89 -0
  124. package/lib/dist/extraction/vba/controls.js.map +1 -0
  125. package/lib/dist/extraction/vba/declarations.d.ts +3 -0
  126. package/lib/dist/extraction/vba/declarations.d.ts.map +1 -0
  127. package/lib/dist/extraction/vba/declarations.js +154 -0
  128. package/lib/dist/extraction/vba/declarations.js.map +1 -0
  129. package/lib/dist/extraction/vba/dims.d.ts +3 -0
  130. package/lib/dist/extraction/vba/dims.d.ts.map +1 -0
  131. package/lib/dist/extraction/vba/dims.js +186 -0
  132. package/lib/dist/extraction/vba/dims.js.map +1 -0
  133. package/lib/dist/extraction/vba/docmd.d.ts +16 -0
  134. package/lib/dist/extraction/vba/docmd.d.ts.map +1 -0
  135. package/lib/dist/extraction/vba/docmd.js +179 -0
  136. package/lib/dist/extraction/vba/docmd.js.map +1 -0
  137. package/lib/dist/extraction/vba/enums-consts.d.ts +15 -0
  138. package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -0
  139. package/lib/dist/extraction/vba/enums-consts.js +178 -0
  140. package/lib/dist/extraction/vba/enums-consts.js.map +1 -0
  141. package/lib/dist/extraction/vba/implements.d.ts +3 -0
  142. package/lib/dist/extraction/vba/implements.d.ts.map +1 -0
  143. package/lib/dist/extraction/vba/implements.js +52 -0
  144. package/lib/dist/extraction/vba/implements.js.map +1 -0
  145. package/lib/dist/extraction/vba/procedures.d.ts +3 -0
  146. package/lib/dist/extraction/vba/procedures.d.ts.map +1 -0
  147. package/lib/dist/extraction/vba/procedures.js +239 -0
  148. package/lib/dist/extraction/vba/procedures.js.map +1 -0
  149. package/lib/dist/extraction/vba/sql-wrapper.d.ts +17 -0
  150. package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -0
  151. package/lib/dist/extraction/vba/sql-wrapper.js +212 -0
  152. package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -0
  153. package/lib/dist/extraction/vba/tempvars.d.ts +10 -0
  154. package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -0
  155. package/lib/dist/extraction/vba/tempvars.js +138 -0
  156. package/lib/dist/extraction/vba/tempvars.js.map +1 -0
  157. package/lib/dist/extraction/vba/text-utils.d.ts +73 -0
  158. package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -0
  159. package/lib/dist/extraction/vba/text-utils.js +195 -0
  160. package/lib/dist/extraction/vba/text-utils.js.map +1 -0
  161. package/lib/dist/extraction/vba-extractor.d.ts +3 -951
  162. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  163. package/lib/dist/extraction/vba-extractor.js +46 -2934
  164. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  165. package/lib/dist/extraction/vba-preprocess.d.ts +1 -1
  166. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  167. package/lib/dist/extraction/vba-preprocess.js +300 -88
  168. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  169. package/lib/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
  170. package/lib/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  171. package/lib/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  172. package/lib/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  173. package/lib/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  174. package/lib/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  175. package/lib/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  176. package/lib/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
  177. package/lib/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  178. package/lib/dist/graph/traversal.d.ts.map +1 -1
  179. package/lib/dist/graph/traversal.js +76 -17
  180. package/lib/dist/graph/traversal.js.map +1 -1
  181. package/lib/dist/index.d.ts +81 -1
  182. package/lib/dist/index.d.ts.map +1 -1
  183. package/lib/dist/index.js +460 -10
  184. package/lib/dist/index.js.map +1 -1
  185. package/lib/dist/installer/index.d.ts +42 -0
  186. package/lib/dist/installer/index.d.ts.map +1 -1
  187. package/lib/dist/installer/index.js +97 -2
  188. package/lib/dist/installer/index.js.map +1 -1
  189. package/lib/dist/mcp/daemon.d.ts +35 -3
  190. package/lib/dist/mcp/daemon.d.ts.map +1 -1
  191. package/lib/dist/mcp/daemon.js +101 -9
  192. package/lib/dist/mcp/daemon.js.map +1 -1
  193. package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
  194. package/lib/dist/mcp/dynamic-boundaries.js +2 -1
  195. package/lib/dist/mcp/dynamic-boundaries.js.map +1 -1
  196. package/lib/dist/mcp/early-ppid.d.ts +26 -0
  197. package/lib/dist/mcp/early-ppid.d.ts.map +1 -0
  198. package/lib/dist/mcp/early-ppid.js +29 -0
  199. package/lib/dist/mcp/early-ppid.js.map +1 -0
  200. package/lib/dist/mcp/index.d.ts.map +1 -1
  201. package/lib/dist/mcp/index.js +29 -4
  202. package/lib/dist/mcp/index.js.map +1 -1
  203. package/lib/dist/mcp/liveness-watchdog.d.ts +18 -1
  204. package/lib/dist/mcp/liveness-watchdog.d.ts.map +1 -1
  205. package/lib/dist/mcp/liveness-watchdog.js +73 -13
  206. package/lib/dist/mcp/liveness-watchdog.js.map +1 -1
  207. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  208. package/lib/dist/mcp/proxy.js +30 -4
  209. package/lib/dist/mcp/proxy.js.map +1 -1
  210. package/lib/dist/mcp/query-pool.d.ts +14 -0
  211. package/lib/dist/mcp/query-pool.d.ts.map +1 -1
  212. package/lib/dist/mcp/query-pool.js +18 -0
  213. package/lib/dist/mcp/query-pool.js.map +1 -1
  214. package/lib/dist/mcp/session.d.ts +14 -0
  215. package/lib/dist/mcp/session.d.ts.map +1 -1
  216. package/lib/dist/mcp/session.js +28 -1
  217. package/lib/dist/mcp/session.js.map +1 -1
  218. package/lib/dist/mcp/startup-handshake.d.ts +44 -0
  219. package/lib/dist/mcp/startup-handshake.d.ts.map +1 -0
  220. package/lib/dist/mcp/startup-handshake.js +73 -0
  221. package/lib/dist/mcp/startup-handshake.js.map +1 -0
  222. package/lib/dist/mcp/tools.d.ts +22 -0
  223. package/lib/dist/mcp/tools.d.ts.map +1 -1
  224. package/lib/dist/mcp/tools.js +289 -23
  225. package/lib/dist/mcp/tools.js.map +1 -1
  226. package/lib/dist/mcp/transport.d.ts.map +1 -1
  227. package/lib/dist/mcp/transport.js +18 -0
  228. package/lib/dist/mcp/transport.js.map +1 -1
  229. package/lib/dist/project-config.d.ts +44 -0
  230. package/lib/dist/project-config.d.ts.map +1 -1
  231. package/lib/dist/project-config.js +151 -2
  232. package/lib/dist/project-config.js.map +1 -1
  233. package/lib/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
  234. package/lib/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
  235. package/lib/dist/resolution/c-fnptr-synthesizer.js +170 -146
  236. package/lib/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
  237. package/lib/dist/resolution/callback-synthesizer.d.ts +1 -1
  238. package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
  239. package/lib/dist/resolution/callback-synthesizer.js +1109 -97
  240. package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
  241. package/lib/dist/resolution/cooperative-yield.d.ts +32 -0
  242. package/lib/dist/resolution/cooperative-yield.d.ts.map +1 -0
  243. package/lib/dist/resolution/cooperative-yield.js +42 -0
  244. package/lib/dist/resolution/cooperative-yield.js.map +1 -0
  245. package/lib/dist/resolution/frameworks/cics.d.ts +20 -0
  246. package/lib/dist/resolution/frameworks/cics.d.ts.map +1 -0
  247. package/lib/dist/resolution/frameworks/cics.js +90 -0
  248. package/lib/dist/resolution/frameworks/cics.js.map +1 -0
  249. package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
  250. package/lib/dist/resolution/frameworks/index.js +6 -0
  251. package/lib/dist/resolution/frameworks/index.js.map +1 -1
  252. package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
  253. package/lib/dist/resolution/frameworks/java.js +14 -6
  254. package/lib/dist/resolution/frameworks/java.js.map +1 -1
  255. package/lib/dist/resolution/frameworks/terraform.d.ts +38 -0
  256. package/lib/dist/resolution/frameworks/terraform.d.ts.map +1 -0
  257. package/lib/dist/resolution/frameworks/terraform.js +277 -0
  258. package/lib/dist/resolution/frameworks/terraform.js.map +1 -0
  259. package/lib/dist/resolution/goframe-synthesizer.d.ts +2 -1
  260. package/lib/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
  261. package/lib/dist/resolution/goframe-synthesizer.js +8 -3
  262. package/lib/dist/resolution/goframe-synthesizer.js.map +1 -1
  263. package/lib/dist/resolution/import-resolver.d.ts +7 -0
  264. package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
  265. package/lib/dist/resolution/import-resolver.js +129 -4
  266. package/lib/dist/resolution/import-resolver.js.map +1 -1
  267. package/lib/dist/resolution/index.d.ts +64 -2
  268. package/lib/dist/resolution/index.d.ts.map +1 -1
  269. package/lib/dist/resolution/index.js +476 -58
  270. package/lib/dist/resolution/index.js.map +1 -1
  271. package/lib/dist/resolution/name-matcher.d.ts +22 -3
  272. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  273. package/lib/dist/resolution/name-matcher.js +613 -39
  274. package/lib/dist/resolution/name-matcher.js.map +1 -1
  275. package/lib/dist/resolution/strip-comments.d.ts +1 -1
  276. package/lib/dist/resolution/strip-comments.d.ts.map +1 -1
  277. package/lib/dist/resolution/strip-comments.js +49 -0
  278. package/lib/dist/resolution/strip-comments.js.map +1 -1
  279. package/lib/dist/resolution/types.d.ts +29 -0
  280. package/lib/dist/resolution/types.d.ts.map +1 -1
  281. package/lib/dist/resolution/workspace-packages.d.ts +10 -0
  282. package/lib/dist/resolution/workspace-packages.d.ts.map +1 -1
  283. package/lib/dist/resolution/workspace-packages.js +142 -4
  284. package/lib/dist/resolution/workspace-packages.js.map +1 -1
  285. package/lib/dist/search/identifier-segments.d.ts +60 -0
  286. package/lib/dist/search/identifier-segments.d.ts.map +1 -0
  287. package/lib/dist/search/identifier-segments.js +176 -0
  288. package/lib/dist/search/identifier-segments.js.map +1 -0
  289. package/lib/dist/sync/git-hooks.d.ts.map +1 -1
  290. package/lib/dist/sync/git-hooks.js +2 -0
  291. package/lib/dist/sync/git-hooks.js.map +1 -1
  292. package/lib/dist/sync/watcher.d.ts +10 -5
  293. package/lib/dist/sync/watcher.d.ts.map +1 -1
  294. package/lib/dist/sync/watcher.js +51 -14
  295. package/lib/dist/sync/watcher.js.map +1 -1
  296. package/lib/dist/sync/worktree.d.ts +9 -0
  297. package/lib/dist/sync/worktree.d.ts.map +1 -1
  298. package/lib/dist/sync/worktree.js +45 -0
  299. package/lib/dist/sync/worktree.js.map +1 -1
  300. package/lib/dist/types.d.ts +25 -2
  301. package/lib/dist/types.d.ts.map +1 -1
  302. package/lib/dist/types.js +10 -0
  303. package/lib/dist/types.js.map +1 -1
  304. package/lib/dist/upgrade/index.d.ts +32 -0
  305. package/lib/dist/upgrade/index.d.ts.map +1 -1
  306. package/lib/dist/upgrade/index.js +163 -14
  307. package/lib/dist/upgrade/index.js.map +1 -1
  308. package/lib/dist/upgrade/remove-binary.d.ts +87 -0
  309. package/lib/dist/upgrade/remove-binary.d.ts.map +1 -0
  310. package/lib/dist/upgrade/remove-binary.js +289 -0
  311. package/lib/dist/upgrade/remove-binary.js.map +1 -0
  312. package/lib/dist/upgrade/update-check.d.ts +92 -0
  313. package/lib/dist/upgrade/update-check.d.ts.map +1 -0
  314. package/lib/dist/upgrade/update-check.js +258 -0
  315. package/lib/dist/upgrade/update-check.js.map +1 -0
  316. package/lib/node_modules/.modules.yaml +1 -1
  317. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  318. package/lib/package.json +1 -1
  319. package/package.json +1 -1
  320. package/lib/dist/reasoning/config.d.ts +0 -45
  321. package/lib/dist/reasoning/config.d.ts.map +0 -1
  322. package/lib/dist/reasoning/config.js +0 -171
  323. package/lib/dist/reasoning/config.js.map +0 -1
  324. package/lib/dist/reasoning/credentials.d.ts +0 -5
  325. package/lib/dist/reasoning/credentials.d.ts.map +0 -1
  326. package/lib/dist/reasoning/credentials.js +0 -83
  327. package/lib/dist/reasoning/credentials.js.map +0 -1
  328. package/lib/dist/reasoning/login.d.ts +0 -21
  329. package/lib/dist/reasoning/login.d.ts.map +0 -1
  330. package/lib/dist/reasoning/login.js +0 -85
  331. package/lib/dist/reasoning/login.js.map +0 -1
  332. package/lib/dist/reasoning/reasoner.d.ts +0 -43
  333. package/lib/dist/reasoning/reasoner.d.ts.map +0 -1
  334. package/lib/dist/reasoning/reasoner.js +0 -308
  335. package/lib/dist/reasoning/reasoner.js.map +0 -1
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sweepEventsTypesAndDeclares = sweepEventsTypesAndDeclares;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ const text_utils_1 = require("./text-utils");
6
+ /** `[visibility] Event <Name>(...)` custom event declaration. */
7
+ const EVENT_DECL_RE = /^\s*((?:Public|Private|Friend)\s+)?Event\s+(\p{L}[\p{L}\p{N}_]*)\b/iu;
8
+ /** `[visibility] Type <Name>` user-defined type block start. */
9
+ const TYPE_START_RE = /^\s*((?:Public|Private|Friend)\s+)?Type\s+(\p{L}[\p{L}\p{N}_]*)\b/iu;
10
+ /** `End Type` user-defined type block end. */
11
+ const TYPE_END_RE = /^\s*End\s+Type\b/iu;
12
+ /** `<MemberName> As <Type>` inside a user-defined type block. */
13
+ const TYPE_MEMBER_RE = /^\s*(\p{L}[\p{L}\p{N}_]*)\s*(?:\([^)]*\))?\s+As\s+(.+?)\s*$/iu;
14
+ /** `[visibility] Declare [PtrSafe] Sub|Function <Name> Lib "dll" [Alias "x"] ...` */
15
+ const DLL_DECLARE_RE = /^\s*((?:Public|Private)\s+)?Declare\s+(PtrSafe\s+)?(Sub|Function)\s+(\p{L}[\p{L}\p{N}_]*)\s+Lib\s+"([^"]+)"(?:\s+Alias\s+"([^"]+)")?/iu;
16
+ function sweepEventsTypesAndDeclares(ctx, src) {
17
+ const lines = src.split('\n');
18
+ let count = 0;
19
+ let currentType = null;
20
+ for (let i = 0; i < lines.length; i++) {
21
+ const line = lines[i] ?? '';
22
+ const lineNum = i + 1;
23
+ if (currentType) {
24
+ if (TYPE_END_RE.test(line)) {
25
+ currentType = null;
26
+ continue;
27
+ }
28
+ const member = TYPE_MEMBER_RE.exec(line);
29
+ if (member) {
30
+ const memberName = member[1] ?? '';
31
+ const memberType = (member[2] ?? '').trim();
32
+ if (!memberName)
33
+ continue;
34
+ const memberId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'type_member', memberName, lineNum);
35
+ ctx.nodes.push({
36
+ id: memberId,
37
+ kind: 'type_member',
38
+ name: memberName,
39
+ qualifiedName: `${currentType.name}.${memberName}`,
40
+ filePath: ctx.filePath,
41
+ language: 'vba',
42
+ startLine: lineNum,
43
+ endLine: lineNum,
44
+ startColumn: 0,
45
+ endColumn: line.length,
46
+ metadata: { memberType },
47
+ updatedAt: Date.now(),
48
+ });
49
+ ctx.edges.push({
50
+ source: currentType.id,
51
+ target: memberId,
52
+ kind: 'type-member',
53
+ provenance: 'parser',
54
+ });
55
+ }
56
+ continue;
57
+ }
58
+ const eventDecl = EVENT_DECL_RE.exec(line);
59
+ if (eventDecl) {
60
+ const visibility = (0, text_utils_1.foldVisibility)(eventDecl[1] ?? '');
61
+ const name = eventDecl[2] ?? '';
62
+ if (!name)
63
+ continue;
64
+ const eventId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'event', name, lineNum);
65
+ const eventNode = {
66
+ id: eventId,
67
+ kind: 'event',
68
+ name,
69
+ signature: line.trim(),
70
+ qualifiedName: ctx.classNamePrefix ? `${ctx.classNamePrefix}.${name}` : name,
71
+ filePath: ctx.filePath,
72
+ language: 'vba',
73
+ startLine: lineNum,
74
+ endLine: lineNum,
75
+ startColumn: 0,
76
+ endColumn: line.length,
77
+ visibility,
78
+ updatedAt: Date.now(),
79
+ };
80
+ ctx.nodes.push(eventNode);
81
+ ctx.localEvents.set(name.toLowerCase(), eventNode);
82
+ ctx.pushContainsFromModule(eventId);
83
+ count++;
84
+ continue;
85
+ }
86
+ const typeStart = TYPE_START_RE.exec(line);
87
+ if (typeStart) {
88
+ const visibility = (0, text_utils_1.foldVisibility)(typeStart[1] ?? '');
89
+ const name = typeStart[2] ?? '';
90
+ if (!name)
91
+ continue;
92
+ const typeId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'type', name, lineNum);
93
+ ctx.nodes.push({
94
+ id: typeId,
95
+ kind: 'type',
96
+ name,
97
+ qualifiedName: ctx.classNamePrefix ? `${ctx.classNamePrefix}.${name}` : name,
98
+ filePath: ctx.filePath,
99
+ language: 'vba',
100
+ startLine: lineNum,
101
+ endLine: lineNum,
102
+ startColumn: 0,
103
+ endColumn: line.length,
104
+ visibility,
105
+ updatedAt: Date.now(),
106
+ });
107
+ ctx.pushContainsFromModule(typeId);
108
+ currentType = { id: typeId, name };
109
+ count++;
110
+ continue;
111
+ }
112
+ const declaration = DLL_DECLARE_RE.exec(line);
113
+ if (declaration) {
114
+ const visibility = (0, text_utils_1.foldVisibility)(declaration[1] ?? '');
115
+ const ptrSafe = !!declaration[2];
116
+ const declareKind = (declaration[3] ?? '').toLowerCase();
117
+ const name = declaration[4] ?? '';
118
+ const dll = declaration[5] ?? '';
119
+ const aliasName = declaration[6] ?? undefined;
120
+ if (!name)
121
+ continue;
122
+ const declareId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'declare', name, lineNum);
123
+ const declareNode = {
124
+ id: declareId,
125
+ kind: 'declare',
126
+ name,
127
+ qualifiedName: ctx.classNamePrefix ? `${ctx.classNamePrefix}.${name}` : name,
128
+ filePath: ctx.filePath,
129
+ language: 'vba',
130
+ startLine: lineNum,
131
+ endLine: lineNum,
132
+ startColumn: 0,
133
+ endColumn: line.length,
134
+ visibility,
135
+ metadata: {
136
+ isDeclare: true,
137
+ dll,
138
+ declareKind,
139
+ ptrSafe,
140
+ ...(aliasName ? { aliasName } : {}),
141
+ },
142
+ updatedAt: Date.now(),
143
+ };
144
+ ctx.nodes.push(declareNode);
145
+ if (!ctx.functionNodeByName.has(name)) {
146
+ ctx.functionNodeByName.set(name, declareNode);
147
+ }
148
+ ctx.pushContainsFromModule(declareId);
149
+ count++;
150
+ }
151
+ }
152
+ return count;
153
+ }
154
+ //# sourceMappingURL=declarations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declarations.js","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { VbaExtractorContext } from './context';
2
+ export declare function sweepDimsAndWithEvents(ctx: VbaExtractorContext, src: string): number;
3
+ //# sourceMappingURL=dims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dims.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAqEhD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA4HpF"}
@@ -0,0 +1,186 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sweepDimsAndWithEvents = sweepDimsAndWithEvents;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ const constants_1 = require("./constants");
6
+ /**
7
+ * Check that a line is a variable declaration and NOT a Sub/Function/
8
+ * Property/Const/WithEvents header (those have their own sweeps).
9
+ * Fix 1+3 (Issues #1,#3): replaced the old single-match DIM_QUAL_RE /
10
+ * DIM_UNQUAL_RE pair with a prefix-check + global scan that handles
11
+ * `As New <Type>`, multi-variable `Dim a As Foo, b As Bar`, and all
12
+ * visibility keywords in one pass.
13
+ * Issue #47: now also accepts `Global` (module-level typed instance) and
14
+ * `Static` (procedure-local retention modifier) so they emit the same
15
+ * `references` edge and `localVarTypeMap` registration as their `Dim`
16
+ * siblings today. The negative lookahead is unchanged: `Const` is still
17
+ * routed to `sweepEnumsAndConsts`.
18
+ */
19
+ const DIM_DECL_PREFIX_RE = /^\s*(?:Dim|Private|Public|Global|Static)\s+(?!(?:Function|Sub|Property|Const|WithEvents)\b)/i;
20
+ /**
21
+ * Globally scan all `identifier As [New] TypePart1[.TypePart2]` on a
22
+ * variable declaration line. Run with /g after confirming DIM_DECL_PREFIX_RE.
23
+ *
24
+ * Groups: (1) variable name, (2) bracketed outer type, (3) unbracketed
25
+ * outer type, (4) bracketed inner type (if qualified), (5) unbracketed
26
+ * inner type. The variable name is always bare (`Dim` cannot declare a
27
+ * bracketed variable). The TYPE position accepts BOTH bracketed names
28
+ * with spaces (e.g. `[Clase Con Espacios]`) and bare identifiers — the
29
+ * bracketed capture wins when present. Only one of (2)/(3) and one of
30
+ * (4)/(5) is ever populated per match.
31
+ * `(?:New\s+)?` consumes the VBA auto-instantiation keyword so it is
32
+ * never captured as the type name (Fix 1).
33
+ *
34
+ * Issue #54: extends the type alternative to accept `[Name With Spaces]`
35
+ * so `Dim x As [Clase Con Espacios]` emits a `references` edge to
36
+ * `Clase Con Espacios` (brackets unwrapped). The unwrap is applied in
37
+ * the sweep loop by picking the bracketed capture group when present.
38
+ */
39
+ const DIM_ALL_VARS_RE = /\b(\p{L}[\p{L}\p{N}_]*)\s+As\s+(?:New\s+)?(?:\[([^\]]+)\]|(\p{L}[\p{L}\p{N}_]*))(?:\.(?:\[([^\]]+)\]|(\p{L}[\p{L}\p{N}_]*)))?/giu;
40
+ /**
41
+ * Bare-declared variable capture for the `Dim|Private|Public|Global|Static`
42
+ * prefix. Captures (1) the variable name. Used to register bare `Dim x`
43
+ * (no `As` clause) and explicit-primitive `Dim x As Long|String|...`
44
+ * declarations into `localVarTypeMap` so the type tracking is consistent
45
+ * across all three Dim shapes:
46
+ *
47
+ * `Dim x` → outer = 'variant' (VBA default)
48
+ * `Dim x As Variant` → outer = 'variant' (PRIMITIVE_TYPES member)
49
+ * `Dim x As Long` → outer = 'long' (PRIMITIVE_TYPES member)
50
+ * `Dim x As Foo` → outer = 'foo' (project class — non-primitive)
51
+ *
52
+ * Antigravity audit Task 3: the previous `DIM_ALL_VARS_RE` only matched
53
+ * the `... As <Type>` form, so a bare `Dim x` was invisible to
54
+ * `isLocalProjectClassVar` / `scanCallSites` and `x.Method(1)` produced
55
+ * a dead-end `calls` edge to a stub named `x.Method` that no resolver
56
+ * could repoint. Registering bare Dim with `outer = 'variant'` closes
57
+ * the gate, so `scanCallSites` skips ONLY when the receiver is mapped
58
+ * as a primitive — leaving the "undeclared receiver → stub → resolver
59
+ * repoints" path intact for cross-module qualified calls like
60
+ * `modUtils.Foo(1)` (`modUtils` is not in `localVarTypeMap`).
61
+ */
62
+ const BARE_DIM_VAR_RE = /^\s*(?:Dim|Private|Public|Global|Static)\s+(\p{L}[\p{L}\p{N}_]*)\s*(?:,|$|\b)/iu;
63
+ /** `WithEvents m_X As Form_Foo` — Dim/Private/Public/Global/Static prefix is optional. */
64
+ const WITHEVENTS_RE = /^\s*(?:(?:Dim|Private|Public|Global|Static)\s+)?WithEvents\s+\p{L}[\p{L}\p{N}_]*\s+As\s+(\p{L}[\p{L}\p{N}_]*)/iu;
65
+ function sweepDimsAndWithEvents(ctx, src) {
66
+ const lines = src.split('\n');
67
+ let count = 0;
68
+ for (let i = 0; i < lines.length; i++) {
69
+ const line = lines[i] ?? '';
70
+ const lineNum = i + 1;
71
+ // Fix 1 + Fix 3 (Issues #1, #3): replace the old single-match
72
+ // DIM_QUAL_RE / DIM_UNQUAL_RE pair with a global scan that handles
73
+ // `As New <Type>`, multi-variable `Dim a As Foo, b As Bar`, and
74
+ // qualified `Dim x As Foo.Bar` in a single pass.
75
+ if (DIM_DECL_PREFIX_RE.test(line)) {
76
+ DIM_ALL_VARS_RE.lastIndex = 0;
77
+ let m;
78
+ while ((m = DIM_ALL_VARS_RE.exec(line)) !== null) {
79
+ const varName = m[1] ?? '';
80
+ // Issue #54: DIM_ALL_VARS_RE groups (2) and (3) are alternative
81
+ // captures for the same outer-type position — the bracketed
82
+ // alternative wins when present, the bare one otherwise. The
83
+ // captured value is already unwrapped (the `[...]` is consumed
84
+ // by the regex, group (2) holds the inner content). Same shape
85
+ // for the inner type at groups (4)/(5).
86
+ const outerType = m[2] ?? m[3] ?? '';
87
+ const innerType = m[4] ?? m[5] ?? '';
88
+ // Fix 2 (Issue #2): populate the local var type map so that
89
+ // `sweepCallsAndSql` can gate qualified statement-form calls.
90
+ if (varName && outerType) {
91
+ ctx.localVarTypeMap.set(varName.toLowerCase(), {
92
+ outer: outerType,
93
+ qualified: !!innerType,
94
+ });
95
+ }
96
+ if (innerType) {
97
+ // Qualified form (`Dim x As Foo.Bar`) — emit reference to the
98
+ // outer type `Foo` (same behaviour as the old DIM_QUAL_RE path).
99
+ if (outerType) {
100
+ ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
101
+ count++;
102
+ }
103
+ }
104
+ else {
105
+ // Unqualified form (`Dim x As SomeType`, `Dim x As New SomeType`)
106
+ // — emit reference only when the type is not a primitive or keyword.
107
+ if (outerType && !constants_1.PRIMITIVE_TYPES.has(outerType.toLowerCase())) {
108
+ ctx.emitReference(outerType, lineNum, 0, 'vba-name-resolution');
109
+ count++;
110
+ }
111
+ }
112
+ }
113
+ // Antigravity audit Task 3: bare `Dim x` (no `As` clause) and
114
+ // explicit-primitive `Dim x As <primitive>` declarations must
115
+ // still register `x` in `localVarTypeMap` so the qualified-call
116
+ // site scan in `scanCallSites` can gate the dead-end stub that
117
+ // no resolver could ever repoint.
118
+ //
119
+ // Captures the FIRST variable name only. Multi-variable bare
120
+ // Dim (e.g. `Dim a, b, c` without an `As` clause) is rare in
121
+ // real Dysflow fixtures and is intentionally NOT tracked here —
122
+ // those bare variables fall back to the undeclared-receiver
123
+ // path, which is the conservative choice. Skip if the typed-form
124
+ // loop already populated the entry.
125
+ const bm = BARE_DIM_VAR_RE.exec(line);
126
+ if (bm) {
127
+ const varName = bm[1] ?? '';
128
+ if (varName) {
129
+ const key = varName.toLowerCase();
130
+ if (!ctx.localVarTypeMap.has(key)) {
131
+ // Look for an `As <Type>` continuation on the same line so the
132
+ // outer type matches the existing typed-form behaviour. If
133
+ // absent, the variable is implicit `Variant` per VBA semantics.
134
+ const asRe = /\bAs\s+(\p{L}[\p{L}\p{N}_]*)/iu;
135
+ const asMatch = asRe.exec(line);
136
+ const outer = asMatch ? (asMatch[1] ?? '').toLowerCase() : 'variant';
137
+ ctx.localVarTypeMap.set(key, {
138
+ outer,
139
+ qualified: false,
140
+ });
141
+ }
142
+ }
143
+ }
144
+ }
145
+ // WithEvents declarations — handled by their own regex; also populate
146
+ // the local var type map for completeness.
147
+ const weMatch = WITHEVENTS_RE.exec(line);
148
+ if (weMatch) {
149
+ const formType = weMatch[1] ?? '';
150
+ if (formType) {
151
+ // Extract the variable name from the WithEvents line for the map.
152
+ const weVarM = /^\s*(?:(?:Dim|Private|Public|Global|Static)\s+)?WithEvents\s+(\p{L}[\p{L}\p{N}_]*)/iu.exec(line);
153
+ const weVarName = weVarM?.[1] ?? '';
154
+ if (weVarName) {
155
+ ctx.localVarTypeMap.set(weVarName.toLowerCase(), {
156
+ outer: formType,
157
+ qualified: false,
158
+ withEvents: true,
159
+ variableName: weVarName,
160
+ });
161
+ }
162
+ ctx.emitReference(formType, lineNum, 0, 'vba-withevents');
163
+ const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'class', formType, 0);
164
+ const subscriberEdge = {
165
+ source: ctx.moduleOrClassNode?.id ?? '',
166
+ target: targetId,
167
+ kind: 'subscribes-event',
168
+ provenance: 'heuristic',
169
+ metadata: {
170
+ synthesizedBy: 'vba-withevents',
171
+ variableName: weVarName || undefined,
172
+ },
173
+ line: lineNum,
174
+ column: 0,
175
+ };
176
+ ctx.edges.push(subscriberEdge);
177
+ if (!ctx.moduleOrClassNode) {
178
+ ctx.pendingModuleOrClassSource.push(subscriberEdge);
179
+ }
180
+ count++;
181
+ }
182
+ }
183
+ }
184
+ return count;
185
+ }
186
+ //# sourceMappingURL=dims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dims.js","sourceRoot":"","sources":["../../../src/extraction/vba/dims.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { VbaExtractorContext, ProcInfo } from './context';
2
+ /**
3
+ * B4 (hueco 6) extended by Issue #48: scan one line of VBA source for
4
+ * `DoCmd.OpenX "Target"` calls where X ∈ {Form, Report}. For each match emit
5
+ * a cached stub node (form-layout / report-layout) and an
6
+ * `opens-form` / `opens-report` heuristic edge from the calling Sub.
7
+ */
8
+ export declare function scanDoCmdOpenCalls(ctx: VbaExtractorContext, line: string, caller: ProcInfo, lineNum: number): void;
9
+ /**
10
+ * Issue #48: scan one line of VBA source for `DoCmd.OpenQuery "X"` calls.
11
+ * Each match emits ONE `UnresolvedReference` (NOT a stub + edge) so the
12
+ * resolver binds to the REAL `query` node that `SqlQueryExtractor`
13
+ * produces for `queries/<Name>.sql`, tagged `synthesizedBy: 'vba-opens-query'`.
14
+ */
15
+ export declare function scanDoCmdOpenQuery(ctx: VbaExtractorContext, line: string, caller: ProcInfo, lineNum: number): void;
16
+ //# sourceMappingURL=docmd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docmd.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/docmd.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AA2E1D;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAoBN;AAmED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAsBN"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scanDoCmdOpenCalls = scanDoCmdOpenCalls;
4
+ exports.scanDoCmdOpenQuery = scanDoCmdOpenQuery;
5
+ /**
6
+ * `DoCmd.OpenForm` / `DoCmd.OpenReport` / `DoCmd.OpenQuery` modelling
7
+ * (hueco 6 / issues #48, #52). OpenForm/OpenReport emit a synthetic
8
+ * form-layout/report-layout stub + `opens-form`/`opens-report` edge; OpenQuery
9
+ * emits an `UnresolvedReference` the resolver binds to the real `query` node.
10
+ *
11
+ * `DoCmd` is in `RUNTIME_RECEIVER_BLACKLIST`, so these methods are skipped by
12
+ * the generic call-site scan and handled here with their own emission path.
13
+ */
14
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
15
+ const text_utils_1 = require("./text-utils");
16
+ /**
17
+ * `DoCmd.OpenForm "<FormName>"` modelling regex — B4 (hueco 6). Captures the
18
+ * first argument (group 1) as either a `"literal"` or a bare identifier; the
19
+ * trailing positional args (`acNormal`, `acFormEdit`, …) are NOT captured.
20
+ */
21
+ const OPEN_FORM_ARG_RE = /\bDoCmd\.OpenForm\s+("(?:(?:[^"]|"")*)"|\p{L}[\p{L}\p{N}_]*)/gu;
22
+ /**
23
+ * Issue #48: `DoCmd.OpenReport "<ReportName>"` modelling regex — sibling
24
+ * of `OPEN_FORM_ARG_RE`. Same literal-or-bare-id argument capture and same
25
+ * trailing positional-args drop.
26
+ */
27
+ const OPEN_REPORT_ARG_RE = /\bDoCmd\.OpenReport\s+("(?:(?:[^"]|"")*)"|\p{L}[\p{L}\p{N}_]*)/gu;
28
+ /**
29
+ * Issue #48: `DoCmd.OpenQuery "<QueryName>"` modelling regex. Emits an
30
+ * `UnresolvedReference` (NOT a stub + edge) so the resolver binds to the
31
+ * REAL `query` node `SqlQueryExtractor` emits for `queries/<Name>.sql`.
32
+ */
33
+ const OPEN_QUERY_ARG_RE = /\bDoCmd\.OpenQuery\s+("(?:(?:[^"]|"")*)"|\p{L}[\p{L}\p{N}_]*)/gu;
34
+ /**
35
+ * Issue #48 dispatch table — shared literal-or-Const argument resolution
36
+ * for `DoCmd.OpenForm` and `DoCmd.OpenReport`. Each entry carries everything
37
+ * `scanDoCmdOpenCalls` + `emitOpensStubEdge` need to share the pipeline
38
+ * between methods while keeping the per-method names distinct.
39
+ *
40
+ * OpenQuery is intentionally NOT in this dispatch — it emits an
41
+ * `UnresolvedReference` (not a stub + edge). See `scanDoCmdOpenQuery`.
42
+ */
43
+ const DOCMD_OPEN_DISPATCH = [
44
+ {
45
+ method: 'OpenForm',
46
+ re: OPEN_FORM_ARG_RE,
47
+ edgeKind: 'opens-form',
48
+ stubKind: 'form-layout',
49
+ syntheticPrefix: 'synthetic:opensFormStub',
50
+ syntheticExtension: '.form.txt',
51
+ moduleNamePrefix: 'Form_',
52
+ cacheKey: 'OpenForm',
53
+ metadataTargetKey: 'targetFormName',
54
+ synthesizedBy: 'vba-opens-form',
55
+ },
56
+ {
57
+ method: 'OpenReport',
58
+ re: OPEN_REPORT_ARG_RE,
59
+ edgeKind: 'opens-report',
60
+ stubKind: 'report-layout',
61
+ syntheticPrefix: 'synthetic:opensReportStub',
62
+ syntheticExtension: '.report.txt',
63
+ moduleNamePrefix: 'Report_',
64
+ cacheKey: 'OpenReport',
65
+ metadataTargetKey: 'targetReportName',
66
+ synthesizedBy: 'vba-opens-report',
67
+ },
68
+ ];
69
+ /**
70
+ * B4 (hueco 6) extended by Issue #48: scan one line of VBA source for
71
+ * `DoCmd.OpenX "Target"` calls where X ∈ {Form, Report}. For each match emit
72
+ * a cached stub node (form-layout / report-layout) and an
73
+ * `opens-form` / `opens-report` heuristic edge from the calling Sub.
74
+ */
75
+ function scanDoCmdOpenCalls(ctx, line, caller, lineNum) {
76
+ for (const dispatch of DOCMD_OPEN_DISPATCH) {
77
+ // Each regex has /g so we MUST reset `lastIndex` before use; cloning
78
+ // the regex is the simplest way to avoid leaking state across lines
79
+ // AND across dispatch iterations.
80
+ const localRe = new RegExp(dispatch.re.source, dispatch.re.flags);
81
+ let m;
82
+ while ((m = localRe.exec(line)) !== null) {
83
+ const rawArg = (m[1] ?? '').trim();
84
+ // Issue #52: const lookup is now per-proc-bucket with module
85
+ // fallback (see `resolveLocalConst`). Two procs declaring the
86
+ // same Const name with different values no longer collide —
87
+ // each call site uses the value visible at its own scope.
88
+ const targetName = rawArg.startsWith('"')
89
+ ? (0, text_utils_1.unwrapVbaStringLiteral)(rawArg)
90
+ : (ctx.resolveLocalConst(rawArg) ?? rawArg);
91
+ if (!targetName)
92
+ continue;
93
+ emitOpensStubEdge(ctx, dispatch, caller, targetName, lineNum, m.index);
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * B4 (hueco 6) extended by Issue #48: emit a stub `form-layout` /
99
+ * `report-layout` node for `targetName` (cached per dispatch entry so
100
+ * duplicates collapse and OpenForm/OpenReport de-dup buckets stay
101
+ * disjoint) and a single `opens-form` / `opens-report` heuristic edge
102
+ * from `caller` to that stub.
103
+ */
104
+ function emitOpensStubEdge(ctx, dispatch, caller, targetName, lineNum, column) {
105
+ const key = `${dispatch.cacheKey}:${targetName.toLowerCase()}`;
106
+ let stubId = ctx.opensStubIdsByKey.get(key);
107
+ if (!stubId) {
108
+ // Synthetic file path keeps the stub's id deterministic AND
109
+ // disambiguates it from any real `.form.txt` / `.report.txt`
110
+ // indexed later. The directory prefix is intentionally not a real
111
+ // filesystem path — it just namespaces the id space. The file
112
+ // extension DOES mirror the real form/report file extension so a
113
+ // reader of the synthetic path can tell the stub's intent at a glance.
114
+ const syntheticFilePath = `${dispatch.syntheticPrefix}/${targetName}${dispatch.syntheticExtension}`;
115
+ stubId = (0, tree_sitter_helpers_1.generateNodeId)(syntheticFilePath, dispatch.stubKind, targetName, 0);
116
+ ctx.opensStubIdsByKey.set(key, stubId);
117
+ ctx.nodes.push({
118
+ id: stubId,
119
+ kind: dispatch.stubKind,
120
+ name: targetName,
121
+ // Convention: form module names in Access are `Form_<Name>` and
122
+ // report module names are `Report_<Name>`. We follow the same
123
+ // convention in the synthetic stub's qualifiedName so cross-file
124
+ // lookups can find it consistently.
125
+ qualifiedName: `${dispatch.moduleNamePrefix}${targetName}`,
126
+ filePath: syntheticFilePath,
127
+ language: 'vba',
128
+ startLine: lineNum,
129
+ endLine: lineNum,
130
+ startColumn: 0,
131
+ endColumn: 0,
132
+ metadata: { stub: true },
133
+ updatedAt: Date.now(),
134
+ });
135
+ }
136
+ ctx.edges.push({
137
+ source: ctx.findOrCreateFunctionNodeId(caller),
138
+ target: stubId,
139
+ kind: dispatch.edgeKind,
140
+ provenance: 'heuristic',
141
+ metadata: {
142
+ synthesizedBy: dispatch.synthesizedBy,
143
+ [dispatch.metadataTargetKey]: targetName,
144
+ },
145
+ line: lineNum,
146
+ column,
147
+ });
148
+ }
149
+ /**
150
+ * Issue #48: scan one line of VBA source for `DoCmd.OpenQuery "X"` calls.
151
+ * Each match emits ONE `UnresolvedReference` (NOT a stub + edge) so the
152
+ * resolver binds to the REAL `query` node that `SqlQueryExtractor`
153
+ * produces for `queries/<Name>.sql`, tagged `synthesizedBy: 'vba-opens-query'`.
154
+ */
155
+ function scanDoCmdOpenQuery(ctx, line, caller, lineNum) {
156
+ const localRe = new RegExp(OPEN_QUERY_ARG_RE.source, OPEN_QUERY_ARG_RE.flags);
157
+ let m;
158
+ while ((m = localRe.exec(line)) !== null) {
159
+ const rawArg = (m[1] ?? '').trim();
160
+ // Issue #52: same per-proc-with-module-fallback lookup as
161
+ // `scanDoCmdOpenCalls`.
162
+ const targetName = rawArg.startsWith('"')
163
+ ? (0, text_utils_1.unwrapVbaStringLiteral)(rawArg)
164
+ : (ctx.resolveLocalConst(rawArg) ?? rawArg);
165
+ if (!targetName)
166
+ continue;
167
+ ctx.unresolvedReferences.push({
168
+ fromNodeId: ctx.findOrCreateFunctionNodeId(caller),
169
+ referenceName: targetName,
170
+ referenceKind: 'references',
171
+ line: lineNum,
172
+ column: m.index,
173
+ filePath: ctx.filePath,
174
+ language: 'vba',
175
+ metadata: { synthesizedBy: 'vba-opens-query' },
176
+ });
177
+ }
178
+ }
179
+ //# sourceMappingURL=docmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docmd.js","sourceRoot":"","sources":["../../../src/extraction/vba/docmd.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { VbaExtractorContext } from './context';
2
+ /**
3
+ * Walk the (uncommented, line-joined) source and emit:
4
+ * - one `enum` node per `Enum <Name>` block, with one `enum_member` node
5
+ * per member and a `contains` edge enum→member;
6
+ * - one `constant` node per name declared on a `Const` line (multi-name
7
+ * lines emit one node per name);
8
+ * - a `contains` edge from the module/class node to each enum and constant
9
+ * (held in `pendingModuleOrClassSource` until the module node exists).
10
+ *
11
+ * Returns the number of top-level symbols (enums + constants) emitted so
12
+ * the caller can flip `hasAnySymbols`.
13
+ */
14
+ export declare function sweepEnumsAndConsts(ctx: VbaExtractorContext, src: string): number;
15
+ //# sourceMappingURL=enums-consts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums-consts.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAqBhD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAuJjF"}