@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.
Files changed (220) hide show
  1. package/dist/__tests__/pipeline.test.d.ts +2 -0
  2. package/dist/__tests__/pipeline.test.d.ts.map +1 -0
  3. package/dist/__tests__/pipeline.test.js +58 -0
  4. package/dist/__tests__/pipeline.test.js.map +1 -0
  5. package/dist/analysis/call-graph.d.ts +13 -0
  6. package/dist/analysis/call-graph.d.ts.map +1 -0
  7. package/dist/analysis/call-graph.js +133 -0
  8. package/dist/analysis/call-graph.js.map +1 -0
  9. package/dist/analysis/dependency-graph.d.ts +8 -0
  10. package/dist/analysis/dependency-graph.d.ts.map +1 -0
  11. package/dist/analysis/dependency-graph.js +101 -0
  12. package/dist/analysis/dependency-graph.js.map +1 -0
  13. package/dist/analysis/git/archaeology.d.ts +20 -0
  14. package/dist/analysis/git/archaeology.d.ts.map +1 -0
  15. package/dist/analysis/git/archaeology.js +61 -0
  16. package/dist/analysis/git/archaeology.js.map +1 -0
  17. package/dist/analysis/git/bus-factor.d.ts +17 -0
  18. package/dist/analysis/git/bus-factor.d.ts.map +1 -0
  19. package/dist/analysis/git/bus-factor.js +90 -0
  20. package/dist/analysis/git/bus-factor.js.map +1 -0
  21. package/dist/analysis/git/churn.d.ts +26 -0
  22. package/dist/analysis/git/churn.d.ts.map +1 -0
  23. package/dist/analysis/git/churn.js +127 -0
  24. package/dist/analysis/git/churn.js.map +1 -0
  25. package/dist/analysis/git/contributors.d.ts +14 -0
  26. package/dist/analysis/git/contributors.d.ts.map +1 -0
  27. package/dist/analysis/git/contributors.js +60 -0
  28. package/dist/analysis/git/contributors.js.map +1 -0
  29. package/dist/analysis/git/evolution.d.ts +10 -0
  30. package/dist/analysis/git/evolution.d.ts.map +1 -0
  31. package/dist/analysis/git/evolution.js +127 -0
  32. package/dist/analysis/git/evolution.js.map +1 -0
  33. package/dist/analysis/git/index.d.ts +6 -0
  34. package/dist/analysis/git/index.d.ts.map +1 -0
  35. package/dist/analysis/git/index.js +6 -0
  36. package/dist/analysis/git/index.js.map +1 -0
  37. package/dist/analysis/go-visitor.d.ts +4 -0
  38. package/dist/analysis/go-visitor.d.ts.map +1 -0
  39. package/dist/analysis/go-visitor.js +295 -0
  40. package/dist/analysis/go-visitor.js.map +1 -0
  41. package/dist/analysis/health/indicators.d.ts +25 -0
  42. package/dist/analysis/health/indicators.d.ts.map +1 -0
  43. package/dist/analysis/health/indicators.js +53 -0
  44. package/dist/analysis/health/indicators.js.map +1 -0
  45. package/dist/analysis/health/scorer.d.ts +26 -0
  46. package/dist/analysis/health/scorer.d.ts.map +1 -0
  47. package/dist/analysis/health/scorer.js +97 -0
  48. package/dist/analysis/health/scorer.js.map +1 -0
  49. package/dist/analysis/health/test-coverage.d.ts +19 -0
  50. package/dist/analysis/health/test-coverage.d.ts.map +1 -0
  51. package/dist/analysis/health/test-coverage.js +67 -0
  52. package/dist/analysis/health/test-coverage.js.map +1 -0
  53. package/dist/analysis/import-resolver.d.ts +10 -0
  54. package/dist/analysis/import-resolver.d.ts.map +1 -0
  55. package/dist/analysis/import-resolver.js +353 -0
  56. package/dist/analysis/import-resolver.js.map +1 -0
  57. package/dist/analysis/index.d.ts +22 -0
  58. package/dist/analysis/index.d.ts.map +1 -0
  59. package/dist/analysis/index.js +24 -0
  60. package/dist/analysis/index.js.map +1 -0
  61. package/dist/analysis/java-visitor.d.ts +4 -0
  62. package/dist/analysis/java-visitor.d.ts.map +1 -0
  63. package/dist/analysis/java-visitor.js +257 -0
  64. package/dist/analysis/java-visitor.js.map +1 -0
  65. package/dist/analysis/metrics.d.ts +19 -0
  66. package/dist/analysis/metrics.d.ts.map +1 -0
  67. package/dist/analysis/metrics.js +70 -0
  68. package/dist/analysis/metrics.js.map +1 -0
  69. package/dist/analysis/module-detector.d.ts +3 -0
  70. package/dist/analysis/module-detector.d.ts.map +1 -0
  71. package/dist/analysis/module-detector.js +257 -0
  72. package/dist/analysis/module-detector.js.map +1 -0
  73. package/dist/analysis/parser.d.ts +13 -0
  74. package/dist/analysis/parser.d.ts.map +1 -0
  75. package/dist/analysis/parser.js +92 -0
  76. package/dist/analysis/parser.js.map +1 -0
  77. package/dist/analysis/python-visitor.d.ts +4 -0
  78. package/dist/analysis/python-visitor.d.ts.map +1 -0
  79. package/dist/analysis/python-visitor.js +306 -0
  80. package/dist/analysis/python-visitor.js.map +1 -0
  81. package/dist/analysis/rust-visitor.d.ts +4 -0
  82. package/dist/analysis/rust-visitor.d.ts.map +1 -0
  83. package/dist/analysis/rust-visitor.js +318 -0
  84. package/dist/analysis/rust-visitor.js.map +1 -0
  85. package/dist/analysis/semantic/cache.d.ts +16 -0
  86. package/dist/analysis/semantic/cache.d.ts.map +1 -0
  87. package/dist/analysis/semantic/cache.js +26 -0
  88. package/dist/analysis/semantic/cache.js.map +1 -0
  89. package/dist/analysis/semantic/openai-client.d.ts +21 -0
  90. package/dist/analysis/semantic/openai-client.d.ts.map +1 -0
  91. package/dist/analysis/semantic/openai-client.js +73 -0
  92. package/dist/analysis/semantic/openai-client.js.map +1 -0
  93. package/dist/analysis/semantic/prompts.d.ts +32 -0
  94. package/dist/analysis/semantic/prompts.d.ts.map +1 -0
  95. package/dist/analysis/semantic/prompts.js +134 -0
  96. package/dist/analysis/semantic/prompts.js.map +1 -0
  97. package/dist/analysis/semantic/summarizer.d.ts +36 -0
  98. package/dist/analysis/semantic/summarizer.d.ts.map +1 -0
  99. package/dist/analysis/semantic/summarizer.js +229 -0
  100. package/dist/analysis/semantic/summarizer.js.map +1 -0
  101. package/dist/analysis/ts-js-visitor.d.ts +4 -0
  102. package/dist/analysis/ts-js-visitor.d.ts.map +1 -0
  103. package/dist/analysis/ts-js-visitor.js +390 -0
  104. package/dist/analysis/ts-js-visitor.js.map +1 -0
  105. package/dist/analysis/visitor-registry.d.ts +5 -0
  106. package/dist/analysis/visitor-registry.d.ts.map +1 -0
  107. package/dist/analysis/visitor-registry.js +17 -0
  108. package/dist/analysis/visitor-registry.js.map +1 -0
  109. package/dist/analysis/visitor-utils.d.ts +38 -0
  110. package/dist/analysis/visitor-utils.d.ts.map +1 -0
  111. package/dist/analysis/visitor-utils.js +110 -0
  112. package/dist/analysis/visitor-utils.js.map +1 -0
  113. package/dist/errors.d.ts +20 -0
  114. package/dist/errors.d.ts.map +1 -0
  115. package/dist/errors.js +39 -0
  116. package/dist/errors.js.map +1 -0
  117. package/dist/expeditions/custom.d.ts +11 -0
  118. package/dist/expeditions/custom.d.ts.map +1 -0
  119. package/dist/expeditions/custom.js +61 -0
  120. package/dist/expeditions/custom.js.map +1 -0
  121. package/dist/expeditions/danger-zones.d.ts +9 -0
  122. package/dist/expeditions/danger-zones.d.ts.map +1 -0
  123. package/dist/expeditions/danger-zones.js +42 -0
  124. package/dist/expeditions/danger-zones.js.map +1 -0
  125. package/dist/expeditions/generator.d.ts +21 -0
  126. package/dist/expeditions/generator.d.ts.map +1 -0
  127. package/dist/expeditions/generator.js +78 -0
  128. package/dist/expeditions/generator.js.map +1 -0
  129. package/dist/expeditions/grand-tour.d.ts +10 -0
  130. package/dist/expeditions/grand-tour.d.ts.map +1 -0
  131. package/dist/expeditions/grand-tour.js +96 -0
  132. package/dist/expeditions/grand-tour.js.map +1 -0
  133. package/dist/expeditions/request-flow.d.ts +11 -0
  134. package/dist/expeditions/request-flow.d.ts.map +1 -0
  135. package/dist/expeditions/request-flow.js +138 -0
  136. package/dist/expeditions/request-flow.js.map +1 -0
  137. package/dist/grammars/tree-sitter-go.wasm +0 -0
  138. package/dist/grammars/tree-sitter-java.wasm +0 -0
  139. package/dist/grammars/tree-sitter-javascript.wasm +0 -0
  140. package/dist/grammars/tree-sitter-python.wasm +0 -0
  141. package/dist/grammars/tree-sitter-rust.wasm +0 -0
  142. package/dist/grammars/tree-sitter-tsx.wasm +0 -0
  143. package/dist/grammars/tree-sitter-typescript.wasm +0 -0
  144. package/dist/graph/builder.d.ts +23 -0
  145. package/dist/graph/builder.d.ts.map +1 -0
  146. package/dist/graph/builder.js +131 -0
  147. package/dist/graph/builder.js.map +1 -0
  148. package/dist/graph/exporter.d.ts +5 -0
  149. package/dist/graph/exporter.d.ts.map +1 -0
  150. package/dist/graph/exporter.js +20 -0
  151. package/dist/graph/exporter.js.map +1 -0
  152. package/dist/graph/layout.d.ts +3 -0
  153. package/dist/graph/layout.d.ts.map +1 -0
  154. package/dist/graph/layout.js +257 -0
  155. package/dist/graph/layout.js.map +1 -0
  156. package/dist/graph/store.d.ts +13 -0
  157. package/dist/graph/store.d.ts.map +1 -0
  158. package/dist/graph/store.js +145 -0
  159. package/dist/graph/store.js.map +1 -0
  160. package/dist/index.d.ts +17 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +12 -0
  163. package/dist/index.js.map +1 -0
  164. package/dist/ingestion/cloner.d.ts +18 -0
  165. package/dist/ingestion/cloner.d.ts.map +1 -0
  166. package/dist/ingestion/cloner.js +62 -0
  167. package/dist/ingestion/cloner.js.map +1 -0
  168. package/dist/ingestion/file-tree.d.ts +3 -0
  169. package/dist/ingestion/file-tree.d.ts.map +1 -0
  170. package/dist/ingestion/file-tree.js +85 -0
  171. package/dist/ingestion/file-tree.js.map +1 -0
  172. package/dist/ingestion/index.d.ts +5 -0
  173. package/dist/ingestion/index.d.ts.map +1 -0
  174. package/dist/ingestion/index.js +5 -0
  175. package/dist/ingestion/index.js.map +1 -0
  176. package/dist/ingestion/language-detector.d.ts +8 -0
  177. package/dist/ingestion/language-detector.d.ts.map +1 -0
  178. package/dist/ingestion/language-detector.js +37 -0
  179. package/dist/ingestion/language-detector.js.map +1 -0
  180. package/dist/ingestion/path-resolver.d.ts +7 -0
  181. package/dist/ingestion/path-resolver.d.ts.map +1 -0
  182. package/dist/ingestion/path-resolver.js +30 -0
  183. package/dist/ingestion/path-resolver.js.map +1 -0
  184. package/dist/logger.d.ts +3 -0
  185. package/dist/logger.d.ts.map +1 -0
  186. package/dist/logger.js +11 -0
  187. package/dist/logger.js.map +1 -0
  188. package/dist/pipeline.d.ts +3 -0
  189. package/dist/pipeline.d.ts.map +1 -0
  190. package/dist/pipeline.js +223 -0
  191. package/dist/pipeline.js.map +1 -0
  192. package/dist/types/analysis.d.ts +51 -0
  193. package/dist/types/analysis.d.ts.map +1 -0
  194. package/dist/types/analysis.js +2 -0
  195. package/dist/types/analysis.js.map +1 -0
  196. package/dist/types/config.d.ts +19 -0
  197. package/dist/types/config.d.ts.map +1 -0
  198. package/dist/types/config.js +2 -0
  199. package/dist/types/config.js.map +1 -0
  200. package/dist/types/edges.d.ts +8 -0
  201. package/dist/types/edges.d.ts.map +1 -0
  202. package/dist/types/edges.js +2 -0
  203. package/dist/types/edges.js.map +1 -0
  204. package/dist/types/expeditions.d.ts +19 -0
  205. package/dist/types/expeditions.d.ts.map +1 -0
  206. package/dist/types/expeditions.js +2 -0
  207. package/dist/types/expeditions.js.map +1 -0
  208. package/dist/types/graph.d.ts +29 -0
  209. package/dist/types/graph.d.ts.map +1 -0
  210. package/dist/types/graph.js +2 -0
  211. package/dist/types/graph.js.map +1 -0
  212. package/dist/types/index.d.ts +7 -0
  213. package/dist/types/index.d.ts.map +1 -0
  214. package/dist/types/index.js +2 -0
  215. package/dist/types/index.js.map +1 -0
  216. package/dist/types/nodes.d.ts +35 -0
  217. package/dist/types/nodes.d.ts.map +1 -0
  218. package/dist/types/nodes.js +2 -0
  219. package/dist/types/nodes.js.map +1 -0
  220. 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":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,SAAS,aAAa,CAAC,CAAS;IAC9B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAOD,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAChD,mCAAmC;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAEjC,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,CAAC,eAAe,EAAE,OAAO,IAAI,GAAG,CAAC;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE,CAAC;QAElD,OAAO;YACL,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,KAAK;SACN,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7D,0EAA0E;AAC1E,MAAM,YAAY,GAA6B;IAC7C,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,SAAS,UAAU,CAAC,QAAgB;IAClC,cAAc;IACd,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,4EAA4E;IAC5E,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;YAC3C,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;QAClC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC;YACnD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,aAAqB,EACrB,OAAe,EACf,QAA8B,EAC9B,QAA4B;IAE5B,yCAAyC;IACzC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,4CAA4C;IAE5C,kBAAkB;IAClB,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wBAAwB;IACxB,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjE,0CAA0C;YAC1C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;oBACpC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;wBAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;wBAC3E,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;wBAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;wBACvC,IAAI,QAAQ;4BAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;oBAC/C,CAAC;gBACH,CAAC;YACH,CAAC;YACD,uCAAuC;iBAClC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBAC5B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;oBAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACrD,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;oBACvC,IAAI,QAAQ;wBAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mCAAmC;AAEnC,SAAS,mBAAmB,CAC1B,MAAc,EACd,aAAqB,EACrB,OAAe;IAEf,oCAAoC;IACpC,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;YACxB,IAAI,EAAE,KAAK,GAAG;gBAAE,QAAQ,EAAE,CAAC;;gBACtB,MAAM;QACb,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAE1C,uEAAuE;QACvE,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,iFAAiF;YACjF,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;YAC7C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,uDAAuD;YACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC9C,IAAI,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;IAC7C,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAgB;IACxC,oBAAoB;IACpB,MAAM,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,8CAA8C;IAC9C,IAAI,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAC/C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+BAA+B;AAE/B,SAAS,eAAe,CACtB,MAAc,EACd,OAAe;IAEf,oDAAoD;IACpD,oEAAoE;IACpE,sDAAsD;IACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,qCAAqC;IACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,sEAAsE;YACtE,gEAAgE;YAChE,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;gBACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzD,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iCAAiC;AAEjC,SAAS,iBAAiB,CACxB,MAAc,EACd,aAAqB,EACrB,OAAe;IAEf,yDAAyD;IACzD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEjC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACzB,mCAAmC;QACnC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC;QACzB,8CAA8C;QAC9C,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACrC,2FAA2F;QAC3F,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACtD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC;QACxB,2BAA2B;QAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QACtD,2DAA2D;QAC3D,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7E,2EAA2E;YAC3E,+CAA+C;QACjD,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,OAAO,eAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,gCAAgC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,OAAe,EAAE,KAAe;IACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,qEAAqE;IACrE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;IAE3C,iCAAiC;IACjC,IAAI,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtC,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,6CAA6C;IAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,KAAK,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,2EAA2E;IAC3E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;IAE3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iCAAiC;AAEjC,SAAS,iBAAiB,CACxB,MAAc,EACd,OAAe;IAEf,sEAAsE;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEhC,sEAAsE;IACtE,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,iCAAiC;QACjC,KAAK,MAAM,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;YAChD,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3B,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wDAAwD;IACxD,KAAK,MAAM,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;QACvD,IAAI,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,WAAW,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEhD,mBAAmB;IACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtD,IAAI,WAAW,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEhD,uBAAuB;IACvB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAwB,EACxB,OAAe,EACf,QAA8B;IAE9B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC7E,gFAAgF;IAChF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3F,IAAI,QAAQ,EAAE,CAAC;gBACb,4DAA4D;gBAC5D,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5D,OAAO,EAAE,GAAG,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -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,4 @@
1
+ import type Parser from "web-tree-sitter";
2
+ import type { FileAnalysis } from "../types/index.js";
3
+ export declare function visitFile(content: string, tree: Parser.Tree, filePath: string): FileAnalysis;
4
+ //# sourceMappingURL=java-visitor.d.ts.map
@@ -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"}