squeaky-clean 0.1.1

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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +465 -0
  3. package/dist/cleaners/BaseCleaner.d.ts +57 -0
  4. package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
  5. package/dist/cleaners/BaseCleaner.js +299 -0
  6. package/dist/cleaners/BaseCleaner.js.map +1 -0
  7. package/dist/cleaners/CleanerRegistry.d.ts +65 -0
  8. package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
  9. package/dist/cleaners/CleanerRegistry.js +112 -0
  10. package/dist/cleaners/CleanerRegistry.js.map +1 -0
  11. package/dist/cleaners/androidstudio.d.ts +16 -0
  12. package/dist/cleaners/androidstudio.d.ts.map +1 -0
  13. package/dist/cleaners/androidstudio.js +375 -0
  14. package/dist/cleaners/androidstudio.js.map +1 -0
  15. package/dist/cleaners/brew.d.ts +4 -0
  16. package/dist/cleaners/brew.d.ts.map +1 -0
  17. package/dist/cleaners/brew.js +197 -0
  18. package/dist/cleaners/brew.js.map +1 -0
  19. package/dist/cleaners/brewEnhanced.d.ts +18 -0
  20. package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
  21. package/dist/cleaners/brewEnhanced.js +255 -0
  22. package/dist/cleaners/brewEnhanced.js.map +1 -0
  23. package/dist/cleaners/bun.d.ts +14 -0
  24. package/dist/cleaners/bun.d.ts.map +1 -0
  25. package/dist/cleaners/bun.js +207 -0
  26. package/dist/cleaners/bun.js.map +1 -0
  27. package/dist/cleaners/chrome.d.ts +14 -0
  28. package/dist/cleaners/chrome.d.ts.map +1 -0
  29. package/dist/cleaners/chrome.js +250 -0
  30. package/dist/cleaners/chrome.js.map +1 -0
  31. package/dist/cleaners/docker.d.ts +35 -0
  32. package/dist/cleaners/docker.d.ts.map +1 -0
  33. package/dist/cleaners/docker.js +285 -0
  34. package/dist/cleaners/docker.js.map +1 -0
  35. package/dist/cleaners/firefox.d.ts +15 -0
  36. package/dist/cleaners/firefox.d.ts.map +1 -0
  37. package/dist/cleaners/firefox.js +281 -0
  38. package/dist/cleaners/firefox.js.map +1 -0
  39. package/dist/cleaners/flutter.d.ts +18 -0
  40. package/dist/cleaners/flutter.d.ts.map +1 -0
  41. package/dist/cleaners/flutter.js +354 -0
  42. package/dist/cleaners/flutter.js.map +1 -0
  43. package/dist/cleaners/goBuild.d.ts +18 -0
  44. package/dist/cleaners/goBuild.d.ts.map +1 -0
  45. package/dist/cleaners/goBuild.js +196 -0
  46. package/dist/cleaners/goBuild.js.map +1 -0
  47. package/dist/cleaners/gradle.d.ts +14 -0
  48. package/dist/cleaners/gradle.d.ts.map +1 -0
  49. package/dist/cleaners/gradle.js +336 -0
  50. package/dist/cleaners/gradle.js.map +1 -0
  51. package/dist/cleaners/index.d.ts +51 -0
  52. package/dist/cleaners/index.d.ts.map +1 -0
  53. package/dist/cleaners/index.js +247 -0
  54. package/dist/cleaners/index.js.map +1 -0
  55. package/dist/cleaners/jetbrains.d.ts +18 -0
  56. package/dist/cleaners/jetbrains.d.ts.map +1 -0
  57. package/dist/cleaners/jetbrains.js +441 -0
  58. package/dist/cleaners/jetbrains.js.map +1 -0
  59. package/dist/cleaners/nix.d.ts +4 -0
  60. package/dist/cleaners/nix.d.ts.map +1 -0
  61. package/dist/cleaners/nix.js +227 -0
  62. package/dist/cleaners/nix.js.map +1 -0
  63. package/dist/cleaners/nodeGyp.d.ts +14 -0
  64. package/dist/cleaners/nodeGyp.d.ts.map +1 -0
  65. package/dist/cleaners/nodeGyp.js +157 -0
  66. package/dist/cleaners/nodeGyp.js.map +1 -0
  67. package/dist/cleaners/npm.d.ts +14 -0
  68. package/dist/cleaners/npm.d.ts.map +1 -0
  69. package/dist/cleaners/npm.js +198 -0
  70. package/dist/cleaners/npm.js.map +1 -0
  71. package/dist/cleaners/npmEnhanced.d.ts +19 -0
  72. package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
  73. package/dist/cleaners/npmEnhanced.js +336 -0
  74. package/dist/cleaners/npmEnhanced.js.map +1 -0
  75. package/dist/cleaners/nx.d.ts +18 -0
  76. package/dist/cleaners/nx.d.ts.map +1 -0
  77. package/dist/cleaners/nx.js +308 -0
  78. package/dist/cleaners/nx.js.map +1 -0
  79. package/dist/cleaners/pip.d.ts +19 -0
  80. package/dist/cleaners/pip.d.ts.map +1 -0
  81. package/dist/cleaners/pip.js +334 -0
  82. package/dist/cleaners/pip.js.map +1 -0
  83. package/dist/cleaners/pnpm.d.ts +14 -0
  84. package/dist/cleaners/pnpm.d.ts.map +1 -0
  85. package/dist/cleaners/pnpm.js +209 -0
  86. package/dist/cleaners/pnpm.js.map +1 -0
  87. package/dist/cleaners/turbo.d.ts +18 -0
  88. package/dist/cleaners/turbo.d.ts.map +1 -0
  89. package/dist/cleaners/turbo.js +325 -0
  90. package/dist/cleaners/turbo.js.map +1 -0
  91. package/dist/cleaners/vite.d.ts +17 -0
  92. package/dist/cleaners/vite.d.ts.map +1 -0
  93. package/dist/cleaners/vite.js +274 -0
  94. package/dist/cleaners/vite.js.map +1 -0
  95. package/dist/cleaners/vscode.d.ts +14 -0
  96. package/dist/cleaners/vscode.d.ts.map +1 -0
  97. package/dist/cleaners/vscode.js +354 -0
  98. package/dist/cleaners/vscode.js.map +1 -0
  99. package/dist/cleaners/webpack.d.ts +17 -0
  100. package/dist/cleaners/webpack.d.ts.map +1 -0
  101. package/dist/cleaners/webpack.js +263 -0
  102. package/dist/cleaners/webpack.js.map +1 -0
  103. package/dist/cleaners/xcode.d.ts +14 -0
  104. package/dist/cleaners/xcode.d.ts.map +1 -0
  105. package/dist/cleaners/xcode.js +348 -0
  106. package/dist/cleaners/xcode.js.map +1 -0
  107. package/dist/cleaners/yarn.d.ts +16 -0
  108. package/dist/cleaners/yarn.d.ts.map +1 -0
  109. package/dist/cleaners/yarn.js +266 -0
  110. package/dist/cleaners/yarn.js.map +1 -0
  111. package/dist/cli.d.ts +3 -0
  112. package/dist/cli.d.ts.map +1 -0
  113. package/dist/cli.js +346 -0
  114. package/dist/cli.js.map +1 -0
  115. package/dist/commands/auto.d.ts +8 -0
  116. package/dist/commands/auto.d.ts.map +1 -0
  117. package/dist/commands/auto.js +224 -0
  118. package/dist/commands/auto.js.map +1 -0
  119. package/dist/commands/categories.d.ts +8 -0
  120. package/dist/commands/categories.d.ts.map +1 -0
  121. package/dist/commands/categories.js +133 -0
  122. package/dist/commands/categories.js.map +1 -0
  123. package/dist/commands/clean.d.ts +3 -0
  124. package/dist/commands/clean.d.ts.map +1 -0
  125. package/dist/commands/clean.js +149 -0
  126. package/dist/commands/clean.js.map +1 -0
  127. package/dist/commands/config.d.ts +14 -0
  128. package/dist/commands/config.d.ts.map +1 -0
  129. package/dist/commands/config.js +445 -0
  130. package/dist/commands/config.js.map +1 -0
  131. package/dist/commands/configDoctor.d.ts +26 -0
  132. package/dist/commands/configDoctor.d.ts.map +1 -0
  133. package/dist/commands/configDoctor.js +60 -0
  134. package/dist/commands/configDoctor.js.map +1 -0
  135. package/dist/commands/doctor.d.ts +2 -0
  136. package/dist/commands/doctor.d.ts.map +1 -0
  137. package/dist/commands/doctor.js +141 -0
  138. package/dist/commands/doctor.js.map +1 -0
  139. package/dist/commands/emojis.d.ts +2 -0
  140. package/dist/commands/emojis.d.ts.map +1 -0
  141. package/dist/commands/emojis.js +28 -0
  142. package/dist/commands/emojis.js.map +1 -0
  143. package/dist/commands/interactive.d.ts +3 -0
  144. package/dist/commands/interactive.d.ts.map +1 -0
  145. package/dist/commands/interactive.js +284 -0
  146. package/dist/commands/interactive.js.map +1 -0
  147. package/dist/commands/interactiveEnhanced.d.ts +4 -0
  148. package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
  149. package/dist/commands/interactiveEnhanced.js +460 -0
  150. package/dist/commands/interactiveEnhanced.js.map +1 -0
  151. package/dist/commands/list.d.ts +2 -0
  152. package/dist/commands/list.d.ts.map +1 -0
  153. package/dist/commands/list.js +68 -0
  154. package/dist/commands/list.js.map +1 -0
  155. package/dist/commands/sizes.d.ts +2 -0
  156. package/dist/commands/sizes.d.ts.map +1 -0
  157. package/dist/commands/sizes.js +87 -0
  158. package/dist/commands/sizes.js.map +1 -0
  159. package/dist/config/index.d.ts +26 -0
  160. package/dist/config/index.d.ts.map +1 -0
  161. package/dist/config/index.js +228 -0
  162. package/dist/config/index.js.map +1 -0
  163. package/dist/config/loadConfig.d.ts +7 -0
  164. package/dist/config/loadConfig.d.ts.map +1 -0
  165. package/dist/config/loadConfig.js +103 -0
  166. package/dist/config/loadConfig.js.map +1 -0
  167. package/dist/config/migrateConfig.d.ts +56 -0
  168. package/dist/config/migrateConfig.d.ts.map +1 -0
  169. package/dist/config/migrateConfig.js +102 -0
  170. package/dist/config/migrateConfig.js.map +1 -0
  171. package/dist/plugins/discovery.d.ts +6 -0
  172. package/dist/plugins/discovery.d.ts.map +1 -0
  173. package/dist/plugins/discovery.js +64 -0
  174. package/dist/plugins/discovery.js.map +1 -0
  175. package/dist/profiles/index.d.ts +61 -0
  176. package/dist/profiles/index.d.ts.map +1 -0
  177. package/dist/profiles/index.js +361 -0
  178. package/dist/profiles/index.js.map +1 -0
  179. package/dist/types/index.d.ts +161 -0
  180. package/dist/types/index.d.ts.map +1 -0
  181. package/dist/types/index.js +3 -0
  182. package/dist/types/index.js.map +1 -0
  183. package/dist/utils/cli.d.ts +44 -0
  184. package/dist/utils/cli.d.ts.map +1 -0
  185. package/dist/utils/cli.js +407 -0
  186. package/dist/utils/cli.js.map +1 -0
  187. package/dist/utils/fs.d.ts +15 -0
  188. package/dist/utils/fs.d.ts.map +1 -0
  189. package/dist/utils/fs.js +218 -0
  190. package/dist/utils/fs.js.map +1 -0
  191. package/package.json +122 -0
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const path = __importStar(require("path"));
37
+ const os = __importStar(require("os"));
38
+ const fs_1 = require("../utils/fs");
39
+ const cli_1 = require("../utils/cli");
40
+ const minimatch_1 = require("minimatch");
41
+ class ChromeCleaner {
42
+ constructor() {
43
+ this.name = "chrome";
44
+ this.type = "browser";
45
+ this.description = "Chrome DevTools cache, service worker cache, and development storage";
46
+ }
47
+ async findChromeInstallation() {
48
+ const platform = os.platform();
49
+ if (platform === "darwin") {
50
+ // macOS
51
+ const macPaths = [
52
+ "/Applications/Google Chrome.app",
53
+ "/Applications/Chrome.app",
54
+ ];
55
+ for (const chromePath of macPaths) {
56
+ if (await (0, fs_1.pathExists)(chromePath)) {
57
+ return chromePath;
58
+ }
59
+ }
60
+ }
61
+ else if (platform === "win32") {
62
+ // Windows
63
+ const windowsPaths = [
64
+ "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe",
65
+ "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe",
66
+ path.join(os.homedir(), "AppData", "Local", "Google", "Chrome", "Application", "chrome.exe"),
67
+ ];
68
+ for (const chromePath of windowsPaths) {
69
+ if (await (0, fs_1.pathExists)(chromePath)) {
70
+ return chromePath;
71
+ }
72
+ }
73
+ }
74
+ else {
75
+ // Linux
76
+ const linuxPaths = [
77
+ "/usr/bin/google-chrome",
78
+ "/usr/bin/google-chrome-stable",
79
+ "/usr/bin/chrome",
80
+ "/snap/bin/chromium",
81
+ ];
82
+ for (const chromePath of linuxPaths) {
83
+ if (await (0, fs_1.pathExists)(chromePath)) {
84
+ return chromePath;
85
+ }
86
+ }
87
+ }
88
+ return null;
89
+ }
90
+ async getChromeCachePaths() {
91
+ const paths = [];
92
+ const homeDir = os.homedir();
93
+ const platform = os.platform();
94
+ // Platform-specific Chrome cache paths
95
+ if (platform === "darwin") {
96
+ // macOS Chrome paths
97
+ const macPaths = [
98
+ path.join(homeDir, "Library", "Caches", "Google", "Chrome"),
99
+ path.join(homeDir, "Library", "Application Support", "Google", "Chrome", "Default", "Service Worker"),
100
+ path.join(homeDir, "Library", "Application Support", "Google", "Chrome", "Default", "Cache"),
101
+ path.join(homeDir, "Library", "Application Support", "Google", "Chrome", "Default", "Code Cache"),
102
+ path.join(homeDir, "Library", "Application Support", "Google", "Chrome", "Default", "GPUCache"),
103
+ path.join(homeDir, "Library", "Application Support", "Google", "Chrome", "ShaderCache"),
104
+ ];
105
+ for (const cachePath of macPaths) {
106
+ if (await (0, fs_1.pathExists)(cachePath)) {
107
+ paths.push(cachePath);
108
+ }
109
+ }
110
+ }
111
+ else if (platform === "win32") {
112
+ // Windows Chrome paths
113
+ const windowsPaths = [
114
+ path.join(homeDir, "AppData", "Local", "Google", "Chrome", "User Data", "Default", "Cache"),
115
+ path.join(homeDir, "AppData", "Local", "Google", "Chrome", "User Data", "Default", "Code Cache"),
116
+ path.join(homeDir, "AppData", "Local", "Google", "Chrome", "User Data", "Default", "Service Worker"),
117
+ path.join(homeDir, "AppData", "Local", "Google", "Chrome", "User Data", "Default", "GPUCache"),
118
+ path.join(homeDir, "AppData", "Local", "Google", "Chrome", "User Data", "ShaderCache"),
119
+ ];
120
+ for (const cachePath of windowsPaths) {
121
+ if (await (0, fs_1.pathExists)(cachePath)) {
122
+ paths.push(cachePath);
123
+ }
124
+ }
125
+ }
126
+ else {
127
+ // Linux Chrome paths
128
+ const linuxPaths = [
129
+ path.join(homeDir, ".cache", "google-chrome"),
130
+ path.join(homeDir, ".config", "google-chrome", "Default", "Service Worker"),
131
+ path.join(homeDir, ".config", "google-chrome", "Default", "Cache"),
132
+ path.join(homeDir, ".config", "google-chrome", "Default", "Code Cache"),
133
+ path.join(homeDir, ".config", "google-chrome", "Default", "GPUCache"),
134
+ path.join(homeDir, ".config", "google-chrome", "ShaderCache"),
135
+ // Also check for Chromium
136
+ path.join(homeDir, ".cache", "chromium"),
137
+ path.join(homeDir, ".config", "chromium", "Default", "Service Worker"),
138
+ path.join(homeDir, ".config", "chromium", "Default", "Cache"),
139
+ ];
140
+ for (const cachePath of linuxPaths) {
141
+ if (await (0, fs_1.pathExists)(cachePath)) {
142
+ paths.push(cachePath);
143
+ }
144
+ }
145
+ }
146
+ return [...new Set(paths)]; // Remove duplicates
147
+ }
148
+ async isAvailable() {
149
+ // Check if Chrome is installed
150
+ const chromeInstallation = await this.findChromeInstallation();
151
+ if (chromeInstallation) {
152
+ (0, cli_1.printVerbose)(`Found Chrome at ${chromeInstallation}`);
153
+ return true;
154
+ }
155
+ // Check if Chrome cache directories exist
156
+ const cachePaths = await this.getChromeCachePaths();
157
+ if (cachePaths.length > 0) {
158
+ (0, cli_1.printVerbose)(`Found ${cachePaths.length} Chrome cache directories`);
159
+ return true;
160
+ }
161
+ return false;
162
+ }
163
+ async getCacheInfo() {
164
+ const isInstalled = await this.isAvailable();
165
+ if (!isInstalled) {
166
+ return {
167
+ name: this.name,
168
+ type: this.type,
169
+ description: this.description,
170
+ paths: [],
171
+ isInstalled: false,
172
+ size: 0,
173
+ };
174
+ }
175
+ const cachePaths = await this.getChromeCachePaths();
176
+ let totalSize = 0;
177
+ const validPaths = [];
178
+ for (const cachePath of cachePaths) {
179
+ try {
180
+ const size = await (0, fs_1.getDirectorySize)(cachePath, true); // Use estimated size for large dirs
181
+ totalSize += size;
182
+ validPaths.push(cachePath);
183
+ (0, cli_1.printVerbose)(`${cli_1.symbols.folder} ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
184
+ }
185
+ catch (error) {
186
+ (0, cli_1.printVerbose)(`Error calculating size for ${cachePath}: ${error}`);
187
+ }
188
+ }
189
+ return {
190
+ name: this.name,
191
+ type: this.type,
192
+ description: this.description,
193
+ paths: validPaths,
194
+ isInstalled: true,
195
+ size: totalSize,
196
+ };
197
+ }
198
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
199
+ const info = cacheInfo || (await this.getCacheInfo());
200
+ if (!info.isInstalled) {
201
+ return {
202
+ name: this.name,
203
+ success: false,
204
+ error: "Chrome is not available",
205
+ clearedPaths: [],
206
+ sizeBefore: 0,
207
+ sizeAfter: 0,
208
+ };
209
+ }
210
+ const sizeBefore = info.size || 0;
211
+ const clearedPaths = [];
212
+ let errors = [];
213
+ // Warning: Chrome should be closed before clearing cache
214
+ (0, cli_1.printVerbose)(`${cli_1.symbols.warning} Note: Chrome should be closed before clearing cache for best results`);
215
+ for (const cachePath of info.paths) {
216
+ // Check if the path is protected
217
+ const isProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true }));
218
+ if (isProtected) {
219
+ (0, cli_1.printVerbose)(`Skipping protected path: ${cachePath}`);
220
+ continue; // Skip this path
221
+ }
222
+ try {
223
+ if (dryRun) {
224
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Would clear: ${cachePath}`);
225
+ clearedPaths.push(cachePath);
226
+ }
227
+ else {
228
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Clearing: ${cachePath}`);
229
+ await (0, fs_1.safeRmrf)(cachePath);
230
+ clearedPaths.push(cachePath);
231
+ }
232
+ }
233
+ catch (error) {
234
+ const errorMsg = `Failed to clear ${cachePath}: ${error}`;
235
+ errors.push(errorMsg);
236
+ (0, cli_1.printVerbose)(errorMsg);
237
+ }
238
+ }
239
+ return {
240
+ name: this.name,
241
+ success: errors.length === 0,
242
+ sizeBefore,
243
+ sizeAfter: 0, // Set to 0 as we don't want to rescan
244
+ error: errors.length > 0 ? errors.join("; ") : undefined,
245
+ clearedPaths,
246
+ };
247
+ }
248
+ }
249
+ exports.default = new ChromeCleaner();
250
+ //# sourceMappingURL=chrome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/cleaners/chrome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import { CacheInfo, ClearResult, CleanerModule, CacheSelectionCriteria } from "../types";
2
+ export declare class DockerCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "system";
5
+ description: string;
6
+ isAvailable(): Promise<boolean>;
7
+ getDockerSystemInfo(): Promise<{
8
+ images: {
9
+ count: number;
10
+ size: number;
11
+ };
12
+ containers: {
13
+ count: number;
14
+ size: number;
15
+ };
16
+ volumes: {
17
+ count: number;
18
+ size: number;
19
+ };
20
+ buildCache: {
21
+ count: number;
22
+ size: number;
23
+ };
24
+ networks: {
25
+ count: number;
26
+ };
27
+ }>;
28
+ private parseDockerSize;
29
+ getCacheInfo(): Promise<CacheInfo>;
30
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
31
+ static create(): DockerCleaner;
32
+ }
33
+ declare const _default: DockerCleaner;
34
+ export default _default;
35
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/cleaners/docker.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAIlB,qBAAa,aAAc,YAAW,aAAa;IACjD,IAAI,SAAY;IAChB,IAAI,EAAG,QAAQ,CAAU;IACzB,WAAW,SAAmE;IAExE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAyB/B,mBAAmB,IAAI,OAAO,CAAC;QACnC,MAAM,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACzC,UAAU,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,QAAQ,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B,CAAC;IAiEF,OAAO,CAAC,eAAe;IAqBjB,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAqElC,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;IA0IvB,MAAM,CAAC,MAAM,IAAI,aAAa;CAG/B;;AAED,wBAAsC"}
@@ -0,0 +1,285 @@
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.DockerCleaner = void 0;
7
+ const execa_1 = __importDefault(require("execa"));
8
+ const cli_1 = require("../utils/cli");
9
+ const minimatch_1 = require("minimatch");
10
+ class DockerCleaner {
11
+ constructor() {
12
+ this.name = "docker";
13
+ this.type = "system";
14
+ this.description = "Docker images, containers, volumes, networks, and build cache";
15
+ }
16
+ async isAvailable() {
17
+ try {
18
+ (0, cli_1.printVerbose)("Checking if Docker is installed and running...");
19
+ const result = await (0, execa_1.default)("docker", ["version", "--format", "{{.Server.Version}}"], { timeout: 10000 });
20
+ if (result.exitCode === 0 && result.stdout) {
21
+ (0, cli_1.printVerbose)(`Found Docker server version: ${result.stdout.trim()}`);
22
+ return true;
23
+ }
24
+ return false;
25
+ }
26
+ catch (error) {
27
+ // Docker might be installed but not running
28
+ try {
29
+ await (0, execa_1.default)("docker", ["--version"], { timeout: 5000 });
30
+ (0, cli_1.printVerbose)("Docker is installed but server might not be running");
31
+ return true;
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ }
38
+ async getDockerSystemInfo() {
39
+ const info = {
40
+ images: { count: 0, size: 0 },
41
+ containers: { count: 0, size: 0 },
42
+ volumes: { count: 0, size: 0 },
43
+ buildCache: { count: 0, size: 0 },
44
+ networks: { count: 0 },
45
+ };
46
+ try {
47
+ // Get system df info (most comprehensive)
48
+ const systemDf = await (0, execa_1.default)("docker", [
49
+ "system",
50
+ "df",
51
+ "--format",
52
+ "table {{.Type}}\\t{{.TotalCount}}\\t{{.Size}}\\t{{.Reclaimable}}",
53
+ ], { timeout: 30000 });
54
+ const lines = systemDf.stdout.split("\n").slice(1); // Skip header
55
+ for (const line of lines) {
56
+ if (!line.trim())
57
+ continue;
58
+ const parts = line.split("\t").map((s) => s.trim());
59
+ if (parts.length >= 4) {
60
+ const [type, totalCount, size, reclaimable] = parts;
61
+ const count = parseInt(totalCount) || 0;
62
+ const sizeBytes = this.parseDockerSize(size);
63
+ const reclaimableBytes = this.parseDockerSize(reclaimable);
64
+ switch (type.toLowerCase()) {
65
+ case "images":
66
+ info.images = { count, size: reclaimableBytes || sizeBytes };
67
+ break;
68
+ case "containers":
69
+ info.containers = { count, size: reclaimableBytes || sizeBytes };
70
+ break;
71
+ case "local volumes":
72
+ info.volumes = { count, size: reclaimableBytes || sizeBytes };
73
+ break;
74
+ case "build cache":
75
+ info.buildCache = { count, size: reclaimableBytes || sizeBytes };
76
+ break;
77
+ }
78
+ }
79
+ }
80
+ // Get networks count separately
81
+ const networks = await (0, execa_1.default)("docker", ["network", "ls", "--filter", "type=custom", "--format", "{{.ID}}"], { timeout: 10000 });
82
+ info.networks.count = networks.stdout
83
+ .split("\n")
84
+ .filter((line) => line.trim()).length;
85
+ }
86
+ catch (error) {
87
+ (0, cli_1.printVerbose)(`Error getting Docker system info: ${error}`);
88
+ }
89
+ return info;
90
+ }
91
+ parseDockerSize(sizeStr) {
92
+ if (!sizeStr || sizeStr === "0B" || sizeStr === "--")
93
+ return 0;
94
+ const units = {
95
+ B: 1,
96
+ KB: 1024,
97
+ MB: 1024 * 1024,
98
+ GB: 1024 * 1024 * 1024,
99
+ TB: 1024 * 1024 * 1024 * 1024,
100
+ };
101
+ const match = sizeStr.match(/^([\d.]+)\s*([A-Z]{1,2})$/);
102
+ if (match) {
103
+ const [, value, unit] = match;
104
+ const multiplier = units[unit] || 1;
105
+ return parseFloat(value) * multiplier;
106
+ }
107
+ return 0;
108
+ }
109
+ async getCacheInfo() {
110
+ const isInstalled = await this.isAvailable();
111
+ if (!isInstalled) {
112
+ return {
113
+ name: this.name,
114
+ type: this.type,
115
+ description: this.description,
116
+ paths: [],
117
+ isInstalled: false,
118
+ size: 0,
119
+ };
120
+ }
121
+ try {
122
+ const systemInfo = await this.getDockerSystemInfo();
123
+ const totalSize = systemInfo.images.size +
124
+ systemInfo.containers.size +
125
+ systemInfo.volumes.size +
126
+ systemInfo.buildCache.size;
127
+ const totalItems = systemInfo.images.count +
128
+ systemInfo.containers.count +
129
+ systemInfo.volumes.count +
130
+ systemInfo.buildCache.count +
131
+ systemInfo.networks.count;
132
+ (0, cli_1.printVerbose)("=== Docker System Summary ===");
133
+ (0, cli_1.printVerbose)(`Images: ${systemInfo.images.count} (${(systemInfo.images.size / (1024 * 1024)).toFixed(1)} MB)`);
134
+ (0, cli_1.printVerbose)(`Containers: ${systemInfo.containers.count} (${(systemInfo.containers.size / (1024 * 1024)).toFixed(1)} MB)`);
135
+ (0, cli_1.printVerbose)(`Volumes: ${systemInfo.volumes.count} (${(systemInfo.volumes.size / (1024 * 1024)).toFixed(1)} MB)`);
136
+ (0, cli_1.printVerbose)(`Build Cache: ${systemInfo.buildCache.count} (${(systemInfo.buildCache.size / (1024 * 1024)).toFixed(1)} MB)`);
137
+ (0, cli_1.printVerbose)(`Networks: ${systemInfo.networks.count}`);
138
+ (0, cli_1.printVerbose)(`Total reclaimable: ${(totalSize / (1024 * 1024)).toFixed(1)} MB`);
139
+ return {
140
+ name: this.name,
141
+ type: this.type,
142
+ description: this.description,
143
+ paths: [`Docker System (${totalItems} items)`], // Conceptual path for display
144
+ isInstalled,
145
+ size: totalSize,
146
+ };
147
+ }
148
+ catch (error) {
149
+ (0, cli_1.printVerbose)(`Error getting Docker cache info: ${error}`);
150
+ return {
151
+ name: this.name,
152
+ type: this.type,
153
+ description: this.description,
154
+ paths: [],
155
+ isInstalled,
156
+ size: 0,
157
+ };
158
+ }
159
+ }
160
+ async clear(dryRun = false, _criteria, cacheInfo, protectedPaths = []) {
161
+ const info = cacheInfo || (await this.getCacheInfo());
162
+ const sizeBefore = info.size || 0;
163
+ let success = true;
164
+ let error;
165
+ const clearedItems = [];
166
+ if (!info.isInstalled) {
167
+ return {
168
+ name: this.name,
169
+ success: false,
170
+ error: "Docker is not installed or running",
171
+ clearedPaths: [],
172
+ sizeBefore: 0,
173
+ sizeAfter: 0,
174
+ };
175
+ }
176
+ if (sizeBefore === 0) {
177
+ (0, cli_1.printVerbose)("No Docker items to clean");
178
+ return {
179
+ name: this.name,
180
+ success: true,
181
+ clearedPaths: [],
182
+ sizeBefore: 0,
183
+ sizeAfter: 0,
184
+ };
185
+ }
186
+ // Check if Docker system is protected
187
+ const isDockerSystemProtected = protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)("Docker System", protectedPattern, { dot: true }) || // Check against conceptual name
188
+ (0, minimatch_1.minimatch)("/var/lib/docker", protectedPattern, { dot: true }) || // Common Docker root
189
+ (0, minimatch_1.minimatch)("/var/lib/docker/*", protectedPattern, { dot: true }));
190
+ if (isDockerSystemProtected) {
191
+ (0, cli_1.printVerbose)(`Skipping protected Docker system cleanup.`);
192
+ return {
193
+ name: this.name,
194
+ success: true,
195
+ clearedPaths: [],
196
+ sizeBefore,
197
+ sizeAfter: sizeBefore, // No change
198
+ error: "Docker system is protected",
199
+ };
200
+ }
201
+ try {
202
+ if (dryRun) {
203
+ (0, cli_1.printVerbose)("[DRY RUN] Would clean Docker system with the following:");
204
+ (0, cli_1.printVerbose)(" • docker system prune -af --volumes");
205
+ (0, cli_1.printVerbose)(" • docker builder prune -af");
206
+ (0, cli_1.printVerbose)(" This would remove:");
207
+ (0, cli_1.printVerbose)(" - All stopped containers");
208
+ (0, cli_1.printVerbose)(" - All networks not used by at least one container");
209
+ (0, cli_1.printVerbose)(" - All images without at least one container associated to them");
210
+ (0, cli_1.printVerbose)(" - All build cache");
211
+ (0, cli_1.printVerbose)(" - All anonymous volumes not used by at least one container");
212
+ return {
213
+ name: this.name,
214
+ success: true,
215
+ sizeBefore,
216
+ sizeAfter: sizeBefore, // No change in dry run
217
+ clearedPaths: ["Docker system (dry run)"],
218
+ };
219
+ }
220
+ (0, cli_1.printVerbose)("Running Docker system cleanup...");
221
+ // Clean up system: containers, networks, images, and volumes
222
+ try {
223
+ (0, cli_1.printVerbose)("Running: docker system prune -af --volumes");
224
+ const systemPrune = await (0, execa_1.default)("docker", [
225
+ "system",
226
+ "prune",
227
+ "-af",
228
+ "--volumes",
229
+ ]);
230
+ if (systemPrune.stdout) {
231
+ (0, cli_1.printVerbose)(`System prune output: ${systemPrune.stdout}`);
232
+ }
233
+ clearedItems.push("System resources (containers, networks, images, volumes)");
234
+ }
235
+ catch (systemError) {
236
+ (0, cli_1.printVerbose)(`System prune failed: ${systemError}`);
237
+ error = `System prune failed: ${systemError}`;
238
+ success = false;
239
+ }
240
+ // Clean up build cache separately for thoroughness
241
+ try {
242
+ (0, cli_1.printVerbose)("Running: docker builder prune -af");
243
+ const builderPrune = await (0, execa_1.default)("docker", ["builder", "prune", "-af"]);
244
+ if (builderPrune.stdout) {
245
+ (0, cli_1.printVerbose)(`Builder prune output: ${builderPrune.stdout}`);
246
+ }
247
+ clearedItems.push("Build cache");
248
+ }
249
+ catch (builderError) {
250
+ (0, cli_1.printVerbose)(`Builder prune failed: ${builderError}`);
251
+ if (!error) {
252
+ error = `Builder prune failed: ${builderError}`;
253
+ }
254
+ success = false;
255
+ }
256
+ if (sizeBefore > 0) {
257
+ (0, cli_1.printVerbose)(`Freed space from Docker data`);
258
+ }
259
+ return {
260
+ name: this.name,
261
+ success,
262
+ sizeBefore,
263
+ sizeAfter: 0, // Set to 0 as we don't want to rescan
264
+ error,
265
+ clearedPaths: clearedItems,
266
+ };
267
+ }
268
+ catch (clearError) {
269
+ return {
270
+ name: this.name,
271
+ success: false,
272
+ sizeBefore,
273
+ sizeAfter: sizeBefore,
274
+ error: clearError instanceof Error ? clearError.message : String(clearError),
275
+ clearedPaths: [],
276
+ };
277
+ }
278
+ }
279
+ static create() {
280
+ return new DockerCleaner();
281
+ }
282
+ }
283
+ exports.DockerCleaner = DockerCleaner;
284
+ exports.default = DockerCleaner.create();
285
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/cleaners/docker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { CleanerModule, CacheInfo, ClearResult, CacheSelectionCriteria } from "../types";
2
+ declare class FirefoxCleaner implements CleanerModule {
3
+ name: string;
4
+ type: "browser";
5
+ description: string;
6
+ private findFirefoxInstallation;
7
+ private getFirefoxCachePaths;
8
+ private findFirefoxProfileCaches;
9
+ isAvailable(): Promise<boolean>;
10
+ getCacheInfo(): Promise<CacheInfo>;
11
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
12
+ }
13
+ declare const _default: FirefoxCleaner;
14
+ export default _default;
15
+ //# sourceMappingURL=firefox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firefox.d.ts","sourceRoot":"","sources":["../../src/cleaners/firefox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,SAAS,EACT,WAAW,EACX,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAQlB,cAAM,cAAe,YAAW,aAAa;IAC3C,IAAI,SAAa;IACjB,IAAI,EAAG,SAAS,CAAU;IAC1B,WAAW,SAAgE;YAE7D,uBAAuB;YAqDvB,oBAAoB;YAmDpB,wBAAwB;IAiDhC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAkB/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IAyClC,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,SAAS,CAAC,EAAE,SAAS,EACrB,cAAc,GAAE,MAAM,EAAO,GAC5B,OAAO,CAAC,WAAW,CAAC;CA2DxB;;AAED,wBAAoC"}