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,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;AAsC5E,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAA6B;;IAuC7C;;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,247 @@
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
+ // Build tools
20
+ const webpack_1 = __importDefault(require("./webpack"));
21
+ const vite_1 = __importDefault(require("./vite"));
22
+ const nx_1 = __importDefault(require("./nx"));
23
+ const turbo_1 = __importDefault(require("./turbo"));
24
+ const flutter_1 = __importDefault(require("./flutter"));
25
+ const nodeGyp_1 = __importDefault(require("./nodeGyp"));
26
+ const goBuild_1 = __importDefault(require("./goBuild"));
27
+ // IDEs
28
+ const xcode_1 = __importDefault(require("./xcode"));
29
+ const vscode_1 = __importDefault(require("./vscode"));
30
+ const androidstudio_1 = __importDefault(require("./androidstudio"));
31
+ const jetbrains_1 = __importDefault(require("./jetbrains"));
32
+ // Browsers
33
+ const chrome_1 = __importDefault(require("./chrome"));
34
+ const firefox_1 = __importDefault(require("./firefox"));
35
+ // System tools
36
+ const docker_1 = __importDefault(require("./docker"));
37
+ const gradle_1 = __importDefault(require("./gradle"));
38
+ class CacheManager {
39
+ constructor() {
40
+ this.cleaners = new Map();
41
+ // Register all cleaner modules
42
+ // Package managers
43
+ this.cleaners.set("npm", npm_1.default);
44
+ this.cleaners.set("yarn", yarn_1.default);
45
+ this.cleaners.set("pnpm", pnpm_1.default);
46
+ this.cleaners.set("bun", bun_1.default);
47
+ this.cleaners.set("pip", pip_1.default);
48
+ this.cleaners.set("brew", brew_1.default);
49
+ this.cleaners.set("nix", nix_1.default);
50
+ // Build tools
51
+ this.cleaners.set("webpack", webpack_1.default);
52
+ this.cleaners.set("vite", vite_1.default);
53
+ this.cleaners.set("nx", nx_1.default);
54
+ this.cleaners.set("turbo", turbo_1.default);
55
+ this.cleaners.set("flutter", flutter_1.default);
56
+ this.cleaners.set("node-gyp", nodeGyp_1.default);
57
+ this.cleaners.set("go-build", goBuild_1.default);
58
+ // IDEs and development tools
59
+ this.cleaners.set("xcode", xcode_1.default);
60
+ this.cleaners.set("vscode", vscode_1.default);
61
+ this.cleaners.set("androidstudio", androidstudio_1.default);
62
+ this.cleaners.set("jetbrains", jetbrains_1.default);
63
+ // Browsers
64
+ this.cleaners.set("chrome", chrome_1.default);
65
+ this.cleaners.set("firefox", firefox_1.default);
66
+ // System tools
67
+ this.cleaners.set("docker", docker_1.default);
68
+ this.cleaners.set("gradle", gradle_1.default);
69
+ }
70
+ /**
71
+ * Get all available cleaners
72
+ */
73
+ getAllCleaners() {
74
+ return Array.from(this.cleaners.values());
75
+ }
76
+ /**
77
+ * Get cleaners filtered by type
78
+ */
79
+ getCleanersByType(type) {
80
+ return this.getAllCleaners().filter((cleaner) => cleaner.type === type);
81
+ }
82
+ /**
83
+ * Get enabled cleaners based on configuration
84
+ */
85
+ getEnabledCleaners() {
86
+ return this.getAllCleaners().filter((cleaner) => config_1.config.isToolEnabled(cleaner.name));
87
+ }
88
+ /**
89
+ * Get cleaner by name
90
+ */
91
+ getCleaner(name) {
92
+ return this.cleaners.get(name);
93
+ }
94
+ /**
95
+ * Get cache info for all enabled cleaners
96
+ */
97
+ async getAllCacheInfo() {
98
+ const enabledCleaners = this.getEnabledCleaners();
99
+ const results = [];
100
+ const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
101
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Scanning ${enabledCleaners.length} enabled cache types...`);
102
+ for (const cleaner of enabledCleaners) {
103
+ try {
104
+ (0, cli_1.printVerbose)(`Checking ${cleaner.name} caches...`);
105
+ const info = await cleaner.getCacheInfo();
106
+ // Check if any of the cache's paths are protected
107
+ const isProtected = info.paths.some((cachePath) => protectedPaths.some((protectedPattern) => (0, minimatch_1.minimatch)(cachePath, protectedPattern, { dot: true })));
108
+ if (isProtected) {
109
+ (0, cli_1.printVerbose)(`Skipping protected cache: ${cleaner.name}`);
110
+ // Optionally, you could add a flag to CacheInfo to indicate it's protected
111
+ // info.isProtected = true;
112
+ // results.push(info); // Still add it, but mark it
113
+ }
114
+ else {
115
+ results.push(info);
116
+ }
117
+ }
118
+ catch (error) {
119
+ (0, cli_1.printVerbose)(`Error getting cache info for ${cleaner.name}: ${error}`);
120
+ // Add empty result for failed cleaners
121
+ results.push({
122
+ name: cleaner.name,
123
+ type: cleaner.type,
124
+ description: cleaner.description,
125
+ paths: [],
126
+ isInstalled: false,
127
+ size: 0,
128
+ });
129
+ }
130
+ }
131
+ return results;
132
+ }
133
+ /**
134
+ * Clean caches for enabled cleaners
135
+ */
136
+ async cleanAllCaches(options = {}) {
137
+ let cleaners = this.getEnabledCleaners();
138
+ const allCacheInfos = await this.getAllCacheInfo(); // Get all cache info once
139
+ const protectedPaths = config_1.config.getProtectedPaths(); // Get protected paths
140
+ // Filter by types if specified
141
+ if (options.types && options.types.length > 0) {
142
+ cleaners = cleaners.filter((cleaner) => options.types.includes(cleaner.type));
143
+ }
144
+ // Include specific tools if specified (this takes precedence over exclude)
145
+ if (options.include && options.include.length > 0) {
146
+ cleaners = cleaners.filter((cleaner) => options.include.includes(cleaner.name));
147
+ }
148
+ // Exclude specific tools if specified
149
+ if (options.exclude && options.exclude.length > 0) {
150
+ cleaners = cleaners.filter((cleaner) => !options.exclude.includes(cleaner.name));
151
+ }
152
+ const results = [];
153
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Cleaning ${cleaners.length} cache types...`);
154
+ for (const cleaner of cleaners) {
155
+ try {
156
+ (0, cli_1.printVerbose)(`${cli_1.symbols.soap} Processing ${cleaner.name}...`);
157
+ const cacheInfoForCleaner = allCacheInfos.find((info) => info.name === cleaner.name); // Find corresponding info
158
+ let result;
159
+ if (options.subCachesToClear &&
160
+ options.subCachesToClear.has(cleaner.name)) {
161
+ const categoryIds = options.subCachesToClear.get(cleaner.name);
162
+ if (cleaner.clearByCategory) {
163
+ result = await cleaner.clearByCategory(categoryIds, options.dryRun, cacheInfoForCleaner, protectedPaths);
164
+ }
165
+ else {
166
+ // Fallback if clearByCategory is not implemented for this cleaner
167
+ (0, cli_1.printVerbose)(`Warning: ${cleaner.name} does not support granular clearing by category. Clearing all.`);
168
+ result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
169
+ }
170
+ }
171
+ else {
172
+ result = await cleaner.clear(options.dryRun, undefined, cacheInfoForCleaner, protectedPaths);
173
+ }
174
+ results.push(result);
175
+ if (result.success && !options.dryRun) {
176
+ const savedMB = ((result.sizeBefore || 0) - (result.sizeAfter || 0)) /
177
+ (1024 * 1024);
178
+ if (savedMB > 0) {
179
+ (0, cli_1.printVerbose)(`${cli_1.symbols.bubbles} ${cleaner.name}: Freed ${savedMB.toFixed(1)} MB`);
180
+ }
181
+ }
182
+ }
183
+ catch (error) {
184
+ (0, cli_1.printVerbose)(`Error cleaning ${cleaner.name}: ${error}`);
185
+ results.push({
186
+ name: cleaner.name,
187
+ success: false,
188
+ error: error instanceof Error ? error.message : String(error),
189
+ clearedPaths: [],
190
+ sizeBefore: 0,
191
+ sizeAfter: 0,
192
+ });
193
+ }
194
+ }
195
+ return results;
196
+ }
197
+ /**
198
+ * Get total cache sizes by type
199
+ */
200
+ async getCacheSizesByType() {
201
+ const allCacheInfo = await this.getAllCacheInfo();
202
+ const sizesByType = {
203
+ "package-manager": 0,
204
+ "build-tool": 0,
205
+ browser: 0,
206
+ ide: 0,
207
+ system: 0,
208
+ other: 0,
209
+ };
210
+ for (const info of allCacheInfo) {
211
+ sizesByType[info.type] += info.size || 0;
212
+ }
213
+ return sizesByType;
214
+ }
215
+ /**
216
+ * Get summary statistics
217
+ */
218
+ async getSummary() {
219
+ const allCacheInfo = await this.getAllCacheInfo();
220
+ // Calculate sizes by type from the same data to avoid double scanning
221
+ const sizesByType = {
222
+ "package-manager": 0,
223
+ "build-tool": 0,
224
+ browser: 0,
225
+ ide: 0,
226
+ system: 0,
227
+ other: 0,
228
+ };
229
+ for (const info of allCacheInfo) {
230
+ sizesByType[info.type] += info.size || 0;
231
+ }
232
+ const totalSize = allCacheInfo.reduce((sum, info) => sum + (info.size || 0), 0);
233
+ const installedCleaners = allCacheInfo.filter((info) => info.isInstalled).length;
234
+ const enabledCleaners = this.getEnabledCleaners().length;
235
+ return {
236
+ totalSize,
237
+ totalCleaners: this.getAllCleaners().length,
238
+ installedCleaners,
239
+ enabledCleaners,
240
+ sizesByType,
241
+ };
242
+ }
243
+ }
244
+ exports.CacheManager = CacheManager;
245
+ // Export singleton instance
246
+ exports.cacheManager = new CacheManager();
247
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cleaners/index.ts"],"names":[],"mappings":";;;;;;AACA,sCAAmC;AACnC,sCAAqD;AACrD,yCAAsC;AAEtC,6BAA6B;AAC7B,mBAAmB;AACnB,gDAA+B;AAC/B,kDAAiC;AACjC,kDAAiC;AACjC,gDAA+B;AAC/B,gDAA+B;AAC/B,kDAAiC;AACjC,gDAA+B;AAE/B,cAAc;AACd,wDAAuC;AACvC,kDAAiC;AACjC,8CAA6B;AAC7B,oDAAmC;AACnC,wDAAuC;AACvC,wDAAuC;AACvC,wDAAuC;AAEvC,OAAO;AACP,oDAAmC;AACnC,sDAAqC;AACrC,oEAAmD;AACnD,4DAA2C;AAE3C,WAAW;AACX,sDAAqC;AACrC,wDAAuC;AAEvC,eAAe;AACf,sDAAqC;AACrC,sDAAqC;AAErC,MAAa,YAAY;IAGvB;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;QAEjD,+BAA+B;QAC/B,mBAAmB;QACnB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,aAAU,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAW,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAW,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,aAAU,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,aAAU,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAW,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,aAAU,CAAC,CAAC;QAErC,cAAc;QACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,cAAW,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,YAAS,CAAC,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,eAAY,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAc,CAAC,CAAC;QAC7C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAc,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,iBAAc,CAAC,CAAC;QAE9C,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,eAAY,CAAC,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,uBAAoB,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,mBAAgB,CAAC,CAAC;QAEjD,WAAW;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAc,CAAC,CAAC;QAE7C,eAAe;QACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAa,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,gBAAa,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,IAAe;QAC/B,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC9C,eAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAW,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClD,MAAM,OAAO,GAAgB,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,eAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,sBAAsB;QAEzE,IAAA,kBAAY,EACV,GAAG,aAAO,CAAC,IAAI,aAAa,eAAe,CAAC,MAAM,yBAAyB,CAC5E,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,IAAA,kBAAY,EAAC,YAAY,OAAO,CAAC,IAAI,YAAY,CAAC,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC;gBAE1C,kDAAkD;gBAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAChD,cAAc,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE,CACvC,IAAA,qBAAS,EAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CACtD,CACF,CAAC;gBAEF,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAA,kBAAY,EAAC,6BAA6B,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1D,2EAA2E;oBAC3E,2BAA2B;oBAC3B,mDAAmD;gBACrD,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,kBAAY,EAAC,gCAAgC,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;gBACvE,uCAAuC;gBACvC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,KAAK,EAAE,EAAE;oBACT,WAAW,EAAE,KAAK;oBAClB,IAAI,EAAE,CAAC;iBACR,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,UAMI,EAAE;QAEN,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,0BAA0B;QAC9E,MAAM,cAAc,GAAG,eAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,sBAAsB;QAEzE,+BAA+B;QAC/B,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,KAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACtC,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CACrC,OAAO,CAAC,OAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACxC,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CACxB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACtD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,IAAA,kBAAY,EAAC,GAAG,aAAO,CAAC,IAAI,aAAa,QAAQ,CAAC,MAAM,iBAAiB,CAAC,CAAC;QAE3E,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,IAAA,kBAAY,EAAC,GAAG,aAAO,CAAC,IAAI,eAAe,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;gBAC9D,MAAM,mBAAmB,GAAG,aAAa,CAAC,IAAI,CAC5C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CACrC,CAAC,CAAC,0BAA0B;gBAE7B,IAAI,MAAmB,CAAC;gBACxB,IACE,OAAO,CAAC,gBAAgB;oBACxB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAC1C,CAAC;oBACD,MAAM,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;oBAChE,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;wBAC5B,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CACpC,WAAW,EACX,OAAO,CAAC,MAAM,EACd,mBAAmB,EACnB,cAAc,CACf,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,kEAAkE;wBAClE,IAAA,kBAAY,EACV,YAAY,OAAO,CAAC,IAAI,gEAAgE,CACzF,CAAC;wBACF,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAC1B,OAAO,CAAC,MAAM,EACd,SAAS,EACT,mBAAmB,EACnB,cAAc,CACf,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,MAAM,OAAO,CAAC,KAAK,CAC1B,OAAO,CAAC,MAAM,EACd,SAAS,EACT,mBAAmB,EACnB,cAAc,CACf,CAAC;gBACJ,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAErB,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;oBACtC,MAAM,OAAO,GACX,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;wBACpD,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;oBAChB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;wBAChB,IAAA,kBAAY,EACV,GAAG,aAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,WAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CACrE,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAA,kBAAY,EAAC,kBAAkB,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,YAAY,EAAE,EAAE;oBAChB,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB;QACvB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,MAAM,WAAW,GAA8B;YAC7C,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QAOd,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAElD,sEAAsE;QACtE,MAAM,WAAW,GAA8B;YAC7C,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,CACnC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EACrC,CAAC,CACF,CAAC;QACF,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAC3B,CAAC,MAAM,CAAC;QACT,MAAM,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC;QAEzD,OAAO;YACL,SAAS;YACT,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,MAAM;YAC3C,iBAAiB;YACjB,eAAe;YACf,WAAW;SACZ,CAAC;IACJ,CAAC;CACF;AApSD,oCAoSC;AAED,4BAA4B;AACf,QAAA,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { BaseCleaner } from "./BaseCleaner";
2
+ import { CacheInfo, ClearResult, CacheType, CacheSelectionCriteria } from "../types";
3
+ export declare class JetBrainsCleaner extends BaseCleaner {
4
+ name: string;
5
+ type: CacheType;
6
+ description: string;
7
+ private jetbrainsProducts;
8
+ private findJetBrainsInstallations;
9
+ private getJetBrainsCachePaths;
10
+ private findIdeaFolders;
11
+ private findIdeaFoldersRecursively;
12
+ isAvailable(): Promise<boolean>;
13
+ getCacheInfo(): Promise<CacheInfo>;
14
+ clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
15
+ }
16
+ declare const _default: JetBrainsCleaner;
17
+ export default _default;
18
+ //# sourceMappingURL=jetbrains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jetbrains.d.ts","sourceRoot":"","sources":["../../src/cleaners/jetbrains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACL,SAAS,EACT,WAAW,EACX,SAAS,EACT,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAQlB,qBAAa,gBAAiB,SAAQ,WAAW;IAC/C,IAAI,SAAe;IACnB,IAAI,EAAE,SAAS,CAAS;IACxB,WAAW,SAC0E;IAErF,OAAO,CAAC,iBAAiB,CAkBvB;YAIY,0BAA0B;YAmG1B,sBAAsB;YA+FtB,eAAe;YA8Bf,0BAA0B;IAsClC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAiD/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;CAwExB;;AAED,wBAAsC"}