@bugsbunnycodes1998/cartographer-core 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -39,7 +39,7 @@ describe("analyze pipeline", () => {
39
39
  }
40
40
  // auth -> utils dependency (login.ts imports hash.ts)
41
41
  expect(graph.edges.length).toBeGreaterThan(0);
42
- const authToUtils = graph.edges.find((e) => e.sourceId === "mod:auth" && e.targetId === "mod:utils");
42
+ const authToUtils = graph.edges.find((e) => e.sourceId.includes("auth") && e.targetId.includes("utils") && e.kind === "imports");
43
43
  expect(authToUtils).toBeDefined();
44
44
  // Check layout: modules have non-zero positions
45
45
  const modulesWithPositions = modules.filter((n) => n.position.x !== 0 || n.position.z !== 0);
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../src/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pipeline.test.js","sourceRoot":"","sources":["../../src/__tests__/pipeline.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"module-detector.d.ts","sourceRoot":"","sources":["../../src/analysis/module-detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0B7E,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,YAAY,EAAE,GACvB,UAAU,EAAE,CAsRd"}
1
+ {"version":3,"file":"module-detector.d.ts","sourceRoot":"","sources":["../../src/analysis/module-detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0H7E,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,YAAY,EAAE,GACvB,UAAU,EAAE,CAgDd"}
@@ -1,9 +1,14 @@
1
- import { existsSync, readdirSync } from "node:fs";
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
2
  import { join, dirname, relative } from "node:path";
3
3
  import { logger } from "../logger.js";
4
4
  function normalizePath(p) {
5
5
  return p.replace(/\\/g, "/");
6
6
  }
7
+ const SKIP_DIRS = new Set([
8
+ "node_modules", ".git", "dist", "build", ".next", ".nuxt", "__pycache__",
9
+ "coverage", ".cartographer", "target", ".tox", "__tests__", "__mocks__",
10
+ ".cache", ".turbo", ".vercel", ".output",
11
+ ]);
7
12
  function hasBarrelExports(analyses, barrelPath) {
8
13
  const analysis = analyses.find((a) => normalizePath(a.filePath) === normalizePath(barrelPath));
9
14
  if (!analysis)
@@ -20,238 +25,418 @@ function findBarrelFile(dirPath) {
20
25
  }
21
26
  return null;
22
27
  }
28
+ function readJsonSafe(filePath) {
29
+ try {
30
+ const raw = readFileSync(filePath, "utf-8");
31
+ return JSON.parse(raw);
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ function readYamlGlobs(filePath) {
38
+ try {
39
+ const raw = readFileSync(filePath, "utf-8");
40
+ // Simple YAML parser for workspace globs: look for lines with - "pattern" or - pattern
41
+ const globs = [];
42
+ for (const line of raw.split("\n")) {
43
+ const match = line.match(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/);
44
+ if (match?.[1])
45
+ globs.push(match[1]);
46
+ }
47
+ return globs;
48
+ }
49
+ catch {
50
+ return [];
51
+ }
52
+ }
53
+ function resolveGlob(rootDir, glob) {
54
+ // Simple glob resolution: "packages/*" → list of directories matching
55
+ const parts = glob.split("/");
56
+ const wildIdx = parts.indexOf("*");
57
+ if (wildIdx === -1) {
58
+ // No wildcard: check if directory exists
59
+ const dir = join(rootDir, glob);
60
+ if (existsSync(dir))
61
+ return [normalizePath(relative(rootDir, dir))];
62
+ return [];
63
+ }
64
+ // Resolve up to the wildcard
65
+ const prefix = parts.slice(0, wildIdx).join("/");
66
+ const baseDir = join(rootDir, prefix);
67
+ if (!existsSync(baseDir))
68
+ return [];
69
+ try {
70
+ return readdirSync(baseDir, { withFileTypes: true })
71
+ .filter((d) => d.isDirectory() && !SKIP_DIRS.has(d.name))
72
+ .map((d) => normalizePath(join(prefix, d.name)));
73
+ }
74
+ catch {
75
+ return [];
76
+ }
77
+ }
78
+ function getFilesInDir(dir, rootDir, files, assignedFiles) {
79
+ const normalizedDir = normalizePath(dir);
80
+ return files
81
+ .filter((f) => f.language !== null &&
82
+ normalizePath(f.absolutePath).startsWith(normalizedDir + "/") &&
83
+ !assignedFiles.has(f.relativePath))
84
+ .map((f) => f.relativePath);
85
+ }
86
+ function addModule(modules, assignedFiles, id, name, rootDir, moduleFiles, method) {
87
+ if (moduleFiles.length === 0)
88
+ return false;
89
+ if (modules.some((m) => m.id === id))
90
+ return false;
91
+ modules.push({ id, name, rootDir, files: moduleFiles, detectionMethod: method });
92
+ for (const fp of moduleFiles) {
93
+ assignedFiles.add(fp);
94
+ }
95
+ logger.debug(`Module detected [${method}]: ${name} (${moduleFiles.length} files)`);
96
+ return true;
97
+ }
98
+ // ──────────────────────────────────────────────────
99
+ // MAIN DETECTION FUNCTION
100
+ // ──────────────────────────────────────────────────
23
101
  export function detectModules(rootDir, scopeDir, files, analyses) {
24
102
  const modules = [];
25
103
  const assignedFiles = new Set();
26
- // Strategy 1: Barrel file detection
27
- // Find all directories that have index files with re-exports
104
+ // Collect all directories that contain files
28
105
  const dirs = new Set();
29
106
  for (const file of files) {
30
107
  if (file.language !== null) {
31
- const dir = normalizePath(dirname(file.absolutePath));
32
- dirs.add(dir);
108
+ dirs.add(normalizePath(dirname(file.absolutePath)));
33
109
  }
34
110
  }
35
- // Sort directories deepest-first so child modules are assigned before parents
36
- const sortedDirs = [...dirs].sort((a, b) => b.length - a.length);
111
+ const sortedDirs = [...dirs].sort((a, b) => b.length - a.length); // deepest first
112
+ // ── Strategy 0: Monorepo Detection ──────────────────────
113
+ detectMonorepo(rootDir, scopeDir, files, modules, assignedFiles);
114
+ // ── Strategy 1: Barrel File Detection ───────────────────
115
+ detectBarrelModules(rootDir, scopeDir, sortedDirs, files, analyses, modules, assignedFiles);
116
+ // ── Strategy 2: Framework Convention ────────────────────
117
+ detectFrameworkModules(rootDir, scopeDir, files, modules, assignedFiles);
118
+ // ── Strategy 3: Language Convention ─────────────────────
119
+ detectLanguageModules(rootDir, sortedDirs, files, modules, assignedFiles);
120
+ // ── Strategy 4: Universal Depth-Based Split ─────────────
121
+ // Only if we still have too few modules
122
+ if (modules.length < 3) {
123
+ detectByDepth(rootDir, scopeDir, files, modules, assignedFiles);
124
+ }
125
+ // ── Strategy 5: Root Module ─────────────────────────────
126
+ const rootFiles = files
127
+ .filter((f) => f.language !== null && !assignedFiles.has(f.relativePath))
128
+ .map((f) => f.relativePath);
129
+ if (rootFiles.length > 0) {
130
+ modules.push({
131
+ id: "mod:(root)",
132
+ name: "(root)",
133
+ rootDir: normalizePath(relative(rootDir, scopeDir)),
134
+ files: rootFiles,
135
+ detectionMethod: "top-level-dir",
136
+ });
137
+ }
138
+ logger.debug(`Detected ${modules.length} modules: ${modules.map((m) => m.name).join(", ")}`);
139
+ return modules;
140
+ }
141
+ // ──────────────────────────────────────────────────
142
+ // Strategy 0: Monorepo Detection
143
+ // ──────────────────────────────────────────────────
144
+ function detectMonorepo(rootDir, scopeDir, files, modules, assignedFiles) {
145
+ // pnpm workspaces
146
+ const pnpmWorkspace = join(rootDir, "pnpm-workspace.yaml");
147
+ if (existsSync(pnpmWorkspace)) {
148
+ const globs = readYamlGlobs(pnpmWorkspace);
149
+ for (const glob of globs) {
150
+ const dirs = resolveGlob(rootDir, glob);
151
+ for (const relDir of dirs) {
152
+ const absDir = normalizePath(join(rootDir, relDir));
153
+ const name = relDir.split("/").pop() ?? relDir;
154
+ const moduleFiles = getFilesInDir(absDir, rootDir, files, assignedFiles);
155
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "monorepo");
156
+ }
157
+ }
158
+ return;
159
+ }
160
+ // lerna.json
161
+ const lernaPath = join(rootDir, "lerna.json");
162
+ if (existsSync(lernaPath)) {
163
+ const lerna = readJsonSafe(lernaPath);
164
+ const packages = lerna?.["packages"] ?? ["packages/*"];
165
+ for (const glob of packages) {
166
+ const dirs = resolveGlob(rootDir, glob);
167
+ for (const relDir of dirs) {
168
+ const absDir = normalizePath(join(rootDir, relDir));
169
+ const name = relDir.split("/").pop() ?? relDir;
170
+ const moduleFiles = getFilesInDir(absDir, rootDir, files, assignedFiles);
171
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "monorepo");
172
+ }
173
+ }
174
+ return;
175
+ }
176
+ // nx.json or turbo.json — look for packages/ or apps/ directories
177
+ if (existsSync(join(rootDir, "nx.json")) || existsSync(join(rootDir, "turbo.json"))) {
178
+ for (const dir of ["packages", "apps", "libs"]) {
179
+ const absDir = join(rootDir, dir);
180
+ if (existsSync(absDir)) {
181
+ const dirs = resolveGlob(rootDir, `${dir}/*`);
182
+ for (const relDir of dirs) {
183
+ const fullDir = normalizePath(join(rootDir, relDir));
184
+ const name = relDir.split("/").pop() ?? relDir;
185
+ const moduleFiles = getFilesInDir(fullDir, rootDir, files, assignedFiles);
186
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "monorepo");
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ // ──────────────────────────────────────────────────
193
+ // Strategy 1: Barrel File Detection
194
+ // ──────────────────────────────────────────────────
195
+ function detectBarrelModules(rootDir, scopeDir, sortedDirs, files, analyses, modules, assignedFiles) {
37
196
  for (const dir of sortedDirs) {
38
- // Skip root — we don't want the root directory itself as a module from barrel
39
197
  if (normalizePath(dir) === normalizePath(scopeDir))
40
198
  continue;
41
199
  const barrelPath = findBarrelFile(dir);
42
200
  if (barrelPath && hasBarrelExports(analyses, barrelPath)) {
43
201
  const relDir = normalizePath(relative(rootDir, dir));
44
202
  const name = relDir.split("/").pop() ?? relDir;
45
- const moduleId = `mod:${name}`;
46
- // Only include files not already assigned to a child module
47
- const moduleFiles = files
48
- .filter((f) => f.language !== null &&
49
- normalizePath(f.absolutePath).startsWith(normalizePath(dir) + "/") &&
50
- !assignedFiles.has(f.relativePath))
51
- .map((f) => f.relativePath);
52
- if (moduleFiles.length > 0) {
53
- modules.push({
54
- id: moduleId,
55
- name,
56
- rootDir: relDir,
57
- files: moduleFiles,
58
- detectionMethod: "barrel",
59
- });
60
- for (const fp of moduleFiles) {
61
- assignedFiles.add(fp);
62
- }
203
+ const moduleId = `mod:${relDir}`;
204
+ const moduleFiles = getFilesInDir(dir, rootDir, files, assignedFiles);
205
+ addModule(modules, assignedFiles, moduleId, name, relDir, moduleFiles, "barrel");
206
+ }
207
+ }
208
+ }
209
+ // ──────────────────────────────────────────────────
210
+ // Strategy 2: Framework Convention Detection
211
+ // ──────────────────────────────────────────────────
212
+ function detectFrameworkModules(rootDir, scopeDir, files, modules, assignedFiles) {
213
+ const baseDir = existsSync(join(scopeDir, "src")) ? join(scopeDir, "src") : scopeDir;
214
+ // Detect framework type
215
+ const framework = detectFramework(rootDir);
216
+ if (framework === "nextjs" || framework === "react" || framework === "vue" || framework === "svelte") {
217
+ const conventionDirs = [
218
+ "app", "pages", "components", "lib", "hooks", "utils", "services",
219
+ "store", "stores", "styles", "types", "actions", "providers",
220
+ "features", "modules", "layouts", "middleware", "api", "config",
221
+ "context", "contexts", "helpers", "constants", "assets", "data",
222
+ "models", "schemas", "views", "screens", "navigation",
223
+ ];
224
+ applyConventionDirs(rootDir, baseDir, conventionDirs, files, modules, assignedFiles, "framework");
225
+ }
226
+ if (framework === "express" || framework === "nestjs" || framework === "fastify-app") {
227
+ const conventionDirs = [
228
+ "routes", "controllers", "models", "middleware", "services",
229
+ "guards", "pipes", "modules", "entities", "dto", "decorators",
230
+ "interceptors", "filters", "utils", "config", "database",
231
+ "auth", "users", "common", "shared",
232
+ ];
233
+ applyConventionDirs(rootDir, baseDir, conventionDirs, files, modules, assignedFiles, "framework");
234
+ }
235
+ if (framework === "django") {
236
+ // Django: each directory with models.py is an app module
237
+ for (const file of files) {
238
+ if (file.relativePath.endsWith("models.py")) {
239
+ const appDir = normalizePath(dirname(file.absolutePath));
240
+ if (normalizePath(appDir) === normalizePath(scopeDir))
241
+ continue;
242
+ const relDir = normalizePath(relative(rootDir, appDir));
243
+ const name = relDir.split("/").pop() ?? relDir;
244
+ const moduleFiles = getFilesInDir(appDir, rootDir, files, assignedFiles);
245
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "framework");
63
246
  }
64
247
  }
65
248
  }
66
- // Strategy 2: Python packages (__init__.py detection)
249
+ if (framework === "rails") {
250
+ const railsDirs = ["models", "controllers", "views", "services", "jobs", "mailers", "channels", "helpers"];
251
+ const appDir = join(scopeDir, "app");
252
+ if (existsSync(appDir)) {
253
+ applyConventionDirs(rootDir, appDir, railsDirs, files, modules, assignedFiles, "framework");
254
+ }
255
+ }
256
+ if (framework === "spring") {
257
+ // Spring: subdirectories under src/main/java/<base>/
258
+ const javaDir = join(scopeDir, "src", "main", "java");
259
+ if (existsSync(javaDir)) {
260
+ discoverSubModules(rootDir, javaDir, files, modules, assignedFiles, "framework", 2);
261
+ }
262
+ }
263
+ }
264
+ function detectFramework(rootDir) {
265
+ // Check config files
266
+ if (existsSync(join(rootDir, "next.config.js")) ||
267
+ existsSync(join(rootDir, "next.config.ts")) ||
268
+ existsSync(join(rootDir, "next.config.mjs"))) {
269
+ return "nextjs";
270
+ }
271
+ if (existsSync(join(rootDir, "nuxt.config.ts")) || existsSync(join(rootDir, "nuxt.config.js"))) {
272
+ return "vue";
273
+ }
274
+ if (existsSync(join(rootDir, "svelte.config.js")) || existsSync(join(rootDir, "svelte.config.ts"))) {
275
+ return "svelte";
276
+ }
277
+ if (existsSync(join(rootDir, "manage.py"))) {
278
+ return "django";
279
+ }
280
+ if (existsSync(join(rootDir, "Gemfile"))) {
281
+ try {
282
+ const gemfile = readFileSync(join(rootDir, "Gemfile"), "utf-8");
283
+ if (gemfile.includes("rails"))
284
+ return "rails";
285
+ }
286
+ catch { /* ignore */ }
287
+ }
288
+ // Check package.json dependencies
289
+ const pkg = readJsonSafe(join(rootDir, "package.json"));
290
+ if (pkg) {
291
+ const deps = { ...(pkg["dependencies"] ?? {}), ...(pkg["devDependencies"] ?? {}) };
292
+ if (deps["next"])
293
+ return "nextjs";
294
+ if (deps["@nestjs/core"])
295
+ return "nestjs";
296
+ if (deps["express"])
297
+ return "express";
298
+ if (deps["fastify"] && !deps["@cartographer/core"])
299
+ return "fastify-app";
300
+ if (deps["vue"] || deps["nuxt"])
301
+ return "vue";
302
+ if (deps["svelte"] || deps["@sveltejs/kit"])
303
+ return "svelte";
304
+ if (deps["react"] && !deps["next"])
305
+ return "react";
306
+ }
307
+ // Java frameworks
308
+ if (existsSync(join(rootDir, "pom.xml")) || existsSync(join(rootDir, "build.gradle"))) {
309
+ return "spring";
310
+ }
311
+ return null;
312
+ }
313
+ function applyConventionDirs(rootDir, baseDir, conventionDirs, files, modules, assignedFiles, method) {
314
+ for (const dirName of conventionDirs) {
315
+ const fullDir = normalizePath(join(baseDir, dirName));
316
+ if (!existsSync(fullDir))
317
+ continue;
318
+ const relDir = normalizePath(relative(rootDir, fullDir));
319
+ const moduleId = `mod:${relDir}`;
320
+ const moduleFiles = getFilesInDir(fullDir, rootDir, files, assignedFiles);
321
+ addModule(modules, assignedFiles, moduleId, dirName, relDir, moduleFiles, method);
322
+ }
323
+ }
324
+ // ──────────────────────────────────────────────────
325
+ // Strategy 3: Language Convention
326
+ // ──────────────────────────────────────────────────
327
+ function detectLanguageModules(rootDir, sortedDirs, files, modules, assignedFiles) {
328
+ // Python packages (__init__.py)
67
329
  const hasPython = files.some((f) => f.language === "python");
68
330
  if (hasPython) {
69
331
  for (const dir of sortedDirs) {
70
- if (normalizePath(dir) === normalizePath(scopeDir))
71
- continue;
72
332
  const initPath = join(dir, "__init__.py");
73
333
  if (existsSync(initPath)) {
74
334
  const relDir = normalizePath(relative(rootDir, dir));
75
335
  const name = relDir.split("/").pop() ?? relDir;
76
- const moduleId = `mod:${name}`;
77
- // Skip if a module with this ID already exists
78
- if (modules.some((m) => m.id === moduleId))
79
- continue;
80
- const moduleFiles = files
81
- .filter((f) => f.language === "python" &&
82
- normalizePath(f.absolutePath).startsWith(normalizePath(dir) + "/") &&
83
- !assignedFiles.has(f.relativePath))
84
- .map((f) => f.relativePath);
85
- if (moduleFiles.length > 0) {
86
- modules.push({
87
- id: moduleId,
88
- name,
89
- rootDir: relDir,
90
- files: moduleFiles,
91
- detectionMethod: "python-package",
92
- });
93
- for (const fp of moduleFiles) {
94
- assignedFiles.add(fp);
95
- }
96
- }
336
+ const moduleFiles = getFilesInDir(dir, rootDir, files, assignedFiles);
337
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "python-package");
97
338
  }
98
339
  }
99
340
  }
100
- // Strategy 3: Go modules (directories containing .go files)
341
+ // Go modules (directories with .go files)
101
342
  const hasGo = files.some((f) => f.language === "go");
102
343
  if (hasGo) {
103
344
  for (const dir of sortedDirs) {
104
- if (normalizePath(dir) === normalizePath(scopeDir))
105
- continue;
106
345
  const hasGoFiles = files.some((f) => f.language === "go" &&
107
346
  normalizePath(dirname(f.absolutePath)) === normalizePath(dir) &&
108
347
  !assignedFiles.has(f.relativePath));
109
348
  if (hasGoFiles) {
110
349
  const relDir = normalizePath(relative(rootDir, dir));
111
350
  const name = relDir.split("/").pop() ?? relDir;
112
- const moduleId = `mod:${name}`;
113
- if (modules.some((m) => m.id === moduleId))
114
- continue;
115
- const moduleFiles = files
116
- .filter((f) => f.language === "go" &&
117
- normalizePath(f.absolutePath).startsWith(normalizePath(dir) + "/") &&
118
- !assignedFiles.has(f.relativePath))
119
- .map((f) => f.relativePath);
120
- if (moduleFiles.length > 0) {
121
- modules.push({
122
- id: moduleId,
123
- name,
124
- rootDir: relDir,
125
- files: moduleFiles,
126
- detectionMethod: "go-module",
127
- });
128
- for (const fp of moduleFiles) {
129
- assignedFiles.add(fp);
130
- }
131
- }
351
+ const moduleFiles = getFilesInDir(dir, rootDir, files, assignedFiles);
352
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "go-module");
132
353
  }
133
354
  }
134
355
  }
135
- // Strategy 4: Rust modules (directories with mod.rs, or .rs files under src/)
356
+ // Rust modules (mod.rs or .rs files)
136
357
  const hasRust = files.some((f) => f.language === "rust");
137
358
  if (hasRust) {
138
359
  for (const dir of sortedDirs) {
139
- if (normalizePath(dir) === normalizePath(scopeDir))
140
- continue;
141
360
  const hasModRs = existsSync(join(dir, "mod.rs"));
142
- const hasRustFiles = files.some((f) => f.language === "rust" &&
361
+ const hasRsFiles = files.some((f) => f.language === "rust" &&
143
362
  normalizePath(dirname(f.absolutePath)) === normalizePath(dir) &&
144
363
  !assignedFiles.has(f.relativePath));
145
- if (hasModRs || hasRustFiles) {
364
+ if (hasModRs || hasRsFiles) {
146
365
  const relDir = normalizePath(relative(rootDir, dir));
147
366
  const name = relDir.split("/").pop() ?? relDir;
148
- const moduleId = `mod:${name}`;
149
- if (modules.some((m) => m.id === moduleId))
150
- continue;
151
- const moduleFiles = files
152
- .filter((f) => f.language === "rust" &&
153
- normalizePath(f.absolutePath).startsWith(normalizePath(dir) + "/") &&
154
- !assignedFiles.has(f.relativePath))
155
- .map((f) => f.relativePath);
156
- if (moduleFiles.length > 0) {
157
- modules.push({
158
- id: moduleId,
159
- name,
160
- rootDir: relDir,
161
- files: moduleFiles,
162
- detectionMethod: "cargo-workspace",
163
- });
164
- for (const fp of moduleFiles) {
165
- assignedFiles.add(fp);
166
- }
167
- }
367
+ const moduleFiles = getFilesInDir(dir, rootDir, files, assignedFiles);
368
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "cargo-workspace");
168
369
  }
169
370
  }
170
371
  }
171
- // Strategy 5: Java packages (directories containing .java files under src/main/java or src/)
372
+ // Java packages (directories with .java files)
172
373
  const hasJava = files.some((f) => f.language === "java");
173
374
  if (hasJava) {
174
375
  for (const dir of sortedDirs) {
175
- if (normalizePath(dir) === normalizePath(scopeDir))
176
- continue;
177
376
  const hasJavaFiles = files.some((f) => f.language === "java" &&
178
377
  normalizePath(dirname(f.absolutePath)) === normalizePath(dir) &&
179
378
  !assignedFiles.has(f.relativePath));
180
379
  if (hasJavaFiles) {
181
380
  const relDir = normalizePath(relative(rootDir, dir));
182
381
  const name = relDir.split("/").pop() ?? relDir;
183
- const moduleId = `mod:${name}`;
184
- if (modules.some((m) => m.id === moduleId))
185
- continue;
186
- const moduleFiles = files
187
- .filter((f) => f.language === "java" &&
188
- normalizePath(f.absolutePath).startsWith(normalizePath(dir) + "/") &&
189
- !assignedFiles.has(f.relativePath))
190
- .map((f) => f.relativePath);
191
- if (moduleFiles.length > 0) {
192
- modules.push({
193
- id: moduleId,
194
- name,
195
- rootDir: relDir,
196
- files: moduleFiles,
197
- detectionMethod: "java-package",
198
- });
199
- for (const fp of moduleFiles) {
200
- assignedFiles.add(fp);
201
- }
202
- }
382
+ const moduleFiles = getFilesInDir(dir, rootDir, files, assignedFiles);
383
+ addModule(modules, assignedFiles, `mod:${relDir}`, name, relDir, moduleFiles, "java-package");
203
384
  }
204
385
  }
205
386
  }
206
- // Strategy 6: Top-level directory fallback
207
- // If no modules found from any strategy, use top-level directories under src/ or root
208
- if (modules.length === 0) {
209
- const baseDir = existsSync(join(scopeDir, "src"))
210
- ? join(scopeDir, "src")
211
- : scopeDir;
212
- let topDirs;
213
- try {
214
- topDirs = readdirSync(baseDir, { withFileTypes: true })
215
- .filter((d) => d.isDirectory())
216
- .map((d) => d.name);
217
- }
218
- catch {
219
- topDirs = [];
387
+ }
388
+ // ──────────────────────────────────────────────────
389
+ // Strategy 4: Universal Depth-Based Split
390
+ // ──────────────────────────────────────────────────
391
+ function detectByDepth(rootDir, scopeDir, files, modules, assignedFiles) {
392
+ const baseDir = existsSync(join(scopeDir, "src")) ? join(scopeDir, "src") : scopeDir;
393
+ // Discover directories at depth 1 under baseDir
394
+ discoverSubModules(rootDir, baseDir, files, modules, assignedFiles, "depth-split", 1);
395
+ // If any depth-1 module has too many unassigned files, split its children too
396
+ const largeModules = modules.filter((m) => m.detectionMethod === "depth-split" && m.files.length > 20);
397
+ for (const mod of largeModules) {
398
+ const modAbsDir = normalizePath(join(rootDir, mod.rootDir));
399
+ // Remove this module's files from assignment so children can re-claim them
400
+ for (const fp of mod.files) {
401
+ assignedFiles.delete(fp);
220
402
  }
221
- for (const dirName of topDirs) {
222
- const fullDir = normalizePath(join(baseDir, dirName));
223
- const relDir = normalizePath(relative(rootDir, fullDir));
224
- const moduleFiles = files
225
- .filter((f) => f.language !== null && normalizePath(f.absolutePath).startsWith(fullDir + "/"))
226
- .map((f) => f.relativePath);
227
- if (moduleFiles.length > 0) {
228
- modules.push({
229
- id: `mod:${dirName}`,
230
- name: dirName,
231
- rootDir: relDir,
232
- files: moduleFiles,
233
- detectionMethod: "top-level-dir",
234
- });
235
- for (const fp of moduleFiles) {
236
- assignedFiles.add(fp);
237
- }
238
- }
403
+ const idx = modules.indexOf(mod);
404
+ if (idx !== -1)
405
+ modules.splice(idx, 1);
406
+ // Re-discover at deeper level within this directory
407
+ discoverSubModules(rootDir, modAbsDir, files, modules, assignedFiles, "depth-split", 1);
408
+ // Re-assign any remaining files to the original module
409
+ const remainingFiles = getFilesInDir(modAbsDir, rootDir, files, assignedFiles);
410
+ if (remainingFiles.length > 0) {
411
+ addModule(modules, assignedFiles, mod.id, mod.name, mod.rootDir, remainingFiles, "depth-split");
239
412
  }
240
413
  }
241
- // Collect unassigned files into a "(root)" module
242
- const rootFiles = files
243
- .filter((f) => f.language !== null && !assignedFiles.has(f.relativePath))
244
- .map((f) => f.relativePath);
245
- if (rootFiles.length > 0) {
246
- modules.push({
247
- id: "mod:(root)",
248
- name: "(root)",
249
- rootDir: normalizePath(relative(rootDir, scopeDir)),
250
- files: rootFiles,
251
- detectionMethod: "top-level-dir",
252
- });
414
+ }
415
+ function discoverSubModules(rootDir, baseDir, files, modules, assignedFiles, method, maxDepth, currentDepth = 0) {
416
+ if (currentDepth >= maxDepth)
417
+ return;
418
+ if (!existsSync(baseDir))
419
+ return;
420
+ let entries;
421
+ try {
422
+ entries = readdirSync(baseDir, { withFileTypes: true });
423
+ }
424
+ catch {
425
+ return;
426
+ }
427
+ for (const entry of entries) {
428
+ if (!entry.isDirectory())
429
+ continue;
430
+ if (SKIP_DIRS.has(entry.name))
431
+ continue;
432
+ if (entry.name.startsWith("."))
433
+ continue;
434
+ const fullDir = normalizePath(join(baseDir, entry.name));
435
+ const relDir = normalizePath(relative(rootDir, fullDir));
436
+ const name = entry.name;
437
+ const moduleId = `mod:${relDir}`;
438
+ const moduleFiles = getFilesInDir(fullDir, rootDir, files, assignedFiles);
439
+ addModule(modules, assignedFiles, moduleId, name, relDir, moduleFiles, method);
253
440
  }
254
- logger.debug(`Detected ${modules.length} modules: ${modules.map((m) => m.name).join(", ")}`);
255
- return modules;
256
441
  }
257
442
  //# sourceMappingURL=module-detector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module-detector.js","sourceRoot":"","sources":["../../src/analysis/module-detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,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;AAED,SAAS,gBAAgB,CAAC,QAAwB,EAAE,UAAkB;IACpE,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,aAAa,CAAC,UAAU,CAAC,CAC/D,CAAC;IACF,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACnF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC1C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAe,EACf,QAAgB,EAChB,KAAkB,EAClB,QAAwB;IAExB,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,oCAAoC;IACpC,6DAA6D;IAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;IAEjE,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,8EAA8E;QAC9E,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC;YAAE,SAAS;QAE7D,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,UAAU,IAAI,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;YAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;YAE/B,4DAA4D;YAC5D,MAAM,WAAW,GAAG,KAAK;iBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,QAAQ,KAAK,IAAI;gBACnB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBAClE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACnC;iBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,QAAQ;oBACZ,IAAI;oBACJ,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,WAAW;oBAClB,eAAe,EAAE,QAAQ;iBAC1B,CAAC,CAAC;gBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAC1C,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;gBAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;gBAE/B,+CAA+C;gBAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;oBAAE,SAAS;gBAErD,MAAM,WAAW,GAAG,KAAK;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,QAAQ,KAAK,QAAQ;oBACvB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBAClE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACnC;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,QAAQ;wBACZ,IAAI;wBACJ,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,WAAW;wBAClB,eAAe,EAAE,gBAAgB;qBAClC,CAAC,CAAC;oBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IACrD,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE7D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,IAAI;gBACnB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC;gBAC7D,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACrC,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;gBAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;gBAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;oBAAE,SAAS;gBAErD,MAAM,WAAW,GAAG,KAAK;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,QAAQ,KAAK,IAAI;oBACnB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBAClE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACnC;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,QAAQ;wBACZ,IAAI;wBACJ,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,WAAW;wBAClB,eAAe,EAAE,WAAW;qBAC7B,CAAC,CAAC;oBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE7D,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,MAAM;gBACrB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC;gBAC7D,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACrC,CAAC;YAEF,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;gBAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;gBAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;oBAAE,SAAS;gBAErD,MAAM,WAAW,GAAG,KAAK;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,QAAQ,KAAK,MAAM;oBACrB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBAClE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACnC;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,QAAQ;wBACZ,IAAI;wBACJ,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,WAAW;wBAClB,eAAe,EAAE,iBAAiB;qBACnC,CAAC,CAAC;oBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC;IACzD,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,aAAa,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE7D,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,QAAQ,KAAK,MAAM;gBACrB,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,aAAa,CAAC,GAAG,CAAC;gBAC7D,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACrC,CAAC;YAEF,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;gBACrD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM,CAAC;gBAC/C,MAAM,QAAQ,GAAG,OAAO,IAAI,EAAE,CAAC;gBAE/B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC;oBAAE,SAAS;gBAErD,MAAM,WAAW,GAAG,KAAK;qBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,QAAQ,KAAK,MAAM;oBACrB,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;oBAClE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CACnC;qBACA,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;gBAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC;wBACX,EAAE,EAAE,QAAQ;wBACZ,IAAI;wBACJ,OAAO,EAAE,MAAM;wBACf,KAAK,EAAE,WAAW;wBAClB,eAAe,EAAE,cAAc;qBAChC,CAAC,CAAC;oBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;wBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C,sFAAsF;IACtF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;YACvB,CAAC,CAAC,QAAQ,CAAC;QAEb,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;iBACpD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;iBAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAEzD,MAAM,WAAW,GAAG,KAAK;iBACtB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;iBAC7F,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAE9B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC;oBACX,EAAE,EAAE,OAAO,OAAO,EAAE;oBACpB,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,WAAW;oBAClB,eAAe,EAAE,eAAe;iBACjC,CAAC,CAAC;gBACH,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;oBAC7B,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,SAAS,GAAG,KAAK;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;SACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAE9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,YAAY;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACnD,KAAK,EAAE,SAAS;YAChB,eAAe,EAAE,eAAe;SACjC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,CAAC,MAAM,aAAa,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7F,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"module-detector.js","sourceRoot":"","sources":["../../src/analysis/module-detector.ts"],"names":[],"mappings":"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"}
@@ -4,13 +4,13 @@ import { logger } from "../logger.js";
4
4
  // Layout constants
5
5
  const TREEMAP_SIZE = 100;
6
6
  const MODULE_PADDING = 2;
7
- const BUILDING_GAP = 1.0;
8
- const SCALE_FACTOR = 0.5;
9
- const HEIGHT_FACTOR = 1.5;
10
- const LOC_HEIGHT_FACTOR = 0.15;
11
- const MIN_BUILDING_SIZE = 1.5;
12
- const MIN_BUILDING_HEIGHT = 1.0;
13
- const MAX_BUILDING_HEIGHT = 20;
7
+ const BUILDING_GAP = 0.6;
8
+ const SCALE_FACTOR = 0.7;
9
+ const HEIGHT_FACTOR = 2.5;
10
+ const LOC_HEIGHT_FACTOR = 0.25;
11
+ const MIN_BUILDING_SIZE = 1.0;
12
+ const MIN_BUILDING_HEIGHT = 1.2;
13
+ const MAX_BUILDING_HEIGHT = 35;
14
14
  const FORCE_ITERATIONS = 300;
15
15
  // Seeded PRNG (LCG)
16
16
  function lcg(seed) {
@@ -46,6 +46,6 @@ export interface ModuleInfo {
46
46
  name: string;
47
47
  rootDir: string;
48
48
  files: string[];
49
- detectionMethod: "barrel" | "top-level-dir" | "python-package" | "cargo-workspace" | "go-module" | "java-package";
49
+ detectionMethod: "barrel" | "top-level-dir" | "python-package" | "cargo-workspace" | "go-module" | "java-package" | "monorepo" | "framework" | "depth-split";
50
50
  }
51
51
  //# sourceMappingURL=analysis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhG,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IACzF,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,QAAQ,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,CAAC;CACnH"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/types/analysis.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAEhG,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;IACzF,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,SAAS,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,QAAQ,GAAG,eAAe,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,WAAW,GAAG,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;CAC9J"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bugsbunnycodes1998/cartographer-core",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": [