@bugsbunnycodes1998/cartographer-core 0.1.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/dist/__tests__/pipeline.test.d.ts +2 -0
- package/dist/__tests__/pipeline.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline.test.js +58 -0
- package/dist/__tests__/pipeline.test.js.map +1 -0
- package/dist/analysis/call-graph.d.ts +13 -0
- package/dist/analysis/call-graph.d.ts.map +1 -0
- package/dist/analysis/call-graph.js +133 -0
- package/dist/analysis/call-graph.js.map +1 -0
- package/dist/analysis/dependency-graph.d.ts +8 -0
- package/dist/analysis/dependency-graph.d.ts.map +1 -0
- package/dist/analysis/dependency-graph.js +101 -0
- package/dist/analysis/dependency-graph.js.map +1 -0
- package/dist/analysis/git/archaeology.d.ts +20 -0
- package/dist/analysis/git/archaeology.d.ts.map +1 -0
- package/dist/analysis/git/archaeology.js +61 -0
- package/dist/analysis/git/archaeology.js.map +1 -0
- package/dist/analysis/git/bus-factor.d.ts +17 -0
- package/dist/analysis/git/bus-factor.d.ts.map +1 -0
- package/dist/analysis/git/bus-factor.js +90 -0
- package/dist/analysis/git/bus-factor.js.map +1 -0
- package/dist/analysis/git/churn.d.ts +26 -0
- package/dist/analysis/git/churn.d.ts.map +1 -0
- package/dist/analysis/git/churn.js +127 -0
- package/dist/analysis/git/churn.js.map +1 -0
- package/dist/analysis/git/contributors.d.ts +14 -0
- package/dist/analysis/git/contributors.d.ts.map +1 -0
- package/dist/analysis/git/contributors.js +60 -0
- package/dist/analysis/git/contributors.js.map +1 -0
- package/dist/analysis/git/evolution.d.ts +10 -0
- package/dist/analysis/git/evolution.d.ts.map +1 -0
- package/dist/analysis/git/evolution.js +127 -0
- package/dist/analysis/git/evolution.js.map +1 -0
- package/dist/analysis/git/index.d.ts +6 -0
- package/dist/analysis/git/index.d.ts.map +1 -0
- package/dist/analysis/git/index.js +6 -0
- package/dist/analysis/git/index.js.map +1 -0
- package/dist/analysis/go-visitor.d.ts +4 -0
- package/dist/analysis/go-visitor.d.ts.map +1 -0
- package/dist/analysis/go-visitor.js +295 -0
- package/dist/analysis/go-visitor.js.map +1 -0
- package/dist/analysis/health/indicators.d.ts +25 -0
- package/dist/analysis/health/indicators.d.ts.map +1 -0
- package/dist/analysis/health/indicators.js +53 -0
- package/dist/analysis/health/indicators.js.map +1 -0
- package/dist/analysis/health/scorer.d.ts +26 -0
- package/dist/analysis/health/scorer.d.ts.map +1 -0
- package/dist/analysis/health/scorer.js +97 -0
- package/dist/analysis/health/scorer.js.map +1 -0
- package/dist/analysis/health/test-coverage.d.ts +19 -0
- package/dist/analysis/health/test-coverage.d.ts.map +1 -0
- package/dist/analysis/health/test-coverage.js +67 -0
- package/dist/analysis/health/test-coverage.js.map +1 -0
- package/dist/analysis/import-resolver.d.ts +10 -0
- package/dist/analysis/import-resolver.d.ts.map +1 -0
- package/dist/analysis/import-resolver.js +353 -0
- package/dist/analysis/import-resolver.js.map +1 -0
- package/dist/analysis/index.d.ts +22 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +24 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/analysis/java-visitor.d.ts +4 -0
- package/dist/analysis/java-visitor.d.ts.map +1 -0
- package/dist/analysis/java-visitor.js +257 -0
- package/dist/analysis/java-visitor.js.map +1 -0
- package/dist/analysis/metrics.d.ts +19 -0
- package/dist/analysis/metrics.d.ts.map +1 -0
- package/dist/analysis/metrics.js +70 -0
- package/dist/analysis/metrics.js.map +1 -0
- package/dist/analysis/module-detector.d.ts +3 -0
- package/dist/analysis/module-detector.d.ts.map +1 -0
- package/dist/analysis/module-detector.js +257 -0
- package/dist/analysis/module-detector.js.map +1 -0
- package/dist/analysis/parser.d.ts +13 -0
- package/dist/analysis/parser.d.ts.map +1 -0
- package/dist/analysis/parser.js +92 -0
- package/dist/analysis/parser.js.map +1 -0
- package/dist/analysis/python-visitor.d.ts +4 -0
- package/dist/analysis/python-visitor.d.ts.map +1 -0
- package/dist/analysis/python-visitor.js +306 -0
- package/dist/analysis/python-visitor.js.map +1 -0
- package/dist/analysis/rust-visitor.d.ts +4 -0
- package/dist/analysis/rust-visitor.d.ts.map +1 -0
- package/dist/analysis/rust-visitor.js +318 -0
- package/dist/analysis/rust-visitor.js.map +1 -0
- package/dist/analysis/semantic/cache.d.ts +16 -0
- package/dist/analysis/semantic/cache.d.ts.map +1 -0
- package/dist/analysis/semantic/cache.js +26 -0
- package/dist/analysis/semantic/cache.js.map +1 -0
- package/dist/analysis/semantic/openai-client.d.ts +21 -0
- package/dist/analysis/semantic/openai-client.d.ts.map +1 -0
- package/dist/analysis/semantic/openai-client.js +73 -0
- package/dist/analysis/semantic/openai-client.js.map +1 -0
- package/dist/analysis/semantic/prompts.d.ts +32 -0
- package/dist/analysis/semantic/prompts.d.ts.map +1 -0
- package/dist/analysis/semantic/prompts.js +134 -0
- package/dist/analysis/semantic/prompts.js.map +1 -0
- package/dist/analysis/semantic/summarizer.d.ts +36 -0
- package/dist/analysis/semantic/summarizer.d.ts.map +1 -0
- package/dist/analysis/semantic/summarizer.js +229 -0
- package/dist/analysis/semantic/summarizer.js.map +1 -0
- package/dist/analysis/ts-js-visitor.d.ts +4 -0
- package/dist/analysis/ts-js-visitor.d.ts.map +1 -0
- package/dist/analysis/ts-js-visitor.js +390 -0
- package/dist/analysis/ts-js-visitor.js.map +1 -0
- package/dist/analysis/visitor-registry.d.ts +5 -0
- package/dist/analysis/visitor-registry.d.ts.map +1 -0
- package/dist/analysis/visitor-registry.js +17 -0
- package/dist/analysis/visitor-registry.js.map +1 -0
- package/dist/analysis/visitor-utils.d.ts +38 -0
- package/dist/analysis/visitor-utils.d.ts.map +1 -0
- package/dist/analysis/visitor-utils.js +110 -0
- package/dist/analysis/visitor-utils.js.map +1 -0
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/expeditions/custom.d.ts +11 -0
- package/dist/expeditions/custom.d.ts.map +1 -0
- package/dist/expeditions/custom.js +61 -0
- package/dist/expeditions/custom.js.map +1 -0
- package/dist/expeditions/danger-zones.d.ts +9 -0
- package/dist/expeditions/danger-zones.d.ts.map +1 -0
- package/dist/expeditions/danger-zones.js +42 -0
- package/dist/expeditions/danger-zones.js.map +1 -0
- package/dist/expeditions/generator.d.ts +21 -0
- package/dist/expeditions/generator.d.ts.map +1 -0
- package/dist/expeditions/generator.js +78 -0
- package/dist/expeditions/generator.js.map +1 -0
- package/dist/expeditions/grand-tour.d.ts +10 -0
- package/dist/expeditions/grand-tour.d.ts.map +1 -0
- package/dist/expeditions/grand-tour.js +96 -0
- package/dist/expeditions/grand-tour.js.map +1 -0
- package/dist/expeditions/request-flow.d.ts +11 -0
- package/dist/expeditions/request-flow.d.ts.map +1 -0
- package/dist/expeditions/request-flow.js +138 -0
- package/dist/expeditions/request-flow.js.map +1 -0
- package/dist/grammars/tree-sitter-go.wasm +0 -0
- package/dist/grammars/tree-sitter-java.wasm +0 -0
- package/dist/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/grammars/tree-sitter-python.wasm +0 -0
- package/dist/grammars/tree-sitter-rust.wasm +0 -0
- package/dist/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/graph/builder.d.ts +23 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +131 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/exporter.d.ts +5 -0
- package/dist/graph/exporter.d.ts.map +1 -0
- package/dist/graph/exporter.js +20 -0
- package/dist/graph/exporter.js.map +1 -0
- package/dist/graph/layout.d.ts +3 -0
- package/dist/graph/layout.d.ts.map +1 -0
- package/dist/graph/layout.js +257 -0
- package/dist/graph/layout.js.map +1 -0
- package/dist/graph/store.d.ts +13 -0
- package/dist/graph/store.d.ts.map +1 -0
- package/dist/graph/store.js +145 -0
- package/dist/graph/store.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/ingestion/cloner.d.ts +18 -0
- package/dist/ingestion/cloner.d.ts.map +1 -0
- package/dist/ingestion/cloner.js +62 -0
- package/dist/ingestion/cloner.js.map +1 -0
- package/dist/ingestion/file-tree.d.ts +3 -0
- package/dist/ingestion/file-tree.d.ts.map +1 -0
- package/dist/ingestion/file-tree.js +85 -0
- package/dist/ingestion/file-tree.js.map +1 -0
- package/dist/ingestion/index.d.ts +5 -0
- package/dist/ingestion/index.d.ts.map +1 -0
- package/dist/ingestion/index.js +5 -0
- package/dist/ingestion/index.js.map +1 -0
- package/dist/ingestion/language-detector.d.ts +8 -0
- package/dist/ingestion/language-detector.d.ts.map +1 -0
- package/dist/ingestion/language-detector.js +37 -0
- package/dist/ingestion/language-detector.js.map +1 -0
- package/dist/ingestion/path-resolver.d.ts +7 -0
- package/dist/ingestion/path-resolver.d.ts.map +1 -0
- package/dist/ingestion/path-resolver.js +30 -0
- package/dist/ingestion/path-resolver.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +11 -0
- package/dist/logger.js.map +1 -0
- package/dist/pipeline.d.ts +3 -0
- package/dist/pipeline.d.ts.map +1 -0
- package/dist/pipeline.js +223 -0
- package/dist/pipeline.js.map +1 -0
- package/dist/types/analysis.d.ts +51 -0
- package/dist/types/analysis.d.ts.map +1 -0
- package/dist/types/analysis.js +2 -0
- package/dist/types/analysis.js.map +1 -0
- package/dist/types/config.d.ts +19 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/edges.d.ts +8 -0
- package/dist/types/edges.d.ts.map +1 -0
- package/dist/types/edges.js +2 -0
- package/dist/types/edges.js.map +1 -0
- package/dist/types/expeditions.d.ts +19 -0
- package/dist/types/expeditions.d.ts.map +1 -0
- package/dist/types/expeditions.js +2 -0
- package/dist/types/expeditions.js.map +1 -0
- package/dist/types/graph.d.ts +29 -0
- package/dist/types/graph.d.ts.map +1 -0
- package/dist/types/graph.js +2 -0
- package/dist/types/graph.js.map +1 -0
- package/dist/types/index.d.ts +7 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/nodes.d.ts +35 -0
- package/dist/types/nodes.d.ts.map +1 -0
- package/dist/types/nodes.js +2 -0
- package/dist/types/nodes.js.map +1 -0
- package/package.json +36 -0
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { logger } from "../logger.js";
|
|
4
|
+
function normalizePath(p) {
|
|
5
|
+
return p.replace(/\\/g, "/");
|
|
6
|
+
}
|
|
7
|
+
export function loadTsConfigPaths(rootDir) {
|
|
8
|
+
const tsconfigPath = join(rootDir, "tsconfig.json");
|
|
9
|
+
if (!existsSync(tsconfigPath))
|
|
10
|
+
return null;
|
|
11
|
+
try {
|
|
12
|
+
const raw = readFileSync(tsconfigPath, "utf-8");
|
|
13
|
+
// Strip comments for JSONC support
|
|
14
|
+
const stripped = raw.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
15
|
+
const config = JSON.parse(stripped);
|
|
16
|
+
const baseUrl = config.compilerOptions?.baseUrl ?? ".";
|
|
17
|
+
const paths = config.compilerOptions?.paths ?? {};
|
|
18
|
+
return {
|
|
19
|
+
baseUrl: normalizePath(resolve(rootDir, baseUrl)),
|
|
20
|
+
paths,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
catch (err) {
|
|
24
|
+
logger.debug(`Failed to parse tsconfig.json: ${err}`);
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const TS_EXTENSIONS = [".ts", ".tsx", ".js", ".jsx", ".mjs"];
|
|
29
|
+
// Extensions that TypeScript uses in imports but map to .ts files on disk
|
|
30
|
+
const JS_TO_TS_MAP = {
|
|
31
|
+
".js": [".ts", ".tsx", ".js"],
|
|
32
|
+
".jsx": [".tsx", ".jsx"],
|
|
33
|
+
".mjs": [".mts", ".mjs"],
|
|
34
|
+
};
|
|
35
|
+
function tryResolve(basePath) {
|
|
36
|
+
// Exact match
|
|
37
|
+
if (existsSync(basePath) && !isDirectory(basePath)) {
|
|
38
|
+
return normalizePath(basePath);
|
|
39
|
+
}
|
|
40
|
+
// Handle TypeScript ESM convention: import "./foo.js" -> resolves to foo.ts
|
|
41
|
+
const ext = basePath.slice(basePath.lastIndexOf("."));
|
|
42
|
+
const replacements = JS_TO_TS_MAP[ext];
|
|
43
|
+
if (replacements) {
|
|
44
|
+
const withoutExt = basePath.slice(0, basePath.lastIndexOf("."));
|
|
45
|
+
for (const replacement of replacements) {
|
|
46
|
+
const candidate = withoutExt + replacement;
|
|
47
|
+
if (existsSync(candidate) && !isDirectory(candidate)) {
|
|
48
|
+
return normalizePath(candidate);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Try appending extensions (for extensionless imports)
|
|
53
|
+
for (const tryExt of TS_EXTENSIONS) {
|
|
54
|
+
const withExt = basePath + tryExt;
|
|
55
|
+
if (existsSync(withExt)) {
|
|
56
|
+
return normalizePath(withExt);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Try index file in directory
|
|
60
|
+
if (isDirectory(basePath)) {
|
|
61
|
+
for (const tryExt of TS_EXTENSIONS) {
|
|
62
|
+
const indexPath = join(basePath, "index" + tryExt);
|
|
63
|
+
if (existsSync(indexPath)) {
|
|
64
|
+
return normalizePath(indexPath);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
function isDirectory(p) {
|
|
71
|
+
try {
|
|
72
|
+
return statSync(p).isDirectory();
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
export function resolveImport(source, importingFile, rootDir, tsConfig, language) {
|
|
79
|
+
// Dispatch to language-specific resolver
|
|
80
|
+
if (language === "python") {
|
|
81
|
+
return resolvePythonImport(source, importingFile, rootDir);
|
|
82
|
+
}
|
|
83
|
+
if (language === "go") {
|
|
84
|
+
return resolveGoImport(source, rootDir);
|
|
85
|
+
}
|
|
86
|
+
if (language === "rust") {
|
|
87
|
+
return resolveRustImport(source, importingFile, rootDir);
|
|
88
|
+
}
|
|
89
|
+
if (language === "java") {
|
|
90
|
+
return resolveJavaImport(source, rootDir);
|
|
91
|
+
}
|
|
92
|
+
// Default: TypeScript/JavaScript resolution
|
|
93
|
+
// Relative import
|
|
94
|
+
if (source.startsWith(".")) {
|
|
95
|
+
const importDir = dirname(importingFile);
|
|
96
|
+
const candidate = resolve(importDir, source);
|
|
97
|
+
const resolved = tryResolve(candidate);
|
|
98
|
+
if (resolved) {
|
|
99
|
+
return normalizePath(resolved);
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// tsconfig path aliases
|
|
104
|
+
if (tsConfig) {
|
|
105
|
+
for (const [pattern, mappings] of Object.entries(tsConfig.paths)) {
|
|
106
|
+
// Handle patterns like "@/*" -> ["src/*"]
|
|
107
|
+
if (pattern.endsWith("/*")) {
|
|
108
|
+
const prefix = pattern.slice(0, -2);
|
|
109
|
+
if (source.startsWith(prefix + "/")) {
|
|
110
|
+
const rest = source.slice(prefix.length + 1);
|
|
111
|
+
for (const mapping of mappings) {
|
|
112
|
+
const mappedBase = mapping.endsWith("/*") ? mapping.slice(0, -2) : mapping;
|
|
113
|
+
const candidate = resolve(tsConfig.baseUrl, mappedBase, rest);
|
|
114
|
+
const resolved = tryResolve(candidate);
|
|
115
|
+
if (resolved)
|
|
116
|
+
return normalizePath(resolved);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Exact match: "foo" -> ["src/foo.ts"]
|
|
121
|
+
else if (source === pattern) {
|
|
122
|
+
for (const mapping of mappings) {
|
|
123
|
+
const candidate = resolve(tsConfig.baseUrl, mapping);
|
|
124
|
+
const resolved = tryResolve(candidate);
|
|
125
|
+
if (resolved)
|
|
126
|
+
return normalizePath(resolved);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// External package — not resolved
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
// --- Python import resolution ---
|
|
135
|
+
function resolvePythonImport(source, importingFile, rootDir) {
|
|
136
|
+
// Relative import: starts with dots
|
|
137
|
+
if (source.startsWith(".")) {
|
|
138
|
+
let dotCount = 0;
|
|
139
|
+
for (const ch of source) {
|
|
140
|
+
if (ch === ".")
|
|
141
|
+
dotCount++;
|
|
142
|
+
else
|
|
143
|
+
break;
|
|
144
|
+
}
|
|
145
|
+
const modulePart = source.slice(dotCount);
|
|
146
|
+
// Go up `dotCount - 1` directories from the importing file's directory
|
|
147
|
+
let baseDir = dirname(importingFile);
|
|
148
|
+
for (let i = 1; i < dotCount; i++) {
|
|
149
|
+
baseDir = dirname(baseDir);
|
|
150
|
+
}
|
|
151
|
+
if (modulePart) {
|
|
152
|
+
// from .foo import bar -> look for foo.py or foo/__init__.py relative to baseDir
|
|
153
|
+
const parts = modulePart.split(".");
|
|
154
|
+
const candidate = resolve(baseDir, ...parts);
|
|
155
|
+
return tryResolvePython(candidate);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// from . import bar -> look for __init__.py in baseDir
|
|
159
|
+
const initPath = join(baseDir, "__init__.py");
|
|
160
|
+
if (existsSync(initPath))
|
|
161
|
+
return normalizePath(initPath);
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// Absolute import: from mypackage.foo import bar
|
|
166
|
+
const parts = source.split(".");
|
|
167
|
+
const candidate = resolve(rootDir, ...parts);
|
|
168
|
+
return tryResolvePython(candidate);
|
|
169
|
+
}
|
|
170
|
+
function tryResolvePython(basePath) {
|
|
171
|
+
// Try as a .py file
|
|
172
|
+
const pyFile = basePath + ".py";
|
|
173
|
+
if (existsSync(pyFile) && !isDirectory(pyFile)) {
|
|
174
|
+
return normalizePath(pyFile);
|
|
175
|
+
}
|
|
176
|
+
// Try as a package directory with __init__.py
|
|
177
|
+
if (isDirectory(basePath)) {
|
|
178
|
+
const initPath = join(basePath, "__init__.py");
|
|
179
|
+
if (existsSync(initPath)) {
|
|
180
|
+
return normalizePath(initPath);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Try exact path (already has extension)
|
|
184
|
+
if (existsSync(basePath) && !isDirectory(basePath)) {
|
|
185
|
+
return normalizePath(basePath);
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
// --- Go import resolution ---
|
|
190
|
+
function resolveGoImport(source, rootDir) {
|
|
191
|
+
// Go imports are full paths like "mymodule/pkg/foo"
|
|
192
|
+
// We try to match the path suffix against directories under rootDir
|
|
193
|
+
// Standard library and external imports won't resolve
|
|
194
|
+
const parts = source.split("/");
|
|
195
|
+
// Try progressively shorter suffixes
|
|
196
|
+
for (let i = 0; i < parts.length; i++) {
|
|
197
|
+
const suffix = parts.slice(i).join("/");
|
|
198
|
+
const candidate = resolve(rootDir, suffix);
|
|
199
|
+
if (isDirectory(candidate)) {
|
|
200
|
+
// Go packages are directories; look for any .go file in the directory
|
|
201
|
+
// Return the directory path (normalized) as the "resolved path"
|
|
202
|
+
try {
|
|
203
|
+
const entries = readdirSync(candidate);
|
|
204
|
+
const hasGoFile = entries.some((e) => e.endsWith(".go"));
|
|
205
|
+
if (hasGoFile) {
|
|
206
|
+
return normalizePath(candidate);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
// ignore
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return null;
|
|
215
|
+
}
|
|
216
|
+
// --- Rust import resolution ---
|
|
217
|
+
function resolveRustImport(source, importingFile, rootDir) {
|
|
218
|
+
// Rust use paths: crate::foo::bar, super::baz, self::qux
|
|
219
|
+
const parts = source.split("::");
|
|
220
|
+
if (parts[0] === "crate") {
|
|
221
|
+
// Resolve from the crate src/ root
|
|
222
|
+
const srcDir = findRustSrcRoot(rootDir);
|
|
223
|
+
const pathParts = parts.slice(1);
|
|
224
|
+
return resolveRustPath(srcDir, pathParts);
|
|
225
|
+
}
|
|
226
|
+
if (parts[0] === "super") {
|
|
227
|
+
// Go up one directory from the importing file
|
|
228
|
+
let baseDir = dirname(importingFile);
|
|
229
|
+
// If the file is mod.rs, we're already "in" the directory — go up once more to get "super"
|
|
230
|
+
const fileName = importingFile.split("/").pop() ?? "";
|
|
231
|
+
if (fileName === "mod.rs") {
|
|
232
|
+
baseDir = dirname(baseDir);
|
|
233
|
+
}
|
|
234
|
+
baseDir = dirname(baseDir);
|
|
235
|
+
const pathParts = parts.slice(1);
|
|
236
|
+
return resolveRustPath(baseDir, pathParts);
|
|
237
|
+
}
|
|
238
|
+
if (parts[0] === "self") {
|
|
239
|
+
// Current module directory
|
|
240
|
+
let baseDir = dirname(importingFile);
|
|
241
|
+
const fileName = importingFile.split("/").pop() ?? "";
|
|
242
|
+
// If the file is mod.rs, self refers to the same directory
|
|
243
|
+
if (fileName !== "mod.rs" && fileName !== "lib.rs" && fileName !== "main.rs") {
|
|
244
|
+
// For a regular file foo.rs, self refers to foo/ subdirectory if it exists
|
|
245
|
+
// but more commonly just the current directory
|
|
246
|
+
}
|
|
247
|
+
const pathParts = parts.slice(1);
|
|
248
|
+
return resolveRustPath(baseDir, pathParts);
|
|
249
|
+
}
|
|
250
|
+
// External crate — not resolved
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
253
|
+
function findRustSrcRoot(rootDir) {
|
|
254
|
+
const srcDir = join(rootDir, "src");
|
|
255
|
+
if (isDirectory(srcDir))
|
|
256
|
+
return srcDir;
|
|
257
|
+
return rootDir;
|
|
258
|
+
}
|
|
259
|
+
function resolveRustPath(baseDir, parts) {
|
|
260
|
+
if (parts.length === 0)
|
|
261
|
+
return null;
|
|
262
|
+
// Build the path from parts, the last part could be a file or module
|
|
263
|
+
const dirPath = resolve(baseDir, ...parts);
|
|
264
|
+
// Try as a directory with mod.rs
|
|
265
|
+
if (isDirectory(dirPath)) {
|
|
266
|
+
const modRs = join(dirPath, "mod.rs");
|
|
267
|
+
if (existsSync(modRs))
|
|
268
|
+
return normalizePath(modRs);
|
|
269
|
+
}
|
|
270
|
+
// Try as a .rs file (replacing last segment)
|
|
271
|
+
const parentParts = parts.slice(0, -1);
|
|
272
|
+
const lastName = parts[parts.length - 1];
|
|
273
|
+
const parentDir = parentParts.length > 0 ? resolve(baseDir, ...parentParts) : baseDir;
|
|
274
|
+
const rsFile = join(parentDir, lastName + ".rs");
|
|
275
|
+
if (existsSync(rsFile) && !isDirectory(rsFile)) {
|
|
276
|
+
return normalizePath(rsFile);
|
|
277
|
+
}
|
|
278
|
+
// Try full path as directory with mod.rs (when all parts form a directory)
|
|
279
|
+
const fullDir = resolve(baseDir, ...parts);
|
|
280
|
+
const modRsFull = join(fullDir, "mod.rs");
|
|
281
|
+
if (existsSync(modRsFull))
|
|
282
|
+
return normalizePath(modRsFull);
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
// --- Java import resolution ---
|
|
286
|
+
function resolveJavaImport(source, rootDir) {
|
|
287
|
+
// Java imports like: com.example.Foo -> look for com/example/Foo.java
|
|
288
|
+
const parts = source.split(".");
|
|
289
|
+
// Wildcard imports: com.example.* -> resolve to the package directory
|
|
290
|
+
if (parts[parts.length - 1] === "*") {
|
|
291
|
+
const dirParts = parts.slice(0, -1);
|
|
292
|
+
// Try under various source roots
|
|
293
|
+
for (const srcRoot of findJavaSourceRoots(rootDir)) {
|
|
294
|
+
const candidate = resolve(srcRoot, ...dirParts);
|
|
295
|
+
if (isDirectory(candidate)) {
|
|
296
|
+
return normalizePath(candidate);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
// Non-wildcard: com.example.Foo -> com/example/Foo.java
|
|
302
|
+
for (const srcRoot of findJavaSourceRoots(rootDir)) {
|
|
303
|
+
const candidate = resolve(srcRoot, ...parts) + ".java";
|
|
304
|
+
if (existsSync(candidate) && !isDirectory(candidate)) {
|
|
305
|
+
return normalizePath(candidate);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
function findJavaSourceRoots(rootDir) {
|
|
311
|
+
const roots = [];
|
|
312
|
+
// Standard Maven/Gradle source root
|
|
313
|
+
const mainJava = join(rootDir, "src", "main", "java");
|
|
314
|
+
if (isDirectory(mainJava))
|
|
315
|
+
roots.push(mainJava);
|
|
316
|
+
// Test source root
|
|
317
|
+
const testJava = join(rootDir, "src", "test", "java");
|
|
318
|
+
if (isDirectory(testJava))
|
|
319
|
+
roots.push(testJava);
|
|
320
|
+
// Plain src/ directory
|
|
321
|
+
const src = join(rootDir, "src");
|
|
322
|
+
if (isDirectory(src) && !roots.some((r) => r.startsWith(src + "/"))) {
|
|
323
|
+
roots.push(src);
|
|
324
|
+
}
|
|
325
|
+
// Fallback to root
|
|
326
|
+
if (roots.length === 0) {
|
|
327
|
+
roots.push(rootDir);
|
|
328
|
+
}
|
|
329
|
+
return roots;
|
|
330
|
+
}
|
|
331
|
+
export function resolveAllImports(analyses, rootDir, tsConfig) {
|
|
332
|
+
const projectFiles = new Set(analyses.map((a) => normalizePath(a.filePath)));
|
|
333
|
+
// Also index directories for Go package resolution (Go resolves to directories)
|
|
334
|
+
const projectDirs = new Set();
|
|
335
|
+
for (const a of analyses) {
|
|
336
|
+
projectDirs.add(normalizePath(dirname(a.filePath)));
|
|
337
|
+
}
|
|
338
|
+
return analyses.map((analysis) => {
|
|
339
|
+
const language = analysis.language;
|
|
340
|
+
const resolvedImports = analysis.imports.map((imp) => {
|
|
341
|
+
const resolved = resolveImport(imp.source, analysis.filePath, rootDir, tsConfig, language);
|
|
342
|
+
if (resolved) {
|
|
343
|
+
// For Go, resolved paths may be directories (package-level)
|
|
344
|
+
if (projectFiles.has(resolved) || projectDirs.has(resolved)) {
|
|
345
|
+
return { ...imp, resolvedPath: resolved };
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return imp;
|
|
349
|
+
});
|
|
350
|
+
return { ...analysis, imports: resolvedImports };
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
//# sourceMappingURL=import-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../src/analysis/import-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { initParser, parseFile, parseFileFromDisk } from "./parser.js";
|
|
2
|
+
export { visitFile } from "./ts-js-visitor.js";
|
|
3
|
+
export { getVisitor, type VisitorFn } from "./visitor-registry.js";
|
|
4
|
+
export { visitFile as visitPythonFile } from "./python-visitor.js";
|
|
5
|
+
export { visitFile as visitRustFile } from "./rust-visitor.js";
|
|
6
|
+
export { visitFile as visitGoFile } from "./go-visitor.js";
|
|
7
|
+
export { visitFile as visitJavaFile } from "./java-visitor.js";
|
|
8
|
+
export { countLOC, truncateBody, extractStringLiteral, findDescendantByType, getChildrenByType, extractCallSitesGeneric, computeComplexityGeneric, } from "./visitor-utils.js";
|
|
9
|
+
export { resolveImport, resolveAllImports, loadTsConfigPaths } from "./import-resolver.js";
|
|
10
|
+
export { detectModules } from "./module-detector.js";
|
|
11
|
+
export { buildDependencyGraph, type DependencyGraphResult } from "./dependency-graph.js";
|
|
12
|
+
export { buildCallGraph, type CallGraphResult } from "./call-graph.js";
|
|
13
|
+
export { computeFileMetrics, computeModuleMetrics, type FileMetrics, type ModuleMetrics } from "./metrics.js";
|
|
14
|
+
export { computeTodoDensity, computeTypeSafety, computeDocCoverage, computeDepHealth } from "./health/indicators.js";
|
|
15
|
+
export { detectTestFiles, computeTestScore } from "./health/test-coverage.js";
|
|
16
|
+
export { computeHealthScore, computeAllHealthScores, type HealthInputs } from "./health/scorer.js";
|
|
17
|
+
export { OpenAIClient, type LlmOptions } from "./semantic/openai-client.js";
|
|
18
|
+
export { createCacheKey, getCachedResult, setCachedResult } from "./semantic/cache.js";
|
|
19
|
+
export { fileSummaryPrompt, moduleSummaryPrompt, systemSummaryPrompt, expeditionPrompt } from "./semantic/prompts.js";
|
|
20
|
+
export { summarizeHierarchically, type SummarizationResult, type FileSummary, type ModuleSummary, } from "./semantic/summarizer.js";
|
|
21
|
+
export { analyzeGitHistory, type GitArchaeologyResult, type ChurnData, type BusFactorData, type ContributorInfo, } from "./git/index.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,EAAE,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,EACL,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { initParser, parseFile, parseFileFromDisk } from "./parser.js";
|
|
2
|
+
export { visitFile } from "./ts-js-visitor.js";
|
|
3
|
+
export { getVisitor } from "./visitor-registry.js";
|
|
4
|
+
export { visitFile as visitPythonFile } from "./python-visitor.js";
|
|
5
|
+
export { visitFile as visitRustFile } from "./rust-visitor.js";
|
|
6
|
+
export { visitFile as visitGoFile } from "./go-visitor.js";
|
|
7
|
+
export { visitFile as visitJavaFile } from "./java-visitor.js";
|
|
8
|
+
export { countLOC, truncateBody, extractStringLiteral, findDescendantByType, getChildrenByType, extractCallSitesGeneric, computeComplexityGeneric, } from "./visitor-utils.js";
|
|
9
|
+
export { resolveImport, resolveAllImports, loadTsConfigPaths } from "./import-resolver.js";
|
|
10
|
+
export { detectModules } from "./module-detector.js";
|
|
11
|
+
export { buildDependencyGraph } from "./dependency-graph.js";
|
|
12
|
+
export { buildCallGraph } from "./call-graph.js";
|
|
13
|
+
export { computeFileMetrics, computeModuleMetrics } from "./metrics.js";
|
|
14
|
+
export { computeTodoDensity, computeTypeSafety, computeDocCoverage, computeDepHealth } from "./health/indicators.js";
|
|
15
|
+
export { detectTestFiles, computeTestScore } from "./health/test-coverage.js";
|
|
16
|
+
export { computeHealthScore, computeAllHealthScores } from "./health/scorer.js";
|
|
17
|
+
// Semantic analysis (LLM summarization)
|
|
18
|
+
export { OpenAIClient } from "./semantic/openai-client.js";
|
|
19
|
+
export { createCacheKey, getCachedResult, setCachedResult } from "./semantic/cache.js";
|
|
20
|
+
export { fileSummaryPrompt, moduleSummaryPrompt, systemSummaryPrompt, expeditionPrompt } from "./semantic/prompts.js";
|
|
21
|
+
export { summarizeHierarchically, } from "./semantic/summarizer.js";
|
|
22
|
+
// Git archaeology
|
|
23
|
+
export { analyzeGitHistory, } from "./git/index.js";
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analysis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAkB,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAA8B,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAwB,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAwC,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAqB,MAAM,oBAAoB,CAAC;AAEnG,wCAAwC;AACxC,OAAO,EAAE,YAAY,EAAmB,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACtH,OAAO,EACL,uBAAuB,GAIxB,MAAM,0BAA0B,CAAC;AAElC,kBAAkB;AAClB,OAAO,EACL,iBAAiB,GAKlB,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java-visitor.d.ts","sourceRoot":"","sources":["../../src/analysis/java-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAC1C,OAAO,KAAK,EAAE,YAAY,EAA2E,MAAM,mBAAmB,CAAC;AAkR/H,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,QAAQ,EAAE,MAAM,GACf,YAAY,CAgBd"}
|