dotenv-diff 2.4.6 → 2.4.8

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 (192) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +8 -2
  3. package/dist/src/cli/run.d.ts.map +1 -1
  4. package/dist/src/cli/run.js +7 -8
  5. package/dist/src/cli/run.js.map +1 -1
  6. package/dist/src/commands/compare.d.ts +2 -2
  7. package/dist/src/commands/compare.d.ts.map +1 -1
  8. package/dist/src/commands/compare.js +16 -2
  9. package/dist/src/commands/compare.js.map +1 -1
  10. package/dist/src/commands/ensureFilesOrPrompt.d.ts +22 -0
  11. package/dist/src/commands/ensureFilesOrPrompt.d.ts.map +1 -0
  12. package/dist/src/commands/ensureFilesOrPrompt.js +76 -0
  13. package/dist/src/commands/ensureFilesOrPrompt.js.map +1 -0
  14. package/dist/src/commands/scanUsage.d.ts +3 -5
  15. package/dist/src/commands/scanUsage.d.ts.map +1 -1
  16. package/dist/src/commands/scanUsage.js +7 -7
  17. package/dist/src/commands/scanUsage.js.map +1 -1
  18. package/dist/src/config/constants.d.ts +42 -0
  19. package/dist/src/config/constants.d.ts.map +1 -0
  20. package/dist/src/config/constants.js +54 -0
  21. package/dist/src/config/constants.js.map +1 -0
  22. package/dist/src/config/options.d.ts +1 -1
  23. package/dist/src/config/options.d.ts.map +1 -1
  24. package/dist/src/config/options.js +1 -1
  25. package/dist/src/config/options.js.map +1 -1
  26. package/dist/src/config/types.d.ts +156 -201
  27. package/dist/src/config/types.d.ts.map +1 -1
  28. package/dist/src/config/types.js +3 -11
  29. package/dist/src/config/types.js.map +1 -1
  30. package/dist/src/core/compareScan.d.ts +1 -0
  31. package/dist/src/core/compareScan.d.ts.map +1 -1
  32. package/dist/src/core/compareScan.js +1 -0
  33. package/dist/src/core/compareScan.js.map +1 -1
  34. package/dist/src/core/computeHealthScore.d.ts.map +1 -1
  35. package/dist/src/core/computeHealthScore.js +3 -0
  36. package/dist/src/core/computeHealthScore.js.map +1 -1
  37. package/dist/src/core/detectInconsistentNaming.js +0 -7
  38. package/dist/src/core/detectInconsistentNaming.js.map +1 -1
  39. package/dist/src/core/determineComparisonFile.d.ts +1 -1
  40. package/dist/src/core/determineComparisonFile.d.ts.map +1 -1
  41. package/dist/src/core/determineComparisonFile.js +2 -8
  42. package/dist/src/core/determineComparisonFile.js.map +1 -1
  43. package/dist/src/core/duplicates.d.ts +5 -4
  44. package/dist/src/core/duplicates.d.ts.map +1 -0
  45. package/dist/src/core/duplicates.js +5 -2
  46. package/dist/src/core/duplicates.js.map +1 -0
  47. package/dist/src/core/envDiscovery.d.ts +19 -0
  48. package/dist/src/core/envDiscovery.d.ts.map +1 -0
  49. package/dist/src/core/envDiscovery.js +81 -0
  50. package/dist/src/core/envDiscovery.js.map +1 -0
  51. package/dist/src/core/envPairing.d.ts.map +1 -1
  52. package/dist/src/core/envPairing.js +5 -2
  53. package/dist/src/core/envPairing.js.map +1 -1
  54. package/dist/src/core/exampleSecretDetector.d.ts.map +1 -1
  55. package/dist/src/core/exampleSecretDetector.js +2 -2
  56. package/dist/src/core/exampleSecretDetector.js.map +1 -1
  57. package/dist/src/core/fixEnv.d.ts.map +1 -1
  58. package/dist/src/core/fixEnv.js +2 -1
  59. package/dist/src/core/fixEnv.js.map +1 -1
  60. package/dist/src/core/frameworkDetector.d.ts +2 -2
  61. package/dist/src/core/frameworkDetector.d.ts.map +1 -1
  62. package/dist/src/core/frameworkDetector.js +0 -1
  63. package/dist/src/core/frameworkDetector.js.map +1 -1
  64. package/dist/src/core/frameworkValidator.d.ts +2 -2
  65. package/dist/src/core/frameworkValidator.d.ts.map +1 -1
  66. package/dist/src/core/frameworkValidator.js +0 -1
  67. package/dist/src/core/frameworkValidator.js.map +1 -1
  68. package/dist/src/core/frameworks/frameworkDetector.d.ts +14 -0
  69. package/dist/src/core/frameworks/frameworkDetector.d.ts.map +1 -0
  70. package/dist/src/core/frameworks/frameworkDetector.js +40 -0
  71. package/dist/src/core/frameworks/frameworkDetector.js.map +1 -0
  72. package/dist/src/core/frameworks/frameworkValidator.d.ts +10 -0
  73. package/dist/src/core/frameworks/frameworkValidator.d.ts.map +1 -0
  74. package/dist/src/core/frameworks/frameworkValidator.js +21 -0
  75. package/dist/src/core/frameworks/frameworkValidator.js.map +1 -0
  76. package/dist/src/core/frameworks/nextJsRules.d.ts +2 -2
  77. package/dist/src/core/frameworks/nextJsRules.d.ts.map +1 -1
  78. package/dist/src/core/frameworks/nextJsRules.js +12 -39
  79. package/dist/src/core/frameworks/nextJsRules.js.map +1 -1
  80. package/dist/src/core/frameworks/sveltekitRules.d.ts +2 -2
  81. package/dist/src/core/frameworks/sveltekitRules.d.ts.map +1 -1
  82. package/dist/src/core/frameworks/sveltekitRules.js +57 -45
  83. package/dist/src/core/frameworks/sveltekitRules.js.map +1 -1
  84. package/dist/src/core/helpers/normalizePath.d.ts +6 -0
  85. package/dist/src/core/helpers/normalizePath.d.ts.map +1 -0
  86. package/dist/src/core/helpers/normalizePath.js +8 -0
  87. package/dist/src/core/helpers/normalizePath.js.map +1 -0
  88. package/dist/src/core/helpers/updateTotals.d.ts +1 -2
  89. package/dist/src/core/helpers/updateTotals.d.ts.map +1 -1
  90. package/dist/src/core/helpers/updateTotals.js.map +1 -1
  91. package/dist/src/core/parseEnv.d.ts.map +1 -1
  92. package/dist/src/core/parseEnv.js +19 -1
  93. package/dist/src/core/parseEnv.js.map +1 -1
  94. package/dist/src/core/patterns.d.ts.map +1 -1
  95. package/dist/src/core/patterns.js +24 -1
  96. package/dist/src/core/patterns.js.map +1 -1
  97. package/dist/src/core/processComparisonFile.d.ts +6 -14
  98. package/dist/src/core/processComparisonFile.d.ts.map +1 -1
  99. package/dist/src/core/processComparisonFile.js +1 -1
  100. package/dist/src/core/processComparisonFile.js.map +1 -1
  101. package/dist/src/core/scan/scanJsonOutput.d.ts +85 -0
  102. package/dist/src/core/scan/scanJsonOutput.d.ts.map +1 -0
  103. package/dist/src/core/scan/scanJsonOutput.js +97 -0
  104. package/dist/src/core/scan/scanJsonOutput.js.map +1 -0
  105. package/dist/src/core/scan/secretDetectors.d.ts +28 -0
  106. package/dist/src/core/scan/secretDetectors.d.ts.map +1 -0
  107. package/dist/src/core/scan/secretDetectors.js +272 -0
  108. package/dist/src/core/scan/secretDetectors.js.map +1 -0
  109. package/dist/src/core/scanFile.d.ts.map +1 -1
  110. package/dist/src/core/scanFile.js +11 -1
  111. package/dist/src/core/scanFile.js.map +1 -1
  112. package/dist/src/core/scanJsonOutput.d.ts +78 -2
  113. package/dist/src/core/scanJsonOutput.d.ts.map +1 -1
  114. package/dist/src/core/scanJsonOutput.js +5 -4
  115. package/dist/src/core/scanJsonOutput.js.map +1 -1
  116. package/dist/src/core/security/entropy.d.ts +8 -0
  117. package/dist/src/core/security/entropy.d.ts.map +1 -0
  118. package/dist/src/core/security/entropy.js +23 -0
  119. package/dist/src/core/security/entropy.js.map +1 -0
  120. package/dist/src/core/security/exampleSecretDetector.d.ts +13 -0
  121. package/dist/src/core/security/exampleSecretDetector.d.ts.map +1 -0
  122. package/dist/src/core/security/exampleSecretDetector.js +61 -0
  123. package/dist/src/core/security/exampleSecretDetector.js.map +1 -0
  124. package/dist/src/core/security/secretDetectors.d.ts +28 -0
  125. package/dist/src/core/security/secretDetectors.d.ts.map +1 -0
  126. package/dist/src/core/security/secretDetectors.js +292 -0
  127. package/dist/src/core/security/secretDetectors.js.map +1 -0
  128. package/dist/src/services/codeBaseScanner.d.ts.map +1 -1
  129. package/dist/src/services/codeBaseScanner.js +59 -22
  130. package/dist/src/services/codeBaseScanner.js.map +1 -1
  131. package/dist/src/services/ensureFilesOrPrompt.d.ts.map +1 -1
  132. package/dist/src/services/ensureFilesOrPrompt.js +5 -2
  133. package/dist/src/services/ensureFilesOrPrompt.js.map +1 -1
  134. package/dist/src/services/envDiscovery.d.ts.map +1 -1
  135. package/dist/src/services/envDiscovery.js +22 -9
  136. package/dist/src/services/envDiscovery.js.map +1 -1
  137. package/dist/src/services/git.d.ts.map +1 -1
  138. package/dist/src/services/git.js +10 -9
  139. package/dist/src/services/git.js.map +1 -1
  140. package/dist/src/services/printScanResult.d.ts +17 -0
  141. package/dist/src/services/printScanResult.d.ts.map +1 -0
  142. package/dist/src/services/printScanResult.js +127 -0
  143. package/dist/src/services/printScanResult.js.map +1 -0
  144. package/dist/src/services/scanCodebase.d.ts +8 -0
  145. package/dist/src/services/scanCodebase.d.ts.map +1 -0
  146. package/dist/src/services/scanCodebase.js +110 -0
  147. package/dist/src/services/scanCodebase.js.map +1 -0
  148. package/dist/src/services/scanOutputToConsole.d.ts +2 -4
  149. package/dist/src/services/scanOutputToConsole.d.ts.map +1 -1
  150. package/dist/src/services/scanOutputToConsole.js +5 -4
  151. package/dist/src/services/scanOutputToConsole.js.map +1 -1
  152. package/dist/src/ui/compare/printIssues.d.ts +1 -1
  153. package/dist/src/ui/compare/printIssues.d.ts.map +1 -1
  154. package/dist/src/ui/compare/printIssues.js +0 -1
  155. package/dist/src/ui/compare/printIssues.js.map +1 -1
  156. package/dist/src/ui/compare/printStats.d.ts +1 -1
  157. package/dist/src/ui/compare/printStats.d.ts.map +1 -1
  158. package/dist/src/ui/compare/printStats.js +0 -1
  159. package/dist/src/ui/compare/printStats.js.map +1 -1
  160. package/dist/src/ui/scan/printConsolelogWarning.d.ts.map +1 -1
  161. package/dist/src/ui/scan/printConsolelogWarning.js +8 -5
  162. package/dist/src/ui/scan/printConsolelogWarning.js.map +1 -1
  163. package/dist/src/ui/scan/printExampleWarnings.d.ts +1 -1
  164. package/dist/src/ui/scan/printExampleWarnings.d.ts.map +1 -1
  165. package/dist/src/ui/scan/printFrameworkWarnings.d.ts +2 -2
  166. package/dist/src/ui/scan/printFrameworkWarnings.d.ts.map +1 -1
  167. package/dist/src/ui/scan/printFrameworkWarnings.js +4 -3
  168. package/dist/src/ui/scan/printFrameworkWarnings.js.map +1 -1
  169. package/dist/src/ui/scan/printMissing.d.ts.map +1 -1
  170. package/dist/src/ui/scan/printMissing.js +3 -1
  171. package/dist/src/ui/scan/printMissing.js.map +1 -1
  172. package/dist/src/ui/scan/printProgress.d.ts +15 -0
  173. package/dist/src/ui/scan/printProgress.d.ts.map +1 -0
  174. package/dist/src/ui/scan/printProgress.js +35 -0
  175. package/dist/src/ui/scan/printProgress.js.map +1 -0
  176. package/dist/src/ui/scan/printSecrets.d.ts +1 -1
  177. package/dist/src/ui/scan/printSecrets.d.ts.map +1 -1
  178. package/dist/src/ui/scan/printSecrets.js +3 -2
  179. package/dist/src/ui/scan/printSecrets.js.map +1 -1
  180. package/dist/src/ui/shared/printFixTips.d.ts +1 -1
  181. package/dist/src/ui/shared/printFixTips.d.ts.map +1 -1
  182. package/dist/src/ui/shared/printFixTips.js +0 -1
  183. package/dist/src/ui/shared/printFixTips.js.map +1 -1
  184. package/dist/src/ui/shared/printProgress.d.ts +24 -0
  185. package/dist/src/ui/shared/printProgress.d.ts.map +1 -0
  186. package/dist/src/ui/shared/printProgress.js +43 -0
  187. package/dist/src/ui/shared/printProgress.js.map +1 -0
  188. package/dist/src/ui/shared/setupGlobalConfig.d.ts +1 -1
  189. package/dist/src/ui/shared/setupGlobalConfig.d.ts.map +1 -1
  190. package/dist/src/ui/shared/setupGlobalConfig.js +0 -1
  191. package/dist/src/ui/shared/setupGlobalConfig.js.map +1 -1
  192. package/package.json +7 -5
