@aroman22/codegraph-vba-darwin-arm64 1.15.0 → 1.17.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 (230) hide show
  1. package/lib/dist/bin/codegraph.js +13 -7
  2. package/lib/dist/bin/codegraph.js.map +1 -1
  3. package/lib/dist/bin/daemon-release.d.ts +7 -0
  4. package/lib/dist/bin/daemon-release.d.ts.map +1 -0
  5. package/lib/dist/bin/daemon-release.js +18 -0
  6. package/lib/dist/bin/daemon-release.js.map +1 -0
  7. package/lib/dist/db/queries.d.ts +41 -0
  8. package/lib/dist/db/queries.d.ts.map +1 -1
  9. package/lib/dist/db/queries.js +78 -1
  10. package/lib/dist/db/queries.js.map +1 -1
  11. package/lib/dist/extraction/access-erd-extractor.d.ts +57 -0
  12. package/lib/dist/extraction/access-erd-extractor.d.ts.map +1 -0
  13. package/lib/dist/extraction/access-erd-extractor.js +389 -0
  14. package/lib/dist/extraction/access-erd-extractor.js.map +1 -0
  15. package/lib/dist/extraction/extraction-version.d.ts +1 -1
  16. package/lib/dist/extraction/extraction-version.js +1 -1
  17. package/lib/dist/extraction/grammars.d.ts +20 -0
  18. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  19. package/lib/dist/extraction/grammars.js +34 -0
  20. package/lib/dist/extraction/grammars.js.map +1 -1
  21. package/lib/dist/extraction/index.d.ts +1 -0
  22. package/lib/dist/extraction/index.d.ts.map +1 -1
  23. package/lib/dist/extraction/index.js +371 -351
  24. package/lib/dist/extraction/index.js.map +1 -1
  25. package/lib/dist/extraction/parse-pool.d.ts +8 -3
  26. package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
  27. package/lib/dist/extraction/parse-pool.js +1 -2
  28. package/lib/dist/extraction/parse-pool.js.map +1 -1
  29. package/lib/dist/extraction/parse-worker.js +7 -6
  30. package/lib/dist/extraction/parse-worker.js.map +1 -1
  31. package/lib/dist/extraction/sql-query-extractor.d.ts +16 -14
  32. package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
  33. package/lib/dist/extraction/sql-query-extractor.js +43 -31
  34. package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
  35. package/lib/dist/extraction/sql-table-scan.d.ts +184 -0
  36. package/lib/dist/extraction/sql-table-scan.d.ts.map +1 -0
  37. package/lib/dist/extraction/sql-table-scan.js +288 -0
  38. package/lib/dist/extraction/sql-table-scan.js.map +1 -0
  39. package/lib/dist/extraction/tree-sitter.d.ts +10 -1
  40. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  41. package/lib/dist/extraction/tree-sitter.js +34 -3
  42. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  43. package/lib/dist/extraction/vba/call-sweep.d.ts +2 -7
  44. package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
  45. package/lib/dist/extraction/vba/call-sweep.js +144 -90
  46. package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
  47. package/lib/dist/extraction/vba/calls.d.ts +24 -4
  48. package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
  49. package/lib/dist/extraction/vba/calls.js +42 -12
  50. package/lib/dist/extraction/vba/calls.js.map +1 -1
  51. package/lib/dist/extraction/vba/constants.d.ts +7 -14
  52. package/lib/dist/extraction/vba/constants.d.ts.map +1 -1
  53. package/lib/dist/extraction/vba/constants.js +8 -36
  54. package/lib/dist/extraction/vba/constants.js.map +1 -1
  55. package/lib/dist/extraction/vba/context.d.ts +443 -7
  56. package/lib/dist/extraction/vba/context.d.ts.map +1 -1
  57. package/lib/dist/extraction/vba/context.js +325 -29
  58. package/lib/dist/extraction/vba/context.js.map +1 -1
  59. package/lib/dist/extraction/vba/controls.d.ts +18 -1
  60. package/lib/dist/extraction/vba/controls.d.ts.map +1 -1
  61. package/lib/dist/extraction/vba/controls.js +99 -27
  62. package/lib/dist/extraction/vba/controls.js.map +1 -1
  63. package/lib/dist/extraction/vba/declarations.d.ts +1 -6
  64. package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
  65. package/lib/dist/extraction/vba/declarations.js +5 -39
  66. package/lib/dist/extraction/vba/declarations.js.map +1 -1
  67. package/lib/dist/extraction/vba/dims.d.ts +11 -7
  68. package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
  69. package/lib/dist/extraction/vba/dims.js +265 -29
  70. package/lib/dist/extraction/vba/dims.js.map +1 -1
  71. package/lib/dist/extraction/vba/docmd.d.ts +29 -2
  72. package/lib/dist/extraction/vba/docmd.d.ts.map +1 -1
  73. package/lib/dist/extraction/vba/docmd.js +297 -18
  74. package/lib/dist/extraction/vba/docmd.js.map +1 -1
  75. package/lib/dist/extraction/vba/enums-consts.d.ts +7 -14
  76. package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
  77. package/lib/dist/extraction/vba/enums-consts.js +11 -45
  78. package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
  79. package/lib/dist/extraction/vba/error-channel.d.ts +57 -0
  80. package/lib/dist/extraction/vba/error-channel.d.ts.map +1 -0
  81. package/lib/dist/extraction/vba/error-channel.js +128 -0
  82. package/lib/dist/extraction/vba/error-channel.js.map +1 -0
  83. package/lib/dist/extraction/vba/errors.d.ts +64 -0
  84. package/lib/dist/extraction/vba/errors.d.ts.map +1 -0
  85. package/lib/dist/extraction/vba/errors.js +775 -0
  86. package/lib/dist/extraction/vba/errors.js.map +1 -0
  87. package/lib/dist/extraction/vba/filesystem-statements.d.ts +23 -0
  88. package/lib/dist/extraction/vba/filesystem-statements.d.ts.map +1 -0
  89. package/lib/dist/extraction/vba/filesystem-statements.js +70 -0
  90. package/lib/dist/extraction/vba/filesystem-statements.js.map +1 -0
  91. package/lib/dist/extraction/vba/implements.d.ts +1 -6
  92. package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
  93. package/lib/dist/extraction/vba/implements.js +1 -22
  94. package/lib/dist/extraction/vba/implements.js.map +1 -1
  95. package/lib/dist/extraction/vba/labels.d.ts +26 -0
  96. package/lib/dist/extraction/vba/labels.d.ts.map +1 -0
  97. package/lib/dist/extraction/vba/labels.js +180 -0
  98. package/lib/dist/extraction/vba/labels.js.map +1 -0
  99. package/lib/dist/extraction/vba/module-vars.d.ts +36 -0
  100. package/lib/dist/extraction/vba/module-vars.d.ts.map +1 -0
  101. package/lib/dist/extraction/vba/module-vars.js +145 -0
  102. package/lib/dist/extraction/vba/module-vars.js.map +1 -0
  103. package/lib/dist/extraction/vba/options.d.ts +88 -0
  104. package/lib/dist/extraction/vba/options.d.ts.map +1 -0
  105. package/lib/dist/extraction/vba/options.js +39 -0
  106. package/lib/dist/extraction/vba/options.js.map +1 -0
  107. package/lib/dist/extraction/vba/parameters.d.ts +35 -0
  108. package/lib/dist/extraction/vba/parameters.d.ts.map +1 -0
  109. package/lib/dist/extraction/vba/parameters.js +110 -0
  110. package/lib/dist/extraction/vba/parameters.js.map +1 -0
  111. package/lib/dist/extraction/vba/procedures.d.ts +1 -9
  112. package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
  113. package/lib/dist/extraction/vba/procedures.js +174 -112
  114. package/lib/dist/extraction/vba/procedures.js.map +1 -1
  115. package/lib/dist/extraction/vba/rules.d.ts +10 -5
  116. package/lib/dist/extraction/vba/rules.d.ts.map +1 -1
  117. package/lib/dist/extraction/vba/rules.js +19 -0
  118. package/lib/dist/extraction/vba/rules.js.map +1 -1
  119. package/lib/dist/extraction/vba/runtime-objects.d.ts +59 -0
  120. package/lib/dist/extraction/vba/runtime-objects.d.ts.map +1 -0
  121. package/lib/dist/extraction/vba/runtime-objects.js +106 -0
  122. package/lib/dist/extraction/vba/runtime-objects.js.map +1 -0
  123. package/lib/dist/extraction/vba/signature.d.ts +57 -0
  124. package/lib/dist/extraction/vba/signature.d.ts.map +1 -0
  125. package/lib/dist/extraction/vba/signature.js +164 -0
  126. package/lib/dist/extraction/vba/signature.js.map +1 -0
  127. package/lib/dist/extraction/vba/sql-wrapper.d.ts +76 -3
  128. package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
  129. package/lib/dist/extraction/vba/sql-wrapper.js +725 -151
  130. package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
  131. package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -1
  132. package/lib/dist/extraction/vba/tempvars.js +4 -0
  133. package/lib/dist/extraction/vba/tempvars.js.map +1 -1
  134. package/lib/dist/extraction/vba/text-utils.d.ts +62 -2
  135. package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -1
  136. package/lib/dist/extraction/vba/text-utils.js +84 -6
  137. package/lib/dist/extraction/vba/text-utils.js.map +1 -1
  138. package/lib/dist/extraction/vba-extractor.d.ts +18 -1
  139. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  140. package/lib/dist/extraction/vba-extractor.js +111 -16
  141. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  142. package/lib/dist/extraction/vba-form-extractor.d.ts +28 -14
  143. package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
  144. package/lib/dist/extraction/vba-form-extractor.js +56 -21
  145. package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
  146. package/lib/dist/extraction/vba-preprocess.d.ts +89 -3
  147. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  148. package/lib/dist/extraction/vba-preprocess.js +221 -57
  149. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  150. package/lib/dist/extraction/vba-source.d.ts +0 -10
  151. package/lib/dist/extraction/vba-source.d.ts.map +1 -1
  152. package/lib/dist/extraction/vba-source.js +0 -13
  153. package/lib/dist/extraction/vba-source.js.map +1 -1
  154. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +0 -6
  155. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -1
  156. package/lib/dist/extraction/vba-test-manifest-extractor.js +0 -1
  157. package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -1
  158. package/lib/dist/graph/behavior-evidence.d.ts +162 -0
  159. package/lib/dist/graph/behavior-evidence.d.ts.map +1 -0
  160. package/lib/dist/graph/behavior-evidence.js +529 -0
  161. package/lib/dist/graph/behavior-evidence.js.map +1 -0
  162. package/lib/dist/index.d.ts +22 -0
  163. package/lib/dist/index.d.ts.map +1 -1
  164. package/lib/dist/index.js +37 -1
  165. package/lib/dist/index.js.map +1 -1
  166. package/lib/dist/mcp/daemon-manager.d.ts.map +1 -1
  167. package/lib/dist/mcp/daemon-manager.js +7 -3
  168. package/lib/dist/mcp/daemon-manager.js.map +1 -1
  169. package/lib/dist/mcp/daemon-paths.d.ts +6 -0
  170. package/lib/dist/mcp/daemon-paths.d.ts.map +1 -1
  171. package/lib/dist/mcp/daemon-paths.js +15 -0
  172. package/lib/dist/mcp/daemon-paths.js.map +1 -1
  173. package/lib/dist/mcp/daemon-registry.d.ts +82 -7
  174. package/lib/dist/mcp/daemon-registry.d.ts.map +1 -1
  175. package/lib/dist/mcp/daemon-registry.js +557 -45
  176. package/lib/dist/mcp/daemon-registry.js.map +1 -1
  177. package/lib/dist/mcp/daemon-watchdog.d.ts +12 -0
  178. package/lib/dist/mcp/daemon-watchdog.d.ts.map +1 -1
  179. package/lib/dist/mcp/daemon-watchdog.js +37 -7
  180. package/lib/dist/mcp/daemon-watchdog.js.map +1 -1
  181. package/lib/dist/mcp/daemon.d.ts +20 -1
  182. package/lib/dist/mcp/daemon.d.ts.map +1 -1
  183. package/lib/dist/mcp/daemon.js +123 -30
  184. package/lib/dist/mcp/daemon.js.map +1 -1
  185. package/lib/dist/mcp/index.d.ts.map +1 -1
  186. package/lib/dist/mcp/index.js +13 -2
  187. package/lib/dist/mcp/index.js.map +1 -1
  188. package/lib/dist/mcp/proxy.d.ts +32 -0
  189. package/lib/dist/mcp/proxy.d.ts.map +1 -1
  190. package/lib/dist/mcp/proxy.js +163 -31
  191. package/lib/dist/mcp/proxy.js.map +1 -1
  192. package/lib/dist/mcp/server-instructions.d.ts +1 -1
  193. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  194. package/lib/dist/mcp/server-instructions.js +26 -4
  195. package/lib/dist/mcp/server-instructions.js.map +1 -1
  196. package/lib/dist/mcp/tools.d.ts +12 -0
  197. package/lib/dist/mcp/tools.d.ts.map +1 -1
  198. package/lib/dist/mcp/tools.js +92 -1
  199. package/lib/dist/mcp/tools.js.map +1 -1
  200. package/lib/dist/project-config.d.ts +43 -2
  201. package/lib/dist/project-config.d.ts.map +1 -1
  202. package/lib/dist/project-config.js +86 -2
  203. package/lib/dist/project-config.js.map +1 -1
  204. package/lib/dist/resolution/index.d.ts +47 -2
  205. package/lib/dist/resolution/index.d.ts.map +1 -1
  206. package/lib/dist/resolution/index.js +160 -5
  207. package/lib/dist/resolution/index.js.map +1 -1
  208. package/lib/dist/resolution/name-matcher.d.ts +25 -0
  209. package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
  210. package/lib/dist/resolution/name-matcher.js +59 -0
  211. package/lib/dist/resolution/name-matcher.js.map +1 -1
  212. package/lib/dist/resolution/vba-runtime-objects.d.ts +11 -11
  213. package/lib/dist/resolution/vba-runtime-objects.d.ts.map +1 -1
  214. package/lib/dist/resolution/vba-runtime-objects.js +18 -38
  215. package/lib/dist/resolution/vba-runtime-objects.js.map +1 -1
  216. package/lib/dist/types.d.ts +13 -5
  217. package/lib/dist/types.d.ts.map +1 -1
  218. package/lib/dist/types.js +17 -0
  219. package/lib/dist/types.js.map +1 -1
  220. package/lib/dist/utils/backtrace-helpers.d.ts +14 -2
  221. package/lib/dist/utils/backtrace-helpers.d.ts.map +1 -1
  222. package/lib/dist/utils/backtrace-helpers.js +81 -7
  223. package/lib/dist/utils/backtrace-helpers.js.map +1 -1
  224. package/lib/dist/utils/sql-impact-helpers.d.ts.map +1 -1
  225. package/lib/dist/utils/sql-impact-helpers.js +119 -30
  226. package/lib/dist/utils/sql-impact-helpers.js.map +1 -1
  227. package/lib/node_modules/.modules.yaml +1 -1
  228. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  229. package/lib/package.json +3 -1
  230. package/package.json +1 -1
