@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,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1339: Adapter Factory Pattern
|
|
3
|
+
*
|
|
4
|
+
* Factory class for creating language adapters with lazy instantiation.
|
|
5
|
+
* Avoids unnecessary adapter creation and provides centralized adapter management.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
8
|
+
* @module analysis/adapters/factory
|
|
9
|
+
*/
|
|
10
|
+
import type { LanguageAdapter } from './base.js';
|
|
11
|
+
import type { SupportedLanguage } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Factory class for creating language adapters
|
|
14
|
+
*
|
|
15
|
+
* Provides lazy instantiation of adapters to avoid creating
|
|
16
|
+
* unused adapter instances and reduce startup overhead.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Create a single adapter
|
|
21
|
+
* const pythonAdapter = AdapterFactory.createAdapter('python')
|
|
22
|
+
*
|
|
23
|
+
* // Create all adapters
|
|
24
|
+
* const allAdapters = AdapterFactory.createAll()
|
|
25
|
+
*
|
|
26
|
+
* // Create specific adapters
|
|
27
|
+
* const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class AdapterFactory {
|
|
31
|
+
/** Cache of created adapters for reuse */
|
|
32
|
+
private static adapterCache;
|
|
33
|
+
/**
|
|
34
|
+
* Create an adapter for a specific language
|
|
35
|
+
*
|
|
36
|
+
* Creates a new adapter instance for the given language.
|
|
37
|
+
* Use createCachedAdapter() if you want to reuse adapter instances.
|
|
38
|
+
*
|
|
39
|
+
* @param language - Language to create adapter for
|
|
40
|
+
* @returns New adapter instance
|
|
41
|
+
* @throws Error if language is not supported
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* const adapter = AdapterFactory.createAdapter('python')
|
|
46
|
+
* const result = adapter.parseFile(content, 'main.py')
|
|
47
|
+
* adapter.dispose()
|
|
48
|
+
* ```
|
|
49
|
+
*/
|
|
50
|
+
static createAdapter(language: SupportedLanguage): LanguageAdapter;
|
|
51
|
+
/**
|
|
52
|
+
* Get or create a cached adapter for a specific language
|
|
53
|
+
*
|
|
54
|
+
* Returns an existing adapter if one was previously created,
|
|
55
|
+
* otherwise creates and caches a new adapter instance.
|
|
56
|
+
*
|
|
57
|
+
* @param language - Language to get adapter for
|
|
58
|
+
* @returns Cached or new adapter instance
|
|
59
|
+
* @throws Error if language is not supported
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* // Reuses same instance
|
|
64
|
+
* const adapter1 = AdapterFactory.createCachedAdapter('typescript')
|
|
65
|
+
* const adapter2 = AdapterFactory.createCachedAdapter('typescript')
|
|
66
|
+
* console.log(adapter1 === adapter2) // true
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
static createCachedAdapter(language: SupportedLanguage): LanguageAdapter;
|
|
70
|
+
/**
|
|
71
|
+
* Create adapters for all supported languages
|
|
72
|
+
*
|
|
73
|
+
* Returns a Map of language to adapter for all supported languages.
|
|
74
|
+
* Each adapter is created lazily (new instance per call).
|
|
75
|
+
*
|
|
76
|
+
* @returns Map of language to adapter
|
|
77
|
+
*
|
|
78
|
+
* @example
|
|
79
|
+
* ```typescript
|
|
80
|
+
* const adapters = AdapterFactory.createAll()
|
|
81
|
+
* for (const [lang, adapter] of adapters) {
|
|
82
|
+
* console.log(`${lang}: ${adapter.extensions.join(', ')}`)
|
|
83
|
+
* }
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
static createAll(): Map<SupportedLanguage, LanguageAdapter>;
|
|
87
|
+
/**
|
|
88
|
+
* Create adapters for specific languages
|
|
89
|
+
*
|
|
90
|
+
* @param languages - Array of languages to create adapters for
|
|
91
|
+
* @returns Map of language to adapter
|
|
92
|
+
* @throws Error if any language is not supported
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
static createAdapters(languages: SupportedLanguage[]): Map<SupportedLanguage, LanguageAdapter>;
|
|
100
|
+
/**
|
|
101
|
+
* Get list of supported languages
|
|
102
|
+
*
|
|
103
|
+
* @returns Array of supported language identifiers
|
|
104
|
+
*/
|
|
105
|
+
static getSupportedLanguages(): SupportedLanguage[];
|
|
106
|
+
/**
|
|
107
|
+
* Check if a language is supported
|
|
108
|
+
*
|
|
109
|
+
* @param language - Language to check
|
|
110
|
+
* @returns True if language is supported
|
|
111
|
+
*/
|
|
112
|
+
static isSupported(language: string): language is SupportedLanguage;
|
|
113
|
+
/**
|
|
114
|
+
* Get file extensions for a language
|
|
115
|
+
*
|
|
116
|
+
* Returns the file extensions handled by the adapter for a given language,
|
|
117
|
+
* without needing to instantiate the adapter.
|
|
118
|
+
*
|
|
119
|
+
* @param language - Language to get extensions for
|
|
120
|
+
* @returns Array of file extensions (with dot prefix)
|
|
121
|
+
*/
|
|
122
|
+
static getExtensions(language: SupportedLanguage): string[];
|
|
123
|
+
/**
|
|
124
|
+
* Get all file extensions from all adapters
|
|
125
|
+
*
|
|
126
|
+
* Returns a map of file extension to language.
|
|
127
|
+
* Note: TypeScript-specific extensions (.ts, .tsx) map to 'typescript',
|
|
128
|
+
* while JavaScript-specific extensions (.js, .jsx, etc.) map to 'javascript'.
|
|
129
|
+
*
|
|
130
|
+
* @returns Map of extension to language
|
|
131
|
+
*/
|
|
132
|
+
static getAllExtensions(): Map<string, SupportedLanguage>;
|
|
133
|
+
/**
|
|
134
|
+
* Clear the adapter cache
|
|
135
|
+
*
|
|
136
|
+
* Disposes all cached adapters and clears the cache.
|
|
137
|
+
* Call this when you want to free resources or reset state.
|
|
138
|
+
*/
|
|
139
|
+
static clearCache(): void;
|
|
140
|
+
/**
|
|
141
|
+
* Get cache statistics
|
|
142
|
+
*
|
|
143
|
+
* @returns Object with cache stats
|
|
144
|
+
*/
|
|
145
|
+
static getCacheStats(): {
|
|
146
|
+
size: number;
|
|
147
|
+
languages: SupportedLanguage[];
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAwBpD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqD;IAEhF;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe;IAalE;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe;IAWxE;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAU3D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAU9F;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,IAAI,iBAAiB,EAAE;IAInD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,iBAAiB;IAInE;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAc3D;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;IA+BzD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAWzB;;;;OAIG;IACH,MAAM,CAAC,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,iBAAiB,EAAE,CAAA;KAAE;CAMzE"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1339: Adapter Factory Pattern
|
|
3
|
+
*
|
|
4
|
+
* Factory class for creating language adapters with lazy instantiation.
|
|
5
|
+
* Avoids unnecessary adapter creation and provides centralized adapter management.
|
|
6
|
+
*
|
|
7
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
8
|
+
* @module analysis/adapters/factory
|
|
9
|
+
*/
|
|
10
|
+
import { TypeScriptAdapter } from './typescript.js';
|
|
11
|
+
import { PythonAdapter } from './python.js';
|
|
12
|
+
import { GoAdapter } from './go.js';
|
|
13
|
+
import { RustAdapter } from './rust.js';
|
|
14
|
+
import { JavaAdapter } from './java.js';
|
|
15
|
+
/**
|
|
16
|
+
* Registry of adapter factory functions by language
|
|
17
|
+
*/
|
|
18
|
+
const ADAPTER_FACTORIES = {
|
|
19
|
+
typescript: () => new TypeScriptAdapter(),
|
|
20
|
+
javascript: () => new TypeScriptAdapter(), // TypeScript adapter handles JS
|
|
21
|
+
python: () => new PythonAdapter(),
|
|
22
|
+
go: () => new GoAdapter(),
|
|
23
|
+
rust: () => new RustAdapter(),
|
|
24
|
+
java: () => new JavaAdapter(),
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Factory class for creating language adapters
|
|
28
|
+
*
|
|
29
|
+
* Provides lazy instantiation of adapters to avoid creating
|
|
30
|
+
* unused adapter instances and reduce startup overhead.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* // Create a single adapter
|
|
35
|
+
* const pythonAdapter = AdapterFactory.createAdapter('python')
|
|
36
|
+
*
|
|
37
|
+
* // Create all adapters
|
|
38
|
+
* const allAdapters = AdapterFactory.createAll()
|
|
39
|
+
*
|
|
40
|
+
* // Create specific adapters
|
|
41
|
+
* const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export class AdapterFactory {
|
|
45
|
+
/** Cache of created adapters for reuse */
|
|
46
|
+
static adapterCache = new Map();
|
|
47
|
+
/**
|
|
48
|
+
* Create an adapter for a specific language
|
|
49
|
+
*
|
|
50
|
+
* Creates a new adapter instance for the given language.
|
|
51
|
+
* Use createCachedAdapter() if you want to reuse adapter instances.
|
|
52
|
+
*
|
|
53
|
+
* @param language - Language to create adapter for
|
|
54
|
+
* @returns New adapter instance
|
|
55
|
+
* @throws Error if language is not supported
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* const adapter = AdapterFactory.createAdapter('python')
|
|
60
|
+
* const result = adapter.parseFile(content, 'main.py')
|
|
61
|
+
* adapter.dispose()
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
static createAdapter(language) {
|
|
65
|
+
const factory = ADAPTER_FACTORIES[language];
|
|
66
|
+
if (!factory) {
|
|
67
|
+
const supported = AdapterFactory.getSupportedLanguages();
|
|
68
|
+
throw new Error(`Unsupported language: ${language}. ` + `Supported languages: ${supported.join(', ')}`);
|
|
69
|
+
}
|
|
70
|
+
return factory();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get or create a cached adapter for a specific language
|
|
74
|
+
*
|
|
75
|
+
* Returns an existing adapter if one was previously created,
|
|
76
|
+
* otherwise creates and caches a new adapter instance.
|
|
77
|
+
*
|
|
78
|
+
* @param language - Language to get adapter for
|
|
79
|
+
* @returns Cached or new adapter instance
|
|
80
|
+
* @throws Error if language is not supported
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Reuses same instance
|
|
85
|
+
* const adapter1 = AdapterFactory.createCachedAdapter('typescript')
|
|
86
|
+
* const adapter2 = AdapterFactory.createCachedAdapter('typescript')
|
|
87
|
+
* console.log(adapter1 === adapter2) // true
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
static createCachedAdapter(language) {
|
|
91
|
+
const cached = this.adapterCache.get(language);
|
|
92
|
+
if (cached) {
|
|
93
|
+
return cached;
|
|
94
|
+
}
|
|
95
|
+
const adapter = this.createAdapter(language);
|
|
96
|
+
this.adapterCache.set(language, adapter);
|
|
97
|
+
return adapter;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create adapters for all supported languages
|
|
101
|
+
*
|
|
102
|
+
* Returns a Map of language to adapter for all supported languages.
|
|
103
|
+
* Each adapter is created lazily (new instance per call).
|
|
104
|
+
*
|
|
105
|
+
* @returns Map of language to adapter
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* const adapters = AdapterFactory.createAll()
|
|
110
|
+
* for (const [lang, adapter] of adapters) {
|
|
111
|
+
* console.log(`${lang}: ${adapter.extensions.join(', ')}`)
|
|
112
|
+
* }
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
static createAll() {
|
|
116
|
+
const adapters = new Map();
|
|
117
|
+
for (const language of AdapterFactory.getSupportedLanguages()) {
|
|
118
|
+
adapters.set(language, this.createAdapter(language));
|
|
119
|
+
}
|
|
120
|
+
return adapters;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create adapters for specific languages
|
|
124
|
+
*
|
|
125
|
+
* @param languages - Array of languages to create adapters for
|
|
126
|
+
* @returns Map of language to adapter
|
|
127
|
+
* @throws Error if any language is not supported
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
* ```typescript
|
|
131
|
+
* const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
static createAdapters(languages) {
|
|
135
|
+
const adapters = new Map();
|
|
136
|
+
for (const language of languages) {
|
|
137
|
+
adapters.set(language, this.createAdapter(language));
|
|
138
|
+
}
|
|
139
|
+
return adapters;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get list of supported languages
|
|
143
|
+
*
|
|
144
|
+
* @returns Array of supported language identifiers
|
|
145
|
+
*/
|
|
146
|
+
static getSupportedLanguages() {
|
|
147
|
+
return Object.keys(ADAPTER_FACTORIES);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if a language is supported
|
|
151
|
+
*
|
|
152
|
+
* @param language - Language to check
|
|
153
|
+
* @returns True if language is supported
|
|
154
|
+
*/
|
|
155
|
+
static isSupported(language) {
|
|
156
|
+
return language in ADAPTER_FACTORIES;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Get file extensions for a language
|
|
160
|
+
*
|
|
161
|
+
* Returns the file extensions handled by the adapter for a given language,
|
|
162
|
+
* without needing to instantiate the adapter.
|
|
163
|
+
*
|
|
164
|
+
* @param language - Language to get extensions for
|
|
165
|
+
* @returns Array of file extensions (with dot prefix)
|
|
166
|
+
*/
|
|
167
|
+
static getExtensions(language) {
|
|
168
|
+
// Use cached adapter if available, otherwise create temporary one
|
|
169
|
+
const cached = this.adapterCache.get(language);
|
|
170
|
+
if (cached) {
|
|
171
|
+
return [...cached.extensions];
|
|
172
|
+
}
|
|
173
|
+
// Create temporary adapter to get extensions
|
|
174
|
+
const adapter = this.createAdapter(language);
|
|
175
|
+
const extensions = [...adapter.extensions];
|
|
176
|
+
adapter.dispose();
|
|
177
|
+
return extensions;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get all file extensions from all adapters
|
|
181
|
+
*
|
|
182
|
+
* Returns a map of file extension to language.
|
|
183
|
+
* Note: TypeScript-specific extensions (.ts, .tsx) map to 'typescript',
|
|
184
|
+
* while JavaScript-specific extensions (.js, .jsx, etc.) map to 'javascript'.
|
|
185
|
+
*
|
|
186
|
+
* @returns Map of extension to language
|
|
187
|
+
*/
|
|
188
|
+
static getAllExtensions() {
|
|
189
|
+
const extensionMap = new Map();
|
|
190
|
+
// Define canonical mappings - TypeScript-specific extensions should map to typescript
|
|
191
|
+
const canonicalMappings = {
|
|
192
|
+
'.ts': 'typescript',
|
|
193
|
+
'.tsx': 'typescript',
|
|
194
|
+
'.mts': 'typescript',
|
|
195
|
+
'.cts': 'typescript',
|
|
196
|
+
'.js': 'javascript',
|
|
197
|
+
'.jsx': 'javascript',
|
|
198
|
+
'.mjs': 'javascript',
|
|
199
|
+
'.cjs': 'javascript',
|
|
200
|
+
};
|
|
201
|
+
for (const language of this.getSupportedLanguages()) {
|
|
202
|
+
const extensions = this.getExtensions(language);
|
|
203
|
+
for (const ext of extensions) {
|
|
204
|
+
const normalizedExt = ext.toLowerCase();
|
|
205
|
+
// Use canonical mapping if available, otherwise use the adapter's language
|
|
206
|
+
const mappedLanguage = canonicalMappings[normalizedExt] ?? language;
|
|
207
|
+
// Only set if not already defined (first definition wins for non-canonical)
|
|
208
|
+
if (!extensionMap.has(normalizedExt)) {
|
|
209
|
+
extensionMap.set(normalizedExt, mappedLanguage);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
return extensionMap;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* Clear the adapter cache
|
|
217
|
+
*
|
|
218
|
+
* Disposes all cached adapters and clears the cache.
|
|
219
|
+
* Call this when you want to free resources or reset state.
|
|
220
|
+
*/
|
|
221
|
+
static clearCache() {
|
|
222
|
+
for (const adapter of this.adapterCache.values()) {
|
|
223
|
+
try {
|
|
224
|
+
adapter.dispose();
|
|
225
|
+
}
|
|
226
|
+
catch {
|
|
227
|
+
// Ignore errors during cleanup
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
this.adapterCache.clear();
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get cache statistics
|
|
234
|
+
*
|
|
235
|
+
* @returns Object with cache stats
|
|
236
|
+
*/
|
|
237
|
+
static getCacheStats() {
|
|
238
|
+
return {
|
|
239
|
+
size: this.adapterCache.size,
|
|
240
|
+
languages: Array.from(this.adapterCache.keys()),
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,131 @@
|
|
|
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, type SupportedLanguage } from './base.js';
|
|
11
|
+
import type { ParseResult, ExportInfo, FunctionInfo, FrameworkRule } from './base.js';
|
|
12
|
+
/**
|
|
13
|
+
* Extended ExportInfo for Go with visibility support
|
|
14
|
+
*/
|
|
15
|
+
export interface GoExportInfo extends ExportInfo {
|
|
16
|
+
/** Go exports via capitalization */
|
|
17
|
+
visibility: 'public' | 'private';
|
|
18
|
+
/** Line number in source */
|
|
19
|
+
line: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extended FunctionInfo for Go with receiver support
|
|
23
|
+
*/
|
|
24
|
+
export interface GoFunctionInfo extends FunctionInfo {
|
|
25
|
+
/** Method receiver type (e.g., "*MyStruct") */
|
|
26
|
+
receiver?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Go module information from go.mod
|
|
30
|
+
*/
|
|
31
|
+
export interface GoModInfo {
|
|
32
|
+
/** Module path (e.g., "github.com/user/project") */
|
|
33
|
+
module: string;
|
|
34
|
+
/** Go version (e.g., "1.21") */
|
|
35
|
+
goVersion?: string;
|
|
36
|
+
/** Direct dependencies */
|
|
37
|
+
require: Array<{
|
|
38
|
+
path: string;
|
|
39
|
+
version: string;
|
|
40
|
+
}>;
|
|
41
|
+
/** Replaced dependencies */
|
|
42
|
+
replace: Array<{
|
|
43
|
+
old: string;
|
|
44
|
+
new: string;
|
|
45
|
+
version?: string;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Go Language Adapter
|
|
50
|
+
*
|
|
51
|
+
* Parses Go source files using regex-based parsing.
|
|
52
|
+
* Handles Go's capitalization-based visibility rules.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* const adapter = new GoAdapter()
|
|
57
|
+
* const result = adapter.parseFile(goCode, 'main.go')
|
|
58
|
+
* console.log(result.exports) // Uppercase identifiers only
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare class GoAdapter extends LanguageAdapter {
|
|
62
|
+
readonly language: SupportedLanguage;
|
|
63
|
+
readonly extensions: string[];
|
|
64
|
+
/**
|
|
65
|
+
* Parse a Go source file and extract information
|
|
66
|
+
*/
|
|
67
|
+
parseFile(content: string, filePath: string): ParseResult;
|
|
68
|
+
/**
|
|
69
|
+
* Parse file incrementally (currently same as full parse)
|
|
70
|
+
*/
|
|
71
|
+
parseIncremental(content: string, filePath: string, _previousTree?: unknown): ParseResult;
|
|
72
|
+
/**
|
|
73
|
+
* Get Go framework detection rules
|
|
74
|
+
*/
|
|
75
|
+
getFrameworkRules(): FrameworkRule[];
|
|
76
|
+
/**
|
|
77
|
+
* Clean up resources (no-op for regex-based parsing)
|
|
78
|
+
*/
|
|
79
|
+
dispose(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Check if an identifier is exported (starts with uppercase)
|
|
82
|
+
*
|
|
83
|
+
* In Go, identifiers starting with uppercase are exported (public)
|
|
84
|
+
* and can be accessed from other packages.
|
|
85
|
+
*
|
|
86
|
+
* @param name - Identifier name
|
|
87
|
+
* @returns True if the identifier is exported
|
|
88
|
+
*/
|
|
89
|
+
private isExported;
|
|
90
|
+
/**
|
|
91
|
+
* Extract import statements from Go source
|
|
92
|
+
*
|
|
93
|
+
* Handles both single imports and import blocks:
|
|
94
|
+
* - import "fmt"
|
|
95
|
+
* - import ( "fmt" \n "os" )
|
|
96
|
+
* - import alias "path/to/package"
|
|
97
|
+
*/
|
|
98
|
+
private extractImports;
|
|
99
|
+
/**
|
|
100
|
+
* Extract exports (public declarations) from Go source
|
|
101
|
+
*
|
|
102
|
+
* In Go, any top-level declaration starting with uppercase is exported:
|
|
103
|
+
* - type Foo struct/interface
|
|
104
|
+
* - func Foo() or func (r *Receiver) Foo()
|
|
105
|
+
* - const/var Foo
|
|
106
|
+
*/
|
|
107
|
+
private extractExports;
|
|
108
|
+
/**
|
|
109
|
+
* Extract function definitions from Go source
|
|
110
|
+
*
|
|
111
|
+
* Handles both regular functions and methods:
|
|
112
|
+
* - func name(params) return
|
|
113
|
+
* - func (r *Receiver) name(params) return
|
|
114
|
+
*/
|
|
115
|
+
private extractFunctions;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse go.mod file to extract module info and dependencies
|
|
119
|
+
*
|
|
120
|
+
* @param content - Content of go.mod file
|
|
121
|
+
* @returns Parsed go.mod information
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* ```typescript
|
|
125
|
+
* const modInfo = parseGoMod(goModContent)
|
|
126
|
+
* console.log(modInfo.module) // "github.com/user/project"
|
|
127
|
+
* console.log(modInfo.require) // [{ path: "...", version: "..." }]
|
|
128
|
+
* ```
|
|
129
|
+
*/
|
|
130
|
+
export declare function parseGoMod(content: string): GoModInfo;
|
|
131
|
+
//# sourceMappingURL=go.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/go.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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,YAAa,SAAQ,UAAU;IAC9C,oCAAoC;IACpC,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAA;IAChC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,4BAA4B;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAU,SAAQ,eAAe;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAO;IAC3C,QAAQ,CAAC,UAAU,WAAU;IAE7B;;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;IA2DpC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAsCtB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAyHtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAwCzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAmFrD"}
|