@@ -1,11 +1,12 @@
1
+ import type { Duplicate } from '../config/types.js';
1
2
  /**
2
3
  * Scan a .env-like file for duplicate keys.
3
4
  * - Ignores empty lines and comments (#...)
4
5
  * - Splits on first '='
5
6
  * - Trims the key
6
7
  * - Returns keys that appear more than once, with counts
8
+ * @param filePath - Path to the .env file to scan
9
+ * @returns An array of objects representing duplicate keys and their counts.
7
10
  */
8
- export declare function findDuplicateKeys(filePath: string): Array<{
9
- key: string;
10
- count: number;
11
- }>;
11
+ export declare function findDuplicateKeys(filePath: string): Array<Duplicate>;
12
+ //# sourceMappingURL=duplicates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicates.d.ts","sourceRoot":"","sources":["../../../src/core/duplicates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,CA0BpE"}
@@ -5,12 +5,14 @@ import fs from 'fs';
5
5
  * - Splits on first '='
6
6
  * - Trims the key
7
7
  * - Returns keys that appear more than once, with counts
8
+ * @param filePath - Path to the .env file to scan
9
+ * @returns An array of objects representing duplicate keys and their counts.
8
10
  */
9
11
  export function findDuplicateKeys(filePath) {
10
12
  if (!fs.existsSync(filePath))
11
13
  return [];
12
- const raw = fs.readFileSync(filePath, 'utf8');
13
- const lines = raw.split('\n');
14
+ const raw = fs.readFileSync(filePath, 'utf8').replace(/^\uFEFF/, '');
15
+ const lines = raw.split(/\r?\n/);
14
16
  const counts = new Map();
15
17
  for (const line of lines) {
16
18
  const trimmed = line.trim();
@@ -31,3 +33,4 @@ export function findDuplicateKeys(filePath) {
31
33
  }
32
34
  return duplicates;
33
35
  }
36
+ //# sourceMappingURL=duplicates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duplicates.js","sourceRoot":"","sources":["../../../src/core/duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExC,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAElD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS,CAAC,sBAAsB;QAE7C,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,GAAG;YAAE,SAAS;QAEnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QAClC,IAAI,KAAK,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,81 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envDiscovery.js","sourceRoot":"","sources":["../../../src/core/envDiscovery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
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;AAE9D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CA6B7D"}
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,5 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
+ import { DEFAULT_ENV_FILE, DEFAULT_EXAMPLE_FILE } from '../config/constants.js';
3
4
  /**
4
5
  * Pairs each environment file with its corresponding example file.
5
6
  * @param d - The discovery object containing environment and example file information.
@@ -14,8 +15,10 @@ export function pairWithExample(d) {
14
15
  if (envAbs === path.resolve(d.cwd, d.primaryExample))
15
16
  continue;
16
17
  }
17
- const suffix = envName === '.env' ? '' : envName.replace('.env', '');
18
- const exampleName = suffix ? `.env.example${suffix}` : d.primaryExample;
18
+ const suffix = envName === DEFAULT_ENV_FILE ? '' : envName.replace(DEFAULT_ENV_FILE, '');
19
+ const exampleName = suffix
20
+ ? `${DEFAULT_EXAMPLE_FILE}${suffix}`
21
+ : d.primaryExample;
19
22
  const envPathCurrent = path.resolve(d.cwd, envName);
20
23
  const examplePathCurrent = d.exampleFlag && !d.envFlag
21
24
  ? path.resolve(d.cwd, d.primaryExample)
@@ -1 +1 @@
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;AAGxB;;;;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,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrE,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAExE,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
+ {"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 +1 @@
1
- {"version":3,"file":"exampleSecretDetector.d.ts","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,oBAAoB,EAAE,CA4DxB"}
1
+ {"version":3,"file":"exampleSecretDetector.d.ts","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC1B,oBAAoB,EAAE,CA4DxB"}
@@ -1,5 +1,5 @@
1
- import { PROVIDER_PATTERNS, SUSPICIOUS_KEYS } from './secretDetectors.js';
2
- import { shannonEntropyNormalized } from './entropy.js';
1
+ import { PROVIDER_PATTERNS, SUSPICIOUS_KEYS, } from './security/secretDetectors.js';
2
+ import { shannonEntropyNormalized } from './security/entropy.js';
3
3
  /**
4
4
  * Detects potential secrets in a .env.example file.
5
5
  * @param env - An object representing the `.env.example` file (key-value pairs).
@@ -1 +1 @@
1
- {"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AASxD;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAA2B;IAE3B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IACE,KAAK,KAAK,EAAE;YACZ,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;YACjC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa;YACrC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,4DAA4D;oBACpE,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,2DAA2D;oBACnE,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,wCAAwC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACrE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"exampleSecretDetector.js","sourceRoot":"","sources":["../../../src/core/exampleSecretDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AASjE;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CACpC,GAA2B;IAE3B,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAE5C,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IACE,KAAK,KAAK,EAAE;YACZ,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;YACjC,KAAK,CAAC,WAAW,EAAE,KAAK,aAAa;YACrC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YACnB,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAC3B,CAAC;YACD,SAAS;QACX,CAAC;QAED,8DAA8D;QAC9D,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,4DAA4D;oBACpE,QAAQ,EAAE,MAAM;iBACjB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACvB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,2DAA2D;oBACnE,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;YACvB,MAAM,OAAO,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;gBAClB,QAAQ,CAAC,IAAI,CAAC;oBACZ,GAAG;oBACH,KAAK;oBACL,MAAM,EAAE,wCAAwC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;oBACrE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAIA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,SAAS;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CA0FA"}
1
+ {"version":3,"file":"fixEnv.d.ts","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAKA,UAAU,iBAAiB;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,UAAU,SAAS;IACjB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CA0FA"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { isEnvIgnoredByGit, isGitRepo, findGitRoot } from '../services/git.js';
4
+ import { DEFAULT_GITIGNORE_ENV_PATTERNS } from '../config/constants.js';
4
5
  /**
5
6
  * Applies fixes to the .env and .env.example files based on the detected issues.
6
7
  *
@@ -105,7 +106,7 @@ function updateGitignoreForEnv(envPath) {
105
106
  return false;
106
107
  }
107
108
  // Need to add patterns
108
- const patterns = ['.env'];
109
+ const patterns = DEFAULT_GITIGNORE_ENV_PATTERNS;
109
110
  if (fs.existsSync(gitignorePath)) {
110
111
  const current = fs.readFileSync(gitignorePath, 'utf8');
111
112
  const existingLines = current.split(/\r?\n/).map((l) => l.trim());
@@ -1 +1 @@
1
- {"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiB/E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IAInD,MAAM,EACJ,OAAO,EACP,WAAW,EACX,WAAW,GAAG,EAAE,EAChB,aAAa,GAAG,EAAE,EAClB,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAc;QACxB,iBAAiB,EAAE,EAAE;QACrB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,KAAK;KACxB,CAAC;IAEF,4BAA4B;IAC5B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,sDAAsD;QACtD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS,CAAC,iBAAiB;oBAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC;IAC3C,CAAC;IAED,mCAAmC;IACnC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,UAAU,GACd,OAAO;YACP,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACpC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC;QACP,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,SAAS;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;QACF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,YAAY,GAChB,SAAS;gBACT,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC;YACP,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;QACvC,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GACX,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC;IAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1E,2BAA2B;QAC3B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAElE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxF,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"fixEnv.js","sourceRoot":"","sources":["../../../src/core/fixEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAiBxE;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IAInD,MAAM,EACJ,OAAO,EACP,WAAW,EACX,WAAW,GAAG,EAAE,EAChB,aAAa,GAAG,EAAE,EAClB,eAAe,GAAG,KAAK,GACxB,GAAG,OAAO,CAAC;IAEZ,MAAM,MAAM,GAAc;QACxB,iBAAiB,EAAE,EAAE;QACrB,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,KAAK;KACxB,CAAC;IAEF,4BAA4B;IAC5B,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,sDAAsD;QACtD,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3B,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC1B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS,CAAC,iBAAiB;oBAC9C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC;YACD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,iBAAiB,GAAG,aAAa,CAAC;IAC3C,CAAC;IAED,mCAAmC;IACnC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,UAAU,GACd,OAAO;YACP,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACpC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC1C,IAAI,CAAC;QACP,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,SAAS;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CACnB,CAAC;QACF,MAAM,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzE,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,YAAY,GAChB,SAAS;gBACT,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACtC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;gBACzB,IAAI,CAAC;YACP,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YAC5C,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;QACvC,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GACX,MAAM,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC;QACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QAC1B,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;QAC9B,MAAM,CAAC,gBAAgB,CAAC;IAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;QAE1E,2BAA2B;QAC3B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,uBAAuB;QACvB,MAAM,QAAQ,GAAG,8BAA8B,CAAC;QAEhD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAElE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9C,CAAC;YAEF,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;gBACxF,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBAC3C,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;aAAM,CAAC;YACN,wBAAwB;YACxB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
- import { type Framework } from '../config/types.js';
1
+ import type { DetectedFramework } from '../config/types.js';
2
2
  interface FrameworkDetection {
3
- framework: Framework;
3
+ framework: DetectedFramework;
4
4
  version?: string;
5
5
  }
6
6
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpD,UAAU,kBAAkB;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAkC/D"}
1
+ {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,UAAU,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAkC/D"}
@@ -1,6 +1,5 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
- import {} from '../config/types.js';
4
3
  /**
5
4
  * Detects the framework being used in the project
6
5
  * by checking package.json and file structure
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAkB,MAAM,oBAAoB,CAAC;AAOpD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,sBAAsB;QACtB,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../src/core/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,sBAAsB;QACtB,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type EnvUsage, type frameworkWarning } from '../config/types.js';
1
+ import type { EnvUsage, FrameworkWarning } from '../config/types.js';
2
2
  /**
3
3
  * Validates environment variable usages against framework-specific rules
4
4
  * @param usages - Array of environment variable usages
@@ -6,5 +6,5 @@ import { type EnvUsage, type frameworkWarning } from '../config/types.js';
6
6
  * @param fileContentMap - Map of file paths to their content for detecting client components
7
7
  * @returns Array of framework-specific warnings
8
8
  */
9
- export declare function frameworkValidator(usages: EnvUsage[], cwd: string, fileContentMap?: Map<string, string>): frameworkWarning[];
9
+ export declare function frameworkValidator(usages: EnvUsage[], cwd: string, fileContentMap?: Map<string, string>): FrameworkWarning[];
10
10
  //# sourceMappingURL=frameworkValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI1E;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,gBAAgB,EAAE,CAUpB"}
1
+ {"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAIrE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,gBAAgB,EAAE,CAUpB"}
@@ -1,4 +1,3 @@
1
- import {} from '../config/types.js';
2
1
  import { detectFramework } from './frameworkDetector.js';
3
2
  import { applySvelteKitRules, applyNextJsRules } from './frameworks/index.js';
4
3
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,GAAW,EACX,cAAoC;IAEpC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,SAAS,KAAK,WAAW;YAAE,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,QAAQ;YAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../src/core/frameworkValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9E;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,GAAW,EACX,cAAoC;IAEpC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,SAAS,KAAK,WAAW;YAAE,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,QAAQ;YAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { DetectedFramework } from '../../config/types.js';
2
+ interface FrameworkDetection {
3
+ framework: DetectedFramework;
4
+ version?: string;
5
+ }
6
+ /**
7
+ * Detects the framework being used in the project
8
+ * by checking package.json and file structure
9
+ * @param cwd The current working directory of the project
10
+ * @returns Detected framework and its version (if applicable)
11
+ */
12
+ export declare function detectFramework(cwd: string): FrameworkDetection;
13
+ export {};
14
+ //# sourceMappingURL=frameworkDetector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkDetector.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/frameworkDetector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,UAAU,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAkC/D"}
@@ -0,0 +1,40 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Detects the framework being used in the project
5
+ * by checking package.json and file structure
6
+ * @param cwd The current working directory of the project
7
+ * @returns Detected framework and its version (if applicable)
8
+ */
9
+ export function detectFramework(cwd) {
10
+ try {
11
+ const packageJsonPath = path.join(cwd, 'package.json');
12
+ if (!fs.existsSync(packageJsonPath)) {
13
+ return { framework: 'unknown' };
14
+ }
15
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
16
+ const deps = {
17
+ ...packageJson.dependencies,
18
+ ...packageJson.devDependencies,
19
+ };
20
+ // Check for SvelteKit
21
+ if (deps['@sveltejs/kit']) {
22
+ return {
23
+ framework: 'sveltekit',
24
+ version: deps['@sveltejs/kit'],
25
+ };
26
+ }
27
+ // Check for Next.js
28
+ if (deps['next']) {
29
+ return {
30
+ framework: 'nextjs',
31
+ version: deps['next'],
32
+ };
33
+ }
34
+ return { framework: 'unknown' };
35
+ }
36
+ catch {
37
+ return { framework: 'unknown' };
38
+ }
39
+ }
40
+ //# sourceMappingURL=frameworkDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkDetector.js","sourceRoot":"","sources":["../../../../src/core/frameworks/frameworkDetector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAQxB;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,CAAC;QACH,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,sBAAsB;QACtB,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC;aAC/B,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACjB,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;aACtB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { EnvUsage, FrameworkWarning } from '../../config/types.js';
2
+ /**
3
+ * Validates environment variable usages against framework-specific rules
4
+ * @param usages - Array of environment variable usages
5
+ * @param cwd - Current working directory to detect framework
6
+ * @param fileContentMap - Map of file paths to their content for detecting client components
7
+ * @returns Array of framework-specific warnings
8
+ */
9
+ export declare function frameworkValidator(usages: EnvUsage[], cwd: string, fileContentMap?: Map<string, string>): FrameworkWarning[];
10
+ //# sourceMappingURL=frameworkValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkValidator.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/frameworkValidator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIxE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAAE,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,gBAAgB,EAAE,CAUpB"}
@@ -0,0 +1,21 @@
1
+ import { detectFramework } from './frameworkDetector.js';
2
+ import { applySvelteKitRules, applyNextJsRules } from './index.js';
3
+ /**
4
+ * Validates environment variable usages against framework-specific rules
5
+ * @param usages - Array of environment variable usages
6
+ * @param cwd - Current working directory to detect framework
7
+ * @param fileContentMap - Map of file paths to their content for detecting client components
8
+ * @returns Array of framework-specific warnings
9
+ */
10
+ export function frameworkValidator(usages, cwd, fileContentMap) {
11
+ const warnings = [];
12
+ const { framework } = detectFramework(cwd);
13
+ for (const u of usages) {
14
+ if (framework === 'sveltekit')
15
+ applySvelteKitRules(u, warnings);
16
+ if (framework === 'nextjs')
17
+ applyNextJsRules(u, warnings, fileContentMap);
18
+ }
19
+ return warnings;
20
+ }
21
+ //# sourceMappingURL=frameworkValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frameworkValidator.js","sourceRoot":"","sources":["../../../../src/core/frameworks/frameworkValidator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAkB,EAClB,GAAW,EACX,cAAoC;IAEpC,MAAM,QAAQ,GAAuB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,SAAS,KAAK,WAAW;YAAE,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,SAAS,KAAK,QAAQ;YAAE,gBAAgB,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,9 +1,9 @@
1
- import { type EnvUsage, type frameworkWarning } from '../../config/types.js';
1
+ import type { EnvUsage, FrameworkWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Next.js environment variable validation rules
4
4
  * @param u - The environment variable usage information
5
5
  * @param warnings - The array to push warnings into
6
6
  * @param fileContentMap - Optional map of file paths to their content for detecting client components
7
7
  */
8
- export declare function applyNextJsRules(u: EnvUsage, warnings: frameworkWarning[], fileContentMap?: Map<string, string>): void;
8
+ export declare function applyNextJsRules(u: EnvUsage, warnings: FrameworkWarning[], fileContentMap?: Map<string, string>): void;
9
9
  //# sourceMappingURL=nextJsRules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,IAAI,CA6FN"}
1
+ {"version":3,"file":"nextJsRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGxE;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,cAAc,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,IAAI,CAkEN"}
@@ -1,4 +1,4 @@
1
- import {} from '../../config/types.js';
1
+ import { normalizePath } from './../helpers/normalizePath.js';
2
2
  /**
3
3
  * Next.js environment variable validation rules
4
4
  * @param u - The environment variable usage information
@@ -6,8 +6,10 @@ import {} from '../../config/types.js';
6
6
  * @param fileContentMap - Optional map of file paths to their content for detecting client components
7
7
  */
8
8
  export function applyNextJsRules(u, warnings, fileContentMap) {
9
+ // Normalize path separators for cross-platform consistency
10
+ const normalizedFile = normalizePath(u.file);
9
11
  // Ignore node_modules
10
- if (u.file.includes('node_modules')) {
12
+ if (normalizedFile.includes('/node_modules/')) {
11
13
  return;
12
14
  }
13
15
  // Detect client components by checking the full file content
@@ -22,41 +24,16 @@ export function applyNextJsRules(u, warnings, fileContentMap) {
22
24
  /^use client;?$/m.test(firstLines);
23
25
  }
24
26
  }
25
- // Fallback to context-based detection (less reliable)
26
- if (!isClientComponent) {
27
- isClientComponent =
28
- u.context.includes('use client') ||
29
- u.context.includes('"use client"') ||
30
- u.context.includes("'use client'");
31
- }
32
- // Detect server-only files
33
- const isServerOnlyFile = u.file.includes('/app/api/') ||
34
- u.file.includes('/pages/api/') ||
35
- u.file.endsWith('.server.ts') ||
36
- u.file.endsWith('.server.tsx') ||
37
- u.file.endsWith('.server.js') ||
38
- u.file.endsWith('.server.jsx') ||
39
- u.file.endsWith('middleware.ts') ||
40
- u.file.endsWith('middleware.js') ||
41
- u.file.includes('/route.ts') ||
42
- u.file.includes('/route.js');
43
- // Server-only files should NOT use NEXT_PUBLIC_ variables
44
- if (isServerOnlyFile && u.variable.startsWith('NEXT_PUBLIC_')) {
45
- warnings.push({
46
- variable: u.variable,
47
- reason: 'NEXT_PUBLIC_ variable used in server-only file',
48
- file: u.file,
49
- line: u.line,
50
- framework: 'nextjs',
51
- });
52
- return; // Stop processing other rules for this usage
53
- }
27
+ // Pages Router: all non-API files are client components
28
+ const isPagesRouterClientFile = /(^|\/)pages\//.test(normalizedFile) &&
29
+ !/(^|\/)pages\/api\//.test(normalizedFile);
30
+ isClientComponent ||= isPagesRouterClientFile;
54
31
  // Client components MUST use NEXT_PUBLIC_ prefix
55
32
  if (isClientComponent && !u.variable.startsWith('NEXT_PUBLIC_')) {
56
33
  warnings.push({
57
34
  variable: u.variable,
58
35
  reason: 'Server-only variable accessed from client code',
59
- file: u.file,
36
+ file: normalizedFile,
60
37
  line: u.line,
61
38
  framework: 'nextjs',
62
39
  });
@@ -67,7 +44,7 @@ export function applyNextJsRules(u, warnings, fileContentMap) {
67
44
  warnings.push({
68
45
  variable: u.variable,
69
46
  reason: 'Next.js uses process.env, not import.meta.env (Vite syntax)',
70
- file: u.file,
47
+ file: normalizedFile,
71
48
  line: u.line,
72
49
  framework: 'nextjs',
73
50
  });
@@ -75,15 +52,11 @@ export function applyNextJsRules(u, warnings, fileContentMap) {
75
52
  }
76
53
  // Warn if NEXT_PUBLIC_ contains sensitive keywords
77
54
  if (u.variable.startsWith('NEXT_PUBLIC_') &&
78
- (u.variable.includes('SECRET') ||
79
- u.variable.includes('PRIVATE') ||
80
- u.variable.includes('KEY') ||
81
- u.variable.includes('TOKEN') ||
82
- u.variable.includes('PASSWORD'))) {
55
+ /SECRET|PRIVATE|KEY|TOKEN|PASSWORD/.test(u.variable)) {
83
56
  warnings.push({
84
57
  variable: u.variable,
85
58
  reason: 'Sensitive data marked as public',
86
- file: u.file,
59
+ file: normalizedFile,
87
60
  line: u.line,
88
61
  framework: 'nextjs',
89
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nextJsRules.js","sourceRoot":"","sources":["../../../../src/core/frameworks/nextJsRules.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,CAAW,EACX,QAA4B,EAC5B,cAAoC;IAEpC,2DAA2D;IAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE7C,sBAAsB;IACtB,IAAI,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,6DAA6D;IAC7D,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,WAAW,EAAE,CAAC;YAChB,mDAAmD;YACnD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnE,iBAAiB;gBACf,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;oBACrC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,wDAAwD;IACxD,MAAM,uBAAuB,GAC3B,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;QACpC,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE7C,iBAAiB,KAAK,uBAAuB,CAAC;IAE9C,iDAAiD;IACjD,IAAI,iBAAiB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChE,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,gDAAgD;YACxD,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,6CAA6C;IACvD,CAAC;IAED,oCAAoC;IACpC,IAAI,CAAC,CAAC,OAAO,KAAK,iBAAiB,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,6DAA6D;YACrE,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,6CAA6C;IACvD,CAAC;IAED,mDAAmD;IACnD,IACE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,cAAc,CAAC;QACrC,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,EACpD,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,iCAAiC;YACzC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,QAAQ;SACpB,CAAC,CAAC;QACH,OAAO,CAAC,6CAA6C;IACvD,CAAC;AACH,CAAC"}
@@ -1,8 +1,8 @@
1
- import { type EnvUsage, type frameworkWarning } from '../../config/types.js';
1
+ import type { EnvUsage, FrameworkWarning } from '../../config/types.js';
2
2
  /**
3
3
  * Applies SvelteKit specific rules to environment variable usage
4
4
  * @param u - The environment variable usage information
5
5
  * @param warnings - The array to push warnings into
6
6
  */
7
- export declare function applySvelteKitRules(u: EnvUsage, warnings: frameworkWarning[]): void;
7
+ export declare function applySvelteKitRules(u: EnvUsage, warnings: FrameworkWarning[]): void;
8
8
  //# sourceMappingURL=sveltekitRules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sveltekitRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE7E;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAwFN"}
1
+ {"version":3,"file":"sveltekitRules.d.ts","sourceRoot":"","sources":["../../../../src/core/frameworks/sveltekitRules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGxE;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,CAAC,EAAE,QAAQ,EACX,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CA+GN"}