@aroman22/codegraph-vba-darwin-arm64 1.6.1 → 1.6.3

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 (82) hide show
  1. package/lib/dist/db/migrations.d.ts +1 -1
  2. package/lib/dist/db/migrations.d.ts.map +1 -1
  3. package/lib/dist/db/migrations.js +14 -1
  4. package/lib/dist/db/migrations.js.map +1 -1
  5. package/lib/dist/db/queries.d.ts.map +1 -1
  6. package/lib/dist/db/queries.js +8 -2
  7. package/lib/dist/db/queries.js.map +1 -1
  8. package/lib/dist/db/schema.sql +1 -0
  9. package/lib/dist/extraction/grammars.d.ts +32 -0
  10. package/lib/dist/extraction/grammars.d.ts.map +1 -1
  11. package/lib/dist/extraction/grammars.js +61 -0
  12. package/lib/dist/extraction/grammars.js.map +1 -1
  13. package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
  14. package/lib/dist/extraction/tree-sitter.js +24 -0
  15. package/lib/dist/extraction/tree-sitter.js.map +1 -1
  16. package/lib/dist/extraction/vba/call-sweep.d.ts +13 -1
  17. package/lib/dist/extraction/vba/call-sweep.d.ts.map +1 -1
  18. package/lib/dist/extraction/vba/call-sweep.js +229 -151
  19. package/lib/dist/extraction/vba/call-sweep.js.map +1 -1
  20. package/lib/dist/extraction/vba/context.d.ts +52 -2
  21. package/lib/dist/extraction/vba/context.d.ts.map +1 -1
  22. package/lib/dist/extraction/vba/context.js +29 -2
  23. package/lib/dist/extraction/vba/context.js.map +1 -1
  24. package/lib/dist/extraction/vba/declarations.d.ts +10 -1
  25. package/lib/dist/extraction/vba/declarations.d.ts.map +1 -1
  26. package/lib/dist/extraction/vba/declarations.js +141 -123
  27. package/lib/dist/extraction/vba/declarations.js.map +1 -1
  28. package/lib/dist/extraction/vba/dims.d.ts +9 -1
  29. package/lib/dist/extraction/vba/dims.d.ts.map +1 -1
  30. package/lib/dist/extraction/vba/dims.js +125 -109
  31. package/lib/dist/extraction/vba/dims.js.map +1 -1
  32. package/lib/dist/extraction/vba/enums-consts.d.ts +13 -10
  33. package/lib/dist/extraction/vba/enums-consts.d.ts.map +1 -1
  34. package/lib/dist/extraction/vba/enums-consts.js +153 -131
  35. package/lib/dist/extraction/vba/enums-consts.js.map +1 -1
  36. package/lib/dist/extraction/vba/implements.d.ts +9 -1
  37. package/lib/dist/extraction/vba/implements.d.ts.map +1 -1
  38. package/lib/dist/extraction/vba/implements.js +56 -40
  39. package/lib/dist/extraction/vba/implements.js.map +1 -1
  40. package/lib/dist/extraction/vba/procedures.d.ts +13 -1
  41. package/lib/dist/extraction/vba/procedures.d.ts.map +1 -1
  42. package/lib/dist/extraction/vba/procedures.js +238 -186
  43. package/lib/dist/extraction/vba/procedures.js.map +1 -1
  44. package/lib/dist/extraction/vba/sql-wrapper.d.ts.map +1 -1
  45. package/lib/dist/extraction/vba/sql-wrapper.js +20 -3
  46. package/lib/dist/extraction/vba/sql-wrapper.js.map +1 -1
  47. package/lib/dist/extraction/vba-extractor.d.ts.map +1 -1
  48. package/lib/dist/extraction/vba-extractor.js +47 -38
  49. package/lib/dist/extraction/vba-extractor.js.map +1 -1
  50. package/lib/dist/extraction/vba-form-extractor.d.ts.map +1 -1
  51. package/lib/dist/extraction/vba-form-extractor.js +6 -1
  52. package/lib/dist/extraction/vba-form-extractor.js.map +1 -1
  53. package/lib/dist/extraction/vba-preprocess.d.ts.map +1 -1
  54. package/lib/dist/extraction/vba-preprocess.js +23 -2
  55. package/lib/dist/extraction/vba-preprocess.js.map +1 -1
  56. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts +26 -0
  57. package/lib/dist/extraction/vba-test-manifest-extractor.d.ts.map +1 -0
  58. package/lib/dist/extraction/vba-test-manifest-extractor.js +173 -0
  59. package/lib/dist/extraction/vba-test-manifest-extractor.js.map +1 -0
  60. package/lib/dist/extraction/vba-test-sequence-extractor.d.ts +29 -0
  61. package/lib/dist/extraction/vba-test-sequence-extractor.d.ts.map +1 -0
  62. package/lib/dist/extraction/vba-test-sequence-extractor.js +180 -0
  63. package/lib/dist/extraction/vba-test-sequence-extractor.js.map +1 -0
  64. package/lib/dist/installer/index.js +2 -2
  65. package/lib/dist/mcp/server-instructions.d.ts +1 -1
  66. package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
  67. package/lib/dist/mcp/server-instructions.js +5 -0
  68. package/lib/dist/mcp/server-instructions.js.map +1 -1
  69. package/lib/dist/resolution/index.d.ts.map +1 -1
  70. package/lib/dist/resolution/index.js +30 -0
  71. package/lib/dist/resolution/index.js.map +1 -1
  72. package/lib/dist/resolution/types.d.ts +7 -0
  73. package/lib/dist/resolution/types.d.ts.map +1 -1
  74. package/lib/dist/upgrade/index.d.ts +1 -1
  75. package/lib/dist/upgrade/index.d.ts.map +1 -1
  76. package/lib/dist/upgrade/index.js +1 -1
  77. package/lib/dist/upgrade/index.js.map +1 -1
  78. package/lib/node_modules/.modules.yaml +1 -1
  79. package/lib/node_modules/.pnpm/lock.yaml +4 -0
  80. package/lib/node_modules/.pnpm-workspace-state-v1.json +1 -1
  81. package/lib/package.json +8 -2
  82. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnumsConstsClassifier = createEnumsConstsClassifier;