@@ -46,6 +46,39 @@ export interface ProjectConfig {
46
46
  * `true`.
47
47
  */
48
48
  dysflowExport?: boolean;
49
+ /**
50
+ * Extra receiver names that execute SQL, so table references inside the
51
+ * SQL they run are still found (#244). Two entry forms are accepted:
52
+ *
53
+ * - a bare identifier fragment — `"getdb"` reaches `getdb()`,
54
+ * `getdbHPS()` and `getdbExpedientes()`;
55
+ * - an explicit `receiver.method` pair — `"cnn.Execute"`.
56
+ *
57
+ * Raw regular expressions are deliberately NOT accepted: these patterns
58
+ * run against every line of every VBA file, where a user-supplied regex
59
+ * is a catastrophic-backtracking hazard. Entries EXTEND the built-in
60
+ * list (`db`, `getdb`, `CurrentDb`, `DBEngine`, the DAO `QueryDef`
61
+ * receivers, `DoCmd.RunSQL` and the ADO pair) — they never replace it.
62
+ * A non-array value, or an entry that is not one of the two forms,
63
+ * warns and is ignored.
64
+ */
65
+ sqlWrappers?: string[];
66
+ /**
67
+ * Issue #261 — extra module-level variable names this project uses as its
68
+ * error channel: the field a failing procedure writes and its caller
69
+ * reads, which is how an error message actually travels in an Access
70
+ * codebase of this shape (VBA's own mechanism unwinds one frame and is
71
+ * used for that, not for the message).
72
+ *
73
+ * Bare VBA identifiers only, matched as WHOLE names — `"lastFailure"`
74
+ * flags `lastFailure` and never `lastFailureCount`. Raw regular
75
+ * expressions are deliberately NOT accepted, for the same reason
76
+ * `sqlWrappers` refuses them: these names are tested against every
77
+ * identifier of every line of every VBA file. Entries EXTEND the built-in
78
+ * list (`m_Error`, `p_Error`, `g_Error`, `Error`) — they never replace
79
+ * it. A non-array value, or a non-identifier entry, warns and is ignored.
80
+ */
81
+ errorChannel?: string[];
49
82
  };
