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,73 +1,9 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import fsSync from 'fs';
|
|
4
3
|
import { detectSecretsInSource, } from '../core/secretDetectors.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
name: 'process.env',
|
|
9
|
-
regex: /process\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
10
|
-
frameworks: ['node', 'next', 'general'],
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
name: 'import.meta.env',
|
|
14
|
-
regex: /import\.meta\.env\.([A-Z_][A-Z0-9_]*)/g,
|
|
15
|
-
frameworks: ['vite', 'svelte', 'vue'],
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: 'sveltekit',
|
|
19
|
-
regex: /\$env\/(?:static|dynamic)\/(?:private|public)\/([A-Z_][A-Z0-9_]*)/g,
|
|
20
|
-
frameworks: ['sveltekit'],
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
name: 'deno',
|
|
24
|
-
regex: /Deno\.env\.get\(['"`]([A-Z_][A-Z0-9_]*)['"`]\)/g,
|
|
25
|
-
frameworks: ['deno'],
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
name: 'next',
|
|
29
|
-
regex: /process\.env\.(NEXT_PUBLIC_[A-Z_][A-Z0-9_]*)/g,
|
|
30
|
-
frameworks: ['next'],
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: 'nuxt',
|
|
34
|
-
regex: /(?:\$config|useRuntimeConfig\(\))\.([A-Z_][A-Z0-9_]*)/g,
|
|
35
|
-
frameworks: ['nuxt'],
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
name: 'php',
|
|
39
|
-
regex: /(getenv\(['"`]([A-Z_][A-Z0-9_]*)['"`]\)|\$_ENV\[['"`]([A-Z_][A-Z0-9_]*)['"`]\])/g,
|
|
40
|
-
frameworks: ['php'],
|
|
41
|
-
}
|
|
42
|
-
];
|
|
43
|
-
const DEFAULT_INCLUDE_EXTENSIONS = [
|
|
44
|
-
'.js',
|
|
45
|
-
'.ts',
|
|
46
|
-
'.jsx',
|
|
47
|
-
'.tsx',
|
|
48
|
-
'.vue',
|
|
49
|
-
'.svelte',
|
|
50
|
-
'.mjs',
|
|
51
|
-
'.cjs',
|
|
52
|
-
];
|
|
53
|
-
const DEFAULT_EXCLUDE_PATTERNS = [
|
|
54
|
-
'node_modules',
|
|
55
|
-
'.sveltekit',
|
|
56
|
-
'.svelte-kit',
|
|
57
|
-
'_actions',
|
|
58
|
-
'dist',
|
|
59
|
-
'build',
|
|
60
|
-
'.next',
|
|
61
|
-
'.nuxt',
|
|
62
|
-
'coverage',
|
|
63
|
-
'.git',
|
|
64
|
-
'.vscode',
|
|
65
|
-
'.idea',
|
|
66
|
-
'.test.',
|
|
67
|
-
'.spec.',
|
|
68
|
-
'__tests__',
|
|
69
|
-
'__mocks__',
|
|
70
|
-
];
|
|
4
|
+
import { DEFAULT_EXCLUDE_PATTERNS } from '../core/patterns.js';
|
|
5
|
+
import { scanFile } from '../core/scanFile.js';
|
|
6
|
+
import { findFiles } from './fileWalker.js';
|
|
71
7
|
/**
|
|
72
8
|
* Scans the codebase for environment variable usage based on the provided options.
|
|
73
9
|
* @param opts - Options for scanning the codebase.
|
|
@@ -89,14 +25,13 @@ export async function scanCodebase(opts) {
|
|
|
89
25
|
allUsages.push(...fileUsages);
|
|
90
26
|
if (opts.secrets) {
|
|
91
27
|
try {
|
|
92
|
-
// Brug relativ path i findings, så output matcher dine øvrige prints
|
|
93
28
|
const relativePath = path.relative(opts.cwd, filePath);
|
|
94
29
|
const sec = detectSecretsInSource(relativePath, content);
|
|
95
30
|
if (sec.length)
|
|
96
31
|
allSecrets.push(...sec);
|
|
97
32
|
}
|
|
98
33
|
catch {
|
|
99
|
-
//
|
|
34
|
+
// Ignore secret detection errors
|
|
100
35
|
}
|
|
101
36
|
}
|
|
102
37
|
filesScanned++;
|
|
@@ -126,250 +61,4 @@ export async function scanCodebase(opts) {
|
|
|
126
61
|
},
|
|
127
62
|
};
|
|
128
63
|
}
|
|
129
|
-
function expandBraceSets(pattern) {
|
|
130
|
-
// Single-level brace expansion: **/*.{js,ts,svelte} -> [**/*.js, **/*.ts, **/*.svelte]
|
|
131
|
-
const m = pattern.match(/\{([^}]+)\}/);
|
|
132
|
-
if (!m || m[1] === undefined)
|
|
133
|
-
return [pattern];
|
|
134
|
-
const variants = m[1]
|
|
135
|
-
.split(',')
|
|
136
|
-
.map((p) => p.trim())
|
|
137
|
-
.filter(Boolean);
|
|
138
|
-
const prefix = pattern.slice(0, m.index);
|
|
139
|
-
const suffix = pattern.slice(m.index + m[0].length);
|
|
140
|
-
return variants.flatMap((v) => expandBraceSets(`${prefix}${v}${suffix}`));
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Recursively finds all files in the given directory matching the include patterns,
|
|
144
|
-
* while excluding files and directories that match the exclude patterns.
|
|
145
|
-
* @param rootDir The root directory to start searching from.
|
|
146
|
-
* @param opts Options for include, exclude patterns and files override.
|
|
147
|
-
* @returns A promise that resolves to an array of file paths.
|
|
148
|
-
*/
|
|
149
|
-
async function findFiles(rootDir, opts) {
|
|
150
|
-
// If --files provided, keep existing replacement behavior
|
|
151
|
-
if (opts.files && opts.files.length > 0) {
|
|
152
|
-
return findFilesByPatterns(rootDir, opts.files);
|
|
153
|
-
}
|
|
154
|
-
const defaultPatterns = getDefaultPatterns();
|
|
155
|
-
const rawInclude = opts.include.length > 0
|
|
156
|
-
? [...defaultPatterns, ...opts.include]
|
|
157
|
-
: defaultPatterns;
|
|
158
|
-
const includePatterns = rawInclude.flatMap(expandBraceSets);
|
|
159
|
-
const files = [];
|
|
160
|
-
const walked = new Set();
|
|
161
|
-
// Compute additional roots for include patterns that point outside cwd or are absolute
|
|
162
|
-
const extraRoots = new Set();
|
|
163
|
-
for (const p of includePatterns) {
|
|
164
|
-
const hasParentEscape = p.includes('..') || path.isAbsolute(p);
|
|
165
|
-
if (!hasParentEscape)
|
|
166
|
-
continue;
|
|
167
|
-
const dir = getPatternBaseDir(rootDir, p);
|
|
168
|
-
if (dir && !dir.startsWith(rootDir)) {
|
|
169
|
-
extraRoots.add(dir);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
async function walk(startDir) {
|
|
173
|
-
// prevent duplicate subtree walks
|
|
174
|
-
const key = path.resolve(startDir);
|
|
175
|
-
if (walked.has(key))
|
|
176
|
-
return;
|
|
177
|
-
walked.add(key);
|
|
178
|
-
let entries;
|
|
179
|
-
try {
|
|
180
|
-
entries = await fs.readdir(startDir, { withFileTypes: true });
|
|
181
|
-
}
|
|
182
|
-
catch {
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
for (const entry of entries) {
|
|
186
|
-
const fullPath = path.join(startDir, entry.name);
|
|
187
|
-
const relativeToRoot = path.relative(rootDir, fullPath);
|
|
188
|
-
// Exclude checks should use path relative to *rootDir* (keeps existing semantics)
|
|
189
|
-
if (shouldExclude(entry.name, relativeToRoot, [
|
|
190
|
-
...DEFAULT_EXCLUDE_PATTERNS,
|
|
191
|
-
...opts.exclude,
|
|
192
|
-
])) {
|
|
193
|
-
continue;
|
|
194
|
-
}
|
|
195
|
-
if (entry.isDirectory()) {
|
|
196
|
-
await walk(fullPath);
|
|
197
|
-
}
|
|
198
|
-
else if (entry.isFile() &&
|
|
199
|
-
shouldInclude(entry.name, relativeToRoot, includePatterns)) {
|
|
200
|
-
files.push(fullPath);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// Walk root first (current behavior)
|
|
205
|
-
await walk(rootDir);
|
|
206
|
-
// Walk any extra roots (e.g., ../../packages/…)
|
|
207
|
-
for (const r of extraRoots) {
|
|
208
|
-
await walk(r);
|
|
209
|
-
}
|
|
210
|
-
return files;
|
|
211
|
-
}
|
|
212
|
-
function getPatternBaseDir(rootDir, pattern) {
|
|
213
|
-
// Stop at first glob char — DO NOT include '/' here
|
|
214
|
-
const idx = pattern.search(/[*?\[\]{}]/); // <— removed '/'
|
|
215
|
-
const raw = idx === -1 ? pattern : pattern.slice(0, idx);
|
|
216
|
-
const base = path.isAbsolute(raw) ? raw : path.resolve(rootDir, raw);
|
|
217
|
-
try {
|
|
218
|
-
const st = fsSync.statSync(base);
|
|
219
|
-
if (st.isDirectory())
|
|
220
|
-
return base;
|
|
221
|
-
if (st.isFile())
|
|
222
|
-
return path.dirname(base);
|
|
223
|
-
}
|
|
224
|
-
catch {
|
|
225
|
-
const dir = path.dirname(base);
|
|
226
|
-
try {
|
|
227
|
-
const st2 = fsSync.statSync(dir);
|
|
228
|
-
if (st2.isDirectory())
|
|
229
|
-
return dir;
|
|
230
|
-
}
|
|
231
|
-
catch { }
|
|
232
|
-
}
|
|
233
|
-
return null;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Find files using the --files patterns (complete replacement mode)
|
|
237
|
-
*/
|
|
238
|
-
async function findFilesByPatterns(rootDir, patterns) {
|
|
239
|
-
const expanded = patterns.flatMap(expandBraceSets);
|
|
240
|
-
const files = [];
|
|
241
|
-
async function walk(currentDir) {
|
|
242
|
-
let entries;
|
|
243
|
-
try {
|
|
244
|
-
entries = await fs.readdir(currentDir, { withFileTypes: true });
|
|
245
|
-
}
|
|
246
|
-
catch {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
for (const entry of entries) {
|
|
250
|
-
const fullPath = path.join(currentDir, entry.name);
|
|
251
|
-
const relativePath = path.relative(rootDir, fullPath);
|
|
252
|
-
if (entry.isDirectory()) {
|
|
253
|
-
await walk(fullPath);
|
|
254
|
-
}
|
|
255
|
-
else if (entry.isFile() &&
|
|
256
|
-
shouldInclude(entry.name, relativePath, expanded)) {
|
|
257
|
-
files.push(fullPath);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
await walk(rootDir);
|
|
262
|
-
return files;
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Generate default patterns from extensions
|
|
266
|
-
*/
|
|
267
|
-
function getDefaultPatterns() {
|
|
268
|
-
return DEFAULT_INCLUDE_EXTENSIONS.map((ext) => `**/*${ext}`);
|
|
269
|
-
}
|
|
270
|
-
/**
|
|
271
|
-
* Check if a file should be included based on its name, path, and include patterns.
|
|
272
|
-
* @param fileName The name of the file.
|
|
273
|
-
* @param relativePath The relative path of the file.
|
|
274
|
-
* @param patterns The include patterns to match against.
|
|
275
|
-
* @returns True if the file should be included, false otherwise.
|
|
276
|
-
*/
|
|
277
|
-
function shouldInclude(fileName, relativePath, patterns) {
|
|
278
|
-
// If no include patterns specified, use default extensions
|
|
279
|
-
if (!patterns.length) {
|
|
280
|
-
return DEFAULT_INCLUDE_EXTENSIONS.some((ext) => fileName.endsWith(ext));
|
|
281
|
-
}
|
|
282
|
-
return patterns.some((pattern) => {
|
|
283
|
-
if (pattern.startsWith('**')) {
|
|
284
|
-
// Handle **/*.ext patterns
|
|
285
|
-
const ext = pattern.substring(pattern.lastIndexOf('.'));
|
|
286
|
-
return fileName.endsWith(ext);
|
|
287
|
-
}
|
|
288
|
-
else if (pattern.includes('*')) {
|
|
289
|
-
// Simple glob pattern matching
|
|
290
|
-
return matchesGlobPattern(relativePath, pattern);
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
// Exact match or extension
|
|
294
|
-
return relativePath.endsWith(pattern) || fileName.endsWith(pattern);
|
|
295
|
-
}
|
|
296
|
-
});
|
|
297
|
-
}
|
|
298
|
-
function shouldExclude(fileName, relativePath, patterns) {
|
|
299
|
-
// Check if filename or any part of the path should be excluded
|
|
300
|
-
return patterns.some((pattern) => {
|
|
301
|
-
// Direct name match (like 'node_modules')
|
|
302
|
-
if (fileName === pattern)
|
|
303
|
-
return true;
|
|
304
|
-
// Path contains pattern
|
|
305
|
-
if (relativePath.includes(pattern))
|
|
306
|
-
return true;
|
|
307
|
-
// Pattern matching for extensions and wildcards
|
|
308
|
-
if (pattern.includes('*')) {
|
|
309
|
-
return matchesGlobPattern(relativePath, pattern);
|
|
310
|
-
}
|
|
311
|
-
// Special case for test files
|
|
312
|
-
if (pattern.includes('.test.') && fileName.includes('.test.'))
|
|
313
|
-
return true;
|
|
314
|
-
if (pattern.includes('.spec.') && fileName.includes('.spec.'))
|
|
315
|
-
return true;
|
|
316
|
-
return false;
|
|
317
|
-
});
|
|
318
|
-
}
|
|
319
|
-
function matchesGlobPattern(filePath, pattern) {
|
|
320
|
-
const hasSep = /[\/\\]/.test(pattern);
|
|
321
|
-
const subject = hasSep ? filePath : path.basename(filePath);
|
|
322
|
-
const normalized = subject.replace(/\\/g, '/');
|
|
323
|
-
let normalizedPattern = pattern.replace(/\\/g, '/');
|
|
324
|
-
let regexPattern = normalizedPattern
|
|
325
|
-
.replace(/[.+^${}()|[\]\\]/g, '\\$&')
|
|
326
|
-
.replace(/\*\*/g, '___DOUBLESTAR___')
|
|
327
|
-
.replace(/\*/g, '[^/]*')
|
|
328
|
-
.replace(/___DOUBLESTAR___/g, '.*')
|
|
329
|
-
.replace(/\?/g, '[^/]');
|
|
330
|
-
const re = new RegExp(`^${regexPattern}$`, 'i');
|
|
331
|
-
return re.test(normalized);
|
|
332
|
-
}
|
|
333
|
-
async function scanFile(filePath, content, opts) {
|
|
334
|
-
const usages = [];
|
|
335
|
-
const lines = content.split('\n');
|
|
336
|
-
const relativePath = path.relative(opts.cwd, filePath);
|
|
337
|
-
for (const pattern of ENV_PATTERNS) {
|
|
338
|
-
let match;
|
|
339
|
-
const regex = new RegExp(pattern.regex.source, pattern.regex.flags);
|
|
340
|
-
while ((match = regex.exec(content)) !== null) {
|
|
341
|
-
const variable = match[1];
|
|
342
|
-
if (!variable)
|
|
343
|
-
continue;
|
|
344
|
-
const matchIndex = match.index;
|
|
345
|
-
// Find line and column
|
|
346
|
-
const beforeMatch = content.substring(0, matchIndex);
|
|
347
|
-
const lineNumber = beforeMatch.split('\n').length;
|
|
348
|
-
const lastNewlineIndex = beforeMatch.lastIndexOf('\n');
|
|
349
|
-
const column = matchIndex - lastNewlineIndex;
|
|
350
|
-
// Get the context (the actual line)
|
|
351
|
-
const contextLine = lines[lineNumber - 1]?.trim() || '';
|
|
352
|
-
usages.push({
|
|
353
|
-
variable,
|
|
354
|
-
file: relativePath,
|
|
355
|
-
line: lineNumber,
|
|
356
|
-
column,
|
|
357
|
-
pattern: pattern.name,
|
|
358
|
-
context: contextLine,
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
return usages;
|
|
363
|
-
}
|
|
364
|
-
export function compareWithEnvFiles(scanResult, envVariables) {
|
|
365
|
-
const usedVariables = new Set(scanResult.used.map((u) => u.variable));
|
|
366
|
-
const envKeys = new Set(Object.keys(envVariables));
|
|
367
|
-
const missing = [...usedVariables].filter((v) => !envKeys.has(v));
|
|
368
|
-
const unused = [...envKeys].filter((v) => !usedVariables.has(v));
|
|
369
|
-
return {
|
|
370
|
-
...scanResult,
|
|
371
|
-
missing,
|
|
372
|
-
unused,
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
64
|
//# sourceMappingURL=codeBaseScanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeBaseScanner.js","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeBaseScanner.js","sourceRoot":"","sources":["../../../src/services/codeBaseScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EACL,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAiB;IAClD,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;QACtC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,CAAC,GAAG,wBAAwB,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,oBAAoB;KACnE,CAAC,CAAC;IAEH,MAAM,SAAS,GAAe,EAAE,CAAC;IACjC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,UAAU,GAAoB,EAAE,CAAC;IAEvC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC3D,SAAS,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;oBACvD,MAAM,GAAG,GAAG,qBAAqB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACzD,IAAI,GAAG,CAAC,MAAM;wBAAE,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBAC1C,CAAC;gBAAC,MAAM,CAAC;oBACP,iCAAiC;gBACnC,CAAC;YACH,CAAC;YACD,YAAY,EAAE,CAAC;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;YACvD,SAAS;QACX,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CACrC,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QACrC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAChE,CAAC;IAEF,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,UAAU;QACnB,KAAK,EAAE;YACL,YAAY;YACZ,WAAW,EAAE,cAAc,CAAC,MAAM;YAClC,eAAe,EAAE,eAAe,CAAC,MAAM;SACxC;QACD,UAAU,EAAE;YACV,GAAG,EAAE,EAAE;YACP,OAAO,EAAE,EAAE;SACZ;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ensures that the necessary .env files exist or prompts the user to create them.
|
|
3
|
+
* This function handles only scenarios where the --compare flag is set
|
|
4
|
+
* @param args - The arguments for the function.
|
|
5
|
+
* @returns An object indicating whether a file was created or if the process should exit.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ensureFilesOrPrompt(args: {
|
|
8
|
+
cwd: string;
|
|
9
|
+
primaryEnv: string;
|
|
10
|
+
primaryExample: string;
|
|
11
|
+
alreadyWarnedMissingEnv: boolean;
|
|
12
|
+
isYesMode: boolean;
|
|
13
|
+
isCiMode: boolean;
|
|
14
|
+
}): Promise<{
|
|
15
|
+
didCreate: boolean;
|
|
16
|
+
shouldExit: boolean;
|
|
17
|
+
exitCode: number;
|
|
18
|
+
}>;
|
|
19
|
+
//# sourceMappingURL=ensureFilesOrPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureFilesOrPrompt.d.ts","sourceRoot":"","sources":["../../../src/services/ensureFilesOrPrompt.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,uBAAuB,EAAE,OAAO,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;;;;GA+FA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import { confirmYesNo } from '../ui/prompts.js';
|
|
5
|
+
import { warnIfEnvNotIgnored } from './git.js';
|
|
6
|
+
/**
|
|
7
|
+
* Ensures that the necessary .env files exist or prompts the user to create them.
|
|
8
|
+
* This function handles only scenarios where the --compare flag is set
|
|
9
|
+
* @param args - The arguments for the function.
|
|
10
|
+
* @returns An object indicating whether a file was created or if the process should exit.
|
|
11
|
+
*/
|
|
12
|
+
export async function ensureFilesOrPrompt(args) {
|
|
13
|
+
const { cwd, primaryEnv, primaryExample, alreadyWarnedMissingEnv, isYesMode, isCiMode, } = args;
|
|
14
|
+
const envPath = path.resolve(cwd, primaryEnv);
|
|
15
|
+
const examplePath = path.resolve(cwd, primaryExample);
|
|
16
|
+
const envExists = fs.existsSync(envPath);
|
|
17
|
+
const exampleExists = fs.existsSync(examplePath);
|
|
18
|
+
// Case 1: no .env and no .env.example
|
|
19
|
+
if (!envExists && !exampleExists) {
|
|
20
|
+
const hasAnyEnv = fs.readdirSync(cwd).some((f) => f.startsWith('.env'));
|
|
21
|
+
if (!hasAnyEnv) {
|
|
22
|
+
console.log(chalk.yellow('⚠️ No .env* or .env.example file found. Skipping comparison.'));
|
|
23
|
+
return { didCreate: false, shouldExit: true, exitCode: 0 };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Case 2: missing .env but has .env.example
|
|
27
|
+
if (!envExists && exampleExists) {
|
|
28
|
+
if (!alreadyWarnedMissingEnv) {
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk.yellow(`📄 ${path.basename(envPath)} file not found.`));
|
|
31
|
+
}
|
|
32
|
+
let createEnv = isYesMode
|
|
33
|
+
? true
|
|
34
|
+
: isCiMode
|
|
35
|
+
? false
|
|
36
|
+
: await confirmYesNo(`❓ Do you want to create a new ${path.basename(envPath)} file from ${path.basename(examplePath)}?`, { isCiMode, isYesMode });
|
|
37
|
+
if (!createEnv) {
|
|
38
|
+
console.log(chalk.gray('🚫 Skipping .env creation.'));
|
|
39
|
+
return { didCreate: false, shouldExit: true, exitCode: 0 };
|
|
40
|
+
}
|
|
41
|
+
const exampleContent = fs.readFileSync(examplePath, 'utf-8');
|
|
42
|
+
fs.writeFileSync(envPath, exampleContent);
|
|
43
|
+
console.log(chalk.green(`✅ ${path.basename(envPath)} file created successfully from ${path.basename(examplePath)}.\n`));
|
|
44
|
+
warnIfEnvNotIgnored({ envFile: path.basename(envPath) });
|
|
45
|
+
}
|
|
46
|
+
// Case 3: has .env but is missing .env.example
|
|
47
|
+
if (envExists && !exampleExists) {
|
|
48
|
+
console.log(chalk.yellow(`📄 ${path.basename(examplePath)} file not found.`));
|
|
49
|
+
let createExample = isYesMode
|
|
50
|
+
? true
|
|
51
|
+
: isCiMode
|
|
52
|
+
? false
|
|
53
|
+
: await confirmYesNo(`❓ Do you want to create a new ${path.basename(examplePath)} file from ${path.basename(envPath)}?`, { isCiMode, isYesMode });
|
|
54
|
+
if (!createExample) {
|
|
55
|
+
console.log(chalk.gray('🚫 Skipping .env.example creation.'));
|
|
56
|
+
return { didCreate: false, shouldExit: true, exitCode: 0 };
|
|
57
|
+
}
|
|
58
|
+
const envContent = fs
|
|
59
|
+
.readFileSync(envPath, 'utf-8')
|
|
60
|
+
.split('\n')
|
|
61
|
+
.map((line) => {
|
|
62
|
+
const trimmed = line.trim();
|
|
63
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
64
|
+
return trimmed;
|
|
65
|
+
const [key] = trimmed.split('=');
|
|
66
|
+
return `${key}=`;
|
|
67
|
+
})
|
|
68
|
+
.join('\n');
|
|
69
|
+
fs.writeFileSync(examplePath, envContent);
|
|
70
|
+
console.log(chalk.green(`✅ ${path.basename(examplePath)} file created successfully from ${path.basename(envPath)}.\n`));
|
|
71
|
+
}
|
|
72
|
+
return { didCreate: true, shouldExit: false, exitCode: 0 };
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=ensureFilesOrPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ensureFilesOrPrompt.js","sourceRoot":"","sources":["../../../src/services/ensureFilesOrPrompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Recursively finds all files in the given directory matching the include patterns,
|
|
3
|
+
* while excluding files and directories that match the exclude patterns.
|
|
4
|
+
* @param rootDir The root directory to start searching from.
|
|
5
|
+
* @param opts Options for include, exclude patterns and files override.
|
|
6
|
+
* @returns A promise that resolves to an array of file paths.
|
|
7
|
+
*/
|
|
8
|
+
export declare function findFiles(rootDir: string, opts: {
|
|
9
|
+
include: string[];
|
|
10
|
+
exclude: string[];
|
|
11
|
+
files?: string[];
|
|
12
|
+
}): Promise<string[]>;
|
|
13
|
+
/**
|
|
14
|
+
* Expands brace sets in a glob pattern.
|
|
15
|
+
* @param pattern - The glob pattern to expand.
|
|
16
|
+
* @returns An array of expanded glob patterns.
|
|
17
|
+
*/
|
|
18
|
+
export declare function expandBraceSets(pattern: string): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Gets the base directory for a glob pattern.
|
|
21
|
+
* @param rootDir The root directory to resolve against.
|
|
22
|
+
* @param pattern The glob pattern to analyze.
|
|
23
|
+
* @returns The base directory for the pattern, or null if not found.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getPatternBaseDir(rootDir: string, pattern: string): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* Find files using the --files patterns (complete replacement mode)
|
|
28
|
+
* @param rootDir The root directory to search within.
|
|
29
|
+
* @param patterns The glob patterns to match files against.
|
|
30
|
+
* @returns A promise that resolves to an array of matching file paths.
|
|
31
|
+
*/
|
|
32
|
+
export declare function findFilesByPatterns(rootDir: string, patterns: string[]): Promise<string[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Generate default patterns from extensions
|
|
35
|
+
* @returns An array of default glob patterns.
|
|
36
|
+
*/
|
|
37
|
+
export declare function getDefaultPatterns(): string[];
|
|
38
|
+
/**
|
|
39
|
+
* Check if a file should be included based on its name, path, and include patterns.
|
|
40
|
+
* @param fileName The name of the file.
|
|
41
|
+
* @param relativePath The relative path of the file.
|
|
42
|
+
* @param patterns The include patterns to match against.
|
|
43
|
+
* @returns True if the file should be included, false otherwise.
|
|
44
|
+
*/
|
|
45
|
+
export declare function shouldInclude(fileName: string, relativePath: string, patterns: string[]): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a file should be excluded based on its name, path, and exclude patterns.
|
|
48
|
+
* @param fileName The name of the file.
|
|
49
|
+
* @param relativePath The relative path of the file.
|
|
50
|
+
* @param patterns The exclude patterns to match against.
|
|
51
|
+
* @returns True if the file should be excluded, false otherwise.
|
|
52
|
+
*/
|
|
53
|
+
export declare function shouldExclude(fileName: string, relativePath: string, patterns: string[]): boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Checks if a file path matches a glob pattern.
|
|
56
|
+
* A glob pattern is a string that may contain special characters like '*', '**', and '?' to represent wildcards and variable parts of the path.
|
|
57
|
+
* @param filePath The path of the file to check.
|
|
58
|
+
* @param pattern The glob pattern to match against.
|
|
59
|
+
* @returns True if the file path matches the pattern, false otherwise.
|
|
60
|
+
*/
|
|
61
|
+
export declare function matchesGlobPattern(filePath: string, pattern: string): boolean;
|
|
62
|
+
//# sourceMappingURL=fileWalker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileWalker.d.ts","sourceRoot":"","sources":["../../../src/services/fileWalker.ts"],"names":[],"mappings":"AAQA;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC/D,OAAO,CAAC,MAAM,EAAE,CAAC,CA0EnB;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,CAoBT;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAgB7E"}
|