@kridaydave/code-mapper 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +1 -0
- package/bin/code-mapper.mjs +86 -0
- package/dist/graph/GraphAnalyzer.js +32 -65
- package/dist/graph/GraphAnalyzer.js.map +1 -1
- package/dist/graph/GraphBuilder.js +18 -45
- package/dist/graph/GraphBuilder.js.map +1 -1
- package/dist/index.js +100 -23
- package/dist/index.js.map +1 -1
- package/dist/mcp/cache.js +8 -17
- package/dist/mcp/cache.js.map +1 -1
- package/dist/mcp/resources.js +5 -1
- package/dist/mcp/resources.js.map +1 -1
- package/dist/mcp/tools.js +190 -35
- package/dist/mcp/tools.js.map +1 -1
- package/dist/parser/ComplexityAnalyzer.js +19 -2
- package/dist/parser/ComplexityAnalyzer.js.map +1 -1
- package/dist/parser/FileAnalyzer.js +8 -30
- package/dist/parser/FileAnalyzer.js.map +1 -1
- package/dist/parser/ProjectParser.js +8 -5
- package/dist/parser/ProjectParser.js.map +1 -1
- package/dist/parser/ProjectParser.test.js +1 -17
- package/dist/parser/ProjectParser.test.js.map +1 -1
- package/dist/tui/index.js +239 -0
- package/dist/tui/index.js.map +1 -0
- package/package.json +82 -35
- package/AGENTS.md +0 -174
- package/docs/PHASE2_PLAN.md +0 -435
- package/fixtures/test-project/calculator.ts +0 -28
- package/fixtures/test-project/index.ts +0 -2
- package/fixtures/test-project/math.ts +0 -11
- package/src/graph/Graph.test.ts +0 -222
- package/src/graph/GraphAnalyzer.ts +0 -502
- package/src/graph/GraphBuilder.ts +0 -258
- package/src/graph/types.ts +0 -42
- package/src/index.ts +0 -38
- package/src/mcp/cache.ts +0 -89
- package/src/mcp/resources.ts +0 -137
- package/src/mcp/tools.test.ts +0 -104
- package/src/mcp/tools.ts +0 -529
- package/src/parser/ComplexityAnalyzer.ts +0 -275
- package/src/parser/FileAnalyzer.ts +0 -215
- package/src/parser/ProjectParser.test.ts +0 -96
- package/src/parser/ProjectParser.ts +0 -172
- package/src/parser/types.ts +0 -77
- package/src/types/graphology-pagerank.d.ts +0 -20
- package/tsconfig.json +0 -17
- package/vitest.config.ts +0 -15
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [1.0.0] - 2026-04-06
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Regex search support** - Optional `useRegex` parameter in `find_function` tool for regex-based searching
|
|
9
|
+
- **Enhanced error handling** - Contextual error messages with error codes (`ERR_DIRECTORY_NOT_FOUND`, `ERR_TOO_MANY_FILES`, `ERR_NOT_A_DIRECTORY`, `ERR_NO_FILES_FOUND`, `ERR_INVALID_REGEX`)
|
|
10
|
+
- **PageRank support** - Installed `graphology-pagerank` dependency
|
|
11
|
+
- **Progress indicators** - Progress callback support in `ProjectParser.parse()`
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
- **Critical: Duplicate Project instances** - Removed duplicate ts-morph Project creation in `analyze_complexity` tool
|
|
15
|
+
- **Critical: Cache inconsistency** - Fixed cache sync between ProjectParser and MCP layer
|
|
16
|
+
- **Critical: Missing metric property** - Added `metric` to ranked output in `rank_impact` tool
|
|
17
|
+
- **Medium: Invalid regex error handling** - Added error code for invalid regex patterns
|
|
18
|
+
- **Medium: Dead code removal** - Removed unused `fileNodeIds` Map in GraphBuilder
|
|
19
|
+
- **Medium: Silent failures** - Added error logging for failed complexity analysis
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
- **AI slop cleanup** - Removed verbose JSDoc, over-engineering, and dead code across all files
|
|
23
|
+
- **Simplified GraphBuilder** - Removed duplicate edge pushing, simplified extension handling
|
|
24
|
+
- **Improved cache.ts** - Fixed dead branch, simplified LRU eviction
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
- **Deprecated PHASE2_PLAN.md** - Moved to `docs/impro/IMPROVEMENTS_PLAN.md`
|
|
28
|
+
|
|
29
|
+
### Infrastructure
|
|
30
|
+
- Added vitest test framework
|
|
31
|
+
- All 45 tests passing
|
package/README.md
CHANGED
|
@@ -19,6 +19,7 @@ An MCP server that uses AST parsing to map TypeScript/JavaScript codebase struct
|
|
|
19
19
|
| `analyze_dependencies` | Returns the full dependency graph or a subgraph for a specific file (JSON or Mermaid) |
|
|
20
20
|
| `rank_impact` | Ranks files by centrality (in-degree, out-degree, betweenness) to identify critical modules |
|
|
21
21
|
| `trace_call_chain` | Traces the call chain / dependency path from one function or file to another |
|
|
22
|
+
| `analyze_complexity` | Analyzes code complexity metrics for each file (cyclomatic, cognitive complexity, nesting depth) |
|
|
22
23
|
|
|
23
24
|
## MCP Resources
|
|
24
25
|
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
|
|
7
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
|
|
9
|
+
const MIN_NODE_VERSION = 18;
|
|
10
|
+
const version = process.versions.node;
|
|
11
|
+
const major = parseInt(version.split(".")[0], 10);
|
|
12
|
+
|
|
13
|
+
const RED = "\x1b[31m";
|
|
14
|
+
const YELLOW = "\x1b[33m";
|
|
15
|
+
|
|
16
|
+
function log(...args) { console.error(...args); }
|
|
17
|
+
|
|
18
|
+
if (major < MIN_NODE_VERSION) {
|
|
19
|
+
log(`${RED}Node ${version} not supported. Need 18+.`);
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const pkgRoot = path.resolve(__dirname, "..");
|
|
24
|
+
const distIndex = path.join(pkgRoot, "dist", "index.js");
|
|
25
|
+
|
|
26
|
+
if (!fs.existsSync(distIndex)) {
|
|
27
|
+
log(`${YELLOW}Building...`);
|
|
28
|
+
const srcIndex = path.join(pkgRoot, "src", "index.ts");
|
|
29
|
+
if (!fs.existsSync(srcIndex)) {
|
|
30
|
+
log(`${RED}Source not found. Reinstall.`);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
if (fs.existsSync(path.join(pkgRoot, "node_modules", "typescript"))) {
|
|
34
|
+
try {
|
|
35
|
+
const { execSync } = await import("child_process");
|
|
36
|
+
execSync("npm run build", { cwd: pkgRoot, stdio: "inherit" });
|
|
37
|
+
} catch {
|
|
38
|
+
log(`${RED}Build failed`);
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
} else {
|
|
42
|
+
log(`${RED}Install incomplete.`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const args = process.argv.slice(2);
|
|
48
|
+
|
|
49
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
50
|
+
log(`
|
|
51
|
+
code-mapper v1.0.1
|
|
52
|
+
|
|
53
|
+
npx code-mapper - start server
|
|
54
|
+
npx code-mapper --setup - setup wizard
|
|
55
|
+
npx code-mapper --version - show version
|
|
56
|
+
`);
|
|
57
|
+
process.exit(0);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
61
|
+
log("1.0.1");
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (args.includes("--setup") || args.includes("-s")) {
|
|
66
|
+
const tuiDist = path.join(pkgRoot, "dist", "tui", "index.js");
|
|
67
|
+
const tuiSrc = path.join(pkgRoot, "src", "tui", "index.ts");
|
|
68
|
+
|
|
69
|
+
if (fs.existsSync(tuiDist)) {
|
|
70
|
+
const { startSetupWizard } = await import("../dist/tui/index.js");
|
|
71
|
+
await startSetupWizard();
|
|
72
|
+
} else if (fs.existsSync(tuiSrc)) {
|
|
73
|
+
const { execSync } = await import("child_process");
|
|
74
|
+
execSync("npm run build", { cwd: pkgRoot, stdio: "inherit" });
|
|
75
|
+
const { startSetupWizard } = await import("../dist/tui/index.js");
|
|
76
|
+
await startSetupWizard();
|
|
77
|
+
} else {
|
|
78
|
+
log(`${YELLOW}Setup not available.`);
|
|
79
|
+
}
|
|
80
|
+
process.exit(0);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
import("../dist/index.js").catch((err) => {
|
|
84
|
+
log(`${RED}Failed: ${err.message}`);
|
|
85
|
+
process.exit(1);
|
|
86
|
+
});
|
|
@@ -2,9 +2,10 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
const require = createRequire(import.meta.url);
|
|
3
3
|
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
4
4
|
const Graph = require("graphology");
|
|
5
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
6
|
+
const pagerank = require("graphology-metrics/centrality/pagerank");
|
|
5
7
|
import * as shortestPath from "graphology-shortest-path";
|
|
6
8
|
import { centrality } from "graphology-metrics";
|
|
7
|
-
import pagerank from "graphology-metrics/centrality/pagerank";
|
|
8
9
|
export class GraphAnalyzer {
|
|
9
10
|
graph;
|
|
10
11
|
parseResult;
|
|
@@ -28,9 +29,6 @@ export class GraphAnalyzer {
|
|
|
28
29
|
getParseResult() {
|
|
29
30
|
return this.parseResult;
|
|
30
31
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Rank files by centrality metric
|
|
33
|
-
*/
|
|
34
32
|
rankImpact(metric = "inDegree") {
|
|
35
33
|
const fileNodes = this.nodes.filter((n) => n.kind === "file");
|
|
36
34
|
const scores = new Map();
|
|
@@ -82,18 +80,23 @@ export class GraphAnalyzer {
|
|
|
82
80
|
.sort((a, b) => b.score - a.score);
|
|
83
81
|
return ranked;
|
|
84
82
|
}
|
|
85
|
-
|
|
86
|
-
* Find functions or classes by name
|
|
87
|
-
*/
|
|
88
|
-
findFunction(name, type = "any") {
|
|
83
|
+
findFunction(name, type = "any", useRegex) {
|
|
89
84
|
const matches = [];
|
|
85
|
+
let regex = null;
|
|
86
|
+
if (useRegex) {
|
|
87
|
+
regex = new RegExp(name, "i");
|
|
88
|
+
}
|
|
90
89
|
const lowerName = name.toLowerCase();
|
|
91
90
|
for (const node of this.nodes) {
|
|
92
91
|
if (type !== "any" && node.kind !== type)
|
|
93
92
|
continue;
|
|
94
93
|
if (node.kind === "file")
|
|
95
94
|
continue;
|
|
96
|
-
|
|
95
|
+
const nodeLabel = node.label;
|
|
96
|
+
const matchesPattern = regex
|
|
97
|
+
? regex.test(nodeLabel)
|
|
98
|
+
: nodeLabel.toLowerCase().includes(lowerName);
|
|
99
|
+
if (!matchesPattern)
|
|
97
100
|
continue;
|
|
98
101
|
const fileInfo = this.parseResult.files.find((f) => f.filePath === node.filePath);
|
|
99
102
|
if (!fileInfo)
|
|
@@ -131,9 +134,6 @@ export class GraphAnalyzer {
|
|
|
131
134
|
}
|
|
132
135
|
return matches;
|
|
133
136
|
}
|
|
134
|
-
/**
|
|
135
|
-
* Get callers (files that import this file)
|
|
136
|
-
*/
|
|
137
137
|
getCallers(nodeId) {
|
|
138
138
|
const callers = [];
|
|
139
139
|
for (const neighbor of this.graph.inNeighbors(nodeId)) {
|
|
@@ -144,9 +144,6 @@ export class GraphAnalyzer {
|
|
|
144
144
|
}
|
|
145
145
|
return callers;
|
|
146
146
|
}
|
|
147
|
-
/**
|
|
148
|
-
* Get callees (files this file imports)
|
|
149
|
-
*/
|
|
150
147
|
getCallees(nodeId) {
|
|
151
148
|
const callees = [];
|
|
152
149
|
for (const neighbor of this.graph.outNeighbors(nodeId)) {
|
|
@@ -157,9 +154,6 @@ export class GraphAnalyzer {
|
|
|
157
154
|
}
|
|
158
155
|
return callees;
|
|
159
156
|
}
|
|
160
|
-
/**
|
|
161
|
-
* Find shortest paths between two nodes
|
|
162
|
-
*/
|
|
163
157
|
traceCallChain(from, to) {
|
|
164
158
|
const fromNodes = this.nodes.filter((n) => n.label.toLowerCase().includes(from.toLowerCase()));
|
|
165
159
|
const toNodes = this.nodes.filter((n) => n.label.toLowerCase().includes(to.toLowerCase()));
|
|
@@ -190,20 +184,9 @@ export class GraphAnalyzer {
|
|
|
190
184
|
paths,
|
|
191
185
|
};
|
|
192
186
|
}
|
|
193
|
-
/**
|
|
194
|
-
* Generate a Mermaid graph diagram string
|
|
195
|
-
*/
|
|
196
187
|
toMermaid(targetFile) {
|
|
197
188
|
const lines = ["graph TD"];
|
|
198
|
-
const nodesToInclude = targetFile
|
|
199
|
-
? this.nodes.filter((n) => {
|
|
200
|
-
const lowerTarget = targetFile.toLowerCase().replace(/\\/g, "/");
|
|
201
|
-
const lowerPath = n.filePath.toLowerCase().replace(/\\/g, "/");
|
|
202
|
-
const basename = lowerPath.split("/").pop() ?? "";
|
|
203
|
-
return basename.includes(lowerTarget) ||
|
|
204
|
-
lowerPath.split("/").some(seg => seg.includes(lowerTarget));
|
|
205
|
-
})
|
|
206
|
-
: this.nodes;
|
|
189
|
+
const nodesToInclude = this.filterNodesForTarget(targetFile);
|
|
207
190
|
const nodeIds = new Set(nodesToInclude.map((n) => n.id));
|
|
208
191
|
// Add nodes
|
|
209
192
|
for (const node of nodesToInclude) {
|
|
@@ -222,9 +205,6 @@ export class GraphAnalyzer {
|
|
|
222
205
|
}
|
|
223
206
|
return lines.join("\n");
|
|
224
207
|
}
|
|
225
|
-
/**
|
|
226
|
-
* Generate a DOT (Graphviz) graph diagram string
|
|
227
|
-
*/
|
|
228
208
|
toDot(targetFile) {
|
|
229
209
|
const lines = [
|
|
230
210
|
"digraph codegraph {",
|
|
@@ -232,19 +212,11 @@ export class GraphAnalyzer {
|
|
|
232
212
|
" node [fontname=\"Helvetica\"];",
|
|
233
213
|
" edge [fontname=\"Helvetica\"];",
|
|
234
214
|
];
|
|
235
|
-
const nodesToInclude = targetFile
|
|
236
|
-
? this.nodes.filter((n) => {
|
|
237
|
-
const lowerTarget = targetFile.toLowerCase().replace(/\\/g, "/");
|
|
238
|
-
const lowerPath = n.filePath.toLowerCase().replace(/\\/g, "/");
|
|
239
|
-
const basename = lowerPath.split("/").pop() ?? "";
|
|
240
|
-
return basename.includes(lowerTarget) ||
|
|
241
|
-
lowerPath.split("/").some(seg => seg.includes(lowerTarget));
|
|
242
|
-
})
|
|
243
|
-
: this.nodes;
|
|
215
|
+
const nodesToInclude = this.filterNodesForTarget(targetFile);
|
|
244
216
|
const nodeIds = new Set(nodesToInclude.map((n) => n.id));
|
|
245
217
|
for (const node of nodesToInclude) {
|
|
246
218
|
const safeId = this.sanitizeId(node.id);
|
|
247
|
-
const safeLabel = this.
|
|
219
|
+
const safeLabel = this.sanitizeLabel(node.label);
|
|
248
220
|
let shape;
|
|
249
221
|
let fillcolor;
|
|
250
222
|
switch (node.kind) {
|
|
@@ -299,27 +271,16 @@ export class GraphAnalyzer {
|
|
|
299
271
|
lines.push("}");
|
|
300
272
|
return lines.join("\n");
|
|
301
273
|
}
|
|
302
|
-
/**
|
|
303
|
-
* Generate a PlantUML graph diagram string
|
|
304
|
-
*/
|
|
305
274
|
toPlantUML(targetFile) {
|
|
306
275
|
const lines = [
|
|
307
276
|
"@startuml",
|
|
308
277
|
"skinparam linetype ortho",
|
|
309
278
|
];
|
|
310
|
-
const nodesToInclude = targetFile
|
|
311
|
-
? this.nodes.filter((n) => {
|
|
312
|
-
const lowerTarget = targetFile.toLowerCase().replace(/\\/g, "/");
|
|
313
|
-
const lowerPath = n.filePath.toLowerCase().replace(/\\/g, "/");
|
|
314
|
-
const basename = lowerPath.split("/").pop() ?? "";
|
|
315
|
-
return basename.includes(lowerTarget) ||
|
|
316
|
-
lowerPath.split("/").some(seg => seg.includes(lowerTarget));
|
|
317
|
-
})
|
|
318
|
-
: this.nodes;
|
|
279
|
+
const nodesToInclude = this.filterNodesForTarget(targetFile);
|
|
319
280
|
const nodeIds = new Set(nodesToInclude.map((n) => n.id));
|
|
320
281
|
for (const node of nodesToInclude) {
|
|
321
282
|
const safeId = this.sanitizeId(node.id);
|
|
322
|
-
const safeLabel = this.
|
|
283
|
+
const safeLabel = this.sanitizeLabel(`${node.kind}: ${node.label}`);
|
|
323
284
|
switch (node.kind) {
|
|
324
285
|
case "file":
|
|
325
286
|
lines.push(`[${safeLabel}] as ${safeId}`);
|
|
@@ -361,15 +322,6 @@ export class GraphAnalyzer {
|
|
|
361
322
|
lines.push("@enduml");
|
|
362
323
|
return lines.join("\n");
|
|
363
324
|
}
|
|
364
|
-
sanitizeDotText(text) {
|
|
365
|
-
return text.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
|
|
366
|
-
}
|
|
367
|
-
sanitizePlantUMLText(text) {
|
|
368
|
-
return text.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
|
|
369
|
-
}
|
|
370
|
-
/**
|
|
371
|
-
* Detect cycles in the graph
|
|
372
|
-
*/
|
|
373
325
|
detectCycles(maxDepth = 10000) {
|
|
374
326
|
const cycles = [];
|
|
375
327
|
const visited = new Set();
|
|
@@ -425,11 +377,26 @@ export class GraphAnalyzer {
|
|
|
425
377
|
}
|
|
426
378
|
return cycles;
|
|
427
379
|
}
|
|
380
|
+
sanitizeLabel(text) {
|
|
381
|
+
return text.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n");
|
|
382
|
+
}
|
|
428
383
|
sanitizeId(id) {
|
|
429
384
|
return id.replace(/[^a-zA-Z0-9_]/g, "_");
|
|
430
385
|
}
|
|
431
386
|
sanitizeMermaidText(text) {
|
|
432
387
|
return text.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/%%/g, "\\%%");
|
|
433
388
|
}
|
|
389
|
+
filterNodesForTarget(targetFile) {
|
|
390
|
+
if (!targetFile) {
|
|
391
|
+
return this.nodes;
|
|
392
|
+
}
|
|
393
|
+
const lowerTarget = targetFile.toLowerCase().replace(/\\/g, "/");
|
|
394
|
+
return this.nodes.filter((n) => {
|
|
395
|
+
const lowerPath = n.filePath.toLowerCase().replace(/\\/g, "/");
|
|
396
|
+
const basename = lowerPath.split("/").pop() ?? "";
|
|
397
|
+
return basename.includes(lowerTarget) ||
|
|
398
|
+
lowerPath.split("/").some(seg => seg.includes(lowerTarget));
|
|
399
|
+
});
|
|
400
|
+
}
|
|
434
401
|
}
|
|
435
402
|
//# sourceMappingURL=GraphAnalyzer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphAnalyzer.js","sourceRoot":"","sources":["../../src/graph/GraphAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GraphAnalyzer.js","sourceRoot":"","sources":["../../src/graph/GraphAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,12 +13,8 @@ export class GraphBuilder {
|
|
|
13
13
|
classLookup.set(fileInfo.filePath + "::" + cls.name, { filePath: fileInfo.filePath, name: cls.name, lineNumber: cls.lineNumber });
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
const fileNodeIds = new Map();
|
|
17
|
-
// Phase 1: Create file nodes
|
|
18
16
|
for (const fileInfo of parseResult.files) {
|
|
19
17
|
const fileId = `file:${fileInfo.filePath}`;
|
|
20
|
-
fileNodeIds.set(fileInfo.relativePath, fileId);
|
|
21
|
-
fileNodeIds.set(fileInfo.filePath, fileId);
|
|
22
18
|
graph.addNode(fileId, {
|
|
23
19
|
kind: "file",
|
|
24
20
|
label: fileInfo.relativePath,
|
|
@@ -31,7 +27,6 @@ export class GraphBuilder {
|
|
|
31
27
|
filePath: fileInfo.filePath,
|
|
32
28
|
});
|
|
33
29
|
}
|
|
34
|
-
// Phase 2: Create function and class nodes, add containment edges
|
|
35
30
|
for (const fileInfo of parseResult.files) {
|
|
36
31
|
const fileId = `file:${fileInfo.filePath}`;
|
|
37
32
|
for (const fn of fileInfo.functions) {
|
|
@@ -46,12 +41,6 @@ export class GraphBuilder {
|
|
|
46
41
|
kind: "contains",
|
|
47
42
|
label: `contains ${fn.name}`,
|
|
48
43
|
});
|
|
49
|
-
edges.push({
|
|
50
|
-
source: fileId,
|
|
51
|
-
target: fnId,
|
|
52
|
-
kind: "contains",
|
|
53
|
-
label: `contains ${fn.name}`,
|
|
54
|
-
});
|
|
55
44
|
nodes.push({
|
|
56
45
|
id: fnId,
|
|
57
46
|
kind: "function",
|
|
@@ -59,6 +48,12 @@ export class GraphBuilder {
|
|
|
59
48
|
filePath: fileInfo.filePath,
|
|
60
49
|
lineNumber: fn.lineNumber,
|
|
61
50
|
});
|
|
51
|
+
edges.push({
|
|
52
|
+
source: fileId,
|
|
53
|
+
target: fnId,
|
|
54
|
+
kind: "contains",
|
|
55
|
+
label: `contains ${fn.name}`,
|
|
56
|
+
});
|
|
62
57
|
}
|
|
63
58
|
for (const cls of fileInfo.classes) {
|
|
64
59
|
const clsId = `class:${fileInfo.filePath}:${cls.name}:${cls.lineNumber}`;
|
|
@@ -72,12 +67,6 @@ export class GraphBuilder {
|
|
|
72
67
|
kind: "contains",
|
|
73
68
|
label: `contains ${cls.name}`,
|
|
74
69
|
});
|
|
75
|
-
edges.push({
|
|
76
|
-
source: fileId,
|
|
77
|
-
target: clsId,
|
|
78
|
-
kind: "contains",
|
|
79
|
-
label: `contains ${cls.name}`,
|
|
80
|
-
});
|
|
81
70
|
nodes.push({
|
|
82
71
|
id: clsId,
|
|
83
72
|
kind: "class",
|
|
@@ -85,9 +74,14 @@ export class GraphBuilder {
|
|
|
85
74
|
filePath: fileInfo.filePath,
|
|
86
75
|
lineNumber: cls.lineNumber,
|
|
87
76
|
});
|
|
77
|
+
edges.push({
|
|
78
|
+
source: fileId,
|
|
79
|
+
target: clsId,
|
|
80
|
+
kind: "contains",
|
|
81
|
+
label: `contains ${cls.name}`,
|
|
82
|
+
});
|
|
88
83
|
}
|
|
89
84
|
}
|
|
90
|
-
// Phase 3: Build import edges between files
|
|
91
85
|
for (const fileInfo of parseResult.files) {
|
|
92
86
|
const sourceFileId = `file:${fileInfo.filePath}`;
|
|
93
87
|
for (const imp of fileInfo.imports) {
|
|
@@ -116,21 +110,15 @@ export class GraphBuilder {
|
|
|
116
110
|
}
|
|
117
111
|
}
|
|
118
112
|
}
|
|
119
|
-
// Phase 4: Build extends/implements edges for classes
|
|
120
113
|
for (const fileInfo of parseResult.files) {
|
|
121
114
|
for (const cls of fileInfo.classes) {
|
|
122
115
|
const clsId = `class:${fileInfo.filePath}:${cls.name}:${cls.lineNumber}`;
|
|
123
116
|
if (cls.extends) {
|
|
124
|
-
|
|
125
|
-
const parentName = cls.extends.split("<")[0].trim(); // Handle generics
|
|
117
|
+
const parentName = cls.extends.split("<")[0].trim();
|
|
126
118
|
const parentClass = this.findClassByName(parentName, parseResult, classLookup);
|
|
127
119
|
if (parentClass) {
|
|
128
120
|
const parentId = `class:${parentClass.filePath}:${parentClass.name}:${parentClass.lineNumber}`;
|
|
129
121
|
if (graph.hasNode(parentId)) {
|
|
130
|
-
graph.addEdge(clsId, parentId, {
|
|
131
|
-
kind: "extends",
|
|
132
|
-
label: `extends ${parentClass.name}`,
|
|
133
|
-
});
|
|
134
122
|
edges.push({
|
|
135
123
|
source: clsId,
|
|
136
124
|
target: parentId,
|
|
@@ -146,10 +134,6 @@ export class GraphBuilder {
|
|
|
146
134
|
if (implClass) {
|
|
147
135
|
const implId = `class:${implClass.filePath}:${implClass.name}:${implClass.lineNumber}`;
|
|
148
136
|
if (graph.hasNode(implId)) {
|
|
149
|
-
graph.addEdge(clsId, implId, {
|
|
150
|
-
kind: "implements",
|
|
151
|
-
label: `implements ${implClass.name}`,
|
|
152
|
-
});
|
|
153
137
|
edges.push({
|
|
154
138
|
source: clsId,
|
|
155
139
|
target: implId,
|
|
@@ -164,19 +148,10 @@ export class GraphBuilder {
|
|
|
164
148
|
return { graph, nodes, edges };
|
|
165
149
|
}
|
|
166
150
|
resolveImportPath(fromFile, moduleSpecifier, parseResult) {
|
|
167
|
-
// Skip external packages (no leading . or /)
|
|
168
151
|
if (!moduleSpecifier.startsWith(".") && !moduleSpecifier.startsWith("/")) {
|
|
169
152
|
return null;
|
|
170
153
|
}
|
|
171
|
-
|
|
172
|
-
let specifier = moduleSpecifier;
|
|
173
|
-
for (const ext of [".js", ".jsx", ".ts", ".tsx"]) {
|
|
174
|
-
if (specifier.endsWith(ext)) {
|
|
175
|
-
specifier = specifier.slice(0, -ext.length);
|
|
176
|
-
break;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
// Resolve relative path using forward-slash logic (ts-morph always uses /)
|
|
154
|
+
let specifier = moduleSpecifier.replace(/\.(ts|tsx|js|jsx|mts|cts|mjs|cjs)$/, "");
|
|
180
155
|
const fromDir = fromFile.replace(/\\/g, "/").replace(/\/[^/]+$/, "");
|
|
181
156
|
const parts = [...(fromDir === "" ? [] : fromDir.split("/")), ...specifier.split("/")];
|
|
182
157
|
const resolved = [];
|
|
@@ -185,26 +160,24 @@ export class GraphBuilder {
|
|
|
185
160
|
if (resolved.length > 0) {
|
|
186
161
|
resolved.pop();
|
|
187
162
|
}
|
|
188
|
-
// else: excessive ".." — ignore, prevents escaping root
|
|
189
163
|
}
|
|
190
164
|
else if (part !== "." && part !== "") {
|
|
191
165
|
resolved.push(part);
|
|
192
166
|
}
|
|
193
167
|
}
|
|
194
|
-
// Reconstruct with the drive prefix if present
|
|
195
168
|
let resolvedPath = resolved.join("/");
|
|
196
|
-
// If original fromFile had a Windows drive letter, preserve it
|
|
197
169
|
const fromFileNormalized = fromFile.replace(/\\/g, "/");
|
|
198
170
|
const driveMatch = fromFileNormalized.match(/^([A-Za-z]:\/)/);
|
|
199
171
|
if (driveMatch && !resolvedPath.startsWith(driveMatch[1])) {
|
|
200
172
|
resolvedPath = driveMatch[1] + resolvedPath;
|
|
201
173
|
}
|
|
202
|
-
// Try exact match first
|
|
203
174
|
if (parseResult.files.some(f => f.filePath === resolvedPath)) {
|
|
204
175
|
return resolvedPath;
|
|
205
176
|
}
|
|
206
|
-
|
|
207
|
-
|
|
177
|
+
const extensions = [
|
|
178
|
+
".ts", ".tsx", ".js", ".jsx", ".mts", ".cts", ".mjs", ".cjs",
|
|
179
|
+
"/index.ts", "/index.tsx", "/index.js", "/index.jsx", "/index.mts", "/index.cts", "/index.mjs", "/index.cjs"
|
|
180
|
+
];
|
|
208
181
|
for (const ext of extensions) {
|
|
209
182
|
const candidate = resolvedPath + ext;
|
|
210
183
|
if (parseResult.files.some(f => f.filePath === candidate)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../src/graph/GraphBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,iEAAiE;AACjE,MAAM,KAAK,GAAwC,OAAO,CAAC,YAAY,CAAC,CAAC;AAOzE,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,WAAwB;QAC5B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAgB,EAAE,CAAC;QAE9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkE,CAAC;QAC9F,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACpI,CAAC;QACH,CAAC;QAED,
|
|
1
|
+
{"version":3,"file":"GraphBuilder.js","sourceRoot":"","sources":["../../src/graph/GraphBuilder.ts"],"names":[],"mappings":"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"}
|