50
83
  /**
51
84
  * Gitignore-style patterns for first-party source to force INTO the index even
@@ -62,11 +95,19 @@ export interface ProjectConfig {
62
95
  */
63
96
  include?: string[];
64
97
  }
65
- export declare function loadVbaConfig(rootDir: string): {
98
+ /**
99
+ * Parsed, validated view of the `vba` block. Named (rather than repeated
100
+ * inline at each of its five use sites) so adding a knob — `sqlWrappers` in
101
+ * #244 — is one edit instead of five that can silently drift apart.
102
+ */
103
+ export interface VbaConfig {
66
104
  targets?: Record<string, boolean>;
67
105
  maxRaiseFanout?: number;
68
106
  dysflowExport?: boolean;
69
- };
107
+ sqlWrappers?: string[];
108
+ errorChannel?: string[];
109
+ }
110
+ export declare function loadVbaConfig(rootDir: string): VbaConfig;
70
111
  /**
71
112
  * Load the validated `vba.dysflowExport` flag for a project, mtime-cached
72
113
  * (issue #154). Returns `true` when the flag is absent — the default keeps
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAKnC,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC;;;;;;;;;WASG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;;;;;;WAQG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAoVD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,CAEtI;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAqCrF"}
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AA0BA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAMnC,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE;QACJ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC;;;;;;;;;WASG;QACH,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB;;;;;;;;WAQG;QACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB;;;;;;;;;;;;;;;WAeG;QACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB;;;;;;;;;;;;;;WAcG;QACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAkaD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEpE;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAE7D;AAED,uFAAuF;AACvF,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAqCrF"}
@@ -69,6 +69,7 @@ exports.addIncludeIgnoredPatterns = addIncludeIgnoredPatterns;
69
69
  const fs = __importStar(require("fs"));
70
70
  const path = __importStar(require("path"));
71
71
  const grammars_1 = require("./extraction/grammars");
72
+ const error_channel_1 = require("./extraction/vba/error-channel");
72
73
  const errors_1 = require("./errors");
73
74
  const directory_1 = require("./directory");
74
75
  /** Filename of the project-scoped config, resolved relative to the project root. */
@@ -231,6 +232,13 @@ function extractExclude(parsed, file) {
231
232
  }
232
233
  return out;
233
234
  }
