dotenv-diff 2.5.0 → 2.5.2
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 +341 -536
- package/dist/bin/dotenv-diff.js +0 -0
- package/package.json +5 -1
- package/dist/cli.d.ts +0 -9
- package/dist/cli.js +0 -294
- package/dist/diffEnv.d.ts +0 -5
- package/dist/diffEnv.js +0 -7
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/lib/checkGitignore.d.ts +0 -23
- package/dist/lib/checkGitignore.js +0 -73
- package/dist/lib/diffEnv.d.ts +0 -18
- package/dist/lib/diffEnv.js +0 -29
- package/dist/lib/parseEnv.d.ts +0 -10
- package/dist/lib/parseEnv.js +0 -25
- package/dist/parseEnv.d.ts +0 -1
- package/dist/parseEnv.js +0 -16
- package/dist/src/core/compareScan.d.ts +0 -10
- package/dist/src/core/compareScan.d.ts.map +0 -1
- package/dist/src/core/compareScan.js +0 -19
- package/dist/src/core/compareScan.js.map +0 -1
- package/dist/src/core/computeHealthScore.d.ts +0 -8
- package/dist/src/core/computeHealthScore.d.ts.map +0 -1
- package/dist/src/core/computeHealthScore.js +0 -35
- package/dist/src/core/computeHealthScore.js.map +0 -1
- package/dist/src/core/cspDetector.d.ts +0 -7
- package/dist/src/core/cspDetector.d.ts.map +0 -1
- package/dist/src/core/cspDetector.js +0 -38
- package/dist/src/core/cspDetector.js.map +0 -1
- package/dist/src/core/defaultExcludeKeys.d.ts +0 -7
- package/dist/src/core/defaultExcludeKeys.d.ts.map +0 -1
- package/dist/src/core/detectClientExposure.d.ts +0 -12
- package/dist/src/core/detectClientExposure.d.ts.map +0 -1
- package/dist/src/core/detectClientExposure.js +0 -62
- package/dist/src/core/detectClientExposure.js.map +0 -1
- package/dist/src/core/detectExpirations.d.ts +0 -14
- package/dist/src/core/detectExpirations.d.ts.map +0 -1
- package/dist/src/core/detectExpirations.js +0 -44
- package/dist/src/core/detectExpirations.js.map +0 -1
- package/dist/src/core/detectUppercaseKeys.d.ts +0 -9
- package/dist/src/core/detectUppercaseKeys.d.ts.map +0 -1
- package/dist/src/core/detectUppercaseKeys.js +0 -28
- package/dist/src/core/detectUppercaseKeys.js.map +0 -1
- package/dist/src/core/determineComparisonFile.d.ts +0 -13
- package/dist/src/core/determineComparisonFile.d.ts.map +0 -1
- package/dist/src/core/determineComparisonFile.js +0 -33
- package/dist/src/core/determineComparisonFile.js.map +0 -1
- package/dist/src/core/entropy.d.ts +0 -8
- package/dist/src/core/entropy.d.ts.map +0 -1
- package/dist/src/core/entropy.js +0 -23
- package/dist/src/core/entropy.js.map +0 -1
- package/dist/src/core/envDiscovery.d.ts +0 -19
- package/dist/src/core/envDiscovery.d.ts.map +0 -1
- package/dist/src/core/envDiscovery.js +0 -81
- package/dist/src/core/envDiscovery.js.map +0 -1
- package/dist/src/core/envPairing.d.ts +0 -8
- package/dist/src/core/envPairing.d.ts.map +0 -1
- package/dist/src/core/envPairing.js +0 -36
- package/dist/src/core/envPairing.js.map +0 -1
- package/dist/src/core/envValidator.d.ts +0 -9
- package/dist/src/core/envValidator.d.ts.map +0 -1
- package/dist/src/core/envValidator.js +0 -103
- package/dist/src/core/envValidator.js.map +0 -1
- package/dist/src/core/exampleSecretDetector.d.ts +0 -13
- package/dist/src/core/exampleSecretDetector.d.ts.map +0 -1
- package/dist/src/core/exampleSecretDetector.js +0 -61
- package/dist/src/core/exampleSecretDetector.js.map +0 -1
- package/dist/src/core/frameworkDetector.d.ts +0 -14
- package/dist/src/core/frameworkDetector.d.ts.map +0 -1
- package/dist/src/core/frameworkDetector.js +0 -40
- package/dist/src/core/frameworkDetector.js.map +0 -1
- package/dist/src/core/frameworkValidator.d.ts +0 -10
- package/dist/src/core/frameworkValidator.d.ts.map +0 -1
- package/dist/src/core/frameworkValidator.js +0 -21
- package/dist/src/core/frameworkValidator.js.map +0 -1
- package/dist/src/core/frameworks/angularRules.d.ts +0 -4
- package/dist/src/core/frameworks/angularRules.d.ts.map +0 -1
- package/dist/src/core/helpers/isAllOk.d.ts +0 -9
- package/dist/src/core/helpers/isAllOk.d.ts.map +0 -1
- package/dist/src/core/helpers/isAllOk.js +0 -16
- package/dist/src/core/helpers/isAllOk.js.map +0 -1
- package/dist/src/core/helpers/updateTotals.d.ts +0 -19
- package/dist/src/core/helpers/updateTotals.d.ts.map +0 -1
- package/dist/src/core/helpers/updateTotals.js +0 -37
- package/dist/src/core/helpers/updateTotals.js.map +0 -1
- package/dist/src/core/parseAndFilterEnv.d.ts +0 -20
- package/dist/src/core/parseAndFilterEnv.d.ts.map +0 -1
- package/dist/src/core/parseAndFilterEnv.js +0 -22
- package/dist/src/core/parseAndFilterEnv.js.map +0 -1
- package/dist/src/core/processComparisonFile.d.ts +0 -43
- package/dist/src/core/processComparisonFile.d.ts.map +0 -1
- package/dist/src/core/processComparisonFile.js +0 -170
- package/dist/src/core/processComparisonFile.js.map +0 -1
- package/dist/src/core/scan/scanJsonOutput.d.ts +0 -85
- package/dist/src/core/scan/scanJsonOutput.d.ts.map +0 -1
- package/dist/src/core/scan/scanJsonOutput.js +0 -97
- package/dist/src/core/scan/scanJsonOutput.js.map +0 -1
- package/dist/src/core/scan/secretDetectors.d.ts +0 -28
- package/dist/src/core/scan/secretDetectors.d.ts.map +0 -1
- package/dist/src/core/scan/secretDetectors.js +0 -272
- package/dist/src/core/scan/secretDetectors.js.map +0 -1
- package/dist/src/core/scanFile.d.ts +0 -10
- package/dist/src/core/scanFile.d.ts.map +0 -1
- package/dist/src/core/scanFile.js +0 -65
- package/dist/src/core/scanFile.js.map +0 -1
- package/dist/src/core/scanJsonOutput.d.ts +0 -85
- package/dist/src/core/scanJsonOutput.d.ts.map +0 -1
- package/dist/src/core/scanJsonOutput.js +0 -97
- package/dist/src/core/scanJsonOutput.js.map +0 -1
- package/dist/src/core/secretDetectors.d.ts +0 -28
- package/dist/src/core/secretDetectors.d.ts.map +0 -1
- package/dist/src/core/secretDetectors.js +0 -272
- package/dist/src/core/secretDetectors.js.map +0 -1
- package/dist/src/core/t3env/detectT3Env.d.ts +0 -12
- package/dist/src/core/t3env/detectT3Env.d.ts.map +0 -1
- package/dist/src/core/t3env/detectT3Env.js +0 -113
- package/dist/src/core/t3env/detectT3Env.js.map +0 -1
- package/dist/src/core/t3env/t3EnvRules.d.ts +0 -10
- package/dist/src/core/t3env/t3EnvRules.d.ts.map +0 -1
- package/dist/src/core/t3env/t3EnvRules.js +0 -61
- package/dist/src/core/t3env/t3EnvRules.js.map +0 -1
- package/dist/src/core/t3env/t3EnvValidator.d.ts +0 -9
- package/dist/src/core/t3env/t3EnvValidator.d.ts.map +0 -1
- package/dist/src/core/t3env/t3EnvValidator.js +0 -32
- package/dist/src/core/t3env/t3EnvValidator.js.map +0 -1
- package/dist/src/lib/diffEnv.d.ts +0 -19
- package/dist/src/lib/diffEnv.d.ts.map +0 -1
- package/dist/src/lib/diffEnv.js +0 -31
- package/dist/src/lib/diffEnv.js.map +0 -1
- package/dist/src/lib/parseEnv.d.ts +0 -11
- package/dist/src/lib/parseEnv.d.ts.map +0 -1
- package/dist/src/lib/parseEnv.js +0 -26
- package/dist/src/lib/parseEnv.js.map +0 -1
- package/dist/src/services/codeBaseScanner.d.ts +0 -8
- package/dist/src/services/codeBaseScanner.d.ts.map +0 -1
- package/dist/src/services/codeBaseScanner.js +0 -110
- package/dist/src/services/codeBaseScanner.js.map +0 -1
- package/dist/src/services/duplicates.d.ts +0 -12
- package/dist/src/services/duplicates.d.ts.map +0 -1
- package/dist/src/services/duplicates.js +0 -36
- package/dist/src/services/duplicates.js.map +0 -1
- package/dist/src/services/ensureFilesOrPrompt.d.ts +0 -22
- package/dist/src/services/ensureFilesOrPrompt.d.ts.map +0 -1
- package/dist/src/services/ensureFilesOrPrompt.js +0 -76
- package/dist/src/services/ensureFilesOrPrompt.js.map +0 -1
- package/dist/src/services/scanOutputToConsole.d.ts +0 -17
- package/dist/src/services/scanOutputToConsole.d.ts.map +0 -1
- package/dist/src/services/scanOutputToConsole.js +0 -127
- package/dist/src/services/scanOutputToConsole.js.map +0 -1
- package/dist/src/ui/compare/printAutoFix.d.ts +0 -16
- package/dist/src/ui/compare/printAutoFix.d.ts.map +0 -1
- package/dist/src/ui/compare/printAutoFix.js +0 -34
- package/dist/src/ui/compare/printAutoFix.js.map +0 -1
- package/dist/src/ui/compare/printAutoFixApplied.d.ts +0 -7
- package/dist/src/ui/compare/printAutoFixApplied.d.ts.map +0 -1
- package/dist/src/ui/compare/printAutoFixApplied.js +0 -22
- package/dist/src/ui/compare/printAutoFixApplied.js.map +0 -1
- package/dist/src/ui/compare/printDuplicates.d.ts +0 -17
- package/dist/src/ui/compare/printDuplicates.d.ts.map +0 -1
- package/dist/src/ui/compare/printDuplicates.js +0 -25
- package/dist/src/ui/compare/printDuplicates.js.map +0 -1
- package/dist/src/ui/compare/printFixTips.d.ts +0 -11
- package/dist/src/ui/compare/printFixTips.d.ts.map +0 -1
- package/dist/src/ui/compare/printFixTips.js +0 -46
- package/dist/src/ui/compare/printFixTips.js.map +0 -1
- package/dist/src/ui/compare/printSuccess.d.ts +0 -11
- package/dist/src/ui/compare/printSuccess.d.ts.map +0 -1
- package/dist/src/ui/compare/printSuccess.js +0 -27
- package/dist/src/ui/compare/printSuccess.js.map +0 -1
- package/dist/src/ui/scan/printCspWarning.d.ts +0 -9
- package/dist/src/ui/scan/printCspWarning.d.ts.map +0 -1
- package/dist/src/ui/scan/printCspWarning.js +0 -20
- package/dist/src/ui/scan/printCspWarning.js.map +0 -1
- package/dist/src/ui/scan/printEnvWarnings.d.ts +0 -8
- package/dist/src/ui/scan/printEnvWarnings.d.ts.map +0 -1
- package/dist/src/ui/scan/printEnvWarnings.js +0 -20
- package/dist/src/ui/scan/printEnvWarnings.js.map +0 -1
- package/dist/src/ui/scan/printExposedVars.d.ts +0 -8
- package/dist/src/ui/scan/printExposedVars.d.ts.map +0 -1
- package/dist/src/ui/scan/printExposedVars.js +0 -24
- package/dist/src/ui/scan/printExposedVars.js.map +0 -1
- package/dist/src/ui/scan/printT3EnvWarnings.d.ts +0 -8
- package/dist/src/ui/scan/printT3EnvWarnings.d.ts.map +0 -1
- package/dist/src/ui/scan/printT3EnvWarnings.js +0 -20
- package/dist/src/ui/scan/printT3EnvWarnings.js.map +0 -1
- package/dist/src/ui/scan/printUniqueVariables.d.ts +0 -7
- package/dist/src/ui/scan/printUniqueVariables.d.ts.map +0 -1
- package/dist/src/ui/scan/printUniqueVariables.js +0 -14
- package/dist/src/ui/scan/printUniqueVariables.js.map +0 -1
- package/dist/src/ui/scan/printVariables.d.ts +0 -10
- package/dist/src/ui/scan/printVariables.d.ts.map +0 -1
- package/dist/src/ui/scan/printVariables.js +0 -37
- package/dist/src/ui/scan/printVariables.js.map +0 -1
- package/dist/src/ui/shared/printProgress.d.ts +0 -24
- package/dist/src/ui/shared/printProgress.d.ts.map +0 -1
- package/dist/src/ui/shared/printProgress.js +0 -43
- package/dist/src/ui/shared/printProgress.js.map +0 -1
- package/dist/types/scanUsage.d.ts +0 -43
- package/dist/types/scanUsage.d.ts.map +0 -1
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
export function validateEnvRules(usages) {
|
|
2
|
-
const warnings = [];
|
|
3
|
-
for (const u of usages) {
|
|
4
|
-
// import.meta.env needs to start with VITE_
|
|
5
|
-
if (u.pattern === 'import.meta.env') {
|
|
6
|
-
if (!u.variable.startsWith('VITE_')) {
|
|
7
|
-
warnings.push({
|
|
8
|
-
variable: u.variable,
|
|
9
|
-
reason: `Variables accessed through import.meta.env must start with "VITE_"`,
|
|
10
|
-
file: u.file,
|
|
11
|
-
line: u.line,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
continue;
|
|
15
|
-
}
|
|
16
|
-
// process.env cannot start with VITE_
|
|
17
|
-
if (u.pattern === 'process.env') {
|
|
18
|
-
if (u.variable.startsWith('VITE_')) {
|
|
19
|
-
warnings.push({
|
|
20
|
-
variable: u.variable,
|
|
21
|
-
reason: `Variables accessed through process.env cannot start with "VITE_"`,
|
|
22
|
-
file: u.file,
|
|
23
|
-
line: u.line,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
// Check for .svelte files here (before continue)
|
|
27
|
-
if (u.file.endsWith('.svelte')) {
|
|
28
|
-
warnings.push({
|
|
29
|
-
variable: u.variable,
|
|
30
|
-
reason: `Avoid using process.env inside Svelte files — use $env/static/private or $env/static/public`,
|
|
31
|
-
file: u.file,
|
|
32
|
-
line: u.line,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
// $env/static/private/* - ALL checks together
|
|
38
|
-
if (u.pattern === 'sveltekit' &&
|
|
39
|
-
u.context.includes('$env/static/private')) {
|
|
40
|
-
// Check 1: VITE_ prefix
|
|
41
|
-
if (u.variable.startsWith('VITE_')) {
|
|
42
|
-
warnings.push({
|
|
43
|
-
variable: u.variable,
|
|
44
|
-
reason: `$env/static/private variables must not start with "VITE_" (private server env)`,
|
|
45
|
-
file: u.file,
|
|
46
|
-
line: u.line,
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
// Check 2: Usage in .svelte files
|
|
50
|
-
if (u.file.match(/\.svelte$/)) {
|
|
51
|
-
warnings.push({
|
|
52
|
-
variable: u.variable,
|
|
53
|
-
reason: `Private environment variables cannot be used in Svelte components (.svelte files)`,
|
|
54
|
-
file: u.file,
|
|
55
|
-
line: u.line,
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
// Check 3: Usage in +page.ts or +layout.ts
|
|
59
|
-
if (u.file.match(/\+page\.ts$|\+layout\.ts$/)) {
|
|
60
|
-
warnings.push({
|
|
61
|
-
variable: u.variable,
|
|
62
|
-
reason: `Private env vars should only be used in +page.server.ts or +layout.server.ts`,
|
|
63
|
-
file: u.file,
|
|
64
|
-
line: u.line,
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
// Check 4: PUBLIC_ prefix in private imports
|
|
68
|
-
if (u.variable.startsWith('PUBLIC_')) {
|
|
69
|
-
warnings.push({
|
|
70
|
-
variable: u.variable,
|
|
71
|
-
reason: `Variables starting with PUBLIC_ may never be used in private env imports`,
|
|
72
|
-
file: u.file,
|
|
73
|
-
line: u.line,
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
// $env/static/public/*
|
|
79
|
-
if (u.pattern === 'sveltekit' && u.context.includes('$env/static/public')) {
|
|
80
|
-
if (u.variable.startsWith('VITE_')) {
|
|
81
|
-
warnings.push({
|
|
82
|
-
variable: u.variable,
|
|
83
|
-
reason: `$env/static/public variables must not start with "VITE_"`,
|
|
84
|
-
file: u.file,
|
|
85
|
-
line: u.line,
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
continue;
|
|
89
|
-
}
|
|
90
|
-
// $env/dynamic/public usage warning
|
|
91
|
-
if (u.pattern === 'sveltekit' &&
|
|
92
|
-
u.context.includes('$env/dynamic/public')) {
|
|
93
|
-
warnings.push({
|
|
94
|
-
variable: u.variable,
|
|
95
|
-
reason: `$env/dynamic/public is strongly discouraged — use $env/static/public instead for build-time safety`,
|
|
96
|
-
file: u.file,
|
|
97
|
-
line: u.line,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return warnings;
|
|
102
|
-
}
|
|
103
|
-
//# sourceMappingURL=envValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"envValidator.js","sourceRoot":"","sources":["../../../src/core/envValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface ExampleSecretWarning {
|
|
2
|
-
key: string;
|
|
3
|
-
value: string;
|
|
4
|
-
reason: string;
|
|
5
|
-
severity: 'high' | 'medium' | 'low';
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Detects potential secrets in a .env.example file.
|
|
9
|
-
* @param env - An object representing the `.env.example` file (key-value pairs).
|
|
10
|
-
* @returns An array of warnings about potential secrets.
|
|
11
|
-
*/
|
|
12
|
-
export declare function detectSecretsInExample(env: Record<string, string>): ExampleSecretWarning[];
|
|
13
|
-
//# sourceMappingURL=exampleSecretDetector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exampleSecretDetector.d.ts","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,oBAAoB,EAAE,CA4DxB"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { PROVIDER_PATTERNS, SUSPICIOUS_KEYS, } from './security/secretDetectors.js';
|
|
2
|
-
import { shannonEntropyNormalized } from './security/entropy.js';
|
|
3
|
-
/**
|
|
4
|
-
* Detects potential secrets in a .env.example file.
|
|
5
|
-
* @param env - An object representing the `.env.example` file (key-value pairs).
|
|
6
|
-
* @returns An array of warnings about potential secrets.
|
|
7
|
-
*/
|
|
8
|
-
export function detectSecretsInExample(env) {
|
|
9
|
-
const warnings = [];
|
|
10
|
-
for (const [key, rawValue] of Object.entries(env)) {
|
|
11
|
-
if (!rawValue)
|
|
12
|
-
continue;
|
|
13
|
-
const value = rawValue.trim();
|
|
14
|
-
// 1 — Skip placeholders
|
|
15
|
-
if (value === '' ||
|
|
16
|
-
value.toLowerCase() === 'example' ||
|
|
17
|
-
value.toLowerCase() === 'placeholder' ||
|
|
18
|
-
value.includes('your_') ||
|
|
19
|
-
value.includes('<') ||
|
|
20
|
-
value.includes('CHANGE_ME')) {
|
|
21
|
-
continue;
|
|
22
|
-
}
|
|
23
|
-
// 2 — Check provider patterns (AWS, Stripe, GitHub, JWT etc.)
|
|
24
|
-
for (const rx of PROVIDER_PATTERNS) {
|
|
25
|
-
if (rx.test(value)) {
|
|
26
|
-
warnings.push({
|
|
27
|
-
key,
|
|
28
|
-
value,
|
|
29
|
-
reason: 'Value in .env.example matches a known provider key pattern',
|
|
30
|
-
severity: 'high',
|
|
31
|
-
});
|
|
32
|
-
continue;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
// 3 — Check suspicious keywords on values
|
|
36
|
-
if (SUSPICIOUS_KEYS.test(key)) {
|
|
37
|
-
if (value.length >= 12) {
|
|
38
|
-
warnings.push({
|
|
39
|
-
key,
|
|
40
|
-
value,
|
|
41
|
-
reason: 'Suspicious key name combined with a non-placeholder value',
|
|
42
|
-
severity: 'medium',
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// 4 — Check entropy (high randomness → real secret)
|
|
47
|
-
if (value.length >= 24) {
|
|
48
|
-
const entropy = shannonEntropyNormalized(value);
|
|
49
|
-
if (entropy > 0.8) {
|
|
50
|
-
warnings.push({
|
|
51
|
-
key,
|
|
52
|
-
value,
|
|
53
|
-
reason: `High entropy value in .env.example (≈${entropy.toFixed(2)})`,
|
|
54
|
-
severity: entropy > 0.92 ? 'high' : 'medium',
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return warnings;
|
|
60
|
-
}
|
|
61
|
-
//# sourceMappingURL=exampleSecretDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AASjE;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAA2B;IAE3B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IACE,KAAK,KAAK,EAAE;YACZ,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;YACjC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa;YACrC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,4DAA4D;oBACpE,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,2DAA2D;oBACnE,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,wCAAwC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACrE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import type { DetectedFramework } from '../config/types.js';
|
|
2
|
-
interface FrameworkDetection {
|
|
3
|
-
framework: DetectedFramework;
|
|
4
|
-
version?: string;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Detects the framework being used in the project
|
|
8
|
-
* by checking package.json and file structure
|
|
9
|
-
* @param cwd The current working directory of the project
|
|
10
|
-
* @returns Detected framework and its version (if applicable)
|
|
11
|
-
*/
|
|
12
|
-
export declare function detectFramework(cwd: string): FrameworkDetection;
|
|
13
|
-
export {};
|
|
14
|
-
//# sourceMappingURL=frameworkDetector.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,UAAU,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAkC/D"}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
import path from 'path';
|
|
3
|
-
/**
|
|
4
|
-
* Detects the framework being used in the project
|
|
5
|
-
* by checking package.json and file structure
|
|
6
|
-
* @param cwd The current working directory of the project
|
|
7
|
-
* @returns Detected framework and its version (if applicable)
|
|
8
|
-
*/
|
|
9
|
-
export function detectFramework(cwd) {
|
|
10
|
-
try {
|
|
11
|
-
const packageJsonPath = path.join(cwd, 'package.json');
|
|
12
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
13
|
-
return { framework: 'unknown' };
|
|
14
|
-
}
|
|
15
|
-
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
16
|
-
const deps = {
|
|
17
|
-
...packageJson.dependencies,
|
|
18
|
-
...packageJson.devDependencies,
|
|
19
|
-
};
|
|
20
|
-
// Check for SvelteKit
|
|
21
|
-
if (deps['@sveltejs/kit']) {
|
|
22
|
-
return {
|
|
23
|
-
framework: 'sveltekit',
|
|
24
|
-
version: deps['@sveltejs/kit'],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
// Check for Next.js
|
|
28
|
-
if (deps['next']) {
|
|
29
|
-
return {
|
|
30
|
-
framework: 'nextjs',
|
|
31
|
-
version: deps['next'],
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
return { framework: 'unknown' };
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
return { framework: 'unknown' };
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
//# sourceMappingURL=frameworkDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,sBAAsB;QACtB,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { EnvUsage, FrameworkWarning } from '../config/types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Validates environment variable usages against framework-specific rules
|
|
4
|
-
* @param usages - Array of environment variable usages
|
|
5
|
-
* @param cwd - Current working directory to detect framework
|
|
6
|
-
* @param fileContentMap - Map of file paths to their content for detecting client components
|
|
7
|
-
* @returns Array of framework-specific warnings
|
|
8
|
-
*/
|
|
9
|
-
export declare function frameworkValidator(usages: EnvUsage[], cwd: string, fileContentMap?: Map<string, string>): FrameworkWarning[];
|
|
10
|
-
//# sourceMappingURL=frameworkValidator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIrE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,gBAAgB,EAAE,CAUpB"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { detectFramework } from './frameworkDetector.js';
|
|
2
|
-
import { applySvelteKitRules, applyNextJsRules } from './frameworks/index.js';
|
|
3
|
-
/**
|
|
4
|
-
* Validates environment variable usages against framework-specific rules
|
|
5
|
-
* @param usages - Array of environment variable usages
|
|
6
|
-
* @param cwd - Current working directory to detect framework
|
|
7
|
-
* @param fileContentMap - Map of file paths to their content for detecting client components
|
|
8
|
-
* @returns Array of framework-specific warnings
|
|
9
|
-
*/
|
|
10
|
-
export function frameworkValidator(usages, cwd, fileContentMap) {
|
|
11
|
-
const warnings = [];
|
|
12
|
-
const { framework } = detectFramework(cwd);
|
|
13
|
-
for (const u of usages) {
|
|
14
|
-
if (framework === 'sveltekit')
|
|
15
|
-
applySvelteKitRules(u, warnings);
|
|
16
|
-
if (framework === 'nextjs')
|
|
17
|
-
applyNextJsRules(u, warnings, fileContentMap);
|
|
18
|
-
}
|
|
19
|
-
return warnings;
|
|
20
|
-
}
|
|
21
|
-
//# sourceMappingURL=frameworkValidator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,GAAW,EACX,cAAoC;IAEpC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,SAAS,KAAK,WAAW;YAAE,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,QAAQ;YAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"angularRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/angularRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE,wBAAgB,iBAAiB,CAC/B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,QA0B7B"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Filtered } from '../../config/types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Checks if all filtered comparison results are okay (i.e., no issues found).
|
|
4
|
-
* This is used in compare.ts to determine if the comparison passed all checks.
|
|
5
|
-
* @param filtered - The filtered comparison results.
|
|
6
|
-
* @returns True if all checks pass, false otherwise.
|
|
7
|
-
*/
|
|
8
|
-
export declare function isAllOk(filtered: Filtered): boolean;
|
|
9
|
-
//# sourceMappingURL=isAllOk.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isAllOk.d.ts","sourceRoot":"","sources":["../../../../src/core/helpers/isAllOk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAUnD"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checks if all filtered comparison results are okay (i.e., no issues found).
|
|
3
|
-
* This is used in compare.ts to determine if the comparison passed all checks.
|
|
4
|
-
* @param filtered - The filtered comparison results.
|
|
5
|
-
* @returns True if all checks pass, false otherwise.
|
|
6
|
-
*/
|
|
7
|
-
export function isAllOk(filtered) {
|
|
8
|
-
return (filtered.missing.length === 0 &&
|
|
9
|
-
filtered.extra?.length === 0 &&
|
|
10
|
-
filtered.empty?.length === 0 &&
|
|
11
|
-
filtered.duplicatesEnv.length === 0 &&
|
|
12
|
-
filtered.duplicatesEx.length === 0 &&
|
|
13
|
-
filtered.mismatches?.length === 0 &&
|
|
14
|
-
!filtered.gitignoreIssue);
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=isAllOk.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"isAllOk.js","sourceRoot":"","sources":["../../../../src/core/helpers/isAllOk.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,QAAkB;IACxC,OAAO,CACL,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC;QAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC;QAC5B,QAAQ,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QACnC,QAAQ,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC;QACjC,CAAC,QAAQ,CAAC,cAAc,CACzB,CAAC;AACJ,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { CompareJsonEntry, Filtered } from '../../config/types.js';
|
|
2
|
-
export interface Totals {
|
|
3
|
-
missing: number;
|
|
4
|
-
extra: number;
|
|
5
|
-
empty: number;
|
|
6
|
-
mismatch: number;
|
|
7
|
-
duplicate: number;
|
|
8
|
-
gitignore: number;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Update totals and entry fields based on filtered issues.
|
|
12
|
-
* Returns true if any issue requires exitWithError.
|
|
13
|
-
* @param filtered filtered issues
|
|
14
|
-
* @param totals overall totals
|
|
15
|
-
* @param entry current entry to update
|
|
16
|
-
* @returns exitWithError
|
|
17
|
-
*/
|
|
18
|
-
export declare function updateTotals(filtered: Filtered, totals: Totals, entry: CompareJsonEntry): boolean;
|
|
19
|
-
//# sourceMappingURL=updateTotals.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateTotals.d.ts","sourceRoot":"","sources":["../../../../src/core/helpers/updateTotals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,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,CAkCT"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Update totals and entry fields based on filtered issues.
|
|
3
|
-
* Returns true if any issue requires exitWithError.
|
|
4
|
-
* @param filtered filtered issues
|
|
5
|
-
* @param totals overall totals
|
|
6
|
-
* @param entry current entry to update
|
|
7
|
-
* @returns exitWithError
|
|
8
|
-
*/
|
|
9
|
-
export function updateTotals(filtered, totals, entry) {
|
|
10
|
-
let exitWithError = false;
|
|
11
|
-
if (filtered.missing.length) {
|
|
12
|
-
entry.missing = filtered.missing;
|
|
13
|
-
totals.missing += filtered.missing.length;
|
|
14
|
-
exitWithError = true;
|
|
15
|
-
}
|
|
16
|
-
if (filtered.extra?.length) {
|
|
17
|
-
entry.extra = filtered.extra;
|
|
18
|
-
totals.extra += filtered.extra.length;
|
|
19
|
-
}
|
|
20
|
-
if (filtered.empty?.length) {
|
|
21
|
-
entry.empty = filtered.empty;
|
|
22
|
-
totals.empty += filtered.empty.length;
|
|
23
|
-
}
|
|
24
|
-
if (filtered.mismatches?.length) {
|
|
25
|
-
entry.valueMismatches = filtered.mismatches;
|
|
26
|
-
totals.mismatch += filtered.mismatches.length;
|
|
27
|
-
}
|
|
28
|
-
if (filtered.duplicatesEnv.length || filtered.duplicatesEx.length) {
|
|
29
|
-
totals.duplicate +=
|
|
30
|
-
filtered.duplicatesEnv.length + filtered.duplicatesEx.length;
|
|
31
|
-
}
|
|
32
|
-
if (filtered.gitignoreIssue) {
|
|
33
|
-
totals.gitignore += 1;
|
|
34
|
-
}
|
|
35
|
-
return exitWithError;
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=updateTotals.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"updateTotals.js","sourceRoot":"","sources":["../../../../src/core/helpers/updateTotals.ts"],"names":[],"mappings":"AAWA;;;;;;;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,UAAU,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC;QAC5C,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC;IAChD,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,20 +0,0 @@
|
|
|
1
|
-
import type { ComparisonOptions } from '../config/types.js';
|
|
2
|
-
/**
|
|
3
|
-
* Result of parsing and filtering environment files
|
|
4
|
-
*/
|
|
5
|
-
interface ParsedAndFilteredEnv {
|
|
6
|
-
current: Record<string, string>;
|
|
7
|
-
example: Record<string, string>;
|
|
8
|
-
currentKeys: string[];
|
|
9
|
-
exampleKeys: string[];
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Parses and filters the environment and example files.
|
|
13
|
-
* @param envPath The path to the .env file
|
|
14
|
-
* @param examplePath The path to the .env.example file
|
|
15
|
-
* @param opts Comparison options
|
|
16
|
-
* @returns An object containing the parsed and filtered environment variables
|
|
17
|
-
*/
|
|
18
|
-
export declare function parseAndFilterEnv(envPath: string, examplePath: string, opts: ComparisonOptions): ParsedAndFilteredEnv;
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=parseAndFilterEnv.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseAndFilterEnv.d.ts","sourceRoot":"","sources":["../../../src/core/parseAndFilterEnv.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;GAEG;AACH,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,iBAAiB,GACtB,oBAAoB,CA0BtB"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { parseEnvFile } from './parseEnv.js';
|
|
2
|
-
import { filterIgnoredKeys } from './filterIgnoredKeys.js';
|
|
3
|
-
/**
|
|
4
|
-
* Parses and filters the environment and example files.
|
|
5
|
-
* @param envPath The path to the .env file
|
|
6
|
-
* @param examplePath The path to the .env.example file
|
|
7
|
-
* @param opts Comparison options
|
|
8
|
-
* @returns An object containing the parsed and filtered environment variables
|
|
9
|
-
*/
|
|
10
|
-
export function parseAndFilterEnv(envPath, examplePath, opts) {
|
|
11
|
-
const currentFull = parseEnvFile(envPath);
|
|
12
|
-
const exampleFull = parseEnvFile(examplePath);
|
|
13
|
-
const currentKeys = filterIgnoredKeys(Object.keys(currentFull), opts.ignore, opts.ignoreRegex);
|
|
14
|
-
const exampleKeys = filterIgnoredKeys(Object.keys(exampleFull), opts.ignore, opts.ignoreRegex);
|
|
15
|
-
return {
|
|
16
|
-
current: Object.fromEntries(currentKeys.map((k) => [k, currentFull[k] ?? ''])),
|
|
17
|
-
example: Object.fromEntries(exampleKeys.map((k) => [k, exampleFull[k] ?? ''])),
|
|
18
|
-
currentKeys,
|
|
19
|
-
exampleKeys,
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=parseAndFilterEnv.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"parseAndFilterEnv.js","sourceRoot":"","sources":["../../../src/core/parseAndFilterEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAa3D;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,WAAmB,EACnB,IAAuB;IAEvB,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IAE9C,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;IAEF,MAAM,WAAW,GAAG,iBAAiB,CACnC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EACxB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,WAAW,CACjB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAClD;QACD,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAClD;QACD,WAAW;QACX,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import type { ScanUsageOptions, ScanResult, UppercaseWarning, Duplicate } from '../config/types.js';
|
|
2
|
-
interface ProcessComparisonResult {
|
|
3
|
-
scanResult: ScanResult;
|
|
4
|
-
envVariables: Record<string, string | undefined>;
|
|
5
|
-
comparedAgainst: string;
|
|
6
|
-
duplicatesFound: boolean;
|
|
7
|
-
dupsEnv: Duplicate[];
|
|
8
|
-
dupsEx: Duplicate[];
|
|
9
|
-
fixApplied: boolean;
|
|
10
|
-
removedDuplicates: string[];
|
|
11
|
-
addedEnv: string[];
|
|
12
|
-
addedExample: string[];
|
|
13
|
-
gitignoreUpdated: boolean;
|
|
14
|
-
exampleFull?: Record<string, string> | undefined;
|
|
15
|
-
uppercaseWarnings?: UppercaseWarning[];
|
|
16
|
-
expireWarnings?: Array<{
|
|
17
|
-
key: string;
|
|
18
|
-
date: string;
|
|
19
|
-
daysLeft: number;
|
|
20
|
-
}>;
|
|
21
|
-
inconsistentNamingWarnings?: Array<{
|
|
22
|
-
key1: string;
|
|
23
|
-
key2: string;
|
|
24
|
-
suggestion: string;
|
|
25
|
-
}>;
|
|
26
|
-
error?: {
|
|
27
|
-
message: string;
|
|
28
|
-
shouldExit: boolean;
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Process comparison file: parse env, check duplicates, check missing keys, apply fixes
|
|
33
|
-
* @param scanResult - Current scan result
|
|
34
|
-
* @param compareFile - File to compare against
|
|
35
|
-
* @param opts - Scan options
|
|
36
|
-
* @returns Processed comparison result
|
|
37
|
-
*/
|
|
38
|
-
export declare function processComparisonFile(scanResult: ScanResult, compareFile: {
|
|
39
|
-
path: string;
|
|
40
|
-
name: string;
|
|
41
|
-
}, opts: ScanUsageOptions): ProcessComparisonResult;
|
|
42
|
-
export {};
|
|
43
|
-
//# sourceMappingURL=processComparisonFile.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"processComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/core/processComparisonFile.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEV,gBAAgB,EAChB,SAAS,EACV,MAAM,oBAAoB,CAAC;AAE5B,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,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IACjD,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACxE,0BAA0B,CAAC,EAAE,KAAK,CAAC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,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;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAC3C,IAAI,EAAE,gBAAgB,GACrB,uBAAuB,CAsJzB"}
|