dotenv-diff 2.2.5 → 2.2.7
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 +11 -0
- package/dist/src/cli/program.d.ts +4 -0
- package/dist/src/cli/program.d.ts.map +1 -1
- package/dist/src/cli/program.js +4 -0
- package/dist/src/cli/program.js.map +1 -1
- package/dist/src/cli/run.d.ts.map +1 -1
- package/dist/src/cli/run.js +137 -94
- 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 +2 -2
- package/dist/src/commands/compare.js.map +1 -1
- package/dist/src/commands/scanUsage.d.ts +1 -57
- package/dist/src/commands/scanUsage.d.ts.map +1 -1
- package/dist/src/commands/scanUsage.js +8 -225
- package/dist/src/commands/scanUsage.js.map +1 -1
- package/dist/src/config/loadConfig.d.ts +2 -0
- package/dist/src/config/loadConfig.d.ts.map +1 -0
- package/dist/src/config/types.d.ts +100 -0
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/config/types.js +1 -0
- package/dist/src/config/types.js.map +1 -1
- package/dist/src/core/compareScan.d.ts +9 -0
- package/dist/src/core/compareScan.d.ts.map +1 -0
- package/dist/src/core/compareScan.js +18 -0
- package/dist/src/core/compareScan.js.map +1 -0
- package/dist/src/core/determineComparisonFile.d.ts +11 -0
- package/dist/src/core/determineComparisonFile.d.ts.map +1 -0
- package/dist/src/core/determineComparisonFile.js +34 -0
- package/dist/src/core/determineComparisonFile.js.map +1 -0
- package/dist/src/core/diffEnv.d.ts +19 -0
- package/dist/src/core/diffEnv.d.ts.map +1 -0
- package/dist/src/core/diffEnv.js +31 -0
- package/dist/src/core/diffEnv.js.map +1 -0
- package/dist/src/core/helpers/resolveFromCwd.d.ts +8 -0
- package/dist/src/core/helpers/resolveFromCwd.d.ts.map +1 -0
- package/dist/src/core/helpers/resolveFromCwd.js +9 -0
- package/dist/src/core/helpers/resolveFromCwd.js.map +1 -0
- package/dist/src/core/parseEnv.d.ts +11 -0
- package/dist/src/core/parseEnv.d.ts.map +1 -0
- package/dist/src/core/parseEnv.js +26 -0
- package/dist/src/core/parseEnv.js.map +1 -0
- package/dist/src/core/patterns.d.ts +32 -0
- package/dist/src/core/patterns.d.ts.map +1 -0
- package/dist/src/core/patterns.js +69 -0
- package/dist/src/core/patterns.js.map +1 -0
- package/dist/src/core/scanFile.d.ts +10 -0
- package/dist/src/core/scanFile.d.ts.map +1 -0
- package/dist/src/core/scanFile.js +41 -0
- package/dist/src/core/scanFile.js.map +1 -0
- package/dist/src/core/scanJsonOutput.d.ts +11 -0
- package/dist/src/core/scanJsonOutput.d.ts.map +1 -0
- package/dist/src/core/scanJsonOutput.js +56 -0
- package/dist/src/core/scanJsonOutput.js.map +1 -0
- package/dist/src/core/secretDetectors.d.ts.map +1 -1
- package/dist/src/core/secretDetectors.js +33 -15
- package/dist/src/core/secretDetectors.js.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/services/codeBaseScanner.d.ts +1 -40
- package/dist/src/services/codeBaseScanner.d.ts.map +1 -1
- package/dist/src/services/codeBaseScanner.js +4 -315
- package/dist/src/services/codeBaseScanner.js.map +1 -1
- package/dist/src/services/ensureFilesOrPrompt.d.ts +19 -0
- package/dist/src/services/ensureFilesOrPrompt.d.ts.map +1 -0
- package/dist/src/services/ensureFilesOrPrompt.js +74 -0
- package/dist/src/services/ensureFilesOrPrompt.js.map +1 -0
- package/dist/src/services/fileWalker.d.ts +62 -0
- package/dist/src/services/fileWalker.d.ts.map +1 -0
- package/dist/src/services/fileWalker.js +238 -0
- package/dist/src/services/fileWalker.js.map +1 -0
- package/dist/src/services/scanOutputToConsole.d.ts +12 -0
- package/dist/src/services/scanOutputToConsole.d.ts.map +1 -0
- package/dist/src/services/scanOutputToConsole.js +166 -0
- package/dist/src/services/scanOutputToConsole.js.map +1 -0
- package/dist/types/scanUsage.d.ts +43 -0
- package/dist/types/scanUsage.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import { parseEnvFile } from '../
|
|
5
|
-
import { scanCodebase
|
|
4
|
+
import { parseEnvFile } from '../core/parseEnv.js';
|
|
5
|
+
import { scanCodebase } from '../services/codeBaseScanner.js';
|
|
6
6
|
import { filterIgnoredKeys } from '../core/filterIgnoredKeys.js';
|
|
7
|
+
import { resolveFromCwd } from '../core/helpers/resolveFromCwd.js';
|
|
8
|
+
import { determineComparisonFile } from '../core/determineComparisonFile.js';
|
|
9
|
+
import { outputToConsole } from '../services/scanOutputToConsole.js';
|
|
10
|
+
import { createJsonOutput } from '../core/scanJsonOutput.js';
|
|
7
11
|
import { findDuplicateKeys } from '../services/duplicates.js';
|
|
12
|
+
import { compareWithEnvFiles } from '../core/compareScan.js';
|
|
8
13
|
import { applyFixes } from '../core/fixEnv.js';
|
|
9
|
-
// Helper to resolve paths relative to cwd
|
|
10
|
-
const resolveFromCwd = (cwd, p) => path.isAbsolute(p) ? p : path.resolve(cwd, p);
|
|
11
14
|
/**
|
|
12
15
|
* Scans codebase for environment variable usage and compares with .env file
|
|
13
16
|
* @param {ScanUsageOptions} opts - Scan configuration options
|
|
@@ -216,226 +219,6 @@ export async function scanUsage(opts) {
|
|
|
216
219
|
console.log();
|
|
217
220
|
}
|
|
218
221
|
}
|
|
219
|
-
return {
|
|
220
|
-
exitWithError: result.exitWithError ||
|
|
221
|
-
duplicatesFound ||
|
|
222
|
-
!!(opts.strict &&
|
|
223
|
-
(scanResult.unused.length > 0 ||
|
|
224
|
-
(scanResult.duplicates?.env?.length ?? 0) > 0 ||
|
|
225
|
-
(scanResult.duplicates?.example?.length ?? 0) > 0 ||
|
|
226
|
-
(scanResult.secrets?.length ?? 0) > 0)),
|
|
227
|
-
};
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Determines which file to use for comparison based on provided options
|
|
231
|
-
* @param {ScanUsageOptions} opts - Scan configuration options
|
|
232
|
-
* @returns {Object|null} - The comparison file information or undefined if not found
|
|
233
|
-
*/
|
|
234
|
-
function determineComparisonFile(opts) {
|
|
235
|
-
// Priority: explicit flags first, then auto-discovery
|
|
236
|
-
if (opts.examplePath) {
|
|
237
|
-
const p = resolveFromCwd(opts.cwd, opts.examplePath);
|
|
238
|
-
if (fs.existsSync(p)) {
|
|
239
|
-
return { path: p, name: path.basename(opts.examplePath) };
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (opts.envPath) {
|
|
243
|
-
const p = resolveFromCwd(opts.cwd, opts.envPath);
|
|
244
|
-
if (fs.existsSync(p)) {
|
|
245
|
-
return { path: p, name: path.basename(opts.envPath) };
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
// Auto-discovery: look for common env files relative to cwd
|
|
249
|
-
const candidates = ['.env', '.env.example', '.env.local', '.env.production'];
|
|
250
|
-
for (const candidate of candidates) {
|
|
251
|
-
const fullPath = path.resolve(opts.cwd, candidate);
|
|
252
|
-
if (fs.existsSync(fullPath)) {
|
|
253
|
-
return { path: fullPath, name: candidate };
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
return undefined;
|
|
257
|
-
}
|
|
258
|
-
/**
|
|
259
|
-
* Creates a JSON output for the scan results.
|
|
260
|
-
* @param scanResult - The result of the scan.
|
|
261
|
-
* @param opts - The scan options.
|
|
262
|
-
* @param comparedAgainst - The file being compared against.
|
|
263
|
-
* @param totalEnvVariables - The total number of environment variables.
|
|
264
|
-
* @returns The JSON output.
|
|
265
|
-
*/
|
|
266
|
-
function createJsonOutput(scanResult, opts, comparedAgainst, totalEnvVariables) {
|
|
267
|
-
// Group usages by variable for missing variables
|
|
268
|
-
const missingGrouped = scanResult.missing.map((variable) => ({
|
|
269
|
-
variable,
|
|
270
|
-
usages: scanResult.used
|
|
271
|
-
.filter((u) => u.variable === variable)
|
|
272
|
-
.map((u) => ({
|
|
273
|
-
file: u.file,
|
|
274
|
-
line: u.line,
|
|
275
|
-
pattern: u.pattern,
|
|
276
|
-
context: u.context,
|
|
277
|
-
})),
|
|
278
|
-
}));
|
|
279
|
-
const output = {
|
|
280
|
-
stats: scanResult.stats,
|
|
281
|
-
missing: missingGrouped,
|
|
282
|
-
unused: scanResult.unused,
|
|
283
|
-
};
|
|
284
|
-
if (scanResult.secrets?.length) {
|
|
285
|
-
output.secrets = scanResult.secrets.map((s) => ({
|
|
286
|
-
file: s.file,
|
|
287
|
-
line: s.line,
|
|
288
|
-
message: s.message,
|
|
289
|
-
snippet: s.snippet,
|
|
290
|
-
}));
|
|
291
|
-
}
|
|
292
|
-
// Add duplicates if found
|
|
293
|
-
if (scanResult.duplicates) {
|
|
294
|
-
output.duplicates = scanResult.duplicates;
|
|
295
|
-
}
|
|
296
|
-
// Add comparison info if we compared against a file
|
|
297
|
-
if (comparedAgainst) {
|
|
298
|
-
output.comparedAgainst = comparedAgainst;
|
|
299
|
-
output.totalEnvVariables = totalEnvVariables;
|
|
300
|
-
}
|
|
301
|
-
// Optionally include all usages
|
|
302
|
-
if (opts.showStats) {
|
|
303
|
-
output.allUsages = scanResult.used.map((u) => ({
|
|
304
|
-
variable: u.variable,
|
|
305
|
-
file: u.file,
|
|
306
|
-
line: u.line,
|
|
307
|
-
pattern: u.pattern,
|
|
308
|
-
context: u.context,
|
|
309
|
-
}));
|
|
310
|
-
}
|
|
311
|
-
return output;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Outputs the scan results to the console.
|
|
315
|
-
* @param scanResult - The result of the scan.
|
|
316
|
-
* @param opts - The scan options.
|
|
317
|
-
* @param comparedAgainst - The file being compared against.
|
|
318
|
-
* @returns An object indicating whether to exit with an error.
|
|
319
|
-
*/
|
|
320
|
-
function outputToConsole(scanResult, opts, comparedAgainst) {
|
|
321
|
-
let exitWithError = false;
|
|
322
|
-
// Show what we're comparing against
|
|
323
|
-
if (comparedAgainst) {
|
|
324
|
-
console.log(chalk.magenta(`📋 Comparing codebase usage against: ${comparedAgainst}`));
|
|
325
|
-
console.log();
|
|
326
|
-
}
|
|
327
|
-
// Show stats if requested
|
|
328
|
-
if (opts.showStats) {
|
|
329
|
-
console.log(chalk.magenta('📊 Scan Statistics:'));
|
|
330
|
-
console.log(chalk.magenta.dim(` Files scanned: ${scanResult.stats.filesScanned}`));
|
|
331
|
-
console.log(chalk.magenta.dim(` Total usages found: ${scanResult.stats.totalUsages}`));
|
|
332
|
-
console.log(chalk.magenta.dim(` Unique variables: ${scanResult.stats.uniqueVariables}`));
|
|
333
|
-
console.log();
|
|
334
|
-
}
|
|
335
|
-
// Always show found variables when not comparing or when no missing variables
|
|
336
|
-
if (scanResult.stats.uniqueVariables > 0) {
|
|
337
|
-
console.log(chalk.blue(`🌐 Found ${scanResult.stats.uniqueVariables} unique environment variables in use`));
|
|
338
|
-
console.log();
|
|
339
|
-
// List all variables found (if any)
|
|
340
|
-
if (scanResult.stats.uniqueVariables > 0) {
|
|
341
|
-
// Group by variable to get unique list
|
|
342
|
-
const variableUsages = scanResult.used.reduce((acc, usage) => {
|
|
343
|
-
if (!acc[usage.variable]) {
|
|
344
|
-
acc[usage.variable] = [];
|
|
345
|
-
}
|
|
346
|
-
acc[usage.variable].push(usage);
|
|
347
|
-
return acc;
|
|
348
|
-
}, {});
|
|
349
|
-
// Display each unique variable
|
|
350
|
-
for (const [variable, usages] of Object.entries(variableUsages)) {
|
|
351
|
-
console.log(chalk.blue(` ${variable}`));
|
|
352
|
-
// Show usage details if stats are enabled
|
|
353
|
-
if (opts.showStats) {
|
|
354
|
-
const displayUsages = usages.slice(0, 2);
|
|
355
|
-
displayUsages.forEach((usage) => {
|
|
356
|
-
console.log(chalk.blue.dim(` Used in: ${usage.file}:${usage.line} (${usage.pattern})`));
|
|
357
|
-
});
|
|
358
|
-
if (usages.length > 2) {
|
|
359
|
-
console.log(chalk.gray(` ... and ${usages.length - 2} more locations`));
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
console.log();
|
|
364
|
-
}
|
|
365
|
-
}
|
|
366
|
-
// Missing variables (used in code but not in env file)
|
|
367
|
-
if (scanResult.missing.length > 0) {
|
|
368
|
-
exitWithError = true;
|
|
369
|
-
const fileType = comparedAgainst || 'environment file';
|
|
370
|
-
console.log(chalk.red(`❌ Missing in ${fileType}:`));
|
|
371
|
-
const grouped = scanResult.missing.reduce((acc, variable) => {
|
|
372
|
-
const usages = scanResult.used.filter((u) => u.variable === variable);
|
|
373
|
-
acc[variable] = usages;
|
|
374
|
-
return acc;
|
|
375
|
-
}, {});
|
|
376
|
-
for (const [variable, usages] of Object.entries(grouped)) {
|
|
377
|
-
console.log(chalk.red(` - ${variable}`));
|
|
378
|
-
// Show first few usages
|
|
379
|
-
const maxShow = 3;
|
|
380
|
-
usages.slice(0, maxShow).forEach((usage) => {
|
|
381
|
-
console.log(chalk.red.dim(` Used in: ${usage.file}:${usage.line} (${usage.pattern})`));
|
|
382
|
-
});
|
|
383
|
-
if (usages.length > maxShow) {
|
|
384
|
-
console.log(chalk.gray(` ... and ${usages.length - maxShow} more locations`));
|
|
385
|
-
}
|
|
386
|
-
}
|
|
387
|
-
console.log();
|
|
388
|
-
// CI mode specific message
|
|
389
|
-
if (opts.isCiMode) {
|
|
390
|
-
console.log(chalk.red(`💥 Found ${scanResult.missing.length} missing environment variable(s).`));
|
|
391
|
-
console.log(chalk.red(` Add these variables to ${comparedAgainst || 'your environment file'} to fix this error.`));
|
|
392
|
-
console.log();
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
// Unused variables (in env file but not used in code)
|
|
396
|
-
if (opts.showUnused && scanResult.unused.length > 0) {
|
|
397
|
-
const fileType = comparedAgainst || 'environment file';
|
|
398
|
-
console.log(chalk.yellow(`⚠️ Unused in codebase (defined in ${fileType}):`));
|
|
399
|
-
scanResult.unused.forEach((variable) => {
|
|
400
|
-
console.log(chalk.yellow(` - ${variable}`));
|
|
401
|
-
});
|
|
402
|
-
console.log();
|
|
403
|
-
}
|
|
404
|
-
// Show duplicates if found - NOW AFTER UNUSED VARIABLES
|
|
405
|
-
if (scanResult.duplicates?.env && scanResult.duplicates.env.length > 0) {
|
|
406
|
-
console.log(chalk.yellow(`⚠️ Duplicate keys in ${comparedAgainst} (last occurrence wins):`));
|
|
407
|
-
scanResult.duplicates.env.forEach(({ key, count }) => console.log(chalk.yellow(` - ${key} (${count} occurrences)`)));
|
|
408
|
-
console.log();
|
|
409
|
-
}
|
|
410
|
-
if (scanResult.duplicates?.example && scanResult.duplicates.example.length > 0) {
|
|
411
|
-
console.log(chalk.yellow(`⚠️ Duplicate keys in example file (last occurrence wins):`));
|
|
412
|
-
scanResult.duplicates.example.forEach(({ key, count }) => console.log(chalk.yellow(` - ${key} (${count} occurrences)`)));
|
|
413
|
-
console.log();
|
|
414
|
-
}
|
|
415
|
-
if (scanResult.secrets && scanResult.secrets.length > 0) {
|
|
416
|
-
console.log(chalk.yellow('🔒 Potential secrets detected in codebase:'));
|
|
417
|
-
const byFile = new Map();
|
|
418
|
-
for (const f of scanResult.secrets) {
|
|
419
|
-
if (!byFile.has(f.file))
|
|
420
|
-
byFile.set(f.file, []);
|
|
421
|
-
byFile.get(f.file).push(f);
|
|
422
|
-
}
|
|
423
|
-
for (const [file, findings] of byFile) {
|
|
424
|
-
console.log(chalk.bold(` ${file}`));
|
|
425
|
-
for (const f of findings) {
|
|
426
|
-
console.log(chalk.yellow(` - Line ${f.line}: ${f.message}\n ${chalk.dim(f.snippet)}`));
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
console.log();
|
|
430
|
-
}
|
|
431
|
-
// Success message for env file comparison
|
|
432
|
-
if (comparedAgainst && scanResult.missing.length === 0 && scanResult.secrets.length > 0) {
|
|
433
|
-
console.log(chalk.green(`✅ All used environment variables are defined in ${comparedAgainst}`));
|
|
434
|
-
if (opts.showUnused && scanResult.unused.length === 0) {
|
|
435
|
-
console.log(chalk.green('✅ No unused environment variables found'));
|
|
436
|
-
}
|
|
437
|
-
console.log();
|
|
438
|
-
}
|
|
439
|
-
return { exitWithError };
|
|
222
|
+
return { exitWithError: result.exitWithError || duplicatesFound };
|
|
440
223
|
}
|
|
441
224
|
//# sourceMappingURL=scanUsage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanUsage.js","sourceRoot":"","sources":["../../../src/commands/scanUsage.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scanUsage.js","sourceRoot":"","sources":["../../../src/commands/scanUsage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../../src/config/loadConfig.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,GAAG,GAAE,MAAsB,GAAG,GAAG,CAK3D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type SecretFinding } from '../core/secretDetectors.js';
|
|
1
2
|
export declare const ALLOWED_CATEGORIES: readonly ["missing", "extra", "empty", "mismatch", "duplicate", "gitignore"];
|
|
2
3
|
export type Category = (typeof ALLOWED_CATEGORIES)[number];
|
|
3
4
|
/** Type representing the options for the comparison
|
|
@@ -83,4 +84,103 @@ export type CompareJsonEntry = {
|
|
|
83
84
|
}>;
|
|
84
85
|
ok?: boolean;
|
|
85
86
|
};
|
|
87
|
+
/**
|
|
88
|
+
* Represents a single usage of an environment variable in the codebase.
|
|
89
|
+
*/
|
|
90
|
+
export interface EnvUsage {
|
|
91
|
+
variable: string;
|
|
92
|
+
file: string;
|
|
93
|
+
line: number;
|
|
94
|
+
column: number;
|
|
95
|
+
pattern: 'process.env' | 'import.meta.env' | 'sveltekit' | 'deno' | 'next' | 'nuxt' | 'php';
|
|
96
|
+
context: string;
|
|
97
|
+
}
|
|
98
|
+
export interface ScanOptions {
|
|
99
|
+
cwd: string;
|
|
100
|
+
include: string[];
|
|
101
|
+
exclude: string[];
|
|
102
|
+
ignore: string[];
|
|
103
|
+
ignoreRegex: RegExp[];
|
|
104
|
+
files?: string[];
|
|
105
|
+
secrets?: boolean;
|
|
106
|
+
}
|
|
107
|
+
export interface ScanResult {
|
|
108
|
+
used: EnvUsage[];
|
|
109
|
+
missing: string[];
|
|
110
|
+
unused: string[];
|
|
111
|
+
stats: {
|
|
112
|
+
filesScanned: number;
|
|
113
|
+
totalUsages: number;
|
|
114
|
+
uniqueVariables: number;
|
|
115
|
+
};
|
|
116
|
+
secrets: SecretFinding[];
|
|
117
|
+
duplicates: {
|
|
118
|
+
env?: Array<{
|
|
119
|
+
key: string;
|
|
120
|
+
count: number;
|
|
121
|
+
}>;
|
|
122
|
+
example?: Array<{
|
|
123
|
+
key: string;
|
|
124
|
+
count: number;
|
|
125
|
+
}>;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Options for scanning the codebase for environment variable usage. */
|
|
129
|
+
export interface ScanUsageOptions extends ScanOptions {
|
|
130
|
+
envPath?: string | undefined;
|
|
131
|
+
examplePath?: string | undefined;
|
|
132
|
+
fix?: boolean;
|
|
133
|
+
json: boolean;
|
|
134
|
+
showUnused: boolean;
|
|
135
|
+
showStats: boolean;
|
|
136
|
+
isCiMode?: boolean;
|
|
137
|
+
files?: string[];
|
|
138
|
+
allowDuplicates?: boolean;
|
|
139
|
+
strict?: boolean;
|
|
140
|
+
}
|
|
141
|
+
export interface ScanJsonEntry {
|
|
142
|
+
stats: {
|
|
143
|
+
filesScanned: number;
|
|
144
|
+
totalUsages: number;
|
|
145
|
+
uniqueVariables: number;
|
|
146
|
+
};
|
|
147
|
+
missing: Array<{
|
|
148
|
+
variable: string;
|
|
149
|
+
usages: Array<{
|
|
150
|
+
file: string;
|
|
151
|
+
line: number;
|
|
152
|
+
pattern: string;
|
|
153
|
+
context: string;
|
|
154
|
+
}>;
|
|
155
|
+
}>;
|
|
156
|
+
unused: string[];
|
|
157
|
+
allUsages?: Array<{
|
|
158
|
+
variable: string;
|
|
159
|
+
file: string;
|
|
160
|
+
line: number;
|
|
161
|
+
pattern: string;
|
|
162
|
+
context: string;
|
|
163
|
+
}>;
|
|
164
|
+
comparedAgainst?: string;
|
|
165
|
+
totalEnvVariables?: number;
|
|
166
|
+
secrets?: Array<{
|
|
167
|
+
file: string;
|
|
168
|
+
line: number;
|
|
169
|
+
message: string;
|
|
170
|
+
snippet: string;
|
|
171
|
+
}>;
|
|
172
|
+
duplicates?: {
|
|
173
|
+
env?: Array<{
|
|
174
|
+
key: string;
|
|
175
|
+
count: number;
|
|
176
|
+
}>;
|
|
177
|
+
example?: Array<{
|
|
178
|
+
key: string;
|
|
179
|
+
count: number;
|
|
180
|
+
}>;
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export interface VariableUsages {
|
|
184
|
+
[variable: string]: EnvUsage[];
|
|
185
|
+
}
|
|
86
186
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,OAAO;IACP,OAAO;IACP,UAAU;IACV,WAAW;IACX,WAAW;CACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/config/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,4BAA4B,CAAC;AAEhE,oCAAoC;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,SAAS;IACT,OAAO;IACP,OAAO;IACP,UAAU;IACV,WAAW;IACX,WAAW;CACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ScanResult } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Compares the scan result with the environment variables.
|
|
4
|
+
* @param scanResult - The result of the scan.
|
|
5
|
+
* @param envVariables - The environment variables to compare against.
|
|
6
|
+
* @returns The comparison result.
|
|
7
|
+
*/
|
|
8
|
+
export declare function compareWithEnvFiles(scanResult: ScanResult, envVariables: Record<string, string | undefined>): ScanResult;
|
|
9
|
+
//# sourceMappingURL=compareScan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareScan.d.ts","sourceRoot":"","sources":["../../../src/core/compareScan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC/C,UAAU,CAYZ"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares the scan result with the environment variables.
|
|
3
|
+
* @param scanResult - The result of the scan.
|
|
4
|
+
* @param envVariables - The environment variables to compare against.
|
|
5
|
+
* @returns The comparison result.
|
|
6
|
+
*/
|
|
7
|
+
export function compareWithEnvFiles(scanResult, envVariables) {
|
|
8
|
+
const usedVariables = new Set(scanResult.used.map((u) => u.variable));
|
|
9
|
+
const envKeys = new Set(Object.keys(envVariables));
|
|
10
|
+
const missing = [...usedVariables].filter((v) => !envKeys.has(v));
|
|
11
|
+
const unused = [...envKeys].filter((v) => !usedVariables.has(v));
|
|
12
|
+
return {
|
|
13
|
+
...scanResult,
|
|
14
|
+
missing,
|
|
15
|
+
unused,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=compareScan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compareScan.js","sourceRoot":"","sources":["../../../src/core/compareScan.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,UAAsB,EACtB,YAAgD;IAEhD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnD,MAAM,OAAO,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG,UAAU;QACb,OAAO;QACP,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ScanUsageOptions } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Determines which file to use for comparison based on provided options
|
|
4
|
+
* @param {ScanUsageOptions} opts - Scan configuration options
|
|
5
|
+
* @returns {Object|null} - The comparison file information or undefined if not found
|
|
6
|
+
*/
|
|
7
|
+
export declare function determineComparisonFile(opts: ScanUsageOptions): {
|
|
8
|
+
path: string;
|
|
9
|
+
name: string;
|
|
10
|
+
} | undefined;
|
|
11
|
+
//# sourceMappingURL=determineComparisonFile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"determineComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/core/determineComparisonFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CA0B5C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import {} from '../config/types.js';
|
|
4
|
+
import { resolveFromCwd } from './helpers/resolveFromCwd.js';
|
|
5
|
+
/**
|
|
6
|
+
* Determines which file to use for comparison based on provided options
|
|
7
|
+
* @param {ScanUsageOptions} opts - Scan configuration options
|
|
8
|
+
* @returns {Object|null} - The comparison file information or undefined if not found
|
|
9
|
+
*/
|
|
10
|
+
export function determineComparisonFile(opts) {
|
|
11
|
+
// Priority: explicit flags first, then auto-discovery
|
|
12
|
+
if (opts.examplePath) {
|
|
13
|
+
const p = resolveFromCwd(opts.cwd, opts.examplePath);
|
|
14
|
+
if (fs.existsSync(p)) {
|
|
15
|
+
return { path: p, name: path.basename(opts.examplePath) };
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
if (opts.envPath) {
|
|
19
|
+
const p = resolveFromCwd(opts.cwd, opts.envPath);
|
|
20
|
+
if (fs.existsSync(p)) {
|
|
21
|
+
return { path: p, name: path.basename(opts.envPath) };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Auto-discovery: look for common env files relative to cwd
|
|
25
|
+
const candidates = ['.env', '.env.example', '.env.local', '.env.production'];
|
|
26
|
+
for (const candidate of candidates) {
|
|
27
|
+
const fullPath = path.resolve(opts.cwd, candidate);
|
|
28
|
+
if (fs.existsSync(fullPath)) {
|
|
29
|
+
return { path: fullPath, name: candidate };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=determineComparisonFile.js.map
|
|
@@ -0,0 +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;IACtD,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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type DiffResult = {
|
|
2
|
+
missing: string[];
|
|
3
|
+
extra: string[];
|
|
4
|
+
valueMismatches: {
|
|
5
|
+
key: string;
|
|
6
|
+
expected: string;
|
|
7
|
+
actual: string;
|
|
8
|
+
}[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Compares two .env files and returns their differences.
|
|
12
|
+
*
|
|
13
|
+
* @param current - An object representing the current `.env` file (key-value pairs).
|
|
14
|
+
* @param example - An object representing the `.env.example` file (key-value pairs).
|
|
15
|
+
* @param checkValues - If true, compare values when the example has a non-empty value.
|
|
16
|
+
* @returns A `DiffResult` object containing missing, extra, and mismatched keys.
|
|
17
|
+
*/
|
|
18
|
+
export declare function diffEnv(current: Record<string, string>, example: Record<string, string>, checkValues?: boolean): DiffResult;
|
|
19
|
+
//# sourceMappingURL=diffEnv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffEnv.d.ts","sourceRoot":"","sources":["../../../src/core/diffEnv.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,WAAW,UAAQ,GAClB,UAAU,CA2BZ"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compares two .env files and returns their differences.
|
|
3
|
+
*
|
|
4
|
+
* @param current - An object representing the current `.env` file (key-value pairs).
|
|
5
|
+
* @param example - An object representing the `.env.example` file (key-value pairs).
|
|
6
|
+
* @param checkValues - If true, compare values when the example has a non-empty value.
|
|
7
|
+
* @returns A `DiffResult` object containing missing, extra, and mismatched keys.
|
|
8
|
+
*/
|
|
9
|
+
export function diffEnv(current, example, checkValues = false) {
|
|
10
|
+
const currentKeys = Object.keys(current);
|
|
11
|
+
const exampleKeys = Object.keys(example);
|
|
12
|
+
const missing = exampleKeys.filter((key) => !currentKeys.includes(key));
|
|
13
|
+
const extra = currentKeys.filter((key) => !exampleKeys.includes(key));
|
|
14
|
+
let valueMismatches = [];
|
|
15
|
+
if (checkValues) {
|
|
16
|
+
valueMismatches = exampleKeys
|
|
17
|
+
.filter((key) => {
|
|
18
|
+
return (currentKeys.includes(key) &&
|
|
19
|
+
typeof example[key] === 'string' &&
|
|
20
|
+
example[key].trim() !== '' &&
|
|
21
|
+
current[key] !== example[key]);
|
|
22
|
+
})
|
|
23
|
+
.map((key) => ({
|
|
24
|
+
key,
|
|
25
|
+
expected: example[key] ?? '',
|
|
26
|
+
actual: current[key] ?? '',
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
return { missing, extra, valueMismatches };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=diffEnv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffEnv.js","sourceRoot":"","sources":["../../../src/core/diffEnv.ts"],"names":[],"mappings":"AAUA;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CACrB,OAA+B,EAC/B,OAA+B,EAC/B,WAAW,GAAG,KAAK;IAEnB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAEzC,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtE,IAAI,eAAe,GAAkC,EAAE,CAAC;IAExD,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,GAAG,WAAW;aAC1B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YACd,OAAO,CACL,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;gBAChC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;gBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAC9B,CAAC;QACJ,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YACb,GAAG;YACH,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;YAC5B,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE;SAC3B,CAAC,CAAC,CAAC;IACR,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a path relative to the current working directory.
|
|
3
|
+
* @param cwd - Current working directory
|
|
4
|
+
* @param p - Path to resolve
|
|
5
|
+
* @returns Resolved absolute path
|
|
6
|
+
*/
|
|
7
|
+
export declare const resolveFromCwd: (cwd: string, p: string) => string;
|
|
8
|
+
//# sourceMappingURL=resolveFromCwd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFromCwd.d.ts","sourceRoot":"","sources":["../../../../src/core/helpers/resolveFromCwd.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,EAAE,GAAG,MAAM,WACN,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
/**
|
|
3
|
+
* Resolves a path relative to the current working directory.
|
|
4
|
+
* @param cwd - Current working directory
|
|
5
|
+
* @param p - Path to resolve
|
|
6
|
+
* @returns Resolved absolute path
|
|
7
|
+
*/
|
|
8
|
+
export const resolveFromCwd = (cwd, p) => path.isAbsolute(p) ? p : path.resolve(cwd, p);
|
|
9
|
+
//# sourceMappingURL=resolveFromCwd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFromCwd.js","sourceRoot":"","sources":["../../../../src/core/helpers/resolveFromCwd.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,CAAS,EAAE,EAAE,CACvD,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC"}
|