235
+ /**
236
+ * The ONLY two shapes a `vba.sqlWrappers` entry may take (#244): a bare
237
+ * identifier fragment (`getdb`) or a `receiver.method` pair (`cnn.Execute`).
238
+ * Anything else — a raw regex above all — is rejected at load time, so the
239
+ * per-line scanner never sees a pattern it did not build itself.
240
+ */
241
+ const SQL_WRAPPER_ENTRY_RE = /^\p{L}[\p{L}\p{N}_]*(?:\.\p{L}[\p{L}\p{N}_]*)?$/u;
234
242
  function extractVbaTargets(parsed, file) {
235
243
  const vba = parsed.vba;
236
244
  if (vba === undefined)
@@ -278,7 +286,59 @@ function extractVbaTargets(parsed, file) {
278
286
  out.dysflowExport = dysflowExport;
279
287
  }
280
288
  }
281
- return out.targets !== undefined || out.maxRaiseFanout !== undefined || out.dysflowExport !== undefined ? out : undefined;
289
+ // Issue #244 extra SQL execution-site receivers. Same warn-and-ignore
290
+ // shape as `maxRaiseFanout`: a wrong type never throws, it just leaves the
291
+ // built-in wrapper list in force.
292
+ const sqlWrappers = vba.sqlWrappers;
293
+ if (sqlWrappers !== undefined) {
294
+ if (!Array.isArray(sqlWrappers)) {
295
+ (0, errors_1.logWarn)(`Ignoring "vba.sqlWrappers" in ${exports.PROJECT_CONFIG_FILENAME}: value must be an array of strings`, { file });
296
+ }
297
+ else {
298
+ const wrappersOut = [];
299
+ for (const raw of sqlWrappers) {
300
+ const entry = typeof raw === 'string' ? raw.trim() : '';
301
+ if (!entry || !SQL_WRAPPER_ENTRY_RE.test(entry)) {
302
+ (0, errors_1.logWarn)(`Ignoring an invalid "vba.sqlWrappers" entry in ${exports.PROJECT_CONFIG_FILENAME}: every entry must be an identifier prefix ("getdb") or a "receiver.method" pair ("cnn.Execute")`, { file });
303
+ continue;
304
+ }
305
+ wrappersOut.push(entry);
306
+ }
307
+ if (wrappersOut.length > 0)
308
+ out.sqlWrappers = wrappersOut;
309
+ }
310
+ }
311
+ // Issue #261 — extra error-channel variable names. Same warn-and-ignore
312
+ // shape as `sqlWrappers`, and the same "no user regex" rule: an entry is a
313
+ // bare VBA identifier, tested as a whole name against every identifier of
314
+ // every line. A wrong type never throws, it just leaves the built-in
315
+ // channel list in force.
316
+ const errorChannel = vba.errorChannel;
317
+ if (errorChannel !== undefined) {
318
+ if (!Array.isArray(errorChannel)) {
319
+ (0, errors_1.logWarn)(`Ignoring "vba.errorChannel" in ${exports.PROJECT_CONFIG_FILENAME}: value must be an array of strings`, { file });
320
+ }
321
+ else {
322
+ const channelOut = [];
323
+ for (const raw of errorChannel) {
324
+ const entry = typeof raw === 'string' ? raw.trim() : '';
325
+ if (!entry || !error_channel_1.ERROR_CHANNEL_ENTRY_RE.test(entry)) {
326
+ (0, errors_1.logWarn)(`Ignoring an invalid "vba.errorChannel" entry in ${exports.PROJECT_CONFIG_FILENAME}: every entry must be a bare variable name ("m_Error")`, { file });
327
+ continue;
328
+ }
329
+ channelOut.push(entry);
330
+ }
331
+ if (channelOut.length > 0)
332
+ out.errorChannel = channelOut;
333
+ }
334
+ }
335
+ return out.targets !== undefined
336
+ || out.maxRaiseFanout !== undefined
337
+ || out.dysflowExport !== undefined
338
+ || out.sqlWrappers !== undefined
339
+ || out.errorChannel !== undefined
340
+ ? out
341
+ : undefined;
282
342
  }
