@aroman22/codegraph-vba-darwin-arm64 1.3.5 → 1.5.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 (39) hide show
  1. package/lib/dist/extraction/index.d.ts.map +1 -1
  2. package/lib/dist/extraction/index.js +26 -7
  3. package/lib/dist/extraction/index.js.map +1 -1
  4. package/lib/dist/extraction/sql-query-extractor.d.ts +11 -3
  5. package/lib/dist/extraction/sql-query-extractor.d.ts.map +1 -1
  6. package/lib/dist/extraction/sql-query-extractor.js +19 -5
  7. package/lib/dist/extraction/sql-query-extractor.js.map +1 -1
  8. package/lib/dist/extraction/vba-extractor.d.ts +575 -55
  9. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  10. package/lib/dist/extraction/vba-extractor.js +1233 -135
  11. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  12. package/lib/dist/extraction/vba-form-extractor.d.ts +127 -0
  13. package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
  14. package/lib/dist/extraction/vba-form-extractor.js +290 -3
  15. package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
  16. package/lib/dist/extraction/vba-preprocess.d.ts +22 -3
  17. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  18. package/lib/dist/extraction/vba-preprocess.js +137 -15
  19. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  20. package/lib/dist/extraction/vba-source.d.ts +58 -0
  21. package/lib/dist/extraction/vba-source.d.ts.map +1 -0
  22. package/lib/dist/extraction/vba-source.js +137 -0
  23. package/lib/dist/extraction/vba-source.js.map +1 -0
  24. package/lib/dist/types.d.ts +2 -2
  25. package/lib/dist/types.d.ts.map +1 -1
  26. package/lib/dist/types.js +6 -0
  27. package/lib/dist/types.js.map +1 -1
  28. package/lib/dist/utils/backtrace-helpers.d.ts +35 -0
  29. package/lib/dist/utils/backtrace-helpers.d.ts.map +1 -0
  30. package/lib/dist/utils/backtrace-helpers.js +129 -0
  31. package/lib/dist/utils/backtrace-helpers.js.map +1 -0
  32. package/lib/dist/utils/sql-impact-helpers.d.ts +38 -0
  33. package/lib/dist/utils/sql-impact-helpers.d.ts.map +1 -0
  34. package/lib/dist/utils/sql-impact-helpers.js +329 -0
  35. package/lib/dist/utils/sql-impact-helpers.js.map +1 -0
  36. package/lib/node_modules/.modules.yaml +2 -2
  37. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  38. package/lib/package.json +2 -2
  39. package/package.json +1 -1
@@ -56,10 +56,23 @@ exports.VbaFormExtractor = void 0;
56
56
  * - It emits one unresolved reference (synthesizedBy=vba-form-binding) from
57
57
  * the form-layout node to the sibling `.cls` basename, so
58
58
  * `codegraph_explore` can resolve form → class at lookup time.
