dotenv-diff 2.6.1 → 2.6.3
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 +19 -0
- package/README.md +10 -10
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js.map +1 -1
- package/dist/src/commands/compare.d.ts.map +1 -1
- package/dist/src/commands/compare.js +5 -1
- package/dist/src/commands/compare.js.map +1 -1
- package/dist/src/commands/prompts/promptEnsureFiles.d.ts +9 -0
- package/dist/src/commands/prompts/promptEnsureFiles.d.ts.map +1 -1
- package/dist/src/commands/prompts/promptEnsureFiles.js +3 -3
- package/dist/src/commands/prompts/promptEnsureFiles.js.map +1 -1
- package/dist/src/commands/prompts/promptNoEnvScenario.js +1 -1
- package/dist/src/commands/prompts/promptNoEnvScenario.js.map +1 -1
- package/dist/src/commands/prompts/prompts.d.ts.map +1 -0
- package/dist/src/commands/prompts/prompts.js.map +1 -0
- package/dist/src/commands/scanUsage.js +4 -4
- package/dist/src/commands/scanUsage.js.map +1 -1
- package/dist/src/config/types.d.ts +85 -28
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/core/compare/parseAndFilterEnv.d.ts +4 -0
- package/dist/src/core/compare/parseAndFilterEnv.d.ts.map +1 -1
- package/dist/src/core/compare/parseAndFilterEnv.js.map +1 -1
- package/dist/src/core/compare/updateTotals.d.ts +5 -0
- package/dist/src/core/compare/updateTotals.d.ts.map +1 -1
- package/dist/src/core/compare/updateTotals.js.map +1 -1
- package/dist/src/core/fixEnv.d.ts +1 -11
- package/dist/src/core/fixEnv.d.ts.map +1 -1
- package/dist/src/core/fixEnv.js.map +1 -1
- package/dist/src/core/patterns.d.ts +7 -10
- package/dist/src/core/patterns.d.ts.map +1 -1
- package/dist/src/core/patterns.js +58 -4
- package/dist/src/core/patterns.js.map +1 -1
- package/dist/src/core/scan/scanFile.d.ts.map +1 -1
- package/dist/src/core/scan/scanFile.js +39 -35
- 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/printScanResult.d.ts +1 -15
- package/dist/src/services/printScanResult.d.ts.map +1 -1
- package/dist/src/services/printScanResult.js +27 -19
- package/dist/src/services/printScanResult.js.map +1 -1
- package/dist/src/services/processComparisonFile.d.ts +2 -5
- package/dist/src/services/processComparisonFile.d.ts.map +1 -1
- package/dist/src/services/processComparisonFile.js +13 -17
- package/dist/src/services/processComparisonFile.js.map +1 -1
- package/dist/src/ui/scan/printConsolelogWarning.d.ts +1 -2
- package/dist/src/ui/scan/printConsolelogWarning.d.ts.map +1 -1
- package/dist/src/ui/scan/printConsolelogWarning.js +1 -4
- package/dist/src/ui/scan/printConsolelogWarning.js.map +1 -1
- package/dist/src/ui/scan/printExampleWarnings.d.ts +1 -2
- package/dist/src/ui/scan/printExampleWarnings.d.ts.map +1 -1
- package/dist/src/ui/scan/printExampleWarnings.js +1 -6
- package/dist/src/ui/scan/printExampleWarnings.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.d.ts +1 -2
- package/dist/src/ui/scan/printFrameworkWarnings.d.ts.map +1 -1
- package/dist/src/ui/scan/printFrameworkWarnings.js +2 -7
- package/dist/src/ui/scan/printFrameworkWarnings.js.map +1 -1
- package/dist/src/ui/scan/printHealthScore.d.ts.map +1 -1
- package/dist/src/ui/scan/printHealthScore.js +8 -4
- package/dist/src/ui/scan/printHealthScore.js.map +1 -1
- package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts +1 -2
- package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts.map +1 -1
- package/dist/src/ui/scan/printInconsistentNamingWarning.js +2 -3
- package/dist/src/ui/scan/printInconsistentNamingWarning.js.map +1 -1
- package/dist/src/ui/scan/printMissing.d.ts +1 -3
- package/dist/src/ui/scan/printMissing.d.ts.map +1 -1
- package/dist/src/ui/scan/printMissing.js +1 -5
- package/dist/src/ui/scan/printMissing.js.map +1 -1
- package/dist/src/ui/scan/printSecrets.d.ts +1 -2
- package/dist/src/ui/scan/printSecrets.d.ts.map +1 -1
- package/dist/src/ui/scan/printSecrets.js +1 -4
- package/dist/src/ui/scan/printSecrets.js.map +1 -1
- package/dist/src/ui/scan/printStats.d.ts +2 -17
- package/dist/src/ui/scan/printStats.d.ts.map +1 -1
- package/dist/src/ui/scan/printStats.js +2 -2
- package/dist/src/ui/scan/printStats.js.map +1 -1
- package/dist/src/ui/scan/printUnused.d.ts +1 -2
- package/dist/src/ui/scan/printUnused.d.ts.map +1 -1
- package/dist/src/ui/scan/printUnused.js +1 -4
- package/dist/src/ui/scan/printUnused.js.map +1 -1
- package/dist/src/ui/scan/printUppercaseWarning.d.ts +1 -2
- package/dist/src/ui/scan/printUppercaseWarning.d.ts.map +1 -1
- package/dist/src/ui/scan/printUppercaseWarning.js +2 -3
- package/dist/src/ui/scan/printUppercaseWarning.js.map +1 -1
- package/dist/src/ui/scan/scanJsonOutput.d.ts +2 -8
- package/dist/src/ui/scan/scanJsonOutput.d.ts.map +1 -1
- package/dist/src/ui/scan/scanJsonOutput.js.map +1 -1
- package/dist/src/ui/shared/printAutoFix.d.ts +2 -13
- package/dist/src/ui/shared/printAutoFix.d.ts.map +1 -1
- package/dist/src/ui/shared/printAutoFix.js +3 -5
- package/dist/src/ui/shared/printAutoFix.js.map +1 -1
- package/docs/assets/demo1.gif +0 -0
- package/docs/assets/success1.png +0 -0
- package/docs/configuration_and_flags.md +726 -0
- package/docs/expiration_warnings.md +111 -0
- package/docs/frameworks/index.md +24 -0
- package/docs/frameworks/nextjs_warnings.md +56 -0
- package/docs/frameworks/sveltekit_warnings.md +130 -0
- package/docs/git_hooks_ci.md +51 -0
- package/docs/ignore_comments.md +82 -0
- package/docs/index.md +87 -0
- package/docs/monorepo_support.md +63 -0
- package/package.json +11 -9
- package/dist/src/ui/prompts.d.ts.map +0 -1
- package/dist/src/ui/prompts.js.map +0 -1
- /package/dist/src/{ui → commands/prompts}/prompts.d.ts +0 -0
- /package/dist/src/{ui → commands/prompts}/prompts.js +0 -0
|
@@ -3,10 +3,15 @@ import type { CompareJsonEntry, Filtered } from '../../config/types.js';
|
|
|
3
3
|
* Totals of issues found during comparison --compare operation
|
|
4
4
|
*/
|
|
5
5
|
export interface Totals {
|
|
6
|
+
/** Number of missing keys */
|
|
6
7
|
missing: number;
|
|
8
|
+
/** Number of extra keys */
|
|
7
9
|
extra: number;
|
|
10
|
+
/** Number of empty keys */
|
|
8
11
|
empty: number;
|
|
12
|
+
/** Number of duplicate keys */
|
|
9
13
|
duplicate: number;
|
|
14
|
+
/** Number of gitignore issues */
|
|
10
15
|
gitignore: number;
|
|
11
16
|
}
|
|
12
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateTotals.d.ts","sourceRoot":"","sources":["../../../../src/core/compare/updateTotals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,OAAO,CA6BT"}
|
|
1
|
+
{"version":3,"file":"updateTotals.d.ts","sourceRoot":"","sources":["../../../../src/core/compare/updateTotals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAExE;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,gBAAgB,GACtB,OAAO,CA6BT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateTotals.js","sourceRoot":"","sources":["../../../../src/core/compare/updateTotals.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"updateTotals.js","sourceRoot":"","sources":["../../../../src/core/compare/updateTotals.ts"],"names":[],"mappings":"AAkBA;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAkB,EAClB,MAAc,EACd,KAAuB;IAEvB,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAC1C,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,CAAC,SAAS;YACd,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC;IACjE,CAAC;IAED,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { FixResult } from '../config/types.js';
|
|
1
2
|
/**
|
|
2
3
|
* Options for applying fixes to environment files
|
|
3
4
|
*/
|
|
@@ -11,17 +12,6 @@ interface ApplyFixesOptions {
|
|
|
11
12
|
/** Whether to ensure .env is ignored in .gitignore (if in a git repo) */
|
|
12
13
|
ensureGitignore?: boolean;
|
|
13
14
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Result of applying fixes to environment files
|
|
16
|
-
*/
|
|
17
|
-
interface FixResult {
|
|
18
|
-
/** List of removed duplicate keys */
|
|
19
|
-
removedDuplicates: string[];
|
|
20
|
-
/** List of added environment variables */
|
|
21
|
-
addedEnv: string[];
|
|
22
|
-
/** Whether the .gitignore file was updated */
|
|
23
|
-
gitignoreUpdated: boolean;
|
|
24
|
-
}
|
|
25
15
|
/**
|
|
26
16
|
* Applies fixes to the .env file based on the detected issues.
|
|
27
17
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;GAEG;AACH,UAAU,iBAAiB;IACzB,mCAAmC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,iFAAiF;IACjF,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CA+DA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/core/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,UAStC,CAAC;AAGF,eAAO,MAAM,wBAAwB,UAiBpC,CAAC"}
|
|
@@ -3,15 +3,69 @@
|
|
|
3
3
|
* across different runtimes and frameworks.
|
|
4
4
|
*/
|
|
5
5
|
export const ENV_PATTERNS = [
|
|
6
|
-
|
|
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
|
+
*/
|
|
7
15
|
{
|
|
8
16
|
name: 'process.env',
|
|
9
|
-
regex: /process\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
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
|
+
},
|
|
10
24
|
},
|
|
11
|
-
|
|
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
|
+
*/
|
|
12
62
|
{
|
|
13
63
|
name: 'import.meta.env',
|
|
14
|
-
regex: /import\.meta\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
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
|
+
},
|
|
15
69
|
},
|
|
16
70
|
// SvelteKit static named imports
|
|
17
71
|
// import { SECRET } from '$env/static/private';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/core/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;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"}
|
|
@@ -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,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,QAAgB,EAChB,OAAe,EACf,IAAiB;IAEjB,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,uDAAuD;IACvD,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtE,6CAA6C;IAC7C,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,MAAM,WAAW,GACf,8FAA8F,CAAC;IAEjG,IAAI,WAAmC,CAAC;IAExC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;
|
|
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":"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,CAAC,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,IAAI,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAClD,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC;IACpC,IAAI,cAAc,GAAG,oBAAoB,CAAC;IAC1C,IAAI,uBAAuB,GAAG,KAAK,CAAC;IAEpC,iGAAiG;IACjG,IAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5B,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,UAAU,GAAG,eAAe,CAAC;QAE7B,gGAAgG;QAChG,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;YACpD,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,0DAA0D;QAC1D,MAAM,MAAM,GACV,eAAe,KAAK,gBAAgB;YAClC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,MAAM;YAC7B,CAAC,CAAC,GAAG,oBAAoB,GAAG,MAAM,EAAE;YACpC,CAAC,CAAC,oBAAoB,CAAC;QACzB,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;YACvD,cAAc,GAAG,gBAAgB,CAAC;QACpC,CAAC;IACH,CAAC;IAED,iGAAiG;IACjG,IAAI,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvD,cAAc,GAAG,mBAAmB,CAAC;QAErC,IAAI,mBAAmB,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,UAAU,GAAG,GAAG,gBAAgB,GAAG,MAAM,EAAE,CAAC;YAElD,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;gBACjD,UAAU,GAAG,UAAU,CAAC;gBACxB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBACpB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC5B,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,uEAAuE;gBACvE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,uBAAuB,GAAG,IAAI,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,2CAA2C;oBAC3C,UAAU,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4EAA4E;YAC5E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO;QACL,GAAG;QACH,QAAQ;QACR,UAAU;QACV,cAAc;QACd,OAAO;QACP,WAAW;QACX,uBAAuB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -1,17 +1,4 @@
|
|
|
1
|
-
import type { ScanUsageOptions, ScanResult, ExitResult } from '../config/types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Context for auto-fix operations
|
|
4
|
-
*/
|
|
5
|
-
interface FixContext {
|
|
6
|
-
/** Whether any fixes were applied */
|
|
7
|
-
fixApplied: boolean;
|
|
8
|
-
/** List of removed duplicate keys */
|
|
9
|
-
removedDuplicates: string[];
|
|
10
|
-
/** List of added environment variables */
|
|
11
|
-
addedEnv: string[];
|
|
12
|
-
/** Whether the .gitignore file was updated */
|
|
13
|
-
gitignoreUpdated: boolean;
|
|
14
|
-
}
|
|
1
|
+
import type { ScanUsageOptions, ScanResult, ExitResult, FixContext } from '../config/types.js';
|
|
15
2
|
/**
|
|
16
3
|
* Prints the scan result to the console.
|
|
17
4
|
* @param scanResult - The result of the scan.
|
|
@@ -20,5 +7,4 @@ interface FixContext {
|
|
|
20
7
|
* @returns An object indicating whether to exit with an error.
|
|
21
8
|
*/
|
|
22
9
|
export declare function printScanResult(scanResult: ScanResult, opts: ScanUsageOptions, comparedAgainst: string, fixContext?: FixContext): ExitResult;
|
|
23
|
-
export {};
|
|
24
10
|
//# sourceMappingURL=printScanResult.d.ts.map
|
|
@@ -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,EACX,MAAM,oBAAoB,CAAC;AAqB5B
|
|
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"}
|
|
@@ -32,32 +32,43 @@ export function printScanResult(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
32
32
|
const isJson = opts.json ?? false;
|
|
33
33
|
printHeader(comparedAgainst);
|
|
34
34
|
// Show stats if requested
|
|
35
|
-
|
|
35
|
+
if (opts.showStats ?? true) {
|
|
36
|
+
printStats(scanResult.stats, true);
|
|
37
|
+
}
|
|
36
38
|
// Missing variables (used in code but not in env file)
|
|
37
|
-
if (printMissing(scanResult.missing, scanResult.used, comparedAgainst
|
|
39
|
+
if (printMissing(scanResult.missing, scanResult.used, comparedAgainst)) {
|
|
38
40
|
exitWithError = true;
|
|
39
41
|
}
|
|
40
|
-
if (scanResult.frameworkWarnings
|
|
41
|
-
printFrameworkWarnings(scanResult.frameworkWarnings
|
|
42
|
+
if (scanResult.frameworkWarnings) {
|
|
43
|
+
printFrameworkWarnings(scanResult.frameworkWarnings);
|
|
44
|
+
}
|
|
45
|
+
if (scanResult.uppercaseWarnings) {
|
|
46
|
+
printUppercaseWarning(scanResult.uppercaseWarnings, comparedAgainst);
|
|
42
47
|
}
|
|
43
|
-
if (scanResult.
|
|
44
|
-
|
|
48
|
+
if (scanResult.inconsistentNamingWarnings) {
|
|
49
|
+
printInconsistentNamingWarning(scanResult.inconsistentNamingWarnings);
|
|
45
50
|
}
|
|
46
|
-
if (scanResult.
|
|
47
|
-
scanResult.
|
|
48
|
-
printInconsistentNamingWarning(scanResult.inconsistentNamingWarnings, isJson);
|
|
51
|
+
if (scanResult.exampleWarnings) {
|
|
52
|
+
printExampleWarnings(scanResult.exampleWarnings);
|
|
49
53
|
}
|
|
50
|
-
printExampleWarnings(scanResult.exampleWarnings ?? [], isJson);
|
|
51
54
|
// Unused
|
|
52
|
-
|
|
55
|
+
if (opts.showUnused ?? true) {
|
|
56
|
+
printUnused(scanResult.unused, comparedAgainst);
|
|
57
|
+
}
|
|
53
58
|
// Duplicates
|
|
54
59
|
printDuplicates(comparedAgainst || DEFAULT_ENV_FILE, 'example file', scanResult.duplicates?.env ?? [], scanResult.duplicates?.example ?? [], isJson);
|
|
55
60
|
// Print potential secrets found
|
|
56
|
-
|
|
61
|
+
if (opts.secrets) {
|
|
62
|
+
printSecrets(scanResult.secrets);
|
|
63
|
+
}
|
|
57
64
|
// Console log usage warning
|
|
58
|
-
|
|
65
|
+
if (scanResult.logged) {
|
|
66
|
+
printConsolelogWarning(scanResult.logged);
|
|
67
|
+
}
|
|
59
68
|
// Expiration warnings
|
|
60
|
-
|
|
69
|
+
if (scanResult.expireWarnings) {
|
|
70
|
+
printExpireWarnings(scanResult.expireWarnings);
|
|
71
|
+
}
|
|
61
72
|
// Check for high severity secrets - ALWAYS exit with error
|
|
62
73
|
const hasHighSeveritySecrets = (scanResult.secrets ?? []).some((s) => s.severity === 'high');
|
|
63
74
|
if (hasHighSeveritySecrets) {
|
|
@@ -80,7 +91,7 @@ export function printScanResult(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
80
91
|
cwd: opts.cwd,
|
|
81
92
|
envFile: DEFAULT_ENV_FILE,
|
|
82
93
|
});
|
|
83
|
-
if (gitignoreIssue
|
|
94
|
+
if (gitignoreIssue) {
|
|
84
95
|
printGitignoreWarning({
|
|
85
96
|
envFile: DEFAULT_ENV_FILE,
|
|
86
97
|
reason: gitignoreIssue.reason,
|
|
@@ -105,10 +116,7 @@ export function printScanResult(scanResult, opts, comparedAgainst, fixContext) {
|
|
|
105
116
|
exitWithError = true;
|
|
106
117
|
}
|
|
107
118
|
if (opts.fix && fixContext) {
|
|
108
|
-
printAutoFix(fixContext
|
|
109
|
-
removedDuplicates: fixContext.removedDuplicates,
|
|
110
|
-
addedEnv: fixContext.addedEnv,
|
|
111
|
-
}, comparedAgainst || DEFAULT_ENV_FILE, isJson, fixContext.gitignoreUpdated);
|
|
119
|
+
printAutoFix(fixContext, comparedAgainst || DEFAULT_ENV_FILE, isJson);
|
|
112
120
|
}
|
|
113
121
|
// Health score
|
|
114
122
|
const score = computeHealthScore(scanResult);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"printScanResult.js","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"printScanResult.js","sourceRoot":"","sources":["../../../src/services/printScanResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ScanUsageOptions, ScanResult, UppercaseWarning, Duplicate, ComparisonFile, ExpireWarning, InconsistentNamingWarning } from '../config/types.js';
|
|
1
|
+
import type { ScanUsageOptions, ScanResult, UppercaseWarning, Duplicate, ComparisonFile, ExpireWarning, InconsistentNamingWarning, FixContext } from '../config/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Result of processing comparison file
|
|
4
4
|
*/
|
|
@@ -9,10 +9,7 @@ interface ProcessComparisonResult {
|
|
|
9
9
|
duplicatesFound: boolean;
|
|
10
10
|
dupsEnv: Duplicate[];
|
|
11
11
|
dupsEx: Duplicate[];
|
|
12
|
-
|
|
13
|
-
removedDuplicates: string[];
|
|
14
|
-
addedEnv: string[];
|
|
15
|
-
gitignoreUpdated: boolean;
|
|
12
|
+
fix: FixContext;
|
|
16
13
|
exampleFull?: Record<string, string> | undefined;
|
|
17
14
|
uppercaseWarnings?: UppercaseWarning[];
|
|
18
15
|
expireWarnings?: ExpireWarning[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/services/processComparisonFile.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEV,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,aAAa,EACb,yBAAyB,
|
|
1
|
+
{"version":3,"file":"processComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/services/processComparisonFile.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEV,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,aAAa,EACb,yBAAyB,EACzB,UAAU,EACX,MAAM,oBAAoB,CAAC;AAE5B;;GAEG;AACH,UAAU,uBAAuB;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,GAAG,EAAE,UAAU,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,0BAA0B,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACzD,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;CAClD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,cAAc,EAC3B,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,CA2IzB"}
|
|
@@ -21,14 +21,16 @@ export function processComparisonFile(scanResult, compareFile, opts) {
|
|
|
21
21
|
let duplicatesFound = false;
|
|
22
22
|
let dupsEnv = [];
|
|
23
23
|
let dupsEx = [];
|
|
24
|
-
let fixApplied = false;
|
|
25
|
-
let removedDuplicates = [];
|
|
26
|
-
let addedEnv = [];
|
|
27
|
-
let gitignoreUpdated = false;
|
|
28
24
|
let exampleFull = undefined;
|
|
29
25
|
let uppercaseWarnings = [];
|
|
30
26
|
let expireWarnings = [];
|
|
31
27
|
let inconsistentNamingWarnings = [];
|
|
28
|
+
const fix = {
|
|
29
|
+
fixApplied: false,
|
|
30
|
+
removedDuplicates: [],
|
|
31
|
+
addedEnv: [],
|
|
32
|
+
gitignoreUpdated: false,
|
|
33
|
+
};
|
|
32
34
|
try {
|
|
33
35
|
// Load .env.example (if exists)
|
|
34
36
|
if (opts.examplePath) {
|
|
@@ -79,10 +81,10 @@ export function processComparisonFile(scanResult, compareFile, opts) {
|
|
|
79
81
|
});
|
|
80
82
|
if (changed) {
|
|
81
83
|
// Update state based on what was actually fixed
|
|
82
|
-
fixApplied = true;
|
|
83
|
-
removedDuplicates = result.removedDuplicates;
|
|
84
|
-
addedEnv = result.addedEnv;
|
|
85
|
-
gitignoreUpdated = result.gitignoreUpdated;
|
|
84
|
+
fix.fixApplied = true;
|
|
85
|
+
fix.removedDuplicates = result.removedDuplicates;
|
|
86
|
+
fix.addedEnv = result.addedEnv;
|
|
87
|
+
fix.gitignoreUpdated = result.gitignoreUpdated;
|
|
86
88
|
// clear the issues that were fixed
|
|
87
89
|
scanResult.missing = [];
|
|
88
90
|
dupsEnv = [];
|
|
@@ -91,7 +93,7 @@ export function processComparisonFile(scanResult, compareFile, opts) {
|
|
|
91
93
|
}
|
|
92
94
|
}
|
|
93
95
|
// Keep duplicates for output if not fixed
|
|
94
|
-
if (duplicatesFound && (!opts.fix || !fixApplied)) {
|
|
96
|
+
if (duplicatesFound && (!opts.fix || !fix.fixApplied)) {
|
|
95
97
|
if (!scanResult.duplicates)
|
|
96
98
|
scanResult.duplicates = {};
|
|
97
99
|
if (dupsEnv.length > 0)
|
|
@@ -109,10 +111,7 @@ export function processComparisonFile(scanResult, compareFile, opts) {
|
|
|
109
111
|
duplicatesFound,
|
|
110
112
|
dupsEnv,
|
|
111
113
|
dupsEx,
|
|
112
|
-
|
|
113
|
-
removedDuplicates,
|
|
114
|
-
addedEnv,
|
|
115
|
-
gitignoreUpdated,
|
|
114
|
+
fix,
|
|
116
115
|
exampleFull,
|
|
117
116
|
uppercaseWarnings,
|
|
118
117
|
expireWarnings,
|
|
@@ -130,10 +129,7 @@ export function processComparisonFile(scanResult, compareFile, opts) {
|
|
|
130
129
|
duplicatesFound,
|
|
131
130
|
dupsEnv,
|
|
132
131
|
dupsEx,
|
|
133
|
-
|
|
134
|
-
removedDuplicates,
|
|
135
|
-
addedEnv,
|
|
136
|
-
gitignoreUpdated,
|
|
132
|
+
fix,
|
|
137
133
|
exampleFull,
|
|
138
134
|
uppercaseWarnings,
|
|
139
135
|
expireWarnings,
|