dotenv-diff 2.5.1 → 2.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/CHANGELOG.md +12 -6
  2. package/dist/bin/dotenv-diff.js +0 -0
  3. package/dist/src/ui/scan/printHeader.js +1 -1
  4. package/dist/src/ui/scan/printHeader.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/cli.d.ts +0 -9
  7. package/dist/cli.js +0 -294
  8. package/dist/diffEnv.d.ts +0 -5
  9. package/dist/diffEnv.js +0 -7
  10. package/dist/index.d.ts +0 -2
  11. package/dist/index.js +0 -2
  12. package/dist/lib/checkGitignore.d.ts +0 -23
  13. package/dist/lib/checkGitignore.js +0 -73
  14. package/dist/lib/diffEnv.d.ts +0 -18
  15. package/dist/lib/diffEnv.js +0 -29
  16. package/dist/lib/parseEnv.d.ts +0 -10
  17. package/dist/lib/parseEnv.js +0 -25
  18. package/dist/parseEnv.d.ts +0 -1
  19. package/dist/parseEnv.js +0 -16
  20. package/dist/src/core/compareScan.d.ts +0 -10
  21. package/dist/src/core/compareScan.d.ts.map +0 -1
  22. package/dist/src/core/compareScan.js +0 -19
  23. package/dist/src/core/compareScan.js.map +0 -1
  24. package/dist/src/core/computeHealthScore.d.ts +0 -8
  25. package/dist/src/core/computeHealthScore.d.ts.map +0 -1
  26. package/dist/src/core/computeHealthScore.js +0 -35
  27. package/dist/src/core/computeHealthScore.js.map +0 -1
  28. package/dist/src/core/cspDetector.d.ts +0 -7
  29. package/dist/src/core/cspDetector.d.ts.map +0 -1
  30. package/dist/src/core/cspDetector.js +0 -38
  31. package/dist/src/core/cspDetector.js.map +0 -1
  32. package/dist/src/core/defaultExcludeKeys.d.ts +0 -7
  33. package/dist/src/core/defaultExcludeKeys.d.ts.map +0 -1
  34. package/dist/src/core/detectClientExposure.d.ts +0 -12
  35. package/dist/src/core/detectClientExposure.d.ts.map +0 -1
  36. package/dist/src/core/detectClientExposure.js +0 -62
  37. package/dist/src/core/detectClientExposure.js.map +0 -1
  38. package/dist/src/core/detectExpirations.d.ts +0 -14
  39. package/dist/src/core/detectExpirations.d.ts.map +0 -1
  40. package/dist/src/core/detectExpirations.js +0 -44
  41. package/dist/src/core/detectExpirations.js.map +0 -1
  42. package/dist/src/core/detectUppercaseKeys.d.ts +0 -9
  43. package/dist/src/core/detectUppercaseKeys.d.ts.map +0 -1
  44. package/dist/src/core/detectUppercaseKeys.js +0 -28
  45. package/dist/src/core/detectUppercaseKeys.js.map +0 -1
  46. package/dist/src/core/determineComparisonFile.d.ts +0 -13
  47. package/dist/src/core/determineComparisonFile.d.ts.map +0 -1
  48. package/dist/src/core/determineComparisonFile.js +0 -33
  49. package/dist/src/core/determineComparisonFile.js.map +0 -1
  50. package/dist/src/core/entropy.d.ts +0 -8
  51. package/dist/src/core/entropy.d.ts.map +0 -1
  52. package/dist/src/core/entropy.js +0 -23
  53. package/dist/src/core/entropy.js.map +0 -1
  54. package/dist/src/core/envDiscovery.d.ts +0 -19
  55. package/dist/src/core/envDiscovery.d.ts.map +0 -1
  56. package/dist/src/core/envDiscovery.js +0 -81
  57. package/dist/src/core/envDiscovery.js.map +0 -1
  58. package/dist/src/core/envPairing.d.ts +0 -8
  59. package/dist/src/core/envPairing.d.ts.map +0 -1
  60. package/dist/src/core/envPairing.js +0 -36
  61. package/dist/src/core/envPairing.js.map +0 -1
  62. package/dist/src/core/envValidator.d.ts +0 -9
  63. package/dist/src/core/envValidator.d.ts.map +0 -1
  64. package/dist/src/core/envValidator.js +0 -103
  65. package/dist/src/core/envValidator.js.map +0 -1
  66. package/dist/src/core/exampleSecretDetector.d.ts +0 -13
  67. package/dist/src/core/exampleSecretDetector.d.ts.map +0 -1
  68. package/dist/src/core/exampleSecretDetector.js +0 -61
  69. package/dist/src/core/exampleSecretDetector.js.map +0 -1
  70. package/dist/src/core/frameworkDetector.d.ts +0 -14
  71. package/dist/src/core/frameworkDetector.d.ts.map +0 -1
  72. package/dist/src/core/frameworkDetector.js +0 -40
  73. package/dist/src/core/frameworkDetector.js.map +0 -1
  74. package/dist/src/core/frameworkValidator.d.ts +0 -10
  75. package/dist/src/core/frameworkValidator.d.ts.map +0 -1
  76. package/dist/src/core/frameworkValidator.js +0 -21
  77. package/dist/src/core/frameworkValidator.js.map +0 -1
  78. package/dist/src/core/frameworks/angularRules.d.ts +0 -4
  79. package/dist/src/core/frameworks/angularRules.d.ts.map +0 -1
  80. package/dist/src/core/helpers/isAllOk.d.ts +0 -9
  81. package/dist/src/core/helpers/isAllOk.d.ts.map +0 -1
  82. package/dist/src/core/helpers/isAllOk.js +0 -16
  83. package/dist/src/core/helpers/isAllOk.js.map +0 -1
  84. package/dist/src/core/helpers/updateTotals.d.ts +0 -19
  85. package/dist/src/core/helpers/updateTotals.d.ts.map +0 -1
  86. package/dist/src/core/helpers/updateTotals.js +0 -37
  87. package/dist/src/core/helpers/updateTotals.js.map +0 -1
  88. package/dist/src/core/parseAndFilterEnv.d.ts +0 -20
  89. package/dist/src/core/parseAndFilterEnv.d.ts.map +0 -1
  90. package/dist/src/core/parseAndFilterEnv.js +0 -22
  91. package/dist/src/core/parseAndFilterEnv.js.map +0 -1
  92. package/dist/src/core/processComparisonFile.d.ts +0 -43
  93. package/dist/src/core/processComparisonFile.d.ts.map +0 -1
  94. package/dist/src/core/processComparisonFile.js +0 -170
  95. package/dist/src/core/processComparisonFile.js.map +0 -1
  96. package/dist/src/core/scan/scanJsonOutput.d.ts +0 -85
  97. package/dist/src/core/scan/scanJsonOutput.d.ts.map +0 -1
  98. package/dist/src/core/scan/scanJsonOutput.js +0 -97
  99. package/dist/src/core/scan/scanJsonOutput.js.map +0 -1
  100. package/dist/src/core/scan/secretDetectors.d.ts +0 -28
  101. package/dist/src/core/scan/secretDetectors.d.ts.map +0 -1
  102. package/dist/src/core/scan/secretDetectors.js +0 -272
  103. package/dist/src/core/scan/secretDetectors.js.map +0 -1
  104. package/dist/src/core/scanFile.d.ts +0 -10
  105. package/dist/src/core/scanFile.d.ts.map +0 -1
  106. package/dist/src/core/scanFile.js +0 -65
  107. package/dist/src/core/scanFile.js.map +0 -1
  108. package/dist/src/core/scanJsonOutput.d.ts +0 -85
  109. package/dist/src/core/scanJsonOutput.d.ts.map +0 -1
  110. package/dist/src/core/scanJsonOutput.js +0 -97
  111. package/dist/src/core/scanJsonOutput.js.map +0 -1
  112. package/dist/src/core/secretDetectors.d.ts +0 -28
  113. package/dist/src/core/secretDetectors.d.ts.map +0 -1
  114. package/dist/src/core/secretDetectors.js +0 -272
  115. package/dist/src/core/secretDetectors.js.map +0 -1
  116. package/dist/src/core/t3env/detectT3Env.d.ts +0 -12
  117. package/dist/src/core/t3env/detectT3Env.d.ts.map +0 -1
  118. package/dist/src/core/t3env/detectT3Env.js +0 -113
  119. package/dist/src/core/t3env/detectT3Env.js.map +0 -1
  120. package/dist/src/core/t3env/t3EnvRules.d.ts +0 -10
  121. package/dist/src/core/t3env/t3EnvRules.d.ts.map +0 -1
  122. package/dist/src/core/t3env/t3EnvRules.js +0 -61
  123. package/dist/src/core/t3env/t3EnvRules.js.map +0 -1
  124. package/dist/src/core/t3env/t3EnvValidator.d.ts +0 -9
  125. package/dist/src/core/t3env/t3EnvValidator.d.ts.map +0 -1
  126. package/dist/src/core/t3env/t3EnvValidator.js +0 -32
  127. package/dist/src/core/t3env/t3EnvValidator.js.map +0 -1
  128. package/dist/src/lib/diffEnv.d.ts +0 -19
  129. package/dist/src/lib/diffEnv.d.ts.map +0 -1
  130. package/dist/src/lib/diffEnv.js +0 -31
  131. package/dist/src/lib/diffEnv.js.map +0 -1
  132. package/dist/src/lib/parseEnv.d.ts +0 -11
  133. package/dist/src/lib/parseEnv.d.ts.map +0 -1
  134. package/dist/src/lib/parseEnv.js +0 -26
  135. package/dist/src/lib/parseEnv.js.map +0 -1
  136. package/dist/src/services/codeBaseScanner.d.ts +0 -8
  137. package/dist/src/services/codeBaseScanner.d.ts.map +0 -1
  138. package/dist/src/services/codeBaseScanner.js +0 -110
  139. package/dist/src/services/codeBaseScanner.js.map +0 -1
  140. package/dist/src/services/duplicates.d.ts +0 -12
  141. package/dist/src/services/duplicates.d.ts.map +0 -1
  142. package/dist/src/services/duplicates.js +0 -36
  143. package/dist/src/services/duplicates.js.map +0 -1
  144. package/dist/src/services/ensureFilesOrPrompt.d.ts +0 -22
  145. package/dist/src/services/ensureFilesOrPrompt.d.ts.map +0 -1
  146. package/dist/src/services/ensureFilesOrPrompt.js +0 -76
  147. package/dist/src/services/ensureFilesOrPrompt.js.map +0 -1
  148. package/dist/src/services/scanOutputToConsole.d.ts +0 -17
  149. package/dist/src/services/scanOutputToConsole.d.ts.map +0 -1
  150. package/dist/src/services/scanOutputToConsole.js +0 -127
  151. package/dist/src/services/scanOutputToConsole.js.map +0 -1
  152. package/dist/src/ui/compare/printAutoFix.d.ts +0 -16
  153. package/dist/src/ui/compare/printAutoFix.d.ts.map +0 -1
  154. package/dist/src/ui/compare/printAutoFix.js +0 -34
  155. package/dist/src/ui/compare/printAutoFix.js.map +0 -1
  156. package/dist/src/ui/compare/printAutoFixApplied.d.ts +0 -7
  157. package/dist/src/ui/compare/printAutoFixApplied.d.ts.map +0 -1
  158. package/dist/src/ui/compare/printAutoFixApplied.js +0 -22
  159. package/dist/src/ui/compare/printAutoFixApplied.js.map +0 -1
  160. package/dist/src/ui/compare/printDuplicates.d.ts +0 -17
  161. package/dist/src/ui/compare/printDuplicates.d.ts.map +0 -1
  162. package/dist/src/ui/compare/printDuplicates.js +0 -25
  163. package/dist/src/ui/compare/printDuplicates.js.map +0 -1
  164. package/dist/src/ui/compare/printFixTips.d.ts +0 -11
  165. package/dist/src/ui/compare/printFixTips.d.ts.map +0 -1
  166. package/dist/src/ui/compare/printFixTips.js +0 -46
  167. package/dist/src/ui/compare/printFixTips.js.map +0 -1
  168. package/dist/src/ui/compare/printSuccess.d.ts +0 -11
  169. package/dist/src/ui/compare/printSuccess.d.ts.map +0 -1
  170. package/dist/src/ui/compare/printSuccess.js +0 -27
  171. package/dist/src/ui/compare/printSuccess.js.map +0 -1
  172. package/dist/src/ui/scan/printCspWarning.d.ts +0 -9
  173. package/dist/src/ui/scan/printCspWarning.d.ts.map +0 -1
  174. package/dist/src/ui/scan/printCspWarning.js +0 -20
  175. package/dist/src/ui/scan/printCspWarning.js.map +0 -1
  176. package/dist/src/ui/scan/printEnvWarnings.d.ts +0 -8
  177. package/dist/src/ui/scan/printEnvWarnings.d.ts.map +0 -1
  178. package/dist/src/ui/scan/printEnvWarnings.js +0 -20
  179. package/dist/src/ui/scan/printEnvWarnings.js.map +0 -1
  180. package/dist/src/ui/scan/printExposedVars.d.ts +0 -8
  181. package/dist/src/ui/scan/printExposedVars.d.ts.map +0 -1
  182. package/dist/src/ui/scan/printExposedVars.js +0 -24
  183. package/dist/src/ui/scan/printExposedVars.js.map +0 -1
  184. package/dist/src/ui/scan/printT3EnvWarnings.d.ts +0 -8
  185. package/dist/src/ui/scan/printT3EnvWarnings.d.ts.map +0 -1
  186. package/dist/src/ui/scan/printT3EnvWarnings.js +0 -20
  187. package/dist/src/ui/scan/printT3EnvWarnings.js.map +0 -1
  188. package/dist/src/ui/scan/printUniqueVariables.d.ts +0 -7
  189. package/dist/src/ui/scan/printUniqueVariables.d.ts.map +0 -1
  190. package/dist/src/ui/scan/printUniqueVariables.js +0 -14
  191. package/dist/src/ui/scan/printUniqueVariables.js.map +0 -1
  192. package/dist/src/ui/scan/printVariables.d.ts +0 -10
  193. package/dist/src/ui/scan/printVariables.d.ts.map +0 -1
  194. package/dist/src/ui/scan/printVariables.js +0 -37
  195. package/dist/src/ui/scan/printVariables.js.map +0 -1
  196. package/dist/src/ui/shared/printProgress.d.ts +0 -24
  197. package/dist/src/ui/shared/printProgress.d.ts.map +0 -1
  198. package/dist/src/ui/shared/printProgress.js +0 -43
  199. package/dist/src/ui/shared/printProgress.js.map +0 -1
  200. package/dist/types/scanUsage.d.ts +0 -43
  201. package/dist/types/scanUsage.d.ts.map +0 -1
