codexia 0.2.0 → 0.3.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/CHANGELOG.md +55 -51
- package/README.md +67 -0
- package/dist/ai/config.d.ts +11 -0
- package/dist/ai/config.d.ts.map +1 -0
- package/dist/ai/config.js +51 -0
- package/dist/ai/config.js.map +1 -0
- package/dist/ai/explainer.d.ts +32 -0
- package/dist/ai/explainer.d.ts.map +1 -0
- package/dist/ai/explainer.js +118 -0
- package/dist/ai/explainer.js.map +1 -0
- package/dist/ai/index.d.ts +23 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +47 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/prompts/impact-explain.d.ts +6 -0
- package/dist/ai/prompts/impact-explain.d.ts.map +1 -0
- package/dist/ai/prompts/impact-explain.js +50 -0
- package/dist/ai/prompts/impact-explain.js.map +1 -0
- package/dist/ai/prompts/pr-describe.d.ts +13 -0
- package/dist/ai/prompts/pr-describe.d.ts.map +1 -0
- package/dist/ai/prompts/pr-describe.js +65 -0
- package/dist/ai/prompts/pr-describe.js.map +1 -0
- package/dist/ai/prompts/pr-review.d.ts +18 -0
- package/dist/ai/prompts/pr-review.d.ts.map +1 -0
- package/dist/ai/prompts/pr-review.js +61 -0
- package/dist/ai/prompts/pr-review.js.map +1 -0
- package/dist/ai/provider.d.ts +6 -0
- package/dist/ai/provider.d.ts.map +1 -0
- package/dist/ai/provider.js +19 -0
- package/dist/ai/provider.js.map +1 -0
- package/dist/ai/providers/anthropic.d.ts +14 -0
- package/dist/ai/providers/anthropic.d.ts.map +1 -0
- package/dist/ai/providers/anthropic.js +53 -0
- package/dist/ai/providers/anthropic.js.map +1 -0
- package/dist/ai/providers/ollama.d.ts +13 -0
- package/dist/ai/providers/ollama.d.ts.map +1 -0
- package/dist/ai/providers/ollama.js +64 -0
- package/dist/ai/providers/ollama.js.map +1 -0
- package/dist/ai/providers/openai.d.ts +14 -0
- package/dist/ai/providers/openai.d.ts.map +1 -0
- package/dist/ai/providers/openai.js +42 -0
- package/dist/ai/providers/openai.js.map +1 -0
- package/dist/ai/types.d.ts +29 -0
- package/dist/ai/types.d.ts.map +1 -0
- package/dist/ai/types.js +5 -0
- package/dist/ai/types.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +30 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/graph.js +1 -1
- package/dist/cli/commands/graph.js.map +1 -1
- package/dist/cli/commands/impact.d.ts.map +1 -1
- package/dist/cli/commands/impact.js +23 -0
- package/dist/cli/commands/impact.js.map +1 -1
- package/dist/cli/commands/pr-report.d.ts.map +1 -1
- package/dist/cli/commands/pr-report.js +49 -0
- package/dist/cli/commands/pr-report.js.map +1 -1
- package/dist/cli/engine.d.ts +65 -2
- package/dist/cli/engine.d.ts.map +1 -1
- package/dist/cli/engine.js +136 -2
- package/dist/cli/engine.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/interactive.js +1 -1
- package/dist/cli/interactive.js.map +1 -1
- package/dist/core/dependency-graph.d.ts +3 -1
- package/dist/core/dependency-graph.d.ts.map +1 -1
- package/dist/core/dependency-graph.js +20 -7
- package/dist/core/dependency-graph.js.map +1 -1
- package/dist/core/language-providers/index.d.ts +9 -0
- package/dist/core/language-providers/index.d.ts.map +1 -0
- package/dist/core/language-providers/index.js +12 -0
- package/dist/core/language-providers/index.js.map +1 -0
- package/dist/core/language-providers/providers/go.d.ts +20 -0
- package/dist/core/language-providers/providers/go.d.ts.map +1 -0
- package/dist/core/language-providers/providers/go.js +256 -0
- package/dist/core/language-providers/providers/go.js.map +1 -0
- package/dist/core/language-providers/providers/java.d.ts +20 -0
- package/dist/core/language-providers/providers/java.d.ts.map +1 -0
- package/dist/core/language-providers/providers/java.js +234 -0
- package/dist/core/language-providers/providers/java.js.map +1 -0
- package/dist/core/language-providers/providers/python.d.ts +20 -0
- package/dist/core/language-providers/providers/python.d.ts.map +1 -0
- package/dist/core/language-providers/providers/python.js +267 -0
- package/dist/core/language-providers/providers/python.js.map +1 -0
- package/dist/core/language-providers/providers/ruby.d.ts +20 -0
- package/dist/core/language-providers/providers/ruby.d.ts.map +1 -0
- package/dist/core/language-providers/providers/ruby.js +281 -0
- package/dist/core/language-providers/providers/ruby.js.map +1 -0
- package/dist/core/language-providers/providers/rust.d.ts +20 -0
- package/dist/core/language-providers/providers/rust.d.ts.map +1 -0
- package/dist/core/language-providers/providers/rust.js +384 -0
- package/dist/core/language-providers/providers/rust.js.map +1 -0
- package/dist/core/language-providers/providers/typescript.d.ts +20 -0
- package/dist/core/language-providers/providers/typescript.d.ts.map +1 -0
- package/dist/core/language-providers/providers/typescript.js +300 -0
- package/dist/core/language-providers/providers/typescript.js.map +1 -0
- package/dist/core/language-providers/registry.d.ts +59 -0
- package/dist/core/language-providers/registry.d.ts.map +1 -0
- package/dist/core/language-providers/registry.js +133 -0
- package/dist/core/language-providers/registry.js.map +1 -0
- package/dist/core/language-providers/types.d.ts +55 -0
- package/dist/core/language-providers/types.d.ts.map +1 -0
- package/dist/core/language-providers/types.js +29 -0
- package/dist/core/language-providers/types.js.map +1 -0
- package/dist/core/repo-indexer.d.ts +10 -4
- package/dist/core/repo-indexer.d.ts.map +1 -1
- package/dist/core/repo-indexer.js +24 -26
- package/dist/core/repo-indexer.js.map +1 -1
- package/dist/dashboard/client/src/App.d.ts +3 -0
- package/dist/dashboard/client/src/App.d.ts.map +1 -0
- package/dist/dashboard/client/src/App.js +127 -0
- package/dist/dashboard/client/src/App.js.map +1 -0
- package/dist/dashboard/client/src/api.d.ts +9 -0
- package/dist/dashboard/client/src/api.d.ts.map +1 -0
- package/dist/dashboard/client/src/api.js +30 -0
- package/dist/dashboard/client/src/api.js.map +1 -0
- package/dist/dashboard/client/src/components/ActivityChart.d.ts +7 -0
- package/dist/dashboard/client/src/components/ActivityChart.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/ActivityChart.js +76 -0
- package/dist/dashboard/client/src/components/ActivityChart.js.map +1 -0
- package/dist/dashboard/client/src/components/Card.d.ts +21 -0
- package/dist/dashboard/client/src/components/Card.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/Card.js +35 -0
- package/dist/dashboard/client/src/components/Card.js.map +1 -0
- package/dist/dashboard/client/src/components/ComplexityHeatmap.d.ts +7 -0
- package/dist/dashboard/client/src/components/ComplexityHeatmap.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/ComplexityHeatmap.js +55 -0
- package/dist/dashboard/client/src/components/ComplexityHeatmap.js.map +1 -0
- package/dist/dashboard/client/src/components/ErrorDisplay.d.ts +7 -0
- package/dist/dashboard/client/src/components/ErrorDisplay.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/ErrorDisplay.js +14 -0
- package/dist/dashboard/client/src/components/ErrorDisplay.js.map +1 -0
- package/dist/dashboard/client/src/components/HealthScore.d.ts +7 -0
- package/dist/dashboard/client/src/components/HealthScore.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/HealthScore.js +66 -0
- package/dist/dashboard/client/src/components/HealthScore.js.map +1 -0
- package/dist/dashboard/client/src/components/HotPathsList.d.ts +8 -0
- package/dist/dashboard/client/src/components/HotPathsList.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/HotPathsList.js +59 -0
- package/dist/dashboard/client/src/components/HotPathsList.js.map +1 -0
- package/dist/dashboard/client/src/components/LanguageBreakdown.d.ts +6 -0
- package/dist/dashboard/client/src/components/LanguageBreakdown.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/LanguageBreakdown.js +49 -0
- package/dist/dashboard/client/src/components/LanguageBreakdown.js.map +1 -0
- package/dist/dashboard/client/src/components/Loading.d.ts +4 -0
- package/dist/dashboard/client/src/components/Loading.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/Loading.js +25 -0
- package/dist/dashboard/client/src/components/Loading.js.map +1 -0
- package/dist/dashboard/client/src/components/SignalsList.d.ts +8 -0
- package/dist/dashboard/client/src/components/SignalsList.d.ts.map +1 -0
- package/dist/dashboard/client/src/components/SignalsList.js +70 -0
- package/dist/dashboard/client/src/components/SignalsList.js.map +1 -0
- package/dist/dashboard/client/src/hooks/useApi.d.ts +9 -0
- package/dist/dashboard/client/src/hooks/useApi.d.ts.map +1 -0
- package/dist/dashboard/client/src/hooks/useApi.js +19 -0
- package/dist/dashboard/client/src/hooks/useApi.js.map +1 -0
- package/dist/dashboard/client/src/main.d.ts +2 -0
- package/dist/dashboard/client/src/main.d.ts.map +1 -0
- package/dist/dashboard/client/src/main.js +8 -0
- package/dist/dashboard/client/src/main.js.map +1 -0
- package/dist/dashboard/client/src/types.d.ts +85 -0
- package/dist/dashboard/client/src/types.d.ts.map +1 -0
- package/dist/dashboard/client/src/types.js +2 -0
- package/dist/dashboard/client/src/types.js.map +1 -0
- package/dist/dashboard/client/vite.config.d.ts +3 -0
- package/dist/dashboard/client/vite.config.d.ts.map +1 -0
- package/dist/dashboard/client/vite.config.js +24 -0
- package/dist/dashboard/client/vite.config.js.map +1 -0
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +2 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server/index.d.ts +108 -0
- package/dist/dashboard/server/index.d.ts.map +1 -0
- package/dist/dashboard/server/index.js +740 -0
- package/dist/dashboard/server/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/modules/complexity-engine.d.ts +1 -0
- package/dist/modules/complexity-engine.d.ts.map +1 -1
- package/dist/modules/complexity-engine.js +26 -18
- package/dist/modules/complexity-engine.js.map +1 -1
- package/dist/modules/graph-utils.d.ts +7 -2
- package/dist/modules/graph-utils.d.ts.map +1 -1
- package/dist/modules/graph-utils.js +17 -11
- package/dist/modules/graph-utils.js.map +1 -1
- package/package.json +9 -4
- package/src/dashboard/dist/assets/index-DwKWIJD-.css +1 -0
- package/src/dashboard/dist/assets/index-jqRzjhTn.js +226 -0
- package/src/dashboard/dist/codexia-icon.svg +10 -0
- package/src/dashboard/dist/index.html +17 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { BaseLanguageProvider } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Java language provider
|
|
4
|
+
*/
|
|
5
|
+
export class JavaProvider extends BaseLanguageProvider {
|
|
6
|
+
id = 'java';
|
|
7
|
+
name = 'Java';
|
|
8
|
+
extensions = ['.java'];
|
|
9
|
+
filePatterns = ['**/*.java'];
|
|
10
|
+
getLanguageName(_ext) {
|
|
11
|
+
return 'java';
|
|
12
|
+
}
|
|
13
|
+
extractImports(content, _filePath) {
|
|
14
|
+
const imports = [];
|
|
15
|
+
const lines = content.split('\n');
|
|
16
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
17
|
+
const line = lines[lineNum].trim();
|
|
18
|
+
// import package.Class;
|
|
19
|
+
const importMatch = /^import\s+(?:static\s+)?([\w.]+(?:\.\*)?);/.exec(line);
|
|
20
|
+
if (importMatch) {
|
|
21
|
+
const source = importMatch[1];
|
|
22
|
+
const isWildcard = source.endsWith('.*');
|
|
23
|
+
const className = isWildcard ? '*' : source.split('.').pop() || source;
|
|
24
|
+
imports.push({
|
|
25
|
+
source: source.replace(/\.\*$/, ''),
|
|
26
|
+
specifiers: [className],
|
|
27
|
+
isDefault: false,
|
|
28
|
+
isNamespace: isWildcard,
|
|
29
|
+
line: lineNum + 1,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return imports;
|
|
34
|
+
}
|
|
35
|
+
extractExports(content, _filePath) {
|
|
36
|
+
const exports = [];
|
|
37
|
+
const lines = content.split('\n');
|
|
38
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
39
|
+
const line = lines[lineNum].trim();
|
|
40
|
+
// public class ClassName
|
|
41
|
+
const classMatch = /^(?:public\s+)?(?:abstract\s+|final\s+)?class\s+(\w+)/.exec(line);
|
|
42
|
+
if (classMatch) {
|
|
43
|
+
exports.push({
|
|
44
|
+
name: classMatch[1],
|
|
45
|
+
kind: 'class',
|
|
46
|
+
isDefault: line.includes('public'),
|
|
47
|
+
line: lineNum + 1,
|
|
48
|
+
});
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
// public interface InterfaceName
|
|
52
|
+
const interfaceMatch = /^(?:public\s+)?interface\s+(\w+)/.exec(line);
|
|
53
|
+
if (interfaceMatch) {
|
|
54
|
+
exports.push({
|
|
55
|
+
name: interfaceMatch[1],
|
|
56
|
+
kind: 'interface',
|
|
57
|
+
isDefault: line.includes('public'),
|
|
58
|
+
line: lineNum + 1,
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// public enum EnumName
|
|
63
|
+
const enumMatch = /^(?:public\s+)?enum\s+(\w+)/.exec(line);
|
|
64
|
+
if (enumMatch) {
|
|
65
|
+
exports.push({
|
|
66
|
+
name: enumMatch[1],
|
|
67
|
+
kind: 'enum',
|
|
68
|
+
isDefault: line.includes('public'),
|
|
69
|
+
line: lineNum + 1,
|
|
70
|
+
});
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
// @interface AnnotationName
|
|
74
|
+
const annotationMatch = /^(?:public\s+)?@interface\s+(\w+)/.exec(line);
|
|
75
|
+
if (annotationMatch) {
|
|
76
|
+
exports.push({
|
|
77
|
+
name: annotationMatch[1],
|
|
78
|
+
kind: 'interface',
|
|
79
|
+
isDefault: line.includes('public'),
|
|
80
|
+
line: lineNum + 1,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return exports;
|
|
85
|
+
}
|
|
86
|
+
extractSymbols(content, filePath) {
|
|
87
|
+
const symbols = [];
|
|
88
|
+
const lines = content.split('\n');
|
|
89
|
+
let currentClass = null;
|
|
90
|
+
let braceDepth = 0;
|
|
91
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
92
|
+
const line = lines[lineNum];
|
|
93
|
+
const trimmed = line.trim();
|
|
94
|
+
// Track brace depth
|
|
95
|
+
braceDepth += (line.match(/\{/g) || []).length;
|
|
96
|
+
braceDepth -= (line.match(/\}/g) || []).length;
|
|
97
|
+
// class ClassName
|
|
98
|
+
const classMatch = /^(?:public\s+|private\s+|protected\s+)?(?:abstract\s+|final\s+|static\s+)*class\s+(\w+)/.exec(trimmed);
|
|
99
|
+
if (classMatch) {
|
|
100
|
+
currentClass = classMatch[1];
|
|
101
|
+
symbols.push({
|
|
102
|
+
name: classMatch[1],
|
|
103
|
+
kind: 'class',
|
|
104
|
+
filePath,
|
|
105
|
+
line: lineNum + 1,
|
|
106
|
+
column: 0,
|
|
107
|
+
exported: trimmed.includes('public'),
|
|
108
|
+
references: [],
|
|
109
|
+
});
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
// interface InterfaceName
|
|
113
|
+
const interfaceMatch = /^(?:public\s+|private\s+|protected\s+)?interface\s+(\w+)/.exec(trimmed);
|
|
114
|
+
if (interfaceMatch) {
|
|
115
|
+
symbols.push({
|
|
116
|
+
name: interfaceMatch[1],
|
|
117
|
+
kind: 'interface',
|
|
118
|
+
filePath,
|
|
119
|
+
line: lineNum + 1,
|
|
120
|
+
column: 0,
|
|
121
|
+
exported: trimmed.includes('public'),
|
|
122
|
+
references: [],
|
|
123
|
+
});
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
// enum EnumName
|
|
127
|
+
const enumMatch = /^(?:public\s+|private\s+|protected\s+)?enum\s+(\w+)/.exec(trimmed);
|
|
128
|
+
if (enumMatch) {
|
|
129
|
+
symbols.push({
|
|
130
|
+
name: enumMatch[1],
|
|
131
|
+
kind: 'enum',
|
|
132
|
+
filePath,
|
|
133
|
+
line: lineNum + 1,
|
|
134
|
+
column: 0,
|
|
135
|
+
exported: trimmed.includes('public'),
|
|
136
|
+
references: [],
|
|
137
|
+
});
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
// Method: public ReturnType methodName(params)
|
|
141
|
+
const methodMatch = /^(?:public\s+|private\s+|protected\s+)?(?:static\s+|final\s+|abstract\s+|synchronized\s+)*(?:<[^>]+>\s+)?(\w+(?:<[^>]+>)?(?:\[\])?)\s+(\w+)\s*\([^)]*\)/.exec(trimmed);
|
|
142
|
+
if (methodMatch && braceDepth > 0) {
|
|
143
|
+
// Skip constructors (name matches class name)
|
|
144
|
+
if (methodMatch[2] !== currentClass) {
|
|
145
|
+
symbols.push({
|
|
146
|
+
name: methodMatch[2],
|
|
147
|
+
kind: 'method',
|
|
148
|
+
filePath,
|
|
149
|
+
line: lineNum + 1,
|
|
150
|
+
column: 0,
|
|
151
|
+
exported: trimmed.includes('public'),
|
|
152
|
+
references: [],
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
// Field: private Type fieldName
|
|
158
|
+
const fieldMatch = /^(?:public\s+|private\s+|protected\s+)?(?:static\s+|final\s+)*(\w+(?:<[^>]+>)?(?:\[\])?)\s+(\w+)\s*[;=]/.exec(trimmed);
|
|
159
|
+
if (fieldMatch && braceDepth > 0 && !trimmed.includes('(')) {
|
|
160
|
+
symbols.push({
|
|
161
|
+
name: fieldMatch[2],
|
|
162
|
+
kind: 'property',
|
|
163
|
+
filePath,
|
|
164
|
+
line: lineNum + 1,
|
|
165
|
+
column: 0,
|
|
166
|
+
exported: trimmed.includes('public'),
|
|
167
|
+
references: [],
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return symbols;
|
|
172
|
+
}
|
|
173
|
+
resolveImportPath(_fromPath, importSource, existingFiles) {
|
|
174
|
+
// Convert package name to path
|
|
175
|
+
const packagePath = importSource.replace(/\./g, '/');
|
|
176
|
+
// Try src/main/java (Maven/Gradle convention)
|
|
177
|
+
const mavenPath = `src/main/java/${packagePath}.java`;
|
|
178
|
+
if (existingFiles.has(mavenPath)) {
|
|
179
|
+
return mavenPath;
|
|
180
|
+
}
|
|
181
|
+
// Try src/
|
|
182
|
+
const srcPath = `src/${packagePath}.java`;
|
|
183
|
+
if (existingFiles.has(srcPath)) {
|
|
184
|
+
return srcPath;
|
|
185
|
+
}
|
|
186
|
+
// Try direct path
|
|
187
|
+
if (existingFiles.has(`${packagePath}.java`)) {
|
|
188
|
+
return `${packagePath}.java`;
|
|
189
|
+
}
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
getControlFlowPatterns() {
|
|
193
|
+
return [
|
|
194
|
+
/\bif\s*\(/g,
|
|
195
|
+
/\belse\s+if\s*\(/g,
|
|
196
|
+
/\belse\b/g,
|
|
197
|
+
/\bfor\s*\(/g,
|
|
198
|
+
/\bwhile\s*\(/g,
|
|
199
|
+
/\bdo\s*\{/g,
|
|
200
|
+
/\bswitch\s*\(/g,
|
|
201
|
+
/\bcase\s+/g,
|
|
202
|
+
/\bcatch\s*\(/g,
|
|
203
|
+
/\bfinally\b/g,
|
|
204
|
+
/\?[^:]/g, // Ternary
|
|
205
|
+
/&&/g,
|
|
206
|
+
/\|\|/g,
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
getCommentPatterns() {
|
|
210
|
+
return {
|
|
211
|
+
singleLine: /\/\//,
|
|
212
|
+
blockStart: /\/\*/,
|
|
213
|
+
blockEnd: /\*\//,
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
getEntryPointPatterns() {
|
|
217
|
+
return [
|
|
218
|
+
/public\s+static\s+void\s+main\s*\(/,
|
|
219
|
+
/@GetMapping/,
|
|
220
|
+
/@PostMapping/,
|
|
221
|
+
/@PutMapping/,
|
|
222
|
+
/@DeleteMapping/,
|
|
223
|
+
/@PatchMapping/,
|
|
224
|
+
/@RequestMapping/,
|
|
225
|
+
/@RestController/,
|
|
226
|
+
/@Controller/,
|
|
227
|
+
/@SpringBootApplication/,
|
|
228
|
+
/extends\s+HttpServlet/,
|
|
229
|
+
/doGet\s*\(/,
|
|
230
|
+
/doPost\s*\(/,
|
|
231
|
+
];
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
//# sourceMappingURL=java.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.js","sourceRoot":"","sources":["../../../../src/core/language-providers/providers/java.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Symbol, ImportInfo, ExportInfo } from '../../types.js';
|
|
2
|
+
import { BaseLanguageProvider, type CommentPatterns } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Python language provider
|
|
5
|
+
*/
|
|
6
|
+
export declare class PythonProvider extends BaseLanguageProvider {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
extensions: string[];
|
|
10
|
+
filePatterns: string[];
|
|
11
|
+
getLanguageName(_ext: string): string;
|
|
12
|
+
extractImports(content: string, _filePath: string): ImportInfo[];
|
|
13
|
+
extractExports(content: string, _filePath: string): ExportInfo[];
|
|
14
|
+
extractSymbols(content: string, filePath: string): Symbol[];
|
|
15
|
+
resolveImportPath(fromPath: string, importSource: string, existingFiles: Set<string>): string | null;
|
|
16
|
+
getControlFlowPatterns(): RegExp[];
|
|
17
|
+
getCommentPatterns(): CommentPatterns;
|
|
18
|
+
getEntryPointPatterns(): RegExp[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=python.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../../../src/core/language-providers/providers/python.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzE;;GAEG;AACH,qBAAa,cAAe,SAAQ,oBAAoB;IACtD,EAAE,SAAY;IACd,IAAI,SAAY;IAChB,UAAU,WAA2B;IACrC,YAAY,WAAuC;IAEnD,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IA2EhE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAuEhE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAiE3D,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,MAAM,GAAG,IAAI;IAuChB,sBAAsB,IAAI,MAAM,EAAE;IAkBlC,kBAAkB,IAAI,eAAe;IAQrC,qBAAqB,IAAI,MAAM,EAAE;CAalC"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import * as path from 'node:path';
|
|
2
|
+
import { BaseLanguageProvider } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Python language provider
|
|
5
|
+
*/
|
|
6
|
+
export class PythonProvider extends BaseLanguageProvider {
|
|
7
|
+
id = 'python';
|
|
8
|
+
name = 'Python';
|
|
9
|
+
extensions = ['.py', '.pyi', '.pyw'];
|
|
10
|
+
filePatterns = ['**/*.py', '**/*.pyi', '**/*.pyw'];
|
|
11
|
+
getLanguageName(_ext) {
|
|
12
|
+
return 'python';
|
|
13
|
+
}
|
|
14
|
+
extractImports(content, _filePath) {
|
|
15
|
+
const imports = [];
|
|
16
|
+
const lines = content.split('\n');
|
|
17
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
18
|
+
const line = lines[lineNum].trim();
|
|
19
|
+
// from module import x, y, z
|
|
20
|
+
const fromMatch = /^from\s+([\w.]+)\s+import\s+(.+)$/.exec(line);
|
|
21
|
+
if (fromMatch) {
|
|
22
|
+
const source = fromMatch[1];
|
|
23
|
+
const importPart = fromMatch[2];
|
|
24
|
+
// Handle parenthesized imports
|
|
25
|
+
let specifiersStr = importPart;
|
|
26
|
+
if (importPart.startsWith('(')) {
|
|
27
|
+
// Multi-line import - collect until closing paren
|
|
28
|
+
let fullImport = importPart;
|
|
29
|
+
let nextLine = lineNum + 1;
|
|
30
|
+
while (!fullImport.includes(')') && nextLine < lines.length) {
|
|
31
|
+
fullImport += ' ' + lines[nextLine].trim();
|
|
32
|
+
nextLine++;
|
|
33
|
+
}
|
|
34
|
+
specifiersStr = fullImport.replace(/[()]/g, '');
|
|
35
|
+
}
|
|
36
|
+
const specifiers = specifiersStr
|
|
37
|
+
.split(',')
|
|
38
|
+
.map(s => s.trim().split(/\s+as\s+/)[0].trim())
|
|
39
|
+
.filter(s => s.length > 0 && s !== '*');
|
|
40
|
+
imports.push({
|
|
41
|
+
source,
|
|
42
|
+
specifiers,
|
|
43
|
+
isDefault: false,
|
|
44
|
+
isNamespace: importPart.trim() === '*',
|
|
45
|
+
line: lineNum + 1,
|
|
46
|
+
});
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
// import module
|
|
50
|
+
const importMatch = /^import\s+([\w.]+)(?:\s+as\s+\w+)?$/.exec(line);
|
|
51
|
+
if (importMatch) {
|
|
52
|
+
imports.push({
|
|
53
|
+
source: importMatch[1],
|
|
54
|
+
specifiers: [importMatch[1].split('.').pop() || importMatch[1]],
|
|
55
|
+
isDefault: true,
|
|
56
|
+
isNamespace: false,
|
|
57
|
+
line: lineNum + 1,
|
|
58
|
+
});
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
// import module1, module2
|
|
62
|
+
const multiImportMatch = /^import\s+(.+)$/.exec(line);
|
|
63
|
+
if (multiImportMatch && !line.includes('from')) {
|
|
64
|
+
const modules = multiImportMatch[1].split(',').map(m => m.trim().split(/\s+as\s+/)[0].trim());
|
|
65
|
+
for (const mod of modules) {
|
|
66
|
+
if (mod.length > 0) {
|
|
67
|
+
imports.push({
|
|
68
|
+
source: mod,
|
|
69
|
+
specifiers: [mod.split('.').pop() || mod],
|
|
70
|
+
isDefault: true,
|
|
71
|
+
isNamespace: false,
|
|
72
|
+
line: lineNum + 1,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return imports;
|
|
79
|
+
}
|
|
80
|
+
extractExports(content, _filePath) {
|
|
81
|
+
const exports = [];
|
|
82
|
+
const lines = content.split('\n');
|
|
83
|
+
// In Python, all module-level definitions are effectively exports
|
|
84
|
+
// __all__ defines explicit exports
|
|
85
|
+
let allExports = null;
|
|
86
|
+
// Check for __all__
|
|
87
|
+
const allMatch = /__all__\s*=\s*\[([^\]]+)\]/.exec(content);
|
|
88
|
+
if (allMatch) {
|
|
89
|
+
allExports = allMatch[1]
|
|
90
|
+
.split(',')
|
|
91
|
+
.map(s => s.trim().replace(/['"]/g, ''))
|
|
92
|
+
.filter(s => s.length > 0);
|
|
93
|
+
}
|
|
94
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
95
|
+
const line = lines[lineNum];
|
|
96
|
+
const trimmed = line.trim();
|
|
97
|
+
// Skip if indented (method/nested function)
|
|
98
|
+
if (line.length > 0 && line[0] === ' ' || line[0] === '\t') {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
// class ClassName
|
|
102
|
+
const classMatch = /^class\s+(\w+)/.exec(trimmed);
|
|
103
|
+
if (classMatch) {
|
|
104
|
+
const name = classMatch[1];
|
|
105
|
+
if (!name.startsWith('_') || (allExports && allExports.includes(name))) {
|
|
106
|
+
exports.push({
|
|
107
|
+
name,
|
|
108
|
+
kind: 'class',
|
|
109
|
+
isDefault: false,
|
|
110
|
+
line: lineNum + 1,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
// def function_name
|
|
116
|
+
const funcMatch = /^(?:async\s+)?def\s+(\w+)/.exec(trimmed);
|
|
117
|
+
if (funcMatch) {
|
|
118
|
+
const name = funcMatch[1];
|
|
119
|
+
if (!name.startsWith('_') || (allExports && allExports.includes(name))) {
|
|
120
|
+
exports.push({
|
|
121
|
+
name,
|
|
122
|
+
kind: 'function',
|
|
123
|
+
isDefault: false,
|
|
124
|
+
line: lineNum + 1,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
// CONSTANT = value (uppercase names are typically constants)
|
|
130
|
+
const constMatch = /^([A-Z][A-Z0-9_]*)\s*=/.exec(trimmed);
|
|
131
|
+
if (constMatch) {
|
|
132
|
+
exports.push({
|
|
133
|
+
name: constMatch[1],
|
|
134
|
+
kind: 'variable',
|
|
135
|
+
isDefault: false,
|
|
136
|
+
line: lineNum + 1,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return exports;
|
|
141
|
+
}
|
|
142
|
+
extractSymbols(content, filePath) {
|
|
143
|
+
const symbols = [];
|
|
144
|
+
const lines = content.split('\n');
|
|
145
|
+
for (let lineNum = 0; lineNum < lines.length; lineNum++) {
|
|
146
|
+
const line = lines[lineNum];
|
|
147
|
+
const trimmed = line.trim();
|
|
148
|
+
if (trimmed.length === 0 || trimmed.startsWith('#')) {
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
const indent = line.length - line.trimStart().length;
|
|
152
|
+
// class ClassName
|
|
153
|
+
const classMatch = /^class\s+(\w+)/.exec(trimmed);
|
|
154
|
+
if (classMatch) {
|
|
155
|
+
symbols.push({
|
|
156
|
+
name: classMatch[1],
|
|
157
|
+
kind: 'class',
|
|
158
|
+
filePath,
|
|
159
|
+
line: lineNum + 1,
|
|
160
|
+
column: indent,
|
|
161
|
+
exported: !classMatch[1].startsWith('_'),
|
|
162
|
+
references: [],
|
|
163
|
+
});
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
// def function_name (top-level or method)
|
|
167
|
+
const funcMatch = /^(?:async\s+)?def\s+(\w+)/.exec(trimmed);
|
|
168
|
+
if (funcMatch) {
|
|
169
|
+
const isMethod = indent > 0;
|
|
170
|
+
symbols.push({
|
|
171
|
+
name: funcMatch[1],
|
|
172
|
+
kind: isMethod ? 'method' : 'function',
|
|
173
|
+
filePath,
|
|
174
|
+
line: lineNum + 1,
|
|
175
|
+
column: indent,
|
|
176
|
+
exported: !funcMatch[1].startsWith('_'),
|
|
177
|
+
references: [],
|
|
178
|
+
});
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
// Top-level variable assignment
|
|
182
|
+
if (indent === 0) {
|
|
183
|
+
const varMatch = /^(\w+)\s*=/.exec(trimmed);
|
|
184
|
+
if (varMatch && !trimmed.includes('(') && !varMatch[1].startsWith('_')) {
|
|
185
|
+
symbols.push({
|
|
186
|
+
name: varMatch[1],
|
|
187
|
+
kind: 'variable',
|
|
188
|
+
filePath,
|
|
189
|
+
line: lineNum + 1,
|
|
190
|
+
column: 0,
|
|
191
|
+
exported: true,
|
|
192
|
+
references: [],
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return symbols;
|
|
198
|
+
}
|
|
199
|
+
resolveImportPath(fromPath, importSource, existingFiles) {
|
|
200
|
+
// Handle relative imports (e.g., .module, ..module)
|
|
201
|
+
if (importSource.startsWith('.')) {
|
|
202
|
+
const dir = path.dirname(fromPath);
|
|
203
|
+
const levels = importSource.match(/^\.+/)?.[0].length || 1;
|
|
204
|
+
let basePath = dir;
|
|
205
|
+
for (let i = 1; i < levels; i++) {
|
|
206
|
+
basePath = path.dirname(basePath);
|
|
207
|
+
}
|
|
208
|
+
const modulePath = importSource.replace(/^\.+/, '').replace(/\./g, '/');
|
|
209
|
+
const resolved = path.join(basePath, modulePath).replace(/\\/g, '/');
|
|
210
|
+
// Try as file
|
|
211
|
+
if (existingFiles.has(resolved + '.py')) {
|
|
212
|
+
return resolved + '.py';
|
|
213
|
+
}
|
|
214
|
+
// Try as package
|
|
215
|
+
if (existingFiles.has(path.join(resolved, '__init__.py').replace(/\\/g, '/'))) {
|
|
216
|
+
return path.join(resolved, '__init__.py').replace(/\\/g, '/');
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// For absolute imports, try to find in the project
|
|
220
|
+
const modulePath = importSource.replace(/\./g, '/');
|
|
221
|
+
if (existingFiles.has(modulePath + '.py')) {
|
|
222
|
+
return modulePath + '.py';
|
|
223
|
+
}
|
|
224
|
+
if (existingFiles.has(path.join(modulePath, '__init__.py').replace(/\\/g, '/'))) {
|
|
225
|
+
return path.join(modulePath, '__init__.py').replace(/\\/g, '/');
|
|
226
|
+
}
|
|
227
|
+
return null;
|
|
228
|
+
}
|
|
229
|
+
getControlFlowPatterns() {
|
|
230
|
+
return [
|
|
231
|
+
/\bif\s+/g,
|
|
232
|
+
/\belif\s+/g,
|
|
233
|
+
/\belse\s*:/g,
|
|
234
|
+
/\bfor\s+/g,
|
|
235
|
+
/\bwhile\s+/g,
|
|
236
|
+
/\btry\s*:/g,
|
|
237
|
+
/\bexcept\s*/g,
|
|
238
|
+
/\bfinally\s*:/g,
|
|
239
|
+
/\bwith\s+/g,
|
|
240
|
+
/\band\b/g,
|
|
241
|
+
/\bor\b/g,
|
|
242
|
+
/\bif\s+.+\s+else\s+/g, // Ternary expression
|
|
243
|
+
/\bfor\s+.+\s+in\s+/g, // List comprehension
|
|
244
|
+
];
|
|
245
|
+
}
|
|
246
|
+
getCommentPatterns() {
|
|
247
|
+
return {
|
|
248
|
+
singleLine: /#/,
|
|
249
|
+
blockStart: /'''/,
|
|
250
|
+
blockEnd: /'''/,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
getEntryPointPatterns() {
|
|
254
|
+
return [
|
|
255
|
+
/@app\.route\s*\(/,
|
|
256
|
+
/@router\./,
|
|
257
|
+
/@api_view\s*\(/,
|
|
258
|
+
/def\s+\w+_view\s*\(/,
|
|
259
|
+
/class\s+\w+View\s*\(/,
|
|
260
|
+
/class\s+\w+APIView\s*\(/,
|
|
261
|
+
/if\s+__name__\s*==\s*['"]__main__['"]/,
|
|
262
|
+
/@click\.command/,
|
|
263
|
+
/def\s+main\s*\(/,
|
|
264
|
+
];
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../../../src/core/language-providers/providers/python.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Symbol, ImportInfo, ExportInfo } from '../../types.js';
|
|
2
|
+
import { BaseLanguageProvider, type CommentPatterns } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Ruby language provider
|
|
5
|
+
*/
|
|
6
|
+
export declare class RubyProvider extends BaseLanguageProvider {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
extensions: string[];
|
|
10
|
+
filePatterns: string[];
|
|
11
|
+
getLanguageName(_ext: string): string;
|
|
12
|
+
extractImports(content: string, _filePath: string): ImportInfo[];
|
|
13
|
+
extractExports(content: string, _filePath: string): ExportInfo[];
|
|
14
|
+
extractSymbols(content: string, filePath: string): Symbol[];
|
|
15
|
+
resolveImportPath(fromPath: string, importSource: string, existingFiles: Set<string>): string | null;
|
|
16
|
+
getControlFlowPatterns(): RegExp[];
|
|
17
|
+
getCommentPatterns(): CommentPatterns;
|
|
18
|
+
getEntryPointPatterns(): RegExp[];
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ruby.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruby.d.ts","sourceRoot":"","sources":["../../../../src/core/language-providers/providers/ruby.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEzE;;GAEG;AACH,qBAAa,YAAa,SAAQ,oBAAoB;IACpD,EAAE,SAAU;IACZ,IAAI,SAAU;IACd,UAAU,WAAgC;IAC1C,YAAY,WAAyE;IAErF,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAIrC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IA2EhE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IA+DhE,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IA2F3D,iBAAiB,CACf,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,MAAM,GAAG,IAAI;IAwBhB,sBAAsB,IAAI,MAAM,EAAE;IAsBlC,kBAAkB,IAAI,eAAe;IAQrC,qBAAqB,IAAI,MAAM,EAAE;CAelC"}
|