@aroman22/codegraph-vba-darwin-arm64 1.5.2 → 1.6.1
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.
- package/bin/codegraph +5 -0
- package/lib/dist/bin/codegraph.d.ts +1 -1
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +307 -81
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/command-supervision.d.ts +38 -1
- package/lib/dist/bin/command-supervision.d.ts.map +1 -1
- package/lib/dist/bin/command-supervision.js +22 -3
- package/lib/dist/bin/command-supervision.js.map +1 -1
- package/lib/dist/db/index.d.ts +84 -5
- package/lib/dist/db/index.d.ts.map +1 -1
- package/lib/dist/db/index.js +209 -12
- package/lib/dist/db/index.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +80 -3
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts +116 -4
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +294 -7
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +43 -1
- package/lib/dist/db/wal-valve.d.ts +106 -0
- package/lib/dist/db/wal-valve.d.ts.map +1 -0
- package/lib/dist/db/wal-valve.js +208 -0
- package/lib/dist/db/wal-valve.js.map +1 -0
- package/lib/dist/directory.d.ts +9 -5
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +210 -19
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/cfml-extractor.d.ts +107 -0
- package/lib/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/cfml-extractor.js +494 -0
- package/lib/dist/extraction/cfml-extractor.js.map +1 -0
- package/lib/dist/extraction/grammars.d.ts +25 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +177 -23
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +47 -2
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +568 -51
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/arkts.d.ts +3 -0
- package/lib/dist/extraction/languages/arkts.d.ts.map +1 -0
- package/lib/dist/extraction/languages/arkts.js +127 -0
- package/lib/dist/extraction/languages/arkts.js.map +1 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts +98 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +563 -1
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/cfquery.d.ts +12 -0
- package/lib/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfquery.js +28 -0
- package/lib/dist/extraction/languages/cfquery.js.map +1 -0
- package/lib/dist/extraction/languages/cfscript.d.ts +3 -0
- package/lib/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfscript.js +73 -0
- package/lib/dist/extraction/languages/cfscript.js.map +1 -0
- package/lib/dist/extraction/languages/cobol.d.ts +33 -0
- package/lib/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cobol.js +499 -0
- package/lib/dist/extraction/languages/cobol.js.map +1 -0
- package/lib/dist/extraction/languages/erlang.d.ts +3 -0
- package/lib/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/lib/dist/extraction/languages/erlang.js +350 -0
- package/lib/dist/extraction/languages/erlang.js.map +1 -0
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +18 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/nix.d.ts +3 -0
- package/lib/dist/extraction/languages/nix.d.ts.map +1 -0
- package/lib/dist/extraction/languages/nix.js +294 -0
- package/lib/dist/extraction/languages/nix.js.map +1 -0
- package/lib/dist/extraction/languages/solidity.d.ts +3 -0
- package/lib/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/lib/dist/extraction/languages/solidity.js +293 -0
- package/lib/dist/extraction/languages/solidity.js.map +1 -0
- package/lib/dist/extraction/languages/terraform.d.ts +3 -0
- package/lib/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/lib/dist/extraction/languages/terraform.js +641 -0
- package/lib/dist/extraction/languages/terraform.js.map +1 -0
- package/lib/dist/extraction/languages/vbnet.d.ts +11 -0
- package/lib/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/lib/dist/extraction/languages/vbnet.js +141 -0
- package/lib/dist/extraction/languages/vbnet.js.map +1 -0
- package/lib/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/mybatis-extractor.js +140 -38
- package/lib/dist/extraction/mybatis-extractor.js.map +1 -1
- package/lib/dist/extraction/parse-pool.d.ts +28 -1
- package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
- package/lib/dist/extraction/parse-pool.js +76 -7
- package/lib/dist/extraction/parse-pool.js.map +1 -1
- package/lib/dist/extraction/parse-worker.js +11 -4
- package/lib/dist/extraction/parse-worker.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.js +1 -0
- package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts +20 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +60 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +905 -20
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts +3 -0
- package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -0
- package/lib/dist/extraction/vba/call-sweep.js +206 -0
- package/lib/dist/extraction/vba/call-sweep.js.map +1 -0
- package/lib/dist/extraction/vba/calls.d.ts +55 -0
- package/lib/dist/extraction/vba/calls.d.ts.map +1 -0
- package/lib/dist/extraction/vba/calls.js +439 -0
- package/lib/dist/extraction/vba/calls.js.map +1 -0
- package/lib/dist/extraction/vba/constants.d.ts +42 -0
- package/lib/dist/extraction/vba/constants.d.ts.map +1 -0
- package/lib/dist/extraction/vba/constants.js +112 -0
- package/lib/dist/extraction/vba/constants.js.map +1 -0
- package/lib/dist/extraction/vba/context.d.ts +175 -0
- package/lib/dist/extraction/vba/context.d.ts.map +1 -0
- package/lib/dist/extraction/vba/context.js +268 -0
- package/lib/dist/extraction/vba/context.js.map +1 -0
- package/lib/dist/extraction/vba/controls.d.ts +24 -0
- package/lib/dist/extraction/vba/controls.d.ts.map +1 -0
- package/lib/dist/extraction/vba/controls.js +89 -0
- package/lib/dist/extraction/vba/controls.js.map +1 -0
- package/lib/dist/extraction/vba/declarations.d.ts +3 -0
- package/lib/dist/extraction/vba/declarations.d.ts.map +1 -0
- package/lib/dist/extraction/vba/declarations.js +154 -0
- package/lib/dist/extraction/vba/declarations.js.map +1 -0
- package/lib/dist/extraction/vba/dims.d.ts +3 -0
- package/lib/dist/extraction/vba/dims.d.ts.map +1 -0
- package/lib/dist/extraction/vba/dims.js +186 -0
- package/lib/dist/extraction/vba/dims.js.map +1 -0
- package/lib/dist/extraction/vba/docmd.d.ts +16 -0
- package/lib/dist/extraction/vba/docmd.d.ts.map +1 -0
- package/lib/dist/extraction/vba/docmd.js +179 -0
- package/lib/dist/extraction/vba/docmd.js.map +1 -0
- package/lib/dist/extraction/vba/enums-consts.d.ts +15 -0
- package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -0
- package/lib/dist/extraction/vba/enums-consts.js +178 -0
- package/lib/dist/extraction/vba/enums-consts.js.map +1 -0
- package/lib/dist/extraction/vba/implements.d.ts +3 -0
- package/lib/dist/extraction/vba/implements.d.ts.map +1 -0
- package/lib/dist/extraction/vba/implements.js +52 -0
- package/lib/dist/extraction/vba/implements.js.map +1 -0
- package/lib/dist/extraction/vba/procedures.d.ts +3 -0
- package/lib/dist/extraction/vba/procedures.d.ts.map +1 -0
- package/lib/dist/extraction/vba/procedures.js +239 -0
- package/lib/dist/extraction/vba/procedures.js.map +1 -0
- package/lib/dist/extraction/vba/sql-wrapper.d.ts +17 -0
- package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -0
- package/lib/dist/extraction/vba/sql-wrapper.js +212 -0
- package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -0
- package/lib/dist/extraction/vba/tempvars.d.ts +10 -0
- package/lib/dist/extraction/vba/tempvars.d.ts.map +1 -0
- package/lib/dist/extraction/vba/tempvars.js +138 -0
- package/lib/dist/extraction/vba/tempvars.js.map +1 -0
- package/lib/dist/extraction/vba/text-utils.d.ts +73 -0
- package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -0
- package/lib/dist/extraction/vba/text-utils.js +195 -0
- package/lib/dist/extraction/vba/text-utils.js.map +1 -0
- package/lib/dist/extraction/vba-extractor.d.ts +3 -951
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +46 -2934
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +300 -88
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/lib/dist/graph/traversal.d.ts.map +1 -1
- package/lib/dist/graph/traversal.js +76 -17
- package/lib/dist/graph/traversal.js.map +1 -1
- package/lib/dist/index.d.ts +81 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +460 -10
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts +42 -0
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +97 -2
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +35 -3
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +101 -9
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.js +2 -1
- package/lib/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/lib/dist/mcp/early-ppid.d.ts +26 -0
- package/lib/dist/mcp/early-ppid.d.ts.map +1 -0
- package/lib/dist/mcp/early-ppid.js +29 -0
- package/lib/dist/mcp/early-ppid.js.map +1 -0
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +29 -4
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/liveness-watchdog.d.ts +18 -1
- package/lib/dist/mcp/liveness-watchdog.d.ts.map +1 -1
- package/lib/dist/mcp/liveness-watchdog.js +73 -13
- package/lib/dist/mcp/liveness-watchdog.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +30 -4
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/query-pool.d.ts +14 -0
- package/lib/dist/mcp/query-pool.d.ts.map +1 -1
- package/lib/dist/mcp/query-pool.js +18 -0
- package/lib/dist/mcp/query-pool.js.map +1 -1
- package/lib/dist/mcp/session.d.ts +14 -0
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +28 -1
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/startup-handshake.d.ts +44 -0
- package/lib/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/lib/dist/mcp/startup-handshake.js +73 -0
- package/lib/dist/mcp/startup-handshake.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +22 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +289 -23
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +18 -0
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/project-config.d.ts +44 -0
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +151 -2
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.js +170 -146
- package/lib/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +1109 -97
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/cooperative-yield.d.ts +32 -0
- package/lib/dist/resolution/cooperative-yield.d.ts.map +1 -0
- package/lib/dist/resolution/cooperative-yield.js +42 -0
- package/lib/dist/resolution/cooperative-yield.js.map +1 -0
- package/lib/dist/resolution/frameworks/cics.d.ts +20 -0
- package/lib/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/cics.js +90 -0
- package/lib/dist/resolution/frameworks/cics.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +6 -0
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +14 -6
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/lib/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/terraform.js +277 -0
- package/lib/dist/resolution/frameworks/terraform.js.map +1 -0
- package/lib/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/goframe-synthesizer.js +8 -3
- package/lib/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/lib/dist/resolution/import-resolver.d.ts +7 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +129 -4
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +64 -2
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +476 -58
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +22 -3
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +613 -39
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/strip-comments.d.ts +1 -1
- package/lib/dist/resolution/strip-comments.d.ts.map +1 -1
- package/lib/dist/resolution/strip-comments.js +49 -0
- package/lib/dist/resolution/strip-comments.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +29 -0
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.d.ts +10 -0
- package/lib/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.js +142 -4
- package/lib/dist/resolution/workspace-packages.js.map +1 -1
- package/lib/dist/search/identifier-segments.d.ts +60 -0
- package/lib/dist/search/identifier-segments.d.ts.map +1 -0
- package/lib/dist/search/identifier-segments.js +176 -0
- package/lib/dist/search/identifier-segments.js.map +1 -0
- package/lib/dist/sync/git-hooks.d.ts.map +1 -1
- package/lib/dist/sync/git-hooks.js +2 -0
- package/lib/dist/sync/git-hooks.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +10 -5
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +51 -14
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/sync/worktree.d.ts +9 -0
- package/lib/dist/sync/worktree.d.ts.map +1 -1
- package/lib/dist/sync/worktree.js +45 -0
- package/lib/dist/sync/worktree.js.map +1 -1
- package/lib/dist/types.d.ts +25 -2
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +10 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/dist/upgrade/index.d.ts +34 -2
- package/lib/dist/upgrade/index.d.ts.map +1 -1
- package/lib/dist/upgrade/index.js +164 -15
- package/lib/dist/upgrade/index.js.map +1 -1
- package/lib/dist/upgrade/remove-binary.d.ts +87 -0
- package/lib/dist/upgrade/remove-binary.d.ts.map +1 -0
- package/lib/dist/upgrade/remove-binary.js +289 -0
- package/lib/dist/upgrade/remove-binary.js.map +1 -0
- package/lib/dist/upgrade/update-check.d.ts +92 -0
- package/lib/dist/upgrade/update-check.d.ts.map +1 -0
- package/lib/dist/upgrade/update-check.js +258 -0
- package/lib/dist/upgrade/update-check.js.map +1 -0
- package/lib/node_modules/.modules.yaml +1 -1
- package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
- package/lib/dist/reasoning/config.d.ts +0 -45
- package/lib/dist/reasoning/config.d.ts.map +0 -1
- package/lib/dist/reasoning/config.js +0 -171
- package/lib/dist/reasoning/config.js.map +0 -1
- package/lib/dist/reasoning/credentials.d.ts +0 -5
- package/lib/dist/reasoning/credentials.d.ts.map +0 -1
- package/lib/dist/reasoning/credentials.js +0 -83
- package/lib/dist/reasoning/credentials.js.map +0 -1
- package/lib/dist/reasoning/login.d.ts +0 -21
- package/lib/dist/reasoning/login.d.ts.map +0 -1
- package/lib/dist/reasoning/login.js +0 -85
- package/lib/dist/reasoning/login.js.map +0 -1
- package/lib/dist/reasoning/reasoner.d.ts +0 -43
- package/lib/dist/reasoning/reasoner.d.ts.map +0 -1
- package/lib/dist/reasoning/reasoner.js +0 -308
- package/lib/dist/reasoning/reasoner.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-sweep.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAY,MAAM,WAAW,CAAC;AA8B1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CA8L5E"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sweepCallsAndSql = sweepCallsAndSql;
|
|
4
|
+
/**
|
|
5
|
+
* Call/SQL sweep orchestrator (REQ-CODE-4, REQ-CODE-8). Walks the
|
|
6
|
+
* (uncommented) source once, maintaining the procedure stack and `With`
|
|
7
|
+
* receiver stack, and dispatches every per-line scanner: raise-events,
|
|
8
|
+
* call-sites, Me/Forms control refs, SQL wrappers, statement/qualified calls,
|
|
9
|
+
* `Set x = New …` late-instantiation, `DoCmd.Open*`, and TempVars.
|
|
10
|
+
*/
|
|
11
|
+
const constants_1 = require("./constants");
|
|
12
|
+
const text_utils_1 = require("./text-utils");
|
|
13
|
+
const calls_1 = require("./calls");
|
|
14
|
+
const controls_1 = require("./controls");
|
|
15
|
+
const docmd_1 = require("./docmd");
|
|
16
|
+
const tempvars_1 = require("./tempvars");
|
|
17
|
+
const sql_wrapper_1 = require("./sql-wrapper");
|
|
18
|
+
/**
|
|
19
|
+
* Issue #46: `Set <var> = New <Type>[.<Inner>]` late-instantiation.
|
|
20
|
+
* Groups: (1) variable name, (2) outer type, (3) optional inner type.
|
|
21
|
+
* Operates on the MASKED line so `Set x = New Foo` inside a string literal
|
|
22
|
+
* never matches.
|
|
23
|
+
*/
|
|
24
|
+
const SET_NEW_RE = /\bSet\s+(\p{L}[\p{L}\p{N}_]*)\s*=\s*New\s+(\p{L}[\p{L}\p{N}_]*)(?:\.(\p{L}[\p{L}\p{N}_]*))?/iu;
|
|
25
|
+
/** Issue #43: track the receiver for `With <expr>` / `End With` blocks. */
|
|
26
|
+
const WITH_START_RE = /^\s*With\b\s+(.+?)\s*$/iu;
|
|
27
|
+
const WITH_END_RE = /^\s*End\s+With\b/iu;
|
|
28
|
+
function sweepCallsAndSql(ctx, src) {
|
|
29
|
+
const lines = src.split('\n');
|
|
30
|
+
const procedureStartLines = new Set();
|
|
31
|
+
const sqlTargetsThisFile = new Set();
|
|
32
|
+
// Issue #52: reset the shared scope state before the per-line walk
|
|
33
|
+
// begins. `sweepEnumsAndConsts` already populated `procStack` /
|
|
34
|
+
// `currentProcKey` during its own walk; clearing here guarantees the
|
|
35
|
+
// `scanDoCmdOpenCalls` / `scanDoCmdOpenQuery` reads (which consult
|
|
36
|
+
// `currentProcKey` per call-site) start in module scope and follow
|
|
37
|
+
// the same push/pop discipline as the existing `stack` array below.
|
|
38
|
+
ctx.procStack.length = 0;
|
|
39
|
+
ctx.currentProcKey = 'module';
|
|
40
|
+
// Walk the source once, emitting call edges and SQL edges per line and
|
|
41
|
+
// tracking the current procedure stack.
|
|
42
|
+
const stack = [];
|
|
43
|
+
const withReceiverStack = [];
|
|
44
|
+
const sqlVariables = new Map();
|
|
45
|
+
// C2 fix: track each procedure's `endLine` (the line containing the
|
|
46
|
+
// matching `End Sub`/`End Function`/`End Property`) keyed by its
|
|
47
|
+
// `startLine`. After the loop, we update every function node's
|
|
48
|
+
// `endLine` so `codegraph_explore` returns the full body span —
|
|
49
|
+
// not just the signature line.
|
|
50
|
+
const procEndLines = new Map();
|
|
51
|
+
for (let i = 0; i < lines.length; i++) {
|
|
52
|
+
const line = lines[i] ?? '';
|
|
53
|
+
const lineNum = i + 1;
|
|
54
|
+
const procStart = constants_1.PROC_RE.exec(line);
|
|
55
|
+
if (procStart) {
|
|
56
|
+
// Issue #52: mirror the proc push into the shared
|
|
57
|
+
// `procStack` + `currentProcKey` so Const reads in this same
|
|
58
|
+
// sweep see the same scope as the const writes did (during
|
|
59
|
+
// `sweepEnumsAndConsts`).
|
|
60
|
+
const procStartLine = lineNum;
|
|
61
|
+
ctx.procStack.push(procStartLine);
|
|
62
|
+
ctx.currentProcKey = String(procStartLine);
|
|
63
|
+
const name = procStart[3] ?? '';
|
|
64
|
+
const bucket = ctx.localProcs.get(name);
|
|
65
|
+
if (bucket) {
|
|
66
|
+
// Fix 1: select the ProcInfo whose startLine matches the current
|
|
67
|
+
// line, not always bucket[0]. When Property Get/Let/Set share a
|
|
68
|
+
// name, all three exist in the bucket; pushing bucket[0] every time
|
|
69
|
+
// meant Let/Set bodies erroneously attributed to the Get's ProcInfo.
|
|
70
|
+
const proc = bucket.find((p) => p.startLine === lineNum) ?? bucket[0];
|
|
71
|
+
if (proc)
|
|
72
|
+
stack.push(proc);
|
|
73
|
+
}
|
|
74
|
+
procedureStartLines.add(lineNum);
|
|
75
|
+
}
|
|
76
|
+
else if (constants_1.PROCEDURE_END_RE.test(line) && stack.length > 0) {
|
|
77
|
+
const ending = stack.pop();
|
|
78
|
+
// Issue #52: mirror the pop into the shared scope state.
|
|
79
|
+
ctx.procStack.pop();
|
|
80
|
+
ctx.currentProcKey =
|
|
81
|
+
ctx.procStack.length > 0
|
|
82
|
+
? String(ctx.procStack[ctx.procStack.length - 1])
|
|
83
|
+
: 'module';
|
|
84
|
+
procEndLines.set(ending.startLine, lineNum);
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Fix 2 (Issue #2): mask string-literal content before call scanning so
|
|
88
|
+
// patterns like `modHelper.BuildQuery(` inside a string argument are not
|
|
89
|
+
// mistakenly treated as call sites. SQL scanning still uses the original
|
|
90
|
+
// line because SQL lives INSIDE string literals.
|
|
91
|
+
const callScanLine = (0, text_utils_1.maskStringContent)(line);
|
|
92
|
+
if (stack.length > 0 && WITH_END_RE.test(callScanLine)) {
|
|
93
|
+
withReceiverStack.pop();
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
if (stack.length > 0 && !procedureStartLines.has(lineNum)) {
|
|
97
|
+
const withStart = WITH_START_RE.exec(callScanLine);
|
|
98
|
+
if (withStart) {
|
|
99
|
+
const receiver = (0, calls_1.normalizeWithReceiver)(withStart[1] ?? '');
|
|
100
|
+
if (receiver)
|
|
101
|
+
withReceiverStack.push(receiver);
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Don't scan call sites on the line that declares the procedure — it
|
|
106
|
+
// would match the proc name itself in `Sub Outer()`.
|
|
107
|
+
if (!procedureStartLines.has(lineNum) && stack.length > 0) {
|
|
108
|
+
const currentProc = stack[stack.length - 1];
|
|
109
|
+
(0, calls_1.scanRaiseEvents)(ctx, callScanLine, currentProc, lineNum);
|
|
110
|
+
(0, calls_1.scanCallSites)(ctx, callScanLine, currentProc, lineNum);
|
|
111
|
+
}
|
|
112
|
+
// Hueco 1: capture `Me.<Control>` references. Only inside procedures
|
|
113
|
+
// because `Me` is only meaningful inside a form's class module.
|
|
114
|
+
if (!procedureStartLines.has(lineNum) && stack.length > 0) {
|
|
115
|
+
(0, controls_1.scanMeControlReferences)(ctx, callScanLine, stack[stack.length - 1], lineNum);
|
|
116
|
+
}
|
|
117
|
+
// SQL wrappers — only inside a procedure. Use the ORIGINAL line — SQL is
|
|
118
|
+
// inside string literals, so the masked line would strip the SQL content.
|
|
119
|
+
if (stack.length > 0) {
|
|
120
|
+
(0, sql_wrapper_1.trackSqlVariableAssignment)(lines, i, sqlVariables);
|
|
121
|
+
(0, sql_wrapper_1.scanSqlInLine)(ctx, line, lineNum, sqlTargetsThisFile, sqlVariables);
|
|
122
|
+
}
|
|
123
|
+
// H1 fix: detect statement-form Sub calls (no parens, no `Call` keyword).
|
|
124
|
+
// Issue #45: split single-line `If … Then <body>` clauses first so the
|
|
125
|
+
// actual call after `Then`/`Else`/`:` is not shadowed by the leading
|
|
126
|
+
// keyword.
|
|
127
|
+
if (stack.length > 0 && !procedureStartLines.has(lineNum)) {
|
|
128
|
+
// Issue #46: `Set x = New <Type>[.<Inner>]` late-instantiation.
|
|
129
|
+
// Run BEFORE the call-site scan so a later `<x>.Member ...` line
|
|
130
|
+
// finds `x` already registered in `localVarTypeMap`.
|
|
131
|
+
const setNew = SET_NEW_RE.exec(callScanLine);
|
|
132
|
+
if (setNew) {
|
|
133
|
+
const varName = setNew[1] ?? '';
|
|
134
|
+
const outerType = setNew[2] ?? '';
|
|
135
|
+
const innerType = setNew[3] ?? '';
|
|
136
|
+
if (varName && outerType) {
|
|
137
|
+
// Skip primitives defensively — consistent with the Dim sweep guard.
|
|
138
|
+
if (!constants_1.PRIMITIVE_TYPES.has(outerType.toLowerCase())) {
|
|
139
|
+
ctx.localVarTypeMap.set(varName.toLowerCase(), {
|
|
140
|
+
outer: outerType,
|
|
141
|
+
// Mirror `Dim x As Foo.Bar`: qualified `Set rs = New
|
|
142
|
+
// DAO.Recordset` registers `qualified: true` so the PR #61
|
|
143
|
+
// gate keeps downstream `rs.Method` calls silent.
|
|
144
|
+
qualified: !!innerType,
|
|
145
|
+
assignedWithSet: true,
|
|
146
|
+
variableName: varName,
|
|
147
|
+
});
|
|
148
|
+
ctx.emitReference(outerType, lineNum, 0, 'vba-set-new');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
const clauseLines = (0, calls_1.splitSingleLineIfClauses)(callScanLine);
|
|
153
|
+
for (const clauseLine of clauseLines) {
|
|
154
|
+
const stmtCall = (0, calls_1.detectStatementCall)(clauseLine);
|
|
155
|
+
if (stmtCall) {
|
|
156
|
+
const caller = stack[stack.length - 1];
|
|
157
|
+
(0, calls_1.emitStatementCallEdge)(ctx, caller, stmtCall, lineNum);
|
|
158
|
+
}
|
|
159
|
+
// Fix 7 + Fix 2 + Issue #40: qualified statement-form calls
|
|
160
|
+
// (`Receiver.Member args`) — the dominant cross-object call shape.
|
|
161
|
+
const qualStmt = (0, calls_1.detectQualifiedStatementCall)(clauseLine);
|
|
162
|
+
if (qualStmt) {
|
|
163
|
+
const caller = stack[stack.length - 1];
|
|
164
|
+
if (ctx.shouldProcessQualifiedCall(qualStmt.receiver)) {
|
|
165
|
+
(0, calls_1.emitQualifiedStatementCallEdge)(ctx, caller, qualStmt.receiver, qualStmt.member, lineNum);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
const withReceiver = withReceiverStack[withReceiverStack.length - 1];
|
|
169
|
+
if (withReceiver) {
|
|
170
|
+
const withCall = (0, calls_1.detectWithMemberCall)(clauseLine);
|
|
171
|
+
if (withCall && ctx.isLocalProjectClassVar(withReceiver)) {
|
|
172
|
+
const caller = stack[stack.length - 1];
|
|
173
|
+
(0, calls_1.emitQualifiedStatementCallEdge)(ctx, caller, withReceiver, withCall.member, lineNum);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// B4 (hueco 6): `DoCmd.OpenForm "FormName"` modelling — the literal
|
|
178
|
+
// form name lives INSIDE a string literal, so scan the ORIGINAL
|
|
179
|
+
// (unmasked) line. The receiver is the same proc-stack frame.
|
|
180
|
+
const caller2 = stack[stack.length - 1];
|
|
181
|
+
// Issue #48: shared OpenForm/OpenReport dispatch; OpenQuery emits an
|
|
182
|
+
// `UnresolvedReference` and stays separate.
|
|
183
|
+
(0, docmd_1.scanDoCmdOpenCalls)(ctx, line, caller2, lineNum);
|
|
184
|
+
(0, docmd_1.scanDoCmdOpenQuery)(ctx, line, caller2, lineNum);
|
|
185
|
+
// Issue #44: cross-form bang references (`Forms!X` / `Forms("X")!Y`) —
|
|
186
|
+
// scan the unmasked line (form name lives in a string literal in the
|
|
187
|
+
// paren form).
|
|
188
|
+
(0, controls_1.scanFormsBang)(ctx, line, caller2, lineNum);
|
|
189
|
+
// Issue #50: cross-form TempVars key accesses. Bang form scans the
|
|
190
|
+
// masked line, paren + Add forms scan the original.
|
|
191
|
+
(0, tempvars_1.sweepTempVars)(ctx, callScanLine, line, lineNum, caller2);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
// Apply endLine to every emitted function node keyed by its startLine.
|
|
195
|
+
// Functions without a recorded endLine (e.g. malformed VBA without an
|
|
196
|
+
// `End`) keep their `endLine = startLine` from sweepProcedures —
|
|
197
|
+
// which is the correct "single line" representation.
|
|
198
|
+
for (const n of ctx.nodes) {
|
|
199
|
+
if (n.kind !== 'function')
|
|
200
|
+
continue;
|
|
201
|
+
const end = procEndLines.get(n.startLine);
|
|
202
|
+
if (end !== undefined)
|
|
203
|
+
n.endLine = end;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=call-sweep.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-sweep.js","sourceRoot":"","sources":["../../../src/extraction/vba/call-sweep.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { VbaExtractorContext, ProcInfo } from './context';
|
|
2
|
+
export declare function scanRaiseEvents(ctx: VbaExtractorContext, line: string, from: ProcInfo, lineNum: number): void;
|
|
3
|
+
export declare function scanCallSites(ctx: VbaExtractorContext, line: string, from: ProcInfo, lineNum: number): void;
|
|
4
|
+
/**
|
|
5
|
+
* Issue #45: split a single-line VBA `If <cond> Then <body>` into one or
|
|
6
|
+
* more statement-clause fragments the statement-call detectors can process
|
|
7
|
+
* (`If x Then Foo Else Bar`, colon-separated `If x Then DoA: DoB`). When the
|
|
8
|
+
* line is not a single-line `If … Then` shape, returns `[<line>]` so
|
|
9
|
+
* block-form `If` still works through the per-line scan. `GoTo`/`Exit`/
|
|
10
|
+
* `Resume` clauses are filtered out. `line` is the string-literal-masked
|
|
11
|
+
* scan line, which makes global `:`/`Else` splitting safe.
|
|
12
|
+
*/
|
|
13
|
+
export declare function splitSingleLineIfClauses(line: string): string[];
|
|
14
|
+
/**
|
|
15
|
+
* H1: detect a statement-form Sub call (`MySub`, `MySub arg1, x`,
|
|
16
|
+
* `Call MySub arg1`). Returns the called proc name, or null for
|
|
17
|
+
* declarations, assignments, comments, keyword lines, and the paren form
|
|
18
|
+
* (handled by CALL_RE).
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectStatementCall(line: string): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* H1: emit a same-file `calls` edge for a statement-form Sub call to the
|
|
23
|
+
* already-emitted function node named `procName`.
|
|
24
|
+
*/
|
|
25
|
+
export declare function emitStatementCallEdge(ctx: VbaExtractorContext, caller: ProcInfo, procName: string, lineNum: number): void;
|
|
26
|
+
/**
|
|
27
|
+
* Fix 7: detect a qualified statement-form call — `Receiver.Member <args>`
|
|
28
|
+
* where `Receiver.Member` is NOT followed by `(`. Distinct from the paren
|
|
29
|
+
* form (handled by CALL_RE). Property assignments and blacklisted
|
|
30
|
+
* receivers/members are excluded. Returns `{receiver, member}` or null.
|
|
31
|
+
*/
|
|
32
|
+
export declare function detectQualifiedStatementCall(line: string): {
|
|
33
|
+
receiver: string;
|
|
34
|
+
member: string;
|
|
35
|
+
} | null;
|
|
36
|
+
/**
|
|
37
|
+
* Fix 7: emit a heuristic `calls` edge for a qualified statement-form call.
|
|
38
|
+
* Same shape as the qualified-paren path in `scanCallSites` — reuses the
|
|
39
|
+
* same `callDedupe` / `synthFunctionNodeIds` sets so a paren and non-paren
|
|
40
|
+
* form on the same line don't create duplicate edges.
|
|
41
|
+
*/
|
|
42
|
+
export declare function emitQualifiedStatementCallEdge(ctx: VbaExtractorContext, caller: ProcInfo, receiver: string, member: string, lineNum: number): void;
|
|
43
|
+
/**
|
|
44
|
+
* Issue #43: normalize the receiver of a `With <expr>` block to a bare
|
|
45
|
+
* identifier, or null when it is a keyword / runtime object / unparseable.
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeWithReceiver(expr: string): string | null;
|
|
48
|
+
/**
|
|
49
|
+
* Issue #43: detect a `.Member` call inside a `With` block (leading-dot
|
|
50
|
+
* member reference that is a call, not a property assignment).
|
|
51
|
+
*/
|
|
52
|
+
export declare function detectWithMemberCall(line: string): {
|
|
53
|
+
member: string;
|
|
54
|
+
} | null;
|
|
55
|
+
//# sourceMappingURL=calls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calls.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/calls.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAe1D,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAiBN;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAsGN;AAED;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAgC/D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4B/D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAaN;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuC7C;AAED;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,GAAG,EAAE,mBAAmB,EACxB,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiBjE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAoB5E"}
|