@aroman22/codegraph-vba-darwin-arm64 1.9.0 → 1.11.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.
- package/lib/dist/db/queries.d.ts +39 -0
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +45 -0
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/extraction/frameworks/dysflow-export.d.ts +37 -0
- package/lib/dist/extraction/frameworks/dysflow-export.d.ts.map +1 -0
- package/lib/dist/extraction/frameworks/dysflow-export.js +121 -0
- package/lib/dist/extraction/frameworks/dysflow-export.js.map +1 -0
- package/lib/dist/extraction/frameworks/index.d.ts +20 -0
- package/lib/dist/extraction/frameworks/index.d.ts.map +1 -0
- package/lib/dist/extraction/frameworks/index.js +24 -0
- package/lib/dist/extraction/frameworks/index.js.map +1 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +25 -5
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/parse-pool.d.ts +10 -0
- package/lib/dist/extraction/parse-pool.d.ts.map +1 -1
- package/lib/dist/extraction/parse-pool.js +2 -0
- package/lib/dist/extraction/parse-pool.js.map +1 -1
- package/lib/dist/extraction/parse-worker.js +6 -2
- package/lib/dist/extraction/parse-worker.js.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +9 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +58 -5
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.d.ts +43 -0
- package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
- package/lib/dist/extraction/vba/call-sweep.js +155 -66
- package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
- package/lib/dist/extraction/vba/calls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/calls.js +6 -0
- package/lib/dist/extraction/vba/calls.js.map +1 -1
- package/lib/dist/extraction/vba/context.d.ts +109 -1
- package/lib/dist/extraction/vba/context.d.ts.map +1 -1
- package/lib/dist/extraction/vba/context.js +155 -2
- package/lib/dist/extraction/vba/context.js.map +1 -1
- package/lib/dist/extraction/vba/controls.d.ts.map +1 -1
- package/lib/dist/extraction/vba/controls.js +77 -0
- package/lib/dist/extraction/vba/controls.js.map +1 -1
- package/lib/dist/extraction/vba/declarations.d.ts +38 -2
- package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
- package/lib/dist/extraction/vba/declarations.js +217 -129
- package/lib/dist/extraction/vba/declarations.js.map +1 -1
- package/lib/dist/extraction/vba/dims.d.ts +35 -1
- package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
- package/lib/dist/extraction/vba/dims.js +185 -109
- package/lib/dist/extraction/vba/dims.js.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.d.ts +47 -7
- package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
- package/lib/dist/extraction/vba/enums-consts.js +212 -139
- package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
- package/lib/dist/extraction/vba/event-synth.d.ts +3 -0
- package/lib/dist/extraction/vba/event-synth.d.ts.map +1 -0
- package/lib/dist/extraction/vba/event-synth.js +176 -0
- package/lib/dist/extraction/vba/event-synth.js.map +1 -0
- package/lib/dist/extraction/vba/events.d.ts +16 -0
- package/lib/dist/extraction/vba/events.d.ts.map +1 -0
- package/lib/dist/extraction/vba/events.js +90 -0
- package/lib/dist/extraction/vba/events.js.map +1 -0
- package/lib/dist/extraction/vba/implements.d.ts +16 -0
- package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
- package/lib/dist/extraction/vba/implements.js +43 -12
- package/lib/dist/extraction/vba/implements.js.map +1 -1
- package/lib/dist/extraction/vba/procedures.d.ts +20 -0
- package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
- package/lib/dist/extraction/vba/procedures.js +48 -13
- package/lib/dist/extraction/vba/procedures.js.map +1 -1
- package/lib/dist/extraction/vba/rules.d.ts +125 -0
- package/lib/dist/extraction/vba/rules.d.ts.map +1 -0
- package/lib/dist/extraction/vba/rules.js +49 -0
- package/lib/dist/extraction/vba/rules.js.map +1 -0
- package/lib/dist/extraction/vba/text-utils.d.ts +0 -6
- package/lib/dist/extraction/vba/text-utils.d.ts.map +1 -1
- package/lib/dist/extraction/vba/text-utils.js +9 -6
- package/lib/dist/extraction/vba/text-utils.js.map +1 -1
- package/lib/dist/extraction/vba-extractor.d.ts +77 -1
- package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-extractor.js +177 -15
- package/lib/dist/extraction/vba-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.d.ts +26 -114
- package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/vba-form-extractor.js +293 -297
- package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
- package/lib/dist/extraction/vba-preprocess.d.ts +11 -1
- package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
- package/lib/dist/extraction/vba-preprocess.js +45 -16
- package/lib/dist/extraction/vba-preprocess.js.map +1 -1
- package/lib/dist/extraction/vba-timing.d.ts +38 -0
- package/lib/dist/extraction/vba-timing.d.ts.map +1 -0
- package/lib/dist/extraction/vba-timing.js +203 -0
- package/lib/dist/extraction/vba-timing.js.map +1 -0
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +26 -0
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/project-config.d.ts +31 -0
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +75 -22
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +7 -0
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +7 -0
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +155 -11
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +6 -0
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +81 -0
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/vba-access-object-name.d.ts +7 -0
- package/lib/dist/resolution/vba-access-object-name.d.ts.map +1 -0
- package/lib/dist/resolution/vba-access-object-name.js +15 -0
- package/lib/dist/resolution/vba-access-object-name.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 +2 -1
- package/package.json +1 -1
|
@@ -98,8 +98,52 @@ class VbaExtractorContext {
|
|
|
98
98
|
* of every procedure whose `End` marker the sweep has not yet seen.
|
|
99
99
|
*/
|
|
100
100
|
procStack = [];
|
|
101
|
+
/**
|
|
102
|
+
* Issue #153: per-extraction state for the events/types/declares
|
|
103
|
+
* classifier's `Type <Name> ... End Type` block tracking. The
|
|
104
|
+
* `currentTypeBlock` is set when a `type-start` rule fires and
|
|
105
|
+
* cleared when the matching `type-end` rule fires. Lives on `ctx`
|
|
106
|
+
* (instead of the factory's closure) so the declarative RULES
|
|
107
|
+
* table's `emit` functions can read/write it without taking a
|
|
108
|
+
* closure-captured mutable reference. `null` means "outside any
|
|
109
|
+
* type block right now". Reset implicitly per-extraction (a fresh
|
|
110
|
+
* `VbaExtractorContext` is constructed every `extract()` call).
|
|
111
|
+
*/
|
|
112
|
+
vbaDeclTypeBlock = null;
|
|
113
|
+
/**
|
|
114
|
+
* Issue #153: per-extraction state for the enum/consts classifier's
|
|
115
|
+
* `Enum <Name> ... End Enum` block tracking. Same shape and
|
|
116
|
+
* rationale as `vbaDeclTypeBlock`: lives on `ctx` so the
|
|
117
|
+
* declarative RULES table's `emit` functions can read/write it
|
|
118
|
+
* without taking a closure-captured mutable reference.
|
|
119
|
+
* `null` means "outside any enum block right now".
|
|
120
|
+
*/
|
|
121
|
+
vbaEnumBlock = null;
|
|
122
|
+
/**
|
|
123
|
+
* Issue #153: per-extraction state for the calls/SQL classifier's
|
|
124
|
+
* `With <receiver> ... End With` block tracking. The with-receiver
|
|
125
|
+
* stack mirrors the textual nesting of `With` blocks inside a
|
|
126
|
+
* procedure body — the top of the stack is the active receiver
|
|
127
|
+
* for `.Member` and `.Member(args)` statement-form calls. Reset
|
|
128
|
+
* implicitly per-extraction (a fresh `VbaExtractorContext` is
|
|
129
|
+
* constructed every `extract()` call). Replaces the per-factory
|
|
130
|
+
* closure variable that lived in `sweepCallsAndSql` before the
|
|
131
|
+
* Issue #153 RULES-table refactor.
|
|
132
|
+
*/
|
|
133
|
+
vbaWithStack = [];
|
|
101
134
|
/** Local event name (lowercase) → event node for `RaiseEvent` edge emission. */
|
|
102
135
|
localEvents = new Map();
|
|
136
|
+
/**
|
|
137
|
+
* Issue #152: per-event counter for `RaiseEvent <EventName>` sites. Keyed
|
|
138
|
+
* by event node id (so two different events that share a name across
|
|
139
|
+
* files don't collide — the gate is per-file). The count is incremented
|
|
140
|
+
* in `scanRaiseEvents` BEFORE the edge is pushed, so the count equals
|
|
141
|
+
* the number of raise sites regardless of the gate decision downstream.
|
|
142
|
+
* The orchestrator's fanout-gate pass reads this map to decide which
|
|
143
|
+
* event nodes to flag `metadata.highFanout: true` and which `raises-event`
|
|
144
|
+
* edges to drop.
|
|
145
|
+
*/
|
|
146
|
+
raiseEventCounts = new Map();
|
|
103
147
|
/**
|
|
104
148
|
* Same-file function/property return types, keyed by lowercase proc name →
|
|
105
149
|
* declared return type. ONLY non-primitive (project-class) return types are
|
|
@@ -111,9 +155,45 @@ class VbaExtractorContext {
|
|
|
111
155
|
* time) — that stays the resolver's frontier.
|
|
112
156
|
*/
|
|
113
157
|
functionReturnTypes = new Map();
|
|
158
|
+
/**
|
|
159
|
+
* Issue #156: per-stage timings, lazily allocated ONLY when
|
|
160
|
+
* `CODEGRAPH_VBA_TIMING=1|2` is set. The default path (env var unset)
|
|
161
|
+
* keeps this `null` so `recordStage` is a single null-check and we
|
|
162
|
+
* pay zero Map-allocation cost in the hot path. Stage names are
|
|
163
|
+
* dot-separated: `preprocess.stripVbaComments`,
|
|
164
|
+
* `preprocess.cc.lexer+parser`, `walk.procedures`, `walk.main`,
|
|
165
|
+
* `classifier.<name>`. Counters are in milliseconds (float).
|
|
166
|
+
*/
|
|
167
|
+
timings = null;
|
|
168
|
+
/**
|
|
169
|
+
* Issue #156: how many times each classifier's `classifyLine` was
|
|
170
|
+
* invoked. Only allocated together with `timings` so the default path
|
|
171
|
+
* pays no cost.
|
|
172
|
+
*/
|
|
173
|
+
classifierInvokeCounts = null;
|
|
114
174
|
constructor(filePath) {
|
|
115
175
|
this.filePath = filePath;
|
|
116
176
|
}
|
|
177
|
+
/**
|
|
178
|
+
* Issue #156: ensure the timings Maps exist. Called once per
|
|
179
|
+
* `extract()` by the orchestrator right after it reads the env var.
|
|
180
|
+
* No-op when already allocated.
|
|
181
|
+
*/
|
|
182
|
+
ensureTimings() {
|
|
183
|
+
if (this.timings === null) {
|
|
184
|
+
this.timings = new Map();
|
|
185
|
+
this.classifierInvokeCounts = new Map();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Issue #156: add `ms` to the stage named `name`. No-op when
|
|
190
|
+
* `timings` is null (default path).
|
|
191
|
+
*/
|
|
192
|
+
recordStage(name, ms) {
|
|
193
|
+
if (this.timings === null)
|
|
194
|
+
return;
|
|
195
|
+
this.timings.set(name, (this.timings.get(name) ?? 0) + ms);
|
|
196
|
+
}
|
|
117
197
|
/**
|
|
118
198
|
* Emit a `contains` edge from the (lazily-created) module/class node to
|
|
119
199
|
* `targetId`. Mirrors the pending-source pattern the procedure and
|
|
@@ -209,6 +289,66 @@ class VbaExtractorContext {
|
|
|
209
289
|
// `sweepProcedures` (audit S2 — replaced an O(n) linear scan per call site).
|
|
210
290
|
return this.functionNodeByName.get(name);
|
|
211
291
|
}
|
|
292
|
+
/**
|
|
293
|
+
* Issue #152: apply the per-file `RaiseEvent` fanout gate. For every
|
|
294
|
+
* event whose `raiseEventCounts` value exceeds `maxFanout`:
|
|
295
|
+
* 1. Stamp the event node's `metadata.highFanout = true` and
|
|
296
|
+
* `metadata.raiseCount = <count>` so consumers (codegraph_explore,
|
|
297
|
+
* vba-event-tracer) can recognize a high-fanout event.
|
|
298
|
+
* 2. Drop every `raises-event` edge targeting that event id from
|
|
299
|
+
* `edges`. The event node itself stays — declaration site, handler
|
|
300
|
+
* linkage via `subscribes-event`, and metadata are all preserved.
|
|
301
|
+
*
|
|
302
|
+
* Events with `<= maxFanout` raise sites are untouched (no flag, edges
|
|
303
|
+
* stay). When `maxFanout` is undefined, the gate is disabled and the
|
|
304
|
+
* method is a no-op. Mirrors the upstream `EVENT_FANOUT_CAP` discipline
|
|
305
|
+
* in `src/resolution/callback-synthesizer.ts:43` (this side suppresses
|
|
306
|
+
* the producer side, the upstream side suppresses the synthesized
|
|
307
|
+
* cross-file dispatcher/handler edges).
|
|
308
|
+
*
|
|
309
|
+
* Returns the number of `raises-event` edges dropped (zero when the
|
|
310
|
+
* gate is disabled or no event exceeds the cap — useful for tests).
|
|
311
|
+
*/
|
|
312
|
+
applyRaiseFanoutGate(maxFanout) {
|
|
313
|
+
if (maxFanout === undefined)
|
|
314
|
+
return 0;
|
|
315
|
+
if (maxFanout < 0)
|
|
316
|
+
return 0;
|
|
317
|
+
// 1. Build the set of event node ids that exceed the cap.
|
|
318
|
+
const overThreshold = new Set();
|
|
319
|
+
for (const [eventId, count] of this.raiseEventCounts) {
|
|
320
|
+
if (count > maxFanout)
|
|
321
|
+
overThreshold.add(eventId);
|
|
322
|
+
}
|
|
323
|
+
if (overThreshold.size === 0)
|
|
324
|
+
return 0;
|
|
325
|
+
// 2. Stamp the metadata on the event nodes.
|
|
326
|
+
for (const eventId of overThreshold) {
|
|
327
|
+
const eventNode = this.nodes.find((n) => n.id === eventId && n.kind === 'event');
|
|
328
|
+
if (!eventNode)
|
|
329
|
+
continue;
|
|
330
|
+
const md = (eventNode.metadata ?? {});
|
|
331
|
+
md.highFanout = true;
|
|
332
|
+
md.raiseCount = this.raiseEventCounts.get(eventId) ?? 0;
|
|
333
|
+
eventNode.metadata = md;
|
|
334
|
+
}
|
|
335
|
+
// 3. Drop every `raises-event` edge targeting an over-threshold event.
|
|
336
|
+
// Re-build the edges array so the dropped edges vanish without
|
|
337
|
+
// disturbing the other edges' order. `edges.length` is the only
|
|
338
|
+
// property kept; this matches how every other sweep mutates `edges`
|
|
339
|
+
// (push-only, never splice).
|
|
340
|
+
const before = this.edges.length;
|
|
341
|
+
const kept = [];
|
|
342
|
+
for (const e of this.edges) {
|
|
343
|
+
if (e.kind === 'raises-event' && overThreshold.has(e.target))
|
|
344
|
+
continue;
|
|
345
|
+
kept.push(e);
|
|
346
|
+
}
|
|
347
|
+
this.edges.length = 0;
|
|
348
|
+
for (const e of kept)
|
|
349
|
+
this.edges.push(e);
|
|
350
|
+
return before - kept.length;
|
|
351
|
+
}
|
|
212
352
|
/**
|
|
213
353
|
* Emit a `references` edge from the file's module/class node to a synthetic
|
|
214
354
|
* node named `targetName`. Used by Dim, WithEvents, Set-New, and SQL sweeps.
|
|
@@ -222,8 +362,18 @@ class VbaExtractorContext {
|
|
|
222
362
|
* TempVars sweep already emits (`emitTempVarReference`). Omitted for
|
|
223
363
|
* structural references (Dim/WithEvents/Set-New) where the direction is not
|
|
224
364
|
* meaningful.
|
|
365
|
+
*
|
|
366
|
+
* `extras` (optional): additional metadata fields to merge into the
|
|
367
|
+
* emitted edge's `metadata` object. Used by the WithEvents sweep to
|
|
368
|
+
* stamp `variableName` (issue #150) so the post-extraction
|
|
369
|
+
* event-handler synthesis pass can find the `m_<var>_<event>`
|
|
370
|
+
* handler Sub even after `resolveVbaReferenceStubs` CASCADE-deletes
|
|
371
|
+
* the companion `subscribes-event` edge along with the synthetic
|
|
372
|
+
* class stub. Fields here are merged AFTER the standard
|
|
373
|
+
* `{ synthesizedBy [, access] }` shape, so callers can override
|
|
374
|
+
* (rarely useful) but not accidentally drop the stamp.
|
|
225
375
|
*/
|
|
226
|
-
emitReference(targetName, lineNum, column, synthesizedBy, access) {
|
|
376
|
+
emitReference(targetName, lineNum, column, synthesizedBy, access, extras) {
|
|
227
377
|
if (!targetName)
|
|
228
378
|
return;
|
|
229
379
|
const targetId = (0, tree_sitter_helpers_1.generateNodeId)(this.filePath, 'class', // placeholder kind; cross-file resolution will re-type at lookup
|
|
@@ -247,12 +397,15 @@ class VbaExtractorContext {
|
|
|
247
397
|
updatedAt: Date.now(),
|
|
248
398
|
});
|
|
249
399
|
}
|
|
400
|
+
const metadata = access
|
|
401
|
+
? { synthesizedBy, access, ...(extras ?? {}) }
|
|
402
|
+
: { synthesizedBy, ...(extras ?? {}) };
|
|
250
403
|
const edge = {
|
|
251
404
|
source: '', // rewritten after module node exists
|
|
252
405
|
target: targetId,
|
|
253
406
|
kind: 'references',
|
|
254
407
|
provenance: 'heuristic',
|
|
255
|
-
metadata
|
|
408
|
+
metadata,
|
|
256
409
|
line: lineNum,
|
|
257
410
|
column,
|
|
258
411
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/extraction/vba/context.ts"],"names":[],"mappings":";;;AAmBA,gEAAwD;AACxD,2CAA8C;AAkC9C,MAAa,mBAAmB;IACvB,QAAQ,CAAS;IACjB,KAAK,GAAW,EAAE,CAAC;IACnB,KAAK,GAAW,EAAE,CAAC;IACnB,MAAM,GAAsB,EAAE,CAAC;IAC/B,oBAAoB,GAA0B,EAAE,CAAC;IACjD,iBAAiB,GAAgB,IAAI,CAAC;IAE7C;;;;;;;;;OASG;IACI,eAAe,GAAkB,IAAI,CAAC;IAE7C;;;;;OAKG;IACI,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IAElD;;;;;;OAMG;IACI,UAAU,GAAe,EAAE,CAAC;IAEnC;;;OAGG;IACI,kBAAkB,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEpD;;;;OAIG;IACI,uBAAuB,GAAG,IAAI,GAAG,EAAgB,CAAC;IAEzD,gFAAgF;IACzE,0BAA0B,GAAW,EAAE,CAAC;IAE/C,2EAA2E;IACpE,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,oBAAoB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD;;;;;OAKG;IACI,iBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE9C,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE7C;;;;;OAKG;IACI,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/C;;;;;;OAMG;IACI,eAAe,GAAG,IAAI,GAAG,EAM5B,CAAC;IAEL;;;;;;OAMG;IACI,cAAc,GAAgD,IAAI,GAAG,EAAE,CAAC;IAE/E;;;;;OAKG;IACI,cAAc,GAAsB,QAAQ,CAAC;IAEpD;;;;;OAKG;IACI,SAAS,GAAa,EAAE,CAAC;IAEhC,gFAAgF;IACzE,WAAW,GAAG,IAAI,GAAG,EAAgB,CAAC;IAE7C;;;;;;;;;OASG;IACI,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEvD,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACI,sBAAsB,CAAC,QAAgB;QAC5C,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBACd,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBACjC,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QACtE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACI,sBAAsB,CAAC,YAAoB;QAChD,wEAAwE;QACxE,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,CAAC,qCAAqC;QAC/D,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC,CAAC,8BAA8B;QACjE,IAAI,2BAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAAE,OAAO,KAAK,CAAC;QACjE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACI,0BAA0B,CAAC,YAAoB;QACpD,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;;;;OAQG;IACI,mBAAmB,CAAC,YAAoB;QAC7C,IAAI,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,KAAK;gBAAE,OAAO,KAAK,CAAC,KAAK,CAAC;QAChC,CAAC;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,0BAA0B,CAAC,IAAc;QAC9C,mEAAmE;QACnE,+DAA+D;QAC/D,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,mEAAmE;QACnE,qEAAqE;QACrE,mEAAmE;QACnE,MAAM,EAAE,GACN,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,EAAE,EAAE,CAAC;YACP,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO,EAAE,CAAC,EAAE,CAAC;QACf,CAAC;QACD,wEAAwE;QACxE,MAAM,EAAE,GAAG,IAAA,oCAAc,EAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,sBAAsB,CAAC,IAAY;QACxC,gEAAgE;QAChE,6EAA6E;QAC7E,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/extraction/vba/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"controls.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAiD1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAiGN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CA0BN"}
|
|
@@ -11,6 +11,25 @@ exports.scanFormsBang = scanFormsBang;
|
|
|
11
11
|
* the control, not new symbols. Provenance: `vba-me-control`.
|
|
12
12
|
*/
|
|
13
13
|
const ME_CONTROL_RE = /\bMe[.!](\p{L}[\p{L}\p{N}_]*)/gu;
|
|
14
|
+
const ACCESS_FORM_MEMBER_BLACKLIST = new Set([
|
|
15
|
+
'requery', 'refresh', 'repaint', 'recalc', 'undo', 'dirty', 'newrecord',
|
|
16
|
+
'currentrecord', 'recordset', 'recordsetclone', 'recordsource', 'controls',
|
|
17
|
+
'name', 'caption', 'visible', 'filter', 'filteron', 'orderby', 'orderbyon',
|
|
18
|
+
'parent', 'activecontrol', 'section', 'bookmark', 'form', 'hwnd', 'painting',
|
|
19
|
+
'timerinterval',
|
|
20
|
+
]);
|
|
21
|
+
const seenMeControls = new WeakMap();
|
|
22
|
+
function siblingLayoutPath(filePath) {
|
|
23
|
+
const normalized = filePath.replace(/\\/g, '/');
|
|
24
|
+
const basename = normalized.slice(normalized.lastIndexOf('/') + 1);
|
|
25
|
+
if (/^Form_.+\.cls$/i.test(basename)) {
|
|
26
|
+
return normalized.replace(/\.cls$/i, '.form.txt');
|
|
27
|
+
}
|
|
28
|
+
if (/^Report_.+\.cls$/i.test(basename)) {
|
|
29
|
+
return normalized.replace(/\.cls$/i, '.report.txt');
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
14
33
|
/**
|
|
15
34
|
* Issue #44: `Forms!<FormName>` / `Forms("<FormName>")!<Ctl>` cross-form
|
|
16
35
|
* reference capture — companion to `ME_CONTROL_RE`. `Forms` is in
|
|
@@ -51,6 +70,64 @@ function scanMeControlReferences(ctx, line, from, lineNum) {
|
|
|
51
70
|
// Both `.` and `!` are 1 char so the captured name starts at `m.index + 3`.
|
|
52
71
|
const operator = line.charAt(m.index + 2); // '.' | '!'
|
|
53
72
|
const isBang = operator === '!';
|
|
73
|
+
const siblingPath = siblingLayoutPath(ctx.filePath);
|
|
74
|
+
// Issue #140 is deliberately a separate, dot-only sweep for Access
|
|
75
|
+
// form/report code-behind. Keeping `Me` in the generic runtime receiver
|
|
76
|
+
// blacklist prevents runtime methods from becoming synthetic call nodes.
|
|
77
|
+
// `.Control` inside `With Me` is not handled here: resolving an implicit
|
|
78
|
+
// receiver requires block/data-flow tracking and is intentionally follow-up
|
|
79
|
+
// work rather than a guessed edge.
|
|
80
|
+
if (!isBang) {
|
|
81
|
+
if (!siblingPath)
|
|
82
|
+
continue;
|
|
83
|
+
if (ACCESS_FORM_MEMBER_BLACKLIST.has(controlName.toLowerCase())) {
|
|
84
|
+
// Keep issue #108's extraction-shape contract observable: built-in
|
|
85
|
+
// form properties such as Me.Name remain property-get/property-set
|
|
86
|
+
// unresolved refs. The dedicated resolver sees `builtIn: true` and
|
|
87
|
+
// always declines them, so they still create no node or graph edge.
|
|
88
|
+
const after = line.slice(m.index + 3 + controlName.length);
|
|
89
|
+
ctx.unresolvedReferences.push({
|
|
90
|
+
fromNodeId: ctx.findOrCreateFunctionNodeId(from),
|
|
91
|
+
referenceName: controlName,
|
|
92
|
+
referenceKind: after.includes('=') ? 'property-set' : 'property-get',
|
|
93
|
+
line: lineNum,
|
|
94
|
+
column: m.index + 3,
|
|
95
|
+
filePath: ctx.filePath,
|
|
96
|
+
language: 'vba',
|
|
97
|
+
metadata: { synthesizedBy: 'vba-me-control', siblingPath, builtIn: true },
|
|
98
|
+
});
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const fromNodeId = ctx.findOrCreateFunctionNodeId(from);
|
|
102
|
+
const dedupeKey = `${fromNodeId}\0${controlName.toLowerCase()}`;
|
|
103
|
+
let seen = seenMeControls.get(ctx);
|
|
104
|
+
if (!seen) {
|
|
105
|
+
seen = new Set();
|
|
106
|
+
seenMeControls.set(ctx, seen);
|
|
107
|
+
}
|
|
108
|
+
if (seen.has(dedupeKey))
|
|
109
|
+
continue;
|
|
110
|
+
seen.add(dedupeKey);
|
|
111
|
+
const after = line.slice(m.index + 3 + controlName.length);
|
|
112
|
+
const before = line.slice(0, m.index);
|
|
113
|
+
const isDirectAssignment = /^\s*$/.test(before) && /^\s*=/.test(after);
|
|
114
|
+
ctx.unresolvedReferences.push({
|
|
115
|
+
fromNodeId,
|
|
116
|
+
referenceName: controlName,
|
|
117
|
+
referenceKind: 'references',
|
|
118
|
+
line: lineNum,
|
|
119
|
+
column: m.index + 3,
|
|
120
|
+
filePath: ctx.filePath,
|
|
121
|
+
language: 'vba',
|
|
122
|
+
metadata: {
|
|
123
|
+
synthesizedBy: 'vba-me-control',
|
|
124
|
+
siblingPath,
|
|
125
|
+
access: isDirectAssignment ? 'write' : 'read',
|
|
126
|
+
},
|
|
127
|
+
});
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
// Preserve the existing Me! default-collection behavior from issue #44.
|
|
54
131
|
// Same-line get vs set heuristic: anything past the captured control
|
|
55
132
|
// name on this line. Cover the `=` form (`Me.Name = "X"`) and ignore
|
|
56
133
|
// a previous-line `=`. The `= charAt(...)` short-circuits on the first
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"controls.js","sourceRoot":"","sources":["../../../src/extraction/vba/controls.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,43 @@
|
|
|
1
1
|
import { VbaExtractorContext, VbaClassifier } from './context';
|
|
2
|
+
import { VbaExtractionRule } from './rules';
|
|
2
3
|
/**
|
|
3
|
-
* Issue #
|
|
4
|
-
*
|
|
4
|
+
* Issue #153: the declarative rule table for the events/types/declares
|
|
5
|
+
* concern. Five rules, partitioned by where they fire:
|
|
6
|
+
*
|
|
7
|
+
* - `event-decl` (outside-type-block) — match an `Event <Name>` decl
|
|
8
|
+
* - `type-start` (outside-type-block) — match a `Type <Name>` header;
|
|
9
|
+
* sets `ctx.vbaDeclTypeBlock` on a successful match
|
|
10
|
+
* - `type-end` (inside-type-block) — match `End Type`; clears
|
|
11
|
+
* `ctx.vbaDeclTypeBlock` on a successful match
|
|
12
|
+
* - `type-member` (inside-type-block) — match `<Member> As <Type>`
|
|
13
|
+
* inside an open type block
|
|
14
|
+
* - `dll-declare` (outside-type-block) — match a `[Private|Public]
|
|
15
|
+
* Declare [PtrSafe] Sub|Function <Name> Lib "<dll>"
|
|
16
|
+
* [Alias "<x>"]` Win32 API declaration
|
|
17
|
+
*
|
|
18
|
+
* The `requires` field encodes the type-block precondition. The
|
|
19
|
+
* dispatcher (the factory's `classifyLine`) filters rules whose
|
|
20
|
+
* precondition does not hold, so an `End Type` line never
|
|
21
|
+
* accidentally re-enters the `event-decl` / `dll-declare` paths.
|
|
22
|
+
*
|
|
23
|
+
* Inter-line state lives on `ctx.vbaDeclTypeBlock` (replaces the
|
|
24
|
+
* pre-#153 factory closure variable) so the emit functions can
|
|
25
|
+
* read/write it without taking a mutable closure reference.
|
|
26
|
+
*/
|
|
27
|
+
export declare const RULES: readonly VbaExtractionRule<unknown>[];
|
|
28
|
+
/**
|
|
29
|
+
* Issue #83: factory for the events/types/declares classifier.
|
|
30
|
+
*
|
|
31
|
+
* Inter-line state (`ctx.vbaDeclTypeBlock`) lives on `ctx` — the
|
|
32
|
+
* declarative RULES table's `emit` functions read/write it directly.
|
|
33
|
+
* The dispatcher below honours each rule's `requires` precondition
|
|
34
|
+
* so the per-line dispatch mirrors the legacy cascade exactly:
|
|
35
|
+
*
|
|
36
|
+
* if (currentType) {
|
|
37
|
+
* try type-end, then type-member; return early
|
|
38
|
+
* } else {
|
|
39
|
+
* try event-decl, type-start, dll-declare
|
|
40
|
+
* }
|
|
5
41
|
*/
|
|
6
42
|
export declare function createEventsTypesDeclaresClassifier(): VbaClassifier;
|
|
7
43
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"declarations.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/declarations.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqBnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,KAAK,EAAE,SAAS,iBAAiB,CAAC,OAAO,CAAC,EA2JtD,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mCAAmC,IAAI,aAAa,CA+BnE;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOzF"}
|