283
343
  /**
284
344
  * Validate the `include` patterns: an array of non-empty gitignore-style strings
@@ -361,7 +421,27 @@ function loadParsedConfig(rootDir) {
361
421
  const mergedDysflowExport = fileConfig.vba?.dysflowExport !== undefined
362
422
  ? fileConfig.vba?.dysflowExport
363
423
  : localConfig.vba?.dysflowExport;
364
- if (mergedTargets || mergedMaxRaiseFanout !== undefined || mergedDysflowExport !== undefined) {
424
+ // `sqlWrappers` is a list, so both sides UNION (the pattern `includeIgnored`
425
+ // / `exclude` already use) rather than one overriding the other — a local
426
+ // config naming one project accessor must not erase the committed list.
427
+ const mergedSqlWrappers = localConfig.vba?.sqlWrappers || fileConfig.vba?.sqlWrappers
428
+ ? [...new Set([
429
+ ...(localConfig.vba?.sqlWrappers ?? []),
430
+ ...(fileConfig.vba?.sqlWrappers ?? []),
431
+ ])]
432
+ : undefined;
433
+ // `errorChannel` is a list too, so it UNIONs on the same grounds (#261).
434
+ const mergedErrorChannel = localConfig.vba?.errorChannel || fileConfig.vba?.errorChannel
435
+ ? [...new Set([
436
+ ...(localConfig.vba?.errorChannel ?? []),
437
+ ...(fileConfig.vba?.errorChannel ?? []),
438
+ ])]
439
+ : undefined;
440
+ if (mergedTargets
441
+ || mergedMaxRaiseFanout !== undefined
442
+ || mergedDysflowExport !== undefined
443
+ || mergedSqlWrappers !== undefined
444
+ || mergedErrorChannel !== undefined) {
365
445
  vba = {};
366
446
  if (mergedTargets)
367
447
  vba.targets = mergedTargets;
@@ -369,6 +449,10 @@ function loadParsedConfig(rootDir) {
369
449
  vba.maxRaiseFanout = mergedMaxRaiseFanout;
370
450
  if (mergedDysflowExport !== undefined)
371
451
  vba.dysflowExport = mergedDysflowExport;
452
+ if (mergedSqlWrappers !== undefined)
453
+ vba.sqlWrappers = mergedSqlWrappers;
454
+ if (mergedErrorChannel !== undefined)
455
+ vba.errorChannel = mergedErrorChannel;
372
456
  }
373
457
  const config = {
374
458
  extensions,
@@ -1 +1 @@
1
- {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-config.js","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+iBA,sCAEC;AASD,0DAGC;AAUD,wDAEC;AAUD,gEAEC;AAUD,kDAEC;AAWD,kDAEC;AAGD,0DAEC;AAeD,8DAqCC;AAvqBD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,uCAAyB;AACzB,2CAA6B;AAE7B,oDAA4D;AAC5D,kEAAwE;AACxE,qCAAmC;AACnC,2CAA+C;AAE/C,oFAAoF;AACvE,QAAA,uBAAuB,GAAG,gBAAgB,CAAC;AA6HxD;;;;;GAKG;AACH,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C,qEAAqE;AACrE,MAAM,gBAAgB,GAA6B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrE,MAAM,YAAY,GAAiB,MAAM,CAAC,MAAM,CAAC;IAC/C,UAAU,EAAE,gBAAgB;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAwB;IACxD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAwB;IACjD,GAAG,EAAE,SAAS;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAwB;CAClD,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,gBAAO,EAAC,YAAY,+BAAuB,kBAAkB,EAAE;YAC7D,IAAI;YACJ,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC;IAE/D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,IACE,UAAU,KAAK,gBAAgB;QAC/B,cAAc,CAAC,MAAM,KAAK,CAAC;QAC3B,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,OAAO,CAAC,MAAM,KAAK,CAAC;QACpB,GAAG,KAAK,SAAS,EACjB,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO;QACL,UAAU;QACV,cAAc;QACd,OAAO;QACP,OAAO;QACP,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,IAAI,GAAI,MAAwB,CAAC,UAAU,CAAC;IAClD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAEtF,MAAM,GAAG,GAA6B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAA,gBAAO,EAAC,iCAAiC,+BAAuB,MAAM,MAAM,iCAAiC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzH,SAAS;QACX,CAAC;QACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAA,8BAAmB,EAAC,MAAkB,CAAC,EAAE,CAAC;YAC3E,IAAA,gBAAO,EAAC,uBAAuB,MAAM,QAAQ,+BAAuB,MAAM,MAAM,CAAC,MAAM,CAAC,+BAA+B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACnI,SAAS;QACX,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAkB,CAAC;IAChC,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC9D,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,MAAc,EAAE,IAAY;IACzD,MAAM,GAAG,GAAI,MAAwB,CAAC,cAAc,CAAC;IACrD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAA,gBAAO,EAAC,gCAAgC,+BAAuB,gDAAgD,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3H,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAA,gBAAO,EAAC,yCAAyC,+BAAuB,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAChI,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,IAAY;IAClD,MAAM,GAAG,GAAI,MAAwB,CAAC,OAAO,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAA,gBAAO,EAAC,yBAAyB,+BAAuB,gDAAgD,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAA,gBAAO,EAAC,kCAAkC,+BAAuB,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG,kDAAkD,CAAC;AAEhF,SAAS,iBAAiB,CAAC,MAAc,EAAE,IAAY;IACrD,MAAM,GAAG,GAAI,MAAc,CAAC,GAAG,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAA,gBAAO,EAAC,qBAAqB,+BAAuB,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAc,EAAE,CAAC;IAE1B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC5B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACtE,IAAA,gBAAO,EAAC,6BAA6B,+BAAuB,qBAAqB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAA4B,EAAE,CAAC;YAC/C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,IAAI,OAAO,MAAM,KAAK,SAAS,EAAE,CAAC;oBAChC,IAAA,gBAAO,EAAC,4BAA4B,MAAM,QAAQ,+BAAuB,2BAA2B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAChH,SAAS;gBACX,CAAC;gBACD,UAAU,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;YAC9B,CAAC;YACD,GAAG,CAAC,OAAO,GAAG,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC;IACrC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClF,IAAA,gBAAO,EAAC,oCAAoC,+BAAuB,uCAAuC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACxH,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,mEAAmE;IACnE,sBAAsB;IACtB,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;IACxC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,IAAI,OAAO,aAAa,KAAK,SAAS,EAAE,CAAC;YACvC,IAAA,gBAAO,EAAC,mCAAmC,+BAAuB,2BAA2B,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3G,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,aAAa,GAAG,aAAa,CAAC;QACpC,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,kCAAkC;IAClC,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,IAAA,gBAAO,EAAC,iCAAiC,+BAAuB,qCAAqC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnH,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAa,EAAE,CAAC;YACjC,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChD,IAAA,gBAAO,EAAC,kDAAkD,+BAAuB,kGAAkG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC/L,SAAS;gBACX,CAAC;gBACD,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;YACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,qEAAqE;IACrE,yBAAyB;IACzB,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;IACtC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACjC,IAAA,gBAAO,EAAC,kCAAkC,+BAAuB,qCAAqC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpH,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,IAAI,CAAC,KAAK,IAAI,CAAC,sCAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBAClD,IAAA,gBAAO,EAAC,mDAAmD,+BAAuB,wDAAwD,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtJ,SAAS;gBACX,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,YAAY,GAAG,UAAU,CAAC;QAC3D,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC,OAAO,KAAK,SAAS;WAC3B,GAAG,CAAC,cAAc,KAAK,SAAS;WAChC,GAAG,CAAC,aAAa,KAAK,SAAS;WAC/B,GAAG,CAAC,WAAW,KAAK,SAAS;WAC7B,GAAG,CAAC,YAAY,KAAK,SAAS;QACjC,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,IAAY;IAClD,MAAM,GAAG,GAAI,MAAwB,CAAC,OAAO,CAAC;IAC9C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAA,gBAAO,EAAC,yBAAyB,+BAAuB,gDAAgD,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpH,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAA,gBAAO,EAAC,kCAAkC,+BAAuB,4CAA4C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YACzH,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAAe;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,+BAAuB,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAA,4BAAgB,GAAE,EAAE,aAAa,CAAC,CAAC;IAExE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC;QACH,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;IACD,IAAI,CAAC;QACH,YAAY,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IAED,IAAI,WAAW,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;QAClF,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IACtE,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;IAE7E,sEAAsE;IACtE,MAAM,UAAU,GAAG,EAAE,GAAG,WAAW,CAAC,UAAU,EAAE,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;IAC3E,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,cAAc,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE9E,IAAI,GAA0B,CAAC;IAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO,IAAI,UAAU,CAAC,GAAG,EAAE,OAAO;QACvE,CAAC,CAAC;YACE,GAAG,WAAW,CAAC,GAAG,EAAE,OAAO;YAC3B,GAAG,UAAU,CAAC,GAAG,EAAE,OAAO;SAC3B;QACH,CAAC,CAAC,SAAS,CAAC;IACd,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,oBAAoB,GAAG,UAAU,CAAC,GAAG,EAAE,cAAc,KAAK,SAAS;QACvE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,cAAc;QAChC,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC;IACpC,MAAM,mBAAmB,GAAG,UAAU,CAAC,GAAG,EAAE,aAAa,KAAK,SAAS;QACrE,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,aAAa;QAC/B,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC;IACnC,6EAA6E;IAC7E,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE,WAAW,IAAI,UAAU,CAAC,GAAG,EAAE,WAAW;QACnF,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;gBACV,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,WAAW,IAAI,EAAE,CAAC;gBACvC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,IAAI,EAAE,CAAC;aACvC,CAAC,CAAC;QACL,CAAC,CAAC,SAAS,CAAC;IACd,yEAAyE;IACzE,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE,YAAY,IAAI,UAAU,CAAC,GAAG,EAAE,YAAY;QACtF,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC;gBACV,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,IAAI,EAAE,CAAC;gBACxC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,YAAY,IAAI,EAAE,CAAC;aACxC,CAAC,CAAC;QACL,CAAC,CAAC,SAAS,CAAC;IACd,IACE,aAAa;WACV,oBAAoB,KAAK,SAAS;WAClC,mBAAmB,KAAK,SAAS;WACjC,iBAAiB,KAAK,SAAS;WAC/B,kBAAkB,KAAK,SAAS,EACnC,CAAC;QACD,GAAG,GAAG,EAAE,CAAC;QACT,IAAI,aAAa;YAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC;QAC/C,IAAI,oBAAoB,KAAK,SAAS;YAAE,GAAG,CAAC,cAAc,GAAG,oBAAoB,CAAC;QAClF,IAAI,mBAAmB,KAAK,SAAS;YAAE,GAAG,CAAC,aAAa,GAAG,mBAAmB,CAAC;QAC/E,IAAI,iBAAiB,KAAK,SAAS;YAAE,GAAG,CAAC,WAAW,GAAG,iBAAiB,CAAC;QACzE,IAAI,kBAAkB,KAAK,SAAS;YAAE,GAAG,CAAC,YAAY,GAAG,kBAAkB,CAAC;IAC9E,CAAC;IAED,MAAM,MAAM,GAAiB;QAC3B,UAAU;QACV,cAAc;QACd,OAAO;QACP,OAAO;QACP,GAAG;KACJ,CAAC;IAEF,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,aAAa,CAAC,OAAe;IAC3C,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,OAAe;IACrD,MAAM,CAAC,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC;IACvD,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,sBAAsB,CAAC,OAAe;IACpD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,0BAA0B,CAAC,OAAe;IACxD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;AAClD,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAC3C,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,mBAAmB,CAAC,OAAe;IACjD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;AAC3C,CAAC;AAED,uFAAuF;AACvF,SAAgB,uBAAuB;IACrC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,yBAAyB,CAAC,OAAe,EAAE,QAAkB;IAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,+BAAuB,CAAC,CAAC;IACzD,IAAI,MAAM,GAA4B,EAAE,CAAC;IACzC,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,GAAG,IAAI,CAAC,CAAC,0CAA0C;IACxD,CAAC;IACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,GAAG,+BAAuB,mDAAmD,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,MAAM,GAAG,MAAiC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC;QACnD,CAAC,CAAE,MAAM,CAAC,cAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;QACxF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,KAAK,EAAE,CAAC;IACV,CAAC;IACD,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;IAC/B,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,uBAAuB,EAAE,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -302,10 +302,55 @@ export declare class ReferenceResolver {
302
302
  * (enum, class, interface, struct, type_alias). Exactly one match →
303
303
  * repoint; zero or 2+ → decline (leave the stub as-is).
304
304
  *
305
- * Duplicate `(source, target, 'references')` rows after repointing are
306
- * collapsed the same way `resolveVbaCallStubs` handles F1 duplicates.
305
+ * Duplicate `(source, target, kind)` rows after repointing are collapsed the
306
+ * same way `resolveVbaCallStubs` handles F1 duplicates.
307
+ *
308
+ * Issue #257: `type_of` edges are repointed alongside `references` ones.
309
+ * They share the stub by construction (`emitTypeOf` and `emitReference` both
310
+ * go through `ensureSynthTypeNode`), and the stub is DELETED at the end of
311
+ * each iteration — with `ON DELETE CASCADE` on both endpoint columns, an
312
+ * un-repointed `type_of` edge would be silently destroyed rather than
313
+ * resolved. The de-duplication key carries the edge kind so a module's
314
+ * `references` edge and its parameter's `type_of` edge onto the same type
315
+ * cannot collapse into each other.
307
316
  */
