dotenv-diff 2.6.3 → 2.7.0

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.
Files changed (144) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +8 -2
  3. package/dist/src/commands/compare.d.ts.map +1 -1
  4. package/dist/src/commands/compare.js +0 -4
  5. package/dist/src/commands/compare.js.map +1 -1
  6. package/dist/src/commands/scanUsage.d.ts.map +1 -1
  7. package/dist/src/commands/scanUsage.js +3 -1
  8. package/dist/src/commands/scanUsage.js.map +1 -1
  9. package/dist/src/config/constants.d.ts +4 -0
  10. package/dist/src/config/constants.d.ts.map +1 -1
  11. package/dist/src/config/constants.js +4 -0
  12. package/dist/src/config/constants.js.map +1 -1
  13. package/dist/src/core/scan/patterns.d.ts.map +1 -0
  14. package/dist/src/core/{patterns.js → scan/patterns.js} +2 -0
  15. package/dist/src/core/scan/patterns.js.map +1 -0
  16. package/dist/src/core/scan/scanFile.js +1 -1
  17. package/dist/src/core/scan/scanFile.js.map +1 -1
  18. package/dist/src/core/security/exampleSecretDetector.js +2 -2
  19. package/dist/src/core/security/exampleSecretDetector.js.map +1 -1
  20. package/dist/src/services/fileWalker.js +1 -1
  21. package/dist/src/services/fileWalker.js.map +1 -1
  22. package/dist/src/services/printScanResult.d.ts.map +1 -1
  23. package/dist/src/services/printScanResult.js +21 -32
  24. package/dist/src/services/printScanResult.js.map +1 -1
  25. package/dist/src/services/scanCodebase.d.ts.map +1 -1
  26. package/dist/src/services/scanCodebase.js +1 -17
  27. package/dist/src/services/scanCodebase.js.map +1 -1
  28. package/dist/src/ui/compare/printErrorNotFound.d.ts.map +1 -1
  29. package/dist/src/ui/compare/printErrorNotFound.js +10 -6
  30. package/dist/src/ui/compare/printErrorNotFound.js.map +1 -1
  31. package/dist/src/ui/compare/printHeader.d.ts +0 -1
  32. package/dist/src/ui/compare/printHeader.d.ts.map +1 -1
  33. package/dist/src/ui/compare/printHeader.js +3 -4
  34. package/dist/src/ui/compare/printHeader.js.map +1 -1
  35. package/dist/src/ui/compare/printIssues.d.ts.map +1 -1
  36. package/dist/src/ui/compare/printIssues.js +25 -10
  37. package/dist/src/ui/compare/printIssues.js.map +1 -1
  38. package/dist/src/ui/compare/printPrompt.d.ts +1 -1
  39. package/dist/src/ui/compare/printPrompt.d.ts.map +1 -1
  40. package/dist/src/ui/compare/printPrompt.js +24 -7
  41. package/dist/src/ui/compare/printPrompt.js.map +1 -1
  42. package/dist/src/ui/compare/printStats.d.ts.map +1 -1
  43. package/dist/src/ui/compare/printStats.js +14 -11
  44. package/dist/src/ui/compare/printStats.js.map +1 -1
  45. package/dist/src/ui/scan/printComparisonError.js +11 -10
  46. package/dist/src/ui/scan/printComparisonError.js.map +1 -1
  47. package/dist/src/ui/scan/printConsolelogWarning.d.ts +2 -1
  48. package/dist/src/ui/scan/printConsolelogWarning.d.ts.map +1 -1
  49. package/dist/src/ui/scan/printConsolelogWarning.js +11 -9
  50. package/dist/src/ui/scan/printConsolelogWarning.js.map +1 -1
  51. package/dist/src/ui/scan/printExampleWarnings.d.ts +2 -1
  52. package/dist/src/ui/scan/printExampleWarnings.d.ts.map +1 -1
  53. package/dist/src/ui/scan/printExampleWarnings.js +10 -5
  54. package/dist/src/ui/scan/printExampleWarnings.js.map +1 -1
  55. package/dist/src/ui/scan/printExpireWarnings.d.ts +1 -1
  56. package/dist/src/ui/scan/printExpireWarnings.d.ts.map +1 -1
  57. package/dist/src/ui/scan/printExpireWarnings.js +23 -21
  58. package/dist/src/ui/scan/printExpireWarnings.js.map +1 -1
  59. package/dist/src/ui/scan/printFrameworkWarnings.d.ts +2 -1
  60. package/dist/src/ui/scan/printFrameworkWarnings.d.ts.map +1 -1
  61. package/dist/src/ui/scan/printFrameworkWarnings.js +27 -7
  62. package/dist/src/ui/scan/printFrameworkWarnings.js.map +1 -1
  63. package/dist/src/ui/scan/printHeader.d.ts.map +1 -1
  64. package/dist/src/ui/scan/printHeader.js +8 -5
  65. package/dist/src/ui/scan/printHeader.js.map +1 -1
  66. package/dist/src/ui/scan/printHealthScore.d.ts.map +1 -1
  67. package/dist/src/ui/scan/printHealthScore.js +12 -21
  68. package/dist/src/ui/scan/printHealthScore.js.map +1 -1
  69. package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts +2 -1
  70. package/dist/src/ui/scan/printInconsistentNamingWarning.d.ts.map +1 -1
  71. package/dist/src/ui/scan/printInconsistentNamingWarning.js +11 -8
  72. package/dist/src/ui/scan/printInconsistentNamingWarning.js.map +1 -1
  73. package/dist/src/ui/scan/printMissing.d.ts.map +1 -1
  74. package/dist/src/ui/scan/printMissing.js +6 -9
  75. package/dist/src/ui/scan/printMissing.js.map +1 -1
  76. package/dist/src/ui/scan/printMissingExample.d.ts.map +1 -1
  77. package/dist/src/ui/scan/printMissingExample.js +7 -10
  78. package/dist/src/ui/scan/printMissingExample.js.map +1 -1
  79. package/dist/src/ui/scan/printSecrets.d.ts +2 -1
  80. package/dist/src/ui/scan/printSecrets.d.ts.map +1 -1
  81. package/dist/src/ui/scan/printSecrets.js +15 -24
  82. package/dist/src/ui/scan/printSecrets.js.map +1 -1
  83. package/dist/src/ui/scan/printStats.d.ts +0 -1
  84. package/dist/src/ui/scan/printStats.d.ts.map +1 -1
  85. package/dist/src/ui/scan/printStats.js +10 -9
  86. package/dist/src/ui/scan/printStats.js.map +1 -1
  87. package/dist/src/ui/scan/printUnused.d.ts +3 -3
  88. package/dist/src/ui/scan/printUnused.d.ts.map +1 -1
  89. package/dist/src/ui/scan/printUnused.js +12 -8
  90. package/dist/src/ui/scan/printUnused.js.map +1 -1
  91. package/dist/src/ui/scan/printUppercaseWarning.d.ts +2 -1
  92. package/dist/src/ui/scan/printUppercaseWarning.d.ts.map +1 -1
  93. package/dist/src/ui/scan/printUppercaseWarning.js +11 -7
  94. package/dist/src/ui/scan/printUppercaseWarning.js.map +1 -1
  95. package/dist/src/ui/shared/printAutoFix.d.ts.map +1 -1
  96. package/dist/src/ui/shared/printAutoFix.js +12 -10
  97. package/dist/src/ui/shared/printAutoFix.js.map +1 -1
  98. package/dist/src/ui/shared/printConfigStatus.d.ts +1 -1
  99. package/dist/src/ui/shared/printConfigStatus.d.ts.map +1 -1
  100. package/dist/src/ui/shared/printConfigStatus.js +13 -10
  101. package/dist/src/ui/shared/printConfigStatus.js.map +1 -1
  102. package/dist/src/ui/shared/printDuplicates.d.ts +2 -1
  103. package/dist/src/ui/shared/printDuplicates.d.ts.map +1 -1
  104. package/dist/src/ui/shared/printDuplicates.js +17 -6
  105. package/dist/src/ui/shared/printDuplicates.js.map +1 -1
  106. package/dist/src/ui/shared/printFixTips.js +7 -7
  107. package/dist/src/ui/shared/printFixTips.js.map +1 -1
  108. package/dist/src/ui/shared/printGitignore.d.ts +2 -0
  109. package/dist/src/ui/shared/printGitignore.d.ts.map +1 -1
  110. package/dist/src/ui/shared/printGitignore.js +13 -12
  111. package/dist/src/ui/shared/printGitignore.js.map +1 -1
  112. package/dist/src/ui/shared/printInitStatus.d.ts +4 -4
  113. package/dist/src/ui/shared/printInitStatus.d.ts.map +1 -1
  114. package/dist/src/ui/shared/printInitStatus.js +14 -11
  115. package/dist/src/ui/shared/printInitStatus.js.map +1 -1
  116. package/dist/src/ui/shared/printOptionErrors.d.ts.map +1 -1
  117. package/dist/src/ui/shared/printOptionErrors.js +19 -5
  118. package/dist/src/ui/shared/printOptionErrors.js.map +1 -1
  119. package/dist/src/ui/theme.d.ts +16 -0
  120. package/dist/src/ui/theme.d.ts.map +1 -0
  121. package/dist/src/ui/theme.js +41 -0
  122. package/dist/src/ui/theme.js.map +1 -0
  123. package/docs/assets/demo.gif +0 -0
  124. package/docs/assets/success.png +0 -0
  125. package/docs/capabilities.md +85 -0
  126. package/docs/index.md +1 -34
  127. package/package.json +1 -1
  128. package/dist/src/core/patterns.d.ts.map +0 -1
  129. package/dist/src/core/patterns.js.map +0 -1
  130. package/dist/src/ui/scan/printProgress.d.ts +0 -22
  131. package/dist/src/ui/scan/printProgress.d.ts.map +0 -1
  132. package/dist/src/ui/scan/printProgress.js +0 -36
  133. package/dist/src/ui/scan/printProgress.js.map +0 -1
  134. package/dist/src/ui/shared/printStrictModeError.d.ts +0 -26
  135. package/dist/src/ui/shared/printStrictModeError.d.ts.map +0 -1
  136. package/dist/src/ui/shared/printStrictModeError.js +0 -41
  137. package/dist/src/ui/shared/printStrictModeError.js.map +0 -1
  138. package/dist/src/ui/shared/printSuccess.d.ts +0 -11
  139. package/dist/src/ui/shared/printSuccess.d.ts.map +0 -1
  140. package/dist/src/ui/shared/printSuccess.js +0 -27
  141. package/dist/src/ui/shared/printSuccess.js.map +0 -1
  142. package/docs/assets/demo1.gif +0 -0
  143. package/docs/assets/success1.png +0 -0
  144. /package/dist/src/core/{patterns.d.ts → scan/patterns.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"printIssues.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printIssues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,EACb,GAAG,UAAQ,GACV,IAAI,CA2BN"}
