dotenv-diff 2.6.2 → 2.6.4
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/CHANGELOG.md +17 -0
- package/README.md +7 -1
- package/dist/src/commands/prompts/promptEnsureFiles.js +2 -2
- package/dist/src/commands/prompts/promptEnsureFiles.js.map +1 -1
- package/dist/src/core/{patterns.d.ts → scan/patterns.d.ts} +7 -10
- package/dist/src/core/scan/patterns.d.ts.map +1 -0
- package/dist/src/core/scan/patterns.js +128 -0
- package/dist/src/core/scan/patterns.js.map +1 -0
- package/dist/src/core/scan/scanFile.d.ts.map +1 -1
- package/dist/src/core/scan/scanFile.js +40 -36
- package/dist/src/core/scan/scanFile.js.map +1 -1
- package/dist/src/services/detectEnvExpirations.js +1 -1
- package/dist/src/services/detectEnvExpirations.js.map +1 -1
- package/dist/src/services/envDiscovery.d.ts.map +1 -1
- package/dist/src/services/envDiscovery.js +3 -9
- package/dist/src/services/envDiscovery.js.map +1 -1
- package/dist/src/services/fileWalker.js +1 -1
- package/dist/src/services/fileWalker.js.map +1 -1
- package/dist/src/services/printScanResult.d.ts.map +1 -1
- package/dist/src/services/printScanResult.js +4 -2
- package/dist/src/services/printScanResult.js.map +1 -1
- package/dist/src/services/scanCodebase.js +1 -1
- package/dist/src/services/scanCodebase.js.map +1 -1
- package/dist/src/ui/scan/printExpireWarnings.d.ts +1 -1
- package/dist/src/ui/scan/printExpireWarnings.d.ts.map +1 -1
- package/dist/src/ui/scan/printExpireWarnings.js +1 -4
- package/dist/src/ui/scan/printExpireWarnings.js.map +1 -1
- package/dist/src/ui/scan/printFrameworkWarnings.js +1 -1
- package/dist/src/ui/scan/printFrameworkWarnings.js.map +1 -1
- package/docs/capabilities.md +85 -0
- package/docs/index.md +13 -2
- package/package.json +2 -1
- package/dist/src/core/patterns.d.ts.map +0 -1
- package/dist/src/core/patterns.js +0 -72
- package/dist/src/core/patterns.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
|
|
11
11
|
|
|
12
|
+
## [2.6.4](https://github.com/Chrilleweb/dotenv-diff/compare/v2.6.3...v2.6.4) (2026-02-28)
|
|
13
|
+
|
|
14
|
+
### 🐛 Bug Fixes
|
|
15
|
+
|
|
16
|
+
* added support for mts and cts ([#288](https://github.com/Chrilleweb/dotenv-diff/issues/288)) ([93874bf](https://github.com/Chrilleweb/dotenv-diff/commit/93874bfeb67999b43bdcb87814fbc080c650f923))
|
|
17
|
+
|
|
18
|
+
### 📝 Documentation
|
|
19
|
+
|
|
20
|
+
* updated docs ([#287](https://github.com/Chrilleweb/dotenv-diff/issues/287)) ([d3f36f4](https://github.com/Chrilleweb/dotenv-diff/commit/d3f36f437748218028fe21843aa5b495d31c3639))
|
|
21
|
+
|
|
22
|
+
## [2.6.3](https://github.com/Chrilleweb/dotenv-diff/compare/v2.6.2...v2.6.3) (2026-02-26)
|
|
23
|
+
|
|
24
|
+
### 🐛 Bug Fixes
|
|
25
|
+
|
|
26
|
+
* skip path ([#281](https://github.com/Chrilleweb/dotenv-diff/issues/281)) ([eec0d13](https://github.com/Chrilleweb/dotenv-diff/commit/eec0d13dddb581072f05a1168ad52e65f41693bf))
|
|
27
|
+
* variables patterns ([#282](https://github.com/Chrilleweb/dotenv-diff/issues/282)) ([67515a0](https://github.com/Chrilleweb/dotenv-diff/commit/67515a04c46e1f373041cfe434c4eca01eb36c81))
|
|
28
|
+
|
|
12
29
|
## [2.6.2](https://github.com/Chrilleweb/dotenv-diff/compare/v2.6.1...v2.6.2) (2026-02-24)
|
|
13
30
|
|
|
14
31
|
### 🐛 Bug Fixes
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# dotenv-diff
|
|
2
2
|
|
|
3
|
-
Scan your
|
|
3
|
+
Scan your codebase to detect every environment variable reference. It helps you catch missing, unused, duplicated, and misused variables early, before they cause runtime errors.
|
|
4
4
|
|
|
5
5
|
First-class support for SvelteKit and Next.js. Also works well in modern JavaScript/TypeScript projects and frameworks like Node.js, Nuxt, and Vue — or any other setup where you want reliable .env file comparison.
|
|
6
6
|
|
|
@@ -28,6 +28,12 @@ First-class support for SvelteKit and Next.js. Also works well in modern JavaScr
|
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
31
|
+
## How It Works
|
|
32
|
+
|
|
33
|
+
→ See [Capabilities Documentation](./docs/capabilities.md) for details on what the scanner checks for and how it works.
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
31
37
|
## Configuration (`--init`)
|
|
32
38
|
|
|
33
39
|
Generate a default configuration file:
|
|
@@ -38,7 +38,7 @@ export async function promptEnsureFiles(args) {
|
|
|
38
38
|
? false
|
|
39
39
|
: await confirmYesNo(`Do you want to create a ${path.basename(envPath)} file from ${path.basename(examplePath)}?`, { isCiMode, isYesMode });
|
|
40
40
|
if (!createEnv) {
|
|
41
|
-
printPrompt.skipCreation(
|
|
41
|
+
printPrompt.skipCreation(path.basename(envPath));
|
|
42
42
|
return { didCreate: false, shouldExit: true, exitCode: 0 };
|
|
43
43
|
}
|
|
44
44
|
const exampleContent = fs.readFileSync(examplePath, 'utf-8');
|
|
@@ -58,7 +58,7 @@ export async function promptEnsureFiles(args) {
|
|
|
58
58
|
? false
|
|
59
59
|
: await confirmYesNo(`Do you want to create a ${path.basename(examplePath)} file from ${path.basename(envPath)}?`, { isCiMode, isYesMode });
|
|
60
60
|
if (!createExample) {
|
|
61
|
-
printPrompt.skipCreation(
|
|
61
|
+
printPrompt.skipCreation(path.basename(examplePath));
|
|
62
62
|
return { didCreate: false, shouldExit: true, exitCode: 0 };
|
|
63
63
|
}
|
|
64
64
|
const envContent = fs
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"promptEnsureFiles.js","sourceRoot":"","sources":["../../../../src/commands/prompts/promptEnsureFiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA+B7D;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAqB;IAErB,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEtE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEjD,sCAAsC;IACtC,IAAI,CAAC,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,EAAE;aACjB,WAAW,CAAC,GAAG,CAAC;aAChB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,WAAW,CAAC,UAAU,EAAE,CAAC;YACzB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACjC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;QAC7D,CAAC;QACD,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,SAAS;YACzB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ;gBACR,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,MAAM,YAAY,CAChB,2BAA2B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,EAC5F,EAAE,QAAQ,EAAE,SAAS,EAAE,CACxB,CAAC;QAER,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,WAAW,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"promptEnsureFiles.js","sourceRoot":"","sources":["../../../../src/commands/prompts/promptEnsureFiles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
|
+
type Pattern = {
|
|
2
|
+
name: 'process.env' | 'import.meta.env' | 'sveltekit';
|
|
3
|
+
regex: RegExp;
|
|
4
|
+
processor?: (match: RegExpExecArray) => string[];
|
|
5
|
+
};
|
|
1
6
|
/**
|
|
2
7
|
* Framework-specific regex patterns for detecting environment variable usage
|
|
3
8
|
* across different runtimes and frameworks.
|
|
4
9
|
*/
|
|
5
|
-
export declare const ENV_PATTERNS:
|
|
6
|
-
name: "process.env";
|
|
7
|
-
regex: RegExp;
|
|
8
|
-
} | {
|
|
9
|
-
name: "import.meta.env";
|
|
10
|
-
regex: RegExp;
|
|
11
|
-
} | {
|
|
12
|
-
name: "sveltekit";
|
|
13
|
-
regex: RegExp;
|
|
14
|
-
})[];
|
|
10
|
+
export declare const ENV_PATTERNS: Pattern[];
|
|
15
11
|
export declare const DEFAULT_INCLUDE_EXTENSIONS: string[];
|
|
16
12
|
export declare const DEFAULT_EXCLUDE_PATTERNS: string[];
|
|
13
|
+
export {};
|
|
17
14
|
//# sourceMappingURL=patterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../../src/core/scan/patterns.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,aAAa,GAAG,iBAAiB,GAAG,WAAW,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,EAAE,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,EAqGjC,CAAC;AAGF,eAAO,MAAM,0BAA0B,UAWtC,CAAC;AAGF,eAAO,MAAM,wBAAwB,UAiBpC,CAAC"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework-specific regex patterns for detecting environment variable usage
|
|
3
|
+
* across different runtimes and frameworks.
|
|
4
|
+
*/
|
|
5
|
+
export const ENV_PATTERNS = [
|
|
6
|
+
/**
|
|
7
|
+
* Matches process.env.KEY references in source code.
|
|
8
|
+
* Supports both dot notation and bracket notation.
|
|
9
|
+
*
|
|
10
|
+
* Examples:
|
|
11
|
+
* process.env.MY_KEY
|
|
12
|
+
* process.env["MY_KEY"]
|
|
13
|
+
* process.env['MY_KEY']
|
|
14
|
+
*/
|
|
15
|
+
{
|
|
16
|
+
name: 'process.env',
|
|
17
|
+
regex: /process\.env\.([A-Z_][A-Z0-9_]*)|process\.env\[['"]([A-Z_][A-Z0-9_]*)['"]]/g,
|
|
18
|
+
processor: (match) => {
|
|
19
|
+
// match[1] covers dot notation: process.env.KEY
|
|
20
|
+
// match[2] covers bracket notation: process.env['KEY']
|
|
21
|
+
const variable = match[1] || match[2];
|
|
22
|
+
return variable ? [variable] : [];
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
/**
|
|
26
|
+
* Matches object destructuring from process.env.
|
|
27
|
+
* Captures the full object pattern between braces for further parsing.
|
|
28
|
+
*
|
|
29
|
+
* Example:
|
|
30
|
+
* const { MY_KEY, OTHER_KEY: alias, THIRD_KEY = "fallback" } = process.env
|
|
31
|
+
*/
|
|
32
|
+
{
|
|
33
|
+
name: 'process.env',
|
|
34
|
+
regex: /\{([^}]*)\}\s*=\s*process\.env\b/g,
|
|
35
|
+
processor: (match) => {
|
|
36
|
+
const content = match[1];
|
|
37
|
+
if (!content)
|
|
38
|
+
return [];
|
|
39
|
+
return content
|
|
40
|
+
.split(',')
|
|
41
|
+
.map((part) => part.trim())
|
|
42
|
+
.filter(Boolean)
|
|
43
|
+
.map((part) => {
|
|
44
|
+
// Handle aliases: MY_KEY: alias
|
|
45
|
+
// Handle defaults: MY_KEY = "value"
|
|
46
|
+
// We want the left-most identifier
|
|
47
|
+
const [key] = part.split(/[:=]/);
|
|
48
|
+
return key ? key.trim() : '';
|
|
49
|
+
})
|
|
50
|
+
.filter((key) => /^[A-Z_][A-Z0-9_]*$/.test(key));
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
/**
|
|
54
|
+
* Matches import.meta.env.KEY references in source code.
|
|
55
|
+
* Supports both dot notation and bracket notation.
|
|
56
|
+
*
|
|
57
|
+
* Examples:
|
|
58
|
+
* import.meta.env.MY_KEY
|
|
59
|
+
* import.meta.env["MY_KEY"]
|
|
60
|
+
* import.meta.env['MY_KEY']
|
|
61
|
+
*/
|
|
62
|
+
{
|
|
63
|
+
name: 'import.meta.env',
|
|
64
|
+
regex: /import\.meta\.env\.([A-Z_][A-Z0-9_]*)|import\.meta\.env\[['"]([A-Z_][A-Z0-9_]*)['"]]/g,
|
|
65
|
+
processor: (match) => {
|
|
66
|
+
const variable = match[1] || match[2];
|
|
67
|
+
return variable ? [variable] : [];
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
// SvelteKit static named imports
|
|
71
|
+
// import { SECRET } from '$env/static/private';
|
|
72
|
+
// import { PUBLIC_URL } from '$env/static/public';
|
|
73
|
+
{
|
|
74
|
+
name: 'sveltekit',
|
|
75
|
+
regex: /import\s*\{\s*([A-Z_][A-Z0-9_]*)\s*\}\s*from\s*['"]\$env\/static\/(?:private|public)['"]/g,
|
|
76
|
+
},
|
|
77
|
+
// SvelteKit dynamic env object
|
|
78
|
+
// env.SECRET (Only matches .env variables accessed via env.VAR syntax)
|
|
79
|
+
{
|
|
80
|
+
name: 'sveltekit',
|
|
81
|
+
regex: /(?<![.\w])env\.([A-Z_][A-Z0-9_]*)/g,
|
|
82
|
+
},
|
|
83
|
+
// named import from dynamic is invalid in SvelteKit
|
|
84
|
+
// import { env } from '$env/dynamic/private';
|
|
85
|
+
{
|
|
86
|
+
name: 'sveltekit',
|
|
87
|
+
regex: /import\s*\{\s*([A-Z_][A-Z0-9_]*)\s*\}\s*from\s*['"]\$env\/dynamic\/(?:private|public)['"]/g,
|
|
88
|
+
},
|
|
89
|
+
// default import from any $env module is invalid in SvelteKit
|
|
90
|
+
// import SECRET from '$env/...';
|
|
91
|
+
{
|
|
92
|
+
name: 'sveltekit',
|
|
93
|
+
regex: /import\s+([A-Z_][A-Z0-9_]*)\s+from\s+['"]\$env\/(?:static|dynamic)\/(?:private|public)['"]/g,
|
|
94
|
+
},
|
|
95
|
+
];
|
|
96
|
+
// Default file extensions to include in scans
|
|
97
|
+
export const DEFAULT_INCLUDE_EXTENSIONS = [
|
|
98
|
+
'.js',
|
|
99
|
+
'.ts',
|
|
100
|
+
'.jsx',
|
|
101
|
+
'.tsx',
|
|
102
|
+
'.vue',
|
|
103
|
+
'.svelte',
|
|
104
|
+
'.mjs',
|
|
105
|
+
'.mts',
|
|
106
|
+
'.cjs',
|
|
107
|
+
'.cts',
|
|
108
|
+
];
|
|
109
|
+
// Default patterns to exclude from scans
|
|
110
|
+
export const DEFAULT_EXCLUDE_PATTERNS = [
|
|
111
|
+
'node_modules',
|
|
112
|
+
'.sveltekit',
|
|
113
|
+
'.svelte-kit',
|
|
114
|
+
'_actions',
|
|
115
|
+
'dist',
|
|
116
|
+
'build',
|
|
117
|
+
'.next',
|
|
118
|
+
'.nuxt',
|
|
119
|
+
'coverage',
|
|
120
|
+
'.git',
|
|
121
|
+
'.vscode',
|
|
122
|
+
'.idea',
|
|
123
|
+
'.test.',
|
|
124
|
+
'.spec.',
|
|
125
|
+
'__tests__',
|
|
126
|
+
'__mocks__',
|
|
127
|
+
];
|
|
128
|
+
//# sourceMappingURL=patterns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../../src/core/scan/patterns.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC;;;;;;;;OAQG;IACH;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EACH,6EAA6E;QAC/E,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,gDAAgD;YAChD,uDAAuD;YACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;KACF;IAED;;;;;;OAMG;IACH;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,mCAAmC;QAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YAExB,OAAO,OAAO;iBACX,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,gCAAgC;gBAChC,oCAAoC;gBACpC,mCAAmC;gBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;KACF;IAED;;;;;;;;OAQG;IACH;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EACH,uFAAuF;QACzF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;KACF;IAED,iCAAiC;IACjC,gDAAgD;IAChD,mDAAmD;IACnD;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,2FAA2F;KAC9F;IAED,+BAA+B;IAC/B,uEAAuE;IACvE;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EAAE,oCAAoC;KAC5C;IAED,oDAAoD;IACpD,8CAA8C;IAC9C;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,4FAA4F;KAC/F;IAED,8DAA8D;IAC9D,iCAAiC;IACjC;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,6FAA6F;KAChG;CACF,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,YAAY;IACZ,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,WAAW;CACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanFile.d.ts","sourceRoot":"","sources":["../../../../src/core/scan/scanFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKnE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"scanFile.d.ts","sourceRoot":"","sources":["../../../../src/core/scan/scanFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKnE;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,WAAW,GAChB,QAAQ,EAAE,CA4EZ"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { ENV_PATTERNS } from '
|
|
2
|
+
import { ENV_PATTERNS } from './patterns.js';
|
|
3
3
|
import { hasIgnoreComment } from '../security/secretDetectors.js';
|
|
4
4
|
import { normalizePath } from '../helpers/normalizePath.js';
|
|
5
5
|
/**
|
|
@@ -12,52 +12,56 @@ import { normalizePath } from '../helpers/normalizePath.js';
|
|
|
12
12
|
export function scanFile(filePath, content, opts) {
|
|
13
13
|
const usages = [];
|
|
14
14
|
const lines = content.split('\n');
|
|
15
|
-
// Get relative path from cwd
|
|
15
|
+
// Get relative path from cwd cross-platform compatible
|
|
16
16
|
const relativePath = normalizePath(path.relative(opts.cwd, filePath));
|
|
17
17
|
// Collect all $env imports used in this file
|
|
18
18
|
const envImports = [];
|
|
19
19
|
const importRegex = /import\s+(?:\{[^}]*\}|\w+)\s+from\s+['"](\$env\/(?:static|dynamic)\/(?:private|public))['"]/g;
|
|
20
20
|
let importMatch;
|
|
21
21
|
while ((importMatch = importRegex.exec(content)) !== null) {
|
|
22
|
-
|
|
23
|
-
envImports.push(importMatch[1]);
|
|
24
|
-
}
|
|
22
|
+
envImports.push(importMatch[1]);
|
|
25
23
|
}
|
|
26
24
|
for (const pattern of ENV_PATTERNS) {
|
|
27
25
|
let match;
|
|
28
26
|
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
29
27
|
while ((match = regex.exec(content)) !== null) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
28
|
+
const variables = pattern.processor
|
|
29
|
+
? pattern.processor(match)
|
|
30
|
+
: [match[1]];
|
|
31
|
+
for (const variable of variables) {
|
|
32
|
+
if (!variable)
|
|
33
|
+
continue;
|
|
34
|
+
const matchIndex = match.index;
|
|
35
|
+
// Find line and column
|
|
36
|
+
// Note: For destructured variables, this points to the start of the destructuring block
|
|
37
|
+
// not the specific variable location. Ideally we'd search within the match.
|
|
38
|
+
const beforeMatch = content.substring(0, matchIndex);
|
|
39
|
+
const lineNumber = beforeMatch.split('\n').length;
|
|
40
|
+
const lastNewlineIndex = beforeMatch.lastIndexOf('\n');
|
|
41
|
+
const column = lastNewlineIndex === -1
|
|
42
|
+
? matchIndex + 1
|
|
43
|
+
: matchIndex - lastNewlineIndex;
|
|
44
|
+
// Get the context (the actual line)
|
|
45
|
+
const contextLine = lines[lineNumber - 1];
|
|
46
|
+
// Determine previous line for ignore detection
|
|
47
|
+
const prevLine = lines[lineNumber - 2] ?? '';
|
|
48
|
+
const isIgnored = hasIgnoreComment(contextLine) || hasIgnoreComment(prevLine);
|
|
49
|
+
// If usage is ignored, skip it entirely
|
|
50
|
+
if (isIgnored)
|
|
51
|
+
continue;
|
|
52
|
+
// Check if console.log
|
|
53
|
+
const isLogged = /\bconsole\.(log|error|warn|info|debug)\s*\(/.test(contextLine);
|
|
54
|
+
usages.push({
|
|
55
|
+
variable,
|
|
56
|
+
file: relativePath,
|
|
57
|
+
line: lineNumber,
|
|
58
|
+
column,
|
|
59
|
+
pattern: pattern.name,
|
|
60
|
+
imports: envImports,
|
|
61
|
+
context: contextLine,
|
|
62
|
+
isLogged,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
return usages;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanFile.js","sourceRoot":"","sources":["../../../../src/core/scan/scanFile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scanFile.js","sourceRoot":"","sources":["../../../../src/core/scan/scanFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export function detectEnvExpirations(filePath) {
|
|
|
19
19
|
const line = raw.trim();
|
|
20
20
|
const expireMatch = line.match(reg);
|
|
21
21
|
if (expireMatch) {
|
|
22
|
-
pendingExpire = expireMatch[2]
|
|
22
|
+
pendingExpire = expireMatch[2]; // capture dato
|
|
23
23
|
continue;
|
|
24
24
|
}
|
|
25
25
|
const isEnvKey = /^[A-Za-z0-9_.-]+=/.test(line);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detectEnvExpirations.js","sourceRoot":"","sources":["../../../src/services/detectEnvExpirations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,MAAM,GAAG,GAAG,6CAA6C,CAAC;IAE1D,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,GAAG,WAAW,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"detectEnvExpirations.js","sourceRoot":"","sources":["../../../src/services/detectEnvExpirations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,MAAM,GAAG,GAAG,6CAA6C,CAAC;IAE1D,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,GAAG,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,eAAe;YAChD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAE3D,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBAEH,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envDiscovery.d.ts","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;GAEG;AACH,UAAU,oBAAoB;IAC5B,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,OAAO,EACP,WAAW,GACZ,EAAE,oBAAoB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"envDiscovery.d.ts","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;GAEG;AACH,UAAU,oBAAoB;IAC5B,oEAAoE;IACpE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,OAAO,EACP,WAAW,GACZ,EAAE,oBAAoB,GAAG,SAAS,CA+ElC"}
|
|
@@ -13,11 +13,7 @@ export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
|
|
|
13
13
|
const envFiles = fs
|
|
14
14
|
.readdirSync(cwd)
|
|
15
15
|
.filter((f) => f.startsWith(DEFAULT_ENV_FILE) && !f.startsWith(DEFAULT_EXAMPLE_FILE))
|
|
16
|
-
.sort((a, b) =>
|
|
17
|
-
? -1
|
|
18
|
-
: b === DEFAULT_ENV_FILE
|
|
19
|
-
? 1
|
|
20
|
-
: a.localeCompare(b));
|
|
16
|
+
.sort((a, b) => (b === DEFAULT_ENV_FILE ? 1 : a.localeCompare(b)));
|
|
21
17
|
let primaryEnv = envFiles.includes(DEFAULT_ENV_FILE)
|
|
22
18
|
? DEFAULT_ENV_FILE
|
|
23
19
|
: envFiles[0] || DEFAULT_ENV_FILE;
|
|
@@ -50,9 +46,7 @@ export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
|
|
|
50
46
|
primaryExample = exampleNameFromFlag;
|
|
51
47
|
if (exampleNameFromFlag.startsWith(DEFAULT_EXAMPLE_FILE)) {
|
|
52
48
|
const suffix = exampleNameFromFlag.slice(DEFAULT_EXAMPLE_FILE.length);
|
|
53
|
-
const matchedEnv = suffix
|
|
54
|
-
? `${DEFAULT_ENV_FILE}${suffix}`
|
|
55
|
-
: DEFAULT_ENV_FILE;
|
|
49
|
+
const matchedEnv = `${DEFAULT_ENV_FILE}${suffix}`;
|
|
56
50
|
if (fs.existsSync(path.resolve(cwd, matchedEnv))) {
|
|
57
51
|
primaryEnv = matchedEnv;
|
|
58
52
|
envFiles.length = 0;
|
|
@@ -66,7 +60,7 @@ export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
|
|
|
66
60
|
}
|
|
67
61
|
else {
|
|
68
62
|
// Use the first available env file instead
|
|
69
|
-
primaryEnv = envFiles[0]
|
|
63
|
+
primaryEnv = envFiles[0];
|
|
70
64
|
}
|
|
71
65
|
}
|
|
72
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAchF;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,GAAG,EACH,OAAO,EACP,WAAW,GACU;IACrB,qEAAqE;IACrE,MAAM,QAAQ,GAAG,EAAE;SAChB,WAAW,CAAC,GAAG,CAAC;SAChB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,oBAAoB,CAAC,CACxE;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import fsSync from 'fs';
|
|
4
|
-
import { DEFAULT_INCLUDE_EXTENSIONS, DEFAULT_EXCLUDE_PATTERNS, } from '../core/patterns.js';
|
|
4
|
+
import { DEFAULT_INCLUDE_EXTENSIONS, DEFAULT_EXCLUDE_PATTERNS, } from '../core/scan/patterns.js';
|
|
5
5
|
/**
|
|
6
6
|
* Recursively finds all files in the given directory matching the include patterns,
|
|
7
7
|
* while excluding files and directories that match the exclude patterns.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,IAAI,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,
|
|
1
|
+
{"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printScanResult.d.ts","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,oBAAoB,CAAC;AAqB5B;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,gBAAgB,EACtB,eAAe,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,UAAU,GACtB,UAAU,
|
|
1
|
+
{"version":3,"file":"printScanResult.d.ts","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,UAAU,EACX,MAAM,oBAAoB,CAAC;AAqB5B;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,gBAAgB,EACtB,eAAe,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE,UAAU,GACtB,UAAU,CA0JZ"}
|
|
@@ -66,7 +66,9 @@ export function printScanResult(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
66
66
|
printConsolelogWarning(scanResult.logged);
|
|
67
67
|
}
|
|
68
68
|
// Expiration warnings
|
|
69
|
-
|
|
69
|
+
if (scanResult.expireWarnings) {
|
|
70
|
+
printExpireWarnings(scanResult.expireWarnings);
|
|
71
|
+
}
|
|
70
72
|
// Check for high severity secrets - ALWAYS exit with error
|
|
71
73
|
const hasHighSeveritySecrets = (scanResult.secrets ?? []).some((s) => s.severity === 'high');
|
|
72
74
|
if (hasHighSeveritySecrets) {
|
|
@@ -89,7 +91,7 @@ export function printScanResult(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
89
91
|
cwd: opts.cwd,
|
|
90
92
|
envFile: DEFAULT_ENV_FILE,
|
|
91
93
|
});
|
|
92
|
-
if (gitignoreIssue
|
|
94
|
+
if (gitignoreIssue) {
|
|
93
95
|
printGitignoreWarning({
|
|
94
96
|
envFile: DEFAULT_ENV_FILE,
|
|
95
97
|
reason: gitignoreIssue.reason,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printScanResult.js","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"printScanResult.js","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { detectSecretsInSource, } from '../core/security/secretDetectors.js';
|
|
4
|
-
import { DEFAULT_EXCLUDE_PATTERNS } from '../core/patterns.js';
|
|
4
|
+
import { DEFAULT_EXCLUDE_PATTERNS } from '../core/scan/patterns.js';
|
|
5
5
|
import { scanFile } from '../core/scan/scanFile.js';
|
|
6
6
|
import { findFiles } from './fileWalker.js';
|
|
7
7
|
import { printProgress } from '../ui/scan/printProgress.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanCodebase.js","sourceRoot":"","sources":["../../../src/services/scanCodebase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EACL,qBAAqB,GAEtB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"scanCodebase.js","sourceRoot":"","sources":["../../../src/services/scanCodebase.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,5 +5,5 @@ import type { ExpireWarning } from '../../config/types.js';
|
|
|
5
5
|
* @param isJson Whether to output in JSON format
|
|
6
6
|
* @returns void
|
|
7
7
|
*/
|
|
8
|
-
export declare function printExpireWarnings(warnings: ExpireWarning[]
|
|
8
|
+
export declare function printExpireWarnings(warnings: ExpireWarning[]): void;
|
|
9
9
|
//# sourceMappingURL=printExpireWarnings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printExpireWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"printExpireWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,QA0B5D"}
|
|
@@ -5,10 +5,7 @@ import chalk from 'chalk';
|
|
|
5
5
|
* @param isJson Whether to output in JSON format
|
|
6
6
|
* @returns void
|
|
7
7
|
*/
|
|
8
|
-
export function printExpireWarnings(warnings
|
|
9
|
-
if (isJson) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
8
|
+
export function printExpireWarnings(warnings) {
|
|
12
9
|
if (warnings.length === 0)
|
|
13
10
|
return;
|
|
14
11
|
console.log(chalk.yellow('⚠️ Expiration warnings:'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printExpireWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"printExpireWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC;oBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;oBAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC;wBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;wBAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;4BAClB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;4BAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;gCAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;gCAClD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -16,7 +16,7 @@ export function printFrameworkWarnings(warnings) {
|
|
|
16
16
|
return;
|
|
17
17
|
// Deduplicate warnings by variable + file + line + reason
|
|
18
18
|
const uniqueWarnings = Array.from(new Map(warnings.map((w) => [`${w.variable}:${w.file}:${w.line}:${w.reason}`, w])).values());
|
|
19
|
-
console.log(chalk.yellow(`⚠️ Framework issues (${FRAMEWORK_LABELS[uniqueWarnings[0]
|
|
19
|
+
console.log(chalk.yellow(`⚠️ Framework issues (${FRAMEWORK_LABELS[uniqueWarnings[0].framework]}):`));
|
|
20
20
|
for (const w of uniqueWarnings) {
|
|
21
21
|
console.log(chalk.yellow(` - ${w.variable} (${w.file}:${w.line}) → ${w.reason}`));
|
|
22
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printFrameworkWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,gBAAgB,GAAsC;IAC1D,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,0DAA0D;IAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CACL,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAC1E,CAAC,MAAM,EAAE,CACX,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yBAAyB,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"printFrameworkWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,gBAAgB,GAAsC;IAC1D,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,0DAA0D;IAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CACL,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAC1E,CAAC,MAAM,EAAE,CACX,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yBAAyB,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,IAAI,CAC5E,CACF,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# dotenv-diff capabilities
|
|
2
|
+
|
|
3
|
+
`dotenv-diff` scans your codebase for environment variable usage and checks it against your env files.
|
|
4
|
+
|
|
5
|
+
This document focuses on one question: **what does the scanner actually check for?**
|
|
6
|
+
|
|
7
|
+
The tool recognises the following patterns:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// Node.js – dot and bracket notation
|
|
11
|
+
process.env.MY_KEY
|
|
12
|
+
process.env["MY_KEY"]
|
|
13
|
+
process.env['MY_KEY']
|
|
14
|
+
|
|
15
|
+
// Node.js – destructuring
|
|
16
|
+
const { MY_KEY } = process.env
|
|
17
|
+
const { MY_KEY: alias, OTHER_KEY = "fallback" } = process.env
|
|
18
|
+
|
|
19
|
+
// Vite / import.meta
|
|
20
|
+
import.meta.env.MY_KEY
|
|
21
|
+
import.meta.env["MY_KEY"]
|
|
22
|
+
import.meta.env['MY_KEY']
|
|
23
|
+
|
|
24
|
+
// SvelteKit – dynamic (env object)
|
|
25
|
+
import { env } from '$env/dynamic/private';
|
|
26
|
+
import { env } from '$env/dynamic/public';
|
|
27
|
+
env.MY_KEY
|
|
28
|
+
|
|
29
|
+
// SvelteKit – static (named imports)
|
|
30
|
+
import { MY_KEY } from '$env/static/private';
|
|
31
|
+
import { MY_KEY } from '$env/static/public';
|
|
32
|
+
MY_KEY
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Default scanned file types: .ts, .js, jsx, tsx, vue, .mjs, .mts, .cjs, .cts, .svelte
|
|
36
|
+
|
|
37
|
+
## What It Checks For
|
|
38
|
+
|
|
39
|
+
### 1 Missing Variables
|
|
40
|
+
|
|
41
|
+
Variables that are **used in code** but **not defined** in the selected env comparison file.
|
|
42
|
+
|
|
43
|
+
### 2 Unused Variables
|
|
44
|
+
|
|
45
|
+
Variables that are **defined in env files** but **never used** in the scanned codebase.
|
|
46
|
+
|
|
47
|
+
### 3 Duplicate Keys
|
|
48
|
+
|
|
49
|
+
Duplicate variable definitions inside env files (both main env and example env, when available).
|
|
50
|
+
|
|
51
|
+
### 4 Secret Detection
|
|
52
|
+
|
|
53
|
+
Potential secrets and sensitive values, including high-risk patterns.
|
|
54
|
+
|
|
55
|
+
### 5 Example File Secret Warnings
|
|
56
|
+
|
|
57
|
+
Potential secrets found in `.env.example` content.
|
|
58
|
+
|
|
59
|
+
### 6 Framework-Specific Misuse
|
|
60
|
+
|
|
61
|
+
Framework-aware warnings (for supported frameworks) around unsafe or incorrect env usage patterns.
|
|
62
|
+
|
|
63
|
+
### 7 Uppercase Naming Warnings
|
|
64
|
+
|
|
65
|
+
Variables that do not follow conventional uppercase env naming style.
|
|
66
|
+
|
|
67
|
+
### 8 Inconsistent Naming Warnings
|
|
68
|
+
|
|
69
|
+
Variables that appear to use mixed or conflicting naming patterns.
|
|
70
|
+
|
|
71
|
+
### 9 Console Log Exposure Warnings
|
|
72
|
+
|
|
73
|
+
Cases where environment-related values are logged with `console.log`.
|
|
74
|
+
|
|
75
|
+
### 10 Expiration Warnings
|
|
76
|
+
|
|
77
|
+
Warnings for environment values that look like expiring tokens/credentials or contain expiration metadata.
|
|
78
|
+
|
|
79
|
+
### 11 Gitignore Safety Check
|
|
80
|
+
|
|
81
|
+
Checks whether `.env` is properly ignored by `.gitignore`.
|
|
82
|
+
|
|
83
|
+
### 12 Health Score
|
|
84
|
+
|
|
85
|
+
A final score based on scan findings (missing, unused, duplicates, security warnings, and more).
|
package/docs/index.md
CHANGED
|
@@ -2,7 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Welcome to the official documentation for `dotenv-diff`.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
`dotenv-diff` scans your codebase for environment variable usage and compares it against your `.env` and/or `.env.example` files.
|
|
6
|
+
|
|
7
|
+
It helps you:
|
|
8
|
+
|
|
9
|
+
- Detect missing environment variables
|
|
10
|
+
- Detect unused variables in your `.env` files
|
|
11
|
+
- Prevent runtime crashes caused by undefined `process.env` usage
|
|
12
|
+
- Enforce consistent environment configuration across teams
|
|
13
|
+
- Apply framework-specific validation rules (SvelteKit, Next.js, etc.)
|
|
14
|
+
|
|
15
|
+
The tool is designed to be fast, CI-friendly, and safe to run in large projects and monorepos.
|
|
6
16
|
|
|
7
17
|
---
|
|
8
18
|
|
|
@@ -17,7 +27,7 @@ npm install dotenv-diff
|
|
|
17
27
|
Run:
|
|
18
28
|
|
|
19
29
|
```bash
|
|
20
|
-
npx dotenv-diff
|
|
30
|
+
npx dotenv-diff
|
|
21
31
|
```
|
|
22
32
|
|
|
23
33
|
---
|
|
@@ -26,6 +36,7 @@ npx dotenv-diff --example .env.example
|
|
|
26
36
|
|
|
27
37
|
| Document | Description |
|
|
28
38
|
|---|---|
|
|
39
|
+
| [Capabilities](./capabilities.md) | What the scanner checks for and how it works |and rules |
|
|
29
40
|
| [Configuration and Flags](./configuration_and_flags.md) | Full CLI/config reference for options and behavior |
|
|
30
41
|
| [Expiration Warnings](./expiration_warnings.md) | How `@expire` annotations work and strict mode integration |
|
|
31
42
|
| [Ignore Comments](./ignore_comments.md) | Suppress false positives with inline/block ignore markers |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dotenv-diff",
|
|
3
|
-
"version": "2.6.
|
|
3
|
+
"version": "2.6.4",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Detects environment variable issues, usage, and potential security risks.",
|
|
6
6
|
"bin": {
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@release-it/conventional-changelog": "^10.0.5",
|
|
77
77
|
"@types/node": "^25.3.0",
|
|
78
|
+
"@types/prompts": "^2.4.9",
|
|
78
79
|
"@typescript-eslint/eslint-plugin": "^8.56.1",
|
|
79
80
|
"@typescript-eslint/parser": "^8.56.1",
|
|
80
81
|
"@vitest/coverage-v8": "4.0.18",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;IA4CxB,CAAC;AAGF,eAAO,MAAM,0BAA0B,UAStC,CAAC;AAGF,eAAO,MAAM,wBAAwB,UAiBpC,CAAC"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Framework-specific regex patterns for detecting environment variable usage
|
|
3
|
-
* across different runtimes and frameworks.
|
|
4
|
-
*/
|
|
5
|
-
export const ENV_PATTERNS = [
|
|
6
|
-
// process.env.X
|
|
7
|
-
{
|
|
8
|
-
name: 'process.env',
|
|
9
|
-
regex: /process\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
10
|
-
},
|
|
11
|
-
// import.meta.env.X
|
|
12
|
-
{
|
|
13
|
-
name: 'import.meta.env',
|
|
14
|
-
regex: /import\.meta\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
15
|
-
},
|
|
16
|
-
// SvelteKit static named imports
|
|
17
|
-
// import { SECRET } from '$env/static/private';
|
|
18
|
-
// import { PUBLIC_URL } from '$env/static/public';
|
|
19
|
-
{
|
|
20
|
-
name: 'sveltekit',
|
|
21
|
-
regex: /import\s*\{\s*([A-Z_][A-Z0-9_]*)\s*\}\s*from\s*['"]\$env\/static\/(?:private|public)['"]/g,
|
|
22
|
-
},
|
|
23
|
-
// SvelteKit dynamic env object
|
|
24
|
-
// env.SECRET (Only matches .env variables accessed via env.VAR syntax)
|
|
25
|
-
{
|
|
26
|
-
name: 'sveltekit',
|
|
27
|
-
regex: /(?<![.\w])env\.([A-Z_][A-Z0-9_]*)/g,
|
|
28
|
-
},
|
|
29
|
-
// named import from dynamic is invalid in SvelteKit
|
|
30
|
-
// import { env } from '$env/dynamic/private';
|
|
31
|
-
{
|
|
32
|
-
name: 'sveltekit',
|
|
33
|
-
regex: /import\s*\{\s*([A-Z_][A-Z0-9_]*)\s*\}\s*from\s*['"]\$env\/dynamic\/(?:private|public)['"]/g,
|
|
34
|
-
},
|
|
35
|
-
// default import from any $env module is invalid in SvelteKit
|
|
36
|
-
// import SECRET from '$env/...';
|
|
37
|
-
{
|
|
38
|
-
name: 'sveltekit',
|
|
39
|
-
regex: /import\s+([A-Z_][A-Z0-9_]*)\s+from\s+['"]\$env\/(?:static|dynamic)\/(?:private|public)['"]/g,
|
|
40
|
-
},
|
|
41
|
-
];
|
|
42
|
-
// Default file extensions to include in scans
|
|
43
|
-
export const DEFAULT_INCLUDE_EXTENSIONS = [
|
|
44
|
-
'.js',
|
|
45
|
-
'.ts',
|
|
46
|
-
'.jsx',
|
|
47
|
-
'.tsx',
|
|
48
|
-
'.vue',
|
|
49
|
-
'.svelte',
|
|
50
|
-
'.mjs',
|
|
51
|
-
'.cjs',
|
|
52
|
-
];
|
|
53
|
-
// Default patterns to exclude from scans
|
|
54
|
-
export const DEFAULT_EXCLUDE_PATTERNS = [
|
|
55
|
-
'node_modules',
|
|
56
|
-
'.sveltekit',
|
|
57
|
-
'.svelte-kit',
|
|
58
|
-
'_actions',
|
|
59
|
-
'dist',
|
|
60
|
-
'build',
|
|
61
|
-
'.next',
|
|
62
|
-
'.nuxt',
|
|
63
|
-
'coverage',
|
|
64
|
-
'.git',
|
|
65
|
-
'.vscode',
|
|
66
|
-
'.idea',
|
|
67
|
-
'.test.',
|
|
68
|
-
'.spec.',
|
|
69
|
-
'__tests__',
|
|
70
|
-
'__mocks__',
|
|
71
|
-
];
|
|
72
|
-
//# sourceMappingURL=patterns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,gBAAgB;IAChB;QACE,IAAI,EAAE,aAAsB;QAC5B,KAAK,EAAE,mCAAmC;KAC3C;IAED,oBAAoB;IACpB;QACE,IAAI,EAAE,iBAA0B;QAChC,KAAK,EAAE,wCAAwC;KAChD;IAED,iCAAiC;IACjC,gDAAgD;IAChD,mDAAmD;IACnD;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,2FAA2F;KAC9F;IAED,+BAA+B;IAC/B,uEAAuE;IACvE;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EAAE,oCAAoC;KAC5C;IAED,oDAAoD;IACpD,8CAA8C;IAC9C;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,4FAA4F;KAC/F;IAED,8DAA8D;IAC9D,iCAAiC;IACjC;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,6FAA6F;KAChG;CACF,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;CACP,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,YAAY;IACZ,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,WAAW;CACZ,CAAC"}
|