@skillsmith/core 0.2.0 → 2.0.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/README.md +233 -2
- package/dist/.tsbuildinfo +1 -1
- package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
- package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/incremental.test.js +515 -0
- package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
- package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/integration.test.js +1059 -0
- package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
- package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/metrics.test.js +369 -0
- package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
- package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
- package/dist/src/analysis/__tests__/performance.test.js +402 -0
- package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
- package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
- package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
- package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
- package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
- package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
- package/dist/src/analysis/adapters/base.d.ts +83 -0
- package/dist/src/analysis/adapters/base.d.ts.map +1 -0
- package/dist/src/analysis/adapters/base.js +40 -0
- package/dist/src/analysis/adapters/base.js.map +1 -0
- package/dist/src/analysis/adapters/factory.d.ts +150 -0
- package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
- package/dist/src/analysis/adapters/factory.js +244 -0
- package/dist/src/analysis/adapters/factory.js.map +1 -0
- package/dist/src/analysis/adapters/go.d.ts +131 -0
- package/dist/src/analysis/adapters/go.d.ts.map +1 -0
- package/dist/src/analysis/adapters/go.js +414 -0
- package/dist/src/analysis/adapters/go.js.map +1 -0
- package/dist/src/analysis/adapters/index.d.ts +20 -0
- package/dist/src/analysis/adapters/index.d.ts.map +1 -0
- package/dist/src/analysis/adapters/index.js +23 -0
- package/dist/src/analysis/adapters/index.js.map +1 -0
- package/dist/src/analysis/adapters/java.d.ts +154 -0
- package/dist/src/analysis/adapters/java.d.ts.map +1 -0
- package/dist/src/analysis/adapters/java.js +407 -0
- package/dist/src/analysis/adapters/java.js.map +1 -0
- package/dist/src/analysis/adapters/python.d.ts +165 -0
- package/dist/src/analysis/adapters/python.d.ts.map +1 -0
- package/dist/src/analysis/adapters/python.js +475 -0
- package/dist/src/analysis/adapters/python.js.map +1 -0
- package/dist/src/analysis/adapters/rust.d.ts +116 -0
- package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
- package/dist/src/analysis/adapters/rust.js +476 -0
- package/dist/src/analysis/adapters/rust.js.map +1 -0
- package/dist/src/analysis/adapters/typescript.d.ts +68 -0
- package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
- package/dist/src/analysis/adapters/typescript.js +79 -0
- package/dist/src/analysis/adapters/typescript.js.map +1 -0
- package/dist/src/analysis/aggregator.d.ts +193 -0
- package/dist/src/analysis/aggregator.d.ts.map +1 -0
- package/dist/src/analysis/aggregator.js +283 -0
- package/dist/src/analysis/aggregator.js.map +1 -0
- package/dist/src/analysis/cache.d.ts +180 -0
- package/dist/src/analysis/cache.d.ts.map +1 -0
- package/dist/src/analysis/cache.js +279 -0
- package/dist/src/analysis/cache.js.map +1 -0
- package/dist/src/analysis/file-streamer.d.ts +136 -0
- package/dist/src/analysis/file-streamer.d.ts.map +1 -0
- package/dist/src/analysis/file-streamer.js +291 -0
- package/dist/src/analysis/file-streamer.js.map +1 -0
- package/dist/src/analysis/incremental-parser.d.ts +186 -0
- package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
- package/dist/src/analysis/incremental-parser.js +291 -0
- package/dist/src/analysis/incremental-parser.js.map +1 -0
- package/dist/src/analysis/incremental.d.ts +186 -0
- package/dist/src/analysis/incremental.d.ts.map +1 -0
- package/dist/src/analysis/incremental.js +247 -0
- package/dist/src/analysis/incremental.js.map +1 -0
- package/dist/src/analysis/index.d.ts +25 -3
- package/dist/src/analysis/index.d.ts.map +1 -1
- package/dist/src/analysis/index.js +45 -3
- package/dist/src/analysis/index.js.map +1 -1
- package/dist/src/analysis/language-detector.d.ts +92 -0
- package/dist/src/analysis/language-detector.d.ts.map +1 -0
- package/dist/src/analysis/language-detector.js +602 -0
- package/dist/src/analysis/language-detector.js.map +1 -0
- package/dist/src/analysis/memory-monitor.d.ts +199 -0
- package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
- package/dist/src/analysis/memory-monitor.js +271 -0
- package/dist/src/analysis/memory-monitor.js.map +1 -0
- package/dist/src/analysis/metrics.d.ts +300 -0
- package/dist/src/analysis/metrics.d.ts.map +1 -0
- package/dist/src/analysis/metrics.js +537 -0
- package/dist/src/analysis/metrics.js.map +1 -0
- package/dist/src/analysis/router.d.ts +264 -0
- package/dist/src/analysis/router.d.ts.map +1 -0
- package/dist/src/analysis/router.js +398 -0
- package/dist/src/analysis/router.js.map +1 -0
- package/dist/src/analysis/tree-cache.d.ts +208 -0
- package/dist/src/analysis/tree-cache.d.ts.map +1 -0
- package/dist/src/analysis/tree-cache.js +288 -0
- package/dist/src/analysis/tree-cache.js.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
- package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
- package/dist/src/analysis/tree-sitter/manager.js +239 -0
- package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
- package/dist/src/analysis/types.d.ts +69 -6
- package/dist/src/analysis/types.d.ts.map +1 -1
- package/dist/src/analysis/types.js +23 -2
- package/dist/src/analysis/types.js.map +1 -1
- package/dist/src/analysis/worker-pool.d.ts +141 -0
- package/dist/src/analysis/worker-pool.d.ts.map +1 -0
- package/dist/src/analysis/worker-pool.js +418 -0
- package/dist/src/analysis/worker-pool.js.map +1 -0
- package/dist/src/analytics/schema.d.ts +1 -1
- package/dist/src/analytics/schema.d.ts.map +1 -1
- package/dist/src/analytics/schema.js +72 -0
- package/dist/src/analytics/schema.js.map +1 -1
- package/dist/src/api/cache.d.ts +24 -1
- package/dist/src/api/cache.d.ts.map +1 -1
- package/dist/src/api/cache.js +50 -2
- package/dist/src/api/cache.js.map +1 -1
- package/dist/src/api/client.d.ts +132 -2
- package/dist/src/api/client.d.ts.map +1 -1
- package/dist/src/api/client.js +214 -18
- package/dist/src/api/client.js.map +1 -1
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -1
- package/dist/src/api/index.js +7 -0
- package/dist/src/api/index.js.map +1 -1
- package/dist/src/api/types.d.ts +251 -0
- package/dist/src/api/types.d.ts.map +1 -0
- package/dist/src/api/types.js +9 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
- package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
- package/dist/src/embeddings/index.d.ts.map +1 -1
- package/dist/src/embeddings/index.js.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +1 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +4 -4
- package/dist/src/index.js.map +1 -1
- package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
- package/dist/src/repositories/IndexerRepository.js +1 -0
- package/dist/src/repositories/IndexerRepository.js.map +1 -1
- package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
- package/dist/src/repositories/SkillRepository.js +1 -0
- package/dist/src/repositories/SkillRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
- package/dist/src/repositories/quarantine/query-builder.js +1 -1
- package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js +3 -3
- package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
- package/dist/src/scripts/github-import/index.js.map +1 -1
- package/dist/src/scripts/import-github-skills.js +1 -1
- package/dist/src/scripts/import-github-skills.js.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
- package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
- package/dist/src/scripts/validation/index.js +1 -2
- package/dist/src/scripts/validation/index.js.map +1 -1
- package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
- package/dist/src/scripts/validation/pipeline.js.map +1 -1
- package/dist/src/scripts/validation/types.d.ts +2 -2
- package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
- package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
- package/dist/src/services/SearchService.d.ts.map +1 -1
- package/dist/src/services/SearchService.js +1 -0
- package/dist/src/services/SearchService.js.map +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
- package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
- package/dist/src/session/SessionHealthMonitor.js +1 -1
- package/dist/src/session/SessionHealthMonitor.js.map +1 -1
- package/dist/src/telemetry/index.d.ts +1 -1
- package/dist/src/telemetry/index.d.ts.map +1 -1
- package/dist/src/telemetry/index.js +2 -2
- package/dist/src/telemetry/index.js.map +1 -1
- package/dist/src/telemetry/posthog.d.ts +27 -5
- package/dist/src/telemetry/posthog.d.ts.map +1 -1
- package/dist/src/telemetry/posthog.js +20 -5
- package/dist/src/telemetry/posthog.js.map +1 -1
- package/dist/src/types/skill.d.ts +3 -0
- package/dist/src/types/skill.d.ts.map +1 -1
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +2 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tests/adapters-factory.test.d.ts +13 -0
- package/dist/tests/adapters-factory.test.d.ts.map +1 -0
- package/dist/tests/adapters-factory.test.js +308 -0
- package/dist/tests/adapters-factory.test.js.map +1 -0
- package/dist/tests/adapters-java.test.d.ts +13 -0
- package/dist/tests/adapters-java.test.d.ts.map +1 -0
- package/dist/tests/adapters-java.test.js +925 -0
- package/dist/tests/adapters-java.test.js.map +1 -0
- package/dist/tests/api/client.validation.test.d.ts +7 -0
- package/dist/tests/api/client.validation.test.d.ts.map +1 -0
- package/dist/tests/api/client.validation.test.js +183 -0
- package/dist/tests/api/client.validation.test.js.map +1 -0
- package/dist/tests/language-detector.test.d.ts +13 -0
- package/dist/tests/language-detector.test.d.ts.map +1 -0
- package/dist/tests/language-detector.test.js +674 -0
- package/dist/tests/language-detector.test.js.map +1 -0
- package/dist/tests/telemetry/posthog.test.d.ts +13 -0
- package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
- package/dist/tests/telemetry/posthog.test.js +600 -0
- package/dist/tests/telemetry/posthog.test.js.map +1 -0
- package/package.json +5 -6
- package/dist/src/security/RateLimiter.d.ts +0 -337
- package/dist/src/security/RateLimiter.d.ts.map +0 -1
- package/dist/src/security/RateLimiter.js +0 -782
- package/dist/src/security/RateLimiter.js.map +0 -1
- package/dist/src/security/scanner.d.ts +0 -151
- package/dist/src/security/scanner.d.ts.map +0 -1
- package/dist/src/security/scanner.js +0 -599
- package/dist/src/security/scanner.js.map +0 -1
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1305: Go Language Adapter
|
|
3
|
+
*
|
|
4
|
+
* Parses Go source files and extracts imports, exports, and functions
|
|
5
|
+
* using regex-based parsing. Go uses capitalization-based visibility:
|
|
6
|
+
* identifiers starting with uppercase are exported (public).
|
|
7
|
+
*
|
|
8
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
9
|
+
*/
|
|
10
|
+
import { LanguageAdapter } from './base.js';
|
|
11
|
+
/**
|
|
12
|
+
* Go Language Adapter
|
|
13
|
+
*
|
|
14
|
+
* Parses Go source files using regex-based parsing.
|
|
15
|
+
* Handles Go's capitalization-based visibility rules.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const adapter = new GoAdapter()
|
|
20
|
+
* const result = adapter.parseFile(goCode, 'main.go')
|
|
21
|
+
* console.log(result.exports) // Uppercase identifiers only
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class GoAdapter extends LanguageAdapter {
|
|
25
|
+
language = 'go';
|
|
26
|
+
extensions = ['.go'];
|
|
27
|
+
/**
|
|
28
|
+
* Parse a Go source file and extract information
|
|
29
|
+
*/
|
|
30
|
+
parseFile(content, filePath) {
|
|
31
|
+
const imports = this.extractImports(content, filePath);
|
|
32
|
+
const exports = this.extractExports(content, filePath);
|
|
33
|
+
const functions = this.extractFunctions(content, filePath);
|
|
34
|
+
return { imports, exports, functions };
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parse file incrementally (currently same as full parse)
|
|
38
|
+
*/
|
|
39
|
+
parseIncremental(content, filePath, _previousTree) {
|
|
40
|
+
// Incremental parsing not yet implemented for Go
|
|
41
|
+
// Will be added with tree-sitter integration
|
|
42
|
+
return this.parseFile(content, filePath);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get Go framework detection rules
|
|
46
|
+
*/
|
|
47
|
+
getFrameworkRules() {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
name: 'Gin',
|
|
51
|
+
depIndicators: ['github.com/gin-gonic/gin'],
|
|
52
|
+
importIndicators: ['github.com/gin-gonic/gin'],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Echo',
|
|
56
|
+
depIndicators: ['github.com/labstack/echo'],
|
|
57
|
+
importIndicators: ['github.com/labstack/echo', 'github.com/labstack/echo/v4'],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Fiber',
|
|
61
|
+
depIndicators: ['github.com/gofiber/fiber'],
|
|
62
|
+
importIndicators: ['github.com/gofiber/fiber', 'github.com/gofiber/fiber/v2'],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'GORM',
|
|
66
|
+
depIndicators: ['gorm.io/gorm'],
|
|
67
|
+
importIndicators: ['gorm.io/gorm', 'gorm.io/driver/postgres', 'gorm.io/driver/mysql'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Cobra',
|
|
71
|
+
depIndicators: ['github.com/spf13/cobra'],
|
|
72
|
+
importIndicators: ['github.com/spf13/cobra'],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Viper',
|
|
76
|
+
depIndicators: ['github.com/spf13/viper'],
|
|
77
|
+
importIndicators: ['github.com/spf13/viper'],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'Chi',
|
|
81
|
+
depIndicators: ['github.com/go-chi/chi'],
|
|
82
|
+
importIndicators: ['github.com/go-chi/chi', 'github.com/go-chi/chi/v5'],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Gorilla Mux',
|
|
86
|
+
depIndicators: ['github.com/gorilla/mux'],
|
|
87
|
+
importIndicators: ['github.com/gorilla/mux'],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'gRPC',
|
|
91
|
+
depIndicators: ['google.golang.org/grpc'],
|
|
92
|
+
importIndicators: ['google.golang.org/grpc', 'google.golang.org/protobuf'],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'testify',
|
|
96
|
+
depIndicators: ['github.com/stretchr/testify'],
|
|
97
|
+
importIndicators: [
|
|
98
|
+
'github.com/stretchr/testify/assert',
|
|
99
|
+
'github.com/stretchr/testify/require',
|
|
100
|
+
'github.com/stretchr/testify/mock',
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
];
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Clean up resources (no-op for regex-based parsing)
|
|
107
|
+
*/
|
|
108
|
+
dispose() {
|
|
109
|
+
// No resources to clean up for regex-based parsing
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Check if an identifier is exported (starts with uppercase)
|
|
113
|
+
*
|
|
114
|
+
* In Go, identifiers starting with uppercase are exported (public)
|
|
115
|
+
* and can be accessed from other packages.
|
|
116
|
+
*
|
|
117
|
+
* @param name - Identifier name
|
|
118
|
+
* @returns True if the identifier is exported
|
|
119
|
+
*/
|
|
120
|
+
isExported(name) {
|
|
121
|
+
return /^[A-Z]/.test(name);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Extract import statements from Go source
|
|
125
|
+
*
|
|
126
|
+
* Handles both single imports and import blocks:
|
|
127
|
+
* - import "fmt"
|
|
128
|
+
* - import ( "fmt" \n "os" )
|
|
129
|
+
* - import alias "path/to/package"
|
|
130
|
+
*/
|
|
131
|
+
extractImports(content, filePath) {
|
|
132
|
+
const imports = [];
|
|
133
|
+
// Single import: import "fmt" or import alias "path"
|
|
134
|
+
const singleImportRegex = /import\s+(?:(\w+)\s+)?"([^"]+)"/g;
|
|
135
|
+
let match;
|
|
136
|
+
while ((match = singleImportRegex.exec(content)) !== null) {
|
|
137
|
+
imports.push({
|
|
138
|
+
module: match[2],
|
|
139
|
+
namedImports: [],
|
|
140
|
+
defaultImport: match[1] || undefined,
|
|
141
|
+
isTypeOnly: false,
|
|
142
|
+
sourceFile: filePath,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
// Import block: import ( "fmt" \n "os" )
|
|
146
|
+
const blockImportRegex = /import\s*\(\s*([\s\S]*?)\)/g;
|
|
147
|
+
while ((match = blockImportRegex.exec(content)) !== null) {
|
|
148
|
+
const block = match[1];
|
|
149
|
+
// Match each line in the block: optional alias followed by quoted path
|
|
150
|
+
// Handles: "fmt", alias "path", . "path", _ "path"
|
|
151
|
+
const lineRegex = /(?:([._]|\w+)\s+)?"([^"]+)"/g;
|
|
152
|
+
let lineMatch;
|
|
153
|
+
while ((lineMatch = lineRegex.exec(block)) !== null) {
|
|
154
|
+
imports.push({
|
|
155
|
+
module: lineMatch[2],
|
|
156
|
+
namedImports: [],
|
|
157
|
+
defaultImport: lineMatch[1] || undefined,
|
|
158
|
+
isTypeOnly: false,
|
|
159
|
+
sourceFile: filePath,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return imports;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Extract exports (public declarations) from Go source
|
|
167
|
+
*
|
|
168
|
+
* In Go, any top-level declaration starting with uppercase is exported:
|
|
169
|
+
* - type Foo struct/interface
|
|
170
|
+
* - func Foo() or func (r *Receiver) Foo()
|
|
171
|
+
* - const/var Foo
|
|
172
|
+
*/
|
|
173
|
+
extractExports(content, filePath) {
|
|
174
|
+
const exports = [];
|
|
175
|
+
const lines = content.split('\n');
|
|
176
|
+
// Track if we're inside a const or var block
|
|
177
|
+
let inConstBlock = false;
|
|
178
|
+
let inVarBlock = false;
|
|
179
|
+
for (let i = 0; i < lines.length; i++) {
|
|
180
|
+
const line = lines[i];
|
|
181
|
+
const trimmedLine = line.trim();
|
|
182
|
+
// Check for start of const/var blocks
|
|
183
|
+
if (/^const\s*\(/.test(line)) {
|
|
184
|
+
inConstBlock = true;
|
|
185
|
+
continue;
|
|
186
|
+
}
|
|
187
|
+
if (/^var\s*\(/.test(line)) {
|
|
188
|
+
inVarBlock = true;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
// Check for end of blocks (closing paren at start of line)
|
|
192
|
+
if ((inConstBlock || inVarBlock) && /^\)/.test(trimmedLine)) {
|
|
193
|
+
inConstBlock = false;
|
|
194
|
+
inVarBlock = false;
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
// Inside const block: extract exported identifiers
|
|
198
|
+
if (inConstBlock) {
|
|
199
|
+
const blockConstMatch = trimmedLine.match(/^([A-Z]\w*)/);
|
|
200
|
+
if (blockConstMatch) {
|
|
201
|
+
exports.push({
|
|
202
|
+
name: blockConstMatch[1],
|
|
203
|
+
kind: 'variable',
|
|
204
|
+
isDefault: false,
|
|
205
|
+
sourceFile: filePath,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
// Inside var block: extract exported identifiers
|
|
211
|
+
if (inVarBlock) {
|
|
212
|
+
const blockVarMatch = trimmedLine.match(/^([A-Z]\w*)/);
|
|
213
|
+
if (blockVarMatch) {
|
|
214
|
+
exports.push({
|
|
215
|
+
name: blockVarMatch[1],
|
|
216
|
+
kind: 'variable',
|
|
217
|
+
isDefault: false,
|
|
218
|
+
sourceFile: filePath,
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Type declarations: type Foo struct/interface/...
|
|
224
|
+
const typeMatch = line.match(/^type\s+([A-Z]\w*)\s+(struct|interface)/);
|
|
225
|
+
if (typeMatch) {
|
|
226
|
+
exports.push({
|
|
227
|
+
name: typeMatch[1],
|
|
228
|
+
kind: typeMatch[2] === 'struct' ? 'struct' : 'interface',
|
|
229
|
+
isDefault: false,
|
|
230
|
+
sourceFile: filePath,
|
|
231
|
+
});
|
|
232
|
+
continue;
|
|
233
|
+
}
|
|
234
|
+
// Type alias or simple type: type Foo = Other or type Foo Other
|
|
235
|
+
const typeAliasMatch = line.match(/^type\s+([A-Z]\w*)\s+(?:=\s+)?(\w+)/);
|
|
236
|
+
if (typeAliasMatch && !line.includes('struct') && !line.includes('interface')) {
|
|
237
|
+
exports.push({
|
|
238
|
+
name: typeAliasMatch[1],
|
|
239
|
+
kind: 'type',
|
|
240
|
+
isDefault: false,
|
|
241
|
+
sourceFile: filePath,
|
|
242
|
+
});
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
// Function declarations: func Foo() or func (r *Receiver) Foo()
|
|
246
|
+
const funcMatch = line.match(/^func\s+(?:\([^)]+\)\s+)?([A-Z]\w*)\s*\(/);
|
|
247
|
+
if (funcMatch) {
|
|
248
|
+
exports.push({
|
|
249
|
+
name: funcMatch[1],
|
|
250
|
+
kind: 'function',
|
|
251
|
+
isDefault: false,
|
|
252
|
+
sourceFile: filePath,
|
|
253
|
+
});
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
// Single-line const declarations: const Foo = ... (not inside a block)
|
|
257
|
+
const constMatch = line.match(/^const\s+([A-Z]\w*)/);
|
|
258
|
+
if (constMatch && !line.includes('(')) {
|
|
259
|
+
exports.push({
|
|
260
|
+
name: constMatch[1],
|
|
261
|
+
kind: 'variable',
|
|
262
|
+
isDefault: false,
|
|
263
|
+
sourceFile: filePath,
|
|
264
|
+
});
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
// Single-line var declarations: var Foo = ... (not inside a block)
|
|
268
|
+
const varMatch = line.match(/^var\s+([A-Z]\w*)/);
|
|
269
|
+
if (varMatch && !line.includes('(')) {
|
|
270
|
+
exports.push({
|
|
271
|
+
name: varMatch[1],
|
|
272
|
+
kind: 'variable',
|
|
273
|
+
isDefault: false,
|
|
274
|
+
sourceFile: filePath,
|
|
275
|
+
});
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return exports;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Extract function definitions from Go source
|
|
283
|
+
*
|
|
284
|
+
* Handles both regular functions and methods:
|
|
285
|
+
* - func name(params) return
|
|
286
|
+
* - func (r *Receiver) name(params) return
|
|
287
|
+
*/
|
|
288
|
+
extractFunctions(content, filePath) {
|
|
289
|
+
const functions = [];
|
|
290
|
+
const lines = content.split('\n');
|
|
291
|
+
for (let i = 0; i < lines.length; i++) {
|
|
292
|
+
const line = lines[i];
|
|
293
|
+
const lineNum = i + 1;
|
|
294
|
+
// Match: func Name(params) or func (r *Receiver) Name(params)
|
|
295
|
+
// Captures: [1] receiver, [2] name, [3] params
|
|
296
|
+
const match = line.match(/^func\s+(?:\(([^)]+)\)\s+)?(\w+)\s*\(([^)]*)\)/);
|
|
297
|
+
if (match) {
|
|
298
|
+
// SMI-1334: Capture receiver for method output
|
|
299
|
+
const receiver = match[1]?.trim() || undefined;
|
|
300
|
+
const name = match[2];
|
|
301
|
+
const paramsStr = match[3];
|
|
302
|
+
// Count parameters (split by comma, filter empty)
|
|
303
|
+
const params = paramsStr
|
|
304
|
+
? paramsStr
|
|
305
|
+
.split(',')
|
|
306
|
+
.map((p) => p.trim())
|
|
307
|
+
.filter((p) => p.length > 0).length
|
|
308
|
+
: 0;
|
|
309
|
+
functions.push({
|
|
310
|
+
name,
|
|
311
|
+
parameterCount: params,
|
|
312
|
+
isAsync: false, // Go uses goroutines, not async/await
|
|
313
|
+
isExported: this.isExported(name),
|
|
314
|
+
sourceFile: filePath,
|
|
315
|
+
line: lineNum,
|
|
316
|
+
// SMI-1334: Include receiver in function output
|
|
317
|
+
receiver,
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
return functions;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/**
|
|
325
|
+
* Parse go.mod file to extract module info and dependencies
|
|
326
|
+
*
|
|
327
|
+
* @param content - Content of go.mod file
|
|
328
|
+
* @returns Parsed go.mod information
|
|
329
|
+
*
|
|
330
|
+
* @example
|
|
331
|
+
* ```typescript
|
|
332
|
+
* const modInfo = parseGoMod(goModContent)
|
|
333
|
+
* console.log(modInfo.module) // "github.com/user/project"
|
|
334
|
+
* console.log(modInfo.require) // [{ path: "...", version: "..." }]
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
337
|
+
export function parseGoMod(content) {
|
|
338
|
+
const result = {
|
|
339
|
+
module: '',
|
|
340
|
+
require: [],
|
|
341
|
+
replace: [],
|
|
342
|
+
};
|
|
343
|
+
// Extract module name
|
|
344
|
+
const moduleMatch = content.match(/^module\s+(\S+)/m);
|
|
345
|
+
if (moduleMatch) {
|
|
346
|
+
result.module = moduleMatch[1];
|
|
347
|
+
}
|
|
348
|
+
// Extract Go version
|
|
349
|
+
const goVersionMatch = content.match(/^go\s+(\d+\.\d+(?:\.\d+)?)/m);
|
|
350
|
+
if (goVersionMatch) {
|
|
351
|
+
result.goVersion = goVersionMatch[1];
|
|
352
|
+
}
|
|
353
|
+
// Extract require blocks first
|
|
354
|
+
const requireBlockRegex = /require\s*\(\s*([\s\S]*?)\)/gm;
|
|
355
|
+
let match;
|
|
356
|
+
while ((match = requireBlockRegex.exec(content)) !== null) {
|
|
357
|
+
const block = match[1];
|
|
358
|
+
// Match package path and version (path must start with a letter or domain)
|
|
359
|
+
const lineRegex = /^\s*([a-zA-Z][\w./-]+)\s+(v[\d.]+\S*)/gm;
|
|
360
|
+
let lineMatch;
|
|
361
|
+
while ((lineMatch = lineRegex.exec(block)) !== null) {
|
|
362
|
+
result.require.push({
|
|
363
|
+
path: lineMatch[1],
|
|
364
|
+
version: lineMatch[2],
|
|
365
|
+
});
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
// Extract single-line require directives (not followed by parenthesis)
|
|
369
|
+
// Match: require github.com/pkg v1.0.0
|
|
370
|
+
const singleRequireRegex = /^require\s+([a-zA-Z][\w./-]+)\s+(v[\d.]+\S*)/gm;
|
|
371
|
+
while ((match = singleRequireRegex.exec(content)) !== null) {
|
|
372
|
+
// Check if this is not part of a block (no opening paren on same line)
|
|
373
|
+
const lineStart = content.lastIndexOf('\n', match.index) + 1;
|
|
374
|
+
const lineEnd = content.indexOf('\n', match.index);
|
|
375
|
+
const fullLine = content.slice(lineStart, lineEnd === -1 ? undefined : lineEnd);
|
|
376
|
+
if (!fullLine.includes('(')) {
|
|
377
|
+
result.require.push({
|
|
378
|
+
path: match[1],
|
|
379
|
+
version: match[2],
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// Extract replace blocks first
|
|
384
|
+
const replaceBlockRegex = /replace\s*\(\s*([\s\S]*?)\)/gm;
|
|
385
|
+
while ((match = replaceBlockRegex.exec(content)) !== null) {
|
|
386
|
+
const block = match[1];
|
|
387
|
+
const lineRegex = /^\s*([a-zA-Z][\w./-]+)\s+=>\s+(\S+)(?:\s+(v[\d.]+\S*))?/gm;
|
|
388
|
+
let lineMatch;
|
|
389
|
+
while ((lineMatch = lineRegex.exec(block)) !== null) {
|
|
390
|
+
result.replace.push({
|
|
391
|
+
old: lineMatch[1],
|
|
392
|
+
new: lineMatch[2],
|
|
393
|
+
version: lineMatch[3],
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Extract single-line replace directives
|
|
398
|
+
const singleReplaceRegex = /^replace\s+([a-zA-Z][\w./-]+)\s+=>\s+(\S+)(?:\s+(v[\d.]+\S*))?/gm;
|
|
399
|
+
while ((match = singleReplaceRegex.exec(content)) !== null) {
|
|
400
|
+
// Check if this is not part of a block
|
|
401
|
+
const lineStart = content.lastIndexOf('\n', match.index) + 1;
|
|
402
|
+
const lineEnd = content.indexOf('\n', match.index);
|
|
403
|
+
const fullLine = content.slice(lineStart, lineEnd === -1 ? undefined : lineEnd);
|
|
404
|
+
if (!fullLine.includes('(')) {
|
|
405
|
+
result.replace.push({
|
|
406
|
+
old: match[1],
|
|
407
|
+
new: match[2],
|
|
408
|
+
version: match[3],
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
return result;
|
|
413
|
+
}
|
|
414
|
+
//# sourceMappingURL=go.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/go.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1303, SMI-1310: Language Adapters Module
|
|
3
|
+
* SMI-1339: Added AdapterFactory
|
|
4
|
+
*
|
|
5
|
+
* Exports all language adapter classes and types for multi-language
|
|
6
|
+
* codebase analysis.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
9
|
+
*/
|
|
10
|
+
export { LanguageAdapter, type SupportedLanguage, type LanguageInfo, type FrameworkRule, type ParseResult, } from './base.js';
|
|
11
|
+
export { AdapterFactory } from './factory.js';
|
|
12
|
+
export { TypeScriptAdapter } from './typescript.js';
|
|
13
|
+
export { PythonAdapter } from './python.js';
|
|
14
|
+
export { GoAdapter, parseGoMod } from './go.js';
|
|
15
|
+
export type { GoExportInfo, GoFunctionInfo, GoModInfo } from './go.js';
|
|
16
|
+
export { RustAdapter, parseCargoToml } from './rust.js';
|
|
17
|
+
export type { RustExportInfo, RustFunctionInfo, CargoDependency } from './rust.js';
|
|
18
|
+
export { JavaAdapter, parsePomXml, parseBuildGradle } from './java.js';
|
|
19
|
+
export type { JavaExportInfo, JavaFunctionInfo, MavenDependency } from './java.js';
|
|
20
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAA;AAGlB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACvD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACtE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1303, SMI-1310: Language Adapters Module
|
|
3
|
+
* SMI-1339: Added AdapterFactory
|
|
4
|
+
*
|
|
5
|
+
* Exports all language adapter classes and types for multi-language
|
|
6
|
+
* codebase analysis.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
9
|
+
*/
|
|
10
|
+
// Base adapter class and types
|
|
11
|
+
export { LanguageAdapter, } from './base.js';
|
|
12
|
+
// SMI-1339: Adapter Factory Pattern
|
|
13
|
+
export { AdapterFactory } from './factory.js';
|
|
14
|
+
// Language-specific adapters
|
|
15
|
+
export { TypeScriptAdapter } from './typescript.js';
|
|
16
|
+
export { PythonAdapter } from './python.js';
|
|
17
|
+
// SMI-1305: Go Language Adapter
|
|
18
|
+
export { GoAdapter, parseGoMod } from './go.js';
|
|
19
|
+
// SMI-1306: Rust Language Adapter
|
|
20
|
+
export { RustAdapter, parseCargoToml } from './rust.js';
|
|
21
|
+
// SMI-1307: Java Language Adapter
|
|
22
|
+
export { JavaAdapter, parsePomXml, parseBuildGradle } from './java.js';
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+BAA+B;AAC/B,OAAO,EACL,eAAe,GAKhB,MAAM,WAAW,CAAA;AAElB,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/C,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGvD,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1307: Java Language Adapter
|
|
3
|
+
*
|
|
4
|
+
* Parses Java source files and extracts imports, exports, and functions
|
|
5
|
+
* using regex-based parsing. Handles Java-specific features including:
|
|
6
|
+
* - Visibility modifiers (public, private, protected, package-private)
|
|
7
|
+
* - Annotations (@Override, @Test, @Autowired, etc.)
|
|
8
|
+
* - Generics in class and method declarations
|
|
9
|
+
* - Interfaces, abstract classes, enums, and annotation types
|
|
10
|
+
*
|
|
11
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
12
|
+
*/
|
|
13
|
+
import { LanguageAdapter, type SupportedLanguage } from './base.js';
|
|
14
|
+
import type { ParseResult, ExportInfo, FunctionInfo, FrameworkRule } from './base.js';
|
|
15
|
+
/**
|
|
16
|
+
* Extended ExportInfo for Java with visibility support
|
|
17
|
+
*/
|
|
18
|
+
export interface JavaExportInfo extends ExportInfo {
|
|
19
|
+
/** Java visibility modifier */
|
|
20
|
+
visibility: 'public' | 'private' | 'protected' | 'internal';
|
|
21
|
+
/** Line number in source */
|
|
22
|
+
line: number;
|
|
23
|
+
/** Whether the class/method is abstract */
|
|
24
|
+
isAbstract?: boolean;
|
|
25
|
+
/** Whether the class is final */
|
|
26
|
+
isFinal?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extended FunctionInfo for Java with decorator/annotation support
|
|
30
|
+
*/
|
|
31
|
+
export interface JavaFunctionInfo extends FunctionInfo {
|
|
32
|
+
/** Annotations on the method (@Override, @Test, etc.) */
|
|
33
|
+
decorators?: string[];
|
|
34
|
+
/** Whether the method is static */
|
|
35
|
+
isStatic?: boolean;
|
|
36
|
+
/** Whether the method is synchronized */
|
|
37
|
+
isSynchronized?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Java Language Adapter
|
|
41
|
+
*
|
|
42
|
+
* Parses Java source files using regex-based parsing.
|
|
43
|
+
* Handles Java's explicit visibility modifiers and annotation system.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```typescript
|
|
47
|
+
* const adapter = new JavaAdapter()
|
|
48
|
+
* const result = adapter.parseFile(javaCode, 'Main.java')
|
|
49
|
+
* console.log(result.exports) // public classes, interfaces, enums
|
|
50
|
+
* console.log(result.functions) // public/protected methods
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare class JavaAdapter extends LanguageAdapter {
|
|
54
|
+
readonly language: SupportedLanguage;
|
|
55
|
+
readonly extensions: string[];
|
|
56
|
+
/**
|
|
57
|
+
* Parse a Java source file and extract information
|
|
58
|
+
*/
|
|
59
|
+
parseFile(content: string, filePath: string): ParseResult;
|
|
60
|
+
/**
|
|
61
|
+
* Parse file incrementally (currently same as full parse)
|
|
62
|
+
*/
|
|
63
|
+
parseIncremental(content: string, filePath: string, _previousTree?: unknown): ParseResult;
|
|
64
|
+
/**
|
|
65
|
+
* Get Java framework detection rules
|
|
66
|
+
*/
|
|
67
|
+
getFrameworkRules(): FrameworkRule[];
|
|
68
|
+
/**
|
|
69
|
+
* Clean up resources (no-op for regex-based parsing)
|
|
70
|
+
*/
|
|
71
|
+
dispose(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Extract import statements from Java source
|
|
74
|
+
*
|
|
75
|
+
* Handles:
|
|
76
|
+
* - Regular imports: import com.example.Class;
|
|
77
|
+
* - Static imports: import static com.example.Class.method;
|
|
78
|
+
* - Wildcard imports: import com.example.*;
|
|
79
|
+
*/
|
|
80
|
+
private extractImports;
|
|
81
|
+
/**
|
|
82
|
+
* Extract exports (public declarations) from Java source
|
|
83
|
+
*
|
|
84
|
+
* In Java, exports are determined by visibility modifiers:
|
|
85
|
+
* - public: accessible from anywhere
|
|
86
|
+
* - protected: accessible from subclasses
|
|
87
|
+
* - package-private (default): accessible within package
|
|
88
|
+
* - private: not exported
|
|
89
|
+
*/
|
|
90
|
+
private extractExports;
|
|
91
|
+
/**
|
|
92
|
+
* Extract function definitions from Java source
|
|
93
|
+
*
|
|
94
|
+
* Handles:
|
|
95
|
+
* - Regular methods: public void foo(String s, int n)
|
|
96
|
+
* - Generic methods: public <T> List<T> bar(T item)
|
|
97
|
+
* - Abstract methods: protected abstract void baz();
|
|
98
|
+
* - Static methods: public static void main(String[] args)
|
|
99
|
+
* - Annotated methods: @Override public String toString()
|
|
100
|
+
*/
|
|
101
|
+
private extractFunctions;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Maven pom.xml dependency information
|
|
105
|
+
*/
|
|
106
|
+
export interface MavenDependency {
|
|
107
|
+
/** Maven groupId */
|
|
108
|
+
groupId: string;
|
|
109
|
+
/** Maven artifactId */
|
|
110
|
+
artifactId: string;
|
|
111
|
+
/** Dependency name in groupId:artifactId format */
|
|
112
|
+
name: string;
|
|
113
|
+
/** Version (may be a property reference like ${project.version}) */
|
|
114
|
+
version: string;
|
|
115
|
+
/** Whether this is a test/provided scope dependency */
|
|
116
|
+
isDev: boolean;
|
|
117
|
+
/** Maven scope (compile, test, provided, runtime, system) */
|
|
118
|
+
scope?: string;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Parse pom.xml to extract Maven dependencies
|
|
122
|
+
*
|
|
123
|
+
* @param content - Content of pom.xml file
|
|
124
|
+
* @returns Array of dependency information
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const deps = parsePomXml(pomXmlContent)
|
|
129
|
+
* console.log(deps) // [{ name: "org.springframework:spring-core", version: "5.3.0", ... }]
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare function parsePomXml(content: string): {
|
|
133
|
+
name: string;
|
|
134
|
+
version: string;
|
|
135
|
+
isDev: boolean;
|
|
136
|
+
}[];
|
|
137
|
+
/**
|
|
138
|
+
* Parse build.gradle or build.gradle.kts to extract Gradle dependencies
|
|
139
|
+
*
|
|
140
|
+
* @param content - Content of build.gradle file
|
|
141
|
+
* @returns Array of dependency information
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* const deps = parseBuildGradle(gradleContent)
|
|
146
|
+
* console.log(deps) // [{ name: "org.springframework:spring-core", version: "5.3.0", ... }]
|
|
147
|
+
* ```
|
|
148
|
+
*/
|
|
149
|
+
export declare function parseBuildGradle(content: string): {
|
|
150
|
+
name: string;
|
|
151
|
+
version: string;
|
|
152
|
+
isDev: boolean;
|
|
153
|
+
}[];
|
|
154
|
+
//# sourceMappingURL=java.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/java.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAc,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEjG;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,+BAA+B;IAC/B,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;IAC3D,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAS;IAC7C,QAAQ,CAAC,UAAU,WAAY;IAE/B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAOzD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW;IAMzF;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IA0FpC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAuCtB;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;CAuEzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAkChG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CA4CrD"}
|