driftdetect-core 0.6.1 → 0.7.1

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.
Files changed (141) hide show
  1. package/LICENSE +21 -0
  2. package/dist/constants/analysis/categorizer.d.ts +27 -0
  3. package/dist/constants/analysis/categorizer.d.ts.map +1 -0
  4. package/dist/constants/analysis/categorizer.js +364 -0
  5. package/dist/constants/analysis/categorizer.js.map +1 -0
  6. package/dist/constants/analysis/consistency-analyzer.d.ts +77 -0
  7. package/dist/constants/analysis/consistency-analyzer.d.ts.map +1 -0
  8. package/dist/constants/analysis/consistency-analyzer.js +176 -0
  9. package/dist/constants/analysis/consistency-analyzer.js.map +1 -0
  10. package/dist/constants/analysis/dead-constant-detector.d.ts +79 -0
  11. package/dist/constants/analysis/dead-constant-detector.d.ts.map +1 -0
  12. package/dist/constants/analysis/dead-constant-detector.js +242 -0
  13. package/dist/constants/analysis/dead-constant-detector.js.map +1 -0
  14. package/dist/constants/analysis/magic-detector.d.ts +116 -0
  15. package/dist/constants/analysis/magic-detector.d.ts.map +1 -0
  16. package/dist/constants/analysis/magic-detector.js +425 -0
  17. package/dist/constants/analysis/magic-detector.js.map +1 -0
  18. package/dist/constants/analysis/reference-finder.d.ts +87 -0
  19. package/dist/constants/analysis/reference-finder.d.ts.map +1 -0
  20. package/dist/constants/analysis/reference-finder.js +269 -0
  21. package/dist/constants/analysis/reference-finder.js.map +1 -0
  22. package/dist/constants/analysis/security-scanner.d.ts +115 -0
  23. package/dist/constants/analysis/security-scanner.d.ts.map +1 -0
  24. package/dist/constants/analysis/security-scanner.js +429 -0
  25. package/dist/constants/analysis/security-scanner.js.map +1 -0
  26. package/dist/constants/extractors/base-extractor.d.ts +97 -0
  27. package/dist/constants/extractors/base-extractor.d.ts.map +1 -0
  28. package/dist/constants/extractors/base-extractor.js +285 -0
  29. package/dist/constants/extractors/base-extractor.js.map +1 -0
  30. package/dist/constants/extractors/regex/base-regex.d.ts +67 -0
  31. package/dist/constants/extractors/regex/base-regex.d.ts.map +1 -0
  32. package/dist/constants/extractors/regex/base-regex.js +209 -0
  33. package/dist/constants/extractors/regex/base-regex.js.map +1 -0
  34. package/dist/constants/extractors/regex/csharp-regex.d.ts +39 -0
  35. package/dist/constants/extractors/regex/csharp-regex.d.ts.map +1 -0
  36. package/dist/constants/extractors/regex/csharp-regex.js +316 -0
  37. package/dist/constants/extractors/regex/csharp-regex.js.map +1 -0
  38. package/dist/constants/extractors/regex/go-regex.d.ts +40 -0
  39. package/dist/constants/extractors/regex/go-regex.d.ts.map +1 -0
  40. package/dist/constants/extractors/regex/go-regex.js +297 -0
  41. package/dist/constants/extractors/regex/go-regex.js.map +1 -0
  42. package/dist/constants/extractors/regex/java-regex.d.ts +43 -0
  43. package/dist/constants/extractors/regex/java-regex.d.ts.map +1 -0
  44. package/dist/constants/extractors/regex/java-regex.js +276 -0
  45. package/dist/constants/extractors/regex/java-regex.js.map +1 -0
  46. package/dist/constants/extractors/regex/php-regex.d.ts +39 -0
  47. package/dist/constants/extractors/regex/php-regex.d.ts.map +1 -0
  48. package/dist/constants/extractors/regex/php-regex.js +270 -0
  49. package/dist/constants/extractors/regex/php-regex.js.map +1 -0
  50. package/dist/constants/extractors/regex/python-regex.d.ts +39 -0
  51. package/dist/constants/extractors/regex/python-regex.d.ts.map +1 -0
  52. package/dist/constants/extractors/regex/python-regex.js +287 -0
  53. package/dist/constants/extractors/regex/python-regex.js.map +1 -0
  54. package/dist/constants/extractors/regex/typescript-regex.d.ts +35 -0
  55. package/dist/constants/extractors/regex/typescript-regex.d.ts.map +1 -0
  56. package/dist/constants/extractors/regex/typescript-regex.js +313 -0
  57. package/dist/constants/extractors/regex/typescript-regex.js.map +1 -0
  58. package/dist/constants/index.d.ts +26 -0
  59. package/dist/constants/index.d.ts.map +1 -0
  60. package/dist/constants/index.js +36 -0
  61. package/dist/constants/index.js.map +1 -0
  62. package/dist/constants/integration/callgraph-adapter.d.ts +167 -0
  63. package/dist/constants/integration/callgraph-adapter.d.ts.map +1 -0
  64. package/dist/constants/integration/callgraph-adapter.js +287 -0
  65. package/dist/constants/integration/callgraph-adapter.js.map +1 -0
  66. package/dist/constants/integration/index.d.ts +10 -0
  67. package/dist/constants/integration/index.d.ts.map +1 -0
  68. package/dist/constants/integration/index.js +13 -0
  69. package/dist/constants/integration/index.js.map +1 -0
  70. package/dist/constants/integration/pattern-adapter.d.ts +171 -0
  71. package/dist/constants/integration/pattern-adapter.d.ts.map +1 -0
  72. package/dist/constants/integration/pattern-adapter.js +331 -0
  73. package/dist/constants/integration/pattern-adapter.js.map +1 -0
  74. package/dist/constants/integration/scanner-adapter.d.ts +153 -0
  75. package/dist/constants/integration/scanner-adapter.d.ts.map +1 -0
  76. package/dist/constants/integration/scanner-adapter.js +337 -0
  77. package/dist/constants/integration/scanner-adapter.js.map +1 -0
  78. package/dist/constants/store/constant-store.d.ts +117 -0
  79. package/dist/constants/store/constant-store.d.ts.map +1 -0
  80. package/dist/constants/store/constant-store.js +367 -0
  81. package/dist/constants/store/constant-store.js.map +1 -0
  82. package/dist/constants/types.d.ts +423 -0
  83. package/dist/constants/types.d.ts.map +1 -0
  84. package/dist/constants/types.js +43 -0
  85. package/dist/constants/types.js.map +1 -0
  86. package/dist/constraints/store/constraint-store.d.ts.map +1 -1
  87. package/dist/constraints/store/constraint-store.js +37 -2
  88. package/dist/constraints/store/constraint-store.js.map +1 -1
  89. package/dist/environment/env-scanner.d.ts +53 -0
  90. package/dist/environment/env-scanner.d.ts.map +1 -0
  91. package/dist/environment/env-scanner.js +290 -0
  92. package/dist/environment/env-scanner.js.map +1 -0
  93. package/dist/environment/env-store.d.ts +70 -0
  94. package/dist/environment/env-store.d.ts.map +1 -0
  95. package/dist/environment/env-store.js +201 -0
  96. package/dist/environment/env-store.js.map +1 -0
  97. package/dist/environment/extractors/base-env-extractor.d.ts +56 -0
  98. package/dist/environment/extractors/base-env-extractor.d.ts.map +1 -0
  99. package/dist/environment/extractors/base-env-extractor.js +74 -0
  100. package/dist/environment/extractors/base-env-extractor.js.map +1 -0
  101. package/dist/environment/extractors/csharp-env-extractor.d.ts +49 -0
  102. package/dist/environment/extractors/csharp-env-extractor.d.ts.map +1 -0
  103. package/dist/environment/extractors/csharp-env-extractor.js +240 -0
  104. package/dist/environment/extractors/csharp-env-extractor.js.map +1 -0
  105. package/dist/environment/extractors/go-env-extractor.d.ts +53 -0
  106. package/dist/environment/extractors/go-env-extractor.d.ts.map +1 -0
  107. package/dist/environment/extractors/go-env-extractor.js +267 -0
  108. package/dist/environment/extractors/go-env-extractor.js.map +1 -0
  109. package/dist/environment/extractors/index.d.ts +13 -0
  110. package/dist/environment/extractors/index.d.ts.map +1 -0
  111. package/dist/environment/extractors/index.js +13 -0
  112. package/dist/environment/extractors/index.js.map +1 -0
  113. package/dist/environment/extractors/java-env-extractor.d.ts +58 -0
  114. package/dist/environment/extractors/java-env-extractor.d.ts.map +1 -0
  115. package/dist/environment/extractors/java-env-extractor.js +219 -0
  116. package/dist/environment/extractors/java-env-extractor.js.map +1 -0
  117. package/dist/environment/extractors/php-env-extractor.d.ts +58 -0
  118. package/dist/environment/extractors/php-env-extractor.d.ts.map +1 -0
  119. package/dist/environment/extractors/php-env-extractor.js +231 -0
  120. package/dist/environment/extractors/php-env-extractor.js.map +1 -0
  121. package/dist/environment/extractors/python-env-extractor.d.ts +50 -0
  122. package/dist/environment/extractors/python-env-extractor.d.ts.map +1 -0
  123. package/dist/environment/extractors/python-env-extractor.js +219 -0
  124. package/dist/environment/extractors/python-env-extractor.js.map +1 -0
  125. package/dist/environment/extractors/typescript-env-extractor.d.ts +54 -0
  126. package/dist/environment/extractors/typescript-env-extractor.d.ts.map +1 -0
  127. package/dist/environment/extractors/typescript-env-extractor.js +228 -0
  128. package/dist/environment/extractors/typescript-env-extractor.js.map +1 -0
  129. package/dist/environment/index.d.ts +11 -0
  130. package/dist/environment/index.d.ts.map +1 -0
  131. package/dist/environment/index.js +15 -0
  132. package/dist/environment/index.js.map +1 -0
  133. package/dist/environment/types.d.ts +145 -0
  134. package/dist/environment/types.d.ts.map +1 -0
  135. package/dist/environment/types.js +84 -0
  136. package/dist/environment/types.js.map +1 -0
  137. package/dist/index.d.ts +4 -0
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +40 -0
  140. package/dist/index.js.map +1 -1
  141. package/package.json +13 -13