59
+ * - It emits one `references` edge per `RecordSource` binding (Issue #49),
60
+ * tagged `metadata.synthesizedBy: 'vba-record-source'`. Bare table names
61
+ * and `SELECT/FROM/...` SQL are both supported; SQL goes through the
62
+ * shared `SQL_TABLE_RE` regex and emits one edge per table. The same
63
+ * happens for `RowSource` bindings on individual controls, but the
64
+ * source is the enclosing `form-instance-control` node and the tag is
65
+ * `'vba-row-source'`. Value-list controls (`RowSourceType = "Value List"`)
66
+ * are skipped — their RowSource is a literal list, not a data binding.
59
67
  *
60
- * Hard invariant (REQ-FORM-4): ZERO `function`/`sub`/`class`/`module`
61
- * nodes from `.form.txt` / `.report.txt`. The form-side behavior lives
62
- * in `vba-form-ui-extraction`; the code-side lives in `vba-code-extraction`.
68
+ * Hard invariant (REQ-FORM-4): ZERO `function`/`sub`/`module`/`event`
69
+ * /`declare`/`type` nodes from `.form.txt` / `.report.txt`. The form-side
70
+ * behavior lives in `vba-form-ui-extraction`; the code-side lives in
71
+ * `vba-code-extraction`. Note: synthetic `class` PLACEHOLDER nodes ARE
72
+ * emitted for external data bindings (table/query references from
73
+ * RecordSource/RowSource) — they are not the form's own class binding
74
+ * (that one stays an UnresolvedReference) and are deduplicated by name
75
+ * so the same table referenced from N sites collapses to one node.
63
76
  */
64
77
  const path = __importStar(require("path"));
65
78
  const tree_sitter_helpers_1 = require("./tree-sitter-helpers");
@@ -71,6 +84,17 @@ class VbaFormExtractor {
71
84
  edges = [];
72
85
  errors = [];
73
86
  unresolvedReferences = [];
87
+ /**
88
+ * Issue #49: synthetic `class` placeholder node ids for table/query
89
+ * references emitted by RecordSource/RowSource sweeps. The same table
90
+ * referenced from N different sites collapses to a single placeholder
91
+ * node (id keyed on `(filePath, 'class', tableName, 0)`), but every
92
+ * call site still emits its own `references` edge with a per-site
93
+ * `line` value. Mirrors `VbaExtractor.synthClassNodeIds` (private to
94
+ * VbaExtractor — we keep a separate cache here so the form extractor
95
+ * stays self-contained per the project's per-extractor state rule).
96
+ */
97
+ synthClassNodeIds = new Set();
74
98
  constructor(filePath, source) {
75
99
  this.filePath = filePath;
76
100
  this.source = source;
@@ -115,6 +139,13 @@ class VbaFormExtractor {
115
139
  });
116
140
  // Control declarations → property nodes (REQ-FORM-2).
117
141
  this.sweepControls(cleaned);
142
+ // Issue #49: RecordSource/RowSource bindings → references edges to
143
+ // placeholder class nodes (one per table/query). Swept AFTER
144
+ // sweepControls so the `form-instance-control` nodes for any
145
+ // enclosing controls are already in `this.nodes` and
146
+ // `sweepRowSources` can attribute each edge to its source node.
147
+ this.sweepRecordSources(cleaned, formLayoutNode.id);
148
+ this.sweepRowSources(cleaned, formLayoutNode.id);
118
149
  }
119
150
  catch (error) {
120
151
  this.errors.push({
@@ -362,6 +393,262 @@ class VbaFormExtractor {
362
393
  // transition (a separate B2 task).
363
394
  return { name: '', nameLine: beginLineNum };
364
395
  }
396
+ // ---------------------------------------------------------------------------
397
+ // RecordSource / RowSource edge emission (Issue #49)
398
+ // ---------------------------------------------------------------------------
399
+ /**
400
+ * Issue #49 — `RecordSource = "..."` line regex. The Dysflow SaveAsText
401
+ * format always wraps the value in double quotes; the inner `(?:[^"]|"")*`
402
+ * body tolerates the doubled-quote escape (`""` → `"`) so the captured
403
+ * group carries the literal text exactly as Access stores it.
404
+ *
405
+ * Anchored at the start of the line — properties in the SaveAsText
406
+ * format are always indented but the attribute name is unambiguous, so
407
+ * a leading whitespace-tolerant anchor is enough.
408
+ */
409
+ static RECORD_SOURCE_RE = /^\s*RecordSource\s*=\s*"((?:[^"]|"")*)"/iu;
410
+ /** Issue #49 — `RowSource = "..."` line regex. Mirrors `RECORD_SOURCE_RE`. */
411
+ static ROW_SOURCE_RE = /^\s*RowSource\s*=\s*"((?:[^"]|"")*)"/iu;
412
+ /** Issue #49 — `RowSourceType = "..."` line regex. Used by the control-block
413
+ * scan to detect value-list controls whose RowSource is a literal list. */
414
+ static ROW_SOURCE_TYPE_RE = /^\s*RowSourceType\s*=\s*"([^"]*)"/iu;
415
+ /**
416
+ * Issue #49 — copy of `VbaExtractor.SQL_TABLE_RE`. Same source / flags:
417
+ * captures the table name that follows `FROM`/`JOIN`/`INTO`/`UPDATE`,
418
+ * tolerates bracketed `[Order Details]` identifiers and `\p{L}` Unicode
419
+ * identifiers, and allows an optional schema prefix (`[dbo].[tblA]`).
420
+ *
421
+ * We duplicate the regex (rather than exporting it from `VbaExtractor`)
422
+ * because `VbaExtractor.SQL_TABLE_RE` is `private static` and the
423
+ * project's per-extractor state rule keeps each extractor's helpers
424
+ * self-contained — see the file-level JSDoc on `VbaExtractor`.
425
+ */
426
+ static SQL_TABLE_RE = /\b(?:FROM|JOIN|INTO|UPDATE)\s+((?:(?:\[[^\]]+\]|\p{L}[\p{L}\p{N}_]*)\.)?(?:\[[^\]]+\]|\p{L}[\p{L}\p{N}_]*))/giu;
427
+ /**
428
+ * Issue #49 — classify a RecordSource/RowSource value as SQL.
429
+ * Anything starting with a SQL keyword (`SELECT`, `PARAMETERS`, `WITH`,
430
+ * `UPDATE`, `INSERT`, `DELETE`) — case-insensitive — is treated as a
431
+ * SQL statement and run through `SQL_TABLE_RE`. Anything else is a
432
+ * bare table-or-query name and emitted as a single reference.
433
+ *
434
+ * `WITH` is included because Access/JET supports CTE-style `WITH` queries
435
+ * as record sources. `PARAMETERS` is included because Access uses
436
+ * `PARAMETERS [foo] Text; SELECT … FROM …` to declare parameter types
437
+ * before the body.
438
+ */
439
+ static SQL_PREFIX_RE = /^\s*(?:SELECT|PARAMETERS|WITH|UPDATE|INSERT|DELETE)\b/i;
440
+ isLikelySql(value) {
441
+ return VbaFormExtractor.SQL_PREFIX_RE.test(value);
442
+ }
443
+ /**
444
+ * Issue #49 — emit one `references` edge from `sourceNodeId` to a
445
+ * synthetic `class` placeholder node named `tableName`. The placeholder
446
+ * node id is `(filePath, 'class', tableName, 0)` (line-independent, so
447
+ * the same table referenced from N sites collapses to a single node);
448
+ * the edge carries a per-site `line` so consumers can navigate to the
449
+ * call site.
450
+ *
451
+ * The placeholder `class` kind mirrors `VbaExtractor.emitReference`'s
452
+ * convention. The cross-file resolver may re-type these at lookup time
453
+ * (a real `query` node takes precedence when both exist for the same
454
+ * name — same dual-match `vba-sql-impact`'s `extractFormBindings` does).
455
+ */
456
+ emitTableReference(sourceNodeId, tableName, lineNum, synthesizedBy) {
457
+ if (!tableName)
458
+ return;
459
+ const targetId = (0, tree_sitter_helpers_1.generateNodeId)(this.filePath, 'class', tableName, 0);
460
+ if (!this.synthClassNodeIds.has(targetId)) {
461
+ this.synthClassNodeIds.add(targetId);
462
+ this.nodes.push({
463
+ id: targetId,
464
+ kind: 'class',
465
+ name: tableName,
466
+ qualifiedName: tableName,
467
+ filePath: this.filePath,
468
+ language: 'vba',
469
+ startLine: lineNum,
470
+ endLine: lineNum,
471
+ startColumn: 0,
472
+ endColumn: tableName.length,
473
+ updatedAt: Date.now(),
474
+ });
475
+ }
476
+ this.edges.push({
477
+ source: sourceNodeId,
478
+ target: targetId,
479
+ kind: 'references',
480
+ provenance: 'heuristic',
481
+ metadata: { synthesizedBy },
482
+ line: lineNum,
483
+ column: 0,
484
+ });
485
+ }
486
+ /**
487
+ * Issue #49 — dispatch the value of a RecordSource/RowSource binding.
488
+ * If SQL, run `SQL_TABLE_RE` over the value and emit one edge per
489
+ * distinct table (within-value dedup so `FROM tblA JOIN tblA` emits a
490
+ * single edge). If a bare name, emit a single edge with the name as-is
491
+ * — the resolver handles the dual-match against `query` and `class`
492
+ * nodes at lookup time.
493
+ *
494
+ * Doubled-quote escapes (`""`) are unwarapped before classification;
495
+ * the regex capture already includes them as part of the value, so a
496
+ * single `.replace(/""/g, '"')` collapses them — same technique the
497
+ * `extractStringLiterals` helper uses for its emitted `text` field.
498
+ */
499
+ emitBinding(sourceNodeId, rawValue, lineNum, synthesizedBy) {
500
+ if (!rawValue)
501
+ return;
502
+ // Unwrap VBA doubled-quote escapes so a literal `""` inside the
503
+ // value becomes a single `"` before we classify and parse.
504
+ const value = rawValue.replace(/""/g, '"');
505
+ if (this.isLikelySql(value)) {
506
+ const seen = new Set();
507
+ for (const m of value.matchAll(VbaFormExtractor.SQL_TABLE_RE)) {
508
+ const table = (m[1] ?? '').replace(/[\[\]]/g, '');
509
+ if (!table)
510
+ continue;
511
+ if (seen.has(table))
512
+ continue;
513
+ seen.add(table);
514
+ this.emitTableReference(sourceNodeId, table, lineNum, synthesizedBy);
515
+ }
516
+ return;
517
+ }
518
+ // Bare name → single reference. Trim defensively so trailing
519
+ // whitespace from the SaveAsText export doesn't pollute the target.
520
+ const name = value.trim();
521
+ if (!name)
522
+ return;
523
+ this.emitTableReference(sourceNodeId, name, lineNum, synthesizedBy);
524
+ }
525
+ /**
526
+ * Issue #49 — sweep for the form-level `RecordSource` line. RecordSource
527
+ * always attributes to the form-layout node (even if the line is
528
+ * written inside a control's Begin block — defensive: in real
529
+ * SaveAsText exports the form's RecordSource sits at the root, but
530
+ * the agent's spec says "emit from the form-layout node" regardless).
531
+ *
532
+ * The sweep intentionally matches ONLY `RecordSource` here;
533
+ * `RowSource` is handled by `sweepRowSources` so the per-binding
534
+ * attribution logic (control vs. form-layout) stays in one place.
535
+ */
536
+ sweepRecordSources(src, formLayoutNodeId) {
537
+ const lines = src.split('\n');
538
+ for (let i = 0; i < lines.length; i++) {
539
+ const line = lines[i] ?? '';
540
+ const m = VbaFormExtractor.RECORD_SOURCE_RE.exec(line);
541
+ if (!m)
542
+ continue;
543
+ const rawValue = m[1] ?? '';
544
+ const lineNum = i + 1;
545
+ this.emitBinding(formLayoutNodeId, rawValue, lineNum, 'vba-record-source');
546
+ }
547
+ }
548
+ /**
549
+ * Issue #49 — sweep for per-control `RowSource` lines. RowSource
550
+ * attributes to the enclosing control's `form-instance-control` node
551
+ * when one is in scope; if the line is found outside any control
552
+ * Begin block (defensive — unusual in real exports), it falls back to
553
+ * the form-layout node. The tag is always `'vba-row-source'` so
554
+ * consumers can distinguish a control-level data binding from the
555
+ * form-level RecordSource even when both happen to share the same
556
+ * source node.
557
+ *
558
+ * Control-block tracking: a stack of `{ controlName, rowSourceType }`
559
+ * entries mirrors the current scope as the sweep walks lines in order.
560
+ * `Begin <Type>` pushes; `End` pops. `Begin Form` / `Begin Section`
561
+ * push a non-control entry so a RowSource written at the form root
562
+ * correctly falls through to the form-layout fallback.
563
+ *
564
+ * Value-list skip: when the CURRENT TOP scope's `RowSourceType` is
565
+ * `"Value List"` (captured by the same scan-window as the control's
566
+ * `Name`), the control's RowSource is a literal list and we skip the
567
+ * emission — the data is in code, not a table.
568
+ */
569
+ sweepRowSources(src, formLayoutNodeId) {
570
+ const lines = src.split('\n');
571
+ const stack = [];
572
+ for (let i = 0; i < lines.length; i++) {
573
+ const line = lines[i] ?? '';
574
+ const lineNum = i + 1;
575
+ const beginM = VbaFormExtractor.BEGIN_RE.exec(line);
576
+ if (beginM) {
577
+ const controlType = beginM[1] ?? '';
578
+ if (VbaFormExtractor.NON_CONTROL_TYPES.has(controlType)) {
579
+ stack.push({ controlName: '', rowSourceType: '' });
580
+ }
581
+ else {
582
+ // Reuse findControlName so the control-name attribution stays
583
+ // in lockstep with the form-instance-control node id we
584
+ // already produced in sweepControls. Issue #41's event-handler
585
+ // edges and Issue #49's references edges then point at the
586
+ // same id consistently.
587
+ const { name: controlName } = this.findControlName(lines, i, lineNum);
588
+ const rowSourceType = this.findRowSourceType(lines, i);
589
+ stack.push({ controlName, rowSourceType });
590
+ }
591
+ continue;
592
+ }
593
+ if (/^\s*End\s*$/i.test(line)) {
594
+ if (stack.length > 0)
595
+ stack.pop();
596
+ continue;
597
+ }
598
+ const rowM = VbaFormExtractor.ROW_SOURCE_RE.exec(line);
599
+ if (!rowM)
600
+ continue;
601
+ // Find the nearest enclosing control scope. We don't just look at
602
+ // the stack top because a row could conceivably be written inside
603
+ // a `Begin Section` (controlName='' entry on top) — in that case
604
+ // the section entry hides the actual control below it. Walk the
605
+ // stack from top to bottom and pick the first controlName we see.
606
+ let currentControl = '';
607
+ for (let j = stack.length - 1; j >= 0; j--) {
608
+ if (stack[j]?.controlName) {
609
+ currentControl = stack[j].controlName;
610
+ break;
611
+ }
612
+ }
613
+ // Skip value-list controls. The check is on the TOP scope's
614
+ // rowSourceType, which is the most-recent control's type — even
615
+ // if a nested Begin/End hid it from the stack-walk above, the
616
+ // RowSource line we're matching was written inside that scope so
617
+ // the top of stack carries the right value.
618
+ const top = stack[stack.length - 1];
619
+ if (top && top.rowSourceType === 'Value List')
620
+ continue;
621
+ const rawValue = rowM[1] ?? '';
622
+ const sourceId = currentControl
623
+ ? (0, tree_sitter_helpers_1.generateNodeId)(this.filePath, 'form-instance-control', currentControl, 0)
624
+ : formLayoutNodeId;
625
+ this.emitBinding(sourceId, rawValue, lineNum, 'vba-row-source');
626
+ }
627
+ }
628
+ /**
629
+ * Issue #49 — companion helper to `findControlName`: scan ahead from a
630
+ * `Begin <Type>` line for the first `RowSourceType = "..."` attribute
631
+ * within the same `NAME_SCAN_WINDOW` (so a missing attribute gracefully
632
+ * no-ops instead of mis-attributing). Returns the captured value (e.g.
633
+ * `"Value List"`, `"Table/Query"`) or `''` when absent.
634
+ *
635
+ * Stops at the next `Begin` or `End` boundary — same scan-window
636
+ * discipline as `findControlName`, so a misaligned scan never crosses
637
+ * into a sibling control's attribute block.
638
+ */
639
+ findRowSourceType(lines, beginLineIndex) {
640
+ const end = Math.min(lines.length, beginLineIndex + 1 + VbaFormExtractor.NAME_SCAN_WINDOW);
641
+ for (let j = beginLineIndex + 1; j < end; j++) {
642
+ const line = lines[j] ?? '';
643
+ if (/^\s*(Begin|End)\b/i.test(line))
644
+ break;
645
+ const m = VbaFormExtractor.ROW_SOURCE_TYPE_RE.exec(line);
646
+ if (m) {
647
+ return m[1] ?? '';
648
+ }
649
+ }
650
+ return '';
651
+ }
365
652
  }
