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,5 +1,5 @@
1
- import chalk from 'chalk';
2
1
  import path from 'path';
2
+ import { label, value, accent, error, divider, header } from '../theme.js';
3
3
  /**
4
4
  * Prints message when dotenv-diff.config.json is successfully loaded.
5
5
  * @param filePath The path to the loaded config file
@@ -8,20 +8,23 @@ import path from 'path';
8
8
  export function printConfigLoaded(filePath) {
9
9
  const fileName = path.basename(filePath);
10
10
  console.log();
11
- console.log(`${chalk.cyan('🧩 Loaded config:')} ${chalk.dim(fileName)}`);
11
+ console.log(`${accent('')} ${header('Config')}`);
12
+ console.log(`${divider}`);
13
+ console.log(`${label('Loaded'.padEnd(26))}${value(fileName)}`);
14
+ console.log(`${divider}`);
12
15
  }
13
16
  /**
14
17
  * Prints message when dotenv-diff.config.json fails to parse.
15
18
  * @param error The thrown error
16
19
  * @returns void
17
20
  */
18
- export function printConfigLoadError(error) {
19
- console.error(chalk.red('❌ Failed to parse dotenv-diff.config.json:'));
20
- if (error instanceof Error) {
21
- console.error(chalk.red(` ${error.message}`));
22
- }
23
- else {
24
- console.error(chalk.red(String(error)));
25
- }
21
+ export function printConfigLoadError(err) {
22
+ const message = err instanceof Error ? err.message : String(err);
23
+ console.log();
24
+ console.log(`${error('▸')} ${header('Config Error')}`);
25
+ console.log(`${divider}`);
26
+ console.log(`${label('Failed to parse'.padEnd(26))}${error('dotenv-diff.config.json')}`);
27
+ console.log(`${label('Reason'.padEnd(26))}${error(message)}`);
28
+ console.log(`${divider}`);
26
29
  }
27
30
  //# sourceMappingURL=printConfigStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printConfigStatus.js","sourceRoot":"","sources":["../../../../src/ui/shared/printConfigStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;IACvE,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printConfigStatus.js","sourceRoot":"","sources":["../../../../src/ui/shared/printConfigStatus.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY;IAC/C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -6,6 +6,7 @@
6
6
  * @param dEx Array of duplicate keys in the example file with their counts.
7
7
  * @param json Whether to output in JSON format.
8
8
  * @param fix Whether fix mode is enabled (skips printing duplicates as they will be fixed).
9
+ * @param strict Whether strict mode is enabled.
9
10
  * @returns void
10
11
  */
11
12
  export declare function printDuplicates(envName: string, exampleName: string, dEnv: Array<{
@@ -14,5 +15,5 @@ export declare function printDuplicates(envName: string, exampleName: string, dE
14
15
  }>, dEx: Array<{
15
16
  key: string;
16
17
  count: number;
17
- }>, json: boolean, fix?: boolean): void;
18
+ }>, json: boolean, fix?: boolean, strict?: boolean): void;
18
19
  //# sourceMappingURL=printDuplicates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printDuplicates.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printDuplicates.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3C,GAAG,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,GAAG,UAAQ,GACV,IAAI,CAsBN"}