308
317
  resolveVbaReferenceStubs(): number;
318
+ /**
319
+ * Promote Access ERD table declarations to canonical and repoint the
320
+ * SQL-derived placeholders onto them (#257, half B).
321
+ *
322
+ * Two extractors already synthesize a `class` placeholder for every table
323
+ * name they see in SQL text (`vba-sql-table` from in-code SQL,
324
+ * `sql-query-table` from a saved query), each keyed on the REFERENCING file.
325
+ * `AccessErdExtractor` emits its own table node keyed on the ERD document.
326
+ * Left alone, `TbAnexos` from the ERD and `TbAnexos` from a `SELECT` in a
327
+ * `.cls` are two unrelated nodes — the fields land on one, the references on
328
+ * the other, and the whole feature buys nothing.
329
+ *
330
+ * This pass is the convergence step, and it reuses the mechanism
331
+ * `resolveVbaCallStubs` already proved: repoint the incoming edges onto the
332
+ * canonical node, collapse would-be duplicates, delete the emptied
333
+ * placeholder, and stamp `metadata.repointDecision` on every edge it touched
334
+ * so the outcome is auditable (same vocabulary as `docs/vba-stub-repoint-
335
+ * decision.md`).
336
+ *
337
+ * Three deliberate declines:
338
+ * - **No ERD declares this name** → leave the placeholder exactly as it is.
339
+ * That is the no-ERD project, and its behavior must not change at all.
340
+ * - **Two ERD files declare the same name** (two backends, same table) →
341
+ * `declined-ambiguous`. Repoint nothing and keep both declarations; which
342
+ * backend a bare `SELECT` meant is not something to guess.
343
+ * - **The placeholder still has other edges** → keep the node. Only a
344
+ * placeholder whose every edge has moved is deleted.
345
+ *
346
+ * Runs BEFORE `resolveVbaReferenceStubs` so this explicit, decision-stamping
347
+ * pass owns the outcome rather than the generic stub resolver silently
348
+ * arriving at half of it. Idempotent: a repointed placeholder is gone, so a
349
+ * second pass finds nothing to do.
350
+ *
351
+ * @returns the number of edges repointed onto an ERD table node.
352
+ */
353
+ resolveAccessErdTableNodes(): number;
309
354
  /**
310
355
  * Resolve a single VBA call-stub node to its real target, or `null` when
311
356
  * unresolvable/ambiguous. See `resolveVbaCallStubs` for the two-step
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resolution/index.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,7 @@ const lru_cache_1 = require("./lru-cache");
59
59
  const vba_runtime_objects_1 = require("./vba-runtime-objects");
60
60
  const vba_access_object_name_1 = require("./vba-access-object-name");
61
61
  const tree_sitter_helpers_1 = require("../extraction/tree-sitter-helpers");
62
+ const filesystem_statements_1 = require("../extraction/vba/filesystem-statements");
62
63
  /** Node kinds that can declare supertypes (extends/implements). */
