squeaky-clean 0.1.11 → 0.1.12

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 (249) hide show
  1. package/dist/cleaners/BaseCleaner.d.ts +57 -0
  2. package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
  3. package/dist/cleaners/BaseCleaner.js +299 -0
  4. package/dist/cleaners/BaseCleaner.js.map +1 -0
  5. package/dist/cleaners/CleanerRegistry.d.ts +65 -0
  6. package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
  7. package/dist/cleaners/CleanerRegistry.js +112 -0
  8. package/dist/cleaners/CleanerRegistry.js.map +1 -0
  9. package/dist/cleaners/androidstudio.d.ts +16 -0
  10. package/dist/cleaners/androidstudio.d.ts.map +1 -0
  11. package/dist/cleaners/androidstudio.js +375 -0
  12. package/dist/cleaners/androidstudio.js.map +1 -0
  13. package/dist/cleaners/brew.d.ts +4 -0
  14. package/dist/cleaners/brew.d.ts.map +1 -0
  15. package/dist/cleaners/brew.js +197 -0
  16. package/dist/cleaners/brew.js.map +1 -0
  17. package/dist/cleaners/brewEnhanced.d.ts +18 -0
  18. package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
  19. package/dist/cleaners/brewEnhanced.js +255 -0
  20. package/dist/cleaners/brewEnhanced.js.map +1 -0
  21. package/dist/cleaners/bun.d.ts +14 -0
  22. package/dist/cleaners/bun.d.ts.map +1 -0
  23. package/dist/cleaners/bun.js +207 -0
  24. package/dist/cleaners/bun.js.map +1 -0
  25. package/dist/cleaners/cargo.d.ts +15 -0
  26. package/dist/cleaners/cargo.d.ts.map +1 -0
  27. package/dist/cleaners/cargo.js +193 -0
  28. package/dist/cleaners/cargo.js.map +1 -0
  29. package/dist/cleaners/chrome.d.ts +14 -0
  30. package/dist/cleaners/chrome.d.ts.map +1 -0
  31. package/dist/cleaners/chrome.js +250 -0
  32. package/dist/cleaners/chrome.js.map +1 -0
  33. package/dist/cleaners/cocoapods.d.ts +16 -0
  34. package/dist/cleaners/cocoapods.d.ts.map +1 -0
  35. package/dist/cleaners/cocoapods.js +180 -0
  36. package/dist/cleaners/cocoapods.js.map +1 -0
  37. package/dist/cleaners/cursor.d.ts +15 -0
  38. package/dist/cleaners/cursor.d.ts.map +1 -0
  39. package/dist/cleaners/cursor.js +377 -0
  40. package/dist/cleaners/cursor.js.map +1 -0
  41. package/dist/cleaners/docker.d.ts +35 -0
  42. package/dist/cleaners/docker.d.ts.map +1 -0
  43. package/dist/cleaners/docker.js +288 -0
  44. package/dist/cleaners/docker.js.map +1 -0
  45. package/dist/cleaners/firefox.d.ts +15 -0
  46. package/dist/cleaners/firefox.d.ts.map +1 -0
  47. package/dist/cleaners/firefox.js +281 -0
  48. package/dist/cleaners/firefox.js.map +1 -0
  49. package/dist/cleaners/flutter.d.ts +18 -0
  50. package/dist/cleaners/flutter.d.ts.map +1 -0
  51. package/dist/cleaners/flutter.js +354 -0
  52. package/dist/cleaners/flutter.js.map +1 -0
  53. package/dist/cleaners/goBuild.d.ts +18 -0
  54. package/dist/cleaners/goBuild.d.ts.map +1 -0
  55. package/dist/cleaners/goBuild.js +196 -0
  56. package/dist/cleaners/goBuild.js.map +1 -0
  57. package/dist/cleaners/gradle.d.ts +14 -0
  58. package/dist/cleaners/gradle.d.ts.map +1 -0
  59. package/dist/cleaners/gradle.js +336 -0
  60. package/dist/cleaners/gradle.js.map +1 -0
  61. package/dist/cleaners/index.d.ts +51 -0
  62. package/dist/cleaners/index.d.ts.map +1 -0
  63. package/dist/cleaners/index.js +267 -0
  64. package/dist/cleaners/index.js.map +1 -0
  65. package/dist/cleaners/jetbrains.d.ts +18 -0
  66. package/dist/cleaners/jetbrains.d.ts.map +1 -0
  67. package/dist/cleaners/jetbrains.js +441 -0
  68. package/dist/cleaners/jetbrains.js.map +1 -0
  69. package/dist/cleaners/maven.d.ts +15 -0
  70. package/dist/cleaners/maven.d.ts.map +1 -0
  71. package/dist/cleaners/maven.js +182 -0
  72. package/dist/cleaners/maven.js.map +1 -0
  73. package/dist/cleaners/nix.d.ts +4 -0
  74. package/dist/cleaners/nix.d.ts.map +1 -0
  75. package/dist/cleaners/nix.js +227 -0
  76. package/dist/cleaners/nix.js.map +1 -0
  77. package/dist/cleaners/nodeGyp.d.ts +14 -0
  78. package/dist/cleaners/nodeGyp.d.ts.map +1 -0
  79. package/dist/cleaners/nodeGyp.js +157 -0
  80. package/dist/cleaners/nodeGyp.js.map +1 -0
  81. package/dist/cleaners/npm.d.ts +14 -0
  82. package/dist/cleaners/npm.d.ts.map +1 -0
  83. package/dist/cleaners/npm.js +203 -0
  84. package/dist/cleaners/npm.js.map +1 -0
  85. package/dist/cleaners/npmEnhanced.d.ts +19 -0
  86. package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
  87. package/dist/cleaners/npmEnhanced.js +336 -0
  88. package/dist/cleaners/npmEnhanced.js.map +1 -0
  89. package/dist/cleaners/nuget.d.ts +16 -0
  90. package/dist/cleaners/nuget.d.ts.map +1 -0
  91. package/dist/cleaners/nuget.js +197 -0
  92. package/dist/cleaners/nuget.js.map +1 -0
  93. package/dist/cleaners/nx.d.ts +18 -0
  94. package/dist/cleaners/nx.d.ts.map +1 -0
  95. package/dist/cleaners/nx.js +308 -0
  96. package/dist/cleaners/nx.js.map +1 -0
  97. package/dist/cleaners/pip.d.ts +19 -0
  98. package/dist/cleaners/pip.d.ts.map +1 -0
  99. package/dist/cleaners/pip.js +334 -0
  100. package/dist/cleaners/pip.js.map +1 -0
  101. package/dist/cleaners/pipenv.d.ts +16 -0
  102. package/dist/cleaners/pipenv.d.ts.map +1 -0
  103. package/dist/cleaners/pipenv.js +184 -0
  104. package/dist/cleaners/pipenv.js.map +1 -0
  105. package/dist/cleaners/playwright.d.ts +15 -0
  106. package/dist/cleaners/playwright.d.ts.map +1 -0
  107. package/dist/cleaners/playwright.js +221 -0
  108. package/dist/cleaners/playwright.js.map +1 -0
  109. package/dist/cleaners/pnpm.d.ts +14 -0
  110. package/dist/cleaners/pnpm.d.ts.map +1 -0
  111. package/dist/cleaners/pnpm.js +214 -0
  112. package/dist/cleaners/pnpm.js.map +1 -0
  113. package/dist/cleaners/poetry.d.ts +16 -0
  114. package/dist/cleaners/poetry.d.ts.map +1 -0
  115. package/dist/cleaners/poetry.js +184 -0
  116. package/dist/cleaners/poetry.js.map +1 -0
  117. package/dist/cleaners/swiftpm.d.ts +16 -0
  118. package/dist/cleaners/swiftpm.d.ts.map +1 -0
  119. package/dist/cleaners/swiftpm.js +179 -0
  120. package/dist/cleaners/swiftpm.js.map +1 -0
  121. package/dist/cleaners/turbo.d.ts +18 -0
  122. package/dist/cleaners/turbo.d.ts.map +1 -0
  123. package/dist/cleaners/turbo.js +325 -0
  124. package/dist/cleaners/turbo.js.map +1 -0
  125. package/dist/cleaners/universalBinary.d.ts +20 -0
  126. package/dist/cleaners/universalBinary.d.ts.map +1 -0
  127. package/dist/cleaners/universalBinary.js +318 -0
  128. package/dist/cleaners/universalBinary.js.map +1 -0
  129. package/dist/cleaners/vite.d.ts +17 -0
  130. package/dist/cleaners/vite.d.ts.map +1 -0
  131. package/dist/cleaners/vite.js +274 -0
  132. package/dist/cleaners/vite.js.map +1 -0
  133. package/dist/cleaners/vscode.d.ts +15 -0
  134. package/dist/cleaners/vscode.d.ts.map +1 -0
  135. package/dist/cleaners/vscode.js +411 -0
  136. package/dist/cleaners/vscode.js.map +1 -0
  137. package/dist/cleaners/webpack.d.ts +17 -0
  138. package/dist/cleaners/webpack.d.ts.map +1 -0
  139. package/dist/cleaners/webpack.js +263 -0
  140. package/dist/cleaners/webpack.js.map +1 -0
  141. package/dist/cleaners/windsurf.d.ts +15 -0
  142. package/dist/cleaners/windsurf.d.ts.map +1 -0
  143. package/dist/cleaners/windsurf.js +366 -0
  144. package/dist/cleaners/windsurf.js.map +1 -0
  145. package/dist/cleaners/xcode.d.ts +14 -0
  146. package/dist/cleaners/xcode.d.ts.map +1 -0
  147. package/dist/cleaners/xcode.js +348 -0
  148. package/dist/cleaners/xcode.js.map +1 -0
  149. package/dist/cleaners/yarn.d.ts +16 -0
  150. package/dist/cleaners/yarn.d.ts.map +1 -0
  151. package/dist/cleaners/yarn.js +271 -0
  152. package/dist/cleaners/yarn.js.map +1 -0
  153. package/dist/cleaners/zed.d.ts +15 -0
  154. package/dist/cleaners/zed.d.ts.map +1 -0
  155. package/dist/cleaners/zed.js +383 -0
  156. package/dist/cleaners/zed.js.map +1 -0
  157. package/dist/cli.d.ts +3 -0
  158. package/dist/cli.d.ts.map +1 -0
  159. package/dist/cli.js +367 -0
  160. package/dist/cli.js.map +1 -0
  161. package/dist/commands/auto.d.ts +8 -0
  162. package/dist/commands/auto.d.ts.map +1 -0
  163. package/dist/commands/auto.js +251 -0
  164. package/dist/commands/auto.js.map +1 -0
  165. package/dist/commands/categories.d.ts +8 -0
  166. package/dist/commands/categories.d.ts.map +1 -0
  167. package/dist/commands/categories.js +133 -0
  168. package/dist/commands/categories.js.map +1 -0
  169. package/dist/commands/clean.d.ts +3 -0
  170. package/dist/commands/clean.d.ts.map +1 -0
  171. package/dist/commands/clean.js +149 -0
  172. package/dist/commands/clean.js.map +1 -0
  173. package/dist/commands/config.d.ts +14 -0
  174. package/dist/commands/config.d.ts.map +1 -0
  175. package/dist/commands/config.js +460 -0
  176. package/dist/commands/config.js.map +1 -0
  177. package/dist/commands/configDoctor.d.ts +26 -0
  178. package/dist/commands/configDoctor.d.ts.map +1 -0
  179. package/dist/commands/configDoctor.js +60 -0
  180. package/dist/commands/configDoctor.js.map +1 -0
  181. package/dist/commands/doctor.d.ts +2 -0
  182. package/dist/commands/doctor.d.ts.map +1 -0
  183. package/dist/commands/doctor.js +141 -0
  184. package/dist/commands/doctor.js.map +1 -0
  185. package/dist/commands/emojis.d.ts +2 -0
  186. package/dist/commands/emojis.d.ts.map +1 -0
  187. package/dist/commands/emojis.js +28 -0
  188. package/dist/commands/emojis.js.map +1 -0
  189. package/dist/commands/interactive.d.ts +3 -0
  190. package/dist/commands/interactive.d.ts.map +1 -0
  191. package/dist/commands/interactive.js +284 -0
  192. package/dist/commands/interactive.js.map +1 -0
  193. package/dist/commands/interactiveEnhanced.d.ts +4 -0
  194. package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
  195. package/dist/commands/interactiveEnhanced.js +460 -0
  196. package/dist/commands/interactiveEnhanced.js.map +1 -0
  197. package/dist/commands/list.d.ts +2 -0
  198. package/dist/commands/list.d.ts.map +1 -0
  199. package/dist/commands/list.js +68 -0
  200. package/dist/commands/list.js.map +1 -0
  201. package/dist/commands/sizes.d.ts +2 -0
  202. package/dist/commands/sizes.d.ts.map +1 -0
  203. package/dist/commands/sizes.js +87 -0
  204. package/dist/commands/sizes.js.map +1 -0
  205. package/dist/commands/ub.d.ts +10 -0
  206. package/dist/commands/ub.d.ts.map +1 -0
  207. package/dist/commands/ub.js +170 -0
  208. package/dist/commands/ub.js.map +1 -0
  209. package/dist/config/configSchema.d.ts +93 -0
  210. package/dist/config/configSchema.d.ts.map +1 -0
  211. package/dist/config/configSchema.js +75 -0
  212. package/dist/config/configSchema.js.map +1 -0
  213. package/dist/config/index.d.ts +35 -0
  214. package/dist/config/index.d.ts.map +1 -0
  215. package/dist/config/index.js +255 -0
  216. package/dist/config/index.js.map +1 -0
  217. package/dist/config/loadConfig.d.ts +7 -0
  218. package/dist/config/loadConfig.d.ts.map +1 -0
  219. package/dist/config/loadConfig.js +95 -0
  220. package/dist/config/loadConfig.js.map +1 -0
  221. package/dist/config/migrateConfig.d.ts +56 -0
  222. package/dist/config/migrateConfig.d.ts.map +1 -0
  223. package/dist/config/migrateConfig.js +102 -0
  224. package/dist/config/migrateConfig.js.map +1 -0
  225. package/dist/plugins/discovery.d.ts +6 -0
  226. package/dist/plugins/discovery.d.ts.map +1 -0
  227. package/dist/plugins/discovery.js +64 -0
  228. package/dist/plugins/discovery.js.map +1 -0
  229. package/dist/profiles/index.d.ts +61 -0
  230. package/dist/profiles/index.d.ts.map +1 -0
  231. package/dist/profiles/index.js +406 -0
  232. package/dist/profiles/index.js.map +1 -0
  233. package/dist/types/index.d.ts +176 -0
  234. package/dist/types/index.d.ts.map +1 -0
  235. package/dist/types/index.js +3 -0
  236. package/dist/types/index.js.map +1 -0
  237. package/dist/utils/cache.d.ts +58 -0
  238. package/dist/utils/cache.d.ts.map +1 -0
  239. package/dist/utils/cache.js +101 -0
  240. package/dist/utils/cache.js.map +1 -0
  241. package/dist/utils/cli.d.ts +45 -0
  242. package/dist/utils/cli.d.ts.map +1 -0
  243. package/dist/utils/cli.js +412 -0
  244. package/dist/utils/cli.js.map +1 -0
  245. package/dist/utils/fs.d.ts +32 -0
  246. package/dist/utils/fs.d.ts.map +1 -0
  247. package/dist/utils/fs.js +250 -0
  248. package/dist/utils/fs.js.map +1 -0
  249. package/package.json +3 -3