3
4
  exports.sweepEnumsAndConsts = sweepEnumsAndConsts;
4
5
  /**
5
6
  * Enum / Const sweep (REQ-CODE-12, REQ-CODE-13). Emits `enum` + `enum_member`
@@ -24,140 +25,87 @@ const ENUM_MEMBER_RE = /^\s*(\p{L}[\p{L}\p{N}_]*)\s*(?:=|$)/u;
24
25
  /** `[visibility] Const <decls>` — captures visibility (1) and the rest (2). */
25
26
  const CONST_DECL_RE = /^\s*(?:(Public|Private|Friend|Global)\s+)?Const\s+(.+)$/i;
26
27
  /**
27
- * Walk the (uncommented, line-joined) source and emit:
28
- * - one `enum` node per `Enum <Name>` block, with one `enum_member` node
29
- * per member and a `contains` edge enum→member;
30
- * - one `constant` node per name declared on a `Const` line (multi-name
31
- * lines emit one node per name);
32
- * - a `contains` edge from the module/class node to each enum and constant
33
- * (held in `pendingModuleOrClassSource` until the module node exists).
28
+ * Issue #83: factory for the enum / const classifier. Closure state:
29
+ * `currentEnum` (open `Enum ... End Enum` block).
34
30
  *
35
- * Returns the number of top-level symbols (enums + constants) emitted so
36
- * the caller can flip `hasAnySymbols`.
31
+ * Also resets + advances the SHARED `ctx.procStack`/`ctx.currentProcKey`
32
+ * per line — same protocol the pre-#83 sweep followed. The calls-sql
33
+ * classifier runs AFTER this one in the per-line dispatch order and
34
+ * applies the same protocol, so the end-of-line scope state is identical
35
+ * to the legacy sequential-sweep behaviour.
37
36
  */
