@aroman22/codegraph-vba-darwin-arm64 1.5.1 → 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 +127 -4
  19. package/lib/dist/db/queries.d.ts.map +1 -1
  20. package/lib/dist/db/queries.js +317 -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 +467 -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 +85 -2
  268. package/lib/dist/resolution/index.d.ts.map +1 -1
  269. package/lib/dist/resolution/index.js +535 -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,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sweepEnumsAndConsts = sweepEnumsAndConsts;
4
+ /**
5
+ * Enum / Const sweep (REQ-CODE-12, REQ-CODE-13). Emits `enum` + `enum_member`
6
+ * nodes and module-level `constant` nodes, while tracking proc scope so
7
+ * proc-local Consts populate the per-scope resolution bucket (issue #52)
8
+ * without emitting a spurious module-level `constant` node.
9
+ */
10
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
11
+ const constants_1 = require("./constants");
12
+ const text_utils_1 = require("./text-utils");
13
+ /** `[visibility] Enum <Name>` — opens an enum block. */
14
+ const ENUM_START_RE = /^\s*(?:(Public|Private|Friend|Global)\s+)?Enum\s+(\p{L}[\p{L}\p{N}_]*)/iu;
15
+ /** `End Enum` — closes the current enum block. */
16
+ const ENUM_END_RE = /^\s*End\s+Enum\b/i;
17
+ /**
18
+ * An enum member line: a leading identifier optionally followed by `=
19
+ * <value>`. Runs only inside an open Enum block, on the (already
20
+ * comment-stripped) source, so a trailing `'comment` never reaches here.
21
+ * `\p{L}` covers accented member names (e.g. `Sí`).
22
+ */
23
+ const ENUM_MEMBER_RE = /^\s*(\p{L}[\p{L}\p{N}_]*)\s*(?:=|$)/u;
24
+ /** `[visibility] Const <decls>` — captures visibility (1) and the rest (2). */
25
+ const CONST_DECL_RE = /^\s*(?:(Public|Private|Friend|Global)\s+)?Const\s+(.+)$/i;
26
+ /**
27
+ * Walk the (uncommented, line-joined) source and emit:
28
+ * - one `enum` node per `Enum <Name>` block, with one `enum_member` node
29
+ * per member and a `contains` edge enum→member;
30
+ * - one `constant` node per name declared on a `Const` line (multi-name
31
+ * lines emit one node per name);
32
+ * - a `contains` edge from the module/class node to each enum and constant
33
+ * (held in `pendingModuleOrClassSource` until the module node exists).
34
+ *
35
+ * Returns the number of top-level symbols (enums + constants) emitted so
36
+ * the caller can flip `hasAnySymbols`.
37
+ */
38
+ function sweepEnumsAndConsts(ctx, src) {
39
+ const lines = src.split('\n');
40
+ let count = 0;
41
+ let currentEnum = null;
42
+ // Issue #52: reset the shared scope stack + lookup key so leftover
43
+ // state from a previous extract() (impossible in production but
44
+ // possible in unit tests that construct a fresh extractor and run
45
+ // twice) never leaks across sweeps. The walk below updates both
46
+ // every iteration; `sweepCallsAndSql` resets again at its own
47
+ // start, before any OpenForm/OpenQuery reader consults them.
48
+ ctx.procStack.length = 0;
49
+ ctx.currentProcKey = 'module';
50
+ for (let i = 0; i < lines.length; i++) {
51
+ const line = lines[i] ?? '';
52
+ const lineNum = i + 1;
53
+ // Issue #52: track proc scope so Const declarations on this line
54
+ // can decide whether they belong to the module (currentProcKey
55
+ // === 'module') or to the top-most procedure (write the per-proc
56
+ // bucket, skip the module-level `constant` node emission).
57
+ //
58
+ // PROC_RE cannot overlap with CONST_DECL_RE on the same physical
59
+ // line (different leading keywords), so it is safe to advance the
60
+ // stack here and then fall through to the rest of the body.
61
+ const procStart = constants_1.PROC_RE.exec(line);
62
+ if (procStart) {
63
+ ctx.procStack.push(lineNum);
64
+ ctx.currentProcKey = String(lineNum);
65
+ }
66
+ else if (constants_1.PROCEDURE_END_RE.test(line) && ctx.procStack.length > 0) {
67
+ ctx.procStack.pop();
68
+ ctx.currentProcKey =
69
+ ctx.procStack.length > 0
70
+ ? String(ctx.procStack[ctx.procStack.length - 1])
71
+ : 'module';
72
+ }
73
+ if (currentEnum) {
74
+ if (ENUM_END_RE.test(line)) {
75
+ currentEnum = null;
76
+ continue;
77
+ }
78
+ const mm = ENUM_MEMBER_RE.exec(line);
79
+ if (mm) {
80
+ const memberName = mm[1] ?? '';
81
+ if (memberName) {
82
+ const memberId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum_member', memberName, lineNum);
83
+ ctx.nodes.push({
84
+ id: memberId,
85
+ kind: 'enum_member',
86
+ name: memberName,
87
+ qualifiedName: `${currentEnum.name}.${memberName}`,
88
+ filePath: ctx.filePath,
89
+ language: 'vba',
90
+ startLine: lineNum,
91
+ endLine: lineNum,
92
+ startColumn: 0,
93
+ endColumn: line.length,
94
+ updatedAt: Date.now(),
95
+ });
96
+ // enum → member: source is known, emit directly (not pending).
97
+ ctx.edges.push({
98
+ source: currentEnum.id,
99
+ target: memberId,
100
+ kind: 'contains',
101
+ });
102
+ }
103
+ }
104
+ continue;
105
+ }
106
+ const enumStart = ENUM_START_RE.exec(line);
107
+ if (enumStart) {
108
+ const visibility = (0, text_utils_1.foldVisibility)(enumStart[1] ?? '');
109
+ const name = enumStart[2] ?? '';
110
+ if (!name)
111
+ continue;
112
+ const enumId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum', name, lineNum);
113
+ ctx.nodes.push({
114
+ id: enumId,
115
+ kind: 'enum',
116
+ name,
117
+ qualifiedName: name,
118
+ filePath: ctx.filePath,
119
+ language: 'vba',
120
+ startLine: lineNum,
121
+ endLine: lineNum,
122
+ startColumn: 0,
123
+ endColumn: line.length,
124
+ visibility,
125
+ updatedAt: Date.now(),
126
+ });
127
+ ctx.pushContainsFromModule(enumId);
128
+ currentEnum = { id: enumId, name };
129
+ count++;
130
+ continue;
131
+ }
132
+ const constDecl = CONST_DECL_RE.exec(line);
133
+ if (constDecl) {
134
+ const visibility = (0, text_utils_1.foldVisibility)(constDecl[1] ?? '');
135
+ const body = constDecl[2] ?? '';
136
+ const declarations = (0, text_utils_1.parseConstDeclarations)(body);
137
+ for (const declaration of declarations) {
138
+ const constName = declaration.name;
139
+ if (!constName)
140
+ continue;
141
+ // Issue #52: every Const line (module-level or proc-local)
142
+ // writes into a per-scope resolution bucket so
143
+ // `DoCmd.OpenForm FORM_X` later resolves correctly; module-level
144
+ // Consts additionally emit a `constant` graph node + the
145
+ // module→constant `contains` edge. Proc-local Consts skip both
146
+ // (the const is not a module symbol, so the wrong-containment
147
+ // node + edge the pre-fix code emitted are gone), but the
148
+ // per-proc bucket keeps OpenForm/OpenQuery argument
149
+ // resolution working exactly as before.
150
+ if (declaration.value !== null) {
151
+ ctx.setLocalConstInScope(ctx.currentProcKey, constName, declaration.value);
152
+ }
153
+ if (ctx.procStack.length > 0)
154
+ continue;
155
+ const constId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'constant', constName, lineNum);
156
+ ctx.nodes.push({
157
+ id: constId,
158
+ kind: 'constant',
159
+ name: constName,
160
+ qualifiedName: constName,
161
+ filePath: ctx.filePath,
162
+ language: 'vba',
163
+ startLine: lineNum,
164
+ endLine: lineNum,
165
+ startColumn: 0,
166
+ endColumn: line.length,
167
+ visibility,
168
+ metadata: declaration.value !== null ? { value: declaration.value } : undefined,
169
+ updatedAt: Date.now(),
170
+ });
171
+ ctx.pushContainsFromModule(constId);
172
+ count++;
173
+ }
174
+ }
175
+ }
176
+ return count;
177
+ }
178
+ //# sourceMappingURL=enums-consts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums-consts.js","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { VbaExtractorContext } from './context';
2
+ export declare function sweepImplements(ctx: VbaExtractorContext, src: string): number;
3
+ //# sourceMappingURL=implements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKhD,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA+C7E"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sweepImplements = sweepImplements;
4
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
+ /** Implements regex. */
6
+ const IMPLEMENTS_RE = /^\s*Implements\s+(\p{L}[\p{L}\p{N}_]*)/iu;
7
+ function sweepImplements(ctx, src) {
8
+ const lines = src.split('\n');
9
+ let count = 0;
10
+ for (let i = 0; i < lines.length; i++) {
11
+ const line = lines[i] ?? '';
12
+ const m = IMPLEMENTS_RE.exec(line);
13
+ if (!m)
14
+ continue;
15
+ const name = m[1] ?? '';
16
+ if (!name)
17
+ continue;
18
+ const lineNum = i + 1;
19
+ const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'interface', name, lineNum);
20
+ ctx.nodes.push({
21
+ id: targetId,
22
+ kind: 'interface',
23
+ name,
24
+ qualifiedName: name,
25
+ filePath: ctx.filePath,
26
+ language: 'vba',
27
+ startLine: lineNum,
28
+ endLine: lineNum,
29
+ startColumn: 0,
30
+ endColumn: line.length,
31
+ updatedAt: Date.now(),
32
+ });
33
+ const edge = {
34
+ source: '', // placeholder; rewritten after module node exists
35
+ target: targetId,
36
+ kind: 'implements',
37
+ // S4 fix: `Implements IFoo` is a static, source-declared fact —
38
+ // not a guess. Use the `parser` provenance (generalizes
39
+ // `tree-sitter` for non-tree-sitter extractors like our regex
40
+ // sweepers) instead of `heuristic`, which is reserved for
41
+ // guessed/inferred edges.
42
+ provenance: 'parser',
43
+ line: lineNum,
44
+ column: 0,
45
+ };
46
+ ctx.edges.push(edge);
47
+ ctx.pendingModuleOrClassSource.push(edge);
48
+ count++;
49
+ }
50
+ return count;
51
+ }
52
+ //# sourceMappingURL=implements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implements.js","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":";;AAYA,0CA+CC;AArDD,gEAAwD;AAGxD,wBAAwB;AACxB,MAAM,aAAa,GAAG,0CAA0C,CAAC;AAEjE,SAAgB,eAAe,CAAC,GAAwB,EAAE,GAAW;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAC7B,GAAG,CAAC,QAAQ,EACZ,WAAW,EACX,IAAI,EACJ,OAAO,CACR,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,WAAW;YACjB,IAAI;YACJ,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QACH,MAAM,IAAI,GAAS;YACjB,MAAM,EAAE,EAAE,EAAE,kDAAkD;YAC9D,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY;YAClB,gEAAgE;YAChE,wDAAwD;YACxD,8DAA8D;YAC9D,0DAA0D;YAC1D,0BAA0B;YAC1B,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC;SACV,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { VbaExtractorContext, ProcInfo } from './context';
2
+ export declare function sweepProcedures(ctx: VbaExtractorContext, src: string): ProcInfo[];
3
+ //# sourceMappingURL=procedures.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAqMjF"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.sweepProcedures = sweepProcedures;
37
+ /**
38
+ * Procedure sweep: emit one `function` node per `Sub` / `Function` /
39
+ * `Property Get|Let|Set` declaration, record each proc in `localProcs` for
40
+ * same-file call resolution, and synthesize the Access `<Control>_<Event>`
41
+ * event-handler edge for form/report code-behind classes (hueco 3 / issue #41).
42
+ */
43
+ const path = __importStar(require("path"));
44
+ const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
45
+ const constants_1 = require("./constants");
46
+ const text_utils_1 = require("./text-utils");
47
+ function sweepProcedures(ctx, src) {
48
+ const procs = [];
49
+ const lines = src.split('\n');
50
+ for (let i = 0; i < lines.length; i++) {
51
+ const line = lines[i] ?? '';
52
+ const m = constants_1.PROC_RE.exec(line);
53
+ if (!m)
54
+ continue;
55
+ const visibilityRaw = (m[1] ?? '').trim();
56
+ const kindRaw = (m[2] ?? '').trim().toLowerCase();
57
+ const name = m[3] ?? '';
58
+ if (!name)
59
+ continue;
60
+ const lineNum = i + 1;
61
+ // Normalize the visibility. VBA's "Static" keyword is a storage
62
+ // specifier, not visibility, so we treat bare-static declarations as
63
+ // 'Public' (the default) per spec R1. "Friend" is not in the Node
64
+ // visibility enum; treat it as 'Public' since it's the closest
65
+ // broader-than-private modifier.
66
+ let visibility;
67
+ switch (visibilityRaw.toLowerCase()) {
68
+ case 'private':
69
+ visibility = 'private';
70
+ break;
71
+ case 'public':
72
+ case 'static':
73
+ case 'friend':
74
+ case '':
75
+ default:
76
+ visibility = 'public';
77
+ break;
78
+ }
79
+ const kind = kindRaw.startsWith('sub')
80
+ ? 'sub'
81
+ : kindRaw.startsWith('function')
82
+ ? 'function'
83
+ : 'property';
84
+ const proc = {
85
+ name,
86
+ // B3 (hueco 5): when this file is a `.cls`, prefix the
87
+ // qualifiedName with the resolved class name so cross-class
88
+ // queries (e.g. `Form_Load`) match only the owning class.
89
+ // `.bas` files leave `qualifiedName === name`.
90
+ qualifiedName: ctx.classNamePrefix
91
+ ? `${ctx.classNamePrefix}.${name}`
92
+ : name,
93
+ kind,
94
+ visibility,
95
+ startLine: lineNum,
96
+ };
97
+ procs.push(proc);
98
+ const bucket = ctx.localProcs.get(name);
99
+ if (bucket)
100
+ bucket.push(proc);
101
+ else
102
+ ctx.localProcs.set(name, [proc]);
103
+ const nodeId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'function', name, lineNum);
104
+ const fnNode = {
105
+ id: nodeId,
106
+ kind: 'function',
107
+ name,
108
+ // B3 (hueco 5): same prefix rule as the ProcInfo above — class
109
+ // methods get `${className}.${name}`, module-level Subs keep
110
+ // their bare name.
111
+ qualifiedName: ctx.classNamePrefix
112
+ ? `${ctx.classNamePrefix}.${name}`
113
+ : name,
114
+ filePath: ctx.filePath,
115
+ language: 'vba',
116
+ startLine: lineNum,
117
+ endLine: lineNum,
118
+ startColumn: 0,
119
+ endColumn: line.length,
120
+ visibility,
121
+ updatedAt: Date.now(),
122
+ };
123
+ ctx.nodes.push(fnNode);
124
+ // Cache the first node emitted for this name — `findFunctionNodeByName`
125
+ // (audit S2) becomes O(1) instead of O(n) per call site.
126
+ if (!ctx.functionNodeByName.has(name)) {
127
+ ctx.functionNodeByName.set(name, fnNode);
128
+ }
129
+ // Fix 1: also index by startLine so Property Get/Let/Set with the same
130
+ // name can each be found by their exact declaration line.
131
+ ctx.functionNodeByStartLine.set(lineNum, fnNode);
132
+ // Hueco 3: synthesize the event-handler edge for Access naming
133
+ // convention `<ControlName>_<EventName>` (e.g. `ComandoAltaPM_Click`,
134
+ // `MotivoBorrado_AfterUpdate`). The `<X>_<Y>` shape is split on the
135
+ // LAST underscore so multi-word events like `BeforeDelConfirm` parse
136
+ // correctly. Form-level events (`Form_Load`, `Form_Open`,
137
+ // `Form_Unload`, …) are NOT control handlers — they fire on the
138
+ // form object itself, not on a control — so they are skipped here
139
+ // (the form module node is the conceptual source for those).
140
+ //
141
+ // Scope guard: only emit when this .cls looks like a form code-
142
+ // behind (`Form_*.cls`). Without this guard, regular service classes
143
+ // whose methods happen to have underscores in their names
144
+ // (e.g. `InformeRiesgoPDFServicio.cls` declares
145
+ // `GenerarHTML_Principal`, `GetEstilosCSS_PDF`,
146
+ // `Class_Initialize`) would synthesize ~550 spurious
147
+ // `form-instance-control` stubs in real Dysflow projects. The
148
+ // `Form_` prefix is the canonical Access code-behind naming
149
+ // convention and matches the .form.txt siblings' basename.
150
+ //
151
+ // Cross-file synthesis caveat: the edge's source is a
152
+ // `form-instance-control` node that lives in the sibling .form.txt,
153
+ // not this .cls file. Two consequences:
154
+ // 1. We also emit a STUB form-instance-control node locally with
155
+ // the deterministic id so the per-file edge filter
156
+ // (`insertedIds.has(source)`) accepts the edge. When the
157
+ // sibling .form.txt is later indexed, VbaFormExtractor emits
158
+ // the real form-instance-control node with the same id; the
159
+ // `INSERT OR REPLACE` semantics in queries.ts:insertNode
160
+ // overwrite the stub with the real one (preserving the
161
+ // metadata.controlType, filePath, line range, etc.).
162
+ // 2. When the .form.txt is processed FIRST (alphabetically
163
+ // unlikely but possible), the real node exists in the DB
164
+ // before this edge is committed; insertEdges's DB-level
165
+ // endpoint check passes the edge naturally without the stub.
166
+ // Either order converges on the same final state.
167
+ // See vba-form-extractor.ts:findControlName for the matching real
168
+ // form-instance-control node emission.
169
+ const handler = (0, text_utils_1.parseEventHandlerName)(name);
170
+ // Prefix-driven sibling binding (issue #41). Both `Form_*.cls` and
171
+ // `Report_*.cls` Dysflow code-behind files share the same code path;
172
+ // only the sibling extension differs (`.form.txt` vs `.report.txt`).
173
+ // The check is on the BASENAME prefix so a class called
174
+ // `FormularioVentas.cls` or `ReportingHelper.cls` (no trailing
175
+ // underscore) does not match — the trailing `_` is the discriminator.
176
+ // Any other `.cls` (e.g. `InformeRiesgoPDFServicio.cls` with methods
177
+ // like `GenerarHTML_Principal`) gets `codeBehindExt === null` and is
178
+ // skipped, preserving the original Form_-only guard's behaviour for
179
+ // non-form classes.
180
+ const basename = path.basename(ctx.filePath).toLowerCase();
181
+ const codeBehindExt = basename.startsWith('report_')
182
+ ? '.report.txt'
183
+ : basename.startsWith('form_')
184
+ ? '.form.txt'
185
+ : null;
186
+ const isFormCodeBehind = codeBehindExt !== null;
187
+ if (handler && isFormCodeBehind) {
188
+ const siblingPath = ctx.filePath.replace(/\.cls$/i, codeBehindExt);
189
+ const controlNodeId = (0, tree_sitter_helpers_1.generateNodeId)(siblingPath, 'form-instance-control', handler.controlName, 0);
190
+ // Stub form-instance-control: local so the per-file edge filter
191
+ // passes the event-handler edge. Overwritten by the real node
192
+ // emitted from the sibling .form.txt (or .report.txt) at index time
193
+ // (same id, same schema, INSERT OR REPLACE). No metadata.controlType
194
+ // here — the sibling side carries the real control type.
195
+ ctx.nodes.push({
196
+ id: controlNodeId,
197
+ kind: 'form-instance-control',
198
+ name: handler.controlName,
199
+ qualifiedName: `${siblingPath}::${handler.controlName}`,
200
+ filePath: siblingPath,
201
+ language: 'vba',
202
+ startLine: 0,
203
+ endLine: 0,
204
+ startColumn: 0,
205
+ endColumn: 0,
206
+ updatedAt: Date.now(),
207
+ });
208
+ ctx.edges.push({
209
+ source: nodeId,
210
+ target: controlNodeId,
211
+ kind: 'event-handler',
212
+ provenance: 'heuristic',
213
+ metadata: { eventName: handler.eventName },
214
+ line: lineNum,
215
+ column: 0,
216
+ });
217
+ }
218
+ if (ctx.moduleOrClassNode) {
219
+ ctx.edges.push({
220
+ source: ctx.moduleOrClassNode.id,
221
+ target: nodeId,
222
+ kind: 'contains',
223
+ });
224
+ }
225
+ else {
226
+ // Module/class node is created lazily (see extract). Hold the edge in
227
+ // pending so its source can be rewritten once the module exists.
228
+ const edge = {
229
+ source: '',
230
+ target: nodeId,
231
+ kind: 'contains',
232
+ };
233
+ ctx.edges.push(edge);
234
+ ctx.pendingModuleOrClassSource.push(edge);
235
+ }
236
+ }
237
+ return procs;
238
+ }
239
+ //# sourceMappingURL=procedures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { VbaExtractorContext } from './context';
2
+ export declare function scanSqlInLine(ctx: VbaExtractorContext, line: string, lineNum: number, dedupe: Set<string>, sqlVariables: Map<string, string>): void;
3
+ /**
4
+ * #13 fix: `sql = sql & "..."` (self-referential concatenation) must
5
+ * ACCUMULATE the new fragment onto whatever was already tracked for
6
+ * `varName`, not overwrite it. Overwriting silently dropped earlier
7
+ * fragments' tables — typically the initial `FROM <table>` in
8
+ * `sql = "SELECT * FROM tblA"` followed by `sql = sql & " WHERE x=1"`.
9
+ *
10
+ * Detection: the RHS (`m[2]`, trimmed) starts with `<varName> &`,
11
+ * case-insensitively — matching VBA's case-insensitive identifiers (`Sql`
12
+ * and `sql` are the same variable). A genuine fresh assignment (RHS does
13
+ * NOT start with the self-reference) still RESETS tracking — that
14
+ * behavior is unchanged.
15
+ */
16
+ export declare function trackSqlVariableAssignment(lines: string[], lineIndex: number, sqlVariables: Map<string, string>): void;
17
+ //# sourceMappingURL=sql-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-wrapper.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/sql-wrapper.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAwGhD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,EACnB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,IAAI,CA+CN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,EAAE,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,IAAI,CAiBN"}