dotenv-diff 2.2.0 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -19
- package/dist/bin/dotenv-diff.d.ts +1 -0
- package/dist/bin/dotenv-diff.d.ts.map +1 -0
- package/dist/bin/dotenv-diff.js +1 -0
- package/dist/bin/dotenv-diff.js.map +1 -0
- package/dist/src/cli/program.d.ts +1 -0
- package/dist/src/cli/program.d.ts.map +1 -0
- package/dist/src/cli/program.js +1 -0
- package/dist/src/cli/program.js.map +1 -0
- package/dist/src/cli/run.d.ts +5 -0
- package/dist/src/cli/run.d.ts.map +1 -0
- package/dist/src/cli/run.js +11 -6
- package/dist/src/cli/run.js.map +1 -0
- package/dist/src/commands/compare.d.ts +7 -0
- package/dist/src/commands/compare.d.ts.map +1 -0
- package/dist/src/commands/compare.js +9 -2
- package/dist/src/commands/compare.js.map +1 -0
- package/dist/src/commands/init.d.ts +6 -0
- package/dist/src/commands/init.d.ts.map +1 -0
- package/dist/src/commands/init.js +6 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/scanUsage.d.ts +5 -2
- package/dist/src/commands/scanUsage.d.ts.map +1 -0
- package/dist/src/commands/scanUsage.js +28 -8
- package/dist/src/commands/scanUsage.js.map +1 -0
- package/dist/src/config/options.d.ts +7 -1
- package/dist/src/config/options.d.ts.map +1 -0
- package/dist/src/config/options.js +23 -4
- package/dist/src/config/options.js.map +1 -0
- package/dist/src/config/types.d.ts +13 -2
- package/dist/src/config/types.d.ts.map +1 -0
- package/dist/src/config/types.js +2 -0
- package/dist/src/config/types.js.map +1 -0
- package/dist/src/core/entropy.d.ts +7 -0
- package/dist/src/core/entropy.d.ts.map +1 -0
- package/dist/src/core/entropy.js +7 -0
- package/dist/src/core/entropy.js.map +1 -0
- package/dist/src/core/filterIgnoredKeys.d.ts +8 -0
- package/dist/src/core/filterIgnoredKeys.d.ts.map +1 -0
- package/dist/src/core/filterIgnoredKeys.js +8 -0
- package/dist/src/core/filterIgnoredKeys.js.map +1 -0
- package/dist/src/core/fixEnv.d.ts +9 -0
- package/dist/src/core/fixEnv.d.ts.map +1 -0
- package/dist/src/core/fixEnv.js +12 -1
- package/dist/src/core/fixEnv.js.map +1 -0
- package/dist/src/core/secretDetectors.d.ts +7 -0
- package/dist/src/core/secretDetectors.d.ts.map +1 -0
- package/dist/src/core/secretDetectors.js +40 -5
- package/dist/src/core/secretDetectors.js.map +1 -0
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +7 -3
- package/dist/src/index.js.map +1 -0
- package/dist/src/lib/diffEnv.d.ts +1 -0
- package/dist/src/lib/diffEnv.d.ts.map +1 -0
- package/dist/src/lib/diffEnv.js +4 -2
- package/dist/src/lib/diffEnv.js.map +1 -0
- package/dist/src/lib/parseEnv.d.ts +1 -0
- package/dist/src/lib/parseEnv.d.ts.map +1 -0
- package/dist/src/lib/parseEnv.js +1 -0
- package/dist/src/lib/parseEnv.js.map +1 -0
- package/dist/src/services/codeBaseScanner.d.ts +1 -0
- package/dist/src/services/codeBaseScanner.d.ts.map +1 -0
- package/dist/src/services/codeBaseScanner.js +6 -2
- package/dist/src/services/codeBaseScanner.js.map +1 -0
- package/dist/src/services/duplicates.d.ts +3 -0
- package/dist/src/services/duplicates.d.ts.map +1 -0
- package/dist/src/services/duplicates.js +3 -0
- package/dist/src/services/duplicates.js.map +1 -0
- package/dist/src/services/envDiscovery.d.ts +13 -0
- package/dist/src/services/envDiscovery.d.ts.map +1 -0
- package/dist/src/services/envDiscovery.js +8 -0
- package/dist/src/services/envDiscovery.js.map +1 -0
- package/dist/src/services/envPairing.d.ts +6 -0
- package/dist/src/services/envPairing.d.ts.map +1 -0
- package/dist/src/services/envPairing.js +6 -0
- package/dist/src/services/envPairing.js.map +1 -0
- package/dist/src/services/git.d.ts +5 -0
- package/dist/src/services/git.d.ts.map +1 -0
- package/dist/src/services/git.js +5 -0
- package/dist/src/services/git.js.map +1 -0
- package/dist/src/ui/prompts.d.ts +12 -0
- package/dist/src/ui/prompts.d.ts.map +1 -0
- package/dist/src/ui/prompts.js +12 -0
- package/dist/src/ui/prompts.js.map +1 -0
- package/package.json +2 -2
package/dist/src/core/entropy.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculates the normalized Shannon entropy of a string.
|
|
3
|
+
* Shannon entropy is a measure of the unpredictability or randomness of a string.
|
|
4
|
+
* @param s - The input string.
|
|
5
|
+
* @returns The normalized Shannon entropy (between 0 and 1).
|
|
6
|
+
*/
|
|
1
7
|
export function shannonEntropyNormalized(s) {
|
|
2
8
|
if (!s)
|
|
3
9
|
return 0;
|
|
@@ -14,3 +20,4 @@ export function shannonEntropyNormalized(s) {
|
|
|
14
20
|
const maxH = Math.log2(72);
|
|
15
21
|
return Math.min(1, H / maxH);
|
|
16
22
|
}
|
|
23
|
+
//# sourceMappingURL=entropy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entropy.js","sourceRoot":"","sources":["../../../src/core/entropy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,CAAS;IAChD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,6CAA6C;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC"}
|
|
@@ -1 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters out keys that are in the ignore list or match any of the ignore regex patterns.
|
|
3
|
+
* @param keys - The list of keys to filter.
|
|
4
|
+
* @param ignore - The list of keys to ignore.
|
|
5
|
+
* @param ignoreRegex - The list of regex patterns to ignore.
|
|
6
|
+
* @returns The filtered list of keys.
|
|
7
|
+
*/
|
|
1
8
|
export declare function filterIgnoredKeys(keys: string[], ignore: string[], ignoreRegex: RegExp[]): string[];
|
|
9
|
+
//# sourceMappingURL=filterIgnoredKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterIgnoredKeys.d.ts","sourceRoot":"","sources":["../../../src/core/filterIgnoredKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,MAAM,EAAE,EAChB,WAAW,EAAE,MAAM,EAAE,GACpB,MAAM,EAAE,CAIV"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filters out keys that are in the ignore list or match any of the ignore regex patterns.
|
|
3
|
+
* @param keys - The list of keys to filter.
|
|
4
|
+
* @param ignore - The list of keys to ignore.
|
|
5
|
+
* @param ignoreRegex - The list of regex patterns to ignore.
|
|
6
|
+
* @returns The filtered list of keys.
|
|
7
|
+
*/
|
|
1
8
|
export function filterIgnoredKeys(keys, ignore, ignoreRegex) {
|
|
2
9
|
return keys.filter((k) => !ignore.includes(k) && !ignoreRegex.some((rx) => rx.test(k)));
|
|
3
10
|
}
|
|
11
|
+
//# sourceMappingURL=filterIgnoredKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filterIgnoredKeys.js","sourceRoot":"","sources":["../../../src/core/filterIgnoredKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAc,EACd,MAAgB,EAChB,WAAqB;IAErB,OAAO,IAAI,CAAC,MAAM,CAChB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACpE,CAAC;AACJ,CAAC"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Applies fixes to the .env and .env.example files based on the detected issues.
|
|
3
|
+
* @param envPath - The path to the .env file.
|
|
4
|
+
* @param examplePath - The path to the .env.example file.
|
|
5
|
+
* @param missingKeys - The list of missing keys to add.
|
|
6
|
+
* @param duplicateKeys - The list of duplicate keys to remove.
|
|
7
|
+
* @returns An object indicating whether changes were made and details of the changes.
|
|
8
|
+
*/
|
|
1
9
|
export declare function applyFixes({ envPath, examplePath, missingKeys, duplicateKeys, }: {
|
|
2
10
|
envPath: string;
|
|
3
11
|
examplePath: string;
|
|
@@ -11,3 +19,4 @@ export declare function applyFixes({ envPath, examplePath, missingKeys, duplicat
|
|
|
11
19
|
addedExample: string[];
|
|
12
20
|
};
|
|
13
21
|
};
|
|
22
|
+
//# sourceMappingURL=fixEnv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,WAAW,EACX,WAAW,EACX,aAAa,GACd,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;;;2BAE4B,MAAM,EAAE;kBACjB,MAAM,EAAE;sBACJ,MAAM,EAAE;;EAgE/B"}
|
package/dist/src/core/fixEnv.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
+
/**
|
|
3
|
+
* Applies fixes to the .env and .env.example files based on the detected issues.
|
|
4
|
+
* @param envPath - The path to the .env file.
|
|
5
|
+
* @param examplePath - The path to the .env.example file.
|
|
6
|
+
* @param missingKeys - The list of missing keys to add.
|
|
7
|
+
* @param duplicateKeys - The list of duplicate keys to remove.
|
|
8
|
+
* @returns An object indicating whether changes were made and details of the changes.
|
|
9
|
+
*/
|
|
2
10
|
export function applyFixes({ envPath, examplePath, missingKeys, duplicateKeys, }) {
|
|
3
11
|
const result = {
|
|
4
12
|
removedDuplicates: [],
|
|
@@ -12,9 +20,11 @@ export function applyFixes({ envPath, examplePath, missingKeys, duplicateKeys, }
|
|
|
12
20
|
const newLines = [];
|
|
13
21
|
for (let i = lines.length - 1; i >= 0; i--) {
|
|
14
22
|
const line = lines[i];
|
|
23
|
+
if (line === undefined)
|
|
24
|
+
continue;
|
|
15
25
|
const match = line.match(/^\s*([\w.-]+)\s*=/);
|
|
16
26
|
if (match) {
|
|
17
|
-
const key = match[1];
|
|
27
|
+
const key = match[1] || '';
|
|
18
28
|
if (duplicateKeys.includes(key)) {
|
|
19
29
|
if (seen.has(key))
|
|
20
30
|
continue; // skip duplicate
|
|
@@ -58,3 +68,4 @@ export function applyFixes({ envPath, examplePath, missingKeys, duplicateKeys, }
|
|
|
58
68
|
result.addedExample.length > 0;
|
|
59
69
|
return { changed, result };
|
|
60
70
|
}
|
|
71
|
+
//# sourceMappingURL=fixEnv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,4 +5,11 @@ export type SecretFinding = {
|
|
|
5
5
|
message: string;
|
|
6
6
|
snippet: string;
|
|
7
7
|
};
|
|
8
|
+
/**
|
|
9
|
+
* Detects secrets in the source code of a file.
|
|
10
|
+
* @param file - The file path to check.
|
|
11
|
+
* @param source - The source code to scan for secrets.
|
|
12
|
+
* @returns An array of secret findings.
|
|
13
|
+
*/
|
|
8
14
|
export declare function detectSecretsInSource(file: string, source: string): SecretFinding[];
|
|
15
|
+
//# sourceMappingURL=secretDetectors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretDetectors.d.ts","sourceRoot":"","sources":["../../../src/core/secretDetectors.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AA2DF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,aAAa,EAAE,CA+DjB"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { shannonEntropyNormalized } from './entropy.js';
|
|
2
|
+
// Regular expressions for detecting suspicious keys and provider patterns
|
|
2
3
|
const SUSPICIOUS_KEYS = /\b(pass(word)?|secret|token|apikey|api_key|key|auth|bearer|private|client_secret|access[_-]?token)\b/i;
|
|
4
|
+
// Regular expressions for detecting provider patterns
|
|
3
5
|
const PROVIDER_PATTERNS = [
|
|
4
6
|
/\bAKIA[0-9A-Z]{16}\b/, // AWS access key id
|
|
5
7
|
/\bASIA[0-9A-Z]{16}\b/, // AWS temp key
|
|
@@ -9,26 +11,58 @@ const PROVIDER_PATTERNS = [
|
|
|
9
11
|
/\bAIza[0-9A-Za-z\-_]{20,}\b/, // Google API key
|
|
10
12
|
];
|
|
11
13
|
const LONG_LITERAL = /["'`]{1}([A-Za-z0-9+/_\-]{24,})["'`]{1}/g;
|
|
14
|
+
/**
|
|
15
|
+
* Checks if a string looks like a harmless literal.
|
|
16
|
+
* @param s - The string to check.
|
|
17
|
+
* @returns True if the string looks harmless, false otherwise.
|
|
18
|
+
*/
|
|
12
19
|
function looksHarmlessLiteral(s) {
|
|
13
|
-
return /^https?:\/\//i.test(s) ||
|
|
20
|
+
return (/^https?:\/\//i.test(s) ||
|
|
21
|
+
/\S+@\S+/.test(s) ||
|
|
22
|
+
/^\.{0,2}\//.test(s) ||
|
|
23
|
+
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(s));
|
|
14
24
|
}
|
|
15
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Checks if a file path is probably a test path.
|
|
27
|
+
* This is determined by looking for common test folder names and file extensions.
|
|
28
|
+
* @param p - The file path to check.
|
|
29
|
+
* @returns True if the file path is probably a test path, false otherwise.
|
|
30
|
+
*/
|
|
16
31
|
function isProbablyTestPath(p) {
|
|
17
32
|
return (/\b(__tests__|__mocks__|fixtures|sandbox|samples)\b/i.test(p) ||
|
|
18
33
|
/\.(spec|test)\.[jt]sx?$/.test(p));
|
|
19
34
|
}
|
|
35
|
+
// Threshold is the value between 0 and 1 that determines the sensitivity of the detection.
|
|
20
36
|
const DEFAULT_SECRET_THRESHOLD = 0.9;
|
|
37
|
+
/**
|
|
38
|
+
* Optimized for sveltekit and vite env accessors
|
|
39
|
+
* @param line - A line of code to check.
|
|
40
|
+
* @returns True if the line is an environment variable accessor, false otherwise.
|
|
41
|
+
*/
|
|
42
|
+
function isEnvAccessor(line) {
|
|
43
|
+
return /\b(process\.env|import\.meta\.env|\$env\/(static|dynamic)\/(public|private))\b/.test(line);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detects secrets in the source code of a file.
|
|
47
|
+
* @param file - The file path to check.
|
|
48
|
+
* @param source - The source code to scan for secrets.
|
|
49
|
+
* @returns An array of secret findings.
|
|
50
|
+
*/
|
|
21
51
|
export function detectSecretsInSource(file, source) {
|
|
22
52
|
const threshold = isProbablyTestPath(file) ? 0.95 : DEFAULT_SECRET_THRESHOLD;
|
|
23
53
|
const findings = [];
|
|
24
54
|
const lines = source.split(/\r?\n/);
|
|
25
55
|
for (let i = 0; i < lines.length; i++) {
|
|
26
56
|
const lineNo = i + 1;
|
|
27
|
-
const line = lines[i];
|
|
57
|
+
const line = lines[i] || '';
|
|
28
58
|
// 1) Suspicious key literal assignments
|
|
29
59
|
if (SUSPICIOUS_KEYS.test(line)) {
|
|
30
60
|
const m = line.match(/=\s*["'`](.+?)["'`]/);
|
|
31
|
-
if (m &&
|
|
61
|
+
if (m &&
|
|
62
|
+
m[1] &&
|
|
63
|
+
!looksHarmlessLiteral(m[1]) &&
|
|
64
|
+
m[1].length >= 12 &&
|
|
65
|
+
!isEnvAccessor(line)) {
|
|
32
66
|
findings.push({
|
|
33
67
|
file,
|
|
34
68
|
line: lineNo,
|
|
@@ -54,7 +88,7 @@ export function detectSecretsInSource(file, source) {
|
|
|
54
88
|
LONG_LITERAL.lastIndex = 0;
|
|
55
89
|
let lm;
|
|
56
90
|
while ((lm = LONG_LITERAL.exec(line))) {
|
|
57
|
-
const literal = lm[1];
|
|
91
|
+
const literal = lm[1] || '';
|
|
58
92
|
if (looksHarmlessLiteral(literal))
|
|
59
93
|
continue;
|
|
60
94
|
if (literal.length < 32)
|
|
@@ -73,3 +107,4 @@ export function detectSecretsInSource(file, source) {
|
|
|
73
107
|
}
|
|
74
108
|
return findings;
|
|
75
109
|
}
|
|
110
|
+
//# sourceMappingURL=secretDetectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secretDetectors.js","sourceRoot":"","sources":["../../../src/core/secretDetectors.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/src/index.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { parseEnvFile } from './lib/parseEnv.js';
|
|
2
2
|
export { diffEnv } from './lib/diffEnv.js';
|
|
3
|
-
process.env.API_KEY = '
|
|
3
|
+
process.env.API_KEY = 'sds';
|
|
4
4
|
process.env.NEW_API_KEY = '67890';
|
|
5
|
-
const
|
|
6
|
-
const
|
|
5
|
+
const apiUrl = `${process.env.API_KEY}/reset-password`;
|
|
6
|
+
const apiUrl2 = '${process.env.USER_API}/users/${userId}/reset-password';
|
|
7
|
+
const apiUrl3 = 'ghp_1234567890ABCDEFGHijklmnopqrstuvwxYZ';
|
|
8
|
+
console.log('API URL:', apiUrl);
|
|
9
|
+
console.log('API URL 3:', apiUrl3);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAmB,MAAM,kBAAkB,CAAC;AAE5D,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AAE5B,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC;AAElC,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,iBAAiB,CAAC;AAEvD,MAAM,OAAO,GAAG,wDAAwD,CAAC;AAEzE,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAE3D,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAChC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC"}
|
|
@@ -16,3 +16,4 @@ export type DiffResult = {
|
|
|
16
16
|
* @returns A `DiffResult` object containing missing, extra, and mismatched keys.
|
|
17
17
|
*/
|
|
18
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/lib/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"}
|
package/dist/src/lib/diffEnv.js
CHANGED
|
@@ -16,14 +16,16 @@ export function diffEnv(current, example, checkValues = false) {
|
|
|
16
16
|
valueMismatches = exampleKeys
|
|
17
17
|
.filter((key) => {
|
|
18
18
|
return (currentKeys.includes(key) &&
|
|
19
|
+
typeof example[key] === 'string' &&
|
|
19
20
|
example[key].trim() !== '' &&
|
|
20
21
|
current[key] !== example[key]);
|
|
21
22
|
})
|
|
22
23
|
.map((key) => ({
|
|
23
24
|
key,
|
|
24
|
-
expected: example[key],
|
|
25
|
-
actual: current[key],
|
|
25
|
+
expected: example[key] ?? '',
|
|
26
|
+
actual: current[key] ?? '',
|
|
26
27
|
}));
|
|
27
28
|
}
|
|
28
29
|
return { missing, extra, valueMismatches };
|
|
29
30
|
}
|
|
31
|
+
//# sourceMappingURL=diffEnv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diffEnv.js","sourceRoot":"","sources":["../../../src/lib/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 @@
|
|
|
1
|
+
{"version":3,"file":"parseEnv.d.ts","sourceRoot":"","sources":["../../../src/lib/parseEnv.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBjE"}
|
package/dist/src/lib/parseEnv.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseEnv.js","sourceRoot":"","sources":["../../../src/lib/parseEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -34,3 +34,4 @@ export interface ScanResult {
|
|
|
34
34
|
*/
|
|
35
35
|
export declare function scanCodebase(opts: ScanOptions): Promise<ScanResult>;
|
|
36
36
|
export declare function compareWithEnvFiles(scanResult: ScanResult, envVariables: Record<string, string | undefined>): ScanResult;
|
|
37
|
+
//# sourceMappingURL=codeBaseScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeBaseScanner.d.ts","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,4BAA4B,CAAC;AAEpC,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,MAAM,GACN,MAAM,GACN,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;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;CACnB;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;KACzB,CAAC;IACF,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAkED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDzE;AAsRD,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAC/C,UAAU,CAYZ"}
|
|
@@ -48,6 +48,7 @@ const DEFAULT_INCLUDE_EXTENSIONS = [
|
|
|
48
48
|
const DEFAULT_EXCLUDE_PATTERNS = [
|
|
49
49
|
'node_modules',
|
|
50
50
|
'.sveltekit',
|
|
51
|
+
'.svelte-kit',
|
|
51
52
|
'_actions',
|
|
52
53
|
'dist',
|
|
53
54
|
'build',
|
|
@@ -71,7 +72,7 @@ export async function scanCodebase(opts) {
|
|
|
71
72
|
const files = await findFiles(opts.cwd, {
|
|
72
73
|
include: opts.include,
|
|
73
74
|
exclude: [...DEFAULT_EXCLUDE_PATTERNS, ...opts.exclude],
|
|
74
|
-
files: opts.files, // Pass files option
|
|
75
|
+
...(opts.files ? { files: opts.files } : {}), // Pass files option
|
|
75
76
|
});
|
|
76
77
|
const allUsages = [];
|
|
77
78
|
let filesScanned = 0;
|
|
@@ -119,7 +120,7 @@ export async function scanCodebase(opts) {
|
|
|
119
120
|
function expandBraceSets(pattern) {
|
|
120
121
|
// Single-level brace expansion: **/*.{js,ts,svelte} -> [**/*.js, **/*.ts, **/*.svelte]
|
|
121
122
|
const m = pattern.match(/\{([^}]+)\}/);
|
|
122
|
-
if (!m)
|
|
123
|
+
if (!m || m[1] === undefined)
|
|
123
124
|
return [pattern];
|
|
124
125
|
const variants = m[1]
|
|
125
126
|
.split(',')
|
|
@@ -326,6 +327,8 @@ async function scanFile(filePath, content, opts) {
|
|
|
326
327
|
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
327
328
|
while ((match = regex.exec(content)) !== null) {
|
|
328
329
|
const variable = match[1];
|
|
330
|
+
if (!variable)
|
|
331
|
+
continue;
|
|
329
332
|
const matchIndex = match.index;
|
|
330
333
|
// Find line and column
|
|
331
334
|
const beforeMatch = content.substring(0, matchIndex);
|
|
@@ -357,3 +360,4 @@ export function compareWithEnvFiles(scanResult, envVariables) {
|
|
|
357
360
|
unused,
|
|
358
361
|
};
|
|
359
362
|
}
|
|
363
|
+
//# sourceMappingURL=codeBaseScanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codeBaseScanner.js","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,11 @@
|
|
|
4
4
|
* - Splits on first '='
|
|
5
5
|
* - Trims the key
|
|
6
6
|
* - Returns keys that appear more than once, with counts
|
|
7
|
+
* @param filePath - Path to the .env file to scan
|
|
8
|
+
* @returns An array of objects representing duplicate keys and their counts.
|
|
7
9
|
*/
|
|
8
10
|
export declare function findDuplicateKeys(filePath: string): Array<{
|
|
9
11
|
key: string;
|
|
10
12
|
count: number;
|
|
11
13
|
}>;
|
|
14
|
+
//# sourceMappingURL=duplicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../../src/services/duplicates.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,GACf,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0BvC"}
|
|
@@ -5,6 +5,8 @@ import fs from 'fs';
|
|
|
5
5
|
* - Splits on first '='
|
|
6
6
|
* - Trims the key
|
|
7
7
|
* - Returns keys that appear more than once, with counts
|
|
8
|
+
* @param filePath - Path to the .env file to scan
|
|
9
|
+
* @returns An array of objects representing duplicate keys and their counts.
|
|
8
10
|
*/
|
|
9
11
|
export function findDuplicateKeys(filePath) {
|
|
10
12
|
if (!fs.existsSync(filePath))
|
|
@@ -31,3 +33,4 @@ export function findDuplicateKeys(filePath) {
|
|
|
31
33
|
}
|
|
32
34
|
return duplicates;
|
|
33
35
|
}
|
|
36
|
+
//# sourceMappingURL=duplicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../../src/services/duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB;IAEhB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS,CAAC,sBAAsB;QAE7C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAA0C,EAAE,CAAC;IAC7D,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Represents the discovery of environment files in a project.
|
|
3
|
+
* Contains information about the current working directory, found environment files,
|
|
4
|
+
* and the primary environment and example files.
|
|
5
|
+
*/
|
|
1
6
|
export type Discovery = {
|
|
2
7
|
cwd: string;
|
|
3
8
|
envFiles: string[];
|
|
@@ -7,8 +12,16 @@ export type Discovery = {
|
|
|
7
12
|
exampleFlag: string | null;
|
|
8
13
|
alreadyWarnedMissingEnv: boolean;
|
|
9
14
|
};
|
|
15
|
+
/**
|
|
16
|
+
* Discovers environment files in the specified directory.
|
|
17
|
+
* @param cwd - The current working directory.
|
|
18
|
+
* @param envFlag - The --env flag value if provided.
|
|
19
|
+
* @param exampleFlag - The --example flag value if provided.
|
|
20
|
+
* @returns A Discovery object containing the found environment files and their metadata.
|
|
21
|
+
*/
|
|
10
22
|
export declare function discoverEnvFiles({ cwd, envFlag, exampleFlag, }: {
|
|
11
23
|
cwd: string;
|
|
12
24
|
envFlag: string | null;
|
|
13
25
|
exampleFlag: string | null;
|
|
14
26
|
}): Discovery;
|
|
27
|
+
//# sourceMappingURL=envDiscovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envDiscovery.d.ts","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,OAAO,EACP,WAAW,GACZ,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,SAAS,CAiEZ"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Discovers environment files in the specified directory.
|
|
5
|
+
* @param cwd - The current working directory.
|
|
6
|
+
* @param envFlag - The --env flag value if provided.
|
|
7
|
+
* @param exampleFlag - The --example flag value if provided.
|
|
8
|
+
* @returns A Discovery object containing the found environment files and their metadata.
|
|
9
|
+
*/
|
|
3
10
|
export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
|
|
4
11
|
// Find all .env* files in the current directory except .env.example*
|
|
5
12
|
const envFiles = fs
|
|
@@ -58,3 +65,4 @@ export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
|
|
|
58
65
|
alreadyWarnedMissingEnv,
|
|
59
66
|
};
|
|
60
67
|
}
|
|
68
|
+
//# sourceMappingURL=envDiscovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../../src/services/envDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { Discovery } from './envDiscovery.js';
|
|
2
|
+
/**
|
|
3
|
+
* Pairs each environment file with its corresponding example file.
|
|
4
|
+
* @param d - The discovery object containing environment and example file information.
|
|
5
|
+
* @returns An array of objects containing the environment name, path, and example path.
|
|
6
|
+
*/
|
|
2
7
|
export declare function pairWithExample(d: Discovery): Array<{
|
|
3
8
|
envName: string;
|
|
4
9
|
envPath: string;
|
|
5
10
|
examplePath: string;
|
|
6
11
|
}>;
|
|
12
|
+
//# sourceMappingURL=envPairing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"envPairing.d.ts","sourceRoot":"","sources":["../../../src/services/envPairing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,CAAC,EAAE,SAAS,GACX,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAiClE"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
|
+
/**
|
|
4
|
+
* Pairs each environment file with its corresponding example file.
|
|
5
|
+
* @param d - The discovery object containing environment and example file information.
|
|
6
|
+
* @returns An array of objects containing the environment name, path, and example path.
|
|
7
|
+
*/
|
|
3
8
|
export function pairWithExample(d) {
|
|
4
9
|
const pairs = [];
|
|
5
10
|
const list = d.envFiles.length > 0 ? d.envFiles : [d.primaryEnv];
|
|
@@ -25,3 +30,4 @@ export function pairWithExample(d) {
|
|
|
25
30
|
}
|
|
26
31
|
return pairs;
|
|
27
32
|
}
|
|
33
|
+
//# sourceMappingURL=envPairing.js.map
|
|
@@ -0,0 +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;AAGxB;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,CAAY;IAEZ,MAAM,KAAK,GAIN,EAAE,CAAC;IACR,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,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAExE,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"}
|
|
@@ -13,11 +13,16 @@ export declare function isGitRepo(cwd?: string): boolean;
|
|
|
13
13
|
* - true → .env-matching patterns are found in .gitignore
|
|
14
14
|
* - false → .env-matching patterns are NOT found (or a negation exists)
|
|
15
15
|
* - null → no .gitignore exists
|
|
16
|
+
* @param options - Options for the gitignore check.
|
|
17
|
+
* @returns True if the env file is ignored, false if not, or null if no .gitignore exists.
|
|
16
18
|
*/
|
|
17
19
|
export declare function isEnvIgnoredByGit(options?: GitignoreCheckOptions): boolean | null;
|
|
18
20
|
/**
|
|
19
21
|
* Logs a friendly warning if .env is not ignored by Git.
|
|
20
22
|
* - Does not hard fail: non-blocking DX.
|
|
21
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
|
|
22
26
|
*/
|
|
23
27
|
export declare function warnIfEnvNotIgnored(options?: GitignoreCheckOptions): void;
|
|
28
|
+
//# sourceMappingURL=git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,qBAAqB,GAAG;IAClC,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,CAAC;AAEF,+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;AA0BD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,qBAA0B,GAAG,IAAI,CA2B7E"}
|
package/dist/src/services/git.js
CHANGED
|
@@ -10,6 +10,8 @@ export function isGitRepo(cwd = process.cwd()) {
|
|
|
10
10
|
* - true → .env-matching patterns are found in .gitignore
|
|
11
11
|
* - false → .env-matching patterns are NOT found (or a negation exists)
|
|
12
12
|
* - null → no .gitignore exists
|
|
13
|
+
* @param options - Options for the gitignore check.
|
|
14
|
+
* @returns True if the env file is ignored, false if not, or null if no .gitignore exists.
|
|
13
15
|
*/
|
|
14
16
|
export function isEnvIgnoredByGit(options = {}) {
|
|
15
17
|
const { cwd = process.cwd(), envFile = '.env' } = options;
|
|
@@ -53,6 +55,8 @@ function matchesCandidate(pattern, envFile) {
|
|
|
53
55
|
* Logs a friendly warning if .env is not ignored by Git.
|
|
54
56
|
* - Does not hard fail: non-blocking DX.
|
|
55
57
|
* - Skips if not in a git repo or if .env does not exist.
|
|
58
|
+
* @param options - Options for the warning behavior.
|
|
59
|
+
* @returns console.log messages or void
|
|
56
60
|
*/
|
|
57
61
|
export function warnIfEnvNotIgnored(options = {}) {
|
|
58
62
|
const { cwd = process.cwd(), envFile = '.env', log = console.log } = options;
|
|
@@ -71,3 +75,4 @@ export function warnIfEnvNotIgnored(options = {}) {
|
|
|
71
75
|
log(chalk.yellow(`⚠️ ${envFile} is not ignored by Git (.gitignore).\n Consider adding:\n ${envFile}\n ${envFile}.*\n`));
|
|
72
76
|
}
|
|
73
77
|
}
|
|
78
|
+
//# sourceMappingURL=git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/services/git.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ui/prompts.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt the user for a yes/no confirmation in interactive mode.
|
|
3
|
+
*
|
|
4
|
+
* Behavior:
|
|
5
|
+
* - If `isYesMode` is true → always returns true (auto-confirm).
|
|
6
|
+
* - If `isCiMode` is true → always returns false (non-interactive).
|
|
7
|
+
* - Otherwise → shows a prompt and waits for user input.
|
|
8
|
+
*
|
|
9
|
+
* @param message The message to display to the user.
|
|
10
|
+
* @returns A promise that resolves to `true` if the user confirmed, otherwise `false`.
|
|
11
|
+
*/
|
|
1
12
|
export declare function confirmYesNo(message: string, { isCiMode, isYesMode }: {
|
|
2
13
|
isCiMode: boolean;
|
|
3
14
|
isYesMode: boolean;
|
|
4
15
|
}): Promise<boolean>;
|
|
16
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/ui/prompts.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACjE,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
package/dist/src/ui/prompts.js
CHANGED
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
import prompts from 'prompts';
|
|
2
|
+
/**
|
|
3
|
+
* Prompt the user for a yes/no confirmation in interactive mode.
|
|
4
|
+
*
|
|
5
|
+
* Behavior:
|
|
6
|
+
* - If `isYesMode` is true → always returns true (auto-confirm).
|
|
7
|
+
* - If `isCiMode` is true → always returns false (non-interactive).
|
|
8
|
+
* - Otherwise → shows a prompt and waits for user input.
|
|
9
|
+
*
|
|
10
|
+
* @param message The message to display to the user.
|
|
11
|
+
* @returns A promise that resolves to `true` if the user confirmed, otherwise `false`.
|
|
12
|
+
*/
|
|
2
13
|
export async function confirmYesNo(message, { isCiMode, isYesMode }) {
|
|
3
14
|
if (isYesMode)
|
|
4
15
|
return true;
|
|
@@ -16,3 +27,4 @@ export async function confirmYesNo(message, { isCiMode, isYesMode }) {
|
|
|
16
27
|
});
|
|
17
28
|
return Boolean(res.ok);
|
|
18
29
|
}
|
|
30
|
+
//# sourceMappingURL=prompts.js.map
|