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 @@
1
+ {"version":3,"file":"go-regex.js","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/go-regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Java Constant Regex Extractor
3
+ *
4
+ * Regex-based extraction for Java 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
+ * Java constant regex extractor
11
+ */
12
+ export declare class JavaConstantRegexExtractor extends BaseConstantRegexExtractor {
13
+ readonly language: "java";
14
+ /**
15
+ * Extract constants from Java source
16
+ */
17
+ protected extractConstants(source: string, filePath: string): ConstantExtraction[];
18
+ /**
19
+ * Extract enums from Java source
20
+ */
21
+ protected extractEnums(source: string, filePath: string): EnumExtraction[];
22
+ /**
23
+ * Parse Java enum members
24
+ */
25
+ private parseJavaEnumMembers;
26
+ /**
27
+ * Infer kind from Java value and type
28
+ */
29
+ private inferJavaKind;
30
+ /**
31
+ * Extract value from Java literal
32
+ */
33
+ private extractJavaValue;
34
+ /**
35
+ * Find the containing class name
36
+ */
37
+ private findContainingClass;
38
+ /**
39
+ * Count newlines in a string
40
+ */
41
+ private countNewlines;
42
+ }
43
+ //# sourceMappingURL=java-regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-regex.d.ts","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/java-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,0BAA2B,SAAQ,0BAA0B;IACxE,QAAQ,CAAC,QAAQ,EAAG,MAAM,CAAU;IAEpC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAyGlF;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IA0C1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAgC5B;;OAEG;IACH,OAAO,CAAC,aAAa;IAuCrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,OAAO,CAAC,aAAa;CAGtB"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Java Constant Regex Extractor
3
+ *
4
+ * Regex-based extraction for Java constants and enums.
5
+ * Used as fallback when tree-sitter is unavailable.
6
+ */
7
+ import { BaseConstantRegexExtractor } from './base-regex.js';
8
+ /**
9
+ * Java constant regex extractor
10
+ */
11
+ export class JavaConstantRegexExtractor extends BaseConstantRegexExtractor {
12
+ language = 'java';
13
+ /**
14
+ * Extract constants from Java source
15
+ */
16
+ extractConstants(source, filePath) {
17
+ const constants = [];
18
+ let match;
19
+ // Pattern 1: static final fields
20
+ // public static final int MAX_SIZE = 1000;
21
+ // private static final String API_KEY = "key";
22
+ const staticFinalPattern = /(public|private|protected)?\s*(static)\s+(final)\s+(\w+(?:<[^>]+>)?)\s+([A-Z][A-Z0-9_]*)\s*=\s*([^;]+);/g;
23
+ while ((match = staticFinalPattern.exec(source)) !== null) {
24
+ const visibility = match[1] ?? 'package';
25
+ const type = match[4];
26
+ const name = match[5];
27
+ if (!name || !type)
28
+ continue;
29
+ const rawValue = match[6]?.trim();
30
+ if (!rawValue)
31
+ continue;
32
+ const line = this.getLineNumber(source, match.index);
33
+ const column = this.getColumnNumber(source, match.index);
34
+ const className = this.findContainingClass(source, match.index);
35
+ const docComment = this.extractDocComment(source, line);
36
+ const kind = this.inferJavaKind(rawValue, type);
37
+ const value = this.extractJavaValue(rawValue, kind);
38
+ constants.push({
39
+ id: this.generateId(filePath, className ? `${className}.${name}` : name, line),
40
+ name,
41
+ qualifiedName: className ? `${className}.${name}` : name,
42
+ file: filePath,
43
+ line,
44
+ column,
45
+ endLine: line,
46
+ language: this.language,
47
+ kind: kind === 'primitive' ? 'class_constant' : kind,
48
+ category: 'uncategorized',
49
+ value,
50
+ rawValue: this.truncateValue(rawValue),
51
+ type,
52
+ isExported: visibility === 'public',
53
+ ...(className ? { parentName: className } : {}),
54
+ parentType: 'class',
55
+ decorators: [],
56
+ modifiers: ['static', 'final'],
57
+ confidence: 0.75,
58
+ ...(docComment ? { docComment } : {}),
59
+ });
60
+ }
61
+ // Pattern 2: Interface constants (implicitly public static final)
62
+ // String VERSION = "1.0.0";
63
+ const interfaceConstPattern = /interface\s+(\w+)\s*(?:extends\s+[\w,\s<>]+)?\s*\{([^}]*)\}/gs;
64
+ while ((match = interfaceConstPattern.exec(source)) !== null) {
65
+ const interfaceName = match[1];
66
+ if (!interfaceName)
67
+ continue;
68
+ const body = match[2];
69
+ if (!body)
70
+ continue;
71
+ const interfaceLine = this.getLineNumber(source, match.index);
72
+ // Find constants in interface body
73
+ const constPattern = /(\w+(?:<[^>]+>)?)\s+([A-Z][A-Z0-9_]*)\s*=\s*([^;]+);/g;
74
+ let constMatch;
75
+ while ((constMatch = constPattern.exec(body)) !== null) {
76
+ const type = constMatch[1];
77
+ const name = constMatch[2];
78
+ if (!name || !type)
79
+ continue;
80
+ const rawValue = constMatch[3]?.trim();
81
+ if (!rawValue)
82
+ continue;
83
+ const line = interfaceLine + this.countNewlines(body.slice(0, constMatch.index));
84
+ const kind = this.inferJavaKind(rawValue, type);
85
+ const value = this.extractJavaValue(rawValue, kind);
86
+ constants.push({
87
+ id: this.generateId(filePath, `${interfaceName}.${name}`, line),
88
+ name,
89
+ qualifiedName: `${interfaceName}.${name}`,
90
+ file: filePath,
91
+ line,
92
+ column: 1,
93
+ endLine: line,
94
+ language: this.language,
95
+ kind: 'interface_constant',
96
+ category: 'uncategorized',
97
+ value,
98
+ rawValue: this.truncateValue(rawValue),
99
+ type,
100
+ isExported: true,
101
+ parentName: interfaceName,
102
+ parentType: 'interface',
103
+ decorators: [],
104
+ modifiers: ['public', 'static', 'final'],
105
+ confidence: 0.75,
106
+ });
107
+ }
108
+ }
109
+ return constants;
110
+ }
111
+ /**
112
+ * Extract enums from Java source
113
+ */
114
+ extractEnums(source, filePath) {
115
+ const enums = [];
116
+ // Pattern: public enum EnumName { ... }
117
+ const enumPattern = /(public|private|protected)?\s*enum\s+(\w+)\s*(?:implements\s+[\w,\s<>]+)?\s*\{([^}]*)\}/gs;
118
+ let match;
119
+ while ((match = enumPattern.exec(source)) !== null) {
120
+ const visibility = match[1] ?? 'package';
121
+ const name = match[2];
122
+ if (!name)
123
+ continue;
124
+ const body = match[3];
125
+ if (!body)
126
+ continue;
127
+ const line = this.getLineNumber(source, match.index);
128
+ const endLine = this.getLineNumber(source, match.index + match[0].length);
129
+ const docComment = this.extractDocComment(source, line);
130
+ const members = this.parseJavaEnumMembers(body, line);
131
+ enums.push({
132
+ id: this.generateId(filePath, name, line),
133
+ name,
134
+ qualifiedName: name,
135
+ file: filePath,
136
+ line,
137
+ endLine,
138
+ language: this.language,
139
+ isExported: visibility === 'public',
140
+ members,
141
+ isFlags: false,
142
+ isStringEnum: false,
143
+ backingType: 'int',
144
+ decorators: [],
145
+ modifiers: visibility !== 'package' ? [visibility] : [],
146
+ confidence: 0.8,
147
+ ...(docComment ? { docComment } : {}),
148
+ });
149
+ }
150
+ return enums;
151
+ }
152
+ /**
153
+ * Parse Java enum members
154
+ */
155
+ parseJavaEnumMembers(body, startLine) {
156
+ const members = [];
157
+ // Split by semicolon to separate enum constants from methods
158
+ const constantsPart = body.split(';')[0] ?? body;
159
+ // Match enum constants: NAME, NAME(args), NAME { ... }
160
+ const memberPattern = /([A-Z][A-Z0-9_]*)\s*(?:\([^)]*\))?\s*(?:\{[^}]*\})?\s*,?/g;
161
+ let match;
162
+ let index = 0;
163
+ while ((match = memberPattern.exec(constantsPart)) !== null) {
164
+ const name = match[1];
165
+ if (!name)
166
+ continue;
167
+ const lineOffset = this.countNewlines(constantsPart.slice(0, match.index));
168
+ members.push({
169
+ name,
170
+ value: index,
171
+ line: startLine + lineOffset + 1,
172
+ isAutoValue: true,
173
+ });
174
+ index++;
175
+ }
176
+ return members;
177
+ }
178
+ /**
179
+ * Infer kind from Java value and type
180
+ */
181
+ inferJavaKind(value, type) {
182
+ const trimmed = value.trim();
183
+ // Array initializer
184
+ if (trimmed.startsWith('{') || trimmed.startsWith('new ') && trimmed.includes('[')) {
185
+ return 'array';
186
+ }
187
+ // Object creation
188
+ if (trimmed.startsWith('new ')) {
189
+ return 'object';
190
+ }
191
+ // String
192
+ if (trimmed.startsWith('"')) {
193
+ return 'primitive';
194
+ }
195
+ // Character
196
+ if (trimmed.startsWith("'")) {
197
+ return 'primitive';
198
+ }
199
+ // Number
200
+ if (/^-?\d+(\.\d+)?[LlFfDd]?$/.test(trimmed)) {
201
+ return 'primitive';
202
+ }
203
+ // Boolean
204
+ if (trimmed === 'true' || trimmed === 'false') {
205
+ return 'primitive';
206
+ }
207
+ // null
208
+ if (trimmed === 'null') {
209
+ return 'primitive';
210
+ }
211
+ // Primitive types
212
+ if (['int', 'long', 'short', 'byte', 'float', 'double', 'boolean', 'char', 'String'].includes(type)) {
213
+ return 'primitive';
214
+ }
215
+ return 'computed';
216
+ }
217
+ /**
218
+ * Extract value from Java literal
219
+ */
220
+ extractJavaValue(rawValue, kind) {
221
+ if (kind === 'object' || kind === 'array' || kind === 'computed') {
222
+ return null;
223
+ }
224
+ const trimmed = rawValue.trim();
225
+ // String literal
226
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
227
+ return trimmed.slice(1, -1);
228
+ }
229
+ // Character literal
230
+ if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
231
+ return trimmed.slice(1, -1);
232
+ }
233
+ // Long literal
234
+ if (/^-?\d+[Ll]$/.test(trimmed)) {
235
+ return parseInt(trimmed.slice(0, -1), 10);
236
+ }
237
+ // Float/Double literal
238
+ if (/^-?\d+(\.\d+)?[FfDd]$/.test(trimmed)) {
239
+ return parseFloat(trimmed.slice(0, -1));
240
+ }
241
+ // Integer
242
+ if (/^-?\d+$/.test(trimmed)) {
243
+ return parseInt(trimmed, 10);
244
+ }
245
+ // Decimal
246
+ if (/^-?\d+\.\d+$/.test(trimmed)) {
247
+ return parseFloat(trimmed);
248
+ }
249
+ // Boolean
250
+ if (trimmed === 'true')
251
+ return true;
252
+ if (trimmed === 'false')
253
+ return false;
254
+ if (trimmed === 'null')
255
+ return null;
256
+ return null;
257
+ }
258
+ /**
259
+ * Find the containing class name
260
+ */
261
+ findContainingClass(source, position) {
262
+ const beforePosition = source.slice(0, position);
263
+ const classMatch = beforePosition.match(/class\s+(\w+)(?:\s+extends\s+\w+)?(?:\s+implements\s+[\w,\s]+)?\s*\{[^}]*$/);
264
+ if (classMatch && classMatch[1]) {
265
+ return classMatch[1];
266
+ }
267
+ return null;
268
+ }
269
+ /**
270
+ * Count newlines in a string
271
+ */
272
+ countNewlines(str) {
273
+ return (str.match(/\n/g) || []).length;
274
+ }
275
+ }
276
+ //# sourceMappingURL=java-regex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-regex.js","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/java-regex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PHP Constant Regex Extractor
3
+ *
4
+ * Regex-based extraction for PHP 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
+ * PHP constant regex extractor
11
+ */
12
+ export declare class PhpConstantRegexExtractor extends BaseConstantRegexExtractor {
13
+ readonly language: "php";
14
+ /**
15
+ * Extract constants from PHP source
16
+ */
17
+ protected extractConstants(source: string, filePath: string): ConstantExtraction[];
18
+ /**
19
+ * Extract enums from PHP source (PHP 8.1+)
20
+ */
21
+ protected extractEnums(source: string, filePath: string): EnumExtraction[];
22
+ /**
23
+ * Parse PHP enum members
24
+ */
25
+ private parsePhpEnumMembers;
26
+ /**
27
+ * Infer kind from PHP value
28
+ */
29
+ private inferPhpKind;
30
+ /**
31
+ * Extract value from PHP literal
32
+ */
33
+ private extractPhpValue;
34
+ /**
35
+ * Find the containing class name
36
+ */
37
+ private findContainingClass;
38
+ }
39
+ //# sourceMappingURL=php-regex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php-regex.d.ts","sourceRoot":"","sources":["../../../../src/constants/extractors/regex/php-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,yBAA0B,SAAQ,0BAA0B;IACvE,QAAQ,CAAC,QAAQ,EAAG,KAAK,CAAU;IAEnC;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE;IA2FlF;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,cAAc,EAAE;IA2C1E;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA0D3B;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAsCvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAU5B"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * PHP Constant Regex Extractor
3
+ *
4
+ * Regex-based extraction for PHP constants and enums.
5
+ * Used as fallback when tree-sitter is unavailable.
6
+ */
7
+ import { BaseConstantRegexExtractor } from './base-regex.js';
8
+ /**
9
+ * PHP constant regex extractor
10
+ */
11
+ export class PhpConstantRegexExtractor extends BaseConstantRegexExtractor {
12
+ language = 'php';
13
+ /**
14
+ * Extract constants from PHP source
15
+ */
16
+ extractConstants(source, filePath) {
17
+ const constants = [];
18
+ let match;
19
+ // Pattern 1: Class constants
20
+ // public const MAX_RETRIES = 3;
21
+ // private const API_KEY = 'secret';
22
+ const classConstPattern = /(public|private|protected)?\s*(const)\s+([A-Z][A-Z0-9_]*)\s*=\s*([^;]+);/g;
23
+ while ((match = classConstPattern.exec(source)) !== null) {
24
+ const visibility = match[1] ?? 'public';
25
+ const name = match[3];
26
+ if (!name)
27
+ continue;
28
+ const rawValue = match[4]?.trim();
29
+ if (!rawValue)
30
+ continue;
31
+ const line = this.getLineNumber(source, match.index);
32
+ const column = this.getColumnNumber(source, match.index);
33
+ const className = this.findContainingClass(source, match.index);
34
+ const docComment = this.extractDocComment(source, line);
35
+ const kind = this.inferPhpKind(rawValue);
36
+ const value = this.extractPhpValue(rawValue, kind);
37
+ constants.push({
38
+ id: this.generateId(filePath, className ? `${className}::${name}` : name, line),
39
+ name,
40
+ qualifiedName: className ? `${className}::${name}` : name,
41
+ file: filePath,
42
+ line,
43
+ column,
44
+ endLine: line,
45
+ language: this.language,
46
+ kind: 'class_constant',
47
+ category: 'uncategorized',
48
+ value,
49
+ rawValue: this.truncateValue(rawValue),
50
+ isExported: visibility === 'public',
51
+ ...(className ? { parentName: className } : {}),
52
+ parentType: 'class',
53
+ decorators: [],
54
+ modifiers: ['const', visibility],
55
+ confidence: 0.75,
56
+ ...(docComment ? { docComment } : {}),
57
+ });
58
+ }
59
+ // Pattern 2: define() constants
60
+ // define('APP_VERSION', '1.0.0');
61
+ // define("MAX_SIZE", 1000);
62
+ const definePattern = /define\s*\(\s*(['"])([A-Z][A-Z0-9_]*)\1\s*,\s*([^)]+)\)/g;
63
+ while ((match = definePattern.exec(source)) !== null) {
64
+ const name = match[2];
65
+ if (!name)
66
+ continue;
67
+ const rawValue = match[3]?.trim();
68
+ if (!rawValue)
69
+ continue;
70
+ const line = this.getLineNumber(source, match.index);
71
+ const column = this.getColumnNumber(source, match.index);
72
+ const docComment = this.extractDocComment(source, line);
73
+ const kind = this.inferPhpKind(rawValue);
74
+ const value = this.extractPhpValue(rawValue, kind);
75
+ constants.push({
76
+ id: this.generateId(filePath, name, line),
77
+ name,
78
+ qualifiedName: name,
79
+ file: filePath,
80
+ line,
81
+ column,
82
+ endLine: line,
83
+ language: this.language,
84
+ kind: kind === 'primitive' ? 'primitive' : kind,
85
+ category: 'uncategorized',
86
+ value,
87
+ rawValue: this.truncateValue(rawValue),
88
+ isExported: true, // define() constants are global
89
+ decorators: [],
90
+ modifiers: ['define'],
91
+ confidence: 0.75,
92
+ ...(docComment ? { docComment } : {}),
93
+ });
94
+ }
95
+ return constants;
96
+ }
97
+ /**
98
+ * Extract enums from PHP source (PHP 8.1+)
99
+ */
100
+ extractEnums(source, filePath) {
101
+ const enums = [];
102
+ // Pattern: enum EnumName: string|int { ... }
103
+ const enumPattern = /enum\s+(\w+)\s*(?::\s*(string|int))?\s*\{([^}]*)\}/gs;
104
+ let match;
105
+ while ((match = enumPattern.exec(source)) !== null) {
106
+ const name = match[1];
107
+ if (!name)
108
+ continue;
109
+ const backingType = match[2] ?? 'int';
110
+ const body = match[3];
111
+ if (!body)
112
+ continue;
113
+ const line = this.getLineNumber(source, match.index);
114
+ const endLine = this.getLineNumber(source, match.index + match[0].length);
115
+ const docComment = this.extractDocComment(source, line);
116
+ const isStringEnum = backingType === 'string';
117
+ const members = this.parsePhpEnumMembers(body, line, isStringEnum);
118
+ enums.push({
119
+ id: this.generateId(filePath, name, line),
120
+ name,
121
+ qualifiedName: name,
122
+ file: filePath,
123
+ line,
124
+ endLine,
125
+ language: this.language,
126
+ isExported: true,
127
+ members,
128
+ isFlags: false,
129
+ isStringEnum,
130
+ backingType,
131
+ decorators: [],
132
+ modifiers: [],
133
+ confidence: 0.8,
134
+ ...(docComment ? { docComment } : {}),
135
+ });
136
+ }
137
+ return enums;
138
+ }
139
+ /**
140
+ * Parse PHP enum members
141
+ */
142
+ parsePhpEnumMembers(body, startLine, _isStringEnum) {
143
+ const members = [];
144
+ const lines = body.split('\n');
145
+ let currentLine = startLine;
146
+ let autoValue = 0;
147
+ for (const line of lines) {
148
+ currentLine++;
149
+ const trimmed = line.trim();
150
+ // Skip empty lines and comments
151
+ if (!trimmed || trimmed.startsWith('//') || trimmed.startsWith('/*') || trimmed.startsWith('#')) {
152
+ continue;
153
+ }
154
+ // Skip methods
155
+ if (trimmed.includes('function ')) {
156
+ continue;
157
+ }
158
+ // Match enum case: case Name = 'value'; or case Name;
159
+ const memberMatch = trimmed.match(/^case\s+(\w+)\s*(?:=\s*([^;]+))?\s*;/);
160
+ if (memberMatch) {
161
+ const memberName = memberMatch[1];
162
+ if (!memberName)
163
+ continue;
164
+ const rawValue = memberMatch[2]?.trim();
165
+ let value;
166
+ let isAutoValue = false;
167
+ if (rawValue) {
168
+ if (rawValue.startsWith("'") || rawValue.startsWith('"')) {
169
+ value = rawValue.slice(1, -1);
170
+ }
171
+ else if (/^-?\d+$/.test(rawValue)) {
172
+ value = parseInt(rawValue, 10);
173
+ autoValue = value + 1;
174
+ }
175
+ else {
176
+ value = rawValue;
177
+ }
178
+ }
179
+ else {
180
+ value = autoValue;
181
+ autoValue++;
182
+ isAutoValue = true;
183
+ }
184
+ members.push({
185
+ name: memberName,
186
+ value,
187
+ line: currentLine,
188
+ isAutoValue,
189
+ });
190
+ }
191
+ }
192
+ return members;
193
+ }
194
+ /**
195
+ * Infer kind from PHP value
196
+ */
197
+ inferPhpKind(value) {
198
+ const trimmed = value.trim();
199
+ // Array
200
+ if (trimmed.startsWith('[') || trimmed.startsWith('array(')) {
201
+ return 'array';
202
+ }
203
+ // Object/new instance
204
+ if (trimmed.startsWith('new ')) {
205
+ return 'object';
206
+ }
207
+ // String
208
+ if (trimmed.startsWith("'") || trimmed.startsWith('"')) {
209
+ return 'primitive';
210
+ }
211
+ // Number
212
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
213
+ return 'primitive';
214
+ }
215
+ // Boolean
216
+ if (trimmed === 'true' || trimmed === 'false') {
217
+ return 'primitive';
218
+ }
219
+ // null
220
+ if (trimmed === 'null') {
221
+ return 'primitive';
222
+ }
223
+ return 'computed';
224
+ }
225
+ /**
226
+ * Extract value from PHP literal
227
+ */
228
+ extractPhpValue(rawValue, kind) {
229
+ if (kind === 'object' || kind === 'array' || kind === 'computed') {
230
+ return null;
231
+ }
232
+ const trimmed = rawValue.trim();
233
+ // Single-quoted string
234
+ if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
235
+ return trimmed.slice(1, -1);
236
+ }
237
+ // Double-quoted string
238
+ if (trimmed.startsWith('"') && trimmed.endsWith('"')) {
239
+ return trimmed.slice(1, -1);
240
+ }
241
+ // Integer
242
+ if (/^-?\d+$/.test(trimmed)) {
243
+ return parseInt(trimmed, 10);
244
+ }
245
+ // Float
246
+ if (/^-?\d+\.\d+$/.test(trimmed)) {
247
+ return parseFloat(trimmed);
248
+ }
249
+ // Boolean
250
+ if (trimmed === 'true')
251
+ return true;
252
+ if (trimmed === 'false')
253
+ return false;
254
+ if (trimmed === 'null')
255
+ return null;
256
+ return null;
257
+ }
258
+ /**
259
+ * Find the containing class name
260
+ */
261
+ findContainingClass(source, position) {
262
+ const beforePosition = source.slice(0, position);
263
+ const classMatch = beforePosition.match(/class\s+(\w+)(?:\s+extends\s+\w+)?(?:\s+implements\s+[\w,\s\\]+)?\s*\{[^}]*$/);
264
+ if (classMatch && classMatch[1]) {
265
+ return classMatch[1];
266
+ }
267
+ return null;
268
+ }
269
+ }
270
+ //# sourceMappingURL=php-regex.js.map