@@ -0,0 +1,331 @@
1
+ /**
2
+ * Pattern Adapter
3
+ *
4
+ * Feeds constant analysis into the pattern detection system.
5
+ * Creates patterns for constant consistency, magic values, and security issues.
6
+ */
7
+ import { ConstantStore } from '../store/constant-store.js';
8
+ import { ConstantSecurityScanner } from '../analysis/security-scanner.js';
9
+ import { ConsistencyAnalyzer } from '../analysis/consistency-analyzer.js';
10
+ // ============================================================================
11
+ // Pattern Adapter
12
+ // ============================================================================
13
+ /**
14
+ * Adapter for feeding constant analysis into the pattern system
15
+ */
16
+ export class ConstantPatternAdapter {
17
+ config;
18
+ store;
19
+ securityScanner;
20
+ consistencyAnalyzer;
21
+ constructor(config) {
22
+ this.config = {
23
+ rootDir: config.rootDir,
24
+ detectMagicValues: config.detectMagicValues ?? true,
25
+ detectSecrets: config.detectSecrets ?? true,
26
+ detectInconsistencies: config.detectInconsistencies ?? true,
27
+ detectDeadConstants: config.detectDeadConstants ?? true,
28
+ magicValueMinOccurrences: config.magicValueMinOccurrences ?? 2,
29
+ secretSeverityThreshold: config.secretSeverityThreshold ?? 'medium',
30
+ };
31
+ this.store = new ConstantStore({ rootDir: config.rootDir });
32
+ this.securityScanner = new ConstantSecurityScanner();
33
+ this.consistencyAnalyzer = new ConsistencyAnalyzer();
34
+ }
35
+ /**
36
+ * Detect all constant-related patterns
37
+ */
38
+ async detectPatterns() {
39
+ const startTime = performance.now();
40
+ const patterns = [];
41
+ // Get all constants
42
+ const constants = await this.store.getAllConstants();
43
+ // Detect magic values
44
+ if (this.config.detectMagicValues) {
45
+ const magicPatterns = await this.detectMagicValuePatterns(constants);
46
+ patterns.push(...magicPatterns);
47
+ }
48
+ // Detect secrets
49
+ if (this.config.detectSecrets) {
50
+ const secretPatterns = await this.detectSecretPatterns(constants);
51
+ patterns.push(...secretPatterns);
52
+ }
53
+ // Detect inconsistencies
54
+ if (this.config.detectInconsistencies) {
55
+ const inconsistencyPatterns = await this.detectInconsistencyPatterns(constants);
56
+ patterns.push(...inconsistencyPatterns);
57
+ }
58
+ // Detect dead constants
59
+ if (this.config.detectDeadConstants) {
60
+ const deadPatterns = await this.detectDeadConstantPatterns(constants);
61
+ patterns.push(...deadPatterns);
62
+ }
63
+ // Calculate statistics
64
+ const stats = this.calculateStats(patterns);
65
+ return {
66
+ patterns,
67
+ stats,
68
+ detectedAt: new Date().toISOString(),
69
+ duration: performance.now() - startTime,
70
+ };
71
+ }
72
+ /**
73
+ * Detect magic value patterns
74
+ */
75
+ async detectMagicValuePatterns(constants) {
76
+ const patterns = [];
77
+ // Note: Magic value detection needs file content to scan for literals
78
+ // This is a placeholder that would be called with actual file content
79
+ // For now, we create patterns from constants that look like they might be magic values
80
+ const potentialMagicConstants = constants.filter((c) => {
81
+ // Constants with generic names might indicate magic values elsewhere
82
+ const genericNames = ['VALUE', 'NUMBER', 'COUNT', 'SIZE', 'LIMIT'];
83
+ return genericNames.some((name) => c.name.toUpperCase().includes(name));
84
+ });
85
+ if (potentialMagicConstants.length > 0) {
86
+ patterns.push({
87
+ id: 'constants/magic-value-candidates',
88
+ name: 'Potential Magic Value Constants',
89
+ category: 'maintenance',
90
+ subcategory: 'magic-values',
91
+ description: 'Constants with generic names that may indicate magic values in the codebase',
92
+ severity: 'info',
93
+ confidence: 0.6,
94
+ locations: potentialMagicConstants.map((c) => ({
95
+ file: c.file,
96
+ line: c.line,
97
+ column: c.column,
98
+ snippet: `${c.name} = ${c.value}`,
99
+ context: `Category: ${c.category}`,
100
+ })),
101
+ metadata: {
102
+ constantCount: potentialMagicConstants.length,
103
+ },
104
+ firstSeen: new Date().toISOString(),
105
+ lastSeen: new Date().toISOString(),
106
+ });
107
+ }
108
+ return patterns;
109
+ }
110
+ /**
111
+ * Detect secret patterns
112
+ */
113
+ async detectSecretPatterns(constants) {
114
+ const patterns = [];
115
+ // Scan constants for potential secrets
116
+ const scanResult = this.securityScanner.scan(constants);
117
+ // Filter by severity threshold
118
+ const severityOrder = ['info', 'low', 'medium', 'high', 'critical'];
119
+ const thresholdIndex = severityOrder.indexOf(this.config.secretSeverityThreshold);
120
+ const filteredSecrets = scanResult.secrets.filter((secret) => {
121
+ const secretIndex = severityOrder.indexOf(secret.severity);
122
+ return secretIndex >= thresholdIndex;
123
+ });
124
+ if (filteredSecrets.length > 0) {
125
+ // Group by secret type
126
+ const byType = new Map();
127
+ for (const secret of filteredSecrets) {
128
+ const existing = byType.get(secret.secretType) ?? [];
129
+ existing.push(secret);
130
+ byType.set(secret.secretType, existing);
131
+ }
132
+ for (const [secretType, secrets] of byType) {
133
+ const maxSeverity = secrets.reduce((max, s) => {
134
+ const maxIndex = severityOrder.indexOf(max);
135
+ const currentIndex = severityOrder.indexOf(s.severity);
136
+ return currentIndex > maxIndex ? s.severity : max;
137
+ }, 'info');
138
+ patterns.push({
139
+ id: `constants/hardcoded-secret/${secretType}`,
140
+ name: `Hardcoded ${secretType.replace(/_/g, ' ')}`,
141
+ category: 'security',
142
+ subcategory: 'secrets',
143
+ description: `Potential hardcoded ${secretType.replace(/_/g, ' ')} detected in constants`,
144
+ severity: maxSeverity,
145
+ confidence: Math.max(...secrets.map((s) => s.confidence)),
146
+ locations: secrets.map((s) => ({
147
+ file: s.file,
148
+ line: s.line,
149
+ column: 0,
150
+ snippet: `${s.name} = ${s.maskedValue}`,
151
+ context: s.recommendation,
152
+ })),
153
+ metadata: {
154
+ secretType,
155
+ count: secrets.length,
156
+ recommendations: [...new Set(secrets.map((s) => s.recommendation))],
157
+ },
158
+ firstSeen: new Date().toISOString(),
159
+ lastSeen: new Date().toISOString(),
160
+ });
161
+ }
162
+ }
163
+ return patterns;
164
+ }
165
+ /**
166
+ * Detect inconsistency patterns
167
+ */
168
+ async detectInconsistencyPatterns(constants) {
169
+ const patterns = [];
170
+ // Analyze consistency
171
+ const result = this.consistencyAnalyzer.analyze(constants);
172
+ if (result.inconsistencies.length > 0) {
173
+ for (const inconsistency of result.inconsistencies) {
174
+ const severity = this.getInconsistencySeverity(inconsistency);
175
+ patterns.push({
176
+ id: `constants/inconsistent-value/${inconsistency.name}`,
177
+ name: `Inconsistent Constant: ${inconsistency.name}`,
178
+ category: 'consistency',
179
+ subcategory: 'value-mismatch',
180
+ description: `Constant "${inconsistency.name}" has different values in different files`,
181
+ severity,
182
+ confidence: 0.9,
183
+ locations: inconsistency.instances.map((instance) => ({
184
+ file: instance.file,
185
+ line: instance.line,
186
+ column: 0,
187
+ snippet: `${inconsistency.name} = ${instance.value}`,
188
+ })),
189
+ metadata: {
190
+ constantName: inconsistency.name,
191
+ valueCount: new Set(inconsistency.instances.map((i) => String(i.value))).size,
192
+ recommendation: inconsistency.recommendation,
193
+ },
194
+ firstSeen: new Date().toISOString(),
195
+ lastSeen: new Date().toISOString(),
196
+ });
197
+ }
198
+ }
199
+ return patterns;
200
+ }
201
+ /**
202
+ * Detect dead constant patterns
203
+ */
204
+ async detectDeadConstantPatterns(constants) {
205
+ const patterns = [];
206
+ // Note: Dead constant detection needs reference information
207
+ // This creates patterns for constants that look potentially unused
208
+ // Find constants that are not exported and have no obvious usage indicators
209
+ const potentiallyDead = constants.filter((c) => {
210
+ // Non-exported constants in files with few constants might be dead
211
+ return !c.isExported && c.category === 'uncategorized';
212
+ });
213
+ if (potentiallyDead.length > 0) {
214
+ patterns.push({
215
+ id: 'constants/potentially-dead',
216
+ name: 'Potentially Unused Constants',
217
+ category: 'maintenance',
218
+ subcategory: 'dead-code',
219
+ description: 'Non-exported constants that may be unused',
220
+ severity: 'info',
221
+ confidence: 0.5,
222
+ locations: potentiallyDead.map((c) => ({
223
+ file: c.file,
224
+ line: c.line,
225
+ column: c.column,
226
+ snippet: `${c.name} = ${c.value}`,
227
+ })),
228
+ metadata: {
229
+ count: potentiallyDead.length,
230
+ note: 'Requires reference analysis for accurate detection',
231
+ },
232
+ firstSeen: new Date().toISOString(),
233
+ lastSeen: new Date().toISOString(),
234
+ });
235
+ }
236
+ return patterns;
237
+ }
238
+ /**
239
+ * Get severity for an inconsistency
240
+ */
241
+ getInconsistencySeverity(inconsistency) {
242
+ // Higher severity for more instances
243
+ if (inconsistency.instances.length >= 5)
244
+ return 'high';
245
+ if (inconsistency.instances.length >= 3)
246
+ return 'medium';
247
+ return 'low';
248
+ }
249
+ /**
250
+ * Calculate statistics from patterns
251
+ */
252
+ calculateStats(patterns) {
253
+ const byCategory = {
254
+ config: 0,
255
+ security: 0,
256
+ consistency: 0,
257
+ maintenance: 0,
258
+ };
259
+ const bySeverity = {
260
+ info: 0,
261
+ low: 0,
262
+ medium: 0,
263
+ high: 0,
264
+ critical: 0,
265
+ };
266
+ for (const pattern of patterns) {
267
+ byCategory[pattern.category]++;
268
+ bySeverity[pattern.severity]++;
269
+ }
270
+ return {
271
+ totalPatterns: patterns.length,
272
+ byCategory,
273
+ bySeverity,
274
+ };
275
+ }
276
+ /**
277
+ * Convert constant patterns to manifest format
278
+ */
279
+ toManifestPatterns(patterns) {
280
+ return patterns.map((pattern) => ({
281
+ id: pattern.id,
282
+ name: pattern.name,
283
+ category: pattern.category,
284
+ subcategory: pattern.subcategory,
285
+ status: 'discovered',
286
+ confidence: pattern.confidence,
287
+ locations: pattern.locations.map((loc) => ({
288
+ file: loc.file,
289
+ hash: '',
290
+ range: { start: loc.line, end: loc.line },
291
+ type: 'constant',
292
+ name: pattern.name,
293
+ confidence: pattern.confidence,
294
+ language: 'typescript', // Would need to detect from file
295
+ })),
296
+ outliers: [],
297
+ description: pattern.description,
298
+ firstSeen: pattern.firstSeen,
299
+ lastSeen: pattern.lastSeen,
300
+ }));
301
+ }
302
+ }
303
+ // ============================================================================
304
+ // Factory Functions
305
+ // ============================================================================
306
+ /**
307
+ * Create a pattern adapter
308
+ */
309
+ export function createPatternAdapter(config) {
310
+ return new ConstantPatternAdapter(config);
311
+ }
312
+ /**
313
+ * Convert severity to numeric value for comparison
314
+ */
315
+ export function severityToNumber(severity) {
316
+ const map = {
317
+ info: 0,
318
+ low: 1,
319
+ medium: 2,
320
+ high: 3,
321
+ critical: 4,
322
+ };
323
+ return map[severity];
324
+ }
325
+ /**
326
+ * Compare severities
327
+ */
328
+ export function compareSeverity(a, b) {
329
+ return severityToNumber(a) - severityToNumber(b);
330
+ }
331
+ //# sourceMappingURL=pattern-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-adapter.js","sourceRoot":"","sources":["../../../src/constants/integration/pattern-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Scanner Adapter
3
+ *
4
+ * Integrates constant extraction into the main scanning pipeline.
5
+ * Provides parallel extraction support and incremental updates.
6
+ */
7
+ import type { ConstantLanguage, FileConstantResult, ConstantExtractionQuality, ConstantHybridConfig } from '../types.js';
8
+ import { ConstantStore } from '../store/constant-store.js';
9
+ /**
10
+ * Scanner adapter configuration
11
+ */
12
+ export interface ConstantScannerConfig {
13
+ /** Root directory */
14
+ rootDir: string;
15
+ /** Enable constant extraction */
16
+ enabled?: boolean;
17
+ /** Enable incremental scanning */
18
+ incremental?: boolean;
19
+ /** Hybrid extractor config */
20
+ hybridConfig?: ConstantHybridConfig;
21
+ /** Verbose logging */
22
+ verbose?: boolean;
23
+ }
24
+ /**
25
+ * Scan result for a single file
26
+ */
27
+ export interface ConstantScanResult {
28
+ /** File path */
29
+ file: string;
30
+ /** Extraction result */
31
+ result: FileConstantResult | null;
32
+ /** Whether file was skipped (cached) */
33
+ skipped: boolean;
34
+ /** Error if extraction failed */
35
+ error?: string;
36
+ /** Duration in ms */
37
+ duration: number;
38
+ }
39
+ /**
40
+ * Batch scan result
41
+ */
42
+ export interface ConstantBatchScanResult {
43
+ /** Individual file results */
44
+ files: ConstantScanResult[];
45
+ /** Total constants extracted */
46
+ totalConstants: number;
47
+ /** Total enums extracted */
48
+ totalEnums: number;
49
+ /** Files processed */
50
+ filesProcessed: number;
51
+ /** Files skipped (cached) */
52
+ filesSkipped: number;
53
+ /** Files with errors */
54
+ filesWithErrors: number;
55
+ /** Total duration in ms */
56
+ duration: number;
57
+ }
58
+ /**
59
+ * Get language from file path
60
+ */
61
+ export declare function getConstantLanguage(filePath: string): ConstantLanguage | null;
62
+ /**
63
+ * Hash content for change detection
64
+ */
65
+ export declare function hashContent(content: string): string;
66
+ /**
67
+ * Adapter for integrating constant extraction into the scanner pipeline
68
+ */
69
+ export declare class ConstantScannerAdapter {
70
+ private readonly config;
71
+ private readonly store;
72
+ private readonly extractors;
73
+ private initialized;
74
+ constructor(config: ConstantScannerConfig);
75
+ /**
76
+ * Initialize the adapter
77
+ */
78
+ initialize(): Promise<void>;
79
+ /**
80
+ * Check if constant extraction is enabled
81
+ */
82
+ isEnabled(): boolean;
83
+ /**
84
+ * Get the constant store
85
+ */
86
+ getStore(): ConstantStore;
87
+ /**
88
+ * Extract constants from a single file
89
+ */
90
+ extractFile(filePath: string, content: string): Promise<ConstantScanResult>;
91
+ /**
92
+ * Extract constants from multiple files
93
+ */
94
+ extractFiles(files: Array<{
95
+ path: string;
96
+ content: string;
97
+ }>): Promise<ConstantBatchScanResult>;
98
+ /**
99
+ * Handle file deletion
100
+ */
101
+ handleFileDeleted(filePath: string): Promise<void>;
102
+ /**
103
+ * Rebuild the index
104
+ */
105
+ rebuildIndex(): Promise<void>;
106
+ /**
107
+ * Clear all constant data
108
+ */
109
+ clear(): Promise<void>;
110
+ }
111
+ /**
112
+ * Task for constant extraction worker
113
+ */
114
+ export interface ConstantWorkerTask {
115
+ /** Task type */
116
+ type: 'extract' | 'warmup';
117
+ /** File path */
118
+ file?: string;
119
+ /** File content */
120
+ content?: string;
121
+ /** Root directory */
122
+ rootDir?: string;
123
+ }
124
+ /**
125
+ * Result from constant extraction worker
126
+ */
127
+ export interface ConstantWorkerResult {
128
+ /** File path */
129
+ file: string;
130
+ /** Language detected */
131
+ language: ConstantLanguage | null;
132
+ /** Extraction result */
133
+ result: FileConstantResult | null;
134
+ /** Content hash */
135
+ contentHash: string;
136
+ /** Error if failed */
137
+ error?: string;
138
+ /** Duration in ms */
139
+ duration: number;
140
+ }
141
+ /**
142
+ * Process a constant extraction task (for worker threads)
143
+ */
144
+ export declare function processConstantTask(task: ConstantWorkerTask): ConstantWorkerResult;
145
+ /**
146
+ * Create a constant scanner adapter
147
+ */
148
+ export declare function createConstantScanner(config: ConstantScannerConfig): ConstantScannerAdapter;
149
+ /**
150
+ * Create default extraction quality
151
+ */
152
+ export declare function createDefaultConstantQuality(): ConstantExtractionQuality;
153
+ //# sourceMappingURL=scanner-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-adapter.d.ts","sourceRoot":"","sources":["../../../src/constants/integration/scanner-adapter.ts"],"names":[],"mappings":"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"}