@@ -1,35 +0,0 @@
1
- /**
2
- * Computes a health score based on the scan results.
3
- * @param scan - The result of the scan.
4
- * @returns The computed health score as a number between 0 and 100.
5
- */
6
- export function computeHealthScore(scan) {
7
- let score = 100;
8
- // === 1. Secrets detected ===
9
- const highSecrets = scan.secrets?.filter((s) => s.severity === 'high') ?? [];
10
- const medSecrets = scan.secrets?.filter((s) => s.severity === 'medium') ?? [];
11
- score -= highSecrets.length * 20;
12
- score -= medSecrets.length * 10;
13
- // === 2. Missing environment variables ===
14
- score -= scan.missing.length * 20;
15
- // === 3. Uppercase naming issues ===
16
- score -= (scan.uppercaseWarnings?.length ?? 0) * 2;
17
- // === 4. Console logging ===
18
- score -= (scan.logged?.length ?? 0) * 10;
19
- // === 5. Unused vars (less important) ===
20
- score -= (scan.unused?.length ?? 0) * 1;
21
- // === 6. Framework warnings ===
22
- score -= (scan.frameworkWarnings?.length ?? 0) * 5;
23
- // === 7. Example secrets ===
24
- score -= (scan.exampleWarnings?.length ?? 0) * 10;
25
- // === 8. Expiration warnings ===
26
- score -= (scan.expireWarnings?.length ?? 0) * 5;
27
- // === 9. Inconsistent naming warnings ===
28
- score -= (scan.inconsistentNamingWarnings?.length ?? 0) * 3;
29
- // === 10. Duplicate definitions ===
30
- score -= (scan.duplicates?.env?.length ?? 0) * 10;
31
- score -= (scan.duplicates?.example?.length ?? 0) * 10;
32
- // Never go below 0 or above 100
33
- return Math.max(0, Math.min(100, score));
34
- }
35
- //# sourceMappingURL=computeHealthScore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"computeHealthScore.js","sourceRoot":"","sources":["../../../src/core/computeHealthScore.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAgB;IACjD,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,8BAA8B;IAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE9E,KAAK,IAAI,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;IACjC,KAAK,IAAI,UAAU,CAAC,MAAM,GAAG,EAAE,CAAC;IAEhC,2CAA2C;IAC3C,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;IAElC,qCAAqC;IACrC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEnD,6BAA6B;IAC7B,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAEzC,0CAA0C;IAC1C,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAExC,gCAAgC;IAChC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEnD,6BAA6B;IAC7B,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAElD,iCAAiC;IACjC,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAEhD,0CAA0C;IAC1C,KAAK,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE5D,oCAAoC;IACpC,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAClD,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAEtD,gCAAgC;IAChC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AAC3C,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Returns true if the source code looks like it configures a CSP.
3
- * We are deliberately generous: if we see "Content-Security-Policy" anywhere
4
- * in a realistic pattern, we treat CSP as present.
5
- */
6
- export declare function hasCspInSource(source: string): boolean;
7
- //# sourceMappingURL=cspDetector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cspDetector.d.ts","sourceRoot":"","sources":["../../../src/core/cspDetector.ts"],"names":[],"mappings":"AASA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAyBtD"}
@@ -1,38 +0,0 @@
1
- // Very lightweight CSP detectors – we only need to know "does some CSP exist?"
2
- const META_CSP_PATTERN = /<meta[^>]*http-equiv=["']Content-Security-Policy["'][^>]*>/i;
3
- const HEADER_CSP_PATTERN = /(setHeader|header|append)\(\s*['"]Content-Security-Policy['"]/i;
4
- const HELMET_CSP_PATTERN = /\bcontentSecurityPolicy\b/;
5
- /**
6
- * Returns true if the source code looks like it configures a CSP.
7
- * We are deliberately generous: if we see "Content-Security-Policy" anywhere
8
- * in a realistic pattern, we treat CSP as present.
9
- */
10
- export function hasCspInSource(source) {
11
- // 1. META tag
12
- if (META_CSP_PATTERN.test(source))
13
- return true;
14
- // 2. Node header setters
15
- if (HEADER_CSP_PATTERN.test(source))
16
- return true;
17
- // 3. Helmet or similar middleware
18
- if (HELMET_CSP_PATTERN.test(source))
19
- return true;
20
- // 4. Plain fallback
21
- if (/Content-Security-Policy/i.test(source))
22
- return true;
23
- // 5. SvelteKit kit.csp
24
- if (/kit\s*:\s*{[^}]*csp\s*:/s.test(source))
25
- return true;
26
- // 6. A variable named <something>Csp or cspConfig or sharedCsp
27
- if (/\b(shared|global|site|app)[A-Z]?Csp\b/.test(source))
28
- return true;
29
- if (/\bcspConfig\b/i.test(source))
30
- return true;
31
- if (/\bcsp\s*:\s*{[^}]*['"]default-src['"]:/i.test(source))
32
- return true;
33
- // 7. Directives object pattern (strong indicator)
34
- if (/directives\s*:\s*{[^}]*['"]default-src['"]:/is.test(source))
35
- return true;
36
- return false;
37
- }
38
- //# sourceMappingURL=cspDetector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cspDetector.js","sourceRoot":"","sources":["../../../src/core/cspDetector.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,gBAAgB,GACpB,6DAA6D,CAAC;AAEhE,MAAM,kBAAkB,GACtB,gEAAgE,CAAC;AAEnE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;AAEvD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,cAAc;IACd,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/C,yBAAyB;IACzB,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,kCAAkC;IAClC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,oBAAoB;IACpB,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzD,uBAAuB;IACvB,IAAI,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAEzD,+DAA+D;IAC/D,IAAI,uCAAuC,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtE,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,yCAAyC,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAExE,kDAAkD;IAClD,IAAI,+CAA+C,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9E,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * default exclude environment variable keys (not expected in .env files)
3
- * But may be used in code.
4
- */
5
- export declare const DEFAULT_EXCLUDE_KEYS: string[];
6
- export declare function isDefaultExcludedKey(key: string): boolean;
7
- //# sourceMappingURL=defaultExcludeKeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaultExcludeKeys.d.ts","sourceRoot":"","sources":["../../../src/core/defaultExcludeKeys.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UAOhC,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEzD"}
@@ -1,12 +0,0 @@
1
- import type { EnvUsage } from '../config/types.js';
2
- import type { Framework } from './frameworkDetector.js';
3
- /**
4
- * Detects which environment variables are exposed to the client/browser
5
- * based on the framework and usage patterns.
6
- *
7
- * @param usages - All environment variable usages found in the codebase
8
- * @param framework - The detected framework (sveltekit, next, or unknown)
9
- * @returns Set of unique variable names that are client-exposed
10
- */
11
- export declare function detectClientExposedVars(usages: readonly EnvUsage[], framework: Framework): Set<string>;
12
- //# sourceMappingURL=detectClientExposure.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectClientExposure.d.ts","sourceRoot":"","sources":["../../../src/core/detectClientExposure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,QAAQ,EAAE,EAC3B,SAAS,EAAE,SAAS,GACnB,GAAG,CAAC,MAAM,CAAC,CAiEb"}
@@ -1,62 +0,0 @@
1
- /**
2
- * Detects which environment variables are exposed to the client/browser
3
- * based on the framework and usage patterns.
4
- *
5
- * @param usages - All environment variable usages found in the codebase
6
- * @param framework - The detected framework (sveltekit, next, or unknown)
7
- * @returns Set of unique variable names that are client-exposed
8
- */
9
- export function detectClientExposedVars(usages, framework) {
10
- const clientExposed = new Set();
11
- if (framework === 'unknown') {
12
- return clientExposed;
13
- }
14
- for (const u of usages) {
15
- // Skip node_modules
16
- if (u.file.includes('node_modules')) {
17
- continue;
18
- }
19
- if (framework === 'sveltekit') {
20
- // SvelteKit: import.meta.env is always client-exposed
21
- if (u.pattern === 'import.meta.env') {
22
- clientExposed.add(u.variable);
23
- continue;
24
- }
25
- // SvelteKit: $env/static/public is client-exposed
26
- if (u.pattern === 'sveltekit' &&
27
- u.context.includes('$env/static/public')) {
28
- clientExposed.add(u.variable);
29
- continue;
30
- }
31
- // SvelteKit: PUBLIC_ prefix in any context is client-exposed
32
- if (u.variable.startsWith('PUBLIC_')) {
33
- clientExposed.add(u.variable);
34
- continue;
35
- }
36
- // SvelteKit: Variables used in client-side files (+page.ts, +layout.ts, .svelte)
37
- const isSvelteClientFile = u.file.endsWith('.svelte') || /\+page\.ts$|\+layout\.ts$/.test(u.file);
38
- if (isSvelteClientFile && u.pattern !== 'sveltekit') {
39
- // Only if NOT using $env/static/private
40
- if (!u.context.includes('$env/static/private')) {
41
- clientExposed.add(u.variable);
42
- }
43
- }
44
- }
45
- else if (framework === 'next') {
46
- // Next.js: NEXT_PUBLIC_ prefix is always client-exposed
47
- if (u.variable.startsWith('NEXT_PUBLIC_')) {
48
- clientExposed.add(u.variable);
49
- continue;
50
- }
51
- // Next.js: Variables used in client components
52
- const isClientComponent = u.context.includes('use client') ||
53
- u.context.includes('"use client"') ||
54
- u.context.includes("'use client'");
55
- if (isClientComponent) {
56
- clientExposed.add(u.variable);
57
- }
58
- }
59
- }
60
- return clientExposed;
61
- }
62
- //# sourceMappingURL=detectClientExposure.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectClientExposure.js","sourceRoot":"","sources":["../../../src/core/detectClientExposure.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAA2B,EAC3B,SAAoB;IAEpB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,oBAAoB;QACpB,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACpC,SAAS;QACX,CAAC;QAED,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,sDAAsD;YACtD,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;gBACpC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,kDAAkD;YAClD,IACE,CAAC,CAAC,OAAO,KAAK,WAAW;gBACzB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EACxC,CAAC;gBACD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,6DAA6D;YAC7D,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,iFAAiF;YACjF,MAAM,kBAAkB,GACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEzE,IAAI,kBAAkB,IAAI,CAAC,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;gBACpD,wCAAwC;gBACxC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAC/C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YAChC,wDAAwD;YACxD,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC1C,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAC9B,SAAS;YACX,CAAC;YAED,+CAA+C;YAC/C,MAAM,iBAAiB,GACrB,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAChC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAClC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAErC,IAAI,iBAAiB,EAAE,CAAC;gBACtB,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -1,14 +0,0 @@
1
- import type { ExpireWarning } from '../config/types.js';
2
- /**
3
- * Detects expiration warnings in a dotenv file.
4
- * fx:
5
- *
6
- * # @expire 2024-12-31
7
- * API_KEY=
8
- *
9
- * This will generate a warning that API_KEY expires on 2024-12-31.
10
- * @param filePath - Path to the dotenv file
11
- * @returns Array of expiration warnings
12
- */
13
- export declare function detectExpirations(filePath: string): ExpireWarning[];
14
- //# sourceMappingURL=detectExpirations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectExpirations.d.ts","sourceRoot":"","sources":["../../../src/core/detectExpirations.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE,CA0CnE"}
@@ -1,44 +0,0 @@
1
- import fs from 'fs';
2
- /**
3
- * Detects expiration warnings in a dotenv file.
4
- * fx:
5
- *
6
- * # @expire 2024-12-31
7
- * API_KEY=
8
- *
9
- * This will generate a warning that API_KEY expires on 2024-12-31.
10
- * @param filePath - Path to the dotenv file
11
- * @returns Array of expiration warnings
12
- */
13
- export function detectExpirations(filePath) {
14
- const lines = fs.readFileSync(filePath, 'utf8').split('\n');
15
- const warnings = [];
16
- const reg = /(\/\/|#)?\s*@?expire\s+(\d{4}-\d{2}-\d{2})/i;
17
- let pendingExpire = null;
18
- for (const raw of lines) {
19
- const line = raw.trim();
20
- const expireMatch = line.match(reg);
21
- if (expireMatch) {
22
- pendingExpire = expireMatch[2] ?? null; // capture dato
23
- continue;
24
- }
25
- const isEnvKey = /^[A-Za-z0-9_.-]+=/.test(line);
26
- if (isEnvKey) {
27
- const key = line.split('=')[0];
28
- if (key && pendingExpire) {
29
- const expireDate = new Date(pendingExpire);
30
- const now = new Date();
31
- const diffMs = expireDate.getTime() - now.getTime();
32
- const diffDays = Math.ceil(diffMs / (1000 * 60 * 60 * 24));
33
- warnings.push({
34
- key,
35
- date: pendingExpire,
36
- daysLeft: diffDays,
37
- });
38
- pendingExpire = null;
39
- }
40
- }
41
- }
42
- return warnings;
43
- }
44
- //# sourceMappingURL=detectExpirations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectExpirations.js","sourceRoot":"","sources":["../../../src/core/detectExpirations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,MAAM,GAAG,GAAG,6CAA6C,CAAC;IAE1D,IAAI,aAAa,GAAkB,IAAI,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,WAAW,EAAE,CAAC;YAChB,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,eAAe;YACvD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE/B,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;gBACzB,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;gBAE3D,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,IAAI,EAAE,aAAa;oBACnB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;gBAEH,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { EnvUsage } from '../config/types.js';
2
- import type { UppercaseWarning } from '../config/types.js';
3
- /**
4
- * Detects environment variable keys that are not in uppercase format.
5
- * @param usages - List of environment variable usages
6
- * @returns List of warnings for non-uppercase keys
7
- */
8
- export declare function detectUppercaseKeys(usages: EnvUsage[]): UppercaseWarning[];
9
- //# sourceMappingURL=detectUppercaseKeys.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectUppercaseKeys.d.ts","sourceRoot":"","sources":["../../../src/core/detectUppercaseKeys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAa3D;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAa1E"}
@@ -1,28 +0,0 @@
1
- /** Convert key to proper UPPER_SNAKE_CASE
2
- * @param name - The environment variable name
3
- * @returns The name converted to UPPER_SNAKE_CASE
4
- */
5
- function toUpperSnakeCase(name) {
6
- return name
7
- .replace(/([a-z0-9])([A-Z])/g, '$1_$2') // camelCase → camel_Case
8
- .replace(/[-\s]+/g, '_') // dashes/spaces → underscore
9
- .toUpperCase();
10
- }
11
- /**
12
- * Detects environment variable keys that are not in uppercase format.
13
- * @param usages - List of environment variable usages
14
- * @returns List of warnings for non-uppercase keys
15
- */
16
- export function detectUppercaseKeys(usages) {
17
- const warnings = [];
18
- for (const u of usages) {
19
- if (!/^[A-Z0-9_]+$/.test(u.variable)) {
20
- warnings.push({
21
- key: u.variable,
22
- suggestion: toUpperSnakeCase(u.variable),
23
- });
24
- }
25
- }
26
- return warnings;
27
- }
28
- //# sourceMappingURL=detectUppercaseKeys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"detectUppercaseKeys.js","sourceRoot":"","sources":["../../../src/core/detectUppercaseKeys.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI;SACR,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,yBAAyB;SAChE,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,6BAA6B;SACrD,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAkB;IACpD,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,EAAE,CAAC,CAAC,QAAQ;gBACf,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,13 +0,0 @@
1
- import type { ScanUsageOptions } from '../config/types.js';
2
- type ComparisonFile = {
3
- path: string;
4
- name: string;
5
- };
6
- /**
7
- * Determines which file to use for comparison based on provided options
8
- * @param {ScanUsageOptions} opts - Scan configuration options
9
- * @returns Comparison file info with absolute path and basename, or undefined if not found
10
- */
11
- export declare function determineComparisonFile(opts: ScanUsageOptions): ComparisonFile | undefined;
12
- export {};
13
- //# sourceMappingURL=determineComparisonFile.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"determineComparisonFile.d.ts","sourceRoot":"","sources":["../../../src/core/determineComparisonFile.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,gBAAgB,GACrB,cAAc,GAAG,SAAS,CA0B5B"}
@@ -1,33 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { resolveFromCwd } from './helpers/resolveFromCwd.js';
4
- import { DEFAULT_ENV_CANDIDATES } from '../config/constants.js';
5
- /**
6
- * Determines which file to use for comparison based on provided options
7
- * @param {ScanUsageOptions} opts - Scan configuration options
8
- * @returns Comparison file info with absolute path and basename, or undefined if not found
9
- */
10
- export function determineComparisonFile(opts) {
11
- // Priority: explicit flags first, then auto-discovery
12
- if (opts.examplePath) {
13
- const p = resolveFromCwd(opts.cwd, opts.examplePath);
14
- if (fs.existsSync(p)) {
15
- return { path: p, name: path.basename(opts.examplePath) };
16
- }
17
- }
18
- if (opts.envPath) {
19
- const p = resolveFromCwd(opts.cwd, opts.envPath);
20
- if (fs.existsSync(p)) {
21
- return { path: p, name: path.basename(opts.envPath) };
22
- }
23
- }
24
- // Auto-discovery: look for common env files relative to cwd
25
- for (const candidate of DEFAULT_ENV_CANDIDATES) {
26
- const fullPath = path.resolve(opts.cwd, candidate);
27
- if (fs.existsSync(fullPath)) {
28
- return { path: fullPath, name: candidate };
29
- }
30
- }
31
- return undefined;
32
- }
33
- //# sourceMappingURL=determineComparisonFile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"determineComparisonFile.js","sourceRoot":"","sources":["../../../src/core/determineComparisonFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAOhE;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CACrC,IAAsB;IAEtB,sDAAsD;IAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACjD,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxD,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,KAAK,MAAM,SAAS,IAAI,sBAAsB,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Calculates the normalized Shannon entropy of a string.
3
- * Shannon entropy is a measure of the unpredictability or randomness of a string.
4
- * @param s - The input string.
5
- * @returns The normalized Shannon entropy (between 0 and 1).
6
- */
7
- export declare function shannonEntropyNormalized(s: string): number;
8
- //# sourceMappingURL=entropy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entropy.d.ts","sourceRoot":"","sources":["../../../src/core/entropy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1D"}
@@ -1,23 +0,0 @@
1
- /**
2
- * Calculates the normalized Shannon entropy of a string.
3
- * Shannon entropy is a measure of the unpredictability or randomness of a string.
4
- * @param s - The input string.
5
- * @returns The normalized Shannon entropy (between 0 and 1).
6
- */
7
- export function shannonEntropyNormalized(s) {
8
- if (!s)
9
- return 0;
10
- const freq = new Map();
11
- for (const ch of s)
12
- freq.set(ch, (freq.get(ch) ?? 0) + 1);
13
- const len = s.length;
14
- let H = 0;
15
- for (const [, c] of freq) {
16
- const p = c / len;
17
- H += -p * Math.log2(p);
18
- }
19
- // Normalize by the maximum possible entropy for the character set (assuming 72 possible characters)
20
- const maxH = Math.log2(72);
21
- return Math.min(1, H / maxH);
22
- }
23
- //# sourceMappingURL=entropy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entropy.js","sourceRoot":"","sources":["../../../src/core/entropy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,CAAS;IAChD,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IACjB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,CAAC;QAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClB,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,oGAAoG;IACpG,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { Discovery } from '../config/types.js';
2
- /**
3
- * Arguments for the discoverEnvFiles function.
4
- */
5
- interface DiscoverEnvFilesArgs {
6
- cwd: string;
7
- envFlag: string | null;
8
- exampleFlag: string | null;
9
- }
10
- /**
11
- * Discovers environment files in the specified directory.
12
- * @param cwd - The current working directory.
13
- * @param envFlag - The --env flag value if provided.
14
- * @param exampleFlag - The --example flag value if provided.
15
- * @returns A Discovery object containing the found environment files and their metadata.
16
- */
17
- export declare function discoverEnvFiles({ cwd, envFlag, exampleFlag, }: DiscoverEnvFilesArgs): Discovery;
18
- export {};
19
- //# sourceMappingURL=envDiscovery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envDiscovery.d.ts","sourceRoot":"","sources":["../../../src/core/envDiscovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGpD;;GAEG;AACH,UAAU,oBAAoB;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,OAAO,EACP,WAAW,GACZ,EAAE,oBAAoB,GAAG,SAAS,CAgFlC"}
@@ -1,81 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { DEFAULT_ENV_FILE, DEFAULT_EXAMPLE_FILE } from '../config/constants.js';
4
- /**
5
- * Discovers environment files in the specified directory.
6
- * @param cwd - The current working directory.
7
- * @param envFlag - The --env flag value if provided.
8
- * @param exampleFlag - The --example flag value if provided.
9
- * @returns A Discovery object containing the found environment files and their metadata.
10
- */
11
- export function discoverEnvFiles({ cwd, envFlag, exampleFlag, }) {
12
- // Find all .env* files in the current directory except .env.example*
13
- const envFiles = fs
14
- .readdirSync(cwd)
15
- .filter((f) => f.startsWith(DEFAULT_ENV_FILE) && !f.startsWith(DEFAULT_EXAMPLE_FILE))
16
- .sort((a, b) => a === DEFAULT_ENV_FILE
17
- ? -1
18
- : b === DEFAULT_ENV_FILE
19
- ? 1
20
- : a.localeCompare(b));
21
- let primaryEnv = envFiles.includes(DEFAULT_ENV_FILE)
22
- ? DEFAULT_ENV_FILE
23
- : envFiles[0] || DEFAULT_ENV_FILE;
24
- let primaryExample = DEFAULT_EXAMPLE_FILE;
25
- let alreadyWarnedMissingEnv = false;
26
- // --env (without --example): force primaryEnv and try to find a matching example name via suffix
27
- if (envFlag && !exampleFlag) {
28
- const envNameFromFlag = path.basename(envFlag);
29
- primaryEnv = envNameFromFlag;
30
- // If the specified --env actually exists, make sure it's in the list (first) without duplicates
31
- if (fs.existsSync(envFlag)) {
32
- const set = new Set([envNameFromFlag, ...envFiles]);
33
- envFiles.length = 0;
34
- envFiles.push(...Array.from(set));
35
- }
36
- // try to find a matching example name based on the suffix
37
- const suffix = envNameFromFlag === DEFAULT_ENV_FILE
38
- ? ''
39
- : envNameFromFlag.replace(DEFAULT_ENV_FILE, '');
40
- const potentialExample = suffix
41
- ? `${DEFAULT_EXAMPLE_FILE}${suffix}`
42
- : DEFAULT_EXAMPLE_FILE;
43
- if (fs.existsSync(path.resolve(cwd, potentialExample))) {
44
- primaryExample = potentialExample;
45
- }
46
- }
47
- // --example (without --env): force primaryExample and try to find a matching env name via suffix
48
- if (exampleFlag && !envFlag) {
49
- const exampleNameFromFlag = path.basename(exampleFlag);
50
- primaryExample = exampleNameFromFlag;
51
- if (exampleNameFromFlag.startsWith(DEFAULT_EXAMPLE_FILE)) {
52
- const suffix = exampleNameFromFlag.slice(DEFAULT_EXAMPLE_FILE.length);
53
- const matchedEnv = suffix
54
- ? `${DEFAULT_ENV_FILE}${suffix}`
55
- : DEFAULT_ENV_FILE;
56
- if (fs.existsSync(path.resolve(cwd, matchedEnv))) {
57
- primaryEnv = matchedEnv;
58
- envFiles.length = 0;
59
- envFiles.push(matchedEnv);
60
- }
61
- else {
62
- alreadyWarnedMissingEnv = true;
63
- }
64
- }
65
- else {
66
- // If the example file is not a standard .env.example, we just use it as is
67
- if (envFiles.length === 0)
68
- envFiles.push(primaryEnv);
69
- }
70
- }
71
- return {
72
- cwd,
73
- envFiles,
74
- primaryEnv,
75
- primaryExample,
76
- envFlag,
77
- exampleFlag,
78
- alreadyWarnedMissingEnv,
79
- };
80
- }
81
- //# sourceMappingURL=envDiscovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../../src/core/envDiscovery.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { FilePair, Discovery } from '../config/types.js';
2
- /**
3
- * Pairs each environment file with its corresponding example file.
4
- * @param d - The discovery object containing environment and example file information.
5
- * @returns An array of objects containing the environment name, path, and example path.
6
- */
7
- export declare function pairWithExample(d: Discovery): Array<FilePair>;
8
- //# sourceMappingURL=envPairing.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envPairing.d.ts","sourceRoot":"","sources":["../../../src/core/envPairing.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG9D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAgC7D"}
@@ -1,36 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { DEFAULT_ENV_FILE, DEFAULT_EXAMPLE_FILE } from '../config/constants.js';
4
- /**
5
- * Pairs each environment file with its corresponding example file.
6
- * @param d - The discovery object containing environment and example file information.
7
- * @returns An array of objects containing the environment name, path, and example path.
8
- */
9
- export function pairWithExample(d) {
10
- const pairs = [];
11
- const list = d.envFiles.length > 0 ? d.envFiles : [d.primaryEnv];
12
- for (const envName of list) {
13
- if (d.exampleFlag && !d.envFlag) {
14
- const envAbs = path.resolve(d.cwd, envName);
15
- if (envAbs === path.resolve(d.cwd, d.primaryExample))
16
- continue;
17
- }
18
- const suffix = envName === DEFAULT_ENV_FILE ? '' : envName.replace(DEFAULT_ENV_FILE, '');
19
- const exampleName = suffix
20
- ? `${DEFAULT_EXAMPLE_FILE}${suffix}`
21
- : d.primaryExample;
22
- const envPathCurrent = path.resolve(d.cwd, envName);
23
- const examplePathCurrent = d.exampleFlag && !d.envFlag
24
- ? path.resolve(d.cwd, d.primaryExample)
25
- : fs.existsSync(path.resolve(d.cwd, exampleName))
26
- ? path.resolve(d.cwd, exampleName)
27
- : path.resolve(d.cwd, d.primaryExample);
28
- pairs.push({
29
- envName,
30
- envPath: envPathCurrent,
31
- examplePath: examplePathCurrent,
32
- });
33
- }
34
- return pairs;
35
- }
36
- //# sourceMappingURL=envPairing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envPairing.js","sourceRoot":"","sources":["../../../src/core/envPairing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAEhF;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAY;IAC1C,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAEjE,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC;gBAAE,SAAS;QACjE,CAAC;QAED,MAAM,MAAM,GACV,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,MAAM;YACxB,CAAC,CAAC,GAAG,oBAAoB,GAAG,MAAM,EAAE;YACpC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAErB,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,kBAAkB,GACtB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC;YACvC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC;gBAClC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,cAAc,CAAC,CAAC;QAE9C,KAAK,CAAC,IAAI,CAAC;YACT,OAAO;YACP,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,kBAAkB;SAChC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,9 +0,0 @@
1
- import type { EnvUsage } from '../config/types.js';
2
- export interface EnvWarning {
3
- variable: string;
4
- reason: string;
5
- file: string;
6
- line: number;
7
- }
8
- export declare function validateEnvRules(usages: EnvUsage[]): EnvWarning[];
9
- //# sourceMappingURL=envValidator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"envValidator.d.ts","sourceRoot":"","sources":["../../../src/core/envValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,UAAU,EAAE,CAqHjE"}