38
- function sweepEnumsAndConsts(ctx, src) {
39
- const lines = src.split('\n');
40
- let count = 0;
37
+ function createEnumsConstsClassifier() {
41
38
  let currentEnum = null;
42
- // Issue #52: reset the shared scope stack + lookup key so leftover
43
- // state from a previous extract() (impossible in production but
44
- // possible in unit tests that construct a fresh extractor and run
45
- // twice) never leaks across sweeps. The walk below updates both
46
- // every iteration; `sweepCallsAndSql` resets again at its own
47
- // start, before any OpenForm/OpenQuery reader consults them.
48
- ctx.procStack.length = 0;
49
- ctx.currentProcKey = 'module';
50
- for (let i = 0; i < lines.length; i++) {
51
- const line = lines[i] ?? '';
52
- const lineNum = i + 1;
53
- // Issue #52: track proc scope so Const declarations on this line
54
- // can decide whether they belong to the module (currentProcKey
55
- // === 'module') or to the top-most procedure (write the per-proc
56
- // bucket, skip the module-level `constant` node emission).
57
- //
58
- // PROC_RE cannot overlap with CONST_DECL_RE on the same physical
59
- // line (different leading keywords), so it is safe to advance the
60
- // stack here and then fall through to the rest of the body.
61
- const procStart = constants_1.PROC_RE.exec(line);
62
- if (procStart) {
63
- ctx.procStack.push(lineNum);
64
- ctx.currentProcKey = String(lineNum);
65
- }
66
- else if (constants_1.PROCEDURE_END_RE.test(line) && ctx.procStack.length > 0) {
67
- ctx.procStack.pop();
68
- ctx.currentProcKey =
69
- ctx.procStack.length > 0
70
- ? String(ctx.procStack[ctx.procStack.length - 1])
71
- : 'module';
72
- }
73
- if (currentEnum) {
74
- if (ENUM_END_RE.test(line)) {
75
- currentEnum = null;
76
- continue;
39
+ const cls = {
40
+ name: 'enumsConsts',
41
+ count: 0,
42
+ classifyLine(line, i, ctx) {
43
+ const lineNum = i + 1;
44
+ // Issue #52: track proc scope so Const declarations on this line
45
+ // can decide whether they belong to the module (currentProcKey
46
+ // === 'module') or to the top-most procedure (write the per-proc
47
+ // bucket, skip the module-level `constant` node emission).
48
+ //
49
+ // PROC_RE cannot overlap with CONST_DECL_RE on the same physical
50
+ // line (different leading keywords), so it is safe to advance the
51
+ // stack here and then fall through to the rest of the body.
52
+ const procStart = constants_1.PROC_RE.exec(line);
53
+ if (procStart) {
54
+ ctx.procStack.push(lineNum);
55
+ ctx.currentProcKey = String(lineNum);
77
56
  }
78
- const mm = ENUM_MEMBER_RE.exec(line);
79
- if (mm) {
80
- const memberName = mm[1] ?? '';
81
- if (memberName) {
82
- const memberId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum_member', memberName, lineNum);
83
- ctx.nodes.push({
84
- id: memberId,
85
- kind: 'enum_member',
86
- name: memberName,
87
- qualifiedName: `${currentEnum.name}.${memberName}`,
88
- filePath: ctx.filePath,
89
- language: 'vba',
90
- startLine: lineNum,
91
- endLine: lineNum,
92
- startColumn: 0,
93
- endColumn: line.length,
94
- updatedAt: Date.now(),
95
- });
96
- // enum → member: source is known, emit directly (not pending).
97
- ctx.edges.push({
98
- source: currentEnum.id,
99
- target: memberId,
100
- kind: 'contains',
101
- });
102
- }
57
+ else if (constants_1.PROCEDURE_END_RE.test(line) && ctx.procStack.length > 0) {
58
+ ctx.procStack.pop();
59
+ ctx.currentProcKey =
60
+ ctx.procStack.length > 0
61
+ ? String(ctx.procStack[ctx.procStack.length - 1])
62
+ : 'module';
103
63
  }
104
- continue;
105
- }
106
- const enumStart = ENUM_START_RE.exec(line);
107
- if (enumStart) {
108
- const visibility = (0, text_utils_1.foldVisibility)(enumStart[1] ?? '');
109
- const name = enumStart[2] ?? '';
110
- if (!name)
111
- continue;
112
- const enumId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum', name, lineNum);
113
- ctx.nodes.push({
114
- id: enumId,
115
- kind: 'enum',
116
- name,
117
- qualifiedName: name,
118
- filePath: ctx.filePath,
119
- language: 'vba',
120
- startLine: lineNum,
121
- endLine: lineNum,
122
- startColumn: 0,
123
- endColumn: line.length,
124
- visibility,
125
- updatedAt: Date.now(),
126
- });
127
- ctx.pushContainsFromModule(enumId);
128
- currentEnum = { id: enumId, name };
129
- count++;
130
- continue;
131
- }
132
- const constDecl = CONST_DECL_RE.exec(line);
133
- if (constDecl) {
134
- const visibility = (0, text_utils_1.foldVisibility)(constDecl[1] ?? '');
135
- const body = constDecl[2] ?? '';
136
- const declarations = (0, text_utils_1.parseConstDeclarations)(body);
137
- for (const declaration of declarations) {
138
- const constName = declaration.name;
139
- if (!constName)
140
- continue;
141
- // Issue #52: every Const line (module-level or proc-local)
142
- // writes into a per-scope resolution bucket so
143
- // `DoCmd.OpenForm FORM_X` later resolves correctly; module-level
144
- // Consts additionally emit a `constant` graph node + the
145
- // module→constant `contains` edge. Proc-local Consts skip both
146
- // (the const is not a module symbol, so the wrong-containment
147
- // node + edge the pre-fix code emitted are gone), but the
148
- // per-proc bucket keeps OpenForm/OpenQuery argument
149
- // resolution working exactly as before.
150
- if (declaration.value !== null) {
151
- ctx.setLocalConstInScope(ctx.currentProcKey, constName, declaration.value);
64
+ if (currentEnum) {
65
+ if (ENUM_END_RE.test(line)) {
66
+ currentEnum = null;
67
+ return;
68
+ }
69
+ const mm = ENUM_MEMBER_RE.exec(line);
70
+ if (mm) {
71
+ const memberName = mm[1] ?? '';
72
+ if (memberName) {
73
+ const memberId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum_member', memberName, lineNum);
74
+ ctx.nodes.push({
75
+ id: memberId,
76
+ kind: 'enum_member',
77
+ name: memberName,
78
+ qualifiedName: `${currentEnum.name}.${memberName}`,
79
+ filePath: ctx.filePath,
80
+ language: 'vba',
81
+ startLine: lineNum,
82
+ endLine: lineNum,
83
+ startColumn: 0,
84
+ endColumn: line.length,
85
+ updatedAt: Date.now(),
86
+ });
87
+ // enum → member: source is known, emit directly (not pending).
88
+ ctx.edges.push({
89
+ source: currentEnum.id,
90
+ target: memberId,
91
+ kind: 'contains',
92
+ });
93
+ }
152
94
  }
153
- if (ctx.procStack.length > 0)
154
- continue;
155
- const constId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'constant', constName, lineNum);
95
+ return;
96
+ }
97
+ const enumStart = ENUM_START_RE.exec(line);
98
+ if (enumStart) {
99
+ const visibility = (0, text_utils_1.foldVisibility)(enumStart[1] ?? '');
100
+ const name = enumStart[2] ?? '';
101
+ if (!name)
102
+ return;
103
+ const enumId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'enum', name, lineNum);
156
104
  ctx.nodes.push({
157
- id: constId,
158
- kind: 'constant',
159
- name: constName,
160
- qualifiedName: constName,
105
+ id: enumId,
106
+ kind: 'enum',
107
+ name,
108
+ qualifiedName: name,
161
109
  filePath: ctx.filePath,
162
110
  language: 'vba',
163
111
  startLine: lineNum,
@@ -165,14 +113,88 @@ function sweepEnumsAndConsts(ctx, src) {
165
113
  startColumn: 0,
166
114
  endColumn: line.length,
167
115
  visibility,
168
- metadata: declaration.value !== null ? { value: declaration.value } : undefined,
169
116
  updatedAt: Date.now(),
170
117
  });
171
- ctx.pushContainsFromModule(constId);
172
- count++;
118
+ ctx.pushContainsFromModule(enumId);
119
+ currentEnum = { id: enumId, name };
120
+ this.count++;
121
+ return;
122
+ }
123
+ const constDecl = CONST_DECL_RE.exec(line);
124
+ if (constDecl) {
125
+ const visibility = (0, text_utils_1.foldVisibility)(constDecl[1] ?? '');
126
+ const body = constDecl[2] ?? '';
127
+ const declarations = (0, text_utils_1.parseConstDeclarations)(body);
128
+ for (const declaration of declarations) {
129
+ const constName = declaration.name;
130
+ if (!constName)
131
+ continue;
132
+ // Issue #52: every Const line (module-level or proc-local)
133
+ // writes into a per-scope resolution bucket so
134
+ // `DoCmd.OpenForm FORM_X` later resolves correctly; module-level
135
+ // Consts additionally emit a `constant` graph node + the
136
+ // module→constant `contains` edge. Proc-local Consts skip both
137
+ // (the const is not a module symbol, so the wrong-containment
138
+ // node + edge the pre-fix code emitted are gone), but the
139
+ // per-proc bucket keeps OpenForm/OpenQuery argument
140
+ // resolution working exactly as before.
141
+ if (declaration.value !== null) {
142
+ ctx.setLocalConstInScope(ctx.currentProcKey, constName, declaration.value);
143
+ }
144
+ if (ctx.procStack.length > 0)
145
+ continue;
146
+ const constId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'constant', constName, lineNum);
147
+ ctx.nodes.push({
148
+ id: constId,
149
+ kind: 'constant',
150
+ name: constName,
151
+ qualifiedName: constName,
152
+ filePath: ctx.filePath,
153
+ language: 'vba',
154
+ startLine: lineNum,
155
+ endLine: lineNum,
156
+ startColumn: 0,
157
+ endColumn: line.length,
158
+ visibility,
159
+ metadata: declaration.value !== null ? { value: declaration.value } : undefined,
160
+ updatedAt: Date.now(),
161
+ });
162
+ ctx.pushContainsFromModule(constId);
163
+ this.count++;
164
+ }
173
165
  }
166
+ },
167
+ };
168
+ // Issue #52: reset the shared scope stack + lookup key so leftover
169
+ // state from a previous extract() (impossible in production but
170
+ // possible in unit tests that construct a fresh extractor and run
171
+ // twice) never leaks across sweeps. The walk below updates both
172
+ // every iteration; `sweepCallsAndSql` resets again at its own
173
+ // start, before any OpenForm/OpenQuery reader consults them.
174
+ // We re-bind the classifier to call this reset at the start of
175
+ // its first invocation.
176
+ const originalClassify = cls.classifyLine;
177
+ let initialized = false;
178
+ cls.classifyLine = function (line, i, ctx) {
179
+ if (!initialized) {
180
+ ctx.procStack.length = 0;
181
+ ctx.currentProcKey = 'module';
182
+ initialized = true;
174
183
  }
184
+ return originalClassify.call(this, line, i, ctx);
185
+ };
186
+ return cls;
187
+ }
188
+ /**
189
+ * Backward-compat wrapper (see procedures.ts). Returns the classifier's
190
+ * `count` so the orchestrator can decide `hasAnySymbols`.
191
+ */
192
+ function sweepEnumsAndConsts(ctx, src) {
193
+ const cls = createEnumsConstsClassifier();
194
+ const lines = src.split('\n');
195
+ for (let i = 0; i < lines.length; i++) {
196
+ cls.classifyLine(lines[i] ?? '', i, ctx);
175
197
  }
176
- return count;
198
+ return cls.count;
177
199
  }
178
200
  //# sourceMappingURL=enums-consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"enums-consts.js","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enums-consts.js","sourceRoot":"","sources":["../../../src/extraction/vba/enums-consts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,11 @@
1
- import { VbaExtractorContext } from './context';
1
+ import { VbaExtractorContext, VbaClassifier } from './context';
2
+ /**
3
+ * Issue #83: factory for the `Implements` classifier. Stateless per-line.
4
+ */
5
+ export declare function createImplementsClassifier(): VbaClassifier;
6
+ /**
7
+ * Backward-compat wrapper (see procedures.ts). Returns the classifier's
8
+ * `count` so the orchestrator can decide `hasAnySymbols`.
9
+ */
2
10
  export declare function sweepImplements(ctx: VbaExtractorContext, src: string): number;
3
11
  //# sourceMappingURL=implements.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"implements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAKhD,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CA+C7E"}
1
+ {"version":3,"file":"implements.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAK/D;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,CA+C1D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7E"}
@@ -1,52 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createImplementsClassifier = createImplementsClassifier;
3
4
  exports.sweepImplements = sweepImplements;
4
5
  const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
5
6
  /** Implements regex. */
6
7
  const IMPLEMENTS_RE = /^\s*Implements\s+(\p{L}[\p{L}\p{N}_]*)/iu;
8
+ /**
9
+ * Issue #83: factory for the `Implements` classifier. Stateless per-line.
10
+ */
11
+ function createImplementsClassifier() {
12
+ return {
13
+ name: 'implements',
14
+ count: 0,
15
+ classifyLine(line, i, ctx) {
16
+ const m = IMPLEMENTS_RE.exec(line);
17
+ if (!m)
18
+ return;
19
+ const name = m[1] ?? '';
20
+ if (!name)
21
+ return;
22
+ const lineNum = i + 1;
23
+ const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'interface', name, lineNum);
24
+ ctx.nodes.push({
25
+ id: targetId,
26
+ kind: 'interface',
27
+ name,
28
+ qualifiedName: name,
29
+ filePath: ctx.filePath,
30
+ language: 'vba',
31
+ startLine: lineNum,
32
+ endLine: lineNum,
33
+ startColumn: 0,
34
+ endColumn: line.length,
35
+ updatedAt: Date.now(),
36
+ });
37
+ const edge = {
38
+ source: '', // placeholder; rewritten after module node exists
39
+ target: targetId,
40
+ kind: 'implements',
41
+ // S4 fix: `Implements IFoo` is a static, source-declared fact —
42
+ // not a guess. Use the `parser` provenance (generalizes
43
+ // `tree-sitter` for non-tree-sitter extractors like our regex
44
+ // sweepers) instead of `heuristic`, which is reserved for
45
+ // guessed/inferred edges.
46
+ provenance: 'parser',
47
+ line: lineNum,
48
+ column: 0,
49
+ };
50
+ ctx.edges.push(edge);
51
+ ctx.pendingModuleOrClassSource.push(edge);
52
+ this.count++;
53
+ },
54
+ };
55
+ }
56
+ /**
57
+ * Backward-compat wrapper (see procedures.ts). Returns the classifier's
58
+ * `count` so the orchestrator can decide `hasAnySymbols`.
59
+ */
7
60
  function sweepImplements(ctx, src) {
61
+ const cls = createImplementsClassifier();
8
62
  const lines = src.split('\n');
9
- let count = 0;
10
63
  for (let i = 0; i < lines.length; i++) {
11
- const line = lines[i] ?? '';
12
- const m = IMPLEMENTS_RE.exec(line);
13
- if (!m)
14
- continue;
15
- const name = m[1] ?? '';
16
- if (!name)
17
- continue;
18
- const lineNum = i + 1;
19
- const targetId = (0, tree_sitter_helpers_1.generateNodeId)(ctx.filePath, 'interface', name, lineNum);
20
- ctx.nodes.push({
21
- id: targetId,
22
- kind: 'interface',
23
- name,
24
- qualifiedName: name,
25
- filePath: ctx.filePath,
26
- language: 'vba',
27
- startLine: lineNum,
28
- endLine: lineNum,
29
- startColumn: 0,
30
- endColumn: line.length,
31
- updatedAt: Date.now(),
32
- });
33
- const edge = {
34
- source: '', // placeholder; rewritten after module node exists
35
- target: targetId,
36
- kind: 'implements',
37
- // S4 fix: `Implements IFoo` is a static, source-declared fact —
38
- // not a guess. Use the `parser` provenance (generalizes
39
- // `tree-sitter` for non-tree-sitter extractors like our regex
40
- // sweepers) instead of `heuristic`, which is reserved for
41
- // guessed/inferred edges.
42
- provenance: 'parser',
43
- line: lineNum,
44
- column: 0,
45
- };
46
- ctx.edges.push(edge);
47
- ctx.pendingModuleOrClassSource.push(edge);
48
- count++;
64
+ cls.classifyLine(lines[i] ?? '', i, ctx);
49
65
  }
50
- return count;
66
+ return cls.count;
51
67
  }
52
68
  //# sourceMappingURL=implements.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"implements.js","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":";;AAYA,0CA+CC;AArDD,gEAAwD;AAGxD,wBAAwB;AACxB,MAAM,aAAa,GAAG,0CAA0C,CAAC;AAEjE,SAAgB,eAAe,CAAC,GAAwB,EAAE,GAAW;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC;YAAE,SAAS;QACjB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAC7B,GAAG,CAAC,QAAQ,EACZ,WAAW,EACX,IAAI,EACJ,OAAO,CACR,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,QAAQ;YACZ,IAAI,EAAE,WAAW;YACjB,IAAI;YACJ,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;QACH,MAAM,IAAI,GAAS;YACjB,MAAM,EAAE,EAAE,EAAE,kDAAkD;YAC9D,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,YAAY;YAClB,gEAAgE;YAChE,wDAAwD;YACxD,8DAA8D;YAC9D,0DAA0D;YAC1D,0BAA0B;YAC1B,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC;SACV,CAAC;QACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"implements.js","sourceRoot":"","sources":["../../../src/extraction/vba/implements.ts"],"names":[],"mappings":";;AAeA,gEA+CC;AAMD,0CAOC;AArED,gEAAwD;AAGxD,wBAAwB;AACxB,MAAM,aAAa,GAAG,0CAA0C,CAAC;AAEjE;;GAEG;AACH,SAAgB,0BAA0B;IACxC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,CAAC;QACR,YAAY,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG;YACvB,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,QAAQ,GAAG,IAAA,oCAAc,EAC7B,GAAG,CAAC,QAAQ,EACZ,WAAW,EACX,IAAI,EACJ,OAAO,CACR,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBACb,EAAE,EAAE,QAAQ;gBACZ,IAAI,EAAE,WAAW;gBACjB,IAAI;gBACJ,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,QAAQ,EAAE,KAAK;gBACf,SAAS,EAAE,OAAO;gBAClB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,MAAM;gBACtB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YACH,MAAM,IAAI,GAAS;gBACjB,MAAM,EAAE,EAAE,EAAE,kDAAkD;gBAC9D,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,YAAY;gBAClB,gEAAgE;gBAChE,wDAAwD;gBACxD,8DAA8D;gBAC9D,0DAA0D;gBAC1D,0BAA0B;gBAC1B,UAAU,EAAE,QAAQ;gBACpB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,CAAC;aACV,CAAC;YACF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,GAAG,CAAC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,GAAwB,EAAE,GAAW;IACnE,MAAM,GAAG,GAAG,0BAA0B,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC"}
@@ -1,3 +1,15 @@
1
- import { VbaExtractorContext, ProcInfo } from './context';
1
+ import { VbaExtractorContext, ProcInfo, VbaClassifier } from './context';
2
+ /**
3
+ * Issue #83: factory for the procedures classifier. Closure state: none
4
+ * beyond `count` (the per-concern accumulators live on `ctx`).
5
+ */
6
+ export declare function createProceduresClassifier(): VbaClassifier;
7
+ /**
8
+ * Backward-compat wrapper: pre-#83 callers (e.g. legacy test fixtures)
9
+ * used `sweepProcedures(ctx, src)` and got back the ProcInfo[].
10
+ * Now it returns `ctx.procedures` (the same flat list the factory
11
+ * appends to). The implementation still calls the classifier once per
12
+ * pre-split line, so the count is identical to the new walker path.
13
+ */
2
14
  export declare function sweepProcedures(ctx: VbaExtractorContext, src: string): ProcInfo[];
3
15
  //# sourceMappingURL=procedures.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1D,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAqMjF"}
1
+ {"version":3,"file":"procedures.d.ts","sourceRoot":"","sources":["../../../src/extraction/vba/procedures.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAmBzE;;;GAGG;AACH,wBAAgB,0BAA0B,IAAI,aAAa,CAqN1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,EAAE,CAOjF"}