@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,476 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1306: Rust Language Adapter
|
|
3
|
+
*
|
|
4
|
+
* Parses Rust source files (.rs) and extracts imports, exports, and functions
|
|
5
|
+
* using regex-based parsing. Rust uses explicit `pub` visibility modifiers
|
|
6
|
+
* for public items.
|
|
7
|
+
*
|
|
8
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
9
|
+
*/
|
|
10
|
+
import { LanguageAdapter } from './base.js';
|
|
11
|
+
/**
|
|
12
|
+
* Rust Language Adapter
|
|
13
|
+
*
|
|
14
|
+
* Parses Rust source files using regex-based parsing.
|
|
15
|
+
* Handles Rust's `pub` visibility modifiers and module system.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const adapter = new RustAdapter()
|
|
20
|
+
* const result = adapter.parseFile(rustCode, 'lib.rs')
|
|
21
|
+
* console.log(result.exports) // Items with pub modifier
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export class RustAdapter extends LanguageAdapter {
|
|
25
|
+
language = 'rust';
|
|
26
|
+
extensions = ['.rs'];
|
|
27
|
+
/**
|
|
28
|
+
* Parse a Rust 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 Rust
|
|
41
|
+
// Will be added with tree-sitter integration
|
|
42
|
+
return this.parseFile(content, filePath);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get Rust framework detection rules
|
|
46
|
+
*/
|
|
47
|
+
getFrameworkRules() {
|
|
48
|
+
return [
|
|
49
|
+
{
|
|
50
|
+
name: 'Actix',
|
|
51
|
+
depIndicators: ['actix-web', 'actix-rt'],
|
|
52
|
+
importIndicators: ['actix_web', 'actix_rt'],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Rocket',
|
|
56
|
+
depIndicators: ['rocket'],
|
|
57
|
+
importIndicators: ['rocket'],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'Axum',
|
|
61
|
+
depIndicators: ['axum'],
|
|
62
|
+
importIndicators: ['axum'],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Tokio',
|
|
66
|
+
depIndicators: ['tokio'],
|
|
67
|
+
importIndicators: ['tokio'],
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: 'Serde',
|
|
71
|
+
depIndicators: ['serde', 'serde_json'],
|
|
72
|
+
importIndicators: ['serde', 'serde_json'],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Diesel',
|
|
76
|
+
depIndicators: ['diesel'],
|
|
77
|
+
importIndicators: ['diesel'],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'SQLx',
|
|
81
|
+
depIndicators: ['sqlx'],
|
|
82
|
+
importIndicators: ['sqlx'],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Clap',
|
|
86
|
+
depIndicators: ['clap'],
|
|
87
|
+
importIndicators: ['clap'],
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'Warp',
|
|
91
|
+
depIndicators: ['warp'],
|
|
92
|
+
importIndicators: ['warp'],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'Reqwest',
|
|
96
|
+
depIndicators: ['reqwest'],
|
|
97
|
+
importIndicators: ['reqwest'],
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
name: 'Hyper',
|
|
101
|
+
depIndicators: ['hyper'],
|
|
102
|
+
importIndicators: ['hyper'],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'Tonic',
|
|
106
|
+
depIndicators: ['tonic'],
|
|
107
|
+
importIndicators: ['tonic'],
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
name: 'Tracing',
|
|
111
|
+
depIndicators: ['tracing', 'tracing-subscriber'],
|
|
112
|
+
importIndicators: ['tracing', 'tracing_subscriber'],
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Clean up resources (no-op for regex-based parsing)
|
|
118
|
+
*/
|
|
119
|
+
dispose() {
|
|
120
|
+
// No resources to clean up for regex-based parsing
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Extract use statements from Rust source
|
|
124
|
+
*
|
|
125
|
+
* Handles:
|
|
126
|
+
* - use crate::module::item;
|
|
127
|
+
* - use std::collections::HashMap;
|
|
128
|
+
* - use super::parent;
|
|
129
|
+
* - use self::child;
|
|
130
|
+
* - use std::{io, fs};
|
|
131
|
+
* - use module::*;
|
|
132
|
+
* - extern crate foo;
|
|
133
|
+
*/
|
|
134
|
+
extractImports(content, filePath) {
|
|
135
|
+
const imports = [];
|
|
136
|
+
const lines = content.split('\n');
|
|
137
|
+
for (let i = 0; i < lines.length; i++) {
|
|
138
|
+
const line = lines[i].trim();
|
|
139
|
+
const lineNum = i + 1;
|
|
140
|
+
// Skip comments
|
|
141
|
+
if (line.startsWith('//') || line.startsWith('/*')) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
// Match: use module::path::{item1, item2};
|
|
145
|
+
const useGroupMatch = line.match(/^use\s+([\w:]+)::\{([^}]+)\};/);
|
|
146
|
+
if (useGroupMatch) {
|
|
147
|
+
const module = useGroupMatch[1];
|
|
148
|
+
const items = useGroupMatch[2]
|
|
149
|
+
.split(',')
|
|
150
|
+
.map((n) => n.trim())
|
|
151
|
+
.filter(Boolean)
|
|
152
|
+
// Handle self in grouped imports: use foo::{self, Bar}
|
|
153
|
+
.map((n) => (n === 'self' ? '' : n))
|
|
154
|
+
.filter(Boolean);
|
|
155
|
+
imports.push({
|
|
156
|
+
module,
|
|
157
|
+
namedImports: items,
|
|
158
|
+
isTypeOnly: false,
|
|
159
|
+
sourceFile: filePath,
|
|
160
|
+
line: lineNum,
|
|
161
|
+
});
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
// Match: use module::path::item as alias;
|
|
165
|
+
// Match: use module::path::item;
|
|
166
|
+
// Match: use module::*;
|
|
167
|
+
const useMatch = line.match(/^use\s+([\w:*]+)(?:\s+as\s+(\w+))?;/);
|
|
168
|
+
if (useMatch) {
|
|
169
|
+
let module = useMatch[1];
|
|
170
|
+
const alias = useMatch[2];
|
|
171
|
+
let namespaceImport;
|
|
172
|
+
// Check for glob import
|
|
173
|
+
if (module.endsWith('::*')) {
|
|
174
|
+
module = module.slice(0, -3);
|
|
175
|
+
namespaceImport = '*';
|
|
176
|
+
}
|
|
177
|
+
// Extract the item name from the module path
|
|
178
|
+
const pathParts = module.split('::');
|
|
179
|
+
const itemName = pathParts[pathParts.length - 1];
|
|
180
|
+
imports.push({
|
|
181
|
+
module,
|
|
182
|
+
namedImports: namespaceImport ? [] : [itemName],
|
|
183
|
+
defaultImport: alias || undefined,
|
|
184
|
+
namespaceImport,
|
|
185
|
+
isTypeOnly: false,
|
|
186
|
+
sourceFile: filePath,
|
|
187
|
+
line: lineNum,
|
|
188
|
+
});
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
// Match: extern crate foo;
|
|
192
|
+
// Match: extern crate foo as bar;
|
|
193
|
+
const externMatch = line.match(/^extern\s+crate\s+(\w+)(?:\s+as\s+(\w+))?;/);
|
|
194
|
+
if (externMatch) {
|
|
195
|
+
imports.push({
|
|
196
|
+
module: externMatch[1],
|
|
197
|
+
namedImports: [],
|
|
198
|
+
defaultImport: externMatch[2] || undefined,
|
|
199
|
+
isTypeOnly: false,
|
|
200
|
+
sourceFile: filePath,
|
|
201
|
+
line: lineNum,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return imports;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Extract exports (pub items) from Rust source
|
|
209
|
+
*
|
|
210
|
+
* In Rust, items prefixed with `pub` are public.
|
|
211
|
+
* Handles visibility modifiers: pub, pub(crate), pub(super), pub(in path)
|
|
212
|
+
*/
|
|
213
|
+
extractExports(content, filePath) {
|
|
214
|
+
const exports = [];
|
|
215
|
+
const lines = content.split('\n');
|
|
216
|
+
for (let i = 0; i < lines.length; i++) {
|
|
217
|
+
const line = lines[i];
|
|
218
|
+
const lineNum = i + 1;
|
|
219
|
+
// Skip comments and empty lines
|
|
220
|
+
const trimmed = line.trim();
|
|
221
|
+
if (trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed === '') {
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
// pub struct Name
|
|
225
|
+
const structMatch = line.match(/^(pub(?:\([^)]+\))?)\s+struct\s+(\w+)/);
|
|
226
|
+
if (structMatch) {
|
|
227
|
+
exports.push({
|
|
228
|
+
name: structMatch[2],
|
|
229
|
+
kind: 'struct',
|
|
230
|
+
isDefault: false,
|
|
231
|
+
sourceFile: filePath,
|
|
232
|
+
visibility: 'public',
|
|
233
|
+
line: lineNum,
|
|
234
|
+
});
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
// pub enum Name
|
|
238
|
+
const enumMatch = line.match(/^(pub(?:\([^)]+\))?)\s+enum\s+(\w+)/);
|
|
239
|
+
if (enumMatch) {
|
|
240
|
+
exports.push({
|
|
241
|
+
name: enumMatch[2],
|
|
242
|
+
kind: 'enum',
|
|
243
|
+
isDefault: false,
|
|
244
|
+
sourceFile: filePath,
|
|
245
|
+
visibility: 'public',
|
|
246
|
+
line: lineNum,
|
|
247
|
+
});
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
// pub trait Name
|
|
251
|
+
const traitMatch = line.match(/^(pub(?:\([^)]+\))?)\s+trait\s+(\w+)/);
|
|
252
|
+
if (traitMatch) {
|
|
253
|
+
exports.push({
|
|
254
|
+
name: traitMatch[2],
|
|
255
|
+
kind: 'trait',
|
|
256
|
+
isDefault: false,
|
|
257
|
+
sourceFile: filePath,
|
|
258
|
+
visibility: 'public',
|
|
259
|
+
line: lineNum,
|
|
260
|
+
});
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
// pub fn name or pub async fn name
|
|
264
|
+
const fnMatch = line.match(/^(pub(?:\([^)]+\))?)\s+(?:async\s+)?fn\s+(\w+)/);
|
|
265
|
+
if (fnMatch) {
|
|
266
|
+
exports.push({
|
|
267
|
+
name: fnMatch[2],
|
|
268
|
+
kind: 'function',
|
|
269
|
+
isDefault: false,
|
|
270
|
+
sourceFile: filePath,
|
|
271
|
+
visibility: 'public',
|
|
272
|
+
line: lineNum,
|
|
273
|
+
});
|
|
274
|
+
continue;
|
|
275
|
+
}
|
|
276
|
+
// pub mod name
|
|
277
|
+
const modMatch = line.match(/^(pub(?:\([^)]+\))?)\s+mod\s+(\w+)/);
|
|
278
|
+
if (modMatch) {
|
|
279
|
+
exports.push({
|
|
280
|
+
name: modMatch[2],
|
|
281
|
+
kind: 'module',
|
|
282
|
+
isDefault: false,
|
|
283
|
+
sourceFile: filePath,
|
|
284
|
+
visibility: 'public',
|
|
285
|
+
line: lineNum,
|
|
286
|
+
});
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
// pub type Name = ...
|
|
290
|
+
const typeMatch = line.match(/^(pub(?:\([^)]+\))?)\s+type\s+(\w+)/);
|
|
291
|
+
if (typeMatch) {
|
|
292
|
+
exports.push({
|
|
293
|
+
name: typeMatch[2],
|
|
294
|
+
kind: 'type',
|
|
295
|
+
isDefault: false,
|
|
296
|
+
sourceFile: filePath,
|
|
297
|
+
visibility: 'public',
|
|
298
|
+
line: lineNum,
|
|
299
|
+
});
|
|
300
|
+
continue;
|
|
301
|
+
}
|
|
302
|
+
// pub const NAME or pub static NAME
|
|
303
|
+
const constMatch = line.match(/^(pub(?:\([^)]+\))?)\s+(?:const|static)\s+(\w+)/);
|
|
304
|
+
if (constMatch) {
|
|
305
|
+
exports.push({
|
|
306
|
+
name: constMatch[2],
|
|
307
|
+
kind: 'variable',
|
|
308
|
+
isDefault: false,
|
|
309
|
+
sourceFile: filePath,
|
|
310
|
+
visibility: 'public',
|
|
311
|
+
line: lineNum,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
return exports;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Extract function definitions from Rust source
|
|
319
|
+
*
|
|
320
|
+
* Handles:
|
|
321
|
+
* - fn name(params)
|
|
322
|
+
* - pub fn name(params)
|
|
323
|
+
* - async fn name(params)
|
|
324
|
+
* - pub async fn name(params)
|
|
325
|
+
* - Functions with generics: fn name<T>(params)
|
|
326
|
+
*/
|
|
327
|
+
extractFunctions(content, filePath) {
|
|
328
|
+
const functions = [];
|
|
329
|
+
const lines = content.split('\n');
|
|
330
|
+
for (let i = 0; i < lines.length; i++) {
|
|
331
|
+
const line = lines[i];
|
|
332
|
+
const lineNum = i + 1;
|
|
333
|
+
// Match: fn name(params) or async fn name(params) or pub fn name(params)
|
|
334
|
+
// Handle generics: fn name<T, U>(params)
|
|
335
|
+
const match = line.match(/^(\s*)(pub(?:\([^)]+\))?\s+)?(async\s+)?fn\s+(\w+)\s*(?:<[^>]*>)?\s*\(([^)]*)\)/);
|
|
336
|
+
if (match) {
|
|
337
|
+
const _indentation = match[1];
|
|
338
|
+
const pubModifier = match[2];
|
|
339
|
+
const isAsync = !!match[3];
|
|
340
|
+
const name = match[4];
|
|
341
|
+
const paramsStr = match[5];
|
|
342
|
+
// Count parameters (excluding self/&self/&mut self)
|
|
343
|
+
let paramCount = 0;
|
|
344
|
+
if (paramsStr.trim()) {
|
|
345
|
+
const params = paramsStr.split(',');
|
|
346
|
+
for (const param of params) {
|
|
347
|
+
const trimmed = param.trim();
|
|
348
|
+
// Skip self parameters
|
|
349
|
+
if (trimmed && !trimmed.match(/^&?(?:mut\s+)?self$/)) {
|
|
350
|
+
paramCount++;
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
// Check for attributes (decorators) above the function
|
|
355
|
+
const attributes = [];
|
|
356
|
+
for (let j = i - 1; j >= 0; j--) {
|
|
357
|
+
const prevLine = lines[j].trim();
|
|
358
|
+
if (prevLine.startsWith('#[')) {
|
|
359
|
+
// Extract attribute name: #[test] -> test, #[tokio::test] -> tokio::test
|
|
360
|
+
const attrMatch = prevLine.match(/#\[([^\]]+)\]/);
|
|
361
|
+
if (attrMatch) {
|
|
362
|
+
// Get just the attribute name, not its arguments
|
|
363
|
+
const attrContent = attrMatch[1];
|
|
364
|
+
const attrName = attrContent.split('(')[0].trim();
|
|
365
|
+
attributes.unshift(attrName);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else if (prevLine === '' || prevLine.startsWith('//')) {
|
|
369
|
+
// Skip empty lines and comments
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
// Stop if we hit non-attribute, non-comment content
|
|
374
|
+
break;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
functions.push({
|
|
378
|
+
name,
|
|
379
|
+
parameterCount: paramCount,
|
|
380
|
+
isAsync,
|
|
381
|
+
isExported: !!pubModifier,
|
|
382
|
+
sourceFile: filePath,
|
|
383
|
+
line: lineNum,
|
|
384
|
+
attributes: attributes.length > 0 ? attributes : undefined,
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return functions;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Parse Cargo.toml to extract dependencies
|
|
393
|
+
*
|
|
394
|
+
* @param content - Content of Cargo.toml file
|
|
395
|
+
* @returns Array of dependencies with name, version, and isDev flag
|
|
396
|
+
*
|
|
397
|
+
* @example
|
|
398
|
+
* ```typescript
|
|
399
|
+
* const deps = parseCargoToml(cargoTomlContent)
|
|
400
|
+
* console.log(deps) // [{ name: 'serde', version: '1.0', isDev: false }]
|
|
401
|
+
* ```
|
|
402
|
+
*/
|
|
403
|
+
export function parseCargoToml(content) {
|
|
404
|
+
const deps = [];
|
|
405
|
+
const lines = content.split('\n');
|
|
406
|
+
let inDeps = false;
|
|
407
|
+
let inDevDeps = false;
|
|
408
|
+
let inBuildDeps = false;
|
|
409
|
+
for (const line of lines) {
|
|
410
|
+
const trimmed = line.trim();
|
|
411
|
+
// Track which section we're in
|
|
412
|
+
if (trimmed === '[dependencies]') {
|
|
413
|
+
inDeps = true;
|
|
414
|
+
inDevDeps = false;
|
|
415
|
+
inBuildDeps = false;
|
|
416
|
+
continue;
|
|
417
|
+
}
|
|
418
|
+
if (trimmed === '[dev-dependencies]') {
|
|
419
|
+
inDeps = false;
|
|
420
|
+
inDevDeps = true;
|
|
421
|
+
inBuildDeps = false;
|
|
422
|
+
continue;
|
|
423
|
+
}
|
|
424
|
+
if (trimmed === '[build-dependencies]') {
|
|
425
|
+
inDeps = false;
|
|
426
|
+
inDevDeps = false;
|
|
427
|
+
inBuildDeps = true;
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
// Any other section header exits dependency sections
|
|
431
|
+
if (trimmed.startsWith('[')) {
|
|
432
|
+
inDeps = false;
|
|
433
|
+
inDevDeps = false;
|
|
434
|
+
inBuildDeps = false;
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
// Parse dependencies in relevant sections
|
|
438
|
+
if (inDeps || inDevDeps || inBuildDeps) {
|
|
439
|
+
// Skip empty lines and comments
|
|
440
|
+
if (trimmed === '' || trimmed.startsWith('#')) {
|
|
441
|
+
continue;
|
|
442
|
+
}
|
|
443
|
+
// Simple format: name = "version"
|
|
444
|
+
const simpleMatch = trimmed.match(/^([\w-]+)\s*=\s*"([^"]+)"/);
|
|
445
|
+
if (simpleMatch) {
|
|
446
|
+
deps.push({
|
|
447
|
+
name: simpleMatch[1],
|
|
448
|
+
version: simpleMatch[2],
|
|
449
|
+
isDev: inDevDeps,
|
|
450
|
+
});
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
// Table format: name = { version = "1.0", features = [...] }
|
|
454
|
+
const tableMatch = trimmed.match(/^([\w-]+)\s*=\s*\{.*version\s*=\s*"([^"]+)"/);
|
|
455
|
+
if (tableMatch) {
|
|
456
|
+
deps.push({
|
|
457
|
+
name: tableMatch[1],
|
|
458
|
+
version: tableMatch[2],
|
|
459
|
+
isDev: inDevDeps,
|
|
460
|
+
});
|
|
461
|
+
continue;
|
|
462
|
+
}
|
|
463
|
+
// Git/path dependencies without version (we still capture them)
|
|
464
|
+
const gitMatch = trimmed.match(/^([\w-]+)\s*=\s*\{.*(?:git|path)\s*=/);
|
|
465
|
+
if (gitMatch) {
|
|
466
|
+
deps.push({
|
|
467
|
+
name: gitMatch[1],
|
|
468
|
+
version: 'git/path',
|
|
469
|
+
isDev: inDevDeps,
|
|
470
|
+
});
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return deps;
|
|
475
|
+
}
|
|
476
|
+
//# sourceMappingURL=rust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/rust.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1310: TypeScript Language Adapter
|
|
3
|
+
*
|
|
4
|
+
* TypeScript/JavaScript adapter using the existing TypeScript compiler API.
|
|
5
|
+
* Falls back to tree-sitter for incremental parsing (SMI-1309).
|
|
6
|
+
*
|
|
7
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
8
|
+
*/
|
|
9
|
+
import { LanguageAdapter, type SupportedLanguage } from './base.js';
|
|
10
|
+
import { type FrameworkRule } from '../framework-detector.js';
|
|
11
|
+
import type { ParseResult } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* TypeScript/JavaScript adapter
|
|
14
|
+
*
|
|
15
|
+
* Uses the existing TypeScript compiler API for maximum accuracy.
|
|
16
|
+
* Falls back to tree-sitter for incremental parsing.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const adapter = new TypeScriptAdapter()
|
|
20
|
+
* const result = adapter.parseFile(content, 'src/index.ts')
|
|
21
|
+
* console.log(result.imports)
|
|
22
|
+
*/
|
|
23
|
+
export declare class TypeScriptAdapter extends LanguageAdapter {
|
|
24
|
+
/** Language identifier */
|
|
25
|
+
readonly language: SupportedLanguage;
|
|
26
|
+
/** Supported file extensions */
|
|
27
|
+
readonly extensions: string[];
|
|
28
|
+
/**
|
|
29
|
+
* Parse a file using TypeScript compiler API
|
|
30
|
+
*
|
|
31
|
+
* Uses the existing parseFile function from parsers.ts
|
|
32
|
+
* for maximum accuracy and backward compatibility.
|
|
33
|
+
*
|
|
34
|
+
* @param content - File content to parse
|
|
35
|
+
* @param filePath - Relative path for source file tracking
|
|
36
|
+
* @returns Parsed imports, exports, and functions
|
|
37
|
+
*/
|
|
38
|
+
parseFile(content: string, filePath: string): ParseResult;
|
|
39
|
+
/**
|
|
40
|
+
* Parse file incrementally
|
|
41
|
+
*
|
|
42
|
+
* Currently delegates to full parse. Tree-sitter incremental
|
|
43
|
+
* parsing will be implemented in SMI-1309.
|
|
44
|
+
*
|
|
45
|
+
* @param content - Updated content
|
|
46
|
+
* @param filePath - File path
|
|
47
|
+
* @param _previousTree - Previous parse tree (unused until SMI-1309)
|
|
48
|
+
* @returns Updated parse result
|
|
49
|
+
*/
|
|
50
|
+
parseIncremental(content: string, filePath: string, _previousTree?: unknown): ParseResult;
|
|
51
|
+
/**
|
|
52
|
+
* Get TypeScript/JavaScript framework detection rules
|
|
53
|
+
*
|
|
54
|
+
* Returns the existing FRAMEWORK_RULES from framework-detector.ts
|
|
55
|
+
* for backward compatibility.
|
|
56
|
+
*
|
|
57
|
+
* @returns Array of framework detection rules
|
|
58
|
+
*/
|
|
59
|
+
getFrameworkRules(): FrameworkRule[];
|
|
60
|
+
/**
|
|
61
|
+
* Clean up resources
|
|
62
|
+
*
|
|
63
|
+
* No resources to clean up for TypeScript compiler API.
|
|
64
|
+
* Tree-sitter parser cleanup will be added in SMI-1309.
|
|
65
|
+
*/
|
|
66
|
+
dispose(): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAEnE,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAe;IAEnD,gCAAgC;IAChC,QAAQ,CAAC,UAAU,WAAiD;IAEpE;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAIzD;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW;IAMzF;;;;;;;OAOG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAIpC;;;;;OAKG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMI-1310: TypeScript Language Adapter
|
|
3
|
+
*
|
|
4
|
+
* TypeScript/JavaScript adapter using the existing TypeScript compiler API.
|
|
5
|
+
* Falls back to tree-sitter for incremental parsing (SMI-1309).
|
|
6
|
+
*
|
|
7
|
+
* @see docs/architecture/multi-language-analysis.md
|
|
8
|
+
*/
|
|
9
|
+
import { LanguageAdapter } from './base.js';
|
|
10
|
+
import { parseFile as tsParseFile } from '../parsers.js';
|
|
11
|
+
import { FRAMEWORK_RULES } from '../framework-detector.js';
|
|
12
|
+
/**
|
|
13
|
+
* TypeScript/JavaScript adapter
|
|
14
|
+
*
|
|
15
|
+
* Uses the existing TypeScript compiler API for maximum accuracy.
|
|
16
|
+
* Falls back to tree-sitter for incremental parsing.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* const adapter = new TypeScriptAdapter()
|
|
20
|
+
* const result = adapter.parseFile(content, 'src/index.ts')
|
|
21
|
+
* console.log(result.imports)
|
|
22
|
+
*/
|
|
23
|
+
export class TypeScriptAdapter extends LanguageAdapter {
|
|
24
|
+
/** Language identifier */
|
|
25
|
+
language = 'typescript';
|
|
26
|
+
/** Supported file extensions */
|
|
27
|
+
extensions = ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'];
|
|
28
|
+
/**
|
|
29
|
+
* Parse a file using TypeScript compiler API
|
|
30
|
+
*
|
|
31
|
+
* Uses the existing parseFile function from parsers.ts
|
|
32
|
+
* for maximum accuracy and backward compatibility.
|
|
33
|
+
*
|
|
34
|
+
* @param content - File content to parse
|
|
35
|
+
* @param filePath - Relative path for source file tracking
|
|
36
|
+
* @returns Parsed imports, exports, and functions
|
|
37
|
+
*/
|
|
38
|
+
parseFile(content, filePath) {
|
|
39
|
+
return tsParseFile(content, filePath);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Parse file incrementally
|
|
43
|
+
*
|
|
44
|
+
* Currently delegates to full parse. Tree-sitter incremental
|
|
45
|
+
* parsing will be implemented in SMI-1309.
|
|
46
|
+
*
|
|
47
|
+
* @param content - Updated content
|
|
48
|
+
* @param filePath - File path
|
|
49
|
+
* @param _previousTree - Previous parse tree (unused until SMI-1309)
|
|
50
|
+
* @returns Updated parse result
|
|
51
|
+
*/
|
|
52
|
+
parseIncremental(content, filePath, _previousTree) {
|
|
53
|
+
// For now, delegate to full parse
|
|
54
|
+
// Incremental parsing via tree-sitter will be added in SMI-1309
|
|
55
|
+
return this.parseFile(content, filePath);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get TypeScript/JavaScript framework detection rules
|
|
59
|
+
*
|
|
60
|
+
* Returns the existing FRAMEWORK_RULES from framework-detector.ts
|
|
61
|
+
* for backward compatibility.
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of framework detection rules
|
|
64
|
+
*/
|
|
65
|
+
getFrameworkRules() {
|
|
66
|
+
return FRAMEWORK_RULES;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Clean up resources
|
|
70
|
+
*
|
|
71
|
+
* No resources to clean up for TypeScript compiler API.
|
|
72
|
+
* Tree-sitter parser cleanup will be added in SMI-1309.
|
|
73
|
+
*/
|
|
74
|
+
dispose() {
|
|
75
|
+
// No resources to clean up for TS compiler API
|
|
76
|
+
// Tree-sitter parser cleanup will be added in SMI-1309
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/typescript.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAA0B,MAAM,WAAW,CAAA;AACnE,OAAO,EAAE,SAAS,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AACxD,OAAO,EAAE,eAAe,EAAsB,MAAM,0BAA0B,CAAA;AAG9E;;;;;;;;;;GAUG;AACH,MAAM,OAAO,iBAAkB,SAAQ,eAAe;IACpD,0BAA0B;IACjB,QAAQ,GAAsB,YAAY,CAAA;IAEnD,gCAAgC;IACvB,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAEpE;;;;;;;;;OASG;IACH,SAAS,CAAC,OAAe,EAAE,QAAgB;QACzC,OAAO,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACvC,CAAC;IAED;;;;;;;;;;OAUG;IACH,gBAAgB,CAAC,OAAe,EAAE,QAAgB,EAAE,aAAuB;QACzE,kCAAkC;QAClC,gEAAgE;QAChE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB;QACf,OAAO,eAAe,CAAA;IACxB,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,+CAA+C;QAC/C,uDAAuD;IACzD,CAAC;CACF"}
|