63
64
  const SUPERTYPE_BEARING_KINDS = new Set([
64
65
  'class', 'struct', 'interface', 'trait', 'protocol', 'enum',
@@ -755,6 +756,11 @@ class ReferenceResolver {
755
756
  * Resolve a single reference
756
757
  */
757
758
  resolveOne(ref) {
759
+ // Exact VBA filesystem statements are runtime syntax, even when a project
760
+ // declares a same-named Kill/Open/Close procedure. Never offer these refs
761
+ // to normal symbol matching; persistence classifies the same exact shape.
762
+ if ((0, filesystem_statements_1.isExactVbaFilesystemStatementReference)(ref))
763
+ return null;
758
764
  // Skip built-in/external references
759
765
  if (this.isBuiltInOrExternal(ref)) {
760
766
  return null;
@@ -773,6 +779,19 @@ class ReferenceResolver {
773
779
  if (ref.metadata?.synthesizedBy === 'vba-me-control' && ref.metadata?.siblingPath) {
774
780
  return (0, name_matcher_1.matchVbaMeControl)(ref, this.context);
775
781
  }
782
+ // Issue #251: module-level variable reads/writes are file-scoped for
783
+ // the same reason. A miss must stay a miss rather than binding some
784
+ // other module's identically-named private variable.
785
+ if (ref.metadata?.synthesizedBy === 'vba-module-var') {
786
+ return (0, name_matcher_1.matchVbaModuleVariable)(ref, this.context);
787
+ }
788
+ // Issue #253: a saved-query name binds to a `query` node or to nothing.
789
+ // No fallthrough: a miss must stay a `failed` reference rather than
790
+ // becoming a fabricated table placeholder or binding some same-named
791
+ // class, which is the confidently-wrong outcome this gate exists to stop.
792
+ if (ref.metadata?.synthesizedBy === 'vba-query-name') {
793
+ return (0, name_matcher_1.matchVbaQueryName)(ref, this.context);
794
+ }
776
795
  // CFML component paths in inheritance (#1152): `extends="coldbox.system.web.
777
796
  // Controller"` names the supertype by its dot-separated path (or `extends=
778
797
  // "../base"` by relative file path) — the graph indexes the class under its
@@ -1055,11 +1074,34 @@ class ReferenceResolver {
1055
1074
  eventName: ref.original.metadata?.eventName,
1056
1075
  }
1057
1076
  : {}),
1077
+ // Issue #251: keep the read/write direction on the resolved
1078
+ // edge so "who WRITES this global" stays answerable after
1079
+ // resolution, the same way the control sweep's `access` does.
1080
+ ...(ref.original.metadata?.synthesizedBy === 'vba-module-var'
1081
+ ? {
1082
+ synthesizedBy: 'vba-module-var',
1083
+ access: ref.original.metadata.access,
1084
+ // Issue #261: and keep the error-channel flag, so the
1085
+ // propagation chain stays identifiable AFTER resolution —
1086
+ // an edge that lost it would leave the answer to "how does
1087
+ // this error reach the user" only in the unresolved table.
1088
+ // Absent (never `false`) when this is ordinary module state.
1089
+ ...(ref.original.metadata.errorChannel
1090
+ ? { errorChannel: true }
1091
+ : {}),
1092
+ }
1093
+ : {}),
1058
1094
  ...(ref.original.metadata?.synthesizedBy === 'vba-me-control'
1059
1095
  ? {
1060
1096
  synthesizedBy: 'vba-me-control',
1061
1097
  siblingPath: ref.original.metadata.siblingPath,
1062
1098
  access: ref.original.metadata.access,
1099
+ // Issue #249: only set when the code-behind's filename and
1100
+ // its `Attribute VB_Name` disagree, so the resulting edge
1101
+ // says why it bound instead of hiding the mismatch.
1102
+ ...(ref.original.metadata.bindingSource
1103
+ ? { bindingSource: ref.original.metadata.bindingSource }
1104
+ : {}),
1063
1105
  }
1064
1106
  : {}),
1065
1107
  },
@@ -2007,8 +2049,17 @@ class ReferenceResolver {
2007
2049
  * (enum, class, interface, struct, type_alias). Exactly one match →
2008
2050
  * repoint; zero or 2+ → decline (leave the stub as-is).
2009
2051
  *
2010
- * Duplicate `(source, target, 'references')` rows after repointing are
2011
- * collapsed the same way `resolveVbaCallStubs` handles F1 duplicates.
2052
+ * Duplicate `(source, target, kind)` rows after repointing are collapsed the
2053
+ * same way `resolveVbaCallStubs` handles F1 duplicates.
2054
+ *
2055
+ * Issue #257: `type_of` edges are repointed alongside `references` ones.
2056
+ * They share the stub by construction (`emitTypeOf` and `emitReference` both
2057
+ * go through `ensureSynthTypeNode`), and the stub is DELETED at the end of
2058
+ * each iteration — with `ON DELETE CASCADE` on both endpoint columns, an
2059
+ * un-repointed `type_of` edge would be silently destroyed rather than
2060
+ * resolved. The de-duplication key carries the edge kind so a module's
2061
+ * `references` edge and its parameter's `type_of` edge onto the same type
2062
+ * cannot collapse into each other.
2012
2063
  */
2013
2064
  resolveVbaReferenceStubs() {
2014
2065
  const stubs = this.queries.getVbaReferenceStubs();
@@ -2029,13 +2080,16 @@ class ReferenceResolver {
2029
2080
  if (candidates.length !== 1)
2030
2081
  continue; // 0 or 2+ → decline
2031
2082
  const real = candidates[0];
2032
- const incoming = this.queries.getIncomingEdges(stub.id, ['references']);
2083
+ const incoming = this.queries.getIncomingEdges(stub.id, [
2084
+ 'references',
2085
+ 'type_of',
2086
+ ]);
2033
2087
  for (const edge of incoming) {
2034
2088
  if (edge.id === undefined)
2035
2089
  continue;
2036
- const tupleKey = `${edge.source}\0${real.id}`;
2090
+ const tupleKey = `${edge.source}\0${real.id}\0${edge.kind}`;
2037
2091
  if (seenTuples.has(tupleKey) ||
2038
- this.queries.edgeExists(edge.source, real.id, 'references')) {
2092
+ this.queries.edgeExists(edge.source, real.id, edge.kind)) {
2039
2093
  this.queries.deleteEdgeById(edge.id);
2040
2094
  continue;
2041
2095
  }
@@ -2049,6 +2103,107 @@ class ReferenceResolver {
2049
2103
  }
2050
2104
  return repointedCount;
2051
2105
  }
2106
+ /**
2107
+ * Promote Access ERD table declarations to canonical and repoint the
2108
+ * SQL-derived placeholders onto them (#257, half B).
2109
+ *
2110
+ * Two extractors already synthesize a `class` placeholder for every table
2111
+ * name they see in SQL text (`vba-sql-table` from in-code SQL,
2112
+ * `sql-query-table` from a saved query), each keyed on the REFERENCING file.
2113
+ * `AccessErdExtractor` emits its own table node keyed on the ERD document.
2114
+ * Left alone, `TbAnexos` from the ERD and `TbAnexos` from a `SELECT` in a
2115
+ * `.cls` are two unrelated nodes — the fields land on one, the references on
2116
+ * the other, and the whole feature buys nothing.
2117
+ *
2118
+ * This pass is the convergence step, and it reuses the mechanism
2119
+ * `resolveVbaCallStubs` already proved: repoint the incoming edges onto the
2120
+ * canonical node, collapse would-be duplicates, delete the emptied
2121
+ * placeholder, and stamp `metadata.repointDecision` on every edge it touched
2122
+ * so the outcome is auditable (same vocabulary as `docs/vba-stub-repoint-
2123
+ * decision.md`).
2124
+ *
2125
+ * Three deliberate declines:
2126
+ * - **No ERD declares this name** → leave the placeholder exactly as it is.
2127
+ * That is the no-ERD project, and its behavior must not change at all.
2128
+ * - **Two ERD files declare the same name** (two backends, same table) →
2129
+ * `declined-ambiguous`. Repoint nothing and keep both declarations; which
2130
+ * backend a bare `SELECT` meant is not something to guess.
2131
+ * - **The placeholder still has other edges** → keep the node. Only a
2132
+ * placeholder whose every edge has moved is deleted.
2133
+ *
2134
+ * Runs BEFORE `resolveVbaReferenceStubs` so this explicit, decision-stamping
2135
+ * pass owns the outcome rather than the generic stub resolver silently
2136
+ * arriving at half of it. Idempotent: a repointed placeholder is gone, so a
2137
+ * second pass finds nothing to do.
2138
+ *
2139
+ * @returns the number of edges repointed onto an ERD table node.
2140
+ */
2141
+ resolveAccessErdTableNodes() {
2142
+ const erdTables = this.queries.getAccessErdTableNodes();
2143
+ if (erdTables.length === 0)
2144
+ return 0; // no ERD in this project — no-op
2145
+ // name (lower-cased) → the single ERD declaration, or `null` when two or
2146
+ // more ERD documents declare that name.
2147
+ const byName = new Map();
2148
+ for (const table of erdTables) {
2149
+ const key = table.name.toLowerCase();
2150
+ byName.set(key, byName.has(key) ? null : table);
2151
+ }
2152
+ const erdIds = new Set(erdTables.map((t) => t.id));
2153
+ const seenTuples = new Set();
2154
+ let repointedCount = 0;
2155
+ for (const placeholder of this.queries.getSqlTablePlaceholders()) {
2156
+ if (erdIds.has(placeholder.id))
2157
+ continue; // an ERD node is never a placeholder
2158
+ const key = placeholder.name.toLowerCase();
2159
+ if (!byName.has(key))
2160
+ continue; // no declaration for this table — unchanged
2161
+ const target = byName.get(key) ?? null;
2162
+ // Only the SQL-derived table references move. A placeholder may also be
2163
+ // the target of an unrelated `references` edge (a same-named VBA type,
2164
+ // say); repointing that onto a table would be a confident wrong answer.
2165
+ const incoming = this.queries
2166
+ .getIncomingEdges(placeholder.id, ['references'])
2167
+ .filter((e) => {
2168
+ const by = e.metadata?.synthesizedBy;
2169
+ return by === 'vba-sql-table' || by === 'sql-query-table';
2170
+ });
2171
+ if (!target) {
2172
+ // Ambiguous: stamp the decision, move nothing, keep every node.
2173
+ for (const edge of incoming) {
2174
+ if (edge.id === undefined)
2175
+ continue;
2176
+ const meta = { ...(edge.metadata ?? {}), repointDecision: 'declined-ambiguous' };
2177
+ this.queries.repointEdgeTarget(edge.id, edge.target, JSON.stringify(meta));
2178
+ }
2179
+ continue;
2180
+ }
2181
+ for (const edge of incoming) {
2182
+ if (edge.id === undefined)
2183
+ continue;
2184
+ const tupleKey = `${edge.source}\0${target.id}`;
2185
+ if (seenTuples.has(tupleKey) ||
2186
+ this.queries.edgeExists(edge.source, target.id, 'references')) {
2187
+ // The same module referencing the table twice would otherwise leave
2188
+ // two identical rows and double-count the caller.
2189
+ this.queries.deleteEdgeById(edge.id);
2190
+ continue;
2191
+ }
2192
+ seenTuples.add(tupleKey);
2193
+ const meta = { ...(edge.metadata ?? {}), repointDecision: 'reponted-to-real' };
2194
+ this.queries.repointEdgeTarget(edge.id, target.id, JSON.stringify(meta));
2195
+ repointedCount++;
2196
+ }
2197
+ // Delete the placeholder only once NOTHING points at it and it points at
2198
+ // nothing — it carries only a name, so an emptied one is pure noise, but
2199
+ // a still-connected one is somebody else's node.
2200
+ if (this.queries.getIncomingEdges(placeholder.id).length === 0 &&
2201
+ this.queries.getOutgoingEdges(placeholder.id).length === 0) {
2202
+ this.queries.deleteNode(placeholder.id);
2203
+ }
2204
+ }
2205
+ return repointedCount;
2206
+ }
2052
2207
  /**
2053
2208
  * Resolve a single VBA call-stub node to its real target, or `null` when
2054
2209
  * unresolvable/ambiguous. See `resolveVbaCallStubs` for the two-step