@aroman22/codegraph-vba-darwin-arm64 1.6.1 → 1.6.2
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/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +14 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +8 -2
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +1 -0
- package/lib/dist/extraction/grammars.d.ts +32 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +61 -0
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +24 -0
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts +13 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.js +229 -151
- package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
- package/lib/dist/extraction/vba/context.d.ts +52 -2
- package/lib/dist/extraction/vba/context.d.ts.map +1 -1
- package/lib/dist/extraction/vba/context.js +29 -2
- package/lib/dist/extraction/vba/context.js.map +1 -1
- package/lib/dist/extraction/vba/declarations.d.ts +10 -1
- package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
- package/lib/dist/extraction/vba/declarations.js +141 -123
- package/lib/dist/extraction/vba/declarations.js.map +1 -1
- package/lib/dist/extraction/vba/dims.d.ts +9 -1
- package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
- package/lib/dist/extraction/vba/dims.js +125 -109
- package/lib/dist/extraction/vba/dims.js.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.d.ts +13 -10
- package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.js +153 -131
- package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
- package/lib/dist/extraction/vba/implements.d.ts +9 -1
- package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
- package/lib/dist/extraction/vba/implements.js +56 -40
- package/lib/dist/extraction/vba/implements.js.map +1 -1
- package/lib/dist/extraction/vba/procedures.d.ts +13 -1
- package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
- package/lib/dist/extraction/vba/procedures.js +238 -186
- package/lib/dist/extraction/vba/procedures.js.map +1 -1
- package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
- package/lib/dist/extraction/vba/sql-wrapper.js +20 -3
- package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +47 -38
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.js +6 -1
- package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +23 -2
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +26 -0
- package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/vba-test-manifest-extractor.js +173 -0
- package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -0
- package/lib/dist/extraction/vba-test-sequence-extractor.d.ts +29 -0
- package/lib/dist/extraction/vba-test-sequence-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/vba-test-sequence-extractor.js +180 -0
- package/lib/dist/extraction/vba-test-sequence-extractor.js.map +1 -0
- package/lib/dist/mcp/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +5 -0
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +30 -0
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +7 -0
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/node_modules/.modules.yaml +1 -1
- package/lib/node_modules/.pnpm/lock.yaml +4 -0
- package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
- package/lib/package.json +8 -2
- package/package.json +1 -1
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.createProceduresClassifier = createProceduresClassifier;
|
|
36
37
|
exports.sweepProcedures = sweepProcedures;
|
|
37
38
|
/**
|
|
38
39
|
* Procedure sweep: emit one `function` node per `Sub` / `Function` /
|
|
@@ -44,196 +45,247 @@ const path = __importStar(require("path"));
|
|
|
44
45
|
const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
|
|
45
46
|
const constants_1 = require("./constants");
|
|
46
47
|
const text_utils_1 = require("./text-utils");
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
:
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
//
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
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,
|
|
48
|
+
/**
|
|
49
|
+
* Parse a `Function`/`Property Get` declaration's return type — the `As
|
|
50
|
+
* <Type>` that follows the parameter list (or the name, for a paren-less
|
|
51
|
+
* declaration). Parameters can carry their own `As <Type>`, so we anchor on
|
|
52
|
+
* the text AFTER the last `)` when parens are present; the bracketed form
|
|
53
|
+
* `As [Type With Spaces]` is unwrapped. Returns null when there is no return
|
|
54
|
+
* type (a `Sub`, or a function with an implicit `Variant` return).
|
|
55
|
+
*/
|
|
56
|
+
function parseReturnType(line) {
|
|
57
|
+
const afterParams = line.includes(')')
|
|
58
|
+
? line.slice(line.lastIndexOf(')') + 1)
|
|
59
|
+
: line;
|
|
60
|
+
const m = /\bAs\s+(?:New\s+)?(?:\[([^\]]+)\]|(\p{L}[\p{L}\p{N}_]*))/iu.exec(afterParams);
|
|
61
|
+
if (!m)
|
|
62
|
+
return null;
|
|
63
|
+
return m[1] ?? m[2] ?? null;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Issue #83: factory for the procedures classifier. Closure state: none
|
|
67
|
+
* beyond `count` (the per-concern accumulators live on `ctx`).
|
|
68
|
+
*/
|
|
69
|
+
function createProceduresClassifier() {
|
|
70
|
+
return {
|
|
71
|
+
name: 'procedures',
|
|
72
|
+
count: 0,
|
|
73
|
+
classifyLine(line, i, ctx) {
|
|
74
|
+
const m = constants_1.PROC_RE.exec(line);
|
|
75
|
+
if (!m)
|
|
76
|
+
return;
|
|
77
|
+
const visibilityRaw = (m[1] ?? '').trim();
|
|
78
|
+
const kindRaw = (m[2] ?? '').trim().toLowerCase();
|
|
79
|
+
const name = m[3] ?? '';
|
|
80
|
+
if (!name)
|
|
81
|
+
return;
|
|
82
|
+
const lineNum = i + 1;
|
|
83
|
+
// Normalize the visibility. VBA's "Static" keyword is a storage
|
|
84
|
+
// specifier, not visibility, so we treat bare-static declarations as
|
|
85
|
+
// 'Public' (the default) per spec R1. "Friend" is not in the Node
|
|
86
|
+
// visibility enum; treat it as 'Public' since it's the closest
|
|
87
|
+
// broader-than-private modifier.
|
|
88
|
+
let visibility;
|
|
89
|
+
switch (visibilityRaw.toLowerCase()) {
|
|
90
|
+
case 'private':
|
|
91
|
+
visibility = 'private';
|
|
92
|
+
break;
|
|
93
|
+
case 'public':
|
|
94
|
+
case 'static':
|
|
95
|
+
case 'friend':
|
|
96
|
+
case '':
|
|
97
|
+
default:
|
|
98
|
+
visibility = 'public';
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
const kind = kindRaw.startsWith('sub')
|
|
102
|
+
? 'sub'
|
|
103
|
+
: kindRaw.startsWith('function')
|
|
104
|
+
? 'function'
|
|
105
|
+
: 'property';
|
|
106
|
+
// Factory-return inference: record a function's project-class return type
|
|
107
|
+
// so the call sweep can type `Set x = <name>(...)`. Restricted to `Sub`'s
|
|
108
|
+
// sibling `Function` (a `Property Let/Set` has no return type and a
|
|
109
|
+
// `Property Get`'s `As <Type>` is rarely a factory target). Primitives are
|
|
110
|
+
// skipped — `x.Method` on a primitive is never a project call.
|
|
111
|
+
if (kind === 'function') {
|
|
112
|
+
const retType = parseReturnType(line);
|
|
113
|
+
if (retType && !constants_1.PRIMITIVE_TYPES.has(retType.toLowerCase())) {
|
|
114
|
+
const key = name.toLowerCase();
|
|
115
|
+
if (!ctx.functionReturnTypes.has(key)) {
|
|
116
|
+
ctx.functionReturnTypes.set(key, retType);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const proc = {
|
|
121
|
+
name,
|
|
122
|
+
// B3 (hueco 5): when this file is a `.cls`, prefix the
|
|
123
|
+
// qualifiedName with the resolved class name so cross-class
|
|
124
|
+
// queries (e.g. `Form_Load`) match only the owning class.
|
|
125
|
+
// `.bas` files leave `qualifiedName === name`.
|
|
126
|
+
qualifiedName: ctx.classNamePrefix
|
|
127
|
+
? `${ctx.classNamePrefix}.${name}`
|
|
128
|
+
: name,
|
|
129
|
+
kind,
|
|
130
|
+
visibility,
|
|
131
|
+
startLine: lineNum,
|
|
132
|
+
};
|
|
133
|
+
ctx.procedures.push(proc);
|
|
134
|
+
const bucket = ctx.localProcs.get(name);
|
|
135
|
+
if (bucket)
|
|
136
|
+
bucket.push(proc);
|
|
137
|
+
else
|
|
138
|
+
ctx.localProcs.set(name, [proc]);
|
|
139
|
+
const nodeId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'function', name, lineNum);
|
|
140
|
+
const fnNode = {
|
|
141
|
+
id: nodeId,
|
|
142
|
+
kind: 'function',
|
|
143
|
+
name,
|
|
144
|
+
// B3 (hueco 5): same prefix rule as the ProcInfo above — class
|
|
145
|
+
// methods get `${className}.${name}`, module-level Subs keep
|
|
146
|
+
// their bare-name qualifiedName.
|
|
147
|
+
qualifiedName: ctx.classNamePrefix
|
|
148
|
+
? `${ctx.classNamePrefix}.${name}`
|
|
149
|
+
: name,
|
|
150
|
+
filePath: ctx.filePath,
|
|
201
151
|
language: 'vba',
|
|
202
|
-
startLine:
|
|
203
|
-
endLine:
|
|
152
|
+
startLine: lineNum,
|
|
153
|
+
endLine: lineNum,
|
|
204
154
|
startColumn: 0,
|
|
205
|
-
endColumn:
|
|
155
|
+
endColumn: line.length,
|
|
156
|
+
visibility,
|
|
206
157
|
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
158
|
};
|
|
233
|
-
ctx.
|
|
234
|
-
|
|
235
|
-
|
|
159
|
+
ctx.nodes.push(fnNode);
|
|
160
|
+
// Cache the first node emitted for this name — `findFunctionNodeByName`
|
|
161
|
+
// (audit S2) becomes O(1) instead of O(n) per call site.
|
|
162
|
+
if (!ctx.functionNodeByName.has(name)) {
|
|
163
|
+
ctx.functionNodeByName.set(name, fnNode);
|
|
164
|
+
}
|
|
165
|
+
// Fix 1: also index by startLine so Property Get/Let/Set with the same
|
|
166
|
+
// name can each be found by their exact declaration line.
|
|
167
|
+
ctx.functionNodeByStartLine.set(lineNum, fnNode);
|
|
168
|
+
// Hueco 3: synthesize the event-handler edge for Access naming
|
|
169
|
+
// convention `<ControlName>_<EventName>` (e.g. `ComandoAltaPM_Click`,
|
|
170
|
+
// `MotivoBorrado_AfterUpdate`). The `<X>_<Y>` shape is split on the
|
|
171
|
+
// LAST underscore so multi-word events like `BeforeDelConfirm` parse
|
|
172
|
+
// correctly. Form-level events (`Form_Load`, `Form_Open`,
|
|
173
|
+
// `Form_Unload`, …) are NOT control handlers — they fire on the
|
|
174
|
+
// form object itself, not on a control — so they are skipped here
|
|
175
|
+
// (the form module node is the conceptual source for those).
|
|
176
|
+
//
|
|
177
|
+
// Scope guard: only emit when this .cls looks like a form code-
|
|
178
|
+
// behind (`Form_*.cls`). Without this guard, regular service classes
|
|
179
|
+
// whose methods happen to have underscores in their names
|
|
180
|
+
// (e.g. `InformeRiesgoPDFServicio.cls` declares
|
|
181
|
+
// `GenerarHTML_Principal`, `GetEstilosCSS_PDF`,
|
|
182
|
+
// `Class_Initialize`) would synthesize ~550 spurious
|
|
183
|
+
// `form-instance-control` stubs in real Dysflow projects. The
|
|
184
|
+
// `Form_` prefix is the canonical Access code-behind naming
|
|
185
|
+
// convention and matches the .form.txt siblings' basename.
|
|
186
|
+
//
|
|
187
|
+
// Cross-file synthesis caveat: the edge's source is a
|
|
188
|
+
// `form-instance-control` node that lives in the sibling .form.txt,
|
|
189
|
+
// not this .cls file. Two consequences:
|
|
190
|
+
// 1. We also emit a STUB form-instance-control node locally with
|
|
191
|
+
// the deterministic id so the per-file edge filter
|
|
192
|
+
// (`insertedIds.has(source)`) accepts the edge. When the
|
|
193
|
+
// sibling .form.txt is later indexed, VbaFormExtractor emits
|
|
194
|
+
// the real form-instance-control node with the same id; the
|
|
195
|
+
// `INSERT OR REPLACE` semantics in queries.ts:insertNode
|
|
196
|
+
// overwrite the stub with the real one (preserving the
|
|
197
|
+
// metadata.controlType, filePath, line range, etc.).
|
|
198
|
+
// 2. When the .form.txt is processed FIRST (alphabetically
|
|
199
|
+
// unlikely but possible), the real node exists in the DB
|
|
200
|
+
// before this edge is committed; insertEdges's DB-level
|
|
201
|
+
// endpoint check passes the edge naturally without the stub.
|
|
202
|
+
// Either order converges on the same final state.
|
|
203
|
+
// See vba-form-extractor.ts:findControlName for the matching real
|
|
204
|
+
// form-instance-control node emission.
|
|
205
|
+
const handler = (0, text_utils_1.parseEventHandlerName)(name);
|
|
206
|
+
// Prefix-driven sibling binding (issue #41). Both `Form_*.cls` and
|
|
207
|
+
// `Report_*.cls` Dysflow code-behind files share the same code path;
|
|
208
|
+
// only the sibling extension differs (`.form.txt` vs `.report.txt`).
|
|
209
|
+
// The check is on the BASENAME prefix so a class called
|
|
210
|
+
// `FormularioVentas.cls` or `ReportingHelper.cls` (no trailing
|
|
211
|
+
// underscore) does not match — the trailing `_` is the discriminator.
|
|
212
|
+
// Any other `.cls` (e.g. `InformeRiesgoPDFServicio.cls` with methods
|
|
213
|
+
// like `GenerarHTML_Principal`) gets `codeBehindExt === null` and is
|
|
214
|
+
// skipped, preserving the original Form_-only guard's behaviour for
|
|
215
|
+
// non-form classes.
|
|
216
|
+
const basename = path.basename(ctx.filePath).toLowerCase();
|
|
217
|
+
const codeBehindExt = basename.startsWith('report_')
|
|
218
|
+
? '.report.txt'
|
|
219
|
+
: basename.startsWith('form_')
|
|
220
|
+
? '.form.txt'
|
|
221
|
+
: null;
|
|
222
|
+
const isFormCodeBehind = codeBehindExt !== null;
|
|
223
|
+
if (handler && isFormCodeBehind) {
|
|
224
|
+
const siblingPath = ctx.filePath.replace(/\.cls$/i, codeBehindExt);
|
|
225
|
+
const controlNodeId = (0, tree_sitter_helpers_1.generateNodeId)(siblingPath, 'form-instance-control', handler.controlName, 0);
|
|
226
|
+
// Stub form-instance-control: local so the per-file edge filter
|
|
227
|
+
// passes the event-handler edge. Overwritten by the real node
|
|
228
|
+
// emitted from the sibling .form.txt (or .report.txt) at index time
|
|
229
|
+
// (same id, same schema, INSERT OR REPLACE). No metadata.controlType
|
|
230
|
+
// here — the sibling side carries the real control type.
|
|
231
|
+
ctx.nodes.push({
|
|
232
|
+
id: controlNodeId,
|
|
233
|
+
kind: 'form-instance-control',
|
|
234
|
+
name: handler.controlName,
|
|
235
|
+
qualifiedName: `${siblingPath}::${handler.controlName}`,
|
|
236
|
+
filePath: siblingPath,
|
|
237
|
+
language: 'vba',
|
|
238
|
+
startLine: 0,
|
|
239
|
+
endLine: 0,
|
|
240
|
+
startColumn: 0,
|
|
241
|
+
endColumn: 0,
|
|
242
|
+
updatedAt: Date.now(),
|
|
243
|
+
});
|
|
244
|
+
ctx.edges.push({
|
|
245
|
+
source: nodeId,
|
|
246
|
+
target: controlNodeId,
|
|
247
|
+
kind: 'event-handler',
|
|
248
|
+
provenance: 'heuristic',
|
|
249
|
+
metadata: { eventName: handler.eventName },
|
|
250
|
+
line: lineNum,
|
|
251
|
+
column: 0,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (ctx.moduleOrClassNode) {
|
|
255
|
+
ctx.edges.push({
|
|
256
|
+
source: ctx.moduleOrClassNode.id,
|
|
257
|
+
target: nodeId,
|
|
258
|
+
kind: 'contains',
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
// Module/class node is created lazily (see extract). Hold the edge in
|
|
263
|
+
// pending so its source can be rewritten once the module exists.
|
|
264
|
+
const edge = {
|
|
265
|
+
source: '',
|
|
266
|
+
target: nodeId,
|
|
267
|
+
kind: 'contains',
|
|
268
|
+
};
|
|
269
|
+
ctx.edges.push(edge);
|
|
270
|
+
ctx.pendingModuleOrClassSource.push(edge);
|
|
271
|
+
}
|
|
272
|
+
this.count++;
|
|
273
|
+
},
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Backward-compat wrapper: pre-#83 callers (e.g. legacy test fixtures)
|
|
278
|
+
* used `sweepProcedures(ctx, src)` and got back the ProcInfo[].
|
|
279
|
+
* Now it returns `ctx.procedures` (the same flat list the factory
|
|
280
|
+
* appends to). The implementation still calls the classifier once per
|
|
281
|
+
* pre-split line, so the count is identical to the new walker path.
|
|
282
|
+
*/
|
|
283
|
+
function sweepProcedures(ctx, src) {
|
|
284
|
+
const cls = createProceduresClassifier();
|
|
285
|
+
const lines = src.split('\n');
|
|
286
|
+
for (let i = 0; i < lines.length; i++) {
|
|
287
|
+
cls.classifyLine(lines[i] ?? '', i, ctx);
|
|
236
288
|
}
|
|
237
|
-
return
|
|
289
|
+
return ctx.procedures;
|
|
238
290
|
}
|
|
239
291
|
//# sourceMappingURL=procedures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"procedures.js","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAuHhD,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"}
|
|
@@ -72,7 +72,23 @@ const SQL_VAR_DOCMD_RUNSQL_RE = /\bDoCmd\.RunSQL\s*\(?\s*(\p{L}[\p{L}\p{N}_]*)\s
|
|
|
72
72
|
* with spaces — `[Order Details]`, `[My Schema]`, `[My Table]` —
|
|
73
73
|
* are captured whole.
|
|
74
74
|
*/
|
|
75
|
-
const SQL_TABLE_RE = /\b(
|
|
75
|
+
const SQL_TABLE_RE = /\b(FROM|JOIN|INTO|UPDATE)\s+((?:(?:\[[^\]]+\]|\p{L}[\p{L}\p{N}_]*)\.)?(?:\[[^\]]+\]|\p{L}[\p{L}\p{N}_]*))/giu;
|
|
76
|
+
/**
|
|
77
|
+
* Classify a table reference as a data `read` or `write` from the SQL verb,
|
|
78
|
+
* so `metadata.access` lets consumers answer "who WRITES table X" vs "who
|
|
79
|
+
* READS table X". The mutating targets are writes: `INSERT INTO <t>`,
|
|
80
|
+
* `UPDATE <t>`, and the `FROM <t>` of a `DELETE` (Access's `DELETE FROM x`
|
|
81
|
+
* makes that FROM the delete target). Every other `FROM`/`JOIN` source table
|
|
82
|
+
* — including the source of an `INSERT ... SELECT` — is a read.
|
|
83
|
+
*/
|
|
84
|
+
function classifySqlAccess(sqlString, clause) {
|
|
85
|
+
const kw = clause.toUpperCase();
|
|
86
|
+
if (kw === 'INTO' || kw === 'UPDATE')
|
|
87
|
+
return 'write';
|
|
88
|
+
if (kw === 'FROM' && /^\s*DELETE\b/i.test(sqlString))
|
|
89
|
+
return 'write';
|
|
90
|
+
return 'read';
|
|
91
|
+
}
|
|
76
92
|
/**
|
|
77
93
|
* Regex matching the chained `& "..."` literals that may follow a
|
|
78
94
|
* wrapper's first literal on the same physical line. Captures the
|
|
@@ -199,14 +215,15 @@ function emitSqlTableReferences(ctx, sqlString, lineNum, dedupe) {
|
|
|
199
215
|
const tableRe = new RegExp(SQL_TABLE_RE.source, SQL_TABLE_RE.flags);
|
|
200
216
|
let tm;
|
|
201
217
|
while ((tm = tableRe.exec(sqlString)) !== null) {
|
|
202
|
-
const
|
|
218
|
+
const clause = tm[1] ?? '';
|
|
219
|
+
const table = (tm[2] ?? '').replace(/[\[\]]/g, '');
|
|
203
220
|
if (!table)
|
|
204
221
|
continue;
|
|
205
222
|
const key = `${lineNum}:${table}`;
|
|
206
223
|
if (dedupe.has(key))
|
|
207
224
|
continue;
|
|
208
225
|
dedupe.add(key);
|
|
209
|
-
ctx.emitReference(table, lineNum, 0, 'vba-sql-table');
|
|
226
|
+
ctx.emitReference(table, lineNum, 0, 'vba-sql-table', classifySqlAccess(sqlString, clause));
|
|
210
227
|
}
|
|
211
228
|
}
|
|
212
229
|
//# sourceMappingURL=sql-wrapper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-wrapper.js","sourceRoot":"","sources":["../../../src/extraction/vba/sql-wrapper.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"sql-wrapper.js","sourceRoot":"","sources":["../../../src/extraction/vba/sql-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vba-extractor.d.ts","sourceRoot":"","sources":["../../src/extraction/vba-extractor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vba-extractor.d.ts","sourceRoot":"","sources":["../../src/extraction/vba-extractor.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAQ,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAelD,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,UAAU,CAAC,CAA0B;gBAEjC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAOlF,OAAO,IAAI,gBAAgB;IAgI3B,OAAO,CAAC,MAAM;IAUd,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,uBAAuB;CAkBhC"}
|