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,3 +1,4 @@
1
+ import { accent, warning, error, divider, header, dim, value } from '../theme.js';
1
2
  import chalk from 'chalk';
2
3
  /**
3
4
  * Print the health score of the project based on scan results.
@@ -6,29 +7,19 @@ import chalk from 'chalk';
6
7
  * @returns Whether the health score was printed.
7
8
  */
8
9
  export function printHealthScore(score, json = false) {
9
- let color = chalk.green;
10
- let emoji = '💚';
11
- let label = 'Excellent health';
12
10
  if (json)
13
11
  return false;
14
- if (score < 90) {
15
- color = chalk.yellow;
16
- emoji = '💛';
17
- label = 'Can improve';
18
- }
19
- if (score < 70) {
20
- color = chalk.redBright;
21
- emoji = '🧡';
22
- label = 'Needs attention';
23
- }
24
- if (score < 40) {
25
- color = chalk.red;
26
- emoji = '🚨';
27
- label = 'Poor health';
28
- }
29
- console.log(`${emoji} ${color('Project Health Score:')} (${score}/100)`);
30
- console.log(` ${color(label)}`);
31
- console.log('');
12
+ const [indicator, scoreColor, lbl] = score >= 90 ? [accent('▸'), accent, 'Excellent health']
13
+ : score >= 70 ? [warning('▸'), warning, 'Can improve']
14
+ : score >= 40 ? [error(''), error, 'Needs attention']
15
+ : [error('▸'), error, 'Poor health'];
16
+ console.log();
17
+ console.log(`${indicator} ${header('Project Health Score')}`);
18
+ console.log(`${divider}`);
19
+ console.log(`${chalk.hex('#888888')('Score'.padEnd(26))}${scoreColor(`${score}/100`)}`);
20
+ console.log(`${chalk.hex('#888888')('Status'.padEnd(26))}${scoreColor(lbl)}`);
21
+ console.log(`${divider}`);
22
+ console.log();
32
23
  return true;
33
24
  }
34
25
  //# sourceMappingURL=printHealthScore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printHealthScore.js","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,OAAgB,KAAK;IAErB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,IAAI,KAAK,GAAG,kBAAkB,CAAC;IAE/B,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvB,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;QACrB,KAAK,GAAG,IAAI,CAAC;QACb,KAAK,GAAG,aAAa,CAAC;IACxB,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;QACxB,KAAK,GAAG,IAAI,CAAC;QACb,KAAK,GAAG,iBAAiB,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;QACf,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;QAClB,KAAK,GAAG,IAAI,CAAC;QACb,KAAK,GAAG,aAAa,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,uBAAuB,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"printHealthScore.js","sourceRoot":"","sources":["../../../../src/ui/scan/printHealthScore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAa,EACb,OAAgB,KAAK;IAErB,IAAI,IAAI;QAAE,OAAO,KAAK,CAAC;IAEvB,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,GAChC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAI,MAAM,EAAG,kBAAkB,CAAC;QAC5D,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAG,OAAO,EAAE,aAAa,CAAC;YACvD,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAK,KAAK,EAAI,iBAAiB,CAAC;gBAC3D,CAAC,CAAe,CAAC,KAAK,CAAC,GAAG,CAAC,EAAK,KAAK,EAAI,aAAa,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -2,7 +2,8 @@ import type { InconsistentNamingWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Prints warnings about inconsistent naming patterns in environment variables.
4
4
  * @param warnings Array of inconsistent naming warnings
5
+ * @param strict Whether strict mode is enabled
5
6
  * @returns void
6
7
  */
7
- export declare function printInconsistentNamingWarning(warnings: InconsistentNamingWarning[]): void;
8
+ export declare function printInconsistentNamingWarning(warnings: InconsistentNamingWarning[], strict?: boolean): void;
8
9
  //# sourceMappingURL=printInconsistentNamingWarning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printInconsistentNamingWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,yBAAyB,EAAE,QActC"}