1
+ {"version":3,"file":"printDuplicates.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printDuplicates.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC3C,GAAG,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EAC1C,IAAI,EAAE,OAAO,EACb,GAAG,UAAQ,EACX,MAAM,UAAQ,GACb,IAAI,CA6BN"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { label, value, warning, error, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints duplicate keys found in the environment and example files.
4
4
  * @param envName The name of the environment file.
@@ -7,20 +7,31 @@ import chalk from 'chalk';
7
7
  * @param dEx Array of duplicate keys in the example file with their counts.
8
8
  * @param json Whether to output in JSON format.
9
9
  * @param fix Whether fix mode is enabled (skips printing duplicates as they will be fixed).
10
+ * @param strict Whether strict mode is enabled.
10
11
  * @returns void
11
12
  */
12
- export function printDuplicates(envName, exampleName, dEnv, dEx, json, fix = false) {
13
+ export function printDuplicates(envName, exampleName, dEnv, dEx, json, fix = false, strict = false) {
13
14
  if (json)
14
15
  return;
16
+ const indicator = strict ? error('▸') : warning('▸');
15
17
  if (dEnv.length && !fix) {
16
- console.log(chalk.yellow(`⚠️ Duplicate keys in ${envName} (last occurrence wins):`));
17
- dEnv.forEach(({ key, count }) => console.log(chalk.yellow(` - ${key} (${count} occurrences)`)));
18
+ console.log();
19
+ console.log(`${indicator} ${header(`Duplicate keys in ${envName}`)}`);
20
+ console.log(`${divider}`);
21
+ for (const { key, count } of dEnv) {
22
+ console.log(`${label(key.padEnd(26))}${value(`${count} occurrences`)}`);
23
+ }
24
+ console.log(`${divider}`);
18
25
  console.log();
19
26
  }
20
27
  if (dEx.length) {
21
- console.log(chalk.yellow(`⚠️ Duplicate keys in ${exampleName} (last occurrence wins):`));
22
- dEx.forEach(({ key, count }) => console.log(chalk.yellow(` - ${key} (${count} occurrences)`)));
23
28
  console.log();
29
+ console.log(`${indicator} ${header(`Duplicate keys in ${exampleName}`)}`);
30
+ console.log(`${divider}`);
31
+ for (const { key, count } of dEx) {
32
+ console.log(`${label(key.padEnd(26))}${value(`${count} occurrences`)}`);
33
+ }
34
+ console.log(`${divider}`);
24
35
  }
25
36
  }
26
37
  //# sourceMappingURL=printDuplicates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printDuplicates.js","sourceRoot":"","sources":["../../../../src/ui/shared/printDuplicates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,WAAmB,EACnB,IAA2C,EAC3C,GAA0C,EAC1C,IAAa,EACb,GAAG,GAAG,KAAK;IAEX,IAAI,IAAI;QAAE,OAAO;IACjB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,yBAAyB,OAAO,0BAA0B,CAAC,CACzE,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,GAAG,KAAK,KAAK,eAAe,CAAC,CAAC,CACjE,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,yBAAyB,WAAW,0BAA0B,CAC/D,CACF,CAAC;QACF,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,KAAK,eAAe,CAAC,CAAC,CAChE,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printDuplicates.js","sourceRoot":"","sources":["../../../../src/ui/shared/printDuplicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAe,EACf,WAAmB,EACnB,IAA2C,EAC3C,GAA0C,EAC1C,IAAa,EACb,GAAG,GAAG,KAAK,EACX,MAAM,GAAG,KAAK;IAEd,IAAI,IAAI;QAAE,OAAO;IAEjB,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,qBAAqB,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;QAE1B,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,qBAAqB,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;QAE1B,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -15,27 +15,27 @@ export function printFixTips(filtered, envNotIgnored, json, fix) {
15
15
  let tip = null;
16
16
  if (hasMissing && hasDupEnv && envNotIgnored) {
17
17
  tip =
18
- '💡 Tip: Run with `--fix` to add missing keys, remove duplicates and add .env to .gitignore';
18
+ 'Tip: Run with `--fix` to add missing keys, remove duplicates and add .env to .gitignore';
19
19
  }
20
20
  else if (hasMissing && hasDupEnv) {
21
- tip = '💡 Tip: Run with `--fix` to add missing keys and remove duplicates';
21
+ tip = 'Tip: Run with `--fix` to add missing keys and remove duplicates';
22
22
  }
23
23
  else if (hasDupEnv && envNotIgnored) {
24
24
  tip =
25
- '💡 Tip: Run with `--fix` to remove duplicate keys and add .env to .gitignore';
25
+ 'Tip: Run with `--fix` to remove duplicate keys and add .env to .gitignore';
26
26
  }
27
27
  else if (hasMissing && envNotIgnored) {
28
28
  tip =
29
- '💡 Tip: Run with `--fix` to add missing keys and add .env to .gitignore';
29
+ 'Tip: Run with `--fix` to add missing keys and add .env to .gitignore';
30
30
  }
31
31
  else if (hasMissing) {
32
- tip = '💡 Tip: Run with `--fix` to add missing keys';
32
+ tip = 'Tip: Run with `--fix` to add missing keys';
33
33
  }
34
34
  else if (hasDupEnv) {
35
- tip = '💡 Tip: Run with `--fix` to remove duplicate keys';
35
+ tip = 'Tip: Run with `--fix` to remove duplicate keys';
36
36
  }
37
37
  else if (envNotIgnored) {
38
- tip = '💡 Tip: Run with `--fix` to ensure .env is added to .gitignore';
38
+ tip = 'Tip: Run with `--fix` to ensure .env is added to .gitignore';
39
39
  }
40
40
  if (tip) {
41
41
  console.log(chalk.gray(tip));
@@ -1 +1 @@
1
- {"version":3,"file":"printFixTips.js","sourceRoot":"","sources":["../../../../src/ui/shared/printFixTips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAkB,EAClB,aAAsB,EACtB,IAAa,EACb,GAAY;IAEZ,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO;IAExB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpD,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,UAAU,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QAC7C,GAAG;YACD,4FAA4F,CAAC;IACjG,CAAC;SAAM,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QACnC,GAAG,GAAG,oEAAoE,CAAC;IAC7E,CAAC;SAAM,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,GAAG;YACD,8EAA8E,CAAC;IACnF,CAAC;SAAM,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,GAAG;YACD,yEAAyE,CAAC;IAC9E,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,GAAG,GAAG,8CAA8C,CAAC;IACvD,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,GAAG,GAAG,mDAAmD,CAAC;IAC5D,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,GAAG,GAAG,gEAAgE,CAAC;IACzE,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printFixTips.js","sourceRoot":"","sources":["../../../../src/ui/shared/printFixTips.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAC1B,QAAkB,EAClB,aAAsB,EACtB,IAAa,EACb,GAAY;IAEZ,IAAI,IAAI,IAAI,GAAG;QAAE,OAAO;IAExB,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAEpD,IAAI,GAAG,GAAkB,IAAI,CAAC;IAC9B,IAAI,UAAU,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QAC7C,GAAG;YACD,yFAAyF,CAAC;IAC9F,CAAC;SAAM,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC;QACnC,GAAG,GAAG,iEAAiE,CAAC;IAC1E,CAAC;SAAM,IAAI,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,GAAG;YACD,2EAA2E,CAAC;IAChF,CAAC;SAAM,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,GAAG;YACD,sEAAsE,CAAC;IAC3E,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,GAAG,GAAG,2CAA2C,CAAC;IACpD,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,GAAG,GAAG,gDAAgD,CAAC;IACzD,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,GAAG,GAAG,6DAA6D,CAAC;IACtE,CAAC;IAED,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -7,6 +7,8 @@ interface GitignoreWarningOptions {
7
7
  envFile: string;
8
8
  /** The reason for the gitignore warning */
9
9
  reason: GitignoreIssue;
10
+ /** Whether strict mode is enabled */
11
+ strict?: boolean;
10
12
  /** Optional custom log function (defaults to console.log) */
11
13
  log?: (msg: string) => void;
12
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"printGitignore.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printGitignore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D;;GAEG;AACH,UAAU,uBAAuB;IAC/B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,cAAc,CAAC;IACvB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAoB5E"}
1
+ {"version":3,"file":"printGitignore.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printGitignore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAI5D;;GAEG;AACH,UAAU,uBAAuB;IAC/B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,MAAM,EAAE,cAAc,CAAC;IACvB,qCAAqC;IACrC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAiB5E"}
@@ -1,21 +1,22 @@
1
- import chalk from 'chalk';
2
1
  import { GITIGNORE_ISSUES } from '../../config/constants.js';
2
+ import { label, value, warning, error, divider, header } from '../theme.js';
3
3
  /**
4
4
  * Logs a warning about .env not being ignored by Git.
5
5
  * @param options - Options for the gitignore warning.
6
6
  * @returns void
7
7
  */
8
8
  export function printGitignoreWarning(options) {
9
- const { envFile, reason, log = console.log } = options;
10
- if (reason === GITIGNORE_ISSUES.NO_GITIGNORE) {
11
- log(chalk.yellow(`⚠️ No .gitignore found your ${envFile} may be committed.\n` +
12
- ` Add:\n` +
13
- ` ${envFile}\n`));
14
- }
15
- else {
16
- log(chalk.yellow(`⚠️ ${envFile} is not ignored by Git (.gitignore).\n` +
17
- ` Consider adding:\n` +
18
- ` ${envFile}\n`));
19
- }
9
+ const { envFile, reason, strict = false, log = console.log } = options;
10
+ const indicator = strict ? error('▸') : warning('▸');
11
+ const issue = reason === GITIGNORE_ISSUES.NO_GITIGNORE
12
+ ? 'no .gitignore found'
13
+ : 'not ignored by git';
14
+ log('');
15
+ log(`${indicator} ${header('Gitignore warning')}`);
16
+ log(`${divider}`);
17
+ log(`${label('File'.padEnd(26))}${(strict ? error : warning)(envFile)}`);
18
+ log(`${label('Issue'.padEnd(26))}${(strict ? error : warning)(issue)}`);
19
+ log(`${label('Suggestion'.padEnd(26))}${value(`add ${envFile} to .gitignore`)}`);
20
+ log(`${divider}`);
20
21
  }
21
22
  //# sourceMappingURL=printGitignore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printGitignore.js","sourceRoot":"","sources":["../../../../src/ui/shared/printGitignore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAc7D;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgC;IACpE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAEvD,IAAI,MAAM,KAAK,gBAAgB,CAAC,YAAY,EAAE,CAAC;QAC7C,GAAG,CACD,KAAK,CAAC,MAAM,CACV,kCAAkC,OAAO,sBAAsB;YAC7D,WAAW;YACX,QAAQ,OAAO,IAAI,CACtB,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,GAAG,CACD,KAAK,CAAC,MAAM,CACV,OAAO,OAAO,wCAAwC;YACpD,uBAAuB;YACvB,QAAQ,OAAO,IAAI,CACtB,CACF,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"printGitignore.js","sourceRoot":"","sources":["../../../../src/ui/shared/printGitignore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgB5E;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAgC;IACpE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;IAEvE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAErD,MAAM,KAAK,GACT,MAAM,KAAK,gBAAgB,CAAC,YAAY;QACtC,CAAC,CAAC,qBAAqB;QACvB,CAAC,CAAC,oBAAoB,CAAC;IAE3B,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACnD,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAClB,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,OAAO,gBAAgB,CAAC,EAAE,CAAC,CAAC;IACjF,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AACpB,CAAC"}
@@ -1,13 +1,13 @@
1
1
  /**
2
2
  * Printed when the config file is successfully created
3
- * @param path - The path to the created config file
3
+ * @param filePath - The path to the created config file
4
4
  * @returns void
5
5
  */
6
- export declare function printInitSuccess(path: string): void;
6
+ export declare function printInitSuccess(filePath: string): void;
7
7
  /**
8
8
  * Printed when config file already exists
9
- * @param path - The path to the existing config file
9
+ * @param filePath - The path to the existing config file
10
10
  * @returns void
11
11
  */
12
- export declare function printInitExists(path: string): void;
12
+ export declare function printInitExists(filePath: string): void;
13
13
  //# sourceMappingURL=printInitStatus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"printInitStatus.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printInitStatus.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKlD"}
1
+ {"version":3,"file":"printInitStatus.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printInitStatus.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAMtD"}
@@ -1,24 +1,27 @@
1
- import chalk from 'chalk';
1
+ import { basename } from 'path';
2
+ import { label, value, accent, warning, divider, header } from '../theme.js';
2
3
  /**
3
4
  * Printed when the config file is successfully created
4
- * @param path - The path to the created config file
5
+ * @param filePath - The path to the created config file
5
6
  * @returns void
6
7
  */
7
- export function printInitSuccess(path) {
8
- console.log();
9
- console.log(chalk.green('✅ Created dotenv-diff.config.json'));
10
- console.log(chalk.dim(` → ${path}`));
8
+ export function printInitSuccess(filePath) {
11
9
  console.log();
10
+ console.log(`${accent('▸')} ${header('Config created')}`);
11
+ console.log(`${divider}`);
12
+ console.log(`${label('Path'.padEnd(26))}${value(basename(filePath))}`);
13
+ console.log(`${divider}`);
12
14
  }
13
15
  /**
14
16
  * Printed when config file already exists
15
- * @param path - The path to the existing config file
17
+ * @param filePath - The path to the existing config file
16
18
  * @returns void
17
19
  */
18
- export function printInitExists(path) {
19
- console.log();
20
- console.log(chalk.yellow('⚠️ dotenv-diff.config.json already exists.'));
21
- console.log(chalk.dim(` → ${path}`));
20
+ export function printInitExists(filePath) {
22
21
  console.log();
22
+ console.log(`${warning('▸')} ${header('Config already exists')}`);
23
+ console.log(`${divider}`);
24
+ console.log(`${label('Path'.padEnd(26))}${value(basename(filePath))}`);
25
+ console.log(`${divider}`);
23
26
  }
24
27
  //# sourceMappingURL=printInitStatus.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printInitStatus.js","sourceRoot":"","sources":["../../../../src/ui/shared/printInitStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,6CAA6C,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"printInitStatus.js","sourceRoot":"","sources":["../../../../src/ui/shared/printInitStatus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC1D,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,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClE,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,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"printOptionErrors.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printOptionErrors.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,KAAK,CAQP;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAKxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC"}
1
+ {"version":3,"file":"printOptionErrors.d.ts","sourceRoot":"","sources":["../../../../src/ui/shared/printOptionErrors.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EAAE,EACb,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,KAAK,CASP;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,CAOxD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAOxC"}
@@ -1,4 +1,4 @@
1
- import chalk from 'chalk';
1
+ import { label, value, warning, error, divider, header } from '../theme.js';
2
2
  /**
3
3
  * Prints an error for invalid --only categories and exits.
4
4
  * @param flagName - The name of the flag.
@@ -6,8 +6,13 @@ import chalk from 'chalk';
6
6
  * @param allowed - The allowed values.
7
7
  */
8
8
  export function printInvalidCategory(flagName, bad, allowed) {
9
- console.error(chalk.red(`❌ Error: invalid ${flagName} value(s): ${bad.join(', ')}.\n` +
10
- ` Allowed: ${allowed.join(', ')}`));
9
+ console.log();
10
+ console.log(`${error('▸')} ${header('Invalid flag')}`);
11
+ console.log(`${divider}`);
12
+ console.log(`${label('Flag'.padEnd(26))}${error(flagName)}`);
13
+ console.log(`${label('Invalid values'.padEnd(26))}${error(bad.join(', '))}`);
14
+ console.log(`${label('Allowed'.padEnd(26))}${value(allowed.join(', '))}`);
15
+ console.log(`${divider}`);
11
16
  process.exit(1);
12
17
  }
13
18
  /**
@@ -15,7 +20,11 @@ export function printInvalidCategory(flagName, bad, allowed) {
15
20
  * @param pattern - The invalid regex pattern.
16
21
  */
17
22
  export function printInvalidRegex(pattern) {
18
- console.error(chalk.red(`❌ Error: invalid --ignore-regex pattern: ${pattern}`));
23
+ console.log();
24
+ console.log(`${error('▸')} ${header('Invalid regex')}`);
25
+ console.log(`${divider}`);
26
+ console.log(`${label('Pattern'.padEnd(26))}${error(pattern)}`);
27
+ console.log(`${divider}`);
19
28
  process.exit(1);
20
29
  }
21
30
  /**
@@ -23,6 +32,11 @@ export function printInvalidRegex(pattern) {
23
32
  * @returns void
24
33
  */
25
34
  export function printCiYesWarning() {
26
- console.log(chalk.yellow('⚠️ Both --ci and --yes provided; proceeding with --yes.'));
35
+ console.log();
36
+ console.log(`${warning('▸')} ${header('Flag conflict')}`);
37
+ console.log(`${divider}`);
38
+ console.log(`${label('Issue'.padEnd(26))}${warning('Both --ci and --yes provided')}`);
39
+ console.log(`${label('Resolution'.padEnd(26))}${value('proceeding with --yes')}`);
40
+ console.log(`${divider}`);
27
41
  }
28
42
  //# sourceMappingURL=printOptionErrors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"printOptionErrors.js","sourceRoot":"","sources":["../../../../src/ui/shared/printOptionErrors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,GAAa,EACb,OAA0B;IAE1B,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CACP,oBAAoB,QAAQ,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;QAC3D,eAAe,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtC,CACF,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,4CAA4C,OAAO,EAAE,CAAC,CACjE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CAAC,0DAA0D,CAAC,CACzE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"printOptionErrors.js","sourceRoot":"","sources":["../../../../src/ui/shared/printOptionErrors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,GAAa,EACb,OAA0B;IAE1B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACvD,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,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,8BAA8B,CAAC,EAAE,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAClF,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const dim: import("chalk").ChalkInstance;
2
+ export declare const label: import("chalk").ChalkInstance;
3
+ export declare const value: import("chalk").ChalkInstance;
4
+ export declare const accent: import("chalk").ChalkInstance;
5
+ export declare const warning: import("chalk").ChalkInstance;
6
+ export declare const error: import("chalk").ChalkInstance;
7
+ export declare const divider: string;
8
+ export declare const header: import("chalk").ChalkInstance;
9
+ /**
10
+ * Wraps framework warning reasons to a max line length, indenting wrapped lines to align with the start of the reason text.
11
+ * @param reason The warning reason text to wrap
12
+ * @param indent The number of spaces to indent wrapped lines (should align with the start of the reason text in the output)
13
+ * @returns The wrapped reason text with newlines and indentation as needed
14
+ */
15
+ export declare function wrapReason(reason: string, indent: number): string;
16
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../../src/ui/theme.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,GAAG,+BAA2B,CAAC;AAC5C,eAAO,MAAM,KAAK,+BAAyB,CAAC;AAC5C,eAAO,MAAM,KAAK,+BAA8B,CAAC;AACjD,eAAO,MAAM,MAAM,+BAAwB,CAAC;AAC5C,eAAO,MAAM,OAAO,+BAAuB,CAAC;AAC5C,eAAO,MAAM,KAAK,+BAAyB,CAAC;AAC5C,eAAO,MAAM,OAAO,QAAsB,CAAC;AAC3C,eAAO,MAAM,MAAM,+BAAoB,CAAC;AAQxC;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBjE"}
@@ -0,0 +1,41 @@
1
+ import chalk from 'chalk';
2
+ export const dim = chalk.hex('#555555');
3
+ export const label = chalk.hex('#888888');
4
+ export const value = chalk.hex('#e0e0e0').bold;
5
+ export const accent = chalk.hex('#00d4aa');
6
+ export const warning = chalk.hex('#ffae42');
7
+ export const error = chalk.hex('#ff4d4d');
8
+ export const divider = dim('─'.repeat(50));
9
+ export const header = chalk.white.bold;
10
+ /**
11
+ * This is the maximum line length for reason text in warnings.
12
+ * If a reason exceeds this length, it will be wrapped to the next line with indentation.
13
+ */
14
+ const REASON_MAX = 24;
15
+ /**
16
+ * Wraps framework warning reasons to a max line length, indenting wrapped lines to align with the start of the reason text.
17
+ * @param reason The warning reason text to wrap
18
+ * @param indent The number of spaces to indent wrapped lines (should align with the start of the reason text in the output)
19
+ * @returns The wrapped reason text with newlines and indentation as needed
20
+ */
21
+ export function wrapReason(reason, indent) {
22
+ if (reason.length <= REASON_MAX)
23
+ return reason;
24
+ const pad = ' '.repeat(indent);
25
+ const words = reason.split(' ');
26
+ const lines = [];
27
+ let current = '';
28
+ for (const word of words) {
29
+ if ((current + word).length > REASON_MAX) {
30
+ lines.push(current.trimEnd());
31
+ current = word + ' ';
32
+ }
33
+ else {
34
+ current += word + ' ';
35
+ }
36
+ }
37
+ if (current.trim())
38
+ lines.push(current.trimEnd());
39
+ return lines.join(`\n${pad}`);
40
+ }
41
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../src/ui/theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,GAAG,GAAO,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,KAAK,GAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,KAAK,GAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,MAAM,GAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,KAAK,GAAK,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc,EAAE,MAAc;IACvD,IAAI,MAAM,CAAC,MAAM,IAAI,UAAU;QAAE,OAAO,MAAM,CAAC;IAC/C,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9B,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,GAAG,GAAG,CAAC;QACxB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAChC,CAAC"}
Binary file
Binary file
@@ -0,0 +1,85 @@
1
+ # dotenv-diff capabilities
2
+
3
+ `dotenv-diff` scans your codebase for environment variable usage and checks it against your env files.
4
+
5
+ This document focuses on one question: **what does the scanner actually check for?**
6
+
7
+ The tool recognises the following patterns:
8
+
9
+ ```typescript
10
+ // Node.js – dot and bracket notation
11
+ process.env.MY_KEY
12
+ process.env["MY_KEY"]
13
+ process.env['MY_KEY']
14
+
15
+ // Node.js – destructuring
16
+ const { MY_KEY } = process.env
17
+ const { MY_KEY: alias, OTHER_KEY = "fallback" } = process.env
18
+
19
+ // Vite / import.meta
20
+ import.meta.env.MY_KEY
21
+ import.meta.env["MY_KEY"]
22
+ import.meta.env['MY_KEY']
23
+
24
+ // SvelteKit – dynamic (env object)
25
+ import { env } from '$env/dynamic/private';
26
+ import { env } from '$env/dynamic/public';
27
+ env.MY_KEY
28
+
29
+ // SvelteKit – static (named imports)
30
+ import { MY_KEY } from '$env/static/private';
31
+ import { MY_KEY } from '$env/static/public';
32
+ MY_KEY
33
+ ```
34
+
35
+ Default scanned file types: .ts, .js, jsx, tsx, vue, .mjs, .mts, .cjs, .cts, .svelte
36
+
37
+ ## What It Checks For
38
+
39
+ ### 1 Missing Variables
40
+
41
+ Variables that are **used in code** but **not defined** in the selected env comparison file.
42
+
43
+ ### 2 Unused Variables
44
+
45
+ Variables that are **defined in env files** but **never used** in the scanned codebase.
46
+
47
+ ### 3 Duplicate Keys
48
+
49
+ Duplicate variable definitions inside env files (both main env and example env, when available).
50
+
51
+ ### 4 Secret Detection
52
+
53
+ Potential secrets and sensitive values, including high-risk patterns.
54
+
55
+ ### 5 Example File Secret Warnings
56
+
57
+ Potential secrets found in `.env.example` content.
58
+
59
+ ### 6 Framework-Specific Misuse
60
+
61
+ Framework-aware warnings (for supported frameworks) around unsafe or incorrect env usage patterns.
62
+
63
+ ### 7 Uppercase Naming Warnings
64
+
65
+ Variables that do not follow conventional uppercase env naming style.
66
+
67
+ ### 8 Inconsistent Naming Warnings
68
+
69
+ Variables that appear to use mixed or conflicting naming patterns.
70
+
71
+ ### 9 Console Log Exposure Warnings
72
+
73
+ Cases where environment-related values are logged with `console.log`.
74
+
75
+ ### 10 Expiration Warnings
76
+
77
+ Warnings for environment values that look like expiring tokens/credentials or contain expiration metadata.
78
+
79
+ ### 11 Gitignore Safety Check
80
+
81
+ Checks whether `.env` is properly ignored by `.gitignore`.
82
+
83
+ ### 12 Health Score
84
+
85
+ A final score based on scan findings (missing, unused, duplicates, security warnings, and more).
package/docs/index.md CHANGED
@@ -32,44 +32,11 @@ npx dotenv-diff
32
32
 
33
33
  ---
34
34
 
35
- The extension recognises the following patterns:
36
-
37
- ```typescript
38
- // Node.js – dot and bracket notation
39
- process.env.MY_KEY
40
- process.env["MY_KEY"]
41
- process.env['MY_KEY']
42
-
43
- // Node.js – destructuring
44
- const { MY_KEY } = process.env
45
- const { MY_KEY: alias, OTHER_KEY = "fallback" } = process.env
46
-
47
- // Vite / import.meta
48
- import.meta.env.MY_KEY
49
- import.meta.env["MY_KEY"]
50
- import.meta.env['MY_KEY']
51
-
52
- // SvelteKit – dynamic (env object)
53
- import { env } from '$env/dynamic/private';
54
- import { env } from '$env/dynamic/public';
55
- env.MY_KEY
56
-
57
- // SvelteKit – static (named imports)
58
- import { MY_KEY } from '$env/static/private';
59
- import { MY_KEY } from '$env/static/public';
60
- MY_KEY
61
- ```
62
-
63
- Only `UPPER_CASE` key names are matched, which is the standard convention for environment variables.
64
-
65
- Default scanned file types: .ts, .js, jsx, tsx, vue, .mjs, .cjs, .svelte
66
-
67
- ---
68
-
69
35
  ## Table of Contents
70
36
 
71
37
  | Document | Description |
72
38
  |---|---|
39
+ | [Capabilities](./capabilities.md) | What the scanner checks for and how it works |and rules |
73
40
  | [Configuration and Flags](./configuration_and_flags.md) | Full CLI/config reference for options and behavior |
74
41
  | [Expiration Warnings](./expiration_warnings.md) | How `@expire` annotations work and strict mode integration |
75
42
  | [Ignore Comments](./ignore_comments.md) | Suppress false positives with inline/block ignore markers |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dotenv-diff",
3
- "version": "2.6.3",
3
+ "version": "2.7.0",
4
4
  "type": "module",
5
5
  "description": "Detects environment variable issues, usage, and potential security risks.",
6
6
  "bin": {
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"AAAA,KAAK,OAAO,GAAG;IACb,IAAI,EAAE,aAAa,GAAG,iBAAiB,GAAG,WAAW,CAAC;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,MAAM,EAAE,CAAC;CAClD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,EAqGjC,CAAC;AAGF,eAAO,MAAM,0BAA0B,UAStC,CAAC;AAGF,eAAO,MAAM,wBAAwB,UAiBpC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/core/patterns.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAc;IACrC;;;;;;;;OAQG;IACH;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EACH,6EAA6E;QAC/E,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,gDAAgD;YAChD,uDAAuD;YACvD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;KACF;IAED;;;;;;OAMG;IACH;QACE,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,mCAAmC;QAC1C,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YAExB,OAAO,OAAO;iBACX,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;iBAC1B,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACZ,gCAAgC;gBAChC,oCAAoC;gBACpC,mCAAmC;gBACnC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACjC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,CAAC,CAAC;iBACD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;KACF;IAED;;;;;;;;OAQG;IACH;QACE,IAAI,EAAE,iBAAiB;QACvB,KAAK,EACH,uFAAuF;QACzF,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACnB,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACtC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC;KACF;IAED,iCAAiC;IACjC,gDAAgD;IAChD,mDAAmD;IACnD;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,2FAA2F;KAC9F;IAED,+BAA+B;IAC/B,uEAAuE;IACvE;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EAAE,oCAAoC;KAC5C;IAED,oDAAoD;IACpD,8CAA8C;IAC9C;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,4FAA4F;KAC/F;IAED,8DAA8D;IAC9D,iCAAiC;IACjC;QACE,IAAI,EAAE,WAAoB;QAC1B,KAAK,EACH,6FAA6F;KAChG;CACF,CAAC;AAEF,8CAA8C;AAC9C,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;IACT,MAAM;IACN,MAAM;CACP,CAAC;AAEF,yCAAyC;AACzC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,cAAc;IACd,YAAY;IACZ,aAAa;IACb,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,WAAW;CACZ,CAAC"}
@@ -1,22 +0,0 @@
1
- /**
2
- * Options for printing progress in the console.
3
- */
4
- interface ProgressOptions {
5
- /** Whether to output in JSON format (if true, progress will not be printed) */
6
- isJson: boolean;
7
- /** The current progress count (e.g., number of files scanned) */
8
- current: number;
9
- /** The total count for completion (e.g., total number of files to scan) */
10
- total: number;
11
- /** Optional label to display alongside the progress bar (default: 'Scanning') */
12
- label?: string;
13
- }
14
- /**
15
- * Prints a progress bar to stdout.
16
- * Overwrites the same line using carriage return.
17
- * @param options - Progress options including current, total, and label.
18
- * @returns void
19
- */
20
- export declare function printProgress(options: ProgressOptions): void;
21
- export {};
22
- //# sourceMappingURL=printProgress.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"printProgress.d.ts","sourceRoot":"","sources":["../../../../src/ui/scan/printProgress.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,UAAU,eAAe;IACvB,+EAA+E;IAC/E,MAAM,EAAE,OAAO,CAAC;IAChB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,2EAA2E;IAC3E,KAAK,EAAE,MAAM,CAAC;IACd,iFAAiF;IACjF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAmC5D"}