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,313 @@
1
+ /**
2
+ * TypeScript/JavaScript Constant Regex Extractor
3
+ *
4
+ * Regex-based extraction for TypeScript and JavaScript constants.
5
+ * Used as fallback when tree-sitter is unavailable.
6
+ */
7
+ import { BaseConstantRegexExtractor } from './base-regex.js';
8
+ /**
9
+ * TypeScript/JavaScript constant regex extractor
10
+ */
11
+ export class TypeScriptConstantRegexExtractor extends BaseConstantRegexExtractor {
12
+ language = 'typescript';
13
+ /**
14
+ * Extract constants from TypeScript/JavaScript source
15
+ */
16
+ extractConstants(source, filePath) {
17
+ const constants = [];
18
+ let match;
19
+ // Pattern 1: as const objects
20
+ const asConstPattern = /(export\s+)?const\s+([A-Z][A-Z0-9_]*)\s*=\s*(\{[^}]*\})\s*as\s+const/g;
21
+ while ((match = asConstPattern.exec(source)) !== null) {
22
+ const isExported = !!match[1];
23
+ const name = match[2];
24
+ if (!name)
25
+ continue;
26
+ const rawValue = match[3];
27
+ if (!rawValue)
28
+ continue;
29
+ const line = this.getLineNumber(source, match.index);
30
+ const column = this.getColumnNumber(source, match.index);
31
+ const docComment = this.extractDocComment(source, line);
32
+ constants.push({
33
+ id: this.generateId(filePath, name, line),
34
+ name,
35
+ qualifiedName: name,
36
+ file: filePath,
37
+ line,
38
+ column,
39
+ endLine: line,
40
+ language: this.language,
41
+ kind: 'object',
42
+ category: 'uncategorized',
43
+ rawValue: this.truncateValue(rawValue),
44
+ isExported,
45
+ decorators: [],
46
+ modifiers: ['const', 'as_const'],
47
+ confidence: 0.75,
48
+ ...(docComment ? { docComment } : {}),
49
+ });
50
+ }
51
+ // Pattern 2: Object.freeze({ ... })
52
+ const freezePattern = /^[ \t]*(export\s+)?const\s+([A-Z][A-Z0-9_]*)\s*=\s*Object\.freeze\s*\(\s*(\{[\s\S]*?\})\s*\)/gm;
53
+ while ((match = freezePattern.exec(source)) !== null) {
54
+ const isExported = !!match[1];
55
+ const name = match[2];
56
+ if (!name)
57
+ continue;
58
+ const rawValue = match[3];
59
+ if (!rawValue)
60
+ continue;
61
+ const line = this.getLineNumber(source, match.index);
62
+ const column = this.getColumnNumber(source, match.index);
63
+ const docComment = this.extractDocComment(source, line);
64
+ // Skip if already captured
65
+ if (constants.some((c) => c.name === name && c.line === line)) {
66
+ continue;
67
+ }
68
+ constants.push({
69
+ id: this.generateId(filePath, name, line),
70
+ name,
71
+ qualifiedName: name,
72
+ file: filePath,
73
+ line,
74
+ column,
75
+ endLine: line,
76
+ language: this.language,
77
+ kind: 'object',
78
+ category: 'uncategorized',
79
+ rawValue: this.truncateValue(rawValue),
80
+ isExported,
81
+ decorators: [],
82
+ modifiers: ['const', 'frozen'],
83
+ confidence: 0.75,
84
+ ...(docComment ? { docComment } : {}),
85
+ });
86
+ }
87
+ // Pattern 3: Basic const - export const NAME = value
88
+ const constPattern = /^[ \t]*(export\s+)?const\s+([A-Z][A-Z0-9_]*)\s*(?::\s*([^=]+?))?\s*=\s*(.+?)(?:;|$)/gm;
89
+ while ((match = constPattern.exec(source)) !== null) {
90
+ const isExported = !!match[1];
91
+ const name = match[2];
92
+ if (!name)
93
+ continue;
94
+ const type = match[3]?.trim();
95
+ const rawValue = match[4]?.trim();
96
+ if (!rawValue)
97
+ continue;
98
+ const line = this.getLineNumber(source, match.index);
99
+ const column = this.getColumnNumber(source, match.index);
100
+ // Skip if already captured
101
+ if (constants.some((c) => c.name === name && c.line === line)) {
102
+ continue;
103
+ }
104
+ // Skip if inside a function/class (check indentation)
105
+ const lineStart = source.lastIndexOf('\n', match.index) + 1;
106
+ const indent = match.index - lineStart;
107
+ if (indent > 2) {
108
+ continue;
109
+ }
110
+ // Skip Object.freeze patterns
111
+ if (rawValue.startsWith('Object.freeze')) {
112
+ continue;
113
+ }
114
+ // Skip incomplete object literals
115
+ if (rawValue === '{' || (rawValue.startsWith('{') && !rawValue.includes('}'))) {
116
+ continue;
117
+ }
118
+ const kind = this.inferKind(rawValue);
119
+ const value = this.extractValue(rawValue, kind);
120
+ const docComment = this.extractDocComment(source, line);
121
+ constants.push({
122
+ id: this.generateId(filePath, name, line),
123
+ name,
124
+ qualifiedName: name,
125
+ file: filePath,
126
+ line,
127
+ column,
128
+ endLine: line,
129
+ language: this.language,
130
+ kind,
131
+ category: 'uncategorized',
132
+ value,
133
+ rawValue: this.truncateValue(rawValue),
134
+ isExported,
135
+ decorators: [],
136
+ modifiers: ['const'],
137
+ confidence: 0.75,
138
+ ...(type ? { type } : {}),
139
+ ...(docComment ? { docComment } : {}),
140
+ });
141
+ }
142
+ // Pattern 4: Class static readonly properties
143
+ const staticReadonlyPattern = /static\s+(?:readonly\s+)?([A-Z][A-Z0-9_]*)\s*(?::\s*([^=]+?))?\s*=\s*(.+?)(?:;|$)/gm;
144
+ while ((match = staticReadonlyPattern.exec(source)) !== null) {
145
+ const name = match[1];
146
+ if (!name)
147
+ continue;
148
+ const type = match[2]?.trim();
149
+ const rawValue = match[3]?.trim();
150
+ if (!rawValue)
151
+ continue;
152
+ const line = this.getLineNumber(source, match.index);
153
+ const column = this.getColumnNumber(source, match.index);
154
+ const className = this.findContainingClass(source, match.index);
155
+ if (!className) {
156
+ continue;
157
+ }
158
+ const kind = this.inferKind(rawValue);
159
+ const value = this.extractValue(rawValue, kind);
160
+ const docComment = this.extractDocComment(source, line);
161
+ constants.push({
162
+ id: this.generateId(filePath, `${className}.${name}`, line),
163
+ name,
164
+ qualifiedName: `${className}.${name}`,
165
+ file: filePath,
166
+ line,
167
+ column,
168
+ endLine: line,
169
+ language: this.language,
170
+ kind: kind === 'primitive' ? 'class_constant' : kind,
171
+ category: 'uncategorized',
172
+ value,
173
+ rawValue: this.truncateValue(rawValue),
174
+ isExported: true,
175
+ parentName: className,
176
+ parentType: 'class',
177
+ decorators: [],
178
+ modifiers: ['static', 'readonly'],
179
+ confidence: 0.7,
180
+ ...(type ? { type } : {}),
181
+ ...(docComment ? { docComment } : {}),
182
+ });
183
+ }
184
+ return constants;
185
+ }
186
+ /**
187
+ * Extract enums from TypeScript source
188
+ */
189
+ extractEnums(source, filePath) {
190
+ const enums = [];
191
+ const enumPattern = /^[ \t]*(export\s+)?(const\s+)?enum\s+(\w+)\s*\{([\s\S]*?)\}/gm;
192
+ let match;
193
+ while ((match = enumPattern.exec(source)) !== null) {
194
+ const isExported = !!match[1];
195
+ const isConst = !!match[2];
196
+ const name = match[3];
197
+ if (!name)
198
+ continue;
199
+ const body = match[4];
200
+ if (!body)
201
+ continue;
202
+ const line = this.getLineNumber(source, match.index);
203
+ const endLine = this.getLineNumber(source, match.index + match[0].length);
204
+ const docComment = this.extractDocComment(source, line);
205
+ const members = this.parseEnumMembers(body, line);
206
+ const isStringEnum = members.some((m) => typeof m.value === 'string' && m.value.startsWith('"'));
207
+ enums.push({
208
+ id: this.generateId(filePath, name, line),
209
+ name,
210
+ qualifiedName: name,
211
+ file: filePath,
212
+ line,
213
+ endLine,
214
+ language: this.language,
215
+ isExported,
216
+ members,
217
+ isFlags: false,
218
+ isStringEnum,
219
+ backingType: isStringEnum ? 'string' : 'number',
220
+ decorators: [],
221
+ modifiers: isConst ? ['const'] : [],
222
+ confidence: 0.8,
223
+ ...(docComment ? { docComment } : {}),
224
+ });
225
+ }
226
+ return enums;
227
+ }
228
+ /**
229
+ * Parse enum members from body
230
+ */
231
+ parseEnumMembers(body, startLine) {
232
+ const members = [];
233
+ const lines = body.split('\n');
234
+ let currentLine = startLine;
235
+ let autoValue = 0;
236
+ for (const line of lines) {
237
+ currentLine++;
238
+ const trimmed = line.trim();
239
+ if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*')) {
240
+ continue;
241
+ }
242
+ const memberMatch = trimmed.match(/^(\w+)\s*(?:=\s*(.+?))?[,}]?\s*(?:\/\/.*)?$/);
243
+ if (memberMatch) {
244
+ const name = memberMatch[1];
245
+ if (!name)
246
+ continue;
247
+ const rawValue = memberMatch[2]?.trim();
248
+ let value;
249
+ let isAutoValue = false;
250
+ if (rawValue) {
251
+ if (rawValue.startsWith('"') || rawValue.startsWith("'")) {
252
+ value = rawValue;
253
+ }
254
+ else if (/^-?\d+$/.test(rawValue)) {
255
+ value = parseInt(rawValue, 10);
256
+ autoValue = value + 1;
257
+ }
258
+ else {
259
+ value = rawValue;
260
+ }
261
+ }
262
+ else {
263
+ value = autoValue;
264
+ autoValue++;
265
+ isAutoValue = true;
266
+ }
267
+ members.push({
268
+ name,
269
+ value,
270
+ line: currentLine,
271
+ isAutoValue,
272
+ });
273
+ }
274
+ }
275
+ return members;
276
+ }
277
+ /**
278
+ * Extract value based on kind
279
+ */
280
+ extractValue(rawValue, kind) {
281
+ if (kind === 'object' || kind === 'array' || kind === 'computed') {
282
+ return null;
283
+ }
284
+ if (rawValue.startsWith('"') || rawValue.startsWith("'") || rawValue.startsWith('`')) {
285
+ return this.extractStringValue(rawValue);
286
+ }
287
+ const num = this.extractNumericValue(rawValue);
288
+ if (num !== null) {
289
+ return num;
290
+ }
291
+ if (rawValue === 'true')
292
+ return true;
293
+ if (rawValue === 'false')
294
+ return false;
295
+ if (rawValue === 'null')
296
+ return null;
297
+ if (rawValue === 'undefined')
298
+ return null;
299
+ return null;
300
+ }
301
+ /**
302
+ * Find the containing class name for a position
303
+ */
304
+ findContainingClass(source, position) {
305
+ const beforePosition = source.slice(0, position);
306
+ const classMatch = beforePosition.match(/class\s+(\w+)(?:\s+extends\s+\w+)?(?:\s+implements\s+[\w,\s]+)?\s*\{[^}]*$/);
307
+ if (classMatch && classMatch[1]) {
308
+ return classMatch[1];
309
+ }
310
+ return null;
311
+ }
312
+ }
313
+ //# sourceMappingURL=typescript-regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-regex.js","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/typescript-regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Constants Module
3
+ *
4
+ * Comprehensive tracking of constants, enums, and exported values
5
+ * across all supported languages.
6
+ */
7
+ export * from './types.js';
8
+ export { ConstantStore, type ConstantStoreConfig } from './store/constant-store.js';
9
+ export { inferCategory, getCategoryDisplayName, getCategoryDescription, isSecuritySensitive, suggestConstantName, } from './analysis/categorizer.js';
10
+ export { ConstantReferenceFinder, findAllReferences, DEFAULT_REFERENCE_FIND_CONFIG, type ReferenceFindConfig, type ReferenceResult, } from './analysis/reference-finder.js';
11
+ export { MagicValueDetector, DEFAULT_MAGIC_DETECTOR_CONFIG, type MagicDetectorConfig, type MagicDetectionResult, } from './analysis/magic-detector.js';
12
+ export { DeadConstantDetector, isLikelyDead, DEFAULT_DEAD_CONSTANT_CONFIG, type DeadConstantConfig, type DeadConstantResult, } from './analysis/dead-constant-detector.js';
13
+ export { ConsistencyAnalyzer, hasPotentialInconsistency, DEFAULT_CONSISTENCY_CONFIG, type ConsistencyConfig, type ConsistencyResult, } from './analysis/consistency-analyzer.js';
14
+ export { ConstantSecurityScanner, DEFAULT_SECURITY_SCAN_CONFIG, type SecurityScanConfig, type SecretPattern, type SecurityScanResult, } from './analysis/security-scanner.js';
15
+ export { BaseConstantExtractor } from './extractors/base-extractor.js';
16
+ export { BaseConstantRegexExtractor } from './extractors/regex/base-regex.js';
17
+ export { TypeScriptConstantRegexExtractor } from './extractors/regex/typescript-regex.js';
18
+ export { PythonConstantRegexExtractor } from './extractors/regex/python-regex.js';
19
+ export { JavaConstantRegexExtractor } from './extractors/regex/java-regex.js';
20
+ export { CSharpConstantRegexExtractor } from './extractors/regex/csharp-regex.js';
21
+ export { PhpConstantRegexExtractor } from './extractors/regex/php-regex.js';
22
+ export { GoConstantRegexExtractor } from './extractors/regex/go-regex.js';
23
+ export { ConstantScannerAdapter, createConstantScanner, getConstantLanguage, hashContent, processConstantTask, createDefaultConstantQuality, ConstantCallGraphAdapter, createCallGraphAdapter, ConstantPatternAdapter, createPatternAdapter, severityToNumber, compareSeverity, } from './integration/index.js';
24
+ export type { ConstantScannerConfig, ConstantScanResult, ConstantBatchScanResult, ConstantWorkerTask, ConstantWorkerResult, CallGraphAdapterConfig, CallGraphInterface, ConstantWithContext, ConstantImpactAnalysis, FunctionUsage, DataFlowPath, AffectedFunction, PatternAdapterConfig, ConstantPattern, ConstantPatternCategory, ConstantPatternResult, PatternLocation, ManifestPattern, } from './integration/index.js';
25
+ export type { ConstantExtraction, EnumExtraction, EnumMember, ConstantReference, FileConstantResult, ConstantExtractionQuality, ConstantFileShard, ConstantIndex, ConstantStats, ConstantLanguage, ConstantKind, ConstantCategory, IssueSeverity, MagicValue, PotentialSecret, DeadConstant, InconsistentConstant, } from './types.js';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGpF,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,EAC7B,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,EAC7B,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,EAC1B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAG9E,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,OAAO,EAEL,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,4BAA4B,EAE5B,wBAAwB,EACxB,sBAAsB,EAEtB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAEV,qBAAqB,EACrB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EAEpB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,gBAAgB,EAEhB,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,EACf,eAAe,GAChB,MAAM,wBAAwB,CAAC;AAGhC,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,eAAe,EACf,YAAY,EACZ,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Constants Module
3
+ *
4
+ * Comprehensive tracking of constants, enums, and exported values
5
+ * across all supported languages.
6
+ */
7
+ // Types
8
+ export * from './types.js';
9
+ // Store
10
+ export { ConstantStore } from './store/constant-store.js';
11
+ // Analysis
12
+ export { inferCategory, getCategoryDisplayName, getCategoryDescription, isSecuritySensitive, suggestConstantName, } from './analysis/categorizer.js';
13
+ export { ConstantReferenceFinder, findAllReferences, DEFAULT_REFERENCE_FIND_CONFIG, } from './analysis/reference-finder.js';
14
+ export { MagicValueDetector, DEFAULT_MAGIC_DETECTOR_CONFIG, } from './analysis/magic-detector.js';
15
+ export { DeadConstantDetector, isLikelyDead, DEFAULT_DEAD_CONSTANT_CONFIG, } from './analysis/dead-constant-detector.js';
16
+ export { ConsistencyAnalyzer, hasPotentialInconsistency, DEFAULT_CONSISTENCY_CONFIG, } from './analysis/consistency-analyzer.js';
17
+ export { ConstantSecurityScanner, DEFAULT_SECURITY_SCAN_CONFIG, } from './analysis/security-scanner.js';
18
+ // Extractors - Base
19
+ export { BaseConstantExtractor } from './extractors/base-extractor.js';
20
+ export { BaseConstantRegexExtractor } from './extractors/regex/base-regex.js';
21
+ // Extractors - Language-specific regex
22
+ export { TypeScriptConstantRegexExtractor } from './extractors/regex/typescript-regex.js';
23
+ export { PythonConstantRegexExtractor } from './extractors/regex/python-regex.js';
24
+ export { JavaConstantRegexExtractor } from './extractors/regex/java-regex.js';
25
+ export { CSharpConstantRegexExtractor } from './extractors/regex/csharp-regex.js';
26
+ export { PhpConstantRegexExtractor } from './extractors/regex/php-regex.js';
27
+ export { GoConstantRegexExtractor } from './extractors/regex/go-regex.js';
28
+ // Integration
29
+ export {
30
+ // Scanner Adapter
31
+ ConstantScannerAdapter, createConstantScanner, getConstantLanguage, hashContent, processConstantTask, createDefaultConstantQuality,
32
+ // Call Graph Adapter
33
+ ConstantCallGraphAdapter, createCallGraphAdapter,
34
+ // Pattern Adapter
35
+ ConstantPatternAdapter, createPatternAdapter, severityToNumber, compareSeverity, } from './integration/index.js';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,QAAQ;AACR,cAAc,YAAY,CAAC;AAE3B,QAAQ;AACR,OAAO,EAAE,aAAa,EAA4B,MAAM,2BAA2B,CAAC;AAEpF,WAAW;AACX,OAAO,EACL,aAAa,EACb,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,6BAA6B,GAG9B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EACL,kBAAkB,EAClB,6BAA6B,GAG9B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,4BAA4B,GAG7B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,0BAA0B,GAG3B,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,GAI7B,MAAM,gCAAgC,CAAC;AAExC,oBAAoB;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAE9E,uCAAuC;AACvC,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,cAAc;AACd,OAAO;AACL,kBAAkB;AAClB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,4BAA4B;AAC5B,qBAAqB;AACrB,wBAAwB,EACxB,sBAAsB;AACtB,kBAAkB;AAClB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,GAChB,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Call Graph Adapter
3
+ *
4
+ * Links constant extraction to the call graph system.
5
+ * Enables tracking of constant usage through function calls.
6
+ */
7
+ import type { ConstantExtraction, ConstantReference } from '../types.js';
8
+ /**
9
+ * A constant with its call graph context
10
+ */
11
+ export interface ConstantWithContext {
12
+ /** The constant */
13
+ constant: ConstantExtraction;
14
+ /** Functions that use this constant */
15
+ usedByFunctions: FunctionUsage[];
16
+ /** Entry points that can reach this constant */
17
+ reachableFromEntryPoints: string[];
18
+ /** Data flow paths to this constant */
19
+ dataFlowPaths: DataFlowPath[];
20
+ }
21
+ /**
22
+ * Function usage of a constant
23
+ */
24
+ export interface FunctionUsage {
25
+ /** Function name */
26
+ functionName: string;
27
+ /** File containing the function */
28
+ file: string;
29
+ /** Line number of usage */
30
+ line: number;
31
+ /** How the constant is used */
32
+ usageType: 'read' | 'parameter' | 'comparison' | 'assignment';
33
+ /** Depth from entry point */
34
+ depth: number;
35
+ }
36
+ /**
37
+ * Data flow path to a constant
38
+ */
39
+ export interface DataFlowPath {
40
+ /** Entry point */
41
+ entryPoint: string;
42
+ /** Path of function calls */
43
+ path: string[];
44
+ /** Total depth */
45
+ depth: number;
46
+ }
47
+ /**
48
+ * Constant impact analysis result
49
+ */
50
+ export interface ConstantImpactAnalysis {
51
+ /** The constant being analyzed */
52
+ constant: ConstantExtraction;
53
+ /** Direct usages */
54
+ directUsages: ConstantReference[];
55
+ /** Functions affected by this constant */
56
+ affectedFunctions: AffectedFunction[];
57
+ /** Entry points affected */
58
+ affectedEntryPoints: string[];
59
+ /** Estimated impact score (0-100) */
60
+ impactScore: number;
61
+ /** Risk level */
62
+ riskLevel: 'low' | 'medium' | 'high' | 'critical';
63
+ }
64
+ /**
65
+ * A function affected by a constant
66
+ */
67
+ export interface AffectedFunction {
68
+ /** Function name */
69
+ name: string;
70
+ /** File path */
71
+ file: string;
72
+ /** Line number */
73
+ line: number;
74
+ /** How it's affected */
75
+ affectedBy: 'direct_usage' | 'indirect_usage' | 'parameter_flow';
76
+ /** Depth from constant */
77
+ depth: number;
78
+ }
79
+ /**
80
+ * Configuration for call graph adapter
81
+ */
82
+ export interface CallGraphAdapterConfig {
83
+ /** Root directory */
84
+ rootDir: string;
85
+ /** Maximum depth for traversal */
86
+ maxDepth?: number;
87
+ /** Include test files */
88
+ includeTests?: boolean;
89
+ }
90
+ /**
91
+ * Adapter for linking constants to the call graph
92
+ */
93
+ export declare class ConstantCallGraphAdapter {
94
+ private readonly config;
95
+ private readonly store;
96
+ constructor(config: CallGraphAdapterConfig);
97
+ /**
98
+ * Get constant with call graph context
99
+ */
100
+ getConstantWithContext(constantId: string, callGraph?: CallGraphInterface): Promise<ConstantWithContext | null>;
101
+ /**
102
+ * Analyze impact of changing a constant
103
+ */
104
+ analyzeConstantImpact(constantId: string, callGraph?: CallGraphInterface): Promise<ConstantImpactAnalysis | null>;
105
+ /**
106
+ * Find all constants used by a function
107
+ */
108
+ findConstantsUsedByFunction(_functionName: string, filePath: string): Promise<ConstantExtraction[]>;
109
+ /**
110
+ * Find constants that flow to a specific data sink
111
+ */
112
+ findConstantsFlowingToSink(_sinkFunction: string, sinkFile: string, _callGraph?: CallGraphInterface): Promise<ConstantExtraction[]>;
113
+ /**
114
+ * Get constants by entry point
115
+ */
116
+ getConstantsByEntryPoint(entryPoint: string, callGraph?: CallGraphInterface): Promise<ConstantExtraction[]>;
117
+ /**
118
+ * Find references for a specific constant
119
+ */
120
+ private findReferencesForConstant;
121
+ /**
122
+ * Find entry points that can reach a function
123
+ */
124
+ private findEntryPointsForFunction;
125
+ /**
126
+ * Get all functions reachable from an entry point
127
+ */
128
+ private getReachableFunctions;
129
+ /**
130
+ * Calculate impact score for a constant
131
+ */
132
+ private calculateImpactScore;
133
+ /**
134
+ * Determine risk level from impact score
135
+ */
136
+ private determineRiskLevel;
137
+ }
138
+ /**
139
+ * Interface for call graph operations
140
+ * This allows the adapter to work with any call graph implementation
141
+ */
142
+ export interface CallGraphInterface {
143
+ /**
144
+ * Get functions that call a given function
145
+ */
146
+ getCallers(functionName: string, filePath: string): Promise<Array<{
147
+ name: string;
148
+ file: string;
149
+ isEntryPoint: boolean;
150
+ }>>;
151
+ /**
152
+ * Get functions called by a given function
153
+ */
154
+ getCallees(functionName: string, filePath: string): Promise<Array<{
155
+ name: string;
156
+ file: string;
157
+ }>>;
158
+ /**
159
+ * Check if a function is an entry point
160
+ */
161
+ isEntryPoint(functionName: string, filePath: string): Promise<boolean>;
162
+ }
163
+ /**
164
+ * Create a call graph adapter
165
+ */
166
+ export declare function createCallGraphAdapter(config: CallGraphAdapterConfig): ConstantCallGraphAdapter;
167
+ //# sourceMappingURL=callgraph-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callgraph-adapter.d.ts","sourceRoot":"","sources":["../../../src/constants/integration/callgraph-adapter.ts"],"names":[],"mappings":"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"}