depwire-cli 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -294,7 +294,11 @@ The SDK is the stable public API surface. All integrations should import from `d
294
294
 
295
295
  ## Language support
296
296
 
297
- TypeScript, JavaScript, Python, Go, Rust, C, C# — with cross-language edge detection between all supported languages.
297
+ TypeScript, JavaScript, Python, Go, Rust, C, C#, Java — with cross-language edge detection between all supported languages.
298
+
299
+ **Java / JVM** — classes, interfaces, enums, records, annotations, inner classes, anonymous classes, lambda expressions, Maven pom.xml and Gradle build file dependency edges, Spring Boot cross-language edges (@GetMapping, @PostMapping, @RequestMapping), JAX-RS / Jakarta EE route detection, Spring WebFlux RouterFunction support.
300
+
301
+ **C# / .NET** — classes, interfaces, records, structs, enums, delegates, file-scoped namespaces, primary constructors, global usings, .csproj ProjectReference and PackageReference edges, ASP.NET Core cross-language edges (attribute routing + Minimal API).
298
302
 
299
303
  ---
300
304
 
@@ -358,7 +362,7 @@ Block PRs that hurt your architecture:
358
362
  **Shipped**
359
363
  - Arc diagram visualization
360
364
  - 17 MCP tools
361
- - Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C, C#)
365
+ - Multi-language support (TypeScript, JavaScript, Python, Go, Rust, C, C#, Java)
362
366
  - Architecture health score
363
367
  - Dead code detection
364
368
  - Temporal graph
@@ -370,7 +374,6 @@ Block PRs that hurt your architecture:
370
374
  - PR Impact GitHub Action
371
375
 
372
376
  **Coming next**
373
- - C# / .NET language support
374
377
  - AI-suggested refactors
375
378
  - VSCode extension
376
379
  - Natural language architecture queries
@@ -16,7 +16,7 @@ import {
16
16
  parseTypeScriptFile,
17
17
  scanSecurity,
18
18
  searchSymbols
19
- } from "./chunk-IYKS66CG.js";
19
+ } from "./chunk-LV32EDYQ.js";
20
20
 
21
21
  // src/viz/data.ts
22
22
  import { basename } from "path";
@@ -122,23 +122,26 @@ function watchProject(projectRoot, callbacks) {
122
122
  const watcher = chokidar.watch(projectRoot, watcherOptions);
123
123
  console.error("[Watcher] Attaching event listeners...");
124
124
  watcher.on("change", (absolutePath) => {
125
- const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj"];
125
+ const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java"];
126
126
  if (!validExtensions.some((ext) => absolutePath.endsWith(ext))) return;
127
+ const fileName = absolutePath.split("/").pop() || "";
128
+ if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts"].includes(fileName)) return;
127
129
  if (absolutePath.endsWith("_test.go")) return;
128
130
  const relativePath = absolutePath.replace(projectRoot + "/", "");
129
131
  console.error(`[Watcher] Change event: ${relativePath}`);
130
132
  callbacks.onFileChanged(relativePath);
131
133
  });
132
134
  watcher.on("add", (absolutePath) => {
133
- const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj"];
134
- if (!validExtensions.some((ext) => absolutePath.endsWith(ext))) return;
135
+ const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java"];
136
+ const addFileName = absolutePath.split("/").pop() || "";
137
+ if (!validExtensions.some((ext) => absolutePath.endsWith(ext)) && !["pom.xml", "build.gradle", "build.gradle.kts"].includes(addFileName)) return;
135
138
  if (absolutePath.endsWith("_test.go")) return;
136
139
  const relativePath = absolutePath.replace(projectRoot + "/", "");
137
140
  console.error(`[Watcher] Add event: ${relativePath}`);
138
141
  callbacks.onFileAdded(relativePath);
139
142
  });
140
143
  watcher.on("unlink", (absolutePath) => {
141
- const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj"];
144
+ const validExtensions = [".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs", ".py", ".go", ".rs", ".c", ".h", ".cs", ".csx", ".csproj", ".java"];
142
145
  if (!validExtensions.some((ext) => absolutePath.endsWith(ext))) return;
143
146
  if (absolutePath.endsWith("_test.go")) return;
144
147
  const relativePath = absolutePath.replace(projectRoot + "/", "");
@@ -156,10 +159,10 @@ function watchProject(projectRoot, callbacks) {
156
159
  for (const dir of dirs) {
157
160
  const files = watched[dir];
158
161
  fileCount += files.filter(
159
- (f) => f.endsWith(".ts") || f.endsWith(".tsx") || f.endsWith(".js") || f.endsWith(".jsx") || f.endsWith(".mjs") || f.endsWith(".cjs") || f.endsWith(".py") || f.endsWith(".go") && !f.endsWith("_test.go") || f.endsWith(".rs") || f.endsWith(".c") || f.endsWith(".h") || f.endsWith(".cs") || f.endsWith(".csx") || f.endsWith(".csproj")
162
+ (f) => f.endsWith(".ts") || f.endsWith(".tsx") || f.endsWith(".js") || f.endsWith(".jsx") || f.endsWith(".mjs") || f.endsWith(".cjs") || f.endsWith(".py") || f.endsWith(".go") && !f.endsWith("_test.go") || f.endsWith(".rs") || f.endsWith(".c") || f.endsWith(".h") || f.endsWith(".cs") || f.endsWith(".csx") || f.endsWith(".csproj") || f.endsWith(".java") || f === "pom.xml" || f === "build.gradle" || f === "build.gradle.kts"
160
163
  ).length;
161
164
  }
162
- console.error(`[Watcher] Watching ${fileCount} TypeScript/JavaScript/Python/Go/Rust/C/C# files in ${dirs.length} directories`);
165
+ console.error(`[Watcher] Watching ${fileCount} TypeScript/JavaScript/Python/Go/Rust/C/C#/Java files in ${dirs.length} directories`);
163
166
  });
164
167
  return watcher;
165
168
  }