1
+ {"version":3,"file":"printIssues.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printIssues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,OAAO,EACb,GAAG,UAAQ,GACV,IAAI,CA0CN"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { label, warning, error, dim, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints the issues found during the comparison.
4
4
  * @param filtered The filtered comparison results.
@@ -10,25 +10,40 @@ export function printIssues(filtered, json, fix = false) {
10
10
  if (json)
11
11
  return;
12
12
  if (filtered.missing.length && !fix) {
13
- const header = chalk.red('❌ Missing keys:');
14
- console.log(header);
15
- filtered.missing.forEach((key) => console.log(chalk.red(` - ${key}`)));
16
13
  console.log();
14
+ console.log(`${error('▸')} ${header('Missing keys')}`);
15
+ console.log(`${divider}`);
16
+ for (const key of filtered.missing) {
17
+ console.log(`${label(key.padEnd(26))}${error('missing')}`);
18
+ }
19
+ console.log(`${divider}`);
17
20
  }
18
21
  if (filtered.extra?.length) {
19
- console.log(chalk.yellow('⚠️ Extra keys (not in example):'));
20
- filtered.extra.forEach((key) => console.log(chalk.yellow(` - ${key}`)));
21
22
  console.log();
23
+ console.log(`${warning('▸')} ${header('Extra keys (not in example)')}`);
24
+ console.log(`${divider}`);
25
+ for (const key of filtered.extra) {
26
+ console.log(`${label(key.padEnd(26))}${warning('extra')}`);
27
+ }
28
+ console.log(`${divider}`);
22
29
  }
23
30
  if (filtered.empty?.length) {
24
- console.log(chalk.yellow('⚠️ Empty values:'));
25
- filtered.empty.forEach((key) => console.log(chalk.yellow(` - ${key}`)));
26
31
  console.log();
32
+ console.log(`${warning('▸')} ${header('Empty values')}`);
33
+ console.log(`${divider}`);
34
+ for (const key of filtered.empty) {
35
+ console.log(`${label(key.padEnd(26))}${warning('empty')}`);
36
+ }
37
+ console.log(`${divider}`);
27
38
  }
28
39
  if (filtered.mismatches?.length) {
29
- console.log(chalk.yellow('⚠️ Value mismatches:'));
30
- filtered.mismatches.forEach(({ key, expected, actual }) => console.log(chalk.yellow(` - ${key}: expected '${expected}', but got '${actual}'`)));
31
40
  console.log();
41
+ console.log(`${warning('▸')} ${header('Value mismatches')}`);
42
+ console.log(`${divider}`);
43
+ for (const { key, expected, actual } of filtered.mismatches) {
44
+ console.log(`${label(key.padEnd(26))}${warning(`expected: ${expected}`)} ${dim(`got: ${actual}`)}`);
45
+ }
46
+ console.log(`${divider}`);
32
47
  }
33
48
  }
34
49
  //# sourceMappingURL=printIssues.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printIssues.js","sourceRoot":"","sources":["../../../../src/ui/compare/printIssues.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,QAAkB,EAClB,IAAa,EACb,GAAG,GAAG,KAAK;IAEX,IAAI,IAAI;QAAE,OAAO;IACjB,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC9D,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC/C,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACnD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CACxD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,eAAe,QAAQ,eAAe,MAAM,GAAG,CAAC,CACxE,CACF,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printIssues.js","sourceRoot":"","sources":["../../../../src/ui/compare/printIssues.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * @description Provides formatted console output for various environment file
5
5
  * comparison and creation scenarios. All methods output styled messages using
6
- * chalk for enhanced readability.
6
+ * theme tokens for enhanced readability.
7
7
  *
8
8
  * @property {Function} noEnvFound - Displays warning when no environment files are detected
9
9
  * @property {Function} missingEnv - Displays warning for a specific missing environment file
@@ -1 +1 @@
1
- {"version":3,"file":"printPrompt.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printPrompt.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;;wBAUF,MAAM;2BAKH,MAAM;wBAKT,MAAM,eAAe,MAAM;gCASnB,MAAM,WAAW,MAAM;CAQpD,CAAC"}
1
+ {"version":3,"file":"printPrompt.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printPrompt.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW;;wBAYF,MAAM;2BAUH,MAAM;wBAOT,MAAM,eAAe,MAAM;gCAanB,MAAM,WAAW,MAAM;CAUpD,CAAC"}
@@ -1,11 +1,11 @@
1
- import chalk from 'chalk';
2
1
  import path from 'path';
2
+ import { label, value, accent, warning, dim, divider, header, } from '../theme.js';
3
3
  /**
4
4
  * User interface messages for environment file operations.
5
5
  *
6
6
  * @description Provides formatted console output for various environment file
7
7
  * comparison and creation scenarios. All methods output styled messages using
8
- * chalk for enhanced readability.
8
+ * theme tokens for enhanced readability.
9
9
  *
10
10
  * @property {Function} noEnvFound - Displays warning when no environment files are detected
11
11
  * @property {Function} missingEnv - Displays warning for a specific missing environment file
@@ -16,23 +16,40 @@ import path from 'path';
16
16
  export const printPrompt = {
17
17
  noEnvFound() {
18
18
  console.log();
19
- console.log(chalk.yellow('⚠️ No .env* or .env.example file found. Skipping comparison.'));
19
+ console.log(`${warning('▸')} ${header('No env files found')}`);
20
+ console.log(`${divider}`);
21
+ console.log(`${label('Status'.padEnd(26))}${warning('no .env* or .env.example found')}`);
22
+ console.log(`${label('Action'.padEnd(26))}${dim('skipping comparison')}`);
23
+ console.log(`${divider}`);
20
24
  },
21
25
  missingEnv(envPath) {
22
26
  console.log();
23
- console.log(chalk.yellow(`📄 ${path.basename(envPath)} file not found.`));
27
+ console.log(`${warning('▸')} ${header('File not found')}`);
28
+ console.log(`${divider}`);
29
+ console.log(`${label('File'.padEnd(26))}${warning(path.basename(envPath))}`);
30
+ console.log(`${divider}`);
24
31
  },
25
32
  skipCreation(fileType) {
26
33
  console.log();
27
- console.log(chalk.gray(`🚫 Skipping ${fileType} creation.`));
34
+ console.log(`${dim('▸')} ${header(`Skipping ${fileType} creation`)}`);
35
+ console.log(`${divider}`);
36
+ console.log(`${divider}`);
28
37
  },
29
38
  envCreated(envPath, examplePath) {
30
39
  console.log();
31
- console.log(chalk.green(`✅ ${path.basename(envPath)} file created successfully from ${path.basename(examplePath)}.`));
40
+ console.log(`${accent('▸')} ${header('File created')}`);
41
+ console.log(`${divider}`);
42
+ console.log(`${label('Created'.padEnd(26))}${value(path.basename(envPath))}`);
43
+ console.log(`${label('From'.padEnd(26))}${dim(path.basename(examplePath))}`);
44
+ console.log(`${divider}`);
32
45
  },
33
46
  exampleCreated(examplePath, envPath) {
34
47
  console.log();
35
- console.log(chalk.green(`✅ ${path.basename(examplePath)} file created successfully from ${path.basename(envPath)}.`));
48
+ console.log(`${accent('▸')} ${header('File created')}`);
49
+ console.log(`${divider}`);
50
+ console.log(`${label('Created'.padEnd(26))}${value(path.basename(examplePath))}`);
51
+ console.log(`${label('From'.padEnd(26))}${dim(path.basename(envPath))}`);
52
+ console.log(`${divider}`);
36
53
  },
37
54
  };
38
55
  //# sourceMappingURL=printPrompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printPrompt.js","sourceRoot":"","sources":["../../../../src/ui/compare/printPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU;QACR,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,+DAA+D,CAChE,CACF,CAAC;IACJ,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,QAAQ,YAAY,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,WAAmB;QAC7C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAmC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAC5F,CACF,CAAC;IACJ,CAAC;IAED,cAAc,CAAC,WAAmB,EAAE,OAAe;QACjD,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,KAAK,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mCAAmC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAC5F,CACF,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"printPrompt.js","sourceRoot":"","sources":["../../../../src/ui/compare/printPrompt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;GAEG;AACH,UAAU,YAAY;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,YAAY,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,EACvD,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,OAAO,GACnB,IAAI,CA4BN"}
1
+ {"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGtD;;GAEG;AACH,UAAU,YAAY;IACpB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,CAAC,EAAE,YAAY,EACf,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,EACvD,IAAI,EAAE,OAAO,EACb,SAAS,EAAE,OAAO,EAClB,WAAW,EAAE,OAAO,GACnB,IAAI,CAwBN"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { label, value, accent, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Print comparison statistics between two environment files.
4
4
  * @param envName The name of the environment file.
@@ -12,21 +12,24 @@ import chalk from 'chalk';
12
12
  export function printStats(envName, exampleName, s, filtered, json, showStats, checkValues) {
13
13
  if (json || !showStats)
14
14
  return;
15
- console.log(chalk.magenta('📊 Compare Statistics:'));
16
- console.log(chalk.magenta.dim(` Keys in ${envName}: ${s.envCount}`));
17
- console.log(chalk.magenta.dim(` Keys in ${exampleName}: ${s.exampleCount}`));
18
- console.log(chalk.magenta.dim(` Shared keys: ${s.sharedCount}`));
19
- console.log(chalk.magenta.dim(` Missing (in ${envName}): ${filtered.missing.length}`));
15
+ const row = (lbl, val) => console.log(`${label(lbl.padEnd(26))}${value(String(val))}`);
16
+ console.log();
17
+ console.log(`${accent('▸')} ${header('Compare Statistics')}`);
18
+ console.log(`${divider}`);
19
+ row(`Keys in ${envName}`, s.envCount);
20
+ row(`Keys in ${exampleName}`, s.exampleCount);
21
+ row('Shared keys', s.sharedCount);
22
+ row(`Missing in ${envName}`, filtered.missing.length);
20
23
  if (filtered.extra?.length) {
21
- console.log(chalk.magenta.dim(` Extra (not in ${exampleName}): ${filtered.extra.length}`));
24
+ row(`Extra (not in ${exampleName})`, filtered.extra.length);
22
25
  }
23
26
  if (filtered.empty?.length) {
24
- console.log(chalk.magenta.dim(` Empty values: ${filtered.empty.length}`));
27
+ row('Empty values', filtered.empty.length);
25
28
  }
26
- console.log(chalk.magenta.dim(` Duplicate keys: ${s.duplicateCount}`));
29
+ row('Duplicate keys', s.duplicateCount);
27
30
  if (checkValues) {
28
- console.log(chalk.magenta.dim(` Value mismatches: ${s.valueMismatchCount}`));
31
+ row('Value mismatches', s.valueMismatchCount);
29
32
  }
30
- console.log();
33
+ console.log(`${divider}`);
31
34
  }
32
35
  //# sourceMappingURL=printStats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAmB1B;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,WAAmB,EACnB,CAAe,EACf,QAAuD,EACvD,IAAa,EACb,SAAkB,EAClB,WAAoB;IAEpB,IAAI,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,KAAK,CAAC,CAAC,YAAY,EAAE,CAAC,CAClE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,OAAO,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAC5E,CAAC;IACF,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CACf,oBAAoB,WAAW,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAC7D,CACF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACzE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/compare/printStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAkBpE;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CACxB,OAAe,EACf,WAAmB,EACnB,CAAe,EACf,QAAuD,EACvD,IAAa,EACb,SAAkB,EAClB,WAAoB;IAEpB,IAAI,IAAI,IAAI,CAAC,SAAS;QAAE,OAAO;IAE/B,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,GAAoB,EAAE,EAAE,CAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAE/D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,WAAW,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,GAAG,CAAC,WAAW,WAAW,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9C,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;IAClC,GAAG,CAAC,cAAc,OAAO,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,iBAAiB,WAAW,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;IACxC,IAAI,WAAW,EAAE,CAAC;QAChB,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { error, warning, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints a comparison error message.
4
4
  * @param message The error message to print
@@ -7,14 +7,15 @@ import chalk from 'chalk';
7
7
  * @returns An object indicating whether the process should exit
8
8
  */
9
9
  export function printComparisonError(message, shouldExit, json) {
10
- const errorMessage = `⚠️ ${message}`;
11
- if (shouldExit) {
12
- console.log(chalk.red(errorMessage.replace('⚠️', '')));
13
- return { exit: true };
14
- }
15
- if (!json) {
16
- console.log(chalk.yellow(errorMessage));
17
- }
18
- return { exit: false };
10
+ if (json)
11
+ return { exit: false };
12
+ const indicator = shouldExit ? error('') : warning('');
13
+ const colorFn = shouldExit ? error : warning;
14
+ console.log();
15
+ console.log(`${indicator} ${header('Error')}`);
16
+ console.log(`${divider}`);
17
+ console.log(`${colorFn(message)}`);
18
+ console.log(`${divider}`);
19
+ return { exit: shouldExit };
19
20
  }
20
21
  //# sourceMappingURL=printComparisonError.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printComparisonError.js","sourceRoot":"","sources":["../../../../src/ui/scan/printComparisonError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,UAAmB,EACnB,IAAa;IAEb,MAAM,YAAY,GAAG,OAAO,OAAO,EAAE,CAAC;IAEtC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"printComparisonError.js","sourceRoot":"","sources":["../../../../src/ui/scan/printComparisonError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE9D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,UAAmB,EACnB,IAAa;IAEb,IAAI,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAEjC,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAE7C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC"}
@@ -3,7 +3,8 @@ import type { EnvUsage } from '../../config/types.js';
3
3
  * Print environment variables that were logged using console.log / warn / error.
4
4
  *
5
5
  * @param logged - List of EnvUsage entries where isLogged=true
6
+ * @param strict - Whether strict mode is enabled
6
7
  * @returns true if anything was printed
7
8
  */
8
- export declare function printConsolelogWarning(logged: EnvUsage[]): boolean;
9
+ export declare function printConsolelogWarning(logged: EnvUsage[], strict?: boolean): boolean;
9
10
  //# sourceMappingURL=printConsolelogWarning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printConsolelogWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printConsolelogWarning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAGtE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAwClE"}
1
+ {"version":3,"file":"printConsolelogWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printConsolelogWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAItE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,UAAQ,GACb,OAAO,CAqCT"}
@@ -1,15 +1,20 @@
1
- import chalk from 'chalk';
2
1
  import { normalizePath } from '../../core/helpers/normalizePath.js';
2
+ import { label, warning, error, dim, divider, header, value } from '../theme.js';
3
3
  /**
4
4
  * Print environment variables that were logged using console.log / warn / error.
5
5
  *
6
6
  * @param logged - List of EnvUsage entries where isLogged=true
7
+ * @param strict - Whether strict mode is enabled
7
8
  * @returns true if anything was printed
8
9
  */
9
- export function printConsolelogWarning(logged) {
10
+ export function printConsolelogWarning(logged, strict = false) {
10
11
  if (!logged || logged.length === 0)
11
12
  return false;
12
- console.log(chalk.yellow(`⚠️ Environment variables logged to console:`));
13
+ const indicator = strict ? error('▸') : warning('▸');
14
+ const textColor = strict ? error : warning;
15
+ console.log();
16
+ console.log(`${indicator} ${header('Environment variables logged to console')}`);
17
+ console.log(`${divider}`);
13
18
  const grouped = logged.reduce((acc, entry) => {
14
19
  if (!acc[entry.variable])
15
20
  acc[entry.variable] = [];
@@ -17,20 +22,17 @@ export function printConsolelogWarning(logged) {
17
22
  return acc;
18
23
  }, {});
19
24
  for (const [variable, usages] of Object.entries(grouped)) {
20
- console.log(chalk.yellow(` - ${variable}`));
21
- // Deduplicate by file + line (unique locations)
22
25
  const uniqueUsages = Array.from(new Map(usages.map((u) => [`${u.file}:${u.line}`, u])).values());
23
26
  const maxShow = 3;
24
27
  uniqueUsages.slice(0, maxShow).forEach((usage) => {
25
28
  const normalizedFile = normalizePath(usage.file);
26
- console.log(chalk.yellow.dim(` Logged at: ${normalizedFile}:${usage.line}`));
27
- console.log(chalk.gray(` ${usage.context.trim()}`));
29
+ console.log(`${label(variable.padEnd(26))}${textColor(`${normalizedFile}:${usage.line}`)}`);
28
30
  });
29
31
  if (uniqueUsages.length > maxShow) {
30
- console.log(chalk.gray(` ... and ${uniqueUsages.length - maxShow} more locations`));
32
+ console.log(`${label(''.padEnd(26))}${dim(`+${uniqueUsages.length - maxShow} more`)}`);
31
33
  }
32
34
  }
33
- console.log();
35
+ console.log(`${divider}`);
34
36
  return true;
35
37
  }
36
38
  //# sourceMappingURL=printConsolelogWarning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printConsolelogWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printConsolelogWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAkB;IACvD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;IAE1E,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,KAAK,EAAE,EAAE;QAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;QAE9C,gDAAgD;QAChD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAChE,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAAC;QAElB,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CACpE,CAAC;YACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,gBAAgB,YAAY,CAAC,MAAM,GAAG,OAAO,iBAAiB,CAC/D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"printConsolelogWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printConsolelogWarning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEjF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAkB,EAClB,MAAM,GAAG,KAAK;IAEd,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEjD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAE3C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,yCAAyC,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,KAAK,EAAE,EAAE;QAC3D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QACnD,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAChE,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,CAAC;QAElB,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,cAAc,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,OAAO,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -2,6 +2,7 @@ import type { ExampleSecretWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Prints example file secret warnings to the console.
4
4
  * @param warnings - List of example file secret warnings
5
+ * @param strict - Whether strict mode is enabled
5
6
  */
6
- export declare function printExampleWarnings(warnings: ExampleSecretWarning[]): void;
7
+ export declare function printExampleWarnings(warnings: ExampleSecretWarning[], strict?: boolean): void;
7
8
  //# sourceMappingURL=printExampleWarnings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printExampleWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExampleWarnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,EAAE,GAC/B,IAAI,CAYN"}
1
+ {"version":3,"file":"printExampleWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExampleWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAGlE;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,MAAM,UAAQ,GACb,IAAI,CAeN"}
@@ -1,15 +1,20 @@
1
- import chalk from 'chalk';
1
+ import { label, warning, error, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints example file secret warnings to the console.
4
4
  * @param warnings - List of example file secret warnings
5
+ * @param strict - Whether strict mode is enabled
5
6
  */
6
- export function printExampleWarnings(warnings) {
7
+ export function printExampleWarnings(warnings, strict = false) {
7
8
  if (!warnings || warnings.length === 0)
8
9
  return;
9
- console.log(chalk.yellow('🚨 Potential real secrets found in .env.example:'));
10
+ const indicator = strict ? error('▸') : warning('▸');
11
+ console.log();
12
+ console.log(`${indicator} ${header('Potential secrets in .env.example')}`);
13
+ console.log(`${divider}`);
10
14
  for (const w of warnings) {
11
- console.log(chalk.yellow(` - ${w.key} = "${w.value}" ${w.reason} [${w.severity}]`));
15
+ const severityColor = w.severity === 'high' ? error : warning;
16
+ console.log(`${label(w.key.padEnd(26))}${severityColor(`${w.reason} [${w.severity}]`)}`);
12
17
  }
13
- console.log();
18
+ console.log(`${divider}`);
14
19
  }
15
20
  //# sourceMappingURL=printExampleWarnings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printExampleWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExampleWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgC;IAEhC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;IAC9E,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,QAAQ,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,GAAG,CAC7D,CACF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printExampleWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExampleWarnings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErE;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgC,EAChC,MAAM,GAAG,KAAK;IAEd,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,mCAAmC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,aAAa,GAAG,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import type { ExpireWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Prints expiration warnings for environment variables.
4
+ * Only shows variables expiring within the threshold defined in constants or already expired.
4
5
  * @param warnings Array of expiration warnings
5
- * @param isJson Whether to output in JSON format
6
6
  * @returns void
7
7
  */
8
8
  export declare function printExpireWarnings(warnings: ExpireWarning[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"printExpireWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,QA0B5D"}
1
+ {"version":3,"file":"printExpireWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CA+BnE"}
@@ -1,31 +1,33 @@
1
- import chalk from 'chalk';
1
+ import { label, value, accent, error, warning, divider, header } from '../theme.js';
2
+ import { EXPIRE_THRESHOLD_DAYS } from '../../config/constants.js';
2
3
  /**
3
4
  * Prints expiration warnings for environment variables.
5
+ * Only shows variables expiring within the threshold defined in constants or already expired.
4
6
  * @param warnings Array of expiration warnings
5
- * @param isJson Whether to output in JSON format
6
7
  * @returns void
7
8
  */
8
9
  export function printExpireWarnings(warnings) {
9
- if (warnings.length === 0)
10
+ const relevant = warnings.filter((w) => w.daysLeft <= EXPIRE_THRESHOLD_DAYS);
11
+ if (relevant.length === 0)
10
12
  return;
11
- console.log(chalk.yellow('⚠️ Expiration warnings:'));
12
- for (const warn of warnings) {
13
- const severity = warn.daysLeft === -1
14
- ? chalk.red('EXPIRED YESTERDAY')
15
- : warn.daysLeft < 0
16
- ? chalk.red(`EXPIRED ${Math.abs(warn.daysLeft)} days ago`)
17
- : warn.daysLeft === 0
18
- ? chalk.red('EXPIRES TODAY')
19
- : warn.daysLeft === 1
20
- ? chalk.red('expires tomorrow')
21
- : warn.daysLeft <= 3
22
- ? chalk.red(`expires in ${warn.daysLeft} days`)
23
- : warn.daysLeft <= 7
24
- ? chalk.yellow(`expires in ${warn.daysLeft} days`)
25
- : chalk.green(`expires in ${warn.daysLeft} days`);
26
- const keyLabel = chalk.yellow(`- ${warn.key.padEnd(15)}`);
27
- console.log(` ${keyLabel} → ${severity} (${warn.date})`);
28
- }
13
+ const mostUrgent = relevant.reduce((min, w) => Math.min(min, w.daysLeft), Infinity);
14
+ const indicator = mostUrgent <= 0
15
+ ? error('▸')
16
+ : mostUrgent <= 7
17
+ ? warning('▸')
18
+ : accent('▸');
29
19
  console.log();
20
+ console.log(`${indicator} ${header('Expiration warnings')}`);
21
+ console.log(`${divider}`);
22
+ const days = (n) => `${n} ${n === 1 ? 'day' : 'days'}`;
23
+ for (const warn of relevant) {
24
+ const status = warn.daysLeft <= 0
25
+ ? error(`expired ${days(Math.abs(warn.daysLeft))} ago`)
26
+ : warn.daysLeft <= 7
27
+ ? warning(`expires in ${days(warn.daysLeft)}`)
28
+ : value(`expires in ${days(warn.daysLeft)}`);
29
+ console.log(`${label(warn.key.padEnd(26))}${status}`);
30
+ }
31
+ console.log(`${divider}`);
30
32
  }
31
33
  //# sourceMappingURL=printExpireWarnings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printExpireWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAEtD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAChC,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC;gBACjB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBAC1D,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC;oBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC;oBAC5B,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC;wBACnB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC;wBAC/B,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;4BAClB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;4BAC/C,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;gCAClB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC;gCAClD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,QAAQ,OAAO,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,MAAM,QAAQ,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printExpireWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printExpireWarnings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAElE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAyB;IAC3D,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,qBAAqB,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAEpF,MAAM,SAAS,GACb,UAAU,IAAI,CAAC;QACb,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACZ,CAAC,CAAC,UAAU,IAAI,CAAC;YACf,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;YACd,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEpB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAE/D,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,MAAM,GACV,IAAI,CAAC,QAAQ,IAAI,CAAC;YAChB,CAAC,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YACvD,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC;gBAClB,CAAC,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9C,CAAC,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEnD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -2,6 +2,7 @@ import type { FrameworkWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Prints environment variable usage warnings to the console.
4
4
  * @param warnings - List of environment variable warnings
5
+ * @param strict - Whether strict mode is enabled
5
6
  */
6
- export declare function printFrameworkWarnings(warnings: FrameworkWarning[]): void;
7
+ export declare function printFrameworkWarnings(warnings: FrameworkWarning[], strict?: boolean): void;
7
8
  //# sourceMappingURL=printFrameworkWarnings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printFrameworkWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,uBAAuB,CAAC;AAW/B;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAuBzE"}
1
+ {"version":3,"file":"printFrameworkWarnings.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,uBAAuB,CAAC;AAajF;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,MAAM,UAAQ,GACb,IAAI,CA+BN"}
@@ -1,4 +1,5 @@
1
- import chalk from 'chalk';
1
+ import { label, warning, error, dim, divider, header, wrapReason } from '../theme.js';
2
+ import { normalizePath } from '../../core/helpers/normalizePath.js';
2
3
  /**
3
4
  * Labels for detected frameworks to display in warnings
4
5
  */
@@ -10,16 +11,35 @@ const FRAMEWORK_LABELS = {
10
11
  /**
11
12
  * Prints environment variable usage warnings to the console.
12
13
  * @param warnings - List of environment variable warnings
14
+ * @param strict - Whether strict mode is enabled
13
15
  */
14
- export function printFrameworkWarnings(warnings) {
16
+ export function printFrameworkWarnings(warnings, strict = false) {
15
17
  if (!warnings || warnings.length === 0)
16
18
  return;
17
- // Deduplicate warnings by variable + file + line + reason
18
- const uniqueWarnings = Array.from(new Map(warnings.map((w) => [`${w.variable}:${w.file}:${w.line}:${w.reason}`, w])).values());
19
- console.log(chalk.yellow(`⚠️ Framework issues (${FRAMEWORK_LABELS[uniqueWarnings[0].framework]}):`));
20
- for (const w of uniqueWarnings) {
21
- console.log(chalk.yellow(` - ${w.variable} (${w.file}:${w.line}) ${w.reason}`));
19
+ const frameworkLabel = FRAMEWORK_LABELS[warnings[0].framework];
20
+ const indicator = strict ? error('▸') : warning('▸');
21
+ const textColor = strict ? error : warning;
22
+ // Group by variable+reason, collect unique locations
23
+ const grouped = new Map();
24
+ for (const w of warnings) {
25
+ const key = `${w.variable}:${w.reason}`;
26
+ if (!grouped.has(key))
27
+ grouped.set(key, { w, locations: [] });
28
+ const loc = `${normalizePath(w.file)}:${w.line}`;
29
+ if (!grouped.get(key).locations.includes(loc)) {
30
+ grouped.get(key).locations.push(loc);
31
+ }
22
32
  }
23
33
  console.log();
34
+ console.log(`${indicator} ${header(`Framework issues (${frameworkLabel})`)}`);
35
+ console.log(`${divider}`);
36
+ for (const { w, locations } of grouped.values()) {
37
+ console.log(`${label(w.variable.padEnd(26))}${textColor(wrapReason(w.reason, 26))}`);
38
+ for (const loc of locations) {
39
+ console.log(`${label(''.padEnd(26))}${dim(loc)}`);
40
+ }
41
+ }
42
+ console.log(`${divider}`);
43
+ console.log();
24
44
  }
25
45
  //# sourceMappingURL=printFrameworkWarnings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printFrameworkWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B;;GAEG;AACH,MAAM,gBAAgB,GAAsC;IAC1D,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAE,mBAAmB;CAC7B,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAA4B;IACjE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,0DAA0D;IAC1D,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,GAAG,CACL,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAC1E,CAAC,MAAM,EAAE,CACX,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yBAAyB,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,IAAI,CAC5E,CACF,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printFrameworkWarnings.js","sourceRoot":"","sources":["../../../../src/ui/scan/printFrameworkWarnings.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;GAEG;AACH,MAAM,gBAAgB,GAAsC;IAC1D,MAAM,EAAK,SAAS;IACpB,SAAS,EAAE,WAAW;IACtB,OAAO,EAAI,mBAAmB;CAC/B,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAA4B,EAC5B,MAAM,GAAG,KAAK;IAEd,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE/C,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,SAAS,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;IAE3C,qDAAqD;IACrD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwD,CAAC;IAChF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,qBAAqB,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,KAAK,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printHeader.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printHeader.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAO1D"}
1
+ {"version":3,"file":"printHeader.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printHeader.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAU1D"}
@@ -1,13 +1,16 @@
1
- import chalk from 'chalk';
1
+ import { accent, label, value, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints the header for the scanning output.
4
4
  * @param comparedAgainst Optional string indicating what the codebase is being compared against.
5
5
  * @returns void
6
6
  */
7
7
  export function printHeader(comparedAgainst) {
8
- if (comparedAgainst) {
9
- console.log();
10
- console.log(chalk.cyan(`📋 Scanning environment variable usage against: ${comparedAgainst}`));
11
- }
8
+ if (!comparedAgainst)
9
+ return;
10
+ console.log();
11
+ console.log(`${accent('▸')} ${header('dotenv-diff')}`);
12
+ console.log(`${divider}`);
13
+ console.log(`${label('Comparing against'.padEnd(26))}${value(comparedAgainst)}`);
14
+ console.log(`${divider}`);
12
15
  }
13
16
  //# sourceMappingURL=printHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printHeader.js","sourceRoot":"","sources":["../../../../src/ui/scan/printHeader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,eAAwB;IAClD,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,mDAAmD,eAAe,EAAE,CAAC,CACjF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printHeader.js","sourceRoot":"","sources":["../../../../src/ui/scan/printHeader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,eAAwB;IAClD,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,EAAE,CACpE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printHealthScore.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,OAAe,GACpB,OAAO,CA2BT"}
1
+ {"version":3,"file":"printHealthScore.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,OAAe,GACpB,OAAO,CAkBT"}