dotenv-diff 2.4.8 → 2.4.10
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 +18 -0
- package/dist/src/cli/run.js +3 -3
- 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 +26 -9
- package/dist/src/commands/compare.js.map +1 -1
- package/dist/src/commands/ensureFilesOrPrompt.d.ts.map +1 -1
- package/dist/src/commands/ensureFilesOrPrompt.js +9 -5
- package/dist/src/commands/ensureFilesOrPrompt.js.map +1 -1
- package/dist/src/commands/scanUsage.js +3 -3
- package/dist/src/commands/scanUsage.js.map +1 -1
- package/dist/src/config/constants.d.ts +7 -0
- package/dist/src/config/constants.d.ts.map +1 -1
- package/dist/src/config/constants.js +7 -0
- package/dist/src/config/constants.js.map +1 -1
- package/dist/src/config/types.d.ts +15 -6
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/config/types.js +1 -1
- package/dist/src/config/types.js.map +1 -1
- package/dist/src/core/duplicates.d.ts.map +1 -1
- package/dist/src/core/duplicates.js +0 -2
- package/dist/src/core/duplicates.js.map +1 -1
- package/dist/src/core/frameworks/sveltekitRules.d.ts.map +1 -1
- package/dist/src/core/frameworks/sveltekitRules.js +8 -2
- package/dist/src/core/frameworks/sveltekitRules.js.map +1 -1
- package/dist/src/core/patterns.js +2 -2
- package/dist/src/core/patterns.js.map +1 -1
- package/dist/src/core/scanFile.d.ts.map +1 -1
- package/dist/src/core/scanFile.js +3 -1
- package/dist/src/core/scanFile.js.map +1 -1
- package/dist/src/core/security/exampleSecretDetector.d.ts.map +1 -1
- package/dist/src/core/security/exampleSecretDetector.js +2 -13
- package/dist/src/core/security/exampleSecretDetector.js.map +1 -1
- package/dist/src/services/detectEnvExpirations.d.ts +14 -0
- package/dist/src/services/detectEnvExpirations.d.ts.map +1 -0
- package/dist/src/services/detectEnvExpirations.js +44 -0
- package/dist/src/services/detectEnvExpirations.js.map +1 -0
- package/dist/src/services/envPairing.d.ts +2 -6
- package/dist/src/services/envPairing.d.ts.map +1 -1
- package/dist/src/services/envPairing.js +6 -3
- package/dist/src/services/envPairing.js.map +1 -1
- package/dist/src/services/fileWalker.d.ts.map +1 -1
- package/dist/src/services/fileWalker.js +0 -5
- package/dist/src/services/fileWalker.js.map +1 -1
- package/dist/src/services/git.d.ts +5 -7
- package/dist/src/services/git.d.ts.map +1 -1
- package/dist/src/services/git.js +16 -17
- package/dist/src/services/git.js.map +1 -1
- package/dist/src/services/processComparisonFile.d.ts +43 -0
- package/dist/src/services/processComparisonFile.d.ts.map +1 -0
- package/dist/src/services/processComparisonFile.js +170 -0
- package/dist/src/services/processComparisonFile.js.map +1 -0
- package/dist/src/services/scanCodebase.d.ts.map +1 -1
- package/dist/src/services/scanCodebase.js +3 -2
- package/dist/src/services/scanCodebase.js.map +1 -1
- package/dist/src/ui/compare/compareJsonOutput.d.ts +23 -0
- package/dist/src/ui/compare/compareJsonOutput.d.ts.map +1 -0
- package/dist/src/ui/compare/compareJsonOutput.js +45 -0
- package/dist/src/ui/compare/compareJsonOutput.js.map +1 -0
- package/dist/src/ui/compare/printErrorNotFound.d.ts.map +1 -1
- package/dist/src/ui/compare/printErrorNotFound.js +3 -0
- package/dist/src/ui/compare/printErrorNotFound.js.map +1 -1
- package/dist/src/ui/compare/printHeader.d.ts +1 -1
- package/dist/src/ui/compare/printHeader.d.ts.map +1 -1
- package/dist/src/ui/compare/printHeader.js +1 -4
- package/dist/src/ui/compare/printHeader.js.map +1 -1
- package/dist/src/ui/scan/printStats.d.ts.map +1 -1
- package/dist/src/ui/scan/printStats.js +1 -1
- package/dist/src/ui/scan/printStats.js.map +1 -1
- package/dist/src/ui/scan/scanJsonOutput.d.ts +85 -0
- package/dist/src/ui/scan/scanJsonOutput.d.ts.map +1 -0
- package/dist/src/ui/scan/scanJsonOutput.js +97 -0
- package/dist/src/ui/scan/scanJsonOutput.js.map +1 -0
- package/dist/src/ui/shared/printGitignore.d.ts +4 -3
- package/dist/src/ui/shared/printGitignore.d.ts.map +1 -1
- package/dist/src/ui/shared/printGitignore.js +2 -1
- package/dist/src/ui/shared/printGitignore.js.map +1 -1
- package/package.json +6 -6
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PROVIDER_PATTERNS
|
|
1
|
+
import { PROVIDER_PATTERNS } from './secretDetectors.js';
|
|
2
2
|
import { shannonEntropyNormalized } from './entropy.js';
|
|
3
3
|
/**
|
|
4
4
|
* Detects potential secrets in a .env.example file.
|
|
@@ -32,18 +32,7 @@ export function detectSecretsInExample(env) {
|
|
|
32
32
|
continue;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
// 3 — Check
|
|
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)
|
|
35
|
+
// 3 — Check entropy (high randomness → real secret)
|
|
47
36
|
if (value.length >= 24) {
|
|
48
37
|
const entropy = shannonEntropyNormalized(value);
|
|
49
38
|
if (entropy > 0.8) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../../src/core/security/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../../src/core/security/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,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,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ExpireWarning } from '../config/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Detects expiration warnings in a dotenv file.
|
|
4
|
+
* fx:
|
|
5
|
+
*
|
|
6
|
+
* # @expire 2024-12-31
|
|
7
|
+
* API_KEY=
|
|
8
|
+
*
|
|
9
|
+
* This will generate a warning that API_KEY expires on 2024-12-31.
|
|
10
|
+
* @param filePath - Path to the dotenv file
|
|
11
|
+
* @returns Array of expiration warnings
|
|
12
|
+
*/
|
|
13
|
+
export declare function detectEnvExpirations(filePath: string): ExpireWarning[];
|
|
14
|
+
//# sourceMappingURL=detectEnvExpirations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectEnvExpirations.d.ts","sourceRoot":"","sources":["../../../src/services/detectEnvExpirations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA0CtE"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Detects expiration warnings in a dotenv file.
|
|
4
|
+
* fx:
|
|
5
|
+
*
|
|
6
|
+
* # @expire 2024-12-31
|
|
7
|
+
* API_KEY=
|
|
8
|
+
*
|
|
9
|
+
* This will generate a warning that API_KEY expires on 2024-12-31.
|
|
10
|
+
* @param filePath - Path to the dotenv file
|
|
11
|
+
* @returns Array of expiration warnings
|
|
12
|
+
*/
|
|
13
|
+
export function detectEnvExpirations(filePath) {
|
|
14
|
+
const lines = fs.readFileSync(filePath, 'utf8').split('\n');
|
|
15
|
+
const warnings = [];
|
|
16
|
+
const reg = /(\/\/|#)?\s*@?expire\s+(\d{4}-\d{2}-\d{2})/i;
|
|
17
|
+
let pendingExpire = null;
|
|
18
|
+
for (const raw of lines) {
|
|
19
|
+
const line = raw.trim();
|
|
20
|
+
const expireMatch = line.match(reg);
|
|
21
|
+
if (expireMatch) {
|
|
22
|
+
pendingExpire = expireMatch[2] ?? null; // capture dato
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
const isEnvKey = /^[A-Za-z0-9_.-]+=/.test(line);
|
|
26
|
+
if (isEnvKey) {
|
|
27
|
+
const key = line.split('=')[0];
|
|
28
|
+
if (key && pendingExpire) {
|
|
29
|
+
const expireDate = new Date(pendingExpire);
|
|
30
|
+
const now = new Date();
|
|
31
|
+
const diffMs = expireDate.getTime() - now.getTime();
|
|
32
|
+
const diffDays = Math.ceil(diffMs / (1000 * 60 * 60 * 24));
|
|
33
|
+
warnings.push({
|
|
34
|
+
key,
|
|
35
|
+
date: pendingExpire,
|
|
36
|
+
daysLeft: diffDays,
|
|
37
|
+
});
|
|
38
|
+
pendingExpire = null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return warnings;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=detectEnvExpirations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detectEnvExpirations.js","sourceRoot":"","sources":["../../../src/services/detectEnvExpirations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,MAAM,GAAG,GAAG,6CAA6C,CAAC;IAE1D,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe;YACvD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAE3D,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBAEH,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import type { Discovery } from '
|
|
1
|
+
import type { FilePair, Discovery } from '../config/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Pairs each environment file with its corresponding example file.
|
|
4
4
|
* @param d - The discovery object containing environment and example file information.
|
|
5
5
|
* @returns An array of objects containing the environment name, path, and example path.
|
|
6
6
|
*/
|
|
7
|
-
export declare function
|
|
8
|
-
envName: string;
|
|
9
|
-
envPath: string;
|
|
10
|
-
examplePath: string;
|
|
11
|
-
}>;
|
|
7
|
+
export declare function envPairing(d: Discovery): Array<FilePair>;
|
|
12
8
|
//# sourceMappingURL=envPairing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envPairing.d.ts","sourceRoot":"","sources":["../../../src/services/envPairing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"envPairing.d.ts","sourceRoot":"","sources":["../../../src/services/envPairing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAgCxD"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
+
import { DEFAULT_ENV_FILE, DEFAULT_EXAMPLE_FILE } from '../config/constants.js';
|
|
3
4
|
/**
|
|
4
5
|
* Pairs each environment file with its corresponding example file.
|
|
5
6
|
* @param d - The discovery object containing environment and example file information.
|
|
6
7
|
* @returns An array of objects containing the environment name, path, and example path.
|
|
7
8
|
*/
|
|
8
|
-
export function
|
|
9
|
+
export function envPairing(d) {
|
|
9
10
|
const pairs = [];
|
|
10
11
|
const list = d.envFiles.length > 0 ? d.envFiles : [d.primaryEnv];
|
|
11
12
|
for (const envName of list) {
|
|
@@ -14,8 +15,10 @@ export function pairWithExample(d) {
|
|
|
14
15
|
if (envAbs === path.resolve(d.cwd, d.primaryExample))
|
|
15
16
|
continue;
|
|
16
17
|
}
|
|
17
|
-
const suffix = envName ===
|
|
18
|
-
const exampleName = suffix
|
|
18
|
+
const suffix = envName === DEFAULT_ENV_FILE ? '' : envName.replace(DEFAULT_ENV_FILE, '');
|
|
19
|
+
const exampleName = suffix
|
|
20
|
+
? `${DEFAULT_EXAMPLE_FILE}${suffix}`
|
|
21
|
+
: d.primaryExample;
|
|
19
22
|
const envPathCurrent = path.resolve(d.cwd, envName);
|
|
20
23
|
const examplePathCurrent = d.exampleFlag && !d.envFlag
|
|
21
24
|
? path.resolve(d.cwd, d.primaryExample)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"envPairing.js","sourceRoot":"","sources":["../../../src/services/envPairing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"envPairing.js","sourceRoot":"","sources":["../../../src/services/envPairing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,CAAY;IACrC,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEjE,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC;gBAAE,SAAS;QACjE,CAAC;QAED,MAAM,MAAM,GACV,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,MAAM;YACxB,CAAC,CAAC,GAAG,oBAAoB,GAAG,MAAM,EAAE;YACpC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAErB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,kBAAkB,GACtB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAE9C,KAAK,CAAC,IAAI,CAAC;YACT,OAAO;YACP,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileWalker.d.ts","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"AAQA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CA+EnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAWzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAkBf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAmBT;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,
|
|
1
|
+
{"version":3,"file":"fileWalker.d.ts","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"AAQA,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CA+EnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAWzD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,MAAM,GAAG,IAAI,CAkBf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6BnB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAmBT;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAgBT;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgB7E"}
|
|
@@ -211,11 +211,6 @@ export function shouldExclude(fileName, relativePath, patterns) {
|
|
|
211
211
|
if (pattern.includes('*')) {
|
|
212
212
|
return matchesGlobPattern(relativePath, pattern);
|
|
213
213
|
}
|
|
214
|
-
// Special case for test files
|
|
215
|
-
if (pattern.includes('.test.') && fileName.includes('.test.'))
|
|
216
|
-
return true;
|
|
217
|
-
if (pattern.includes('.spec.') && fileName.includes('.spec.'))
|
|
218
|
-
return true;
|
|
219
214
|
return false;
|
|
220
215
|
});
|
|
221
216
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fileWalker.js","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,IAAI,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,qBAAqB,CAAC;AAQ7B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAe,EACf,IAAsB;IAEtB,0DAA0D;IAC1D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,UAAU,GACd,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QACrC,CAAC,CAAC,CAAC,GAAG,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACvC,CAAC,CAAC,eAAe,CAAC;IACtB,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IAEjC,uFAAuF;IACvF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,eAAe;YAAE,SAAS;QAC/B,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC1C,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,IAAI,CAAC,QAAgB;QAClC,kCAAkC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEhB,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAExD,kFAAkF;YAClF,IACE,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE;gBACxC,GAAG,wBAAwB;gBAC3B,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;aACxB,CAAC,EACF,CAAC;gBACD,SAAS;YACX,CAAC;YAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;iBAAM,IACL,KAAK,CAAC,MAAM,EAAE;gBACd,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,eAAe,CAAC,EAC1D,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IAEpB,gDAAgD;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,uFAAuF;IACvF,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAE,CAAC,CAAC,KAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAe,EACf,OAAe;IAEf,oDAAoD;IACpD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB;IAC3D,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAErE,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC;QAClC,IAAI,EAAE,CAAC,MAAM,EAAE;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,GAAG,CAAC,WAAW,EAAE;gBAAE,OAAO,GAAG,CAAC;QACpC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAe,EACf,QAAkB;IAElB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACnD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,UAAU,IAAI,CAAC,UAAkB;QACpC,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YAEtD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;iBAAM,IACL,KAAK,CAAC,MAAM,EAAE;gBACd,aAAa,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,EACjD,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,0BAA0B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,YAAoB,EACpB,QAAkB;IAElB,2DAA2D;IAC3D,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,0BAA0B,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,2BAA2B;YAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YACxD,OAAO,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,+BAA+B;YAC/B,OAAO,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACtE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAgB,EAChB,YAAoB,EACpB,QAAkB;IAElB,+DAA+D;IAC/D,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAC/B,0CAA0C;QAC1C,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAEtC,wBAAwB;QACxB,IAAI,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QAEhD,gDAAgD;QAChD,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,kBAAkB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC/C,IAAI,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpD,IAAI,YAAY,GAAG,iBAAiB;SACjC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;SACpC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE1B,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,YAAY,GAAG,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { GitignoreIssue } from '../config/types.js';
|
|
1
2
|
interface GitignoreCheckOptions {
|
|
2
3
|
/** Project root directory (default: process.cwd()) */
|
|
3
4
|
cwd?: string;
|
|
@@ -17,12 +18,9 @@ export declare function isGitRepo(cwd?: string): boolean;
|
|
|
17
18
|
* @returns True if the env file is ignored, false if not, or null if no .gitignore exists.
|
|
18
19
|
*/
|
|
19
20
|
export declare function isEnvIgnoredByGit(options?: GitignoreCheckOptions): boolean | null;
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* - Skips if not in a git repo or if .env does not exist.
|
|
24
|
-
* @param options - Options for the warning behavior.
|
|
25
|
-
* @returns console.log messages or void
|
|
21
|
+
/** Warns the user if the .env file is not properly ignored by git
|
|
22
|
+
* @param options - Options for the gitignore check.
|
|
23
|
+
* @returns void
|
|
26
24
|
*/
|
|
27
25
|
export declare function warnIfEnvNotIgnored(options?: GitignoreCheckOptions): void;
|
|
28
26
|
/**
|
|
@@ -32,7 +30,7 @@ export declare function warnIfEnvNotIgnored(options?: GitignoreCheckOptions): vo
|
|
|
32
30
|
* @returns Null if no issue, otherwise the reason for the issue.
|
|
33
31
|
*/
|
|
34
32
|
export declare function checkGitignoreStatus(options?: GitignoreCheckOptions): {
|
|
35
|
-
reason:
|
|
33
|
+
reason: GitignoreIssue;
|
|
36
34
|
} | null;
|
|
37
35
|
/** Find the git repository root starting from startDir (walk up until ".git").
|
|
38
36
|
* @param startDir The directory to start searching from
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,UAAU,qBAAqB;IAC7B,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,+DAA+D;AAC/D,wBAAgB,SAAS,CAAC,GAAG,SAAgB,GAAG,OAAO,CAEtD;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,qBAA0B,GAClC,OAAO,GAAG,IAAI,CAsBhB;AAmCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,IAAI,CA6B7E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG;IACzE,MAAM,EAAE,cAAc,CAAC;CACxB,GAAG,IAAI,CAsBP;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU3D"}
|
package/dist/src/services/git.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { printGitignoreWarning } from '../ui/shared/printGitignore.js';
|
|
4
|
-
import { DEFAULT_ENV_FILE, GITIGNORE_FILE, GIT_DIR, } from '../config/constants.js';
|
|
4
|
+
import { DEFAULT_ENV_FILE, DEFAULT_EXAMPLE_FILE, GITIGNORE_FILE, GIT_DIR, GITIGNORE_ISSUES, } from '../config/constants.js';
|
|
5
5
|
/** Are we in a git repo? (checks for .git directory in cwd) */
|
|
6
6
|
export function isGitRepo(cwd = process.cwd()) {
|
|
7
7
|
return fs.existsSync(path.resolve(cwd, GIT_DIR));
|
|
@@ -61,34 +61,30 @@ function getCandidatePatterns(envFile = DEFAULT_ENV_FILE) {
|
|
|
61
61
|
function matchesCandidate(pattern, envFile) {
|
|
62
62
|
return getCandidatePatterns(envFile).has(pattern);
|
|
63
63
|
}
|
|
64
|
-
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* - Skips if not in a git repo or if .env does not exist.
|
|
68
|
-
* @param options - Options for the warning behavior.
|
|
69
|
-
* @returns console.log messages or void
|
|
64
|
+
/** Warns the user if the .env file is not properly ignored by git
|
|
65
|
+
* @param options - Options for the gitignore check.
|
|
66
|
+
* @returns void
|
|
70
67
|
*/
|
|
71
68
|
export function warnIfEnvNotIgnored(options = {}) {
|
|
72
69
|
const { cwd = process.cwd(), envFile = DEFAULT_ENV_FILE, log = console.log, } = options;
|
|
73
70
|
const envPath = path.resolve(cwd, envFile);
|
|
74
71
|
if (!fs.existsSync(envPath))
|
|
75
|
-
return;
|
|
72
|
+
return;
|
|
76
73
|
if (!isGitRepo(cwd))
|
|
77
|
-
return;
|
|
78
|
-
const
|
|
79
|
-
if (
|
|
74
|
+
return;
|
|
75
|
+
const ignored = isEnvIgnoredByGit({ cwd, envFile });
|
|
76
|
+
if (ignored === null) {
|
|
80
77
|
printGitignoreWarning({
|
|
81
78
|
envFile,
|
|
82
|
-
reason:
|
|
79
|
+
reason: GITIGNORE_ISSUES.NO_GITIGNORE,
|
|
83
80
|
log,
|
|
84
81
|
});
|
|
85
82
|
return;
|
|
86
83
|
}
|
|
87
|
-
|
|
88
|
-
if (ignored === false || ignored === null) {
|
|
84
|
+
if (ignored === false) {
|
|
89
85
|
printGitignoreWarning({
|
|
90
86
|
envFile,
|
|
91
|
-
reason:
|
|
87
|
+
reason: GITIGNORE_ISSUES.NOT_IGNORED,
|
|
92
88
|
log,
|
|
93
89
|
});
|
|
94
90
|
}
|
|
@@ -101,6 +97,9 @@ export function warnIfEnvNotIgnored(options = {}) {
|
|
|
101
97
|
*/
|
|
102
98
|
export function checkGitignoreStatus(options = {}) {
|
|
103
99
|
const { cwd = process.cwd(), envFile = DEFAULT_ENV_FILE } = options;
|
|
100
|
+
// .env.example is not expected to be gitignored
|
|
101
|
+
if (envFile === DEFAULT_EXAMPLE_FILE)
|
|
102
|
+
return null;
|
|
104
103
|
const envPath = path.resolve(cwd, envFile);
|
|
105
104
|
if (!fs.existsSync(envPath))
|
|
106
105
|
return null;
|
|
@@ -108,11 +107,11 @@ export function checkGitignoreStatus(options = {}) {
|
|
|
108
107
|
return null;
|
|
109
108
|
const gitignorePath = path.resolve(cwd, GITIGNORE_FILE);
|
|
110
109
|
if (!fs.existsSync(gitignorePath)) {
|
|
111
|
-
return { reason:
|
|
110
|
+
return { reason: GITIGNORE_ISSUES.NO_GITIGNORE };
|
|
112
111
|
}
|
|
113
112
|
const ignored = isEnvIgnoredByGit({ cwd, envFile });
|
|
114
113
|
if (ignored === false || ignored === null) {
|
|
115
|
-
return { reason:
|
|
114
|
+
return { reason: GITIGNORE_ISSUES.NOT_IGNORED };
|
|
116
115
|
}
|
|
117
116
|
return null;
|
|
118
117
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,OAAO,
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/services/processComparisonFile.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EAEV,gBAAgB,EAChB,SAAS,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"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { parseEnvFile } from '../core/parseEnv.js';
|
|
3
|
+
import { filterIgnoredKeys } from '../core/filterIgnoredKeys.js';
|
|
4
|
+
import { compareWithEnvFiles } from '../core/compareScan.js';
|
|
5
|
+
import { findDuplicateKeys } from '../core/duplicates.js';
|
|
6
|
+
import { applyFixes } from '../core/fixEnv.js';
|
|
7
|
+
import { toUpperSnakeCase } from '../core/helpers/toUpperSnakeCase.js';
|
|
8
|
+
import { resolveFromCwd } from '../core/helpers/resolveFromCwd.js';
|
|
9
|
+
import { detectEnvExpirations } from './detectEnvExpirations.js';
|
|
10
|
+
import { detectInconsistentNaming } from '../core/detectInconsistentNaming.js';
|
|
11
|
+
/**
|
|
12
|
+
* Process comparison file: parse env, check duplicates, check missing keys, apply fixes
|
|
13
|
+
* @param scanResult - Current scan result
|
|
14
|
+
* @param compareFile - File to compare against
|
|
15
|
+
* @param opts - Scan options
|
|
16
|
+
* @returns Processed comparison result
|
|
17
|
+
*/
|
|
18
|
+
export function processComparisonFile(scanResult, compareFile, opts) {
|
|
19
|
+
let envVariables = {};
|
|
20
|
+
let comparedAgainst = '';
|
|
21
|
+
let duplicatesFound = false;
|
|
22
|
+
let dupsEnv = [];
|
|
23
|
+
let dupsEx = [];
|
|
24
|
+
let fixApplied = false;
|
|
25
|
+
let removedDuplicates = [];
|
|
26
|
+
let addedEnv = [];
|
|
27
|
+
let addedExample = [];
|
|
28
|
+
let gitignoreUpdated = false;
|
|
29
|
+
let exampleFull = undefined;
|
|
30
|
+
let uppercaseWarnings = [];
|
|
31
|
+
let expireWarnings = [];
|
|
32
|
+
let inconsistentNamingWarnings = [];
|
|
33
|
+
try {
|
|
34
|
+
// Load .env.example (if exists)
|
|
35
|
+
if (opts.examplePath) {
|
|
36
|
+
const examplePath = resolveFromCwd(opts.cwd, opts.examplePath);
|
|
37
|
+
if (fs.existsSync(examplePath)) {
|
|
38
|
+
exampleFull = parseEnvFile(examplePath);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Parse and filter env file
|
|
42
|
+
const envFull = parseEnvFile(compareFile.path);
|
|
43
|
+
const envKeys = filterIgnoredKeys(Object.keys(envFull), opts.ignore, opts.ignoreRegex);
|
|
44
|
+
envVariables = Object.fromEntries(envKeys.map((k) => [k, envFull[k]]));
|
|
45
|
+
scanResult = compareWithEnvFiles(scanResult, envVariables);
|
|
46
|
+
comparedAgainst = compareFile.name;
|
|
47
|
+
// Detect uppercase keys
|
|
48
|
+
if (opts.uppercaseKeys) {
|
|
49
|
+
for (const key of envKeys) {
|
|
50
|
+
if (!/^[A-Z0-9_]+$/.test(key)) {
|
|
51
|
+
uppercaseWarnings.push({ key, suggestion: toUpperSnakeCase(key) });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// Find duplicates
|
|
56
|
+
if (!opts.allowDuplicates) {
|
|
57
|
+
const duplicateResults = checkDuplicates(compareFile, opts);
|
|
58
|
+
dupsEnv = duplicateResults.dupsEnv;
|
|
59
|
+
dupsEx = duplicateResults.dupsEx;
|
|
60
|
+
duplicatesFound = dupsEnv.length > 0 || dupsEx.length > 0;
|
|
61
|
+
}
|
|
62
|
+
if (opts.expireWarnings) {
|
|
63
|
+
expireWarnings = detectEnvExpirations(compareFile.path);
|
|
64
|
+
}
|
|
65
|
+
// Check for inconsistent naming across env + example keys
|
|
66
|
+
if (opts.inconsistentNamingWarnings) {
|
|
67
|
+
const envKeysList = Object.keys(envFull);
|
|
68
|
+
const exampleKeysList = exampleFull ? Object.keys(exampleFull) : [];
|
|
69
|
+
// Combine all keys for naming analysis
|
|
70
|
+
const allKeys = [...envKeysList, ...exampleKeysList];
|
|
71
|
+
inconsistentNamingWarnings = detectInconsistentNaming(allKeys);
|
|
72
|
+
}
|
|
73
|
+
// Apply fixes (both duplicates + missing keys + gitignore)
|
|
74
|
+
if (opts.fix &&
|
|
75
|
+
(duplicatesFound || scanResult.missing.length > 0 || true)) {
|
|
76
|
+
const { changed, result } = applyFixes({
|
|
77
|
+
envPath: compareFile.path,
|
|
78
|
+
examplePath: opts.examplePath
|
|
79
|
+
? resolveFromCwd(opts.cwd, opts.examplePath)
|
|
80
|
+
: '',
|
|
81
|
+
missingKeys: scanResult.missing,
|
|
82
|
+
duplicateKeys: dupsEnv.map((d) => d.key),
|
|
83
|
+
ensureGitignore: true,
|
|
84
|
+
});
|
|
85
|
+
if (changed) {
|
|
86
|
+
fixApplied = true;
|
|
87
|
+
removedDuplicates = result.removedDuplicates;
|
|
88
|
+
addedEnv = result.addedEnv;
|
|
89
|
+
addedExample = result.addedExample;
|
|
90
|
+
gitignoreUpdated = result.gitignoreUpdated;
|
|
91
|
+
scanResult.missing = [];
|
|
92
|
+
dupsEnv = [];
|
|
93
|
+
dupsEx = [];
|
|
94
|
+
duplicatesFound = false;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Keep duplicates for output if not fixed
|
|
98
|
+
if (duplicatesFound && (!opts.fix || !fixApplied)) {
|
|
99
|
+
if (!scanResult.duplicates)
|
|
100
|
+
scanResult.duplicates = {};
|
|
101
|
+
if (dupsEnv.length > 0)
|
|
102
|
+
scanResult.duplicates.env = dupsEnv;
|
|
103
|
+
if (dupsEx.length > 0)
|
|
104
|
+
scanResult.duplicates.example = dupsEx;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const errorMessage = `Could not read ${compareFile.name}: ${compareFile.path} - ${error}`;
|
|
109
|
+
return {
|
|
110
|
+
scanResult,
|
|
111
|
+
envVariables,
|
|
112
|
+
comparedAgainst,
|
|
113
|
+
duplicatesFound,
|
|
114
|
+
dupsEnv,
|
|
115
|
+
dupsEx,
|
|
116
|
+
fixApplied,
|
|
117
|
+
removedDuplicates,
|
|
118
|
+
addedEnv,
|
|
119
|
+
addedExample,
|
|
120
|
+
gitignoreUpdated,
|
|
121
|
+
exampleFull,
|
|
122
|
+
uppercaseWarnings,
|
|
123
|
+
expireWarnings,
|
|
124
|
+
inconsistentNamingWarnings,
|
|
125
|
+
error: {
|
|
126
|
+
message: errorMessage,
|
|
127
|
+
shouldExit: opts.isCiMode ?? false,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
return {
|
|
132
|
+
scanResult,
|
|
133
|
+
envVariables,
|
|
134
|
+
comparedAgainst,
|
|
135
|
+
duplicatesFound,
|
|
136
|
+
dupsEnv,
|
|
137
|
+
dupsEx,
|
|
138
|
+
fixApplied,
|
|
139
|
+
removedDuplicates,
|
|
140
|
+
addedEnv,
|
|
141
|
+
addedExample,
|
|
142
|
+
gitignoreUpdated,
|
|
143
|
+
exampleFull,
|
|
144
|
+
uppercaseWarnings,
|
|
145
|
+
expireWarnings,
|
|
146
|
+
inconsistentNamingWarnings,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check for duplicate keys in env and example files
|
|
151
|
+
* @param compareFile - The file to compare against
|
|
152
|
+
* @param opts - Scan options
|
|
153
|
+
* @returns Object containing duplicate keys in env and example files
|
|
154
|
+
*/
|
|
155
|
+
function checkDuplicates(compareFile, opts) {
|
|
156
|
+
const isIgnored = (key) => !opts.ignore.includes(key) && !opts.ignoreRegex.some((rx) => rx.test(key));
|
|
157
|
+
// Duplicates in main env file
|
|
158
|
+
const dupsEnv = findDuplicateKeys(compareFile.path).filter(({ key }) => isIgnored(key));
|
|
159
|
+
// Duplicates in example file
|
|
160
|
+
let dupsEx = [];
|
|
161
|
+
if (opts.examplePath) {
|
|
162
|
+
const examplePath = resolveFromCwd(opts.cwd, opts.examplePath);
|
|
163
|
+
const exampleIsDifferentFile = fs.existsSync(examplePath) && examplePath !== compareFile.path;
|
|
164
|
+
if (exampleIsDifferentFile) {
|
|
165
|
+
dupsEx = findDuplicateKeys(examplePath).filter(({ key }) => isIgnored(key));
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return { dupsEnv, dupsEx };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=processComparisonFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"processComparisonFile.js","sourceRoot":"","sources":["../../../src/services/processComparisonFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanCodebase.d.ts","sourceRoot":"","sources":["../../../src/services/scanCodebase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"scanCodebase.d.ts","sourceRoot":"","sources":["../../../src/services/scanCodebase.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAW5E;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsEzE"}
|
|
@@ -5,6 +5,7 @@ import { DEFAULT_EXCLUDE_PATTERNS } from '../core/patterns.js';
|
|
|
5
5
|
import { scanFile } from '../core/scanFile.js';
|
|
6
6
|
import { findFiles } from './fileWalker.js';
|
|
7
7
|
import { printProgress } from '../ui/scan/printProgress.js';
|
|
8
|
+
import { normalizePath } from '../core/helpers/normalizePath.js';
|
|
8
9
|
/**
|
|
9
10
|
* Scans the codebase for environment variable usage based on the provided options.
|
|
10
11
|
* @param opts - Options for scanning the codebase.
|
|
@@ -14,7 +15,7 @@ export async function scanCodebase(opts) {
|
|
|
14
15
|
const files = await findFiles(opts.cwd, {
|
|
15
16
|
include: opts.include,
|
|
16
17
|
exclude: [...DEFAULT_EXCLUDE_PATTERNS, ...opts.exclude],
|
|
17
|
-
...(opts.files
|
|
18
|
+
...(opts.files && opts.files.length > 0 && { files: opts.files }),
|
|
18
19
|
});
|
|
19
20
|
const allUsages = [];
|
|
20
21
|
let filesScanned = 0;
|
|
@@ -28,7 +29,7 @@ export async function scanCodebase(opts) {
|
|
|
28
29
|
const fileUsages = scanFile(filePath, content, opts);
|
|
29
30
|
allUsages.push(...fileUsages);
|
|
30
31
|
// Store file content for later use (e.g., framework validation 'use client')
|
|
31
|
-
const relativePath = path.relative(opts.cwd, filePath);
|
|
32
|
+
const relativePath = normalizePath(path.relative(opts.cwd, filePath));
|
|
32
33
|
fileContentMap.set(relativePath, content);
|
|
33
34
|
// Detect secrets in the file content
|
|
34
35
|
const secrets = safeDetectSecrets(relativePath, content, opts);
|