dotenv-diff 2.3.6 → 2.3.8
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/README.md +35 -0
- package/dist/src/cli/program.d.ts.map +1 -1
- package/dist/src/cli/program.js +6 -1
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/cli/run.d.ts +1 -0
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +22 -0
- 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 +3 -1
- package/dist/src/commands/compare.js.map +1 -1
- package/dist/src/commands/init.d.ts +2 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +11 -6
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/scanUsage.d.ts +14 -9
- package/dist/src/commands/scanUsage.d.ts.map +1 -1
- package/dist/src/commands/scanUsage.js +24 -10
- package/dist/src/commands/scanUsage.js.map +1 -1
- package/dist/src/config/loadConfig.d.ts +1 -1
- package/dist/src/config/loadConfig.d.ts.map +1 -1
- package/dist/src/config/loadConfig.js +5 -5
- package/dist/src/config/loadConfig.js.map +1 -1
- package/dist/src/config/options.d.ts.map +1 -1
- package/dist/src/config/options.js +7 -1
- package/dist/src/config/options.js.map +1 -1
- package/dist/src/config/types.d.ts +26 -0
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/config/types.js.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 +28 -0
- package/dist/src/core/computeHealthScore.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/determineComparisonFile.js.map +1 -1
- package/dist/src/core/exampleSecretDetector.d.ts +6 -1
- package/dist/src/core/exampleSecretDetector.d.ts.map +1 -1
- package/dist/src/core/exampleSecretDetector.js +19 -14
- package/dist/src/core/exampleSecretDetector.js.map +1 -1
- package/dist/src/core/fixEnv.d.ts.map +1 -1
- package/dist/src/core/fixEnv.js +1 -1
- package/dist/src/core/fixEnv.js.map +1 -1
- package/dist/src/core/frameworkDetector.d.ts +2 -0
- package/dist/src/core/frameworkDetector.d.ts.map +1 -1
- package/dist/src/core/frameworkDetector.js +3 -1
- package/dist/src/core/frameworkDetector.js.map +1 -1
- package/dist/src/core/frameworkValidator.d.ts +6 -0
- package/dist/src/core/frameworkValidator.d.ts.map +1 -1
- package/dist/src/core/frameworkValidator.js +7 -1
- package/dist/src/core/frameworkValidator.js.map +1 -1
- package/dist/src/core/frameworks/index.d.ts +2 -2
- package/dist/src/core/frameworks/index.js +2 -2
- package/dist/src/core/frameworks/nextJsRules.d.ts +2 -2
- package/dist/src/core/frameworks/nextJsRules.d.ts.map +1 -1
- package/dist/src/core/frameworks/nextJsRules.js +17 -17
- package/dist/src/core/frameworks/nextJsRules.js.map +1 -1
- package/dist/src/core/frameworks/sveltekitRules.d.ts.map +1 -1
- package/dist/src/core/frameworks/sveltekitRules.js.map +1 -1
- package/dist/src/core/processComparisonFile.d.ts +5 -1
- package/dist/src/core/processComparisonFile.d.ts.map +1 -1
- package/dist/src/core/processComparisonFile.js +32 -16
- package/dist/src/core/processComparisonFile.js.map +1 -1
- package/dist/src/core/scanFile.d.ts.map +1 -1
- package/dist/src/core/scanFile.js +10 -0
- package/dist/src/core/scanFile.js.map +1 -1
- package/dist/src/core/scanJsonOutput.d.ts.map +1 -1
- package/dist/src/core/scanJsonOutput.js +3 -0
- package/dist/src/core/scanJsonOutput.js.map +1 -1
- package/dist/src/core/secretDetectors.d.ts.map +1 -1
- package/dist/src/core/secretDetectors.js.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/codeBaseScanner.d.ts.map +1 -1
- package/dist/src/services/codeBaseScanner.js +2 -0
- package/dist/src/services/codeBaseScanner.js.map +1 -1
- package/dist/src/services/ensureFilesOrPrompt.d.ts +15 -12
- package/dist/src/services/ensureFilesOrPrompt.d.ts.map +1 -1
- package/dist/src/services/ensureFilesOrPrompt.js.map +1 -1
- package/dist/src/services/envDiscovery.d.ts +12 -7
- package/dist/src/services/envDiscovery.d.ts.map +1 -1
- package/dist/src/services/envDiscovery.js.map +1 -1
- package/dist/src/services/fileWalker.d.ts.map +1 -1
- package/dist/src/services/fileWalker.js +5 -0
- package/dist/src/services/fileWalker.js.map +1 -1
- package/dist/src/services/git.d.ts +9 -3
- package/dist/src/services/git.d.ts.map +1 -1
- package/dist/src/services/git.js +17 -3
- package/dist/src/services/git.js.map +1 -1
- package/dist/src/services/scanOutputToConsole.d.ts.map +1 -1
- package/dist/src/services/scanOutputToConsole.js +13 -0
- package/dist/src/services/scanOutputToConsole.js.map +1 -1
- package/dist/src/ui/compare/printHeader.d.ts.map +1 -1
- package/dist/src/ui/compare/printIssues.d.ts.map +1 -1
- package/dist/src/ui/compare/printStats.d.ts +2 -1
- package/dist/src/ui/compare/printStats.d.ts.map +1 -1
- package/dist/src/ui/scan/printConsolelogWarning.d.ts +10 -0
- package/dist/src/ui/scan/printConsolelogWarning.d.ts.map +1 -0
- package/dist/src/ui/scan/printConsolelogWarning.js +36 -0
- package/dist/src/ui/scan/printConsolelogWarning.js.map +1 -0
- package/dist/src/ui/scan/printCspWarning.d.ts +3 -0
- package/dist/src/ui/scan/printCspWarning.d.ts.map +1 -1
- package/dist/src/ui/scan/printCspWarning.js +3 -0
- package/dist/src/ui/scan/printCspWarning.js.map +1 -1
- package/dist/src/ui/scan/printExampleWarnings.d.ts.map +1 -1
- package/dist/src/ui/scan/printExampleWarnings.js.map +1 -1
- package/dist/src/ui/scan/printFrameworkWarnings.d.ts.map +1 -1
- 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/printMissing.d.ts.map +1 -1
- package/dist/src/ui/scan/printMissing.js +2 -1
- package/dist/src/ui/scan/printMissing.js.map +1 -1
- package/dist/src/ui/scan/printSecrets.d.ts +3 -0
- package/dist/src/ui/scan/printSecrets.d.ts.map +1 -1
- package/dist/src/ui/scan/printSecrets.js +15 -13
- package/dist/src/ui/scan/printSecrets.js.map +1 -1
- package/dist/src/ui/scan/printStats.d.ts +2 -1
- package/dist/src/ui/scan/printStats.d.ts.map +1 -1
- package/dist/src/ui/scan/printStats.js.map +1 -1
- 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/printAutoFix.d.ts +2 -1
- package/dist/src/ui/shared/printAutoFix.d.ts.map +1 -1
- package/dist/src/ui/shared/printConfigStatus.d.ts +2 -0
- package/dist/src/ui/shared/printConfigStatus.d.ts.map +1 -1
- package/dist/src/ui/shared/printConfigStatus.js +2 -0
- package/dist/src/ui/shared/printConfigStatus.js.map +1 -1
- package/dist/src/ui/shared/printDuplicates.d.ts.map +1 -1
- package/dist/src/ui/shared/printFixTips.d.ts.map +1 -1
- package/dist/src/ui/shared/printInitStatus.d.ts +4 -0
- package/dist/src/ui/shared/printInitStatus.d.ts.map +1 -1
- package/dist/src/ui/shared/printInitStatus.js +4 -0
- package/dist/src/ui/shared/printInitStatus.js.map +1 -1
- package/dist/src/ui/shared/printOptionErrors.d.ts +1 -0
- package/dist/src/ui/shared/printOptionErrors.d.ts.map +1 -1
- package/dist/src/ui/shared/printOptionErrors.js +1 -0
- package/dist/src/ui/shared/printOptionErrors.js.map +1 -1
- package/dist/src/ui/shared/printStrictModeError.d.ts +4 -1
- package/dist/src/ui/shared/printStrictModeError.d.ts.map +1 -1
- package/dist/src/ui/shared/printStrictModeError.js +4 -0
- package/dist/src/ui/shared/printStrictModeError.js.map +1 -1
- package/dist/src/ui/shared/setupGlobalConfig.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { type SecretFinding } from '../core/secretDetectors.js';
|
|
2
2
|
import { type frameworkWarning } from '../core/frameworkValidator.js';
|
|
3
3
|
import { type ExampleSecretWarning } from '../core/exampleSecretDetector.js';
|
|
4
|
+
export type Duplicate = {
|
|
5
|
+
key: string;
|
|
6
|
+
count: number;
|
|
7
|
+
};
|
|
8
|
+
export interface DuplicateResult {
|
|
9
|
+
dupsEnv: Duplicate[];
|
|
10
|
+
dupsEx: Duplicate[];
|
|
11
|
+
}
|
|
4
12
|
export declare const ALLOWED_CATEGORIES: readonly ["missing", "extra", "empty", "mismatch", "duplicate", "gitignore"];
|
|
5
13
|
export type Category = (typeof ALLOWED_CATEGORIES)[number];
|
|
6
14
|
/** Type representing the options for the comparison
|
|
@@ -31,6 +39,7 @@ export type Options = {
|
|
|
31
39
|
strict: boolean | undefined;
|
|
32
40
|
ignoreUrls?: string[];
|
|
33
41
|
noCompare: boolean;
|
|
42
|
+
uppercaseKeys: boolean;
|
|
34
43
|
};
|
|
35
44
|
/** Type representing the raw options for the comparison
|
|
36
45
|
* These are the options that are directly passed to the comparison function without any processing or validation.
|
|
@@ -60,6 +69,7 @@ export type RawOptions = {
|
|
|
60
69
|
ignoreUrls?: string[];
|
|
61
70
|
noCompare?: boolean;
|
|
62
71
|
init?: boolean;
|
|
72
|
+
uppercaseKeys?: boolean;
|
|
63
73
|
};
|
|
64
74
|
/**
|
|
65
75
|
* Type representing a single entry in the comparison results
|
|
@@ -101,6 +111,7 @@ export interface EnvUsage {
|
|
|
101
111
|
column: number;
|
|
102
112
|
pattern: 'process.env' | 'import.meta.env' | 'sveltekit' | 'angular' | 'deno' | 'next' | 'nuxt' | 'php';
|
|
103
113
|
context: string;
|
|
114
|
+
isLogged?: boolean;
|
|
104
115
|
}
|
|
105
116
|
export interface ScanOptions {
|
|
106
117
|
cwd: string;
|
|
@@ -137,6 +148,8 @@ export interface ScanResult {
|
|
|
137
148
|
hasCsp?: boolean;
|
|
138
149
|
frameworkWarnings?: frameworkWarning[];
|
|
139
150
|
exampleWarnings?: ExampleSecretWarning[];
|
|
151
|
+
logged: EnvUsage[];
|
|
152
|
+
uppercaseWarnings?: UppercaseWarning[];
|
|
140
153
|
}
|
|
141
154
|
/** Options for scanning the codebase for environment variable usage. */
|
|
142
155
|
export interface ScanUsageOptions extends ScanOptions {
|
|
@@ -150,6 +163,7 @@ export interface ScanUsageOptions extends ScanOptions {
|
|
|
150
163
|
files?: string[];
|
|
151
164
|
allowDuplicates?: boolean;
|
|
152
165
|
strict?: boolean;
|
|
166
|
+
uppercaseKeys?: boolean;
|
|
153
167
|
}
|
|
154
168
|
export interface ScanJsonEntry {
|
|
155
169
|
stats: {
|
|
@@ -158,6 +172,7 @@ export interface ScanJsonEntry {
|
|
|
158
172
|
uniqueVariables: number;
|
|
159
173
|
duration: number;
|
|
160
174
|
};
|
|
175
|
+
healthScore: number;
|
|
161
176
|
missing: Array<{
|
|
162
177
|
variable: string;
|
|
163
178
|
usages: Array<{
|
|
@@ -194,6 +209,12 @@ export interface ScanJsonEntry {
|
|
|
194
209
|
}>;
|
|
195
210
|
};
|
|
196
211
|
hasCsp?: boolean;
|
|
212
|
+
logged?: Array<{
|
|
213
|
+
variable: string;
|
|
214
|
+
file: string;
|
|
215
|
+
line: number;
|
|
216
|
+
context: string;
|
|
217
|
+
}>;
|
|
197
218
|
}
|
|
198
219
|
export interface VariableUsages {
|
|
199
220
|
[variable: string]: EnvUsage[];
|
|
@@ -210,6 +231,7 @@ export interface ComparisonOptions {
|
|
|
210
231
|
only?: Category[];
|
|
211
232
|
showStats?: boolean;
|
|
212
233
|
strict?: boolean;
|
|
234
|
+
uppercaseKeys?: boolean;
|
|
213
235
|
}
|
|
214
236
|
export interface FilePair {
|
|
215
237
|
envName: string;
|
|
@@ -256,4 +278,8 @@ export type Filtered = {
|
|
|
256
278
|
reason: 'no-gitignore' | 'not-ignored';
|
|
257
279
|
} | null;
|
|
258
280
|
};
|
|
281
|
+
export interface UppercaseWarning {
|
|
282
|
+
key: string;
|
|
283
|
+
suggestion: string;
|
|
284
|
+
}
|
|
259
285
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,eAAO,MAAM,kBAAkB,8EAOrB,CAAC;AAGX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAG7E,MAAM,MAAM,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAGvD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB;AAGD,eAAO,MAAM,kBAAkB,8EAOrB,CAAC;AAGX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjD,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3E,EAAE,CAAC,EAAE,OAAO,CAAC;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EACH,aAAa,GACb,iBAAiB,GACjB,WAAW,GACX,SAAS,GACT,MAAM,GACN,MAAM,GACN,MAAM,GACN,KAAK,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,UAAU,EAAE;QACV,GAAG,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjD,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC;AAED,wEAAwE;AACxE,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE;QACL,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;SACjB,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACjD,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAGD,MAAM,WAAW,cAAc;IAC7B,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtE,aAAa,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrD,YAAY,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,cAAc,EAAE;QAAE,MAAM,EAAE,cAAc,GAAG,aAAa,CAAA;KAAE,GAAG,IAAI,CAAC;CACnE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAyB,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAA6B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAyB,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAA6B,MAAM,kCAAkC,CAAC;AAW7E,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,OAAO;IACP,OAAO;IACP,UAAU;IACV,WAAW;IACX,WAAW;CACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ScanResult } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Computes a health score based on the scan results.
|
|
4
|
+
* @param scan - The result of the scan.
|
|
5
|
+
* @returns The computed health score as a number between 0 and 100.
|
|
6
|
+
*/
|
|
7
|
+
export declare function computeHealthScore(scan: ScanResult): number;
|
|
8
|
+
//# sourceMappingURL=computeHealthScore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeHealthScore.d.ts","sourceRoot":"","sources":["../../../src/core/computeHealthScore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CA8B3D"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Computes a health score based on the scan results.
|
|
3
|
+
* @param scan - The result of the scan.
|
|
4
|
+
* @returns The computed health score as a number between 0 and 100.
|
|
5
|
+
*/
|
|
6
|
+
export function computeHealthScore(scan) {
|
|
7
|
+
let score = 100;
|
|
8
|
+
// === 1. Secrets detected ===
|
|
9
|
+
const highSecrets = scan.secrets?.filter((s) => s.severity === 'high') ?? [];
|
|
10
|
+
const medSecrets = scan.secrets?.filter((s) => s.severity === 'medium') ?? [];
|
|
11
|
+
score -= highSecrets.length * 15;
|
|
12
|
+
score -= medSecrets.length * 5;
|
|
13
|
+
// === 2. Missing environment variables ===
|
|
14
|
+
score -= scan.missing.length * 5;
|
|
15
|
+
// === 3. Uppercase naming issues ===
|
|
16
|
+
score -= (scan.uppercaseWarnings?.length ?? 0) * 2;
|
|
17
|
+
// === 4. Console logging ===
|
|
18
|
+
score -= (scan.logged?.length ?? 0) * 5;
|
|
19
|
+
// === 5. Unused vars (less important) ===
|
|
20
|
+
score -= (scan.unused?.length ?? 0) * 1;
|
|
21
|
+
// === 6. Framework warnings ===
|
|
22
|
+
score -= (scan.frameworkWarnings?.length ?? 0) * 2;
|
|
23
|
+
// === 7. Example secrets ===
|
|
24
|
+
score -= (scan.exampleWarnings?.length ?? 0) * 10;
|
|
25
|
+
// Never go below 0 or above 100
|
|
26
|
+
return Math.max(0, Math.min(100, score));
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=computeHealthScore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeHealthScore.js","sourceRoot":"","sources":["../../../src/core/computeHealthScore.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,8BAA8B;IAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE9E,KAAK,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;IACjC,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/B,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEjC,qCAAqC;IACrC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEnD,6BAA6B;IAC7B,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAExC,0CAA0C;IAC1C,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAExC,gCAAgC;IAChC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEnD,6BAA6B;IAC7B,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAElD,gCAAgC;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { EnvUsage } from '../config/types.js';
|
|
2
|
+
import type { UppercaseWarning } from '../config/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Detects environment variable keys that are not in uppercase format.
|
|
5
|
+
* @param usages - List of environment variable usages
|
|
6
|
+
* @returns List of warnings for non-uppercase keys
|
|
7
|
+
*/
|
|
8
|
+
export declare function detectUppercaseKeys(usages: EnvUsage[]): UppercaseWarning[];
|
|
9
|
+
//# sourceMappingURL=detectUppercaseKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectUppercaseKeys.d.ts","sourceRoot":"","sources":["../../../src/core/detectUppercaseKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAa3D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAa1E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Convert key to proper UPPER_SNAKE_CASE
|
|
2
|
+
* @param name - The environment variable name
|
|
3
|
+
* @returns The name converted to UPPER_SNAKE_CASE
|
|
4
|
+
*/
|
|
5
|
+
function toUpperSnakeCase(name) {
|
|
6
|
+
return name
|
|
7
|
+
.replace(/([a-z0-9])([A-Z])/g, '$1_$2') // camelCase → camel_Case
|
|
8
|
+
.replace(/[-\s]+/g, '_') // dashes/spaces → underscore
|
|
9
|
+
.toUpperCase();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Detects environment variable keys that are not in uppercase format.
|
|
13
|
+
* @param usages - List of environment variable usages
|
|
14
|
+
* @returns List of warnings for non-uppercase keys
|
|
15
|
+
*/
|
|
16
|
+
export function detectUppercaseKeys(usages) {
|
|
17
|
+
const warnings = [];
|
|
18
|
+
for (const u of usages) {
|
|
19
|
+
if (!/^[A-Z0-9_]+$/.test(u.variable)) {
|
|
20
|
+
warnings.push({
|
|
21
|
+
key: u.variable,
|
|
22
|
+
suggestion: toUpperSnakeCase(u.variable),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return warnings;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=detectUppercaseKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectUppercaseKeys.js","sourceRoot":"","sources":["../../../src/core/detectUppercaseKeys.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,yBAAyB;SAChE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,6BAA6B;SACrD,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,CAAC,CAAC,QAAQ;gBACf,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"determineComparisonFile.js","sourceRoot":"","sources":["../../../src/core/determineComparisonFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAsB;IAEtB,sDAAsD;IAEtD,IAAI,IAAI,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"determineComparisonFile.js","sourceRoot":"","sources":["../../../src/core/determineComparisonFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAyB,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAsB;IAEtB,sDAAsD;IAEtD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAC7E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -2,7 +2,12 @@ export interface ExampleSecretWarning {
|
|
|
2
2
|
key: string;
|
|
3
3
|
value: string;
|
|
4
4
|
reason: string;
|
|
5
|
-
severity:
|
|
5
|
+
severity: 'high' | 'medium' | 'low';
|
|
6
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
|
+
*/
|
|
7
12
|
export declare function detectSecretsInExample(env: Record<string, string>): ExampleSecretWarning[];
|
|
8
13
|
//# sourceMappingURL=exampleSecretDetector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exampleSecretDetector.d.ts","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exampleSecretDetector.d.ts","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAGA,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,5 +1,10 @@
|
|
|
1
|
-
import { PROVIDER_PATTERNS, SUSPICIOUS_KEYS } from
|
|
2
|
-
import { shannonEntropyNormalized } from
|
|
1
|
+
import { PROVIDER_PATTERNS, SUSPICIOUS_KEYS } from './secretDetectors.js';
|
|
2
|
+
import { shannonEntropyNormalized } from './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
|
+
*/
|
|
3
8
|
export function detectSecretsInExample(env) {
|
|
4
9
|
const warnings = [];
|
|
5
10
|
for (const [key, rawValue] of Object.entries(env)) {
|
|
@@ -7,12 +12,12 @@ export function detectSecretsInExample(env) {
|
|
|
7
12
|
continue;
|
|
8
13
|
const value = rawValue.trim();
|
|
9
14
|
// 1 — Skip placeholders
|
|
10
|
-
if (value ===
|
|
11
|
-
value.toLowerCase() ===
|
|
12
|
-
value.toLowerCase() ===
|
|
13
|
-
value.includes(
|
|
14
|
-
value.includes(
|
|
15
|
-
value.includes(
|
|
15
|
+
if (value === '' ||
|
|
16
|
+
value.toLowerCase() === 'example' ||
|
|
17
|
+
value.toLowerCase() === 'placeholder' ||
|
|
18
|
+
value.includes('your_') ||
|
|
19
|
+
value.includes('<') ||
|
|
20
|
+
value.includes('CHANGE_ME')) {
|
|
16
21
|
continue;
|
|
17
22
|
}
|
|
18
23
|
// 2 — Check provider patterns (AWS, Stripe, GitHub, JWT etc.)
|
|
@@ -21,8 +26,8 @@ export function detectSecretsInExample(env) {
|
|
|
21
26
|
warnings.push({
|
|
22
27
|
key,
|
|
23
28
|
value,
|
|
24
|
-
reason:
|
|
25
|
-
severity:
|
|
29
|
+
reason: 'Value in .env.example matches a known provider key pattern',
|
|
30
|
+
severity: 'high',
|
|
26
31
|
});
|
|
27
32
|
continue;
|
|
28
33
|
}
|
|
@@ -33,20 +38,20 @@ export function detectSecretsInExample(env) {
|
|
|
33
38
|
warnings.push({
|
|
34
39
|
key,
|
|
35
40
|
value,
|
|
36
|
-
reason:
|
|
37
|
-
severity:
|
|
41
|
+
reason: 'Suspicious key name combined with a non-placeholder value',
|
|
42
|
+
severity: 'medium',
|
|
38
43
|
});
|
|
39
44
|
}
|
|
40
45
|
}
|
|
41
46
|
// 4 — Check entropy (high randomness → real secret)
|
|
42
47
|
if (value.length >= 24) {
|
|
43
48
|
const entropy = shannonEntropyNormalized(value);
|
|
44
|
-
if (entropy > 0.
|
|
49
|
+
if (entropy > 0.8) {
|
|
45
50
|
warnings.push({
|
|
46
51
|
key,
|
|
47
52
|
value,
|
|
48
53
|
reason: `High entropy value in .env.example (≈${entropy.toFixed(2)})`,
|
|
49
|
-
severity: entropy > 0.92 ?
|
|
54
|
+
severity: entropy > 0.92 ? 'high' : 'medium',
|
|
50
55
|
});
|
|
51
56
|
}
|
|
52
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AASxD;;;;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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,SAAS;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,
|
|
1
|
+
{"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,SAAS;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CAwFA"}
|
package/dist/src/core/fixEnv.js
CHANGED
|
@@ -14,7 +14,7 @@ import { isEnvIgnoredByGit, isGitRepo, findGitRoot } from '../services/git.js';
|
|
|
14
14
|
* @returns An object indicating whether changes were made and details of the changes
|
|
15
15
|
*/
|
|
16
16
|
export function applyFixes(options) {
|
|
17
|
-
const { envPath, examplePath, missingKeys = [], duplicateKeys = [], ensureGitignore = false } = options;
|
|
17
|
+
const { envPath, examplePath, missingKeys = [], duplicateKeys = [], ensureGitignore = false, } = options;
|
|
18
18
|
const result = {
|
|
19
19
|
removedDuplicates: [],
|
|
20
20
|
addedEnv: [],
|
|
@@ -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;AAiB/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IAInD,MAAM,
|
|
1
|
+
{"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export interface FrameworkDetection {
|
|
|
6
6
|
/**
|
|
7
7
|
* Detects the framework being used in the project
|
|
8
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)
|
|
9
11
|
*/
|
|
10
12
|
export declare function detectFramework(cwd: string): FrameworkDetection;
|
|
11
13
|
//# sourceMappingURL=frameworkDetector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAkC/D"}
|
|
@@ -3,6 +3,8 @@ import path from 'path';
|
|
|
3
3
|
/**
|
|
4
4
|
* Detects the framework being used in the project
|
|
5
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)
|
|
6
8
|
*/
|
|
7
9
|
export function detectFramework(cwd) {
|
|
8
10
|
try {
|
|
@@ -31,7 +33,7 @@ export function detectFramework(cwd) {
|
|
|
31
33
|
}
|
|
32
34
|
return { framework: 'unknown' };
|
|
33
35
|
}
|
|
34
|
-
catch
|
|
36
|
+
catch {
|
|
35
37
|
return { framework: 'unknown' };
|
|
36
38
|
}
|
|
37
39
|
}
|
|
@@ -1 +1 @@
|
|
|
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;AASxB
|
|
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;AASxB;;;;;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,MAAM;gBACjB,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"}
|
|
@@ -7,5 +7,11 @@ export interface frameworkWarning {
|
|
|
7
7
|
line: number;
|
|
8
8
|
framework: Framework;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* Validates environment variable usages against framework-specific rules
|
|
12
|
+
* @param usages - Array of environment variable usages
|
|
13
|
+
* @param cwd - Current working directory to detect framework
|
|
14
|
+
* @returns Array of framework-specific warnings
|
|
15
|
+
*/
|
|
10
16
|
export declare function frameworkValidator(usages: EnvUsage[], cwd: string): frameworkWarning[];
|
|
11
17
|
//# sourceMappingURL=frameworkValidator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGzE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,MAAM,GACV,gBAAgB,EAAE,CAUpB"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { detectFramework } from './frameworkDetector.js';
|
|
2
|
-
import { applySvelteKitRules, applyNextJsRules
|
|
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
|
+
* @returns Array of framework-specific warnings
|
|
8
|
+
*/
|
|
3
9
|
export function frameworkValidator(usages, cwd) {
|
|
4
10
|
const warnings = [];
|
|
5
11
|
const { framework } = detectFramework(cwd);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAkB,MAAM,wBAAwB,CAAC;AACzE,OAAO,
|
|
1
|
+
{"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAkB,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAU9E;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,GAAW;IAEX,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,MAAM;YAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { applySvelteKitRules } from
|
|
2
|
-
export { applyNextJsRules } from
|
|
1
|
+
export { applySvelteKitRules } from './sveltekitRules.js';
|
|
2
|
+
export { applyNextJsRules } from './nextJsRules.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { applySvelteKitRules } from
|
|
2
|
-
export { applyNextJsRules } from
|
|
1
|
+
export { applySvelteKitRules } from './sveltekitRules.js';
|
|
2
|
+
export { applyNextJsRules } from './nextJsRules.js';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { EnvUsage } from
|
|
2
|
-
import type { frameworkWarning } from
|
|
1
|
+
import type { EnvUsage } from '../../config/types.js';
|
|
2
|
+
import type { frameworkWarning } from '../frameworkValidator.js';
|
|
3
3
|
/**
|
|
4
4
|
* Next.js environment variable validation rules
|
|
5
5
|
* @param u - The environment variable usage information
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAwDN"}
|
|
@@ -4,44 +4,44 @@
|
|
|
4
4
|
* @param warnings - The array to push warnings into
|
|
5
5
|
*/
|
|
6
6
|
export function applyNextJsRules(u, warnings) {
|
|
7
|
-
const isServerOnlyFile = u.file.includes(
|
|
8
|
-
u.file.endsWith(
|
|
9
|
-
u.file.endsWith(
|
|
10
|
-
if (u.pattern ===
|
|
7
|
+
const isServerOnlyFile = u.file.includes('app/api/') ||
|
|
8
|
+
u.file.endsWith('.server.ts') ||
|
|
9
|
+
u.file.endsWith('.server.js');
|
|
10
|
+
if (u.pattern === 'process.env' && u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
11
11
|
if (isServerOnlyFile) {
|
|
12
12
|
warnings.push({
|
|
13
13
|
variable: u.variable,
|
|
14
14
|
reason: "NEXT_PUBLIC_ variables are exposed to the browser — don't use them in server-only files",
|
|
15
15
|
file: u.file,
|
|
16
16
|
line: u.line,
|
|
17
|
-
framework:
|
|
17
|
+
framework: 'next',
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
const looksLikeClientComponent = u.file.includes(
|
|
22
|
-
if (u.pattern ===
|
|
23
|
-
!u.variable.startsWith(
|
|
21
|
+
const looksLikeClientComponent = u.file.includes('/components/') || u.context.includes('use client');
|
|
22
|
+
if (u.pattern === 'process.env' &&
|
|
23
|
+
!u.variable.startsWith('NEXT_PUBLIC_') &&
|
|
24
24
|
looksLikeClientComponent) {
|
|
25
25
|
warnings.push({
|
|
26
26
|
variable: u.variable,
|
|
27
|
-
reason:
|
|
27
|
+
reason: 'Client components can only access NEXT_PUBLIC_ environment variables',
|
|
28
28
|
file: u.file,
|
|
29
29
|
line: u.line,
|
|
30
|
-
framework:
|
|
30
|
+
framework: 'next',
|
|
31
31
|
});
|
|
32
32
|
}
|
|
33
|
-
const isClientComponentFile = u.file.endsWith(
|
|
34
|
-
u.file.endsWith(
|
|
35
|
-
u.context.includes(
|
|
36
|
-
if (u.pattern ===
|
|
33
|
+
const isClientComponentFile = u.file.endsWith('.tsx') ||
|
|
34
|
+
u.file.endsWith('.jsx') ||
|
|
35
|
+
u.context.includes('use client');
|
|
36
|
+
if (u.pattern === 'process.env' &&
|
|
37
37
|
isClientComponentFile &&
|
|
38
|
-
!u.variable.startsWith(
|
|
38
|
+
!u.variable.startsWith('NEXT_PUBLIC_')) {
|
|
39
39
|
warnings.push({
|
|
40
40
|
variable: u.variable,
|
|
41
|
-
reason:
|
|
41
|
+
reason: 'process.env inside client components must use NEXT_PUBLIC_ variables',
|
|
42
42
|
file: u.file,
|
|
43
43
|
line: u.line,
|
|
44
|
-
framework:
|
|
44
|
+
framework: 'next',
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,
|
|
1
|
+
{"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAW,EACX,QAA4B;IAE5B,MAAM,gBAAgB,GACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC3B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhC,IAAI,CAAC,CAAC,OAAO,KAAK,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACzE,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,MAAM,EACJ,yFAAyF;gBAC3F,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,wBAAwB,GAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEtE,IACE,CAAC,CAAC,OAAO,KAAK,aAAa;QAC3B,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;QACtC,wBAAwB,EACxB,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EACJ,sEAAsE;YACxE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,qBAAqB,GACzB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEnC,IACE,CAAC,CAAC,OAAO,KAAK,aAAa;QAC3B,qBAAqB;QACrB,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EACtC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EACJ,sEAAsE;YACxE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,MAAM;SAClB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekitRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"sveltekitRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEjE;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAmGN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sveltekitRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"sveltekitRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export interface ProcessComparisonResult {
|
|
|
8
8
|
key: string;
|
|
9
9
|
count: number;
|
|
10
10
|
}>;
|
|
11
|
-
|
|
11
|
+
dupsEx: Array<{
|
|
12
12
|
key: string;
|
|
13
13
|
count: number;
|
|
14
14
|
}>;
|
|
@@ -18,6 +18,10 @@ export interface ProcessComparisonResult {
|
|
|
18
18
|
addedExample: string[];
|
|
19
19
|
gitignoreUpdated: boolean;
|
|
20
20
|
exampleFull?: Record<string, string> | undefined;
|
|
21
|
+
uppercaseWarnings?: Array<{
|
|
22
|
+
key: string;
|
|
23
|
+
suggestion: string;
|
|
24
|
+
}>;
|
|
21
25
|
error?: {
|
|
22
26
|
message: string;
|
|
23
27
|
shouldExit: boolean;
|