366
653
  exports.VbaFormExtractor = VbaFormExtractor;
367
654
  //# sourceMappingURL=vba-form-extractor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vba-form-extractor.js","sourceRoot":"","sources":["../../src/extraction/vba-form-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vba-form-extractor.js","sourceRoot":"","sources":["../../src/extraction/vba-form-extractor.ts"],"names":[],"mappings":"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"}
@@ -69,9 +69,28 @@ export declare function stripVbaComments(src: string): string;
69
69
  /**
70
70
  * Evaluate VBA conditional-compilation directives for the modern Windows
71
71
  * Access/VBA target this extractor is designed around:
72
- * - VBA7 = true
73
- * - Win64 = true
74
- * - Mac = false
72
+ * - VBA7 = true (VBA7 runtime available)
73
+ * - Win64 = true (64-bit VBA host — Access/VBA on x64 Windows)
74
+ * - Win32 = true (legacy guard; always true on modern Windows, incl. Win64)
75
+ * - Win16 = false (legacy 16-bit Windows — not a current target)
76
+ * - Mac = false (Mac host)
77
+ *
78
+ * In addition, the file-scoped `#Const NAME = <value>` table is consulted
79
+ * before the hardcoded constants above — `#Const MODO_DEBUG = True` then
80
+ * `#If MODO_DEBUG Then` keeps the branch. The #Const line itself is
81
+ * blanked to preserve line-count parity.
82
+ *
83
+ * Truthiness follows VBA semantics: True = -1, False = 0. We achieve this
84
+ * by substituting the JS boolean literals `true`/`false` with their VBA
85
+ * numeric equivalents `-1`/`0` after the identifier+operator rewrites and
86
+ * before the whitelist check. This is a deliberate simplification — full
87
+ * VBA CC is bitwise on -1/0 (so `True And True = -1`), but the supported
88
+ * expression surface here is truthy comparison / `=` / `<>` / `And` /
89
+ * `Or` / `Not`, for which JS `&&`/`||`/`!` truthy evaluation is
90
+ * equivalent: any non-zero operand is truthy, matching VBA's "non-zero is
91
+ * true" convention. If a future task needs bitwise-precise `-1` semantics
92
+ * (e.g. distinguishing `#If X = 1` from `#If X = -1` on a `True` const),
93
+ * promote this evaluator to full integer arithmetic.
75
94
  *
76
95
  * Directives and inactive branch lines are replaced with empty strings so
77
96
  * downstream extraction keeps source-line parity. Unsupported/unsafe
@@ -1 +1 @@
1
- {"version":3,"file":"vba-preprocess.d.ts","sourceRoot":"","sources":["../../src/extraction/vba-preprocess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWzD;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4EpD;AAiBD;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoDpE;AA+FD,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAsDtE"}
1
+ {"version":3,"file":"vba-preprocess.d.ts","sourceRoot":"","sources":["../../src/extraction/vba-preprocess.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAMH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAWzD;AAWD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA4EpD;AAsBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA0EpE;AA0LD,MAAM,WAAW,iBAAiB;IAChC,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAsDtE"}
@@ -167,12 +167,36 @@ const IF_DIRECTIVE = /^\s*#If\s+(.+?)\s+Then\s*$/i;
167
167
  const ELSEIF_DIRECTIVE = /^\s*#ElseIf\s+(.+?)\s+Then\s*$/i;
168
168
  const ELSE_DIRECTIVE = /^\s*#Else\s*$/i;
169
169
  const ENDIF_DIRECTIVE = /^\s*#(?:End\s*If|EndIf)\s*$/i;
170
+ // #Const NAME = <value> — captured name (identifier) and value (anything
171
+ // to EOL). The directive line is always blanked; the value is fed through
172
+ // the same normalize+evaluate pipeline as a #If expression so it inherits
173
+ // the substitution table for free.
174
+ const CONST_DIRECTIVE = /^\s*#Const\s+([A-Za-z_][A-Za-z_0-9]*)\s*=\s*(.+?)\s*$/i;
170
175
  /**
171
176
  * Evaluate VBA conditional-compilation directives for the modern Windows
172
177
  * Access/VBA target this extractor is designed around:
173
- * - VBA7 = true
174
- * - Win64 = true
175
- * - Mac = false
178
+ * - VBA7 = true (VBA7 runtime available)
179
+ * - Win64 = true (64-bit VBA host — Access/VBA on x64 Windows)
180
+ * - Win32 = true (legacy guard; always true on modern Windows, incl. Win64)
181
+ * - Win16 = false (legacy 16-bit Windows — not a current target)
182
+ * - Mac = false (Mac host)
183
+ *
184
+ * In addition, the file-scoped `#Const NAME = <value>` table is consulted
185
+ * before the hardcoded constants above — `#Const MODO_DEBUG = True` then
186
+ * `#If MODO_DEBUG Then` keeps the branch. The #Const line itself is
187
+ * blanked to preserve line-count parity.
188
+ *
189
+ * Truthiness follows VBA semantics: True = -1, False = 0. We achieve this
190
+ * by substituting the JS boolean literals `true`/`false` with their VBA
191
+ * numeric equivalents `-1`/`0` after the identifier+operator rewrites and
192
+ * before the whitelist check. This is a deliberate simplification — full
193
+ * VBA CC is bitwise on -1/0 (so `True And True = -1`), but the supported
194
+ * expression surface here is truthy comparison / `=` / `<>` / `And` /
195
+ * `Or` / `Not`, for which JS `&&`/`||`/`!` truthy evaluation is
196
+ * equivalent: any non-zero operand is truthy, matching VBA's "non-zero is
197
+ * true" convention. If a future task needs bitwise-precise `-1` semantics
198
+ * (e.g. distinguishing `#If X = 1` from `#If X = -1` on a `True` const),
199
+ * promote this evaluator to full integer arithmetic.
176
200
  *
177
201
  * Directives and inactive branch lines are replaced with empty strings so
178
202
  * downstream extraction keeps source-line parity. Unsupported/unsafe
@@ -184,11 +208,32 @@ function preprocessConditionalCompilation(src) {
184
208
  const lines = src.split('\n');
185
209
  const out = [];
186
210
  const stack = [];
211
+ // Per-call #Const table. Name → post-evaluation numeric string (e.g.
212
+ // "-1" for True, "0" for False, "1" for an integer literal). Stored as a
213
+ // string so it can be substituted verbatim into the normalized
214
+ // expression. A name that fails to evaluate is NOT stored — the lookup
215
+ // simply misses and the conservative fallback (unknown identifier →
216
+ // false) applies, exactly as for an unrecognised hardcoded constant.
217
+ const constTable = new Map();
187
218
  for (const line of lines) {
219
+ // Parse #Const BEFORE the other directives so the table is up-to-date
220
+ // when a subsequent #If expression references it. The line itself is
221
+ // always blanked (line-count parity invariant).
222
+ const constMatch = CONST_DIRECTIVE.exec(line);
223
+ if (constMatch) {
224
+ const name = (constMatch[1] ?? '').trim();
225
+ const rhs = (constMatch[2] ?? '').trim();
226
+ const value = evaluateConstRhs(rhs, constTable);
227
+ if (value !== null) {
228
+ constTable.set(name, value);
229
+ }
230
+ out.push('');
231
+ continue;
232
+ }
188
233
  const ifMatch = IF_DIRECTIVE.exec(line);
189
234
  if (ifMatch) {
190
235
  const parentActive = stack.every((frame) => frame.active);
191
- const active = parentActive && evaluateConditionalExpression(ifMatch[1] ?? '');
236
+ const active = parentActive && evaluateConditionalExpression(ifMatch[1] ?? '', constTable);
192
237
  stack.push({ parentActive, active, branchTaken: active });
193
238
  out.push('');
194
239
  continue;
@@ -199,7 +244,7 @@ function preprocessConditionalCompilation(src) {
199
244
  if (frame) {
200
245
  const active = frame.parentActive &&
201
246
  !frame.branchTaken &&
202
- evaluateConditionalExpression(elseIfMatch[1] ?? '');
247
+ evaluateConditionalExpression(elseIfMatch[1] ?? '', constTable);
203
248
  frame.active = active;
204
249
  if (active)
205
250
  frame.branchTaken = true;
@@ -227,21 +272,63 @@ function preprocessConditionalCompilation(src) {
227
272
  }
228
273
  return out.join('\n');
229
274
  }
230
- function evaluateConditionalExpression(expr) {
275
+ /**
276
+ * Apply the full substitution pipeline to a conditional-compilation
277
+ * expression: identifier substitutions (#Const table first, then the
278
+ * hardcoded constants), operator rewrites, and the True→-1 / False→0
279
+ * conversion that gives the evaluator correct VBA equality semantics.
280
+ *
281
+ * Returns the normalized string if it passes the whitelist (signed
282
+ * integer literal + operators + parens + whitespace only), or `null` if
283
+ * any substitution left a token that does not match the whitelist. A
284
+ * `null` return signals "do not evaluate" — the caller falls back to
285
+ * false (the conservative behaviour preserved from the original
286
+ * implementation).
287
+ */
288
+ function normalizeConditionalExpression(expr, constTable) {
231
289
  let normalized = expr.trim();
232
290
  normalized = normalized.replace(/\bThen\s*$/i, '');
233
291
  normalized = normalized.replace(/<>/g, '!==');
234
292
  normalized = normalized.replace(/(?<![<>=])=(?![=])/g, '===');
235
- normalized = normalized.replace(/\bVBA7\b/gi, 'true');
236
- normalized = normalized.replace(/\bWin64\b/gi, 'true');
237
- normalized = normalized.replace(/\bMac\b/gi, 'false');
238
- normalized = normalized.replace(/\bAnd\b/gi, '&&');
239
- normalized = normalized.replace(/\bOr\b/gi, '||');
240
- normalized = normalized.replace(/\bNot\b/gi, '!');
241
- normalized = normalized.trim();
242
- if (!/^(?:true|false|\d+|&&|\|\||!|===|!==|\(|\)|\s)+$/.test(normalized)) {
243
- return false;
293
+ // #Const table first — user-defined constants shadow the hardcoded ones
294
+ // below. The replacement value is a numeric literal string (e.g. "-1"),
295
+ // so it cannot re-introduce identifiers or operators. Use a replacement
296
+ // function so the value is inserted verbatim — `String.replace(regex,
297
+ // string)` would otherwise interpret `$`/`\\` in the replacement.
298
+ for (const [name, value] of constTable) {
299
+ normalized = normalized.replace(new RegExp(`\\b${escapeRegExp(name)}\\b`, 'gi'), () => value);
300
+ }
301
+ normalized = normalized
302
+ .replace(/\bVBA7\b/gi, 'true')
303
+ .replace(/\bWin64\b/gi, 'true')
304
+ .replace(/\bWin32\b/gi, 'true')
305
+ .replace(/\bWin16\b/gi, 'false')
306
+ .replace(/\bMac\b/gi, 'false')
307
+ .replace(/\bAnd\b/gi, '&&')
308
+ .replace(/\bOr\b/gi, '||')
309
+ .replace(/\bNot\b/gi, '!')
310
+ // VBA CC truthiness: True = -1, False = 0. Substitute the JS boolean
311
+ // literals with their VBA numeric equivalents so a downstream
312
+ // `Win64 = -1` comparison (after the `=`→`===` rewrite) evaluates
313
+ // true. See the doc comment on `preprocessConditionalCompilation`
314
+ // for the chosen simplification.
315
+ .replace(/\btrue\b/gi, '-1')
316
+ .replace(/\bfalse\b/gi, '0')
317
+ .trim();
318
+ // Whitelist — after every substitution the expression should consist
319
+ // only of signed integer literals, operators, parens, and whitespace.
320
+ // The original whitelist accepted `true`/`false` literals; we have
321
+ // converted those to `-1`/`0` above, so the alternation is no longer
322
+ // needed. The signed-integer alternation accepts unary minus.
323
+ if (!/^(?:-?\d+|\s|&&|\|\||!|===|!==|\(|\))+?$/.test(normalized)) {
324
+ return null;
244
325
  }
326
+ return normalized;
327
+ }
328
+ function evaluateConditionalExpression(expr, constTable = new Map()) {
329
+ const normalized = normalizeConditionalExpression(expr, constTable);
330
+ if (normalized === null)
331
+ return false;
245
332
  try {
246
333
  return Boolean(Function(`"use strict"; return (${normalized});`)());
247
334
  }
@@ -249,6 +336,41 @@ function evaluateConditionalExpression(expr) {
249
336
  return false;
250
337
  }
251
338
  }
339
+ /**
340
+ * Evaluate the RHS of a `#Const NAME = <value>` directive. Returns the
341
+ * value as a JS-substitutable numeric string (e.g. `"-1"`, `"0"`,
342
+ * `"1"`) so it can be substituted verbatim into subsequent #If
343
+ * expressions, OR `null` if the RHS is unsupported (whitelist failure,
344
+ * non-numeric/non-boolean evaluation result).
345
+ *
346
+ * Re-uses the same normalize pipeline as #If so recursive `#Const X = Y`
347
+ * references resolve against the existing table (but a self-reference is
348
+ * impossible: the new entry is added AFTER the RHS is evaluated, so it
349
+ * is invisible to its own evaluation).
350
+ */
351
+ function evaluateConstRhs(rhs, constTable) {
352
+ const normalized = normalizeConditionalExpression(rhs, constTable);
353
+ if (normalized === null)
354
+ return null;
355
+ let result;
356
+ try {
357
+ result = Function(`"use strict"; return (${normalized});`)();
358
+ }
359
+ catch {
360
+ return null;
361
+ }
362
+ if (typeof result === 'number' && Number.isFinite(result)) {
363
+ return String(Math.trunc(result));
364
+ }
365
+ if (typeof result === 'boolean') {
366
+ return result ? '-1' : '0';
367
+ }
368
+ return null;
369
+ }
370
+ /** Escape regex metacharacters so a name can be interpolated safely. */
371
+ function escapeRegExp(s) {
372
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
373
+ }
252
374
  /**
253
375
  * Split `line` into alternating code / string-literal segments and apply
254
376
  * `REM_MIDLINE` only to code segments. String segments are returned
@@ -1 +1 @@
1
- {"version":3,"file":"vba-preprocess.js","sourceRoot":"","sources":["../../src/extraction/vba-preprocess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vba-preprocess.js","sourceRoot":"","sources":["../../src/extraction/vba-preprocess.ts"],"names":[],"mappings":"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"}