@danielszlaski/envguard 0.1.3 → 0.1.5
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/.envguardrc.example.json +1 -0
- package/.envguardrc.json +16 -0
- package/.github/FUNDING.yml +15 -0
- package/LICENSE +1 -1
- package/README.md +285 -10
- package/dist/analyzer/envAnalyzer.d.ts +8 -2
- package/dist/analyzer/envAnalyzer.d.ts.map +1 -1
- package/dist/analyzer/envAnalyzer.js +22 -8
- package/dist/analyzer/envAnalyzer.js.map +1 -1
- package/dist/cli.js +58 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +32 -7
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/install-hook.d.ts +18 -0
- package/dist/commands/install-hook.d.ts.map +1 -0
- package/dist/commands/install-hook.js +148 -0
- package/dist/commands/install-hook.js.map +1 -0
- package/dist/commands/scan.d.ts +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +150 -41
- package/dist/commands/scan.js.map +1 -1
- package/dist/config/configLoader.d.ts +6 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +1 -0
- package/dist/config/configLoader.js.map +1 -1
- package/dist/scanner/codeScanner.d.ts +5 -2
- package/dist/scanner/codeScanner.d.ts.map +1 -1
- package/dist/scanner/codeScanner.js +72 -25
- package/dist/scanner/codeScanner.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/analyzer/envAnalyzer.ts +27 -10
- package/src/cli.ts +62 -3
- package/src/commands/fix.ts +40 -9
- package/src/commands/install-hook.ts +128 -0
- package/src/commands/scan.ts +168 -47
- package/src/config/configLoader.ts +8 -0
- package/src/scanner/codeScanner.ts +97 -28
- package/src/types.ts +3 -1
- package/test-project/src/lambda2/handler2.js +1 -1
- package/test-project/.envguardrc.json +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,12 @@ export interface EnvGuardConfig {
|
|
|
12
12
|
* Enable strict mode by default
|
|
13
13
|
*/
|
|
14
14
|
strict?: boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Detect fallback patterns in code (||, ??, conditionals, etc.)
|
|
17
|
+
* When enabled, variables with fallbacks are treated as warnings instead of errors
|
|
18
|
+
* Default: true
|
|
19
|
+
*/
|
|
20
|
+
detectFallbacks?: boolean;
|
|
15
21
|
}
|
|
16
22
|
/**
|
|
17
23
|
* Load EnvGuard configuration from various sources
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"configLoader.d.ts","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAeD;;;GAGG;AACH,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAuDlD;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAwB7B;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;CAGzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;
|
|
1
|
+
{"version":3,"file":"configLoader.js","sourceRoot":"","sources":["../../src/config/configLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,11 @@ export declare class CodeScanner {
|
|
|
3
3
|
private excludePatterns;
|
|
4
4
|
private serverlessParser;
|
|
5
5
|
constructor(rootDir: string, excludePatterns?: string[]);
|
|
6
|
-
scan(): Promise<Map<string,
|
|
7
|
-
|
|
6
|
+
scan(): Promise<Map<string, {
|
|
7
|
+
locations: string[];
|
|
8
|
+
hasFallback: boolean;
|
|
9
|
+
}>>;
|
|
10
|
+
scanFile(filePath: string): Promise<Map<string, boolean>>;
|
|
8
11
|
findEnvFiles(): Promise<string[]>;
|
|
9
12
|
findServerlessFiles(): Promise<string[]>;
|
|
10
13
|
scanServerlessFile(filePath: string): Map<string, any>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeScanner.d.ts","sourceRoot":"","sources":["../../src/scanner/codeScanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codeScanner.d.ts","sourceRoot":"","sources":["../../src/scanner/codeScanner.ts"],"names":[],"mappings":"AAOA,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,MAAM,EAA8C;IAM5F,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IA6C3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAuFzD,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAcjC,mBAAmB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc9C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;IAIhD,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAkCrE"}
|
|
@@ -47,19 +47,24 @@ class CodeScanner {
|
|
|
47
47
|
async scan() {
|
|
48
48
|
const envVars = new Map();
|
|
49
49
|
// Scan for JavaScript/TypeScript files
|
|
50
|
+
// Handle both simple names (e.g., 'node_modules') and glob patterns (e.g., '**/tmp/**')
|
|
51
|
+
const ignorePatterns = this.excludePatterns.map(p => p.includes('*') ? p : `**/${p}/**`);
|
|
50
52
|
const files = await (0, glob_1.glob)('**/*.{js,ts,jsx,tsx,mjs,cjs}', {
|
|
51
53
|
cwd: this.rootDir,
|
|
52
|
-
ignore:
|
|
54
|
+
ignore: ignorePatterns,
|
|
53
55
|
absolute: true,
|
|
54
56
|
});
|
|
55
57
|
for (const file of files) {
|
|
56
58
|
const vars = await this.scanFile(file);
|
|
57
|
-
for (const varName of vars) {
|
|
59
|
+
for (const [varName, hasFallback] of vars.entries()) {
|
|
58
60
|
const relativePath = path.relative(this.rootDir, file);
|
|
59
61
|
if (!envVars.has(varName)) {
|
|
60
|
-
envVars.set(varName, []);
|
|
62
|
+
envVars.set(varName, { locations: [], hasFallback: false });
|
|
61
63
|
}
|
|
62
|
-
envVars.get(varName)
|
|
64
|
+
const entry = envVars.get(varName);
|
|
65
|
+
entry.locations.push(relativePath);
|
|
66
|
+
// If ANY usage has a fallback, mark it as having a fallback
|
|
67
|
+
entry.hasFallback = entry.hasFallback || hasFallback;
|
|
63
68
|
}
|
|
64
69
|
}
|
|
65
70
|
// Also scan serverless.yml files for environment variable definitions
|
|
@@ -69,38 +74,77 @@ class CodeScanner {
|
|
|
69
74
|
for (const [varName, entry] of vars.entries()) {
|
|
70
75
|
const relativePath = path.relative(this.rootDir, file);
|
|
71
76
|
if (!envVars.has(varName)) {
|
|
72
|
-
envVars.set(varName, []);
|
|
77
|
+
envVars.set(varName, { locations: [], hasFallback: false });
|
|
73
78
|
}
|
|
74
|
-
envVars.get(varName).push(`${relativePath} (serverless config)`);
|
|
79
|
+
envVars.get(varName).locations.push(`${relativePath} (serverless config)`);
|
|
75
80
|
}
|
|
76
81
|
}
|
|
77
82
|
return envVars;
|
|
78
83
|
}
|
|
79
84
|
async scanFile(filePath) {
|
|
80
|
-
const envVars = new
|
|
85
|
+
const envVars = new Map();
|
|
81
86
|
try {
|
|
82
87
|
const content = fs.readFileSync(filePath, 'utf-8');
|
|
83
|
-
// Pattern 1: process.env.VAR_NAME
|
|
84
|
-
|
|
88
|
+
// Pattern 1: process.env.VAR_NAME with fallback checks
|
|
89
|
+
// Matches: process.env.VAR || 'default'
|
|
90
|
+
// process.env.VAR ?? 'default'
|
|
91
|
+
// process.env.VAR ? x : y
|
|
92
|
+
const processEnvWithFallbackPattern = /process\.env\.([A-Z_][A-Z0-9_]*)\s*(\|\||&&|\?\?|\?)/g;
|
|
85
93
|
let match;
|
|
86
|
-
while ((match =
|
|
87
|
-
envVars.
|
|
94
|
+
while ((match = processEnvWithFallbackPattern.exec(content)) !== null) {
|
|
95
|
+
envVars.set(match[1], true); // Has fallback
|
|
88
96
|
}
|
|
89
|
-
// Pattern 2: process.env
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
97
|
+
// Pattern 2: process.env.VAR in conditional checks
|
|
98
|
+
// Matches: if (process.env.VAR)
|
|
99
|
+
// if (!process.env.VAR)
|
|
100
|
+
const conditionalPattern = /if\s*\(\s*!?\s*process\.env\.([A-Z_][A-Z0-9_]*)\s*\)/g;
|
|
101
|
+
while ((match = conditionalPattern.exec(content)) !== null) {
|
|
102
|
+
if (!envVars.has(match[1])) {
|
|
103
|
+
envVars.set(match[1], true); // Has conditional check
|
|
104
|
+
}
|
|
93
105
|
}
|
|
94
|
-
// Pattern 3: Destructuring - const {
|
|
95
|
-
const
|
|
96
|
-
while ((match =
|
|
97
|
-
const vars = match[1].split(',').map(v => v.trim()
|
|
106
|
+
// Pattern 3: Destructuring with defaults - const { VAR = 'default' } = process.env
|
|
107
|
+
const destructuringWithDefaultPattern = /const\s+\{\s*([^}]+)\s*\}\s*=\s*process\.env/g;
|
|
108
|
+
while ((match = destructuringWithDefaultPattern.exec(content)) !== null) {
|
|
109
|
+
const vars = match[1].split(',').map(v => v.trim());
|
|
98
110
|
vars.forEach(v => {
|
|
99
|
-
|
|
100
|
-
|
|
111
|
+
const parts = v.split('=');
|
|
112
|
+
const varName = parts[0].split(':')[0].trim();
|
|
113
|
+
const hasDefault = parts.length > 1;
|
|
114
|
+
if (/^[A-Z_][A-Z0-9_]*$/.test(varName)) {
|
|
115
|
+
if (!envVars.has(varName)) {
|
|
116
|
+
envVars.set(varName, hasDefault);
|
|
117
|
+
}
|
|
101
118
|
}
|
|
102
119
|
});
|
|
103
120
|
}
|
|
121
|
+
// Pattern 4: Optional chaining - process.env?.VAR
|
|
122
|
+
const optionalChainingPattern = /process\.env\?\.([A-Z_][A-Z0-9_]*)/g;
|
|
123
|
+
while ((match = optionalChainingPattern.exec(content)) !== null) {
|
|
124
|
+
if (!envVars.has(match[1])) {
|
|
125
|
+
envVars.set(match[1], true); // Has optional chaining
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
// Pattern 5: process.env['VAR_NAME'] or process.env["VAR_NAME"] with fallback
|
|
129
|
+
const processEnvBracketWithFallbackPattern = /process\.env\[['"]([A-Z_][A-Z0-9_]*)['"\]]\s*(\|\||&&|\?\?|\?)/g;
|
|
130
|
+
while ((match = processEnvBracketWithFallbackPattern.exec(content)) !== null) {
|
|
131
|
+
envVars.set(match[1], true); // Has fallback
|
|
132
|
+
}
|
|
133
|
+
// Pattern 6: Basic usage without any safety (process.env.VAR)
|
|
134
|
+
// This should come AFTER all the fallback patterns so we don't override them
|
|
135
|
+
const basicProcessEnvPattern = /process\.env\.([A-Z_][A-Z0-9_]*)/g;
|
|
136
|
+
while ((match = basicProcessEnvPattern.exec(content)) !== null) {
|
|
137
|
+
if (!envVars.has(match[1])) {
|
|
138
|
+
envVars.set(match[1], false); // No fallback detected
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Pattern 7: Basic bracket notation without safety
|
|
142
|
+
const basicBracketPattern = /process\.env\[['"]([A-Z_][A-Z0-9_]*)['"\]]/g;
|
|
143
|
+
while ((match = basicBracketPattern.exec(content)) !== null) {
|
|
144
|
+
if (!envVars.has(match[1])) {
|
|
145
|
+
envVars.set(match[1], false); // No fallback detected
|
|
146
|
+
}
|
|
147
|
+
}
|
|
104
148
|
}
|
|
105
149
|
catch (error) {
|
|
106
150
|
console.error(`Error scanning file ${filePath}:`, error);
|
|
@@ -108,17 +152,19 @@ class CodeScanner {
|
|
|
108
152
|
return envVars;
|
|
109
153
|
}
|
|
110
154
|
async findEnvFiles() {
|
|
155
|
+
const ignorePatterns = this.excludePatterns.map(p => p.includes('*') ? p : `**/${p}/**`);
|
|
111
156
|
const envFiles = await (0, glob_1.glob)('**/.env', {
|
|
112
157
|
cwd: this.rootDir,
|
|
113
|
-
ignore:
|
|
158
|
+
ignore: ignorePatterns,
|
|
114
159
|
absolute: true,
|
|
115
160
|
});
|
|
116
161
|
return envFiles;
|
|
117
162
|
}
|
|
118
163
|
async findServerlessFiles() {
|
|
164
|
+
const ignorePatterns = this.excludePatterns.map(p => p.includes('*') ? p : `**/${p}/**`);
|
|
119
165
|
const serverlessFiles = await (0, glob_1.glob)('**/serverless.{yml,yaml}', {
|
|
120
166
|
cwd: this.rootDir,
|
|
121
|
-
ignore:
|
|
167
|
+
ignore: ignorePatterns,
|
|
122
168
|
absolute: true,
|
|
123
169
|
});
|
|
124
170
|
return serverlessFiles;
|
|
@@ -130,16 +176,17 @@ class CodeScanner {
|
|
|
130
176
|
// Returns a map of directory -> (varName -> file locations)
|
|
131
177
|
const dirMap = new Map();
|
|
132
178
|
// Scan for JavaScript/TypeScript files
|
|
179
|
+
const ignorePatterns = this.excludePatterns.map(p => p.includes('*') ? p : `**/${p}/**`);
|
|
133
180
|
const files = await (0, glob_1.glob)('**/*.{js,ts,jsx,tsx,mjs,cjs}', {
|
|
134
181
|
cwd: this.rootDir,
|
|
135
|
-
ignore:
|
|
182
|
+
ignore: ignorePatterns,
|
|
136
183
|
absolute: true,
|
|
137
184
|
});
|
|
138
185
|
for (const file of files) {
|
|
139
186
|
const vars = await this.scanFile(file);
|
|
140
187
|
const fileDir = path.dirname(file);
|
|
141
188
|
const relativePath = path.relative(this.rootDir, file);
|
|
142
|
-
for (const varName of vars) {
|
|
189
|
+
for (const [varName, hasFallback] of vars.entries()) {
|
|
143
190
|
if (!dirMap.has(fileDir)) {
|
|
144
191
|
dirMap.set(fileDir, new Map());
|
|
145
192
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeScanner.js","sourceRoot":"","sources":["../../src/scanner/codeScanner.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,+BAA4B;AAC5B,iEAA8D;
|
|
1
|
+
{"version":3,"file":"codeScanner.js","sourceRoot":"","sources":["../../src/scanner/codeScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface EnvUsage {
|
|
2
2
|
varName: string;
|
|
3
3
|
locations: string[];
|
|
4
|
+
hasFallback?: boolean;
|
|
4
5
|
}
|
|
5
6
|
export interface EnvDefinition {
|
|
6
7
|
varName: string;
|
|
@@ -11,13 +12,17 @@ export interface EnvDefinition {
|
|
|
11
12
|
}
|
|
12
13
|
export interface Issue {
|
|
13
14
|
type: 'missing' | 'unused' | 'undocumented';
|
|
15
|
+
severity: 'error' | 'warning' | 'info';
|
|
14
16
|
varName: string;
|
|
15
17
|
details: string;
|
|
16
18
|
locations?: string[];
|
|
17
19
|
}
|
|
18
20
|
export interface ScanResult {
|
|
19
21
|
issues: Issue[];
|
|
20
|
-
usedVars: Map<string,
|
|
22
|
+
usedVars: Map<string, {
|
|
23
|
+
locations: string[];
|
|
24
|
+
hasFallback: boolean;
|
|
25
|
+
}>;
|
|
21
26
|
definedVars: Set<string>;
|
|
22
27
|
exampleVars: Set<string>;
|
|
23
28
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,CAAC;IAC1C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;IAC5C,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACrE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC1B"}
|
package/package.json
CHANGED
|
@@ -3,20 +3,28 @@ import { EnvEntry } from '../parser/envParser';
|
|
|
3
3
|
|
|
4
4
|
export class EnvAnalyzer {
|
|
5
5
|
analyze(
|
|
6
|
-
usedVars: Map<string, string[]>,
|
|
6
|
+
usedVars: Map<string, { locations: string[], hasFallback: boolean }>,
|
|
7
7
|
definedVars: Map<string, EnvEntry>,
|
|
8
|
-
exampleVars: Set<string
|
|
8
|
+
exampleVars: Set<string>,
|
|
9
|
+
detectFallbacks: boolean = true
|
|
9
10
|
): ScanResult {
|
|
10
11
|
const issues: Issue[] = [];
|
|
11
12
|
|
|
12
13
|
// Issue 1: Variables used in code but missing from .env
|
|
13
|
-
for (const [varName,
|
|
14
|
+
for (const [varName, usage] of usedVars.entries()) {
|
|
14
15
|
if (!definedVars.has(varName)) {
|
|
16
|
+
// If detectFallbacks is enabled and variable has a fallback, it's a WARNING, otherwise ERROR
|
|
17
|
+
const severity = (detectFallbacks && usage.hasFallback) ? 'warning' : 'error';
|
|
18
|
+
const details = (detectFallbacks && usage.hasFallback)
|
|
19
|
+
? `Used in code with fallback/default but not defined in .env`
|
|
20
|
+
: `Used in code but not defined in .env`;
|
|
21
|
+
|
|
15
22
|
issues.push({
|
|
16
23
|
type: 'missing',
|
|
24
|
+
severity,
|
|
17
25
|
varName,
|
|
18
|
-
details
|
|
19
|
-
locations,
|
|
26
|
+
details,
|
|
27
|
+
locations: usage.locations,
|
|
20
28
|
});
|
|
21
29
|
}
|
|
22
30
|
}
|
|
@@ -26,6 +34,7 @@ export class EnvAnalyzer {
|
|
|
26
34
|
if (!usedVars.has(varName)) {
|
|
27
35
|
issues.push({
|
|
28
36
|
type: 'unused',
|
|
37
|
+
severity: 'info',
|
|
29
38
|
varName,
|
|
30
39
|
details: `Defined in .env but never used in code`,
|
|
31
40
|
});
|
|
@@ -33,13 +42,20 @@ export class EnvAnalyzer {
|
|
|
33
42
|
}
|
|
34
43
|
|
|
35
44
|
// Issue 3: Variables used in code but not in .env.example
|
|
36
|
-
for (const [varName,
|
|
45
|
+
for (const [varName, usage] of usedVars.entries()) {
|
|
37
46
|
if (!exampleVars.has(varName)) {
|
|
47
|
+
// If detectFallbacks is enabled and variable has a fallback, it's less critical for documentation
|
|
48
|
+
const severity = (detectFallbacks && usage.hasFallback) ? 'info' : 'warning';
|
|
49
|
+
const details = (detectFallbacks && usage.hasFallback)
|
|
50
|
+
? `Used in code with fallback but missing from .env.example`
|
|
51
|
+
: `Used in code but missing from .env.example`;
|
|
52
|
+
|
|
38
53
|
issues.push({
|
|
39
54
|
type: 'undocumented',
|
|
55
|
+
severity,
|
|
40
56
|
varName,
|
|
41
|
-
details
|
|
42
|
-
locations,
|
|
57
|
+
details,
|
|
58
|
+
locations: usage.locations,
|
|
43
59
|
});
|
|
44
60
|
}
|
|
45
61
|
}
|
|
@@ -53,7 +69,7 @@ export class EnvAnalyzer {
|
|
|
53
69
|
}
|
|
54
70
|
|
|
55
71
|
generateExampleContent(
|
|
56
|
-
usedVars: Map<string, string[]>,
|
|
72
|
+
usedVars: Map<string, { locations: string[], hasFallback: boolean }>,
|
|
57
73
|
existingEntries: Map<string, EnvEntry>
|
|
58
74
|
): string {
|
|
59
75
|
let content = '# Auto-generated by envguard\n';
|
|
@@ -62,7 +78,8 @@ export class EnvAnalyzer {
|
|
|
62
78
|
const sortedVars = Array.from(usedVars.keys()).sort();
|
|
63
79
|
|
|
64
80
|
for (const varName of sortedVars) {
|
|
65
|
-
const
|
|
81
|
+
const usage = usedVars.get(varName)!;
|
|
82
|
+
const locations = usage.locations;
|
|
66
83
|
const existingEntry = existingEntries.get(varName);
|
|
67
84
|
|
|
68
85
|
// Add location comments
|
package/src/cli.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { Command } from 'commander';
|
|
|
4
4
|
import { scanCommand } from './commands/scan';
|
|
5
5
|
import { fixCommand } from './commands/fix';
|
|
6
6
|
import { checkCommand } from './commands/check';
|
|
7
|
+
import { installHookCommand, uninstallHookCommand } from './commands/install-hook';
|
|
7
8
|
import { Logger } from './utils/logger';
|
|
8
9
|
|
|
9
10
|
const program = new Command();
|
|
@@ -18,8 +19,22 @@ program
|
|
|
18
19
|
.description('Scan codebase and compare with .env files')
|
|
19
20
|
.option('--ci', 'Exit with error code if issues found (for CI/CD)')
|
|
20
21
|
.option('--strict', 'Report all variables including known runtime variables (AWS_REGION, NODE_ENV, etc.)')
|
|
21
|
-
.
|
|
22
|
+
.option('--no-detect-fallbacks', 'Treat all missing variables as errors, ignoring fallback detection')
|
|
23
|
+
.action(async (cmd, command) => {
|
|
22
24
|
try {
|
|
25
|
+
// Build options object, only including detectFallbacks if the flag was used
|
|
26
|
+
const options: any = {
|
|
27
|
+
ci: cmd.ci,
|
|
28
|
+
strict: cmd.strict
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Check if the --no-detect-fallbacks flag was explicitly provided
|
|
32
|
+
// Commander adds it to the command's options when the flag is used
|
|
33
|
+
const flagProvided = command.parent?.rawArgs.some((arg: string) => arg.includes('detect-fallback'));
|
|
34
|
+
if (flagProvided) {
|
|
35
|
+
options.detectFallbacks = cmd.detectFallbacks;
|
|
36
|
+
}
|
|
37
|
+
|
|
23
38
|
await scanCommand(options);
|
|
24
39
|
} catch (error) {
|
|
25
40
|
Logger.error(`${error}`);
|
|
@@ -43,9 +58,53 @@ program
|
|
|
43
58
|
.command('check')
|
|
44
59
|
.description('Check for issues (alias for scan --ci)')
|
|
45
60
|
.option('--strict', 'Report all variables including known runtime variables (AWS_REGION, NODE_ENV, etc.)')
|
|
46
|
-
.
|
|
61
|
+
.option('--no-detect-fallbacks', 'Treat all missing variables as errors, ignoring fallback detection')
|
|
62
|
+
.action(async (cmd, command) => {
|
|
63
|
+
try {
|
|
64
|
+
const options: any = {
|
|
65
|
+
ci: true,
|
|
66
|
+
strict: cmd.strict
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
// Check if the --no-detect-fallbacks flag was explicitly provided
|
|
70
|
+
const flagProvided = command.parent?.rawArgs.some((arg: string) => arg.includes('detect-fallback'));
|
|
71
|
+
if (flagProvided) {
|
|
72
|
+
options.detectFallbacks = cmd.detectFallbacks;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
await scanCommand(options);
|
|
76
|
+
} catch (error) {
|
|
77
|
+
Logger.error(`${error}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
program
|
|
83
|
+
.command('install-hook')
|
|
84
|
+
.description('Install a Git hook to run envguard automatically')
|
|
85
|
+
.option('--type <type>', 'Hook type: pre-commit or pre-push (default: pre-commit)')
|
|
86
|
+
.option('--force', 'Overwrite existing hook if present')
|
|
87
|
+
.action(async (cmd) => {
|
|
88
|
+
try {
|
|
89
|
+
await installHookCommand({
|
|
90
|
+
type: cmd.type,
|
|
91
|
+
force: cmd.force
|
|
92
|
+
});
|
|
93
|
+
} catch (error) {
|
|
94
|
+
Logger.error(`${error}`);
|
|
95
|
+
process.exit(1);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
program
|
|
100
|
+
.command('uninstall-hook')
|
|
101
|
+
.description('Remove the envguard Git hook')
|
|
102
|
+
.option('--type <type>', 'Hook type: pre-commit or pre-push (default: pre-commit)')
|
|
103
|
+
.action(async (cmd) => {
|
|
47
104
|
try {
|
|
48
|
-
await
|
|
105
|
+
await uninstallHookCommand({
|
|
106
|
+
type: cmd.type
|
|
107
|
+
});
|
|
49
108
|
} catch (error) {
|
|
50
109
|
Logger.error(`${error}`);
|
|
51
110
|
process.exit(1);
|
package/src/commands/fix.ts
CHANGED
|
@@ -10,8 +10,19 @@ export async function fixCommand() {
|
|
|
10
10
|
|
|
11
11
|
Logger.startSpinner('Generating .env.example files...');
|
|
12
12
|
|
|
13
|
+
// Load configuration
|
|
14
|
+
const { ConfigLoader } = require('../config/configLoader');
|
|
15
|
+
const config = ConfigLoader.loadConfig(rootDir);
|
|
16
|
+
|
|
13
17
|
// Step 1: Find all .env files
|
|
14
|
-
const
|
|
18
|
+
const excludePatterns = [
|
|
19
|
+
'node_modules',
|
|
20
|
+
'dist',
|
|
21
|
+
'build',
|
|
22
|
+
'.git',
|
|
23
|
+
...(config.exclude || []),
|
|
24
|
+
];
|
|
25
|
+
const scanner = new CodeScanner(rootDir, excludePatterns);
|
|
15
26
|
const envFiles = await scanner.findEnvFiles();
|
|
16
27
|
|
|
17
28
|
Logger.stopSpinner();
|
|
@@ -38,7 +49,21 @@ export async function fixCommand() {
|
|
|
38
49
|
Logger.path(`Processing ${displayPath}/`);
|
|
39
50
|
|
|
40
51
|
// Step 3: Scan code files in this directory and subdirectories
|
|
41
|
-
const
|
|
52
|
+
const allUsedVars = await scanDirectoryForVars(rootDir, envDir, scanner, config.exclude);
|
|
53
|
+
|
|
54
|
+
// Filter out ignored variables based on config (they shouldn't be in .env.example)
|
|
55
|
+
const { isKnownRuntimeVar } = require('../constants/knownEnvVars');
|
|
56
|
+
const usedVars = new Map<string, { locations: string[], hasFallback: boolean }>();
|
|
57
|
+
|
|
58
|
+
for (const [varName, usage] of allUsedVars.entries()) {
|
|
59
|
+
const isCustomIgnored = ConfigLoader.shouldIgnoreVar(varName, config);
|
|
60
|
+
const isRuntimeVar = isKnownRuntimeVar(varName);
|
|
61
|
+
|
|
62
|
+
// Skip known runtime variables and custom ignore vars
|
|
63
|
+
if (!isRuntimeVar && !isCustomIgnored) {
|
|
64
|
+
usedVars.set(varName, usage);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
42
67
|
|
|
43
68
|
if (usedVars.size === 0) {
|
|
44
69
|
Logger.info('No environment variables found in code', true);
|
|
@@ -82,29 +107,35 @@ export async function fixCommand() {
|
|
|
82
107
|
async function scanDirectoryForVars(
|
|
83
108
|
rootDir: string,
|
|
84
109
|
targetDir: string,
|
|
85
|
-
scanner: CodeScanner
|
|
86
|
-
|
|
87
|
-
|
|
110
|
+
scanner: CodeScanner,
|
|
111
|
+
excludePatterns: string[] = []
|
|
112
|
+
): Promise<Map<string, { locations: string[], hasFallback: boolean }>> {
|
|
113
|
+
const envVars = new Map<string, { locations: string[], hasFallback: boolean }>();
|
|
88
114
|
const { glob } = require('glob');
|
|
89
115
|
|
|
90
116
|
// Find all code files in this directory and subdirectories
|
|
91
117
|
const relativeDir = path.relative(rootDir, targetDir);
|
|
92
118
|
const pattern = relativeDir ? `${relativeDir}/**/*.{js,ts,jsx,tsx,mjs,cjs}` : '**/*.{js,ts,jsx,tsx,mjs,cjs}';
|
|
93
119
|
|
|
120
|
+
const defaultIgnore = ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**'];
|
|
121
|
+
const customIgnore = excludePatterns.map(p => p.includes('*') ? p : `**/${p}/**`);
|
|
122
|
+
|
|
94
123
|
const files = await glob(pattern, {
|
|
95
124
|
cwd: rootDir,
|
|
96
|
-
ignore: [
|
|
125
|
+
ignore: [...defaultIgnore, ...customIgnore],
|
|
97
126
|
absolute: true,
|
|
98
127
|
});
|
|
99
128
|
|
|
100
129
|
for (const file of files) {
|
|
101
130
|
const vars = await (scanner as any).scanFile(file);
|
|
102
|
-
for (const varName of vars) {
|
|
131
|
+
for (const [varName, hasFallback] of vars.entries()) {
|
|
103
132
|
const relativePath = path.relative(rootDir, file);
|
|
104
133
|
if (!envVars.has(varName)) {
|
|
105
|
-
envVars.set(varName, []);
|
|
134
|
+
envVars.set(varName, { locations: [], hasFallback: false });
|
|
106
135
|
}
|
|
107
|
-
envVars.get(varName)
|
|
136
|
+
const entry = envVars.get(varName)!;
|
|
137
|
+
entry.locations.push(relativePath);
|
|
138
|
+
entry.hasFallback = entry.hasFallback || hasFallback;
|
|
108
139
|
}
|
|
109
140
|
}
|
|
110
141
|
|