@@ -0,0 +1,336 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.GradleCleaner = void 0;
7
+ const fs_1 = require("fs");
8
+ const path_1 = __importDefault(require("path"));
9
+ const os_1 = __importDefault(require("os"));
10
+ const execa_1 = __importDefault(require("execa"));
11
+ const fs_2 = require("../utils/fs");
12
+ const cli_1 = require("../utils/cli");
13
+ const minimatch_1 = require("minimatch");
14
+ class GradleCleaner {
15
+ constructor() {
16
+ this.name = "gradle";
17
+ this.type = "build-tool";
18
+ this.description = "Gradle build cache, daemon logs, wrapper distributions, and temporary files";
19
+ }
20
+ getCachePaths() {
21
+ const homeDir = os_1.default.homedir();
22
+ return [
23
+ // Main Gradle user home directory contents
24
+ {
25
+ path: path_1.default.join(homeDir, ".gradle", "caches"),
26
+ description: "Gradle build caches and dependency caches",
27
+ category: "Build Cache",
28
+ },
29
+ {
30
+ path: path_1.default.join(homeDir, ".gradle", "daemon"),
31
+ description: "Gradle daemon logs and lock files",
32
+ category: "Daemon",
33
+ },
34
+ {
35
+ path: path_1.default.join(homeDir, ".gradle", "wrapper", "dists"),
36
+ description: "Downloaded Gradle wrapper distributions",
37
+ category: "Wrapper",
38
+ },
39
+ // Build scan and configuration cache
40
+ {
41
+ path: path_1.default.join(homeDir, ".gradle", "configuration-cache"),
42
+ description: "Gradle configuration cache",
43
+ category: "Configuration Cache",
44
+ },
45
+ {
46
+ path: path_1.default.join(homeDir, ".gradle", "buildOutputCleanup"),
47
+ description: "Build output cleanup cache",
48
+ category: "Build Cache",
49
+ },
50
+ // Temporary and worker files
51
+ {
52
+ path: path_1.default.join(homeDir, ".gradle", "workers"),
53
+ description: "Gradle worker process files",
54
+ category: "Workers",
55
+ },
56
+ {
57
+ path: path_1.default.join(homeDir, ".gradle", ".tmp"),
58
+ description: "Temporary Gradle files",
59
+ category: "Temporary",
60
+ },
61
+ // Kotlin daemon and caches (if using Kotlin)
62
+ {
63
+ path: path_1.default.join(homeDir, ".gradle", "kotlin-profile"),
64
+ description: "Kotlin compilation profiling data",
65
+ category: "Kotlin",
66
+ },
67
+ // Android-specific Gradle caches (if doing Android development)
68
+ {
69
+ path: path_1.default.join(homeDir, ".gradle", "caches", "transforms-3"),
70
+ description: "Android transform cache (can be very large)",
71
+ category: "Android",
72
+ },
73
+ {
74
+ path: path_1.default.join(homeDir, ".gradle", "caches", "transforms-2"),
75
+ description: "Legacy Android transform cache",
76
+ category: "Android",
77
+ },
78
+ // Project-specific build directories (in current working directory tree)
79
+ {
80
+ path: path_1.default.join(process.cwd(), "build"),
81
+ description: "Current project build directory",
82
+ category: "Project Build",
83
+ },
84
+ {
85
+ path: path_1.default.join(process.cwd(), ".gradle"),
86
+ description: "Current project Gradle cache",
87
+ category: "Project Build",
88
+ },
89
+ ];
90
+ }
91
+ async isAvailable() {
92
+ try {
93
+ (0, cli_1.printVerbose)("Checking if Gradle is available...");
94
+ // Check for gradle command with timeout
95
+ try {
96
+ await (0, execa_1.default)("gradle", ["--version"], { timeout: 5000 }); // 5 second timeout
97
+ (0, cli_1.printVerbose)("Found gradle command in PATH");
98
+ return true;
99
+ }
100
+ catch {
101
+ // Try gradlew
102
+ try {
103
+ await (0, execa_1.default)("./gradlew", ["--version"], { timeout: 5000 }); // 5 second timeout
104
+ (0, cli_1.printVerbose)("Found gradlew in current directory");
105
+ return true;
106
+ }
107
+ catch {
108
+ // Check for Gradle user directory (indicates Gradle usage)
109
+ const homeDir = os_1.default.homedir();
110
+ const gradleHome = path_1.default.join(homeDir, ".gradle");
111
+ if (await (0, fs_2.pathExists)(gradleHome)) {
112
+ (0, cli_1.printVerbose)(`Found Gradle user directory: ${gradleHome}`);
113
+ return true;
114
+ }
115
+ }
116
+ }
117
+ return false;
118
+ }
119
+ catch {
120
+ return false;
121
+ }
122
+ }
123
+ async getCacheInfo() {
124
+ const allPaths = this.getCachePaths();
125
+ const existingPaths = [];
126
+ let totalSize = 0;
127
+ let lastModified;
128
+ const categories = new Map();
129
+ (0, cli_1.printVerbose)(`Checking ${allPaths.length} Gradle cache locations...`);
130
+ for (const { path: cachePath, description, category } of allPaths) {
131
+ if (await (0, fs_2.pathExists)(cachePath)) {
132
+ existingPaths.push(cachePath);
133
+ try {
134
+ const size = await (0, fs_2.getDirectorySize)(cachePath);
135
+ totalSize += size;
136
+ // Track by category
137
+ const existing = categories.get(category) || { size: 0, count: 0 };
138
+ categories.set(category, {
139
+ size: existing.size + size,
140
+ count: existing.count + 1,
141
+ });
142
+ const stats = await fs_1.promises.stat(cachePath);
143
+ if (!lastModified || stats.mtime > lastModified) {
144
+ lastModified = stats.mtime;
145
+ }
146
+ const sizeInMB = (size / (1024 * 1024)).toFixed(1);
147
+ (0, cli_1.printVerbose)(`Found ${category}: ${cachePath} (${sizeInMB} MB) - ${description}`);
148
+ }
149
+ catch (error) {
150
+ (0, cli_1.printVerbose)(`Error checking ${cachePath}: ${error}`);
151
+ }
152
+ }
153
+ }
154
+ // Log category summary
155
+ if (categories.size > 0) {
156
+ (0, cli_1.printVerbose)("=== Gradle Cache Summary by Category ===");
157
+ categories.forEach((info, category) => {
158
+ const sizeInMB = (info.size / (1024 * 1024)).toFixed(1);
159
+ (0, cli_1.printVerbose)(`${category}: ${info.count} locations, ${sizeInMB} MB`);
160
+ });
161
+ }
162
+ return {
163
+ name: this.name,
164
+ type: this.type,
165
+ description: this.description,
166
+ paths: existingPaths,
167
+ isInstalled: await this.isAvailable(),
168
+ size: totalSize,
169
+ lastModified,
170
+ };
171
+ }
172
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
173
+ const info = cacheInfo || (await this.getCacheInfo());
174
+ const clearedPaths = [];
175
+ const sizeBefore = info.size || 0;
176
+ let success = true;
177
+ let error;
178
+ if (!info.isInstalled) {
179
+ return {
180
+ name: this.name,
181
+ success: false,
182
+ error: "Gradle is not available",
183
+ clearedPaths: [],
184
+ sizeBefore: 0,
185
+ sizeAfter: 0,
186
+ };
187
+ }
188
+ if (info.paths.length === 0) {
189
+ (0, cli_1.printVerbose)("No Gradle cache directories found");
190
+ return {
191
+ name: this.name,
192
+ success: true,
193
+ clearedPaths: [],
194
+ sizeBefore: 0,
195
+ sizeAfter: 0,
196
+ };
197
+ }
198
+ try {
199
+ if (dryRun) {
200
+ (0, cli_1.printVerbose)(`[DRY RUN] Would clear ${info.paths.length} Gradle cache locations:`);
201
+ const pathsWithInfo = this.getCachePaths();
202
+ for (const cachePath of info.paths) {
203
+ const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
204
+ (0, cli_1.printVerbose)(` • ${pathInfo?.category || "Unknown"}: ${cachePath}`);
205
+ if (pathInfo?.description) {
206
+ (0, cli_1.printVerbose)(` ${pathInfo.description}`);
207
+ }
208
+ }
209
+ (0, cli_1.printVerbose)("Would also try to stop Gradle daemons gracefully");
210
+ return {
211
+ name: this.name,
212
+ success: true,
213
+ sizeBefore,
214
+ sizeAfter: sizeBefore,
215
+ clearedPaths: info.paths,
216
+ };
217
+ }
218
+ // First, try to stop Gradle daemons gracefully
219
+ try {
220
+ (0, cli_1.printVerbose)("Stopping Gradle daemons...");
221
+ await (0, execa_1.default)("gradle", ["--stop"], { timeout: 10000 }); // Shorter timeout
222
+ (0, cli_1.printVerbose)("Gradle daemons stopped successfully");
223
+ }
224
+ catch (stopError) {
225
+ (0, cli_1.printVerbose)(`Could not stop Gradle daemons: ${stopError}`);
226
+ // Continue anyway - the daemon files might still be clearable
227
+ }
228
+ const pathsWithInfo = this.getCachePaths();
229
+ // Clear caches by category priority (safest first)
230
+ const priorityOrder = [
231
+ "Temporary",
232
+ "Daemon",
233
+ "Workers",
234
+ "Kotlin",
235
+ "Configuration Cache",
236
+ "Build Cache",
237
+ "Android",
238
+ "Project Build",
239
+ "Wrapper", // Keep wrapper dists for last as they take time to re-download
240
+ ];
241
+ const categorizedPaths = new Map();
242
+ for (const cachePath of info.paths) {
243
+ const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
244
+ const category = pathInfo?.category || "Other";
245
+ if (!categorizedPaths.has(category)) {
246
+ categorizedPaths.set(category, []);
247
+ }
248
+ categorizedPaths.get(category).push(cachePath);
249
+ }
250
+ // Clear in priority order
251
+ for (const category of priorityOrder) {
252
+ const paths = categorizedPaths.get(category);
253
+ if (!paths)
254
+ continue;
255
+ (0, cli_1.printVerbose)(`Clearing ${category} caches...`);
256
+ for (const cachePath of paths) {
257
+ // Check if the path is protected
258
+ const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
259
+ if (isProtected) {
260
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
261
+ continue; // Skip this path
262
+ }
263
+ try {
264
+ if (await (0, fs_2.pathExists)(cachePath)) {
265
+ const pathInfo = pathsWithInfo.find((p) => p.path === cachePath);
266
+ (0, cli_1.printVerbose)(`Clearing ${category}: ${cachePath}`);
267
+ if (pathInfo?.description) {
268
+ (0, cli_1.printVerbose)(` Purpose: ${pathInfo.description}`);
269
+ }
270
+ await (0, fs_2.safeRmrf)(cachePath);
271
+ clearedPaths.push(cachePath);
272
+ }
273
+ }
274
+ catch (pathError) {
275
+ (0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
276
+ success = false;
277
+ if (!error) {
278
+ error = `Failed to clear some Gradle cache directories: ${pathError}`;
279
+ }
280
+ }
281
+ }
282
+ }
283
+ // Handle any remaining uncategorized paths
284
+ const remainingPaths = info.paths.filter((p) => !clearedPaths.includes(p));
285
+ for (const cachePath of remainingPaths) {
286
+ // Check if the path is protected
287
+ const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
288
+ if (isProtected) {
289
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
290
+ continue; // Skip this path
291
+ }
292
+ try {
293
+ if (await (0, fs_2.pathExists)(cachePath)) {
294
+ (0, cli_1.printVerbose)(`Clearing remaining cache: ${cachePath}`);
295
+ await (0, fs_2.safeRmrf)(cachePath);
296
+ clearedPaths.push(cachePath);
297
+ }
298
+ }
299
+ catch (pathError) {
300
+ (0, cli_1.printVerbose)(`Failed to clear ${cachePath}: ${pathError}`);
301
+ success = false;
302
+ if (!error) {
303
+ error = `Failed to clear some cache directories: ${pathError}`;
304
+ }
305
+ }
306
+ }
307
+ if (sizeBefore > 0) {
308
+ (0, cli_1.printVerbose)(`Freed space from Gradle cache data`);
309
+ }
310
+ return {
311
+ name: this.name,
312
+ success,
313
+ sizeBefore,
314
+ sizeAfter: 0, // Set to 0 as we don't want to rescan
315
+ error,
316
+ clearedPaths,
317
+ };
318
+ }
319
+ catch (clearError) {
320
+ return {
321
+ name: this.name,
322
+ success: false,
323
+ sizeBefore,
324
+ sizeAfter: sizeBefore,
325
+ error: clearError instanceof Error ? clearError.message : String(clearError),
326
+ clearedPaths: [],
327
+ };
328
+ }
329
+ }
330
+ static create() {
331
+ return new GradleCleaner();
332
+ }
333
+ }
334
+ exports.GradleCleaner = GradleCleaner;
335
+ exports.default = GradleCleaner.create();
336
+ //# sourceMappingURL=gradle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradle.js","sourceRoot":"","sources":["../../src/cleaners/gradle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { CleanerModule, CacheInfo, ClearResult, CacheType } from "../types";
2
+ export declare class CacheManager {
3
+ private cleaners;
4
+ constructor();
5
+ /**
6
+ * Get all available cleaners
7
+ */
8
+ getAllCleaners(): CleanerModule[];
9
+ /**
10
+ * Get cleaners filtered by type
11
+ */
12
+ getCleanersByType(type: CacheType): CleanerModule[];
13
+ /**
14
+ * Get enabled cleaners based on configuration
15
+ */
16
+ getEnabledCleaners(): CleanerModule[];
17
+ /**
18
+ * Get cleaner by name
19
+ */
20
+ getCleaner(name: string): CleanerModule | undefined;
21
+ /**
22
+ * Get cache info for all enabled cleaners
23
+ */
24
+ getAllCacheInfo(): Promise<CacheInfo[]>;
25
+ /**
26
+ * Clean caches for enabled cleaners
27
+ */
28
+ cleanAllCaches(options?: {
29
+ dryRun?: boolean;
30
+ types?: CacheType[];
31
+ exclude?: string[];
32
+ include?: string[];
33
+ subCachesToClear?: Map<string, string[]>;
34
+ }): Promise<ClearResult[]>;
35
+ /**
36
+ * Get total cache sizes by type
37
+ */
38
+ getCacheSizesByType(): Promise<Record<CacheType, number>>;
39
+ /**
40
+ * Get summary statistics
41
+ */
42
+ getSummary(): Promise<{
43
+ totalSize: number;
44
+ totalCleaners: number;
45
+ installedCleaners: number;
46
+ enabledCleaners: number;
47
+ sizesByType: Record<CacheType, number>;
48
+ }>;
49
+ }
50
+ export declare const cacheManager: CacheManager;
51
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cleaners/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAkD5E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA6B;;IAmD7C;;OAEG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;OAEG;IACH,iBAAiB,CAAC,IAAI,EAAE,SAAS,GAAG,aAAa,EAAE;IAInD;;OAEG;IACH,kBAAkB,IAAI,aAAa,EAAE;IAMrC;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAInD;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA8C7C;;OAEG;IACG,cAAc,CAClB,OAAO,GAAE;QACP,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,gBAAgB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACrC,GACL,OAAO,CAAC,WAAW,EAAE,CAAC;IAkGzB;;OAEG;IACG,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAkB/D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;KACxC,CAAC;CAkCH;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.cacheManager = exports.CacheManager = void 0;
7
+ const config_1 = require("../config");
8
+ const cli_1 = require("../utils/cli");
9
+ const minimatch_1 = require("minimatch");
10
+ // Import all cleaner modules
11
+ // Package managers
12
+ const npm_1 = __importDefault(require("./npm"));
13
+ const yarn_1 = __importDefault(require("./yarn"));
14
+ const pnpm_1 = __importDefault(require("./pnpm"));
15
+ const bun_1 = __importDefault(require("./bun"));
16
+ const pip_1 = __importDefault(require("./pip"));
17
+ const brew_1 = __importDefault(require("./brew"));
18
+ const nix_1 = __importDefault(require("./nix"));
19
+ const cargo_1 = __importDefault(require("./cargo"));
20
+ const poetry_1 = __importDefault(require("./poetry"));
21
+ const pipenv_1 = __importDefault(require("./pipenv"));
22
+ const cocoapods_1 = __importDefault(require("./cocoapods"));
23
+ const swiftpm_1 = __importDefault(require("./swiftpm"));
24
+ const nuget_1 = __importDefault(require("./nuget"));
25
+ // Build tools
26
+ const webpack_1 = __importDefault(require("./webpack"));
27
+ const vite_1 = __importDefault(require("./vite"));
28
+ const nx_1 = __importDefault(require("./nx"));
29
+ const turbo_1 = __importDefault(require("./turbo"));
30
+ const flutter_1 = __importDefault(require("./flutter"));
31
+ const nodeGyp_1 = __importDefault(require("./nodeGyp"));
32
+ const goBuild_1 = __importDefault(require("./goBuild"));
33
+ const maven_1 = __importDefault(require("./maven"));
34
+ const playwright_1 = __importDefault(require("./playwright"));
35
+ // IDEs
36
+ const xcode_1 = __importDefault(require("./xcode"));
37
+ const vscode_1 = __importDefault(require("./vscode"));
38
+ const androidstudio_1 = __importDefault(require("./androidstudio"));
39
+ const jetbrains_1 = __importDefault(require("./jetbrains"));
40
+ const windsurf_1 = __importDefault(require("./windsurf"));
41
+ const cursor_1 = __importDefault(require("./cursor"));
42
+ const zed_1 = __importDefault(require("./zed"));
43
+ // Browsers
44
+ const chrome_1 = __importDefault(require("./chrome"));
45
+ const firefox_1 = __importDefault(require("./firefox"));
46
+ // System tools
47
+ const docker_1 = __importDefault(require("./docker"));
48
+ const gradle_1 = __importDefault(require("./gradle"));
49
+ const universalBinary_1 = __importDefault(require("./universalBinary"));
50
+ class CacheManager {
51
+ constructor() {
52
+ this.cleaners = new Map();
53
+ // Register all cleaner modules
54
+ // Package managers
55
+ this.cleaners.set("npm", npm_1.default);
56
+ this.cleaners.set("yarn", yarn_1.default);
57
+ this.cleaners.set("pnpm", pnpm_1.default);
58
+ this.cleaners.set("bun", bun_1.default);
59
+ this.cleaners.set("pip", pip_1.default);
60
+ this.cleaners.set("brew", brew_1.default);
61
+ this.cleaners.set("nix", nix_1.default);
62
+ this.cleaners.set("cargo", cargo_1.default);
63
+ this.cleaners.set("poetry", poetry_1.default);
64
+ this.cleaners.set("pipenv", pipenv_1.default);
65
+ this.cleaners.set("cocoapods", cocoapods_1.default);
66
+ this.cleaners.set("swiftpm", swiftpm_1.default);
67
+ this.cleaners.set("nuget", nuget_1.default);
68
+ // Build tools
69
+ this.cleaners.set("webpack", webpack_1.default);
70
+ this.cleaners.set("vite", vite_1.default);
71
+ this.cleaners.set("nx", nx_1.default);
72
+ this.cleaners.set("turbo", turbo_1.default);
73
+ this.cleaners.set("flutter", flutter_1.default);
74
+ this.cleaners.set("node-gyp", nodeGyp_1.default);
75
+ this.cleaners.set("go-build", goBuild_1.default);
76
+ this.cleaners.set("maven", maven_1.default);
77
+ this.cleaners.set("playwright", playwright_1.default);
78
+ // IDEs and development tools
79
+ this.cleaners.set("xcode", xcode_1.default);
80
+ this.cleaners.set("vscode", vscode_1.default);
81
+ this.cleaners.set("androidstudio", androidstudio_1.default);
82
+ this.cleaners.set("jetbrains", jetbrains_1.default);
83
+ this.cleaners.set("windsurf", windsurf_1.default);
84
+ this.cleaners.set("cursor", cursor_1.default);
85
+ this.cleaners.set("zed", zed_1.default);
86
+ // Browsers
87
+ this.cleaners.set("chrome", chrome_1.default);
88
+ this.cleaners.set("firefox", firefox_1.default);
89
+ // System tools
90
+ this.cleaners.set("docker", docker_1.default);
91
+ this.cleaners.set("gradle", gradle_1.default);
92
+ this.cleaners.set("universal-binary", universalBinary_1.default);
93
+ }
94
+ /**
95
+ * Get all available cleaners
96
+ */
97
+ getAllCleaners() {
98
+ return Array.from(this.cleaners.values());
99
+ }
100
+ /**
101
+ * Get cleaners filtered by type
102
+ */
103
+ getCleanersByType(type) {
104
+ return this.getAllCleaners().filter((cleaner) => cleaner.type === type);
105
+ }
106
+ /**
107
+ * Get enabled cleaners based on configuration
108
+ */
109
+ getEnabledCleaners() {
110
+ return this.getAllCleaners().filter((cleaner) => config_1.config.isToolEnabled(cleaner.name));
111
+ }
112
+ /**
113
+ * Get cleaner by name
114
+ */
115
+ getCleaner(name) {
116
+ return this.cleaners.get(name);
117
+ }
118
+ /**
119
+ * Get cache info for all enabled cleaners
120
+ */
121
+ async getAllCacheInfo() {
122
+ const enabledCleaners = this.getEnabledCleaners();
123
+ const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
124
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Scanning ${enabledCleaners.length} enabled cache types...`);
125
+ // Parallel execution for 10-25x performance improvement
126
+ const scanResults = await Promise.all(enabledCleaners.map(async (cleaner) => {
127
+ try {
128
+ (0, cli_1.printVerbose)(`Checking ${cleaner.name} caches...`);
129
+ const info = await cleaner.getCacheInfo();
130
+ // Check if any of the cache's paths are protected
131
+ const isProtected = info.paths.some((cachePath) => protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true })));
132
+ if (isProtected) {
133
+ (0, cli_1.printVerbose)(`Skipping protected cache: ${cleaner.name}`);
134
+ return null;
135
+ }
136
+ return info;
137
+ }
138
+ catch (error) {
139
+ (0, cli_1.printVerbose)(`Error getting cache info for ${cleaner.name}: ${error}`);
140
+ return {
141
+ name: cleaner.name,
142
+ type: cleaner.type,
143
+ description: cleaner.description,
144
+ paths: [],
145
+ isInstalled: false,
146
+ size: 0,
147
+ };
148
+ }
149
+ }));
150
+ // Filter out null results (protected caches)
151
+ return scanResults.filter((result) => result !== null);
152
+ }
153
+ /**
154
+ * Clean caches for enabled cleaners
155
+ */
156
+ async cleanAllCaches(options = {}) {
157
+ let cleaners = this.getEnabledCleaners();
158
+ const allCacheInfos = await this.getAllCacheInfo(); // Get all cache info once
159
+ const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
160
+ // Filter by types if specified
161
+ if (options.types && options.types.length > 0) {
162
+ cleaners = cleaners.filter((cleaner) => options.types.includes(cleaner.type));
163
+ }
164
+ // Include specific tools if specified (this takes precedence over exclude)
165
+ if (options.include && options.include.length > 0) {
166
+ cleaners = cleaners.filter((cleaner) => options.include.includes(cleaner.name));
167
+ }
168
+ // Exclude specific tools if specified
169
+ if (options.exclude && options.exclude.length > 0) {
170
+ cleaners = cleaners.filter((cleaner) => !options.exclude.includes(cleaner.name));
171
+ }
172
+ const results = [];
173
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Cleaning ${cleaners.length} cache types...`);
174
+ for (const cleaner of cleaners) {
175
+ try {
176
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Processing ${cleaner.name}...`);
177
+ const cacheInfoForCleaner = allCacheInfos.find((info) => info.name === cleaner.name); // Find corresponding info
178
+ let result;
179
+ if (options.subCachesToClear &&
180
+ options.subCachesToClear.has(cleaner.name)) {
181
+ const categoryIds = options.subCachesToClear.get(cleaner.name);
182
+ if (cleaner.clearByCategory) {
183
+ result = await cleaner.clearByCategory(categoryIds, options.dryRun, cacheInfoForCleaner, protectedPaths);
184
+ }
185
+ else {
186
+ // Fallback if clearByCategory is not implemented for this cleaner
187
+ (0, cli_1.printVerbose)(`Warning: ${cleaner.name} does not support granular clearing by category. Clearing all.`);
188
+ result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
189
+ }
190
+ }
191
+ else {
192
+ result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
193
+ }
194
+ results.push(result);
195
+ if (result.success && !options.dryRun) {
196
+ const savedMB = ((result.sizeBefore || 0) - (result.sizeAfter || 0)) /
197
+ (1024 * 1024);
198
+ if (savedMB > 0) {
199
+ (0, cli_1.printVerbose)(`${cli_1.symbols.bubbles} ${cleaner.name}: Freed ${savedMB.toFixed(1)} MB`);
200
+ }
201
+ }
202
+ }
203
+ catch (error) {
204
+ (0, cli_1.printVerbose)(`Error cleaning ${cleaner.name}: ${error}`);
205
+ results.push({
206
+ name: cleaner.name,
207
+ success: false,
208
+ error: error instanceof Error ? error.message : String(error),
209
+ clearedPaths: [],
210
+ sizeBefore: 0,
211
+ sizeAfter: 0,
212
+ });
213
+ }
214
+ }
215
+ return results;
216
+ }
217
+ /**
218
+ * Get total cache sizes by type
219
+ */
220
+ async getCacheSizesByType() {
221
+ const allCacheInfo = await this.getAllCacheInfo();
222
+ const sizesByType = {
223
+ "package-manager": 0,
224
+ "build-tool": 0,
225
+ browser: 0,
226
+ ide: 0,
227
+ system: 0,
228
+ other: 0,
229
+ };
230
+ for (const info of allCacheInfo) {
231
+ sizesByType[info.type] += info.size || 0;
232
+ }
233
+ return sizesByType;
234
+ }
235
+ /**
236
+ * Get summary statistics
237
+ */
238
+ async getSummary() {
239
+ const allCacheInfo = await this.getAllCacheInfo();
240
+ // Calculate sizes by type from the same data to avoid double scanning
241
+ const sizesByType = {
242
+ "package-manager": 0,
243
+ "build-tool": 0,
244
+ browser: 0,
245
+ ide: 0,
246
+ system: 0,
247
+ other: 0,
248
+ };
249
+ for (const info of allCacheInfo) {
250
+ sizesByType[info.type] += info.size || 0;
251
+ }
252
+ const totalSize = allCacheInfo.reduce((sum, info) => sum + (info.size || 0), 0);
253
+ const installedCleaners = allCacheInfo.filter((info) => info.isInstalled).length;
254
+ const enabledCleaners = this.getEnabledCleaners().length;
255
+ return {
256
+ totalSize,
257
+ totalCleaners: this.getAllCleaners().length,
258
+ installedCleaners,
259
+ enabledCleaners,
260
+ sizesByType,
261
+ };
262
+ }
263
+ }
264
+ exports.CacheManager = CacheManager;
265
+ // Export singleton instance
266
+ exports.cacheManager = new CacheManager();
267
+ //# sourceMappingURL=index.js.map