dotenv-diff 2.3.7 → 2.3.9
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 +301 -0
- package/README.md +44 -0
- package/dist/src/cli/program.d.ts.map +1 -1
- package/dist/src/cli/program.js +10 -1
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +4 -0
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/commands/scanUsage.d.ts.map +1 -1
- package/dist/src/commands/scanUsage.js +14 -1
- package/dist/src/commands/scanUsage.js.map +1 -1
- package/dist/src/config/options.d.ts.map +1 -1
- package/dist/src/config/options.js +6 -0
- package/dist/src/config/options.js.map +1 -1
- package/dist/src/config/types.d.ts +44 -2
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/core/computeHealthScore.d.ts +8 -0
- package/dist/src/core/computeHealthScore.d.ts.map +1 -0
- package/dist/src/core/computeHealthScore.js +30 -0
- package/dist/src/core/computeHealthScore.js.map +1 -0
- package/dist/src/core/detectExpirations.d.ts +14 -0
- package/dist/src/core/detectExpirations.d.ts.map +1 -0
- package/dist/src/core/detectExpirations.js +44 -0
- package/dist/src/core/detectExpirations.js.map +1 -0
- package/dist/src/core/detectInconsistentNaming.d.ts +9 -0
- package/dist/src/core/detectInconsistentNaming.d.ts.map +1 -0
- package/dist/src/core/detectInconsistentNaming.js +61 -0
- package/dist/src/core/detectInconsistentNaming.js.map +1 -0
- package/dist/src/core/detectUppercaseKeys.d.ts +9 -0
- package/dist/src/core/detectUppercaseKeys.d.ts.map +1 -0
- package/dist/src/core/detectUppercaseKeys.js +28 -0
- package/dist/src/core/detectUppercaseKeys.js.map +1 -0
- package/dist/src/core/helpers/toUpperSnakeCase.d.ts +6 -0
- package/dist/src/core/helpers/toUpperSnakeCase.d.ts.map +1 -0
- package/dist/src/core/helpers/toUpperSnakeCase.js +11 -0
- package/dist/src/core/helpers/toUpperSnakeCase.js.map +1 -0
- package/dist/src/core/processComparisonFile.d.ts +14 -0
- package/dist/src/core/processComparisonFile.d.ts.map +1 -1
- package/dist/src/core/processComparisonFile.js +31 -0
- package/dist/src/core/processComparisonFile.js.map +1 -1
- package/dist/src/core/scanJsonOutput.d.ts.map +1 -1
- package/dist/src/core/scanJsonOutput.js +17 -0
- package/dist/src/core/scanJsonOutput.js.map +1 -1
- package/dist/src/index.js +0 -6
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/codeBaseScanner.d.ts.map +1 -1
- package/dist/src/services/codeBaseScanner.js +0 -6
- package/dist/src/services/codeBaseScanner.js.map +1 -1
- package/dist/src/services/scanOutputToConsole.d.ts.map +1 -1
- package/dist/src/services/scanOutputToConsole.js +19 -3
- package/dist/src/services/scanOutputToConsole.js.map +1 -1
- package/dist/src/ui/scan/printExpireWarnings.d.ts +9 -0
- package/dist/src/ui/scan/printExpireWarnings.d.ts.map +1 -0
- package/dist/src/ui/scan/printExpireWarnings.js +30 -0
- package/dist/src/ui/scan/printExpireWarnings.js.map +1 -0
- package/dist/src/ui/scan/printHealthScore.d.ts +8 -0
- package/dist/src/ui/scan/printHealthScore.d.ts.map +1 -0
- package/dist/src/ui/scan/printHealthScore.js +30 -0
- package/dist/src/ui/scan/printHealthScore.js.map +1 -0
- package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts +9 -0
- package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts.map +1 -0
- package/dist/src/ui/scan/printInconsistentNamingWarning.js +19 -0
- package/dist/src/ui/scan/printInconsistentNamingWarning.js.map +1 -0
- package/dist/src/ui/scan/printUppercaseWarning.d.ts +10 -0
- package/dist/src/ui/scan/printUppercaseWarning.d.ts.map +1 -0
- package/dist/src/ui/scan/printUppercaseWarning.js +19 -0
- package/dist/src/ui/scan/printUppercaseWarning.js.map +1 -0
- package/dist/src/ui/shared/printStrictModeError.d.ts +3 -0
- package/dist/src/ui/shared/printStrictModeError.d.ts.map +1 -1
- package/dist/src/ui/shared/printStrictModeError.js +6 -0
- package/dist/src/ui/shared/printStrictModeError.js.map +1 -1
- package/package.json +4 -3
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { detectSecretsInSource, } from '../core/secretDetectors.js';
|
|
4
|
-
import { hasCspInSource } from '../core/cspDetector.js';
|
|
5
4
|
import { DEFAULT_EXCLUDE_PATTERNS } from '../core/patterns.js';
|
|
6
5
|
import { scanFile } from '../core/scanFile.js';
|
|
7
6
|
import { findFiles } from './fileWalker.js';
|
|
@@ -19,13 +18,9 @@ export async function scanCodebase(opts) {
|
|
|
19
18
|
const allUsages = [];
|
|
20
19
|
let filesScanned = 0;
|
|
21
20
|
const allSecrets = [];
|
|
22
|
-
let hasCsp = false;
|
|
23
21
|
for (const filePath of files) {
|
|
24
22
|
try {
|
|
25
23
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
26
|
-
if (!hasCsp && hasCspInSource(content)) {
|
|
27
|
-
hasCsp = true;
|
|
28
|
-
}
|
|
29
24
|
const fileUsages = await scanFile(filePath, content, opts);
|
|
30
25
|
allUsages.push(...fileUsages);
|
|
31
26
|
if (opts.secrets) {
|
|
@@ -66,7 +61,6 @@ export async function scanCodebase(opts) {
|
|
|
66
61
|
env: [],
|
|
67
62
|
example: [],
|
|
68
63
|
},
|
|
69
|
-
hasCsp: hasCsp,
|
|
70
64
|
logged: loggedVariables,
|
|
71
65
|
};
|
|
72
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeBaseScanner.js","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EACL,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"codeBaseScanner.js","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanOutputToConsole.d.ts","sourceRoot":"","sources":["../../../src/services/scanOutputToConsole.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"scanOutputToConsole.d.ts","sourceRoot":"","sources":["../../../src/services/scanOutputToConsole.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAsBvE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,gBAAgB,EACtB,eAAe,EAAE,MAAM,EACvB,UAAU,CAAC,EAAE;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,GACA;IAAE,aAAa,EAAE,OAAO,CAAA;CAAE,CAyL5B"}
|
|
@@ -13,10 +13,14 @@ import { printSuccess } from '../ui/shared/printSuccess.js';
|
|
|
13
13
|
import { printStrictModeError } from '../ui/shared/printStrictModeError.js';
|
|
14
14
|
import { printFixTips } from '../ui/shared/printFixTips.js';
|
|
15
15
|
import { printAutoFix } from '../ui/shared/printAutoFix.js';
|
|
16
|
-
import { printCspWarning } from '../ui/scan/printCspWarning.js';
|
|
17
16
|
import { printFrameworkWarnings } from '../ui/scan/printFrameworkWarnings.js';
|
|
18
17
|
import { printExampleWarnings } from '../ui/scan/printExampleWarnings.js';
|
|
19
18
|
import { printConsolelogWarning } from '../ui/scan/printConsolelogWarning.js';
|
|
19
|
+
import { printUppercaseWarning } from '../ui/scan/printUppercaseWarning.js';
|
|
20
|
+
import { computeHealthScore } from '../core/computeHealthScore.js';
|
|
21
|
+
import { printHealthScore } from '../ui/scan/printHealthScore.js';
|
|
22
|
+
import { printExpireWarnings } from '../ui/scan/printExpireWarnings.js';
|
|
23
|
+
import { printInconsistentNamingWarning } from '../ui/scan/printInconsistentNamingWarning.js';
|
|
20
24
|
/**
|
|
21
25
|
* Outputs the scan results to the console.
|
|
22
26
|
* @param scanResult - The result of the scan.
|
|
@@ -31,6 +35,8 @@ export function outputToConsole(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
31
35
|
printHeader(comparedAgainst);
|
|
32
36
|
// Show stats if requested
|
|
33
37
|
printStats(scanResult.stats, isJson, opts.showStats ?? true);
|
|
38
|
+
const score = computeHealthScore(scanResult);
|
|
39
|
+
printHealthScore(score);
|
|
34
40
|
// Show used variables if any found
|
|
35
41
|
if (scanResult.stats.uniqueVariables > 0) {
|
|
36
42
|
// Show unique variables found
|
|
@@ -45,6 +51,13 @@ export function outputToConsole(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
45
51
|
if (scanResult.frameworkWarnings && scanResult.frameworkWarnings.length > 0) {
|
|
46
52
|
printFrameworkWarnings(scanResult.frameworkWarnings, isJson);
|
|
47
53
|
}
|
|
54
|
+
if (scanResult.uppercaseWarnings && scanResult.uppercaseWarnings.length > 0) {
|
|
55
|
+
printUppercaseWarning(scanResult.uppercaseWarnings, comparedAgainst, isJson);
|
|
56
|
+
}
|
|
57
|
+
if (scanResult.inconsistentNamingWarnings &&
|
|
58
|
+
scanResult.inconsistentNamingWarnings.length > 0) {
|
|
59
|
+
printInconsistentNamingWarning(scanResult.inconsistentNamingWarnings, isJson);
|
|
60
|
+
}
|
|
48
61
|
printExampleWarnings(scanResult.exampleWarnings ?? [], isJson);
|
|
49
62
|
// Unused
|
|
50
63
|
printUnused(scanResult.unused, comparedAgainst, opts.showUnused ?? false, isJson);
|
|
@@ -54,8 +67,8 @@ export function outputToConsole(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
54
67
|
printSecrets(scanResult.secrets ?? [], isJson);
|
|
55
68
|
// Console log usage warning
|
|
56
69
|
printConsolelogWarning(scanResult.logged ?? [], isJson);
|
|
57
|
-
//
|
|
58
|
-
|
|
70
|
+
// Expiration warnings
|
|
71
|
+
printExpireWarnings(scanResult.expireWarnings ?? [], isJson);
|
|
59
72
|
// Check for high severity secrets - ALWAYS exit with error
|
|
60
73
|
const hasHighSeveritySecrets = (scanResult.secrets ?? []).some((s) => s.severity === 'high');
|
|
61
74
|
if (hasHighSeveritySecrets) {
|
|
@@ -95,6 +108,9 @@ export function outputToConsole(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
95
108
|
hasGitignoreIssue,
|
|
96
109
|
frameworkWarnings: scanResult.frameworkWarnings?.length ?? 0,
|
|
97
110
|
logged: scanResult.logged?.length ?? 0,
|
|
111
|
+
uppercaseWarnings: scanResult.uppercaseWarnings?.length ?? 0,
|
|
112
|
+
expireWarnings: scanResult.expireWarnings?.length ?? 0,
|
|
113
|
+
inconsistentNamingWarnings: scanResult.inconsistentNamingWarnings?.length ?? 0,
|
|
98
114
|
}, isJson);
|
|
99
115
|
if (exit)
|
|
100
116
|
exitWithError = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanOutputToConsole.js","sourceRoot":"","sources":["../../../src/services/scanOutputToConsole.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"scanOutputToConsole.js","sourceRoot":"","sources":["../../../src/services/scanOutputToConsole.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ExpireWarning } from '../../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prints expiration warnings for environment variables.
|
|
4
|
+
* @param warnings Array of expiration warnings
|
|
5
|
+
* @param isJson Whether to output in JSON format
|
|
6
|
+
* @returns void
|
|
7
|
+
*/
|
|
8
|
+
export declare function printExpireWarnings(warnings: ExpireWarning[], isJson: boolean): void;
|
|
9
|
+
//# sourceMappingURL=printExpireWarnings.d.ts.map
|
|
@@ -0,0 +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,CACjC,QAAQ,EAAE,aAAa,EAAE,EACzB,MAAM,EAAE,OAAO,QA2BhB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Prints expiration warnings for environment variables.
|
|
4
|
+
* @param warnings Array of expiration warnings
|
|
5
|
+
* @param isJson Whether to output in JSON format
|
|
6
|
+
* @returns void
|
|
7
|
+
*/
|
|
8
|
+
export function printExpireWarnings(warnings, isJson) {
|
|
9
|
+
if (isJson) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
if (warnings.length === 0)
|
|
13
|
+
return;
|
|
14
|
+
console.log(chalk.yellow('⚠️ Expiration warnings:'));
|
|
15
|
+
for (const warn of warnings) {
|
|
16
|
+
const severity = warn.daysLeft < 0
|
|
17
|
+
? chalk.red(`EXPIRED ${Math.abs(warn.daysLeft)} days ago`)
|
|
18
|
+
: warn.daysLeft === 0
|
|
19
|
+
? chalk.red('EXPIRES TODAY')
|
|
20
|
+
: warn.daysLeft <= 3
|
|
21
|
+
? chalk.red(`expires in ${warn.daysLeft} days`)
|
|
22
|
+
: warn.daysLeft <= 7
|
|
23
|
+
? chalk.yellow(`expires in ${warn.daysLeft} days`)
|
|
24
|
+
: chalk.green(`expires in ${warn.daysLeft} days`);
|
|
25
|
+
const keyLabel = chalk.yellow(`- ${warn.key.padEnd(15)}`);
|
|
26
|
+
console.log(` ${keyLabel} → ${severity} (${warn.date})`);
|
|
27
|
+
}
|
|
28
|
+
console.log();
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=printExpireWarnings.js.map
|
|
@@ -0,0 +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,CACjC,QAAyB,EACzB,MAAe;IAEf,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;IACT,CAAC;IAED,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,GAAG,CAAC;YACf,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1D,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC;gBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAClB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;oBAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;wBAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;wBAClD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC,CAAC;QAE5D,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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Print the health score of the project based on scan results.
|
|
3
|
+
* @param score - The health score (0-100).
|
|
4
|
+
* @param json - Whether to output in JSON format.
|
|
5
|
+
* @returns Whether the health score was printed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function printHealthScore(score: number, json?: boolean): boolean;
|
|
8
|
+
//# sourceMappingURL=printHealthScore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printHealthScore.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,OAAe,GACpB,OAAO,CAuBT"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Print the health score of the project based on scan results.
|
|
4
|
+
* @param score - The health score (0-100).
|
|
5
|
+
* @param json - Whether to output in JSON format.
|
|
6
|
+
* @returns Whether the health score was printed.
|
|
7
|
+
*/
|
|
8
|
+
export function printHealthScore(score, json = false) {
|
|
9
|
+
let color = chalk.green;
|
|
10
|
+
let label = 'Excellent health';
|
|
11
|
+
if (json)
|
|
12
|
+
return false;
|
|
13
|
+
if (score < 90) {
|
|
14
|
+
color = chalk.yellow;
|
|
15
|
+
label = 'Good, but can improve';
|
|
16
|
+
}
|
|
17
|
+
if (score < 70) {
|
|
18
|
+
color = chalk.redBright;
|
|
19
|
+
label = 'Needs attention';
|
|
20
|
+
}
|
|
21
|
+
if (score < 40) {
|
|
22
|
+
color = chalk.red;
|
|
23
|
+
label = 'Poor health – critical issues detected';
|
|
24
|
+
}
|
|
25
|
+
console.log('💚 Project Health Score:', color(`${score}/100`));
|
|
26
|
+
console.log(` ${label}`);
|
|
27
|
+
console.log('');
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=printHealthScore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printHealthScore.js","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,OAAgB,KAAK;IAErB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,GAAG,kBAAkB,CAAC;IAE/B,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvB,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACrB,KAAK,GAAG,uBAAuB,CAAC;IAClC,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;QACxB,KAAK,GAAG,iBAAiB,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;QAClB,KAAK,GAAG,wCAAwC,CAAC;IACnD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,KAAK,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC;IAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InconsistentNamingWarning } from '../../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Prints warnings about inconsistent naming patterns in environment variables.
|
|
4
|
+
* @param warnings Array of inconsistent naming warnings
|
|
5
|
+
* @param isJson Whether to output in JSON format
|
|
6
|
+
* @returns void
|
|
7
|
+
*/
|
|
8
|
+
export declare function printInconsistentNamingWarning(warnings: InconsistentNamingWarning[], isJson: boolean): void;
|
|
9
|
+
//# sourceMappingURL=printInconsistentNamingWarning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printInconsistentNamingWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,yBAAyB,EAAE,EACrC,MAAM,EAAE,OAAO,QAkBhB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Prints warnings about inconsistent naming patterns in environment variables.
|
|
4
|
+
* @param warnings Array of inconsistent naming warnings
|
|
5
|
+
* @param isJson Whether to output in JSON format
|
|
6
|
+
* @returns void
|
|
7
|
+
*/
|
|
8
|
+
export function printInconsistentNamingWarning(warnings, isJson) {
|
|
9
|
+
if (isJson || warnings.length === 0) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
console.log(chalk.yellow('⚠️ Inconsistent naming found:'));
|
|
13
|
+
for (const warning of warnings) {
|
|
14
|
+
console.log(chalk.yellow(` You have both ${chalk.cyan(warning.key1)} and ${chalk.cyan(warning.key2)} (inconsistent naming)`));
|
|
15
|
+
console.log(chalk.gray(` ${warning.suggestion}`));
|
|
16
|
+
}
|
|
17
|
+
console.log();
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=printInconsistentNamingWarning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printInconsistentNamingWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAqC,EACrC,MAAe;IAEf,IAAI,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE5D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oBAAoB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CACrG,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { UppercaseWarning } from '../../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Print warnings for environment variable keys that are not uppercase.
|
|
4
|
+
*
|
|
5
|
+
* @param warnings - List of non-uppercase env keys
|
|
6
|
+
* @param comparedAgainst - The .env file name being checked
|
|
7
|
+
* @param json - Whether JSON output is enabled
|
|
8
|
+
*/
|
|
9
|
+
export declare function printUppercaseWarning(warnings: UppercaseWarning[], comparedAgainst: string, json: boolean): void;
|
|
10
|
+
//# sourceMappingURL=printUppercaseWarning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printUppercaseWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,OAAO,GACZ,IAAI,CAeN"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
/**
|
|
3
|
+
* Print warnings for environment variable keys that are not uppercase.
|
|
4
|
+
*
|
|
5
|
+
* @param warnings - List of non-uppercase env keys
|
|
6
|
+
* @param comparedAgainst - The .env file name being checked
|
|
7
|
+
* @param json - Whether JSON output is enabled
|
|
8
|
+
*/
|
|
9
|
+
export function printUppercaseWarning(warnings, comparedAgainst, json) {
|
|
10
|
+
if (json || warnings.length === 0)
|
|
11
|
+
return;
|
|
12
|
+
console.log(chalk.yellow(`⚠️ Variables not using uppercase naming (${comparedAgainst}):`));
|
|
13
|
+
warnings.forEach((w) => {
|
|
14
|
+
console.log(chalk.yellow(` - ${w.key}`));
|
|
15
|
+
console.log(chalk.yellow.dim(` Consider naming it: ${w.suggestion}`));
|
|
16
|
+
});
|
|
17
|
+
console.log();
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=printUppercaseWarning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"printUppercaseWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA4B,EAC5B,eAAuB,EACvB,IAAa;IAEb,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE1C,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,6CAA6C,eAAe,IAAI,CACjE,CACF,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
|
|
@@ -7,6 +7,9 @@ interface StrictModeContext {
|
|
|
7
7
|
hasGitignoreIssue: boolean;
|
|
8
8
|
frameworkWarnings: number;
|
|
9
9
|
logged: number;
|
|
10
|
+
uppercaseWarnings?: number;
|
|
11
|
+
expireWarnings?: number;
|
|
12
|
+
inconsistentNamingWarnings?: number;
|
|
10
13
|
}
|
|
11
14
|
/**
|
|
12
15
|
* Prints a strict-mode error if warnings exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printStrictModeError.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printStrictModeError.ts"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"printStrictModeError.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printStrictModeError.ts"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,OAAO,GACZ,OAAO,CA4BT"}
|
|
@@ -26,6 +26,12 @@ export function printStrictModeError(ctx, json) {
|
|
|
26
26
|
warnings.push('framework specific warnings');
|
|
27
27
|
if (ctx.logged > 0)
|
|
28
28
|
warnings.push('console logged environment variables');
|
|
29
|
+
if (ctx.uppercaseWarnings && ctx.uppercaseWarnings > 0)
|
|
30
|
+
warnings.push('uppercase environment variable keys');
|
|
31
|
+
if (ctx.expireWarnings && ctx.expireWarnings > 0)
|
|
32
|
+
warnings.push('expired environment variables');
|
|
33
|
+
if (ctx.inconsistentNamingWarnings && ctx.inconsistentNamingWarnings > 0)
|
|
34
|
+
warnings.push('inconsistent naming patterns');
|
|
29
35
|
if (warnings.length === 0)
|
|
30
36
|
return false;
|
|
31
37
|
console.log(chalk.red(`💥 Strict mode: Error on warnings → ${warnings.join(', ')}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printStrictModeError.js","sourceRoot":"","sources":["../../../../src/ui/shared/printStrictModeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"printStrictModeError.js","sourceRoot":"","sources":["../../../../src/ui/shared/printStrictModeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAgB1B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,GAAsB,EACtB,IAAa;IAEb,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACtD,IAAI,GAAG,CAAC,aAAa,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAClE,IAAI,GAAG,CAAC,YAAY,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACxD,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACrE,IAAI,GAAG,CAAC,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACpE,IAAI,GAAG,CAAC,iBAAiB,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAC5E,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC1E,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,GAAG,CAAC;QACpD,QAAQ,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,GAAG,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IACjD,IAAI,GAAG,CAAC,0BAA0B,IAAI,GAAG,CAAC,0BAA0B,GAAG,CAAC;QACtE,QAAQ,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAEhD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAExC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,uCAAuC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CACxE,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dotenv-diff",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.9",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Scan your codebase to find environment variables in use.",
|
|
6
6
|
"bin": {
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/",
|
|
20
20
|
"README.md",
|
|
21
|
+
"CHANGELOG.md",
|
|
21
22
|
"LICENSE"
|
|
22
23
|
],
|
|
23
24
|
"sideEffects": false,
|
|
@@ -63,8 +64,8 @@
|
|
|
63
64
|
},
|
|
64
65
|
"devDependencies": {
|
|
65
66
|
"@types/node": "^24.10.1",
|
|
66
|
-
"@typescript-eslint/eslint-plugin": "^8.
|
|
67
|
-
"@typescript-eslint/parser": "^8.
|
|
67
|
+
"@typescript-eslint/eslint-plugin": "^8.49.0",
|
|
68
|
+
"@typescript-eslint/parser": "^8.49.0",
|
|
68
69
|
"eslint": "^9.39.1",
|
|
69
70
|
"prettier": "^3.7.4",
|
|
70
71
|
"typescript": "^5.9.3",
|