driftdetect-detectors 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/config/constants-detector.d.ts +56 -0
- package/dist/config/constants-detector.d.ts.map +1 -0
- package/dist/config/constants-detector.js +411 -0
- package/dist/config/constants-detector.js.map +1 -0
- package/dist/config/index.d.ts +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/index.d.ts +22 -22
- package/package.json +12 -12
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Geoffrey Fernald
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants Pattern Detector
|
|
3
|
+
*
|
|
4
|
+
* Detects patterns related to constants, enums, and configuration values:
|
|
5
|
+
* - Inconsistent constant naming conventions
|
|
6
|
+
* - Magic values that should be constants
|
|
7
|
+
* - Hardcoded secrets in constants
|
|
8
|
+
* - Duplicate constant definitions
|
|
9
|
+
*
|
|
10
|
+
* @requirements Constant & Enum Extraction Feature
|
|
11
|
+
*/
|
|
12
|
+
import type { Violation, QuickFix, Language } from 'driftdetect-core';
|
|
13
|
+
import { UnifiedDetector, type DetectionStrategy, type StrategyResult, type DetectionContext } from '../base/unified-detector.js';
|
|
14
|
+
/**
|
|
15
|
+
* Constants pattern detector
|
|
16
|
+
*
|
|
17
|
+
* Detects patterns and violations related to constants usage.
|
|
18
|
+
*/
|
|
19
|
+
export declare class ConstantsDetector extends UnifiedDetector {
|
|
20
|
+
readonly id = "config/constants";
|
|
21
|
+
readonly category: "config";
|
|
22
|
+
readonly subcategory = "constants";
|
|
23
|
+
readonly name = "Constants Pattern Detector";
|
|
24
|
+
readonly description = "Detects constant naming conventions, magic values, and potential secrets";
|
|
25
|
+
readonly supportedLanguages: Language[];
|
|
26
|
+
readonly strategies: DetectionStrategy[];
|
|
27
|
+
/**
|
|
28
|
+
* Learned naming convention for this codebase
|
|
29
|
+
*/
|
|
30
|
+
private learnedConvention;
|
|
31
|
+
/**
|
|
32
|
+
* Count of constants by naming convention
|
|
33
|
+
*/
|
|
34
|
+
private conventionCounts;
|
|
35
|
+
/**
|
|
36
|
+
* Generate quick fix for a violation
|
|
37
|
+
*/
|
|
38
|
+
generateQuickFix(violation: Violation): QuickFix | null;
|
|
39
|
+
protected detectWithStrategy(strategy: DetectionStrategy, context: DetectionContext): Promise<StrategyResult>;
|
|
40
|
+
private detectWithRegex;
|
|
41
|
+
private detectSemantic;
|
|
42
|
+
private detectLearning;
|
|
43
|
+
private getConstantPatterns;
|
|
44
|
+
private detectNamingConvention;
|
|
45
|
+
private isInConstantDeclaration;
|
|
46
|
+
private suggestConstantName;
|
|
47
|
+
private getLineNumber;
|
|
48
|
+
private getLineStart;
|
|
49
|
+
private createPatternMatch;
|
|
50
|
+
private createViolation;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Factory function
|
|
54
|
+
*/
|
|
55
|
+
export declare function createConstantsDetector(): ConstantsDetector;
|
|
56
|
+
//# sourceMappingURL=constants-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-detector.d.ts","sourceRoot":"","sources":["../../src/config/constants-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAgB,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEpF,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,6BAA6B,CAAC;AA4GrC;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,eAAe;IACpD,QAAQ,CAAC,EAAE,sBAAsB;IACjC,QAAQ,CAAC,QAAQ,EAAG,QAAQ,CAAU;IACtC,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,WAAW,8EACyD;IAC7E,QAAQ,CAAC,kBAAkB,EAAE,QAAQ,EAAE,CAQrC;IACF,QAAQ,CAAC,UAAU,EAAE,iBAAiB,EAAE,CAAqC;IAE7E;;OAEG;IACH,OAAO,CAAC,iBAAiB,CAAuB;IAEhD;;OAEG;IACH,OAAO,CAAC,gBAAgB,CAA6B;IAErD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,QAAQ,GAAG,IAAI;cA0CvC,kBAAkB,CAChC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,cAAc,CAAC;YAiBZ,eAAe;YAqGf,cAAc;YAmDd,cAAc;IAuD5B,OAAO,CAAC,mBAAmB;IA4C3B,OAAO,CAAC,sBAAsB;IAS9B,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,eAAe;CA2BxB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Constants Pattern Detector
|
|
3
|
+
*
|
|
4
|
+
* Detects patterns related to constants, enums, and configuration values:
|
|
5
|
+
* - Inconsistent constant naming conventions
|
|
6
|
+
* - Magic values that should be constants
|
|
7
|
+
* - Hardcoded secrets in constants
|
|
8
|
+
* - Duplicate constant definitions
|
|
9
|
+
*
|
|
10
|
+
* @requirements Constant & Enum Extraction Feature
|
|
11
|
+
*/
|
|
12
|
+
import { UnifiedDetector, } from '../base/unified-detector.js';
|
|
13
|
+
// ============================================================================
|
|
14
|
+
// Constants
|
|
15
|
+
// ============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Common constant naming conventions by language
|
|
18
|
+
*/
|
|
19
|
+
const NAMING_CONVENTIONS = [
|
|
20
|
+
// SCREAMING_SNAKE_CASE (most common)
|
|
21
|
+
{
|
|
22
|
+
pattern: /^[A-Z][A-Z0-9]*(?:_[A-Z0-9]+)*$/,
|
|
23
|
+
name: 'SCREAMING_SNAKE_CASE',
|
|
24
|
+
languages: ['typescript', 'javascript', 'python', 'java', 'php', 'go'],
|
|
25
|
+
},
|
|
26
|
+
// PascalCase (C#, Go exported)
|
|
27
|
+
{
|
|
28
|
+
pattern: /^[A-Z][a-zA-Z0-9]*$/,
|
|
29
|
+
name: 'PascalCase',
|
|
30
|
+
languages: ['csharp', 'go'],
|
|
31
|
+
},
|
|
32
|
+
// camelCase (some JS/TS projects)
|
|
33
|
+
{
|
|
34
|
+
pattern: /^[a-z][a-zA-Z0-9]*$/,
|
|
35
|
+
name: 'camelCase',
|
|
36
|
+
languages: ['typescript', 'javascript'],
|
|
37
|
+
},
|
|
38
|
+
// k prefix (Hungarian notation)
|
|
39
|
+
{
|
|
40
|
+
pattern: /^k[A-Z][a-zA-Z0-9]*$/,
|
|
41
|
+
name: 'kPrefixPascalCase',
|
|
42
|
+
languages: ['csharp', 'cpp'],
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Patterns that indicate magic values
|
|
47
|
+
*/
|
|
48
|
+
const MAGIC_VALUE_PATTERNS = [
|
|
49
|
+
// HTTP status codes
|
|
50
|
+
{
|
|
51
|
+
pattern: /\b(200|201|204|301|302|400|401|403|404|500|502|503)\b/,
|
|
52
|
+
category: 'http_status',
|
|
53
|
+
severity: 'warning',
|
|
54
|
+
},
|
|
55
|
+
// Common timeouts (in ms)
|
|
56
|
+
{
|
|
57
|
+
pattern: /\b(1000|3000|5000|10000|30000|60000)\b/,
|
|
58
|
+
category: 'timeout',
|
|
59
|
+
severity: 'info',
|
|
60
|
+
},
|
|
61
|
+
// Port numbers
|
|
62
|
+
{
|
|
63
|
+
pattern: /\b(80|443|3000|3001|5000|8000|8080|8443|9000)\b/,
|
|
64
|
+
category: 'port',
|
|
65
|
+
severity: 'info',
|
|
66
|
+
},
|
|
67
|
+
// Retry counts
|
|
68
|
+
{
|
|
69
|
+
pattern: /\b(retry|retries|attempts)\s*[=:]\s*[3-5]\b/i,
|
|
70
|
+
category: 'retry_count',
|
|
71
|
+
severity: 'info',
|
|
72
|
+
},
|
|
73
|
+
// Pagination limits
|
|
74
|
+
{
|
|
75
|
+
pattern: /\b(limit|pageSize|perPage)\s*[=:]\s*(10|20|25|50|100)\b/i,
|
|
76
|
+
category: 'pagination',
|
|
77
|
+
severity: 'info',
|
|
78
|
+
},
|
|
79
|
+
];
|
|
80
|
+
/**
|
|
81
|
+
* Secret patterns (simplified - full detection in security-scanner)
|
|
82
|
+
*/
|
|
83
|
+
const SECRET_PATTERNS = [
|
|
84
|
+
/(?:api[_-]?key|apikey)\s*[=:]\s*['"][^'"]{20,}['"]/i,
|
|
85
|
+
/(?:secret|password|passwd|pwd)\s*[=:]\s*['"][^'"]+['"]/i,
|
|
86
|
+
/(?:token|auth[_-]?token)\s*[=:]\s*['"][^'"]{20,}['"]/i,
|
|
87
|
+
/(?:private[_-]?key)\s*[=:]\s*['"][^'"]+['"]/i,
|
|
88
|
+
];
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Detector Implementation
|
|
91
|
+
// ============================================================================
|
|
92
|
+
/**
|
|
93
|
+
* Constants pattern detector
|
|
94
|
+
*
|
|
95
|
+
* Detects patterns and violations related to constants usage.
|
|
96
|
+
*/
|
|
97
|
+
export class ConstantsDetector extends UnifiedDetector {
|
|
98
|
+
id = 'config/constants';
|
|
99
|
+
category = 'config';
|
|
100
|
+
subcategory = 'constants';
|
|
101
|
+
name = 'Constants Pattern Detector';
|
|
102
|
+
description = 'Detects constant naming conventions, magic values, and potential secrets';
|
|
103
|
+
supportedLanguages = [
|
|
104
|
+
'typescript',
|
|
105
|
+
'javascript',
|
|
106
|
+
'python',
|
|
107
|
+
'java',
|
|
108
|
+
'csharp',
|
|
109
|
+
'php',
|
|
110
|
+
'go',
|
|
111
|
+
];
|
|
112
|
+
strategies = ['regex', 'semantic', 'learning'];
|
|
113
|
+
/**
|
|
114
|
+
* Learned naming convention for this codebase
|
|
115
|
+
*/
|
|
116
|
+
learnedConvention = null;
|
|
117
|
+
/**
|
|
118
|
+
* Count of constants by naming convention
|
|
119
|
+
*/
|
|
120
|
+
conventionCounts = new Map();
|
|
121
|
+
/**
|
|
122
|
+
* Generate quick fix for a violation
|
|
123
|
+
*/
|
|
124
|
+
generateQuickFix(violation) {
|
|
125
|
+
if (violation.patternId === 'magic-value') {
|
|
126
|
+
return {
|
|
127
|
+
title: 'Extract to constant',
|
|
128
|
+
kind: 'quickfix',
|
|
129
|
+
edit: {
|
|
130
|
+
changes: {
|
|
131
|
+
[violation.file]: [{
|
|
132
|
+
range: violation.range,
|
|
133
|
+
newText: `/* TODO: Extract to constant */`,
|
|
134
|
+
}],
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
isPreferred: true,
|
|
138
|
+
confidence: 0.7,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (violation.patternId === 'hardcoded-secret') {
|
|
142
|
+
return {
|
|
143
|
+
title: 'Move to environment variable',
|
|
144
|
+
kind: 'quickfix',
|
|
145
|
+
edit: {
|
|
146
|
+
changes: {
|
|
147
|
+
[violation.file]: [{
|
|
148
|
+
range: violation.range,
|
|
149
|
+
newText: `process.env.SECRET_VALUE`,
|
|
150
|
+
}],
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
isPreferred: true,
|
|
154
|
+
confidence: 0.8,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
// ============================================================================
|
|
160
|
+
// Strategy Implementation
|
|
161
|
+
// ============================================================================
|
|
162
|
+
async detectWithStrategy(strategy, context) {
|
|
163
|
+
switch (strategy) {
|
|
164
|
+
case 'regex':
|
|
165
|
+
return this.detectWithRegex(context);
|
|
166
|
+
case 'semantic':
|
|
167
|
+
return this.detectSemantic(context);
|
|
168
|
+
case 'learning':
|
|
169
|
+
return this.detectLearning(context);
|
|
170
|
+
default:
|
|
171
|
+
return this.createSkippedResult(strategy, 'Not implemented');
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// ============================================================================
|
|
175
|
+
// Regex Detection
|
|
176
|
+
// ============================================================================
|
|
177
|
+
async detectWithRegex(context) {
|
|
178
|
+
const patterns = [];
|
|
179
|
+
const violations = [];
|
|
180
|
+
const content = context.content;
|
|
181
|
+
const lines = content.split('\n');
|
|
182
|
+
// Detect constant declarations
|
|
183
|
+
const constantPatterns = this.getConstantPatterns(context.language);
|
|
184
|
+
for (const pattern of constantPatterns) {
|
|
185
|
+
let match;
|
|
186
|
+
while ((match = pattern.regex.exec(content)) !== null) {
|
|
187
|
+
const line = this.getLineNumber(content, match.index);
|
|
188
|
+
const name = match[1] || match[0];
|
|
189
|
+
// Check naming convention
|
|
190
|
+
const convention = this.detectNamingConvention(name);
|
|
191
|
+
if (convention) {
|
|
192
|
+
this.conventionCounts.set(convention, (this.conventionCounts.get(convention) || 0) + 1);
|
|
193
|
+
}
|
|
194
|
+
patterns.push(this.createPatternMatch(`constant-${pattern.type}`, context.file, line, match.index - this.getLineStart(content, line), {
|
|
195
|
+
name,
|
|
196
|
+
type: pattern.type,
|
|
197
|
+
convention,
|
|
198
|
+
}));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Detect magic values
|
|
202
|
+
for (const magicPattern of MAGIC_VALUE_PATTERNS) {
|
|
203
|
+
let match;
|
|
204
|
+
const regex = new RegExp(magicPattern.pattern.source, 'gi');
|
|
205
|
+
while ((match = regex.exec(content)) !== null) {
|
|
206
|
+
const line = this.getLineNumber(content, match.index);
|
|
207
|
+
const lineContent = lines[line - 1] || '';
|
|
208
|
+
// Skip if it's already in a constant declaration
|
|
209
|
+
if (this.isInConstantDeclaration(lineContent)) {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
violations.push(this.createViolation('magic-value', context.file, line, match.index - this.getLineStart(content, line), `Magic value '${match[0]}' should be extracted to a named constant`, magicPattern.severity, {
|
|
213
|
+
value: match[0],
|
|
214
|
+
category: magicPattern.category,
|
|
215
|
+
suggestedName: this.suggestConstantName(match[0], magicPattern.category),
|
|
216
|
+
}));
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Detect potential secrets
|
|
220
|
+
for (const secretPattern of SECRET_PATTERNS) {
|
|
221
|
+
let match;
|
|
222
|
+
const regex = new RegExp(secretPattern.source, 'gi');
|
|
223
|
+
while ((match = regex.exec(content)) !== null) {
|
|
224
|
+
const line = this.getLineNumber(content, match.index);
|
|
225
|
+
violations.push(this.createViolation('hardcoded-secret', context.file, line, match.index - this.getLineStart(content, line), 'Potential hardcoded secret detected - use environment variables', 'error', {
|
|
226
|
+
pattern: secretPattern.source,
|
|
227
|
+
}));
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
return this.createStrategyResult('regex', patterns, violations, 0.8);
|
|
231
|
+
}
|
|
232
|
+
// ============================================================================
|
|
233
|
+
// Semantic Detection
|
|
234
|
+
// ============================================================================
|
|
235
|
+
async detectSemantic(context) {
|
|
236
|
+
const patterns = [];
|
|
237
|
+
const violations = [];
|
|
238
|
+
const content = context.content;
|
|
239
|
+
// Semantic keywords that indicate constants
|
|
240
|
+
const semanticPatterns = [
|
|
241
|
+
{ keyword: 'CONFIG', category: 'config' },
|
|
242
|
+
{ keyword: 'SETTINGS', category: 'config' },
|
|
243
|
+
{ keyword: 'OPTIONS', category: 'config' },
|
|
244
|
+
{ keyword: 'DEFAULT', category: 'default' },
|
|
245
|
+
{ keyword: 'MAX_', category: 'limit' },
|
|
246
|
+
{ keyword: 'MIN_', category: 'limit' },
|
|
247
|
+
{ keyword: 'TIMEOUT', category: 'timeout' },
|
|
248
|
+
{ keyword: 'RETRY', category: 'retry' },
|
|
249
|
+
{ keyword: 'ERROR_', category: 'error' },
|
|
250
|
+
{ keyword: 'STATUS_', category: 'status' },
|
|
251
|
+
{ keyword: 'API_', category: 'api' },
|
|
252
|
+
{ keyword: 'URL_', category: 'api' },
|
|
253
|
+
{ keyword: 'ENDPOINT', category: 'api' },
|
|
254
|
+
];
|
|
255
|
+
for (const { keyword, category } of semanticPatterns) {
|
|
256
|
+
const regex = new RegExp(`\\b([A-Z_]*${keyword}[A-Z_0-9]*)\\b`, 'g');
|
|
257
|
+
let match;
|
|
258
|
+
while ((match = regex.exec(content)) !== null) {
|
|
259
|
+
const line = this.getLineNumber(content, match.index);
|
|
260
|
+
patterns.push(this.createPatternMatch(`constant-semantic-${category}`, context.file, line, match.index - this.getLineStart(content, line), {
|
|
261
|
+
name: match[1],
|
|
262
|
+
category,
|
|
263
|
+
keyword,
|
|
264
|
+
}));
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return this.createStrategyResult('semantic', patterns, violations, 0.7);
|
|
268
|
+
}
|
|
269
|
+
// ============================================================================
|
|
270
|
+
// Learning Detection
|
|
271
|
+
// ============================================================================
|
|
272
|
+
async detectLearning(context) {
|
|
273
|
+
const violations = [];
|
|
274
|
+
// Learn the dominant naming convention
|
|
275
|
+
if (!this.learnedConvention && this.conventionCounts.size > 0) {
|
|
276
|
+
let maxCount = 0;
|
|
277
|
+
for (const [convention, count] of this.conventionCounts) {
|
|
278
|
+
if (count > maxCount) {
|
|
279
|
+
maxCount = count;
|
|
280
|
+
this.learnedConvention = convention;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
// If we've learned a convention, flag violations
|
|
285
|
+
if (this.learnedConvention) {
|
|
286
|
+
const constantPatterns = this.getConstantPatterns(context.language);
|
|
287
|
+
const content = context.content;
|
|
288
|
+
for (const pattern of constantPatterns) {
|
|
289
|
+
let match;
|
|
290
|
+
while ((match = pattern.regex.exec(content)) !== null) {
|
|
291
|
+
const name = match[1] || match[0];
|
|
292
|
+
const convention = this.detectNamingConvention(name);
|
|
293
|
+
if (convention && convention !== this.learnedConvention) {
|
|
294
|
+
const line = this.getLineNumber(content, match.index);
|
|
295
|
+
violations.push(this.createViolation('naming-convention-violation', context.file, line, match.index - this.getLineStart(content, line), `Constant '${name}' uses ${convention} but codebase convention is ${this.learnedConvention}`, 'warning', {
|
|
296
|
+
name,
|
|
297
|
+
actualConvention: convention,
|
|
298
|
+
expectedConvention: this.learnedConvention,
|
|
299
|
+
}));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return this.createStrategyResult('learning', [], violations, 0.9);
|
|
305
|
+
}
|
|
306
|
+
// ============================================================================
|
|
307
|
+
// Helper Methods
|
|
308
|
+
// ============================================================================
|
|
309
|
+
getConstantPatterns(language) {
|
|
310
|
+
switch (language) {
|
|
311
|
+
case 'typescript':
|
|
312
|
+
case 'javascript':
|
|
313
|
+
return [
|
|
314
|
+
{ regex: /\bconst\s+([A-Z][A-Z0-9_]*)\s*=/g, type: 'const' },
|
|
315
|
+
{ regex: /\bexport\s+const\s+([A-Z][A-Z0-9_]*)\s*=/g, type: 'export-const' },
|
|
316
|
+
];
|
|
317
|
+
case 'python':
|
|
318
|
+
return [
|
|
319
|
+
{ regex: /^([A-Z][A-Z0-9_]*)\s*=/gm, type: 'module-constant' },
|
|
320
|
+
];
|
|
321
|
+
case 'java':
|
|
322
|
+
return [
|
|
323
|
+
{
|
|
324
|
+
regex: /\b(?:public|private|protected)?\s*static\s+final\s+\w+\s+([A-Z][A-Z0-9_]*)\s*=/g,
|
|
325
|
+
type: 'static-final',
|
|
326
|
+
},
|
|
327
|
+
];
|
|
328
|
+
case 'csharp':
|
|
329
|
+
return [
|
|
330
|
+
{ regex: /\bconst\s+\w+\s+([A-Z][A-Za-z0-9]*)\s*=/g, type: 'const' },
|
|
331
|
+
{
|
|
332
|
+
regex: /\bstatic\s+readonly\s+\w+\s+([A-Z][A-Za-z0-9]*)\s*=/g,
|
|
333
|
+
type: 'static-readonly',
|
|
334
|
+
},
|
|
335
|
+
];
|
|
336
|
+
case 'php':
|
|
337
|
+
return [
|
|
338
|
+
{ regex: /\bconst\s+([A-Z][A-Z0-9_]*)\s*=/g, type: 'const' },
|
|
339
|
+
{ regex: /\bdefine\s*\(\s*['"]([A-Z][A-Z0-9_]*)['"]/g, type: 'define' },
|
|
340
|
+
];
|
|
341
|
+
case 'go':
|
|
342
|
+
return [
|
|
343
|
+
{ regex: /\bconst\s+([A-Z][A-Za-z0-9]*)\s*=/g, type: 'const' },
|
|
344
|
+
{ regex: /\bconst\s+\(\s*([A-Z][A-Za-z0-9]*)/g, type: 'const-block' },
|
|
345
|
+
];
|
|
346
|
+
default:
|
|
347
|
+
return [];
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
detectNamingConvention(name) {
|
|
351
|
+
for (const convention of NAMING_CONVENTIONS) {
|
|
352
|
+
if (convention.pattern.test(name)) {
|
|
353
|
+
return convention.name;
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
isInConstantDeclaration(line) {
|
|
359
|
+
return /\b(const|final|readonly|define)\b/i.test(line);
|
|
360
|
+
}
|
|
361
|
+
suggestConstantName(value, category) {
|
|
362
|
+
const prefix = category.toUpperCase();
|
|
363
|
+
const suffix = value.replace(/[^a-zA-Z0-9]/g, '_').toUpperCase();
|
|
364
|
+
return `${prefix}_${suffix}`;
|
|
365
|
+
}
|
|
366
|
+
getLineNumber(content, index) {
|
|
367
|
+
return content.substring(0, index).split('\n').length;
|
|
368
|
+
}
|
|
369
|
+
getLineStart(content, lineNumber) {
|
|
370
|
+
const lines = content.split('\n');
|
|
371
|
+
let start = 0;
|
|
372
|
+
for (let i = 0; i < lineNumber - 1 && i < lines.length; i++) {
|
|
373
|
+
start += lines[i].length + 1;
|
|
374
|
+
}
|
|
375
|
+
return start;
|
|
376
|
+
}
|
|
377
|
+
createPatternMatch(patternId, file, line, column, _metadata) {
|
|
378
|
+
return {
|
|
379
|
+
patternId,
|
|
380
|
+
location: { file, line, column },
|
|
381
|
+
confidence: 0.85,
|
|
382
|
+
isOutlier: false,
|
|
383
|
+
};
|
|
384
|
+
}
|
|
385
|
+
createViolation(patternId, file, line, column, message, severity, _metadata) {
|
|
386
|
+
return {
|
|
387
|
+
id: `${patternId}-${file}-${line}-${column}`,
|
|
388
|
+
patternId,
|
|
389
|
+
file,
|
|
390
|
+
range: {
|
|
391
|
+
start: { line: line - 1, character: column },
|
|
392
|
+
end: { line: line - 1, character: column + 1 },
|
|
393
|
+
},
|
|
394
|
+
message,
|
|
395
|
+
severity: severity === 'error' ? 'error' : severity === 'warning' ? 'warning' : 'info',
|
|
396
|
+
expected: 'Follow constant naming conventions',
|
|
397
|
+
actual: message,
|
|
398
|
+
aiExplainAvailable: true,
|
|
399
|
+
aiFixAvailable: true,
|
|
400
|
+
firstSeen: new Date(),
|
|
401
|
+
occurrences: 1,
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Factory function
|
|
407
|
+
*/
|
|
408
|
+
export function createConstantsDetector() {
|
|
409
|
+
return new ConstantsDetector();
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=constants-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants-detector.js","sourceRoot":"","sources":["../../src/config/constants-detector.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.d.ts
CHANGED
|
@@ -37,4 +37,5 @@ export { DefaultValuesSemanticDetector, createDefaultValuesSemanticDetector, } f
|
|
|
37
37
|
export { ConfigValidationSemanticDetector, createConfigValidationSemanticDetector, } from './config-validation-semantic.js';
|
|
38
38
|
export { EnvironmentDetectionSemanticDetector, createEnvironmentDetectionSemanticDetector, } from './environment-detection-semantic.js';
|
|
39
39
|
export * from './aspnet/index.js';
|
|
40
|
+
export { ConstantsDetector, createConstantsDetector, } from './constants-detector.js';
|
|
40
41
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/index.js
CHANGED
|
@@ -68,4 +68,8 @@ export { EnvironmentDetectionSemanticDetector, createEnvironmentDetectionSemanti
|
|
|
68
68
|
// ASP.NET Core Detectors (C#)
|
|
69
69
|
// ============================================================================
|
|
70
70
|
export * from './aspnet/index.js';
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// Constants Pattern Detector
|
|
73
|
+
// ============================================================================
|
|
74
|
+
export { ConstantsDetector, createConstantsDetector, } from './constants-detector.js';
|
|
71
75
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -121,16 +121,16 @@ export declare function createAllDetectors(): {
|
|
|
121
121
|
clientPatterns: import("./api/client-patterns.js").ClientPatternsDetector;
|
|
122
122
|
retryPatterns: import("./api/retry-patterns.js").RetryPatternsDetector;
|
|
123
123
|
};
|
|
124
|
-
auth: (import("./auth/
|
|
125
|
-
security: (import("./security/input-sanitization-semantic.js").InputSanitizationSemanticDetector | import("./security/
|
|
124
|
+
auth: (import("./auth/middleware-semantic.js").AuthMiddlewareSemanticDetector | import("./auth/token-handling-semantic.js").TokenHandlingSemanticDetector | import("./auth/permission-checks-semantic.js").PermissionChecksSemanticDetector | import("./auth/rbac-semantic.js").RBACSemanticDetector | import("./auth/ownership-semantic.js").OwnershipSemanticDetector | import("./auth/audit-semantic.js").AuditSemanticDetector)[];
|
|
125
|
+
security: (import("./security/input-sanitization-semantic.js").InputSanitizationSemanticDetector | import("./security/sql-injection-semantic.js").SQLInjectionSemanticDetector | import("./security/xss-prevention-semantic.js").XSSPreventionSemanticDetector | import("./security/csrf-protection-semantic.js").CSRFProtectionSemanticDetector | import("./security/csp-headers-semantic.js").CSPHeadersSemanticDetector | import("./security/secret-management-semantic.js").SecretManagementSemanticDetector | import("./security/rate-limiting-semantic.js").RateLimitingSemanticDetector)[];
|
|
126
126
|
errors: (import("./errors/exception-hierarchy-semantic.js").ExceptionHierarchySemanticDetector | import("./errors/error-codes-semantic.js").ErrorCodesSemanticDetector | import("./errors/try-catch-semantic.js").TryCatchSemanticDetector | import("./errors/error-propagation-semantic.js").ErrorPropagationSemanticDetector | import("./errors/async-errors-semantic.js").AsyncErrorsSemanticDetector | import("./errors/circuit-breaker-semantic.js").CircuitBreakerSemanticDetector | import("./errors/error-logging-semantic.js").ErrorLoggingSemanticDetector)[];
|
|
127
127
|
structural: (import("./structural/file-naming-semantic.js").FileNamingSemanticDetector | import("./structural/directory-structure-semantic.js").DirectoryStructureSemanticDetector | import("./structural/co-location-semantic.js").CoLocationSemanticDetector | import("./structural/barrel-exports-semantic.js").BarrelExportsSemanticDetector | import("./structural/import-ordering-semantic.js").ImportOrderingSemanticDetector | import("./structural/module-boundaries-semantic.js").ModuleBoundariesSemanticDetector | import("./structural/circular-deps-semantic.js").CircularDepsSemanticDetector | import("./structural/package-boundaries-semantic.js").PackageBoundariesSemanticDetector)[];
|
|
128
128
|
components: (import("./components/component-structure-semantic.js").ComponentStructureSemanticDetector | import("./components/props-patterns-semantic.js").PropsPatternsSemanticDetector | import("./components/duplicate-detection-semantic.js").DuplicateDetectionSemanticDetector | import("./components/near-duplicate-semantic.js").NearDuplicateSemanticDetector | import("./components/state-patterns-semantic.js").StatePatternsSemanticDetector | import("./components/composition-semantic.js").CompositionSemanticDetector | import("./components/ref-forwarding-semantic.js").RefForwardingSemanticDetector | import("./components/modal-patterns-semantic.js").ModalPatternsSemanticDetector)[];
|
|
129
|
-
styling: (import("./styling/
|
|
129
|
+
styling: (import("./styling/design-tokens-semantic.js").DesignTokensSemanticDetector | import("./styling/spacing-scale-semantic.js").SpacingScaleSemanticDetector | import("./styling/color-usage-semantic.js").ColorUsageSemanticDetector | import("./styling/typography-semantic.js").TypographySemanticDetector | import("./styling/class-naming-semantic.js").ClassNamingSemanticDetector | import("./styling/tailwind-patterns-semantic.js").TailwindPatternsSemanticDetector | import("./styling/z-index-scale-semantic.js").ZIndexScaleSemanticDetector | import("./styling/responsive-semantic.js").ResponsiveSemanticDetector)[];
|
|
130
130
|
logging: (import("./logging/structured-logging-semantic.js").StructuredLoggingSemanticDetector | import("./logging/log-levels-semantic.js").LogLevelsSemanticDetector | import("./logging/context-fields-semantic.js").ContextFieldsSemanticDetector | import("./logging/correlation-ids-semantic.js").CorrelationIdsSemanticDetector | import("./logging/pii-redaction-semantic.js").PIIRedactionSemanticDetector | import("./logging/metrics-semantic.js").MetricsSemanticDetector | import("./logging/health-checks-semantic.js").HealthChecksSemanticDetector)[];
|
|
131
131
|
testing: (import("./testing/test-file-naming-semantic.js").TestFileNamingSemanticDetector | import("./testing/test-co-location-semantic.js").TestCoLocationSemanticDetector | import("./testing/test-structure-semantic.js").TestStructureSemanticDetector | import("./testing/mock-patterns-semantic.js").MockPatternsSemanticDetector | import("./testing/fixture-patterns-semantic.js").FixturePatternsSemanticDetector | import("./testing/describe-naming-semantic.js").DescribeNamingSemanticDetector | import("./testing/setup-teardown-semantic.js").SetupTeardownSemanticDetector)[];
|
|
132
132
|
dataAccess: (import("./data-access/query-patterns-semantic.js").QueryPatternsSemanticDetector | import("./data-access/repository-pattern-semantic.js").RepositoryPatternSemanticDetector | import("./data-access/transaction-semantic.js").TransactionSemanticDetector | import("./data-access/validation-semantic.js").ValidationSemanticDetector | import("./data-access/dto-patterns-semantic.js").DTOPatternsSemanticDetector | import("./data-access/n-plus-one-semantic.js").NPlusOneSemanticDetector | import("./data-access/connection-pooling-semantic.js").ConnectionPoolingSemanticDetector)[];
|
|
133
|
-
config: (import("./config/env-config-semantic.js").EnvConfigSemanticDetector | import("./config/
|
|
133
|
+
config: (import("./config/env-config-semantic.js").EnvConfigSemanticDetector | import("./config/required-optional-semantic.js").RequiredOptionalSemanticDetector | import("./config/default-values-semantic.js").DefaultValuesSemanticDetector | import("./config/feature-flags-semantic.js").FeatureFlagsSemanticDetector | import("./config/config-validation-semantic.js").ConfigValidationSemanticDetector | import("./config/environment-detection-semantic.js").EnvironmentDetectionSemanticDetector)[];
|
|
134
134
|
types: (import("./types/file-location-semantic.js").FileLocationSemanticDetector | import("./types/naming-conventions-semantic.js").NamingConventionsSemanticDetector | import("./types/interface-vs-type-semantic.js").InterfaceVsTypeSemanticDetector | import("./types/generic-patterns-semantic.js").GenericPatternsSemanticDetector | import("./types/utility-types-semantic.js").UtilityTypesSemanticDetector | import("./types/type-assertions-semantic.js").TypeAssertionsSemanticDetector | import("./types/any-usage-semantic.js").AnyUsageSemanticDetector)[];
|
|
135
135
|
accessibility: (import("./accessibility/semantic-html-semantic.js").SemanticHtmlSemanticDetector | import("./accessibility/aria-roles-semantic.js").AriaRolesSemanticDetector | import("./accessibility/keyboard-nav-semantic.js").KeyboardNavSemanticDetector | import("./accessibility/focus-management-semantic.js").FocusManagementSemanticDetector | import("./accessibility/heading-hierarchy-semantic.js").HeadingHierarchySemanticDetector | import("./accessibility/alt-text-semantic.js").AltTextSemanticDetector)[];
|
|
136
136
|
documentation: (import("./documentation/jsdoc-patterns-semantic.js").JSDocPatternsSemanticDetector | import("./documentation/readme-structure-semantic.js").ReadmeStructureSemanticDetector | import("./documentation/todo-patterns-semantic.js").TodoPatternsSemanticDetector | import("./documentation/deprecation-semantic.js").DeprecationSemanticDetector | import("./documentation/example-code-semantic.js").ExampleCodeSemanticDetector)[];
|
|
@@ -139,59 +139,59 @@ export declare function createAllDetectors(): {
|
|
|
139
139
|
/**
|
|
140
140
|
* Create all auth learning detectors
|
|
141
141
|
*/
|
|
142
|
-
export declare function createAllAuthLearningDetectors(): (import("./auth/
|
|
142
|
+
export declare function createAllAuthLearningDetectors(): (import("./auth/middleware-usage-learning.js").AuthMiddlewareLearningDetector | import("./auth/token-handling-learning.js").TokenHandlingLearningDetector | import("./auth/permission-checks-learning.js").PermissionChecksLearningDetector | import("./auth/rbac-patterns-learning.js").RBACPatternsLearningDetector | import("./auth/resource-ownership-learning.js").ResourceOwnershipLearningDetector | import("./auth/audit-logging-learning.js").AuditLoggingLearningDetector)[];
|
|
143
143
|
/**
|
|
144
144
|
* Create all security learning detectors
|
|
145
145
|
*/
|
|
146
|
-
export declare function createAllSecurityLearningDetectors(): (import("./security/input-sanitization-learning.js").InputSanitizationLearningDetector | import("./security/
|
|
146
|
+
export declare function createAllSecurityLearningDetectors(): (import("./security/input-sanitization-learning.js").InputSanitizationLearningDetector | import("./security/sql-injection-learning.js").SQLInjectionLearningDetector | import("./security/xss-prevention-learning.js").XSSPreventionLearningDetector | import("./security/csrf-protection-learning.js").CSRFProtectionLearningDetector | import("./security/csp-headers-learning.js").CSPHeadersLearningDetector | import("./security/secret-management-learning.js").SecretManagementLearningDetector | import("./security/rate-limiting-learning.js").RateLimitingLearningDetector)[];
|
|
147
147
|
/**
|
|
148
148
|
* Create all error learning detectors
|
|
149
149
|
*/
|
|
150
|
-
export declare function createAllErrorLearningDetectors(): (import("./errors/
|
|
150
|
+
export declare function createAllErrorLearningDetectors(): (import("./errors/exception-hierarchy-learning.js").ExceptionHierarchyLearningDetector | import("./errors/error-codes-learning.js").ErrorCodesLearningDetector | import("./errors/try-catch-learning.js").TryCatchLearningDetector | import("./errors/error-propagation-learning.js").ErrorPropagationLearningDetector | import("./errors/async-errors-learning.js").AsyncErrorsLearningDetector | import("./errors/circuit-breaker-learning.js").CircuitBreakerLearningDetector | import("./errors/error-logging-learning.js").ErrorLoggingLearningDetector)[];
|
|
151
151
|
/**
|
|
152
152
|
* Create all structural learning detectors
|
|
153
153
|
*/
|
|
154
|
-
export declare function createAllStructuralLearningDetectors(): (import("./structural/file-naming-learning.js").FileNamingLearningDetector | import("./structural/
|
|
154
|
+
export declare function createAllStructuralLearningDetectors(): (import("./structural/file-naming-learning.js").FileNamingLearningDetector | import("./structural/directory-structure-learning.js").DirectoryStructureLearningDetector | import("./structural/co-location-learning.js").CoLocationLearningDetector | import("./structural/barrel-exports-learning.js").BarrelExportsLearningDetector | import("./structural/import-ordering-learning.js").ImportOrderingLearningDetector | import("./structural/module-boundaries-learning.js").ModuleBoundariesLearningDetector | import("./structural/circular-deps-learning.js").CircularDepsLearningDetector | import("./structural/package-boundaries-learning.js").PackageBoundariesLearningDetector)[];
|
|
155
155
|
/**
|
|
156
156
|
* Create all component learning detectors
|
|
157
157
|
*/
|
|
158
|
-
export declare function createAllComponentLearningDetectors(): (import("./components/component-structure-learning.js").ComponentStructureLearningDetector | import("./components/props-patterns-learning.js").PropsPatternsLearningDetector | import("./components/
|
|
158
|
+
export declare function createAllComponentLearningDetectors(): (import("./components/component-structure-learning.js").ComponentStructureLearningDetector | import("./components/props-patterns-learning.js").PropsPatternsLearningDetector | import("./components/duplicate-detection-learning.js").DuplicateDetectionLearningDetector | import("./components/near-duplicate-learning.js").NearDuplicateLearningDetector | import("./components/state-patterns-learning.js").StatePatternsLearningDetector | import("./components/composition-learning.js").CompositionLearningDetector | import("./components/ref-forwarding-learning.js").RefForwardingLearningDetector)[];
|
|
159
159
|
/**
|
|
160
160
|
* Create all styling learning detectors
|
|
161
161
|
*/
|
|
162
|
-
export declare function createAllStylingLearningDetectors(): (import("./styling/
|
|
162
|
+
export declare function createAllStylingLearningDetectors(): (import("./styling/design-tokens-learning.js").DesignTokensLearningDetector | import("./styling/spacing-scale-learning.js").SpacingScaleLearningDetector | import("./styling/color-usage-learning.js").ColorUsageLearningDetector | import("./styling/typography-learning.js").TypographyLearningDetector | import("./styling/class-naming-learning.js").ClassNamingLearningDetector | import("./styling/tailwind-patterns-learning.js").TailwindPatternsLearningDetector | import("./styling/z-index-scale-learning.js").ZIndexScaleLearningDetector | import("./styling/responsive-learning.js").ResponsiveLearningDetector)[];
|
|
163
163
|
/**
|
|
164
164
|
* Create all logging learning detectors
|
|
165
165
|
*/
|
|
166
|
-
export declare function createAllLoggingLearningDetectors(): (import("./logging/
|
|
166
|
+
export declare function createAllLoggingLearningDetectors(): (import("./logging/structured-format-learning.js").StructuredFormatLearningDetector | import("./logging/log-levels-learning.js").LogLevelsLearningDetector | import("./logging/context-fields-learning.js").ContextFieldsLearningDetector | import("./logging/correlation-ids-learning.js").CorrelationIdsLearningDetector | import("./logging/pii-redaction-learning.js").PIIRedactionLearningDetector | import("./logging/metric-naming-learning.js").MetricNamingLearningDetector | import("./logging/health-checks-learning.js").HealthChecksLearningDetector)[];
|
|
167
167
|
/**
|
|
168
168
|
* Create all testing learning detectors
|
|
169
169
|
*/
|
|
170
|
-
export declare function createAllTestingLearningDetectors(): (import("./testing/
|
|
170
|
+
export declare function createAllTestingLearningDetectors(): (import("./testing/file-naming-learning.js").TestFileNamingLearningDetector | import("./testing/co-location-learning.js").TestCoLocationLearningDetector | import("./testing/test-structure-learning.js").TestStructureLearningDetector | import("./testing/mock-patterns-learning.js").MockPatternsLearningDetector | import("./testing/fixture-patterns-learning.js").FixturePatternsLearningDetector | import("./testing/describe-naming-learning.js").DescribeNamingLearningDetector | import("./testing/setup-teardown-learning.js").SetupTeardownLearningDetector)[];
|
|
171
171
|
/**
|
|
172
172
|
* Create all data access learning detectors
|
|
173
173
|
*/
|
|
174
|
-
export declare function createAllDataAccessLearningDetectors(): (import("./data-access/
|
|
174
|
+
export declare function createAllDataAccessLearningDetectors(): (import("./data-access/query-patterns-learning.js").QueryPatternsLearningDetector | import("./data-access/repository-pattern-learning.js").RepositoryPatternLearningDetector | import("./data-access/transaction-patterns-learning.js").TransactionPatternsLearningDetector | import("./data-access/validation-patterns-learning.js").ValidationPatternsLearningDetector | import("./data-access/dto-patterns-learning.js").DTOPatternsLearningDetector | import("./data-access/n-plus-one-learning.js").NPlusOneLearningDetector | import("./data-access/connection-pooling-learning.js").ConnectionPoolingLearningDetector)[];
|
|
175
175
|
/**
|
|
176
176
|
* Create all config learning detectors
|
|
177
177
|
*/
|
|
178
|
-
export declare function createAllConfigLearningDetectors(): (import("./config/
|
|
178
|
+
export declare function createAllConfigLearningDetectors(): (import("./config/env-naming-learning.js").EnvNamingLearningDetector | import("./config/required-optional-learning.js").RequiredOptionalLearningDetector | import("./config/default-values-learning.js").DefaultValuesLearningDetector | import("./config/feature-flags-learning.js").FeatureFlagsLearningDetector | import("./config/config-validation-learning.js").ConfigValidationLearningDetector | import("./config/environment-detection-learning.js").EnvironmentDetectionLearningDetector)[];
|
|
179
179
|
/**
|
|
180
180
|
* Create all types learning detectors
|
|
181
181
|
*/
|
|
182
|
-
export declare function createAllTypesLearningDetectors(): (import("./types/
|
|
182
|
+
export declare function createAllTypesLearningDetectors(): (import("./types/file-location-learning.js").TypeFileLocationLearningDetector | import("./types/naming-conventions-learning.js").TypeNamingConventionsLearningDetector | import("./types/interface-vs-type-learning.js").InterfaceVsTypeLearningDetector | import("./types/generic-patterns-learning.js").GenericPatternsLearningDetector | import("./types/utility-types-learning.js").UtilityTypesLearningDetector | import("./types/type-assertions-learning.js").TypeAssertionsLearningDetector | import("./types/any-usage-learning.js").AnyUsageLearningDetector)[];
|
|
183
183
|
/**
|
|
184
184
|
* Create all accessibility learning detectors
|
|
185
185
|
*/
|
|
186
|
-
export declare function createAllAccessibilityLearningDetectors(): (import("./accessibility/
|
|
186
|
+
export declare function createAllAccessibilityLearningDetectors(): (import("./accessibility/semantic-html-learning.js").SemanticHtmlLearningDetector | import("./accessibility/aria-roles-learning.js").AriaRolesLearningDetector | import("./accessibility/keyboard-nav-learning.js").KeyboardNavLearningDetector | import("./accessibility/focus-management-learning.js").FocusManagementLearningDetector | import("./accessibility/heading-hierarchy-learning.js").HeadingHierarchyLearningDetector | import("./accessibility/alt-text-learning.js").AltTextLearningDetector)[];
|
|
187
187
|
/**
|
|
188
188
|
* Create all documentation learning detectors
|
|
189
189
|
*/
|
|
190
|
-
export declare function createAllDocumentationLearningDetectors(): (import("./documentation/jsdoc-patterns-learning.js").JSDocPatternsLearningDetector | import("./documentation/
|
|
190
|
+
export declare function createAllDocumentationLearningDetectors(): (import("./documentation/jsdoc-patterns-learning.js").JSDocPatternsLearningDetector | import("./documentation/readme-structure-learning.js").ReadmeStructureLearningDetector | import("./documentation/todo-patterns-learning.js").TodoPatternsLearningDetector | import("./documentation/deprecation-learning.js").DeprecationLearningDetector | import("./documentation/example-code-learning.js").ExampleCodeLearningDetector)[];
|
|
191
191
|
/**
|
|
192
192
|
* Create all performance learning detectors
|
|
193
193
|
*/
|
|
194
|
-
export declare function createAllPerformanceLearningDetectors(): (import("./performance/
|
|
194
|
+
export declare function createAllPerformanceLearningDetectors(): (import("./performance/code-splitting-learning.js").CodeSplittingLearningDetector | import("./performance/lazy-loading-learning.js").LazyLoadingLearningDetector | import("./performance/memoization-learning.js").MemoizationLearningDetector | import("./performance/caching-patterns-learning.js").CachingPatternsLearningDetector | import("./performance/debounce-throttle-learning.js").DebounceThrottleLearningDetector | import("./performance/bundle-size-learning.js").BundleSizeLearningDetector)[];
|
|
195
195
|
/**
|
|
196
196
|
* Get detector count by category
|
|
197
197
|
*/
|
|
@@ -216,11 +216,11 @@ export declare function getDetectorCounts(): {
|
|
|
216
216
|
/**
|
|
217
217
|
* Create all auth semantic detectors
|
|
218
218
|
*/
|
|
219
|
-
export declare function createAllAuthSemanticDetectors(): (import("./auth/
|
|
219
|
+
export declare function createAllAuthSemanticDetectors(): (import("./auth/middleware-semantic.js").AuthMiddlewareSemanticDetector | import("./auth/token-handling-semantic.js").TokenHandlingSemanticDetector | import("./auth/permission-checks-semantic.js").PermissionChecksSemanticDetector | import("./auth/rbac-semantic.js").RBACSemanticDetector | import("./auth/ownership-semantic.js").OwnershipSemanticDetector | import("./auth/audit-semantic.js").AuditSemanticDetector)[];
|
|
220
220
|
/**
|
|
221
221
|
* Create all security semantic detectors
|
|
222
222
|
*/
|
|
223
|
-
export declare function createAllSecuritySemanticDetectors(): (import("./security/input-sanitization-semantic.js").InputSanitizationSemanticDetector | import("./security/
|
|
223
|
+
export declare function createAllSecuritySemanticDetectors(): (import("./security/input-sanitization-semantic.js").InputSanitizationSemanticDetector | import("./security/sql-injection-semantic.js").SQLInjectionSemanticDetector | import("./security/xss-prevention-semantic.js").XSSPreventionSemanticDetector | import("./security/csrf-protection-semantic.js").CSRFProtectionSemanticDetector | import("./security/csp-headers-semantic.js").CSPHeadersSemanticDetector | import("./security/secret-management-semantic.js").SecretManagementSemanticDetector | import("./security/rate-limiting-semantic.js").RateLimitingSemanticDetector)[];
|
|
224
224
|
/**
|
|
225
225
|
* Create all error semantic detectors
|
|
226
226
|
*/
|
|
@@ -236,7 +236,7 @@ export declare function createAllComponentSemanticDetectors(): (import("./compon
|
|
|
236
236
|
/**
|
|
237
237
|
* Create all styling semantic detectors
|
|
238
238
|
*/
|
|
239
|
-
export declare function createAllStylingSemanticDetectors(): (import("./styling/
|
|
239
|
+
export declare function createAllStylingSemanticDetectors(): (import("./styling/design-tokens-semantic.js").DesignTokensSemanticDetector | import("./styling/spacing-scale-semantic.js").SpacingScaleSemanticDetector | import("./styling/color-usage-semantic.js").ColorUsageSemanticDetector | import("./styling/typography-semantic.js").TypographySemanticDetector | import("./styling/class-naming-semantic.js").ClassNamingSemanticDetector | import("./styling/tailwind-patterns-semantic.js").TailwindPatternsSemanticDetector | import("./styling/z-index-scale-semantic.js").ZIndexScaleSemanticDetector | import("./styling/responsive-semantic.js").ResponsiveSemanticDetector)[];
|
|
240
240
|
/**
|
|
241
241
|
* Create all logging semantic detectors
|
|
242
242
|
*/
|
|
@@ -257,7 +257,7 @@ export declare function createAllDataBoundarySemanticDetectors(): (import("./dat
|
|
|
257
257
|
/**
|
|
258
258
|
* Create all config semantic detectors
|
|
259
259
|
*/
|
|
260
|
-
export declare function createAllConfigSemanticDetectors(): (import("./config/env-config-semantic.js").EnvConfigSemanticDetector | import("./config/
|
|
260
|
+
export declare function createAllConfigSemanticDetectors(): (import("./config/env-config-semantic.js").EnvConfigSemanticDetector | import("./config/required-optional-semantic.js").RequiredOptionalSemanticDetector | import("./config/default-values-semantic.js").DefaultValuesSemanticDetector | import("./config/feature-flags-semantic.js").FeatureFlagsSemanticDetector | import("./config/config-validation-semantic.js").ConfigValidationSemanticDetector | import("./config/environment-detection-semantic.js").EnvironmentDetectionSemanticDetector)[];
|
|
261
261
|
/**
|
|
262
262
|
* Create all types semantic detectors
|
|
263
263
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "driftdetect-detectors",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"description": "Pattern detectors for Drift - 150+ detectors across 15 categories",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -29,6 +29,16 @@
|
|
|
29
29
|
"files": [
|
|
30
30
|
"dist"
|
|
31
31
|
],
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"driftdetect-core": "^0.7.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"@types/node": "^20.10.0",
|
|
37
|
+
"@vitest/coverage-v8": "^1.0.0",
|
|
38
|
+
"fast-check": "^3.15.0",
|
|
39
|
+
"typescript": "^5.3.0",
|
|
40
|
+
"vitest": "^1.0.0"
|
|
41
|
+
},
|
|
32
42
|
"scripts": {
|
|
33
43
|
"build": "tsc",
|
|
34
44
|
"clean": "rm -rf dist",
|
|
@@ -39,15 +49,5 @@
|
|
|
39
49
|
"test:watch": "vitest",
|
|
40
50
|
"test:coverage": "vitest run --coverage",
|
|
41
51
|
"typecheck": "tsc --noEmit"
|
|
42
|
-
},
|
|
43
|
-
"dependencies": {
|
|
44
|
-
"driftdetect-core": "^0.6.0"
|
|
45
|
-
},
|
|
46
|
-
"devDependencies": {
|
|
47
|
-
"@types/node": "^20.10.0",
|
|
48
|
-
"@vitest/coverage-v8": "^1.0.0",
|
|
49
|
-
"fast-check": "^3.15.0",
|
|
50
|
-
"typescript": "^5.3.0",
|
|
51
|
-
"vitest": "^1.0.0"
|
|
52
52
|
}
|
|
53
|
-
}
|
|
53
|
+
}
|