driftdetect-core 0.6.1 → 0.7.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/LICENSE +21 -0
- package/dist/constants/analysis/categorizer.d.ts +27 -0
- package/dist/constants/analysis/categorizer.d.ts.map +1 -0
- package/dist/constants/analysis/categorizer.js +364 -0
- package/dist/constants/analysis/categorizer.js.map +1 -0
- package/dist/constants/analysis/consistency-analyzer.d.ts +77 -0
- package/dist/constants/analysis/consistency-analyzer.d.ts.map +1 -0
- package/dist/constants/analysis/consistency-analyzer.js +176 -0
- package/dist/constants/analysis/consistency-analyzer.js.map +1 -0
- package/dist/constants/analysis/dead-constant-detector.d.ts +79 -0
- package/dist/constants/analysis/dead-constant-detector.d.ts.map +1 -0
- package/dist/constants/analysis/dead-constant-detector.js +242 -0
- package/dist/constants/analysis/dead-constant-detector.js.map +1 -0
- package/dist/constants/analysis/magic-detector.d.ts +116 -0
- package/dist/constants/analysis/magic-detector.d.ts.map +1 -0
- package/dist/constants/analysis/magic-detector.js +425 -0
- package/dist/constants/analysis/magic-detector.js.map +1 -0
- package/dist/constants/analysis/reference-finder.d.ts +87 -0
- package/dist/constants/analysis/reference-finder.d.ts.map +1 -0
- package/dist/constants/analysis/reference-finder.js +269 -0
- package/dist/constants/analysis/reference-finder.js.map +1 -0
- package/dist/constants/analysis/security-scanner.d.ts +115 -0
- package/dist/constants/analysis/security-scanner.d.ts.map +1 -0
- package/dist/constants/analysis/security-scanner.js +429 -0
- package/dist/constants/analysis/security-scanner.js.map +1 -0
- package/dist/constants/extractors/base-extractor.d.ts +97 -0
- package/dist/constants/extractors/base-extractor.d.ts.map +1 -0
- package/dist/constants/extractors/base-extractor.js +285 -0
- package/dist/constants/extractors/base-extractor.js.map +1 -0
- package/dist/constants/extractors/regex/base-regex.d.ts +67 -0
- package/dist/constants/extractors/regex/base-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/base-regex.js +209 -0
- package/dist/constants/extractors/regex/base-regex.js.map +1 -0
- package/dist/constants/extractors/regex/csharp-regex.d.ts +39 -0
- package/dist/constants/extractors/regex/csharp-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/csharp-regex.js +316 -0
- package/dist/constants/extractors/regex/csharp-regex.js.map +1 -0
- package/dist/constants/extractors/regex/go-regex.d.ts +40 -0
- package/dist/constants/extractors/regex/go-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/go-regex.js +297 -0
- package/dist/constants/extractors/regex/go-regex.js.map +1 -0
- package/dist/constants/extractors/regex/java-regex.d.ts +43 -0
- package/dist/constants/extractors/regex/java-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/java-regex.js +276 -0
- package/dist/constants/extractors/regex/java-regex.js.map +1 -0
- package/dist/constants/extractors/regex/php-regex.d.ts +39 -0
- package/dist/constants/extractors/regex/php-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/php-regex.js +270 -0
- package/dist/constants/extractors/regex/php-regex.js.map +1 -0
- package/dist/constants/extractors/regex/python-regex.d.ts +39 -0
- package/dist/constants/extractors/regex/python-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/python-regex.js +287 -0
- package/dist/constants/extractors/regex/python-regex.js.map +1 -0
- package/dist/constants/extractors/regex/typescript-regex.d.ts +35 -0
- package/dist/constants/extractors/regex/typescript-regex.d.ts.map +1 -0
- package/dist/constants/extractors/regex/typescript-regex.js +313 -0
- package/dist/constants/extractors/regex/typescript-regex.js.map +1 -0
- package/dist/constants/index.d.ts +26 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +36 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/integration/callgraph-adapter.d.ts +167 -0
- package/dist/constants/integration/callgraph-adapter.d.ts.map +1 -0
- package/dist/constants/integration/callgraph-adapter.js +287 -0
- package/dist/constants/integration/callgraph-adapter.js.map +1 -0
- package/dist/constants/integration/index.d.ts +10 -0
- package/dist/constants/integration/index.d.ts.map +1 -0
- package/dist/constants/integration/index.js +13 -0
- package/dist/constants/integration/index.js.map +1 -0
- package/dist/constants/integration/pattern-adapter.d.ts +171 -0
- package/dist/constants/integration/pattern-adapter.d.ts.map +1 -0
- package/dist/constants/integration/pattern-adapter.js +331 -0
- package/dist/constants/integration/pattern-adapter.js.map +1 -0
- package/dist/constants/integration/scanner-adapter.d.ts +153 -0
- package/dist/constants/integration/scanner-adapter.d.ts.map +1 -0
- package/dist/constants/integration/scanner-adapter.js +337 -0
- package/dist/constants/integration/scanner-adapter.js.map +1 -0
- package/dist/constants/store/constant-store.d.ts +117 -0
- package/dist/constants/store/constant-store.d.ts.map +1 -0
- package/dist/constants/store/constant-store.js +367 -0
- package/dist/constants/store/constant-store.js.map +1 -0
- package/dist/constants/types.d.ts +423 -0
- package/dist/constants/types.d.ts.map +1 -0
- package/dist/constants/types.js +43 -0
- package/dist/constants/types.js.map +1 -0
- package/dist/environment/env-scanner.d.ts +53 -0
- package/dist/environment/env-scanner.d.ts.map +1 -0
- package/dist/environment/env-scanner.js +290 -0
- package/dist/environment/env-scanner.js.map +1 -0
- package/dist/environment/env-store.d.ts +70 -0
- package/dist/environment/env-store.d.ts.map +1 -0
- package/dist/environment/env-store.js +201 -0
- package/dist/environment/env-store.js.map +1 -0
- package/dist/environment/extractors/base-env-extractor.d.ts +56 -0
- package/dist/environment/extractors/base-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/base-env-extractor.js +74 -0
- package/dist/environment/extractors/base-env-extractor.js.map +1 -0
- package/dist/environment/extractors/csharp-env-extractor.d.ts +49 -0
- package/dist/environment/extractors/csharp-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/csharp-env-extractor.js +240 -0
- package/dist/environment/extractors/csharp-env-extractor.js.map +1 -0
- package/dist/environment/extractors/go-env-extractor.d.ts +53 -0
- package/dist/environment/extractors/go-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/go-env-extractor.js +267 -0
- package/dist/environment/extractors/go-env-extractor.js.map +1 -0
- package/dist/environment/extractors/index.d.ts +13 -0
- package/dist/environment/extractors/index.d.ts.map +1 -0
- package/dist/environment/extractors/index.js +13 -0
- package/dist/environment/extractors/index.js.map +1 -0
- package/dist/environment/extractors/java-env-extractor.d.ts +58 -0
- package/dist/environment/extractors/java-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/java-env-extractor.js +219 -0
- package/dist/environment/extractors/java-env-extractor.js.map +1 -0
- package/dist/environment/extractors/php-env-extractor.d.ts +58 -0
- package/dist/environment/extractors/php-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/php-env-extractor.js +231 -0
- package/dist/environment/extractors/php-env-extractor.js.map +1 -0
- package/dist/environment/extractors/python-env-extractor.d.ts +50 -0
- package/dist/environment/extractors/python-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/python-env-extractor.js +219 -0
- package/dist/environment/extractors/python-env-extractor.js.map +1 -0
- package/dist/environment/extractors/typescript-env-extractor.d.ts +54 -0
- package/dist/environment/extractors/typescript-env-extractor.d.ts.map +1 -0
- package/dist/environment/extractors/typescript-env-extractor.js +228 -0
- package/dist/environment/extractors/typescript-env-extractor.js.map +1 -0
- package/dist/environment/index.d.ts +11 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +15 -0
- package/dist/environment/index.js.map +1 -0
- package/dist/environment/types.d.ts +145 -0
- package/dist/environment/types.d.ts.map +1 -0
- package/dist/environment/types.js +84 -0
- package/dist/environment/types.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -1
- package/package.json +13 -13
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Constant Extractor
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for hybrid constant extractors that combine
|
|
5
|
+
* tree-sitter (primary) with regex fallback for enterprise-grade coverage.
|
|
6
|
+
*
|
|
7
|
+
* Follows the same pattern as call-graph/extractors/hybrid-extractor-base.ts
|
|
8
|
+
*/
|
|
9
|
+
import { DEFAULT_CONSTANT_HYBRID_CONFIG, CONSTANT_EXTRACTION_CONFIDENCE, } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base class for hybrid constant extractors
|
|
12
|
+
*/
|
|
13
|
+
export class BaseConstantExtractor {
|
|
14
|
+
/** Configuration */
|
|
15
|
+
config;
|
|
16
|
+
constructor(config) {
|
|
17
|
+
this.config = { ...DEFAULT_CONSTANT_HYBRID_CONFIG, ...config };
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Check if this extractor can handle a file
|
|
21
|
+
*/
|
|
22
|
+
canHandle(filePath) {
|
|
23
|
+
const ext = this.getExtension(filePath);
|
|
24
|
+
return this.extensions.includes(ext);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extract constants with hybrid approach: tree-sitter first, regex fallback
|
|
28
|
+
*/
|
|
29
|
+
extract(source, filePath) {
|
|
30
|
+
const startTime = performance.now();
|
|
31
|
+
// Try tree-sitter first if enabled
|
|
32
|
+
if (this.config.enableTreeSitter) {
|
|
33
|
+
try {
|
|
34
|
+
const treeSitterResult = this.extractWithTreeSitter(source, filePath);
|
|
35
|
+
// If tree-sitter succeeded with good results, return them
|
|
36
|
+
if (treeSitterResult && treeSitterResult.errors.length === 0) {
|
|
37
|
+
const quality = this.createTreeSitterQuality(treeSitterResult, startTime);
|
|
38
|
+
// Check if we got meaningful results
|
|
39
|
+
if (this.hasGoodCoverage(treeSitterResult)) {
|
|
40
|
+
return { ...treeSitterResult, quality };
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Tree-sitter had errors or poor coverage - try regex fallback
|
|
44
|
+
if (this.config.enableRegexFallback) {
|
|
45
|
+
return this.extractWithFallback(source, filePath, treeSitterResult, startTime);
|
|
46
|
+
}
|
|
47
|
+
// No fallback enabled, return tree-sitter result as-is
|
|
48
|
+
if (treeSitterResult) {
|
|
49
|
+
const quality = this.createTreeSitterQuality(treeSitterResult, startTime);
|
|
50
|
+
return { ...treeSitterResult, quality };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
// Tree-sitter failed completely - use regex fallback
|
|
55
|
+
if (this.config.enableRegexFallback) {
|
|
56
|
+
return this.extractWithRegexOnly(source, filePath, startTime, error);
|
|
57
|
+
}
|
|
58
|
+
// No fallback, return error result
|
|
59
|
+
return this.createErrorResult(filePath, error, startTime);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// Tree-sitter disabled - use regex only
|
|
63
|
+
if (this.config.enableRegexFallback) {
|
|
64
|
+
return this.extractWithRegexOnly(source, filePath, startTime);
|
|
65
|
+
}
|
|
66
|
+
// Nothing enabled - return empty result
|
|
67
|
+
return this.createEmptyResult(filePath, startTime);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract with regex fallback, merging with tree-sitter results
|
|
71
|
+
*/
|
|
72
|
+
extractWithFallback(source, filePath, treeSitterResult, startTime) {
|
|
73
|
+
// Get regex results
|
|
74
|
+
const regexResult = this.regexExtractor.extract(source, filePath);
|
|
75
|
+
if (!treeSitterResult) {
|
|
76
|
+
// No tree-sitter result - use regex only
|
|
77
|
+
regexResult.quality.extractionTimeMs = performance.now() - startTime;
|
|
78
|
+
return regexResult;
|
|
79
|
+
}
|
|
80
|
+
// Merge results
|
|
81
|
+
const merged = this.mergeResults(treeSitterResult, regexResult);
|
|
82
|
+
// Create merged quality
|
|
83
|
+
const quality = this.createMergedQuality(treeSitterResult, regexResult, startTime);
|
|
84
|
+
return { ...merged, quality };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract using regex only
|
|
88
|
+
*/
|
|
89
|
+
extractWithRegexOnly(source, filePath, startTime, treeSitterError) {
|
|
90
|
+
const result = this.regexExtractor.extract(source, filePath);
|
|
91
|
+
// Add tree-sitter error to warnings if present
|
|
92
|
+
if (treeSitterError) {
|
|
93
|
+
const errorMsg = treeSitterError instanceof Error
|
|
94
|
+
? treeSitterError.message
|
|
95
|
+
: 'Tree-sitter unavailable';
|
|
96
|
+
result.quality.warnings.push(`Tree-sitter fallback: ${errorMsg}`);
|
|
97
|
+
}
|
|
98
|
+
result.quality.usedFallback = true;
|
|
99
|
+
result.quality.extractionTimeMs = performance.now() - startTime;
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Merge tree-sitter and regex results
|
|
104
|
+
*/
|
|
105
|
+
mergeResults(primary, fallback) {
|
|
106
|
+
return {
|
|
107
|
+
file: primary.file,
|
|
108
|
+
language: primary.language,
|
|
109
|
+
constants: this.mergeUniqueConstants(primary.constants, fallback.constants),
|
|
110
|
+
enums: this.mergeUniqueEnums(primary.enums, fallback.enums),
|
|
111
|
+
references: this.mergeUniqueReferences(primary.references, fallback.references),
|
|
112
|
+
errors: [...primary.errors],
|
|
113
|
+
quality: primary.quality, // Will be replaced by caller
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Merge constants, avoiding duplicates
|
|
118
|
+
*/
|
|
119
|
+
mergeUniqueConstants(primary, fallback) {
|
|
120
|
+
const seen = new Set(primary.map((c) => `${c.name}:${c.line}`));
|
|
121
|
+
const result = [...primary];
|
|
122
|
+
for (const constant of fallback) {
|
|
123
|
+
const key = `${constant.name}:${constant.line}`;
|
|
124
|
+
if (!seen.has(key)) {
|
|
125
|
+
seen.add(key);
|
|
126
|
+
result.push(constant);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Merge enums, avoiding duplicates
|
|
133
|
+
*/
|
|
134
|
+
mergeUniqueEnums(primary, fallback) {
|
|
135
|
+
const seen = new Set(primary.map((e) => `${e.name}:${e.line}`));
|
|
136
|
+
const result = [...primary];
|
|
137
|
+
for (const enumDef of fallback) {
|
|
138
|
+
const key = `${enumDef.name}:${enumDef.line}`;
|
|
139
|
+
if (!seen.has(key)) {
|
|
140
|
+
seen.add(key);
|
|
141
|
+
result.push(enumDef);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Merge references, avoiding duplicates
|
|
148
|
+
*/
|
|
149
|
+
mergeUniqueReferences(primary, fallback) {
|
|
150
|
+
const seen = new Set(primary.map((r) => `${r.constantId}:${r.line}:${r.column}`));
|
|
151
|
+
const result = [...primary];
|
|
152
|
+
for (const ref of fallback) {
|
|
153
|
+
const key = `${ref.constantId}:${ref.line}:${ref.column}`;
|
|
154
|
+
if (!seen.has(key)) {
|
|
155
|
+
seen.add(key);
|
|
156
|
+
result.push(ref);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return result;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Check if extraction result has good coverage
|
|
163
|
+
*/
|
|
164
|
+
hasGoodCoverage(result) {
|
|
165
|
+
// Consider it good if we found at least some constants or enums
|
|
166
|
+
// or if there were no errors (file might just have no constants)
|
|
167
|
+
return (result.constants.length > 0 ||
|
|
168
|
+
result.enums.length > 0 ||
|
|
169
|
+
result.errors.length === 0);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Create quality metrics for tree-sitter extraction
|
|
173
|
+
*/
|
|
174
|
+
createTreeSitterQuality(result, startTime) {
|
|
175
|
+
return {
|
|
176
|
+
method: 'tree-sitter',
|
|
177
|
+
confidence: result.errors.length === 0
|
|
178
|
+
? CONSTANT_EXTRACTION_CONFIDENCE.TREE_SITTER
|
|
179
|
+
: CONSTANT_EXTRACTION_CONFIDENCE.REGEX,
|
|
180
|
+
coveragePercent: result.errors.length === 0 ? 95 : 70,
|
|
181
|
+
itemsExtracted: result.constants.length + result.enums.length,
|
|
182
|
+
parseErrors: result.errors.length,
|
|
183
|
+
warnings: [],
|
|
184
|
+
usedFallback: false,
|
|
185
|
+
extractionTimeMs: performance.now() - startTime,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Create merged quality metrics
|
|
190
|
+
*/
|
|
191
|
+
createMergedQuality(treeSitterResult, regexResult, startTime) {
|
|
192
|
+
const treeSitterItems = treeSitterResult.constants.length + treeSitterResult.enums.length;
|
|
193
|
+
const regexItems = regexResult.constants.length + regexResult.enums.length;
|
|
194
|
+
const totalItems = Math.max(treeSitterItems, regexItems);
|
|
195
|
+
return {
|
|
196
|
+
method: 'hybrid',
|
|
197
|
+
confidence: CONSTANT_EXTRACTION_CONFIDENCE.HYBRID,
|
|
198
|
+
coveragePercent: 90,
|
|
199
|
+
itemsExtracted: totalItems,
|
|
200
|
+
parseErrors: treeSitterResult.errors.length,
|
|
201
|
+
warnings: [
|
|
202
|
+
...regexResult.quality.warnings,
|
|
203
|
+
`Merged ${treeSitterItems} tree-sitter + ${regexItems} regex items`,
|
|
204
|
+
],
|
|
205
|
+
usedFallback: true,
|
|
206
|
+
extractionTimeMs: performance.now() - startTime,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Create error result
|
|
211
|
+
*/
|
|
212
|
+
createErrorResult(filePath, error, startTime) {
|
|
213
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown extraction error';
|
|
214
|
+
return {
|
|
215
|
+
file: filePath,
|
|
216
|
+
language: this.language,
|
|
217
|
+
constants: [],
|
|
218
|
+
enums: [],
|
|
219
|
+
references: [],
|
|
220
|
+
errors: [errorMsg],
|
|
221
|
+
quality: {
|
|
222
|
+
method: 'tree-sitter',
|
|
223
|
+
confidence: CONSTANT_EXTRACTION_CONFIDENCE.UNKNOWN,
|
|
224
|
+
coveragePercent: 0,
|
|
225
|
+
itemsExtracted: 0,
|
|
226
|
+
parseErrors: 1,
|
|
227
|
+
warnings: [],
|
|
228
|
+
usedFallback: false,
|
|
229
|
+
extractionTimeMs: performance.now() - startTime,
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Create empty result
|
|
235
|
+
*/
|
|
236
|
+
createEmptyResult(filePath, startTime) {
|
|
237
|
+
return {
|
|
238
|
+
file: filePath,
|
|
239
|
+
language: this.language,
|
|
240
|
+
constants: [],
|
|
241
|
+
enums: [],
|
|
242
|
+
references: [],
|
|
243
|
+
errors: ['No extraction method available'],
|
|
244
|
+
quality: {
|
|
245
|
+
method: 'tree-sitter',
|
|
246
|
+
confidence: 0,
|
|
247
|
+
coveragePercent: 0,
|
|
248
|
+
itemsExtracted: 0,
|
|
249
|
+
parseErrors: 0,
|
|
250
|
+
warnings: ['No extraction method enabled'],
|
|
251
|
+
usedFallback: false,
|
|
252
|
+
extractionTimeMs: performance.now() - startTime,
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get file extension
|
|
258
|
+
*/
|
|
259
|
+
getExtension(filePath) {
|
|
260
|
+
const lastDot = filePath.lastIndexOf('.');
|
|
261
|
+
return lastDot >= 0 ? filePath.slice(lastDot) : '';
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Generate constant ID
|
|
265
|
+
*/
|
|
266
|
+
generateConstantId(file, name, line) {
|
|
267
|
+
return `${file}:${name}:${line}`;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Create default quality metrics
|
|
271
|
+
*/
|
|
272
|
+
createDefaultQuality() {
|
|
273
|
+
return {
|
|
274
|
+
method: 'tree-sitter',
|
|
275
|
+
confidence: CONSTANT_EXTRACTION_CONFIDENCE.TREE_SITTER,
|
|
276
|
+
coveragePercent: 0,
|
|
277
|
+
itemsExtracted: 0,
|
|
278
|
+
parseErrors: 0,
|
|
279
|
+
warnings: [],
|
|
280
|
+
usedFallback: false,
|
|
281
|
+
extractionTimeMs: 0,
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=base-extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-extractor.js","sourceRoot":"","sources":["../../../src/constants/extractors/base-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Constant Regex Extractor
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for regex-based constant extraction.
|
|
5
|
+
* Used as fallback when tree-sitter is unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConstantLanguage, FileConstantResult, ConstantExtraction, EnumExtraction, ConstantKind } from '../../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Abstract base class for regex-based constant extractors
|
|
10
|
+
*/
|
|
11
|
+
export declare abstract class BaseConstantRegexExtractor {
|
|
12
|
+
/** Language this extractor handles */
|
|
13
|
+
abstract readonly language: ConstantLanguage;
|
|
14
|
+
/**
|
|
15
|
+
* Extract constants using regex patterns
|
|
16
|
+
*/
|
|
17
|
+
extract(source: string, filePath: string): FileConstantResult;
|
|
18
|
+
/**
|
|
19
|
+
* Extract constants (implemented by subclass)
|
|
20
|
+
*/
|
|
21
|
+
protected abstract extractConstants(source: string, filePath: string): ConstantExtraction[];
|
|
22
|
+
/**
|
|
23
|
+
* Extract enums (implemented by subclass)
|
|
24
|
+
*/
|
|
25
|
+
protected abstract extractEnums(source: string, filePath: string): EnumExtraction[];
|
|
26
|
+
/**
|
|
27
|
+
* Create quality metrics
|
|
28
|
+
*/
|
|
29
|
+
private createQuality;
|
|
30
|
+
/**
|
|
31
|
+
* Generate constant ID
|
|
32
|
+
*/
|
|
33
|
+
protected generateId(file: string, name: string, line: number): string;
|
|
34
|
+
/**
|
|
35
|
+
* Get line number from character index
|
|
36
|
+
*/
|
|
37
|
+
protected getLineNumber(source: string, index: number): number;
|
|
38
|
+
/**
|
|
39
|
+
* Get column number from character index
|
|
40
|
+
*/
|
|
41
|
+
protected getColumnNumber(source: string, index: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* Extract value from a string literal
|
|
44
|
+
*/
|
|
45
|
+
protected extractStringValue(raw: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Extract value from a numeric literal
|
|
48
|
+
*/
|
|
49
|
+
protected extractNumericValue(raw: string): number | null;
|
|
50
|
+
/**
|
|
51
|
+
* Determine constant kind from value
|
|
52
|
+
*/
|
|
53
|
+
protected inferKind(value: string): ConstantKind;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a name looks like a constant (UPPER_CASE)
|
|
56
|
+
*/
|
|
57
|
+
protected isConstantName(name: string): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Extract doc comment before a line
|
|
60
|
+
*/
|
|
61
|
+
protected extractDocComment(source: string, lineIndex: number): string | undefined;
|
|
62
|
+
/**
|
|
63
|
+
* Truncate value for storage (max 500 chars)
|
|
64
|
+
*/
|
|
65
|
+
protected truncateValue(value: string, maxLength?: number): string;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=base-regex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-regex.d.ts","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/base-regex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EAEd,YAAY,EACb,MAAM,gBAAgB,CAAC;AAIxB;;GAEG;AACH,8BAAsB,0BAA0B;IAC9C,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IAE7C;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB;IAuC7D;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAE3F;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IAEnF;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAItE;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAK9D;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM;IAKhE;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAajD;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAKzD;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY;IAyBhD;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAY/C;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAsDlF;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,GAAE,MAAY,GAAG,MAAM;CAMxE"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base Constant Regex Extractor
|
|
3
|
+
*
|
|
4
|
+
* Abstract base class for regex-based constant extraction.
|
|
5
|
+
* Used as fallback when tree-sitter is unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import { CONSTANT_EXTRACTION_CONFIDENCE } from '../../types.js';
|
|
8
|
+
import { inferCategory } from '../../analysis/categorizer.js';
|
|
9
|
+
/**
|
|
10
|
+
* Abstract base class for regex-based constant extractors
|
|
11
|
+
*/
|
|
12
|
+
export class BaseConstantRegexExtractor {
|
|
13
|
+
/**
|
|
14
|
+
* Extract constants using regex patterns
|
|
15
|
+
*/
|
|
16
|
+
extract(source, filePath) {
|
|
17
|
+
const startTime = performance.now();
|
|
18
|
+
const constants = [];
|
|
19
|
+
const enums = [];
|
|
20
|
+
const errors = [];
|
|
21
|
+
try {
|
|
22
|
+
// Extract constants
|
|
23
|
+
const extractedConstants = this.extractConstants(source, filePath);
|
|
24
|
+
constants.push(...extractedConstants);
|
|
25
|
+
// Extract enums
|
|
26
|
+
const extractedEnums = this.extractEnums(source, filePath);
|
|
27
|
+
enums.push(...extractedEnums);
|
|
28
|
+
// Infer categories for constants
|
|
29
|
+
for (const constant of constants) {
|
|
30
|
+
if (constant.category === 'uncategorized') {
|
|
31
|
+
constant.category = inferCategory(constant);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
const errorMsg = error instanceof Error ? error.message : 'Unknown regex extraction error';
|
|
37
|
+
errors.push(errorMsg);
|
|
38
|
+
}
|
|
39
|
+
const quality = this.createQuality(constants, enums, errors, startTime);
|
|
40
|
+
return {
|
|
41
|
+
file: filePath,
|
|
42
|
+
language: this.language,
|
|
43
|
+
constants,
|
|
44
|
+
enums,
|
|
45
|
+
references: [], // Regex doesn't track references
|
|
46
|
+
errors,
|
|
47
|
+
quality,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create quality metrics
|
|
52
|
+
*/
|
|
53
|
+
createQuality(constants, enums, errors, startTime) {
|
|
54
|
+
return {
|
|
55
|
+
method: 'regex',
|
|
56
|
+
confidence: errors.length === 0 ? CONSTANT_EXTRACTION_CONFIDENCE.REGEX : 0.5,
|
|
57
|
+
coveragePercent: 75, // Regex typically catches ~75% of constants
|
|
58
|
+
itemsExtracted: constants.length + enums.length,
|
|
59
|
+
parseErrors: errors.length,
|
|
60
|
+
warnings: [],
|
|
61
|
+
usedFallback: true,
|
|
62
|
+
extractionTimeMs: performance.now() - startTime,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Generate constant ID
|
|
67
|
+
*/
|
|
68
|
+
generateId(file, name, line) {
|
|
69
|
+
return `${file}:${name}:${line}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get line number from character index
|
|
73
|
+
*/
|
|
74
|
+
getLineNumber(source, index) {
|
|
75
|
+
const lines = source.slice(0, index).split('\n');
|
|
76
|
+
return lines.length;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get column number from character index
|
|
80
|
+
*/
|
|
81
|
+
getColumnNumber(source, index) {
|
|
82
|
+
const lastNewline = source.lastIndexOf('\n', index - 1);
|
|
83
|
+
return index - lastNewline;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract value from a string literal
|
|
87
|
+
*/
|
|
88
|
+
extractStringValue(raw) {
|
|
89
|
+
// Remove quotes
|
|
90
|
+
if ((raw.startsWith('"') && raw.endsWith('"')) ||
|
|
91
|
+
(raw.startsWith("'") && raw.endsWith("'"))) {
|
|
92
|
+
return raw.slice(1, -1);
|
|
93
|
+
}
|
|
94
|
+
// Template literals
|
|
95
|
+
if (raw.startsWith('`') && raw.endsWith('`')) {
|
|
96
|
+
return raw.slice(1, -1);
|
|
97
|
+
}
|
|
98
|
+
return raw;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract value from a numeric literal
|
|
102
|
+
*/
|
|
103
|
+
extractNumericValue(raw) {
|
|
104
|
+
const num = parseFloat(raw);
|
|
105
|
+
return isNaN(num) ? null : num;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Determine constant kind from value
|
|
109
|
+
*/
|
|
110
|
+
inferKind(value) {
|
|
111
|
+
// Check for object literal
|
|
112
|
+
if (value.trim().startsWith('{')) {
|
|
113
|
+
return 'object';
|
|
114
|
+
}
|
|
115
|
+
// Check for array literal
|
|
116
|
+
if (value.trim().startsWith('[')) {
|
|
117
|
+
return 'array';
|
|
118
|
+
}
|
|
119
|
+
// Check for string
|
|
120
|
+
if (value.startsWith('"') || value.startsWith("'") || value.startsWith('`')) {
|
|
121
|
+
return 'primitive';
|
|
122
|
+
}
|
|
123
|
+
// Check for number
|
|
124
|
+
if (/^-?\d+(\.\d+)?$/.test(value.trim())) {
|
|
125
|
+
return 'primitive';
|
|
126
|
+
}
|
|
127
|
+
// Check for boolean
|
|
128
|
+
if (value === 'true' || value === 'false') {
|
|
129
|
+
return 'primitive';
|
|
130
|
+
}
|
|
131
|
+
// Otherwise it's computed
|
|
132
|
+
return 'computed';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if a name looks like a constant (UPPER_CASE)
|
|
136
|
+
*/
|
|
137
|
+
isConstantName(name) {
|
|
138
|
+
// All uppercase with underscores
|
|
139
|
+
if (/^[A-Z][A-Z0-9_]*$/.test(name)) {
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
// PascalCase constants (common in C#, Go)
|
|
143
|
+
if (/^[A-Z][a-zA-Z0-9]*$/.test(name)) {
|
|
144
|
+
return true;
|
|
145
|
+
}
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Extract doc comment before a line
|
|
150
|
+
*/
|
|
151
|
+
extractDocComment(source, lineIndex) {
|
|
152
|
+
const lines = source.split('\n');
|
|
153
|
+
if (lineIndex <= 0 || lineIndex > lines.length) {
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const comments = [];
|
|
157
|
+
let i = lineIndex - 2; // Line before the constant (0-indexed)
|
|
158
|
+
// Look for JSDoc/JavaDoc style comments
|
|
159
|
+
while (i >= 0) {
|
|
160
|
+
const line = lines[i]?.trim();
|
|
161
|
+
if (!line && line !== '')
|
|
162
|
+
break; // undefined check
|
|
163
|
+
// End of block comment
|
|
164
|
+
if (line.endsWith('*/')) {
|
|
165
|
+
// Find start of block comment
|
|
166
|
+
while (i >= 0) {
|
|
167
|
+
const blockLine = lines[i]?.trim();
|
|
168
|
+
if (!blockLine && blockLine !== '')
|
|
169
|
+
break;
|
|
170
|
+
comments.unshift(blockLine);
|
|
171
|
+
if (blockLine.startsWith('/*') || blockLine.startsWith('/**')) {
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
i--;
|
|
175
|
+
}
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
// Single line comment
|
|
179
|
+
if (line.startsWith('//') || line.startsWith('#')) {
|
|
180
|
+
comments.unshift(line);
|
|
181
|
+
i--;
|
|
182
|
+
continue;
|
|
183
|
+
}
|
|
184
|
+
// Empty line or non-comment - stop
|
|
185
|
+
if (line !== '') {
|
|
186
|
+
break;
|
|
187
|
+
}
|
|
188
|
+
i--;
|
|
189
|
+
}
|
|
190
|
+
if (comments.length === 0) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
// Clean up the comment
|
|
194
|
+
return comments
|
|
195
|
+
.map(c => c.replace(/^\/\*\*?|\*\/$/g, '').replace(/^\s*\*\s?/g, '').replace(/^\/\/\s?/g, '').replace(/^#\s?/g, '').trim())
|
|
196
|
+
.filter(c => c.length > 0)
|
|
197
|
+
.join('\n');
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Truncate value for storage (max 500 chars)
|
|
201
|
+
*/
|
|
202
|
+
truncateValue(value, maxLength = 500) {
|
|
203
|
+
if (value.length <= maxLength) {
|
|
204
|
+
return value;
|
|
205
|
+
}
|
|
206
|
+
return value.slice(0, maxLength - 3) + '...';
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=base-regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-regex.js","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/base-regex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C# Constant Regex Extractor
|
|
3
|
+
*
|
|
4
|
+
* Regex-based extraction for C# constants and enums.
|
|
5
|
+
* Used as fallback when tree-sitter is unavailable.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConstantExtraction, EnumExtraction } from '../../types.js';
|
|
8
|
+
import { BaseConstantRegexExtractor } from './base-regex.js';
|
|
9
|
+
/**
|
|
10
|
+
* C# constant regex extractor
|
|
11
|
+
*/
|
|
12
|
+
export declare class CSharpConstantRegexExtractor extends BaseConstantRegexExtractor {
|
|
13
|
+
readonly language: "csharp";
|
|
14
|
+
/**
|
|
15
|
+
* Extract constants from C# source
|
|
16
|
+
*/
|
|
17
|
+
protected extractConstants(source: string, filePath: string): ConstantExtraction[];
|
|
18
|
+
/**
|
|
19
|
+
* Extract enums from C# source
|
|
20
|
+
*/
|
|
21
|
+
protected extractEnums(source: string, filePath: string): EnumExtraction[];
|
|
22
|
+
/**
|
|
23
|
+
* Parse C# enum members
|
|
24
|
+
*/
|
|
25
|
+
private parseCSharpEnumMembers;
|
|
26
|
+
/**
|
|
27
|
+
* Infer kind from C# value and type
|
|
28
|
+
*/
|
|
29
|
+
private inferCSharpKind;
|
|
30
|
+
/**
|
|
31
|
+
* Extract value from C# literal
|
|
32
|
+
*/
|
|
33
|
+
private extractCSharpValue;
|
|
34
|
+
/**
|
|
35
|
+
* Find the containing class/struct name
|
|
36
|
+
*/
|
|
37
|
+
private findContainingClass;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=csharp-regex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csharp-regex.d.ts","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/csharp-regex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,cAAc,EAGf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;GAEG;AACH,qBAAa,4BAA6B,SAAQ,0BAA0B;IAC1E,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IAEtC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IA8GlF;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IA4C1E;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAyD9B;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+D1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAU5B"}
|