1
+ {"version":3,"file":"printInconsistentNamingWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAGvE;;;;;GAKG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,yBAAyB,EAAE,EACrC,MAAM,UAAQ,GACb,IAAI,CAeN"}
@@ -1,18 +1,21 @@
1
- import chalk from 'chalk';
1
+ import { label, value, warning, error, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints warnings about inconsistent naming patterns in environment variables.
4
4
  * @param warnings Array of inconsistent naming warnings
5
+ * @param strict Whether strict mode is enabled
5
6
  * @returns void
6
7
  */
7
- export function printInconsistentNamingWarning(warnings) {
8
- if (warnings.length === 0) {
8
+ export function printInconsistentNamingWarning(warnings, strict = false) {
9
+ if (warnings.length === 0)
9
10
  return;
10
- }
11
- console.log(chalk.yellow('⚠️ Inconsistent naming found:'));
11
+ const indicator = strict ? error('▸') : warning('▸');
12
+ const textColor = strict ? error : warning;
13
+ console.log();
14
+ console.log(`${indicator} ${header('Inconsistent naming')}`);
15
+ console.log(`${divider}`);
12
16
  for (const { key1, key2, suggestion } of warnings) {
13
- console.log(chalk.yellow(` - ${chalk.cyan(key1)} ↔ ${chalk.cyan(key2)}`));
14
- console.log(chalk.gray(` Suggested name: ${suggestion}`));
17
+ console.log(`${label(`${key1} ↔ ${key2}`.padEnd(26))}${textColor(suggestion)}`);
15
18
  }
16
- console.log();
19
+ console.log(`${divider}`);
17
20
  }
18
21
  //# sourceMappingURL=printInconsistentNamingWarning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printInconsistentNamingWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAqC;IAErC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAE5D,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printInconsistentNamingWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printInconsistentNamingWarning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAC5C,QAAqC,EACrC,MAAM,GAAG,KAAK;IAEd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,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,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,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,QAAQ,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printMissing.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAGtE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,QAAQ,EAAE,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAuCT"}
1
+ {"version":3,"file":"printMissing.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAKtE;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,EAAE,QAAQ,EAAE,EAChB,eAAe,EAAE,MAAM,GACtB,OAAO,CAkCT"}
@@ -1,5 +1,5 @@
1
- import chalk from 'chalk';
2
1
  import { normalizePath } from '../../core/helpers/normalizePath.js';
2
+ import { label, value, error, divider } from '../theme.js';
3
3
  /**
4
4
  * Print missing environment variables (used in code but not in env file).
5
5
  *
@@ -12,14 +12,14 @@ export function printMissing(missing, used, comparedAgainst) {
12
12
  if (missing.length === 0)
13
13
  return false;
14
14
  const fileType = comparedAgainst || 'environment file';
15
- console.log(chalk.red(`❌ Missing in ${fileType}:`));
16
- // Group by variable → find their usages
15
+ console.log();
16
+ console.log(`${error('▸')} ${value.bold(`Missing in ${fileType}`)}`);
17
+ console.log(`${divider}`);
17
18
  const grouped = missing.reduce((acc, variable) => {
18
19
  const usages = used.filter((u) => u.variable === variable);
19
20
  acc[variable] = usages;
20
21
  return acc;
21
22
  }, {});
22
- // Group by file first
23
23
  const byFile = new Map();
24
24
  for (const [variable, usages] of Object.entries(grouped)) {
25
25
  for (const usage of usages) {
@@ -29,15 +29,12 @@ export function printMissing(missing, used, comparedAgainst) {
29
29
  byFile.get(file).push({ variable, usage });
30
30
  }
31
31
  }
32
- // Print grouped by file
33
32
  for (const [file, items] of byFile) {
34
- console.log(chalk.bold(` ${file}`));
35
33
  for (const { variable, usage } of items) {
36
- console.log(chalk.red(` ${variable}: Line ${usage.line}`));
37
- console.log(chalk.red.dim(` ${usage.context.trim()}`));
34
+ console.log(`${label(variable.padEnd(26))}${error(`${normalizePath(usage.file)}:${usage.line}`)}`);
38
35
  }
39
36
  }
40
- console.log();
37
+ console.log(`${divider}`);
41
38
  return true;
42
39
  }
43
40
  //# sourceMappingURL=printMissing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printMissing.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAiB,EACjB,IAAgB,EAChB,eAAuB;IAEvB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,eAAe,IAAI,kBAAkB,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,CAAC,CAAC;IAEpD,wCAAwC;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,QAAgB,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sBAAsB;IACtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAGnB,CAAC;IAEJ,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC;QAEtC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,QAAQ,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"printMissing.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG3D;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,OAAiB,EACjB,IAAgB,EAChB,eAAuB;IAEvB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,eAAe,IAAI,kBAAkB,CAAC;IAEvD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,QAAgB,EAAE,EAAE;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACrE,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwD,CAAC;IAE/E,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,KAAK,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printMissingExample.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAuBnE"}
1
+ {"version":3,"file":"printMissingExample.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAkBnE"}
@@ -1,7 +1,7 @@
1
- import chalk from 'chalk';
2
1
  import fs from 'fs';
3
2
  import path from 'path';
4
3
  import { resolveFromCwd } from '../../core/helpers/resolveFromCwd.js';
4
+ import { label, error, warning, divider, header } from '../theme.js';
5
5
  /**
6
6
  * Print message if the specified example file is missing.
7
7
  * Handles CI vs interactive mode output.
@@ -16,15 +16,12 @@ export function printMissingExample(opts) {
16
16
  if (!missing)
17
17
  return false;
18
18
  const fileName = path.basename(opts.examplePath);
19
- const msgText = `Missing example file: ${fileName}`;
19
+ const indicator = opts.isCiMode ? error('▸') : warning('▸');
20
20
  console.log();
21
- if (opts.isCiMode) {
22
- console.log(chalk.red(`❌ ${msgText}`));
23
- return true;
24
- }
25
- if (!opts.json) {
26
- console.log(chalk.yellow(`⚠️ ${msgText}`));
27
- }
28
- return false;
21
+ console.log(`${indicator} ${header('Missing example file')}`);
22
+ console.log(`${divider}`);
23
+ console.log(`${label('File'.padEnd(26))}${(opts.isCiMode ? error : warning)(fileName)}`);
24
+ console.log(`${divider}`);
25
+ return opts.isCiMode ?? false;
29
26
  }
30
27
  //# sourceMappingURL=printMissingExample.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printMissingExample.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAGtE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,yBAAyB,QAAQ,EAAE,CAAC;IAEpD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"printMissingExample.js","sourceRoot":"","sources":["../../../../src/ui/scan/printMissingExample.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErE;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAsB;IACxD,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAE3C,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,OAAO,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC;AAChC,CAAC"}
@@ -2,7 +2,8 @@ import type { SecretFinding } from '../../core/security/secretDetectors.js';
2
2
  /**
3
3
  * Print potential secrets detected in the codebase.
4
4
  * @param secrets - List of secret findings
5
+ * @param strict - Whether strict mode is enabled
5
6
  * @returns void
6
7
  */
7
- export declare function printSecrets(secrets: SecretFinding[]): void;
8
+ export declare function printSecrets(secrets: SecretFinding[], strict?: boolean): void;
8
9
  //# sourceMappingURL=printSecrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printSecrets.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printSecrets.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AA8B5E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,IAAI,CAmC3D"}
1
+ {"version":3,"file":"printSecrets.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printSecrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AA6B5E;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,UAAQ,GAAG,IAAI,CA8B3E"}
@@ -1,41 +1,35 @@
1
- import chalk from 'chalk';
2
1
  import { normalizePath } from '../../core/helpers/normalizePath.js';
3
- /** Get the color function for the severity level.
2
+ import { label, accent, warning, error, divider, header, } from '../theme.js';
3
+ /**
4
+ * Get the color function for the severity level.
4
5
  * @param severity - The severity level of the secret finding.
5
- * @returns The corresponding chalk color function.
6
+ * @returns The corresponding theme color function.
6
7
  */
7
8
  function getSeverityColor(severity) {
8
9
  switch (severity) {
9
10
  case 'high':
10
- return chalk.red;
11
+ return error;
11
12
  case 'medium':
12
- return chalk.yellow;
13
- case 'low':
14
- return chalk.green;
13
+ return warning;
15
14
  default:
16
- return chalk.blue;
15
+ return accent;
17
16
  }
18
17
  }
19
- /** Get the label for the severity level.
20
- * @param severity - The severity level of the secret finding.
21
- * @returns The corresponding label as a string.
22
- */
23
- function getSeverityLabel(severity) {
24
- return severity.toUpperCase();
25
- }
26
18
  /**
27
19
  * Print potential secrets detected in the codebase.
28
20
  * @param secrets - List of secret findings
21
+ * @param strict - Whether strict mode is enabled
29
22
  * @returns void
30
23
  */
31
- export function printSecrets(secrets) {
24
+ export function printSecrets(secrets, strict = false) {
32
25
  if (!secrets || secrets.length === 0)
33
26
  return;
34
- // Sort by severity (high -> medium -> low)
35
27
  const severityOrder = { high: 0, medium: 1, low: 2 };
36
28
  const sorted = [...secrets].sort((a, b) => severityOrder[a.severity] - severityOrder[b.severity]);
37
- console.log(chalk.yellow('🔒 Potential secrets detected in codebase:'));
38
- // Group by file
29
+ const indicator = strict ? error('▸') : warning('▸');
30
+ console.log();
31
+ console.log(`${indicator} ${header('Potential secrets detected')}`);
32
+ console.log(`${divider}`);
39
33
  const byFile = new Map();
40
34
  for (const f of sorted) {
41
35
  if (!byFile.has(f.file))
@@ -43,14 +37,11 @@ export function printSecrets(secrets) {
43
37
  byFile.get(f.file).push(f);
44
38
  }
45
39
  for (const [file, findings] of byFile) {
46
- const normalizedFile = normalizePath(file);
47
- console.log(chalk.bold(` ${normalizedFile}`));
48
40
  for (const f of findings) {
49
41
  const color = getSeverityColor(f.severity);
50
- const label = getSeverityLabel(f.severity);
51
- console.log(color(` ${label}: Line ${f.line} - ${f.message}\n ${chalk.dim(f.snippet)}`));
42
+ console.log(`${label(f.severity.toUpperCase().padEnd(26))}${color(`${normalizePath(f.file)}:${f.line}`)}`);
52
43
  }
53
44
  }
54
- console.log();
45
+ console.log(`${divider}`);
55
46
  }
56
47
  //# sourceMappingURL=printSecrets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printSecrets.js","sourceRoot":"","sources":["../../../../src/ui/scan/printSecrets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAEpE;;;GAGG;AACH,SAAS,gBAAgB,CACvB,QAAmC;IAEnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC,GAAG,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC,KAAK,CAAC;QACrB;YACE,OAAO,KAAK,CAAC,IAAI,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,QAAmC;IAC3D,OAAO,QAAQ,CAAC,WAAW,EAAE,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAAwB;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE7C,2CAA2C;IAC3C,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAChE,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,4CAA4C,CAAC,CAAC,CAAC;IAExE,gBAAgB;IAChB,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC;QAEhD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAE3C,OAAO,CAAC,GAAG,CACT,KAAK,CACH,OAAO,KAAK,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,SAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAC3E,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printSecrets.js","sourceRoot":"","sources":["../../../../src/ui/scan/printSecrets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACpE,OAAO,EACL,KAAK,EACL,MAAM,EACN,OAAO,EACP,KAAK,EACL,OAAO,EACP,MAAM,GACP,MAAM,aAAa,CAAC;AAErB;;;;GAIG;AACH,SAAS,gBAAgB,CACvB,QAAmC;IAEnC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,MAAM;YACT,OAAO,KAAK,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,OAAO,CAAC;QACjB;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,OAAwB,EAAE,MAAM,GAAG,KAAK;IACnE,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE7C,MAAM,aAAa,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;IACrD,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAChE,CAAC;IAEF,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,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAClD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -2,7 +2,6 @@ import type { ScanStats } from '../../config/types.js';
2
2
  /**
3
3
  * Print scan statistics for codebase scanning.
4
4
  * @param stats The scan statistics
5
- * @param json Whether to output in JSON format
6
5
  * @param showStats Whether to show statistics
7
6
  */
8
7
  export declare function printStats(stats: ScanStats, showStats: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printStats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,OAAO,GACjB,IAAI,CAgBN"}
1
+ {"version":3,"file":"printStats.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGvD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,OAAO,GACjB,IAAI,CAeN"}
@@ -1,20 +1,21 @@
1
- import chalk from 'chalk';
1
+ import { label, value, accent, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Print scan statistics for codebase scanning.
4
4
  * @param stats The scan statistics
5
- * @param json Whether to output in JSON format
6
5
  * @param showStats Whether to show statistics
7
6
  */
8
7
  export function printStats(stats, showStats) {
9
8
  if (!showStats)
10
9
  return;
10
+ const row = (lbl, val) => console.log(`${label(lbl.padEnd(26))}${value(String(val))}`);
11
11
  console.log();
12
- console.log(chalk.magenta('📊 Scan Statistics:'));
13
- console.log(chalk.magenta.dim(` Files scanned: ${stats.filesScanned}`));
14
- console.log(chalk.magenta.dim(` Total variable references: ${stats.totalUsages}`));
15
- console.log(chalk.magenta.dim(` Unique variables: ${stats.uniqueVariables}`));
16
- console.log(chalk.magenta.dim(` Warnings: ${stats.warningsCount}`));
17
- console.log(chalk.magenta.dim(` Scan duration: ${stats.duration.toFixed(2)}s`));
18
- console.log();
12
+ console.log(`${accent('▸')} ${header('Scan Statistics')}`);
13
+ console.log(`${divider}`);
14
+ row('Files scanned', stats.filesScanned);
15
+ row('Variable references', stats.totalUsages);
16
+ row('Unique variables', stats.uniqueVariables);
17
+ row('Warnings', stats.warningsCount);
18
+ row('Duration', `${stats.duration.toFixed(2)}s`);
19
+ console.log(`${divider}`);
19
20
  }
20
21
  //# sourceMappingURL=printStats.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/scan/printStats.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,SAAkB;IAElB,IAAI,CAAC,SAAS;QAAE,OAAO;IACvB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,KAAK,CAAC,WAAW,EAAE,CAAC,CACxE,CAAC;IACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,KAAK,CAAC,eAAe,EAAE,CAAC,CACnE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CACrE,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printStats.js","sourceRoot":"","sources":["../../../../src/ui/scan/printStats.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,SAAkB;IAElB,IAAI,CAAC,SAAS;QAAE,OAAO;IAEvB,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,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,GAAG,CAAC,eAAe,EAAQ,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/C,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9C,GAAG,CAAC,kBAAkB,EAAK,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,GAAG,CAAC,UAAU,EAAa,KAAK,CAAC,aAAa,CAAC,CAAC;IAChD,GAAG,CAAC,UAAU,EAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -2,8 +2,8 @@
2
2
  * Print unused environment variables (defined in env but not used in code).
3
3
  *
4
4
  * @param unused - Array of unused variable names
5
- * @param comparedAgainst - File name (.env eller andet)
6
- * @param showUnused - Whether unused should be shown at all
5
+ * @param comparedAgainst - File name (.env or other)
6
+ * @param strict - Whether strict mode is enabled
7
7
  */
8
- export declare function printUnused(unused: string[], comparedAgainst: string): void;
8
+ export declare function printUnused(unused: string[], comparedAgainst: string, strict?: boolean): void;
9
9
  //# sourceMappingURL=printUnused.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printUnused.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printUnused.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,GAAG,IAAI,CAW3E"}
1
+ {"version":3,"file":"printUnused.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printUnused.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,eAAe,EAAE,MAAM,EACvB,MAAM,UAAQ,GACb,IAAI,CAgBN"}
@@ -1,19 +1,23 @@
1
- import chalk from 'chalk';
1
+ import { label, value, warning, error, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Print unused environment variables (defined in env but not used in code).
4
4
  *
5
5
  * @param unused - Array of unused variable names
6
- * @param comparedAgainst - File name (.env eller andet)
7
- * @param showUnused - Whether unused should be shown at all
6
+ * @param comparedAgainst - File name (.env or other)
7
+ * @param strict - Whether strict mode is enabled
8
8
  */
9
- export function printUnused(unused, comparedAgainst) {
9
+ export function printUnused(unused, comparedAgainst, strict = false) {
10
10
  if (unused.length === 0)
11
11
  return;
12
12
  const fileType = comparedAgainst || 'environment file';
13
- console.log(chalk.yellow(`⚠️ Unused in codebase (defined in ${fileType}):`));
14
- unused.forEach((variable) => {
15
- console.log(chalk.yellow(` - ${variable}`));
16
- });
13
+ const indicator = strict ? error('▸') : warning('▸');
14
+ const textColor = strict ? error : warning;
17
15
  console.log();
16
+ console.log(`${indicator} ${header(`Unused in ${fileType}`)}`);
17
+ console.log(`${divider}`);
18
+ for (const variable of unused) {
19
+ console.log(`${label(variable.padEnd(26))}${textColor('unused')}`);
20
+ }
21
+ console.log(`${divider}`);
18
22
  }
19
23
  //# sourceMappingURL=printUnused.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printUnused.js","sourceRoot":"","sources":["../../../../src/ui/scan/printUnused.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,MAAgB,EAAE,eAAuB;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,MAAM,QAAQ,GAAG,eAAe,IAAI,kBAAkB,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,sCAAsC,QAAQ,IAAI,CAAC,CAAC,CAAC;IAE9E,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,QAAQ,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printUnused.js","sourceRoot":"","sources":["../../../../src/ui/scan/printUnused.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CACzB,MAAgB,EAChB,eAAuB,EACvB,MAAM,GAAG,KAAK;IAEd,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,MAAM,QAAQ,GAAG,eAAe,IAAI,kBAAkB,CAAC;IACvD,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,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,aAAa,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -4,6 +4,7 @@ import type { UppercaseWarning } from '../../config/types.js';
4
4
  *
5
5
  * @param warnings - List of non-uppercase env keys
6
6
  * @param comparedAgainst - The .env file name being checked
7
+ * @param strict - Whether strict mode is enabled
7
8
  */
8
- export declare function printUppercaseWarning(warnings: UppercaseWarning[], comparedAgainst: string): void;
9
+ export declare function printUppercaseWarning(warnings: UppercaseWarning[], comparedAgainst: string, strict?: boolean): void;
9
10
  //# sourceMappingURL=printUppercaseWarning.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printUppercaseWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,eAAe,EAAE,MAAM,GACtB,IAAI,CAeN"}
1
+ {"version":3,"file":"printUppercaseWarning.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAG9D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,eAAe,EAAE,MAAM,EACvB,MAAM,UAAQ,GACb,IAAI,CAgBN"}
@@ -1,18 +1,22 @@
1
- import chalk from 'chalk';
1
+ import { label, value, error, divider, header, warning } from '../theme.js';
2
2
  /**
3
3
  * Print warnings for environment variable keys that are not uppercase.
4
4
  *
5
5
  * @param warnings - List of non-uppercase env keys
6
6
  * @param comparedAgainst - The .env file name being checked
7
+ * @param strict - Whether strict mode is enabled
7
8
  */
8
- export function printUppercaseWarning(warnings, comparedAgainst) {
9
+ export function printUppercaseWarning(warnings, comparedAgainst, strict = false) {
9
10
  if (warnings.length === 0)
10
11
  return;
11
- console.log(chalk.yellow(`⚠️ Variables not using uppercase naming (${comparedAgainst}):`));
12
- warnings.forEach((w) => {
13
- console.log(chalk.yellow(` - ${w.key}`));
14
- console.log(chalk.yellow.dim(` Consider naming it: ${w.suggestion}`));
15
- });
12
+ const indicator = strict ? error('▸') : warning('▸');
13
+ const textColor = strict ? error : warning;
16
14
  console.log();
15
+ console.log(`${indicator} ${header(`Uppercase warnings (${comparedAgainst})`)}`);
16
+ console.log(`${divider}`);
17
+ for (const w of warnings) {
18
+ console.log(`${label(w.key.padEnd(26))}${textColor(w.suggestion)}`);
19
+ }
20
+ console.log(`${divider}`);
17
21
  }
18
22
  //# sourceMappingURL=printUppercaseWarning.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printUppercaseWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA4B,EAC5B,eAAuB;IAEvB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,6CAA6C,eAAe,IAAI,CACjE,CACF,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printUppercaseWarning.js","sourceRoot":"","sources":["../../../../src/ui/scan/printUppercaseWarning.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAA4B,EAC5B,eAAuB,EACvB,MAAM,GAAG,KAAK;IAEd,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAElC,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,uBAAuB,eAAe,GAAG,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printAutoFix.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printAutoFix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,IAAI,CA0BN"}
1
+ {"version":3,"file":"printAutoFix.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printAutoFix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGxD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,OAAO,GACZ,IAAI,CAsBN"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { label, value, accent, divider, header, wrapReason } from '../theme.js';
2
2
  /**
3
3
  * Prints the result of the auto-fix operation.
4
4
  * @param result - The result of the auto-fix operation.
@@ -9,21 +9,23 @@ import chalk from 'chalk';
9
9
  export function printAutoFix(result, envName, json) {
10
10
  if (json)
11
11
  return;
12
- if (result.fixApplied) {
13
- console.log(chalk.green(' Auto-fix applied:'));
12
+ console.log();
13
+ console.log(`${accent('▸')} ${header('Auto-fix')}`);
14
+ console.log(`${divider}`);
15
+ if (!result.fixApplied) {
16
+ console.log(`${label('Status'.padEnd(26))}${value('no changes needed')}`);
17
+ }
18
+ else {
14
19
  if (result.removedDuplicates.length) {
15
- console.log(chalk.green(` - Removed ${result.removedDuplicates.length} duplicate keys from ${envName}: ${result.removedDuplicates.join(', ')}`));
20
+ console.log(`${label('Removed duplicates'.padEnd(26))}${value(wrapReason(result.removedDuplicates.join(', '), 26))}`);
16
21
  }
17
22
  if (result.addedEnv.length) {
18
- console.log(chalk.green(` - Added ${result.addedEnv.length} missing keys to ${envName}: ${result.addedEnv.join(', ')}`));
23
+ console.log(`${label('Added missing keys'.padEnd(26))}${value(wrapReason(result.addedEnv.join(', '), 26))}`);
19
24
  }
20
25
  if (result.gitignoreUpdated) {
21
- console.log(chalk.green(` - Added ${envName} to .gitignore`));
26
+ console.log(`${label('Updated .gitignore'.padEnd(26))}${value(wrapReason(envName, 26))}`);
22
27
  }
23
28
  }
24
- else {
25
- console.log(chalk.green('✅ Auto-fix applied: no changes needed.'));
26
- }
27
- console.log();
29
+ console.log(`${divider}`);
28
30
  }
29
31
  //# sourceMappingURL=printAutoFix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printAutoFix.js","sourceRoot":"","sources":["../../../../src/ui/shared/printAutoFix.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAkB,EAClB,OAAe,EACf,IAAa;IAEb,IAAI,IAAI;QAAE,OAAO;IAEjB,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,eAAe,MAAM,CAAC,iBAAiB,CAAC,MAAM,wBAAwB,OAAO,KAAK,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxH,CACF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,KAAK,CACT,aAAa,MAAM,CAAC,QAAQ,CAAC,MAAM,oBAAoB,OAAO,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAChG,CACF,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,OAAO,gBAAgB,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printAutoFix.js","sourceRoot":"","sources":["../../../../src/ui/shared/printAutoFix.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEhF;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAkB,EAClB,OAAe,EACf,IAAa;IAEb,IAAI,IAAI;QAAE,OAAO;IAEjB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAE1B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACxH,CAAC;QACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/G,CAAC;QACD,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -9,5 +9,5 @@ export declare function printConfigLoaded(filePath: string): void;
9
9
  * @param error The thrown error
10
10
  * @returns void
11
11
  */
12
- export declare function printConfigLoadError(error: unknown): void;
12
+ export declare function printConfigLoadError(err: unknown): void;
13
13
  //# sourceMappingURL=printConfigStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printConfigStatus.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printConfigStatus.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAKxD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAOzD"}
1
+ {"version":3,"file":"printConfigStatus.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printConfigStatus.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CASvD"}