squeaky-clean 0.1.10 → 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.
- package/dist/cleaners/BaseCleaner.d.ts +57 -0
- package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
- package/dist/cleaners/BaseCleaner.js +299 -0
- package/dist/cleaners/BaseCleaner.js.map +1 -0
- package/dist/cleaners/CleanerRegistry.d.ts +65 -0
- package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
- package/dist/cleaners/CleanerRegistry.js +112 -0
- package/dist/cleaners/CleanerRegistry.js.map +1 -0
- package/dist/cleaners/androidstudio.d.ts +16 -0
- package/dist/cleaners/androidstudio.d.ts.map +1 -0
- package/dist/cleaners/androidstudio.js +375 -0
- package/dist/cleaners/androidstudio.js.map +1 -0
- package/dist/cleaners/brew.d.ts +4 -0
- package/dist/cleaners/brew.d.ts.map +1 -0
- package/dist/cleaners/brew.js +197 -0
- package/dist/cleaners/brew.js.map +1 -0
- package/dist/cleaners/brewEnhanced.d.ts +18 -0
- package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
- package/dist/cleaners/brewEnhanced.js +255 -0
- package/dist/cleaners/brewEnhanced.js.map +1 -0
- package/dist/cleaners/bun.d.ts +14 -0
- package/dist/cleaners/bun.d.ts.map +1 -0
- package/dist/cleaners/bun.js +207 -0
- package/dist/cleaners/bun.js.map +1 -0
- package/dist/cleaners/cargo.d.ts +15 -0
- package/dist/cleaners/cargo.d.ts.map +1 -0
- package/dist/cleaners/cargo.js +193 -0
- package/dist/cleaners/cargo.js.map +1 -0
- package/dist/cleaners/chrome.d.ts +14 -0
- package/dist/cleaners/chrome.d.ts.map +1 -0
- package/dist/cleaners/chrome.js +250 -0
- package/dist/cleaners/chrome.js.map +1 -0
- package/dist/cleaners/cocoapods.d.ts +16 -0
- package/dist/cleaners/cocoapods.d.ts.map +1 -0
- package/dist/cleaners/cocoapods.js +180 -0
- package/dist/cleaners/cocoapods.js.map +1 -0
- package/dist/cleaners/cursor.d.ts +15 -0
- package/dist/cleaners/cursor.d.ts.map +1 -0
- package/dist/cleaners/cursor.js +377 -0
- package/dist/cleaners/cursor.js.map +1 -0
- package/dist/cleaners/docker.d.ts +35 -0
- package/dist/cleaners/docker.d.ts.map +1 -0
- package/dist/cleaners/docker.js +288 -0
- package/dist/cleaners/docker.js.map +1 -0
- package/dist/cleaners/firefox.d.ts +15 -0
- package/dist/cleaners/firefox.d.ts.map +1 -0
- package/dist/cleaners/firefox.js +281 -0
- package/dist/cleaners/firefox.js.map +1 -0
- package/dist/cleaners/flutter.d.ts +18 -0
- package/dist/cleaners/flutter.d.ts.map +1 -0
- package/dist/cleaners/flutter.js +354 -0
- package/dist/cleaners/flutter.js.map +1 -0
- package/dist/cleaners/goBuild.d.ts +18 -0
- package/dist/cleaners/goBuild.d.ts.map +1 -0
- package/dist/cleaners/goBuild.js +196 -0
- package/dist/cleaners/goBuild.js.map +1 -0
- package/dist/cleaners/gradle.d.ts +14 -0
- package/dist/cleaners/gradle.d.ts.map +1 -0
- package/dist/cleaners/gradle.js +336 -0
- package/dist/cleaners/gradle.js.map +1 -0
- package/dist/cleaners/index.d.ts +51 -0
- package/dist/cleaners/index.d.ts.map +1 -0
- package/dist/cleaners/index.js +267 -0
- package/dist/cleaners/index.js.map +1 -0
- package/dist/cleaners/jetbrains.d.ts +18 -0
- package/dist/cleaners/jetbrains.d.ts.map +1 -0
- package/dist/cleaners/jetbrains.js +441 -0
- package/dist/cleaners/jetbrains.js.map +1 -0
- package/dist/cleaners/maven.d.ts +15 -0
- package/dist/cleaners/maven.d.ts.map +1 -0
- package/dist/cleaners/maven.js +182 -0
- package/dist/cleaners/maven.js.map +1 -0
- package/dist/cleaners/nix.d.ts +4 -0
- package/dist/cleaners/nix.d.ts.map +1 -0
- package/dist/cleaners/nix.js +227 -0
- package/dist/cleaners/nix.js.map +1 -0
- package/dist/cleaners/nodeGyp.d.ts +14 -0
- package/dist/cleaners/nodeGyp.d.ts.map +1 -0
- package/dist/cleaners/nodeGyp.js +157 -0
- package/dist/cleaners/nodeGyp.js.map +1 -0
- package/dist/cleaners/npm.d.ts +14 -0
- package/dist/cleaners/npm.d.ts.map +1 -0
- package/dist/cleaners/npm.js +203 -0
- package/dist/cleaners/npm.js.map +1 -0
- package/dist/cleaners/npmEnhanced.d.ts +19 -0
- package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
- package/dist/cleaners/npmEnhanced.js +336 -0
- package/dist/cleaners/npmEnhanced.js.map +1 -0
- package/dist/cleaners/nuget.d.ts +16 -0
- package/dist/cleaners/nuget.d.ts.map +1 -0
- package/dist/cleaners/nuget.js +197 -0
- package/dist/cleaners/nuget.js.map +1 -0
- package/dist/cleaners/nx.d.ts +18 -0
- package/dist/cleaners/nx.d.ts.map +1 -0
- package/dist/cleaners/nx.js +308 -0
- package/dist/cleaners/nx.js.map +1 -0
- package/dist/cleaners/pip.d.ts +19 -0
- package/dist/cleaners/pip.d.ts.map +1 -0
- package/dist/cleaners/pip.js +334 -0
- package/dist/cleaners/pip.js.map +1 -0
- package/dist/cleaners/pipenv.d.ts +16 -0
- package/dist/cleaners/pipenv.d.ts.map +1 -0
- package/dist/cleaners/pipenv.js +184 -0
- package/dist/cleaners/pipenv.js.map +1 -0
- package/dist/cleaners/playwright.d.ts +15 -0
- package/dist/cleaners/playwright.d.ts.map +1 -0
- package/dist/cleaners/playwright.js +221 -0
- package/dist/cleaners/playwright.js.map +1 -0
- package/dist/cleaners/pnpm.d.ts +14 -0
- package/dist/cleaners/pnpm.d.ts.map +1 -0
- package/dist/cleaners/pnpm.js +214 -0
- package/dist/cleaners/pnpm.js.map +1 -0
- package/dist/cleaners/poetry.d.ts +16 -0
- package/dist/cleaners/poetry.d.ts.map +1 -0
- package/dist/cleaners/poetry.js +184 -0
- package/dist/cleaners/poetry.js.map +1 -0
- package/dist/cleaners/swiftpm.d.ts +16 -0
- package/dist/cleaners/swiftpm.d.ts.map +1 -0
- package/dist/cleaners/swiftpm.js +179 -0
- package/dist/cleaners/swiftpm.js.map +1 -0
- package/dist/cleaners/turbo.d.ts +18 -0
- package/dist/cleaners/turbo.d.ts.map +1 -0
- package/dist/cleaners/turbo.js +325 -0
- package/dist/cleaners/turbo.js.map +1 -0
- package/dist/cleaners/universalBinary.d.ts +20 -0
- package/dist/cleaners/universalBinary.d.ts.map +1 -0
- package/dist/cleaners/universalBinary.js +318 -0
- package/dist/cleaners/universalBinary.js.map +1 -0
- package/dist/cleaners/vite.d.ts +17 -0
- package/dist/cleaners/vite.d.ts.map +1 -0
- package/dist/cleaners/vite.js +274 -0
- package/dist/cleaners/vite.js.map +1 -0
- package/dist/cleaners/vscode.d.ts +15 -0
- package/dist/cleaners/vscode.d.ts.map +1 -0
- package/dist/cleaners/vscode.js +411 -0
- package/dist/cleaners/vscode.js.map +1 -0
- package/dist/cleaners/webpack.d.ts +17 -0
- package/dist/cleaners/webpack.d.ts.map +1 -0
- package/dist/cleaners/webpack.js +263 -0
- package/dist/cleaners/webpack.js.map +1 -0
- package/dist/cleaners/windsurf.d.ts +15 -0
- package/dist/cleaners/windsurf.d.ts.map +1 -0
- package/dist/cleaners/windsurf.js +366 -0
- package/dist/cleaners/windsurf.js.map +1 -0
- package/dist/cleaners/xcode.d.ts +14 -0
- package/dist/cleaners/xcode.d.ts.map +1 -0
- package/dist/cleaners/xcode.js +348 -0
- package/dist/cleaners/xcode.js.map +1 -0
- package/dist/cleaners/yarn.d.ts +16 -0
- package/dist/cleaners/yarn.d.ts.map +1 -0
- package/dist/cleaners/yarn.js +271 -0
- package/dist/cleaners/yarn.js.map +1 -0
- package/dist/cleaners/zed.d.ts +15 -0
- package/dist/cleaners/zed.d.ts.map +1 -0
- package/dist/cleaners/zed.js +383 -0
- package/dist/cleaners/zed.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +367 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auto.d.ts +8 -0
- package/dist/commands/auto.d.ts.map +1 -0
- package/dist/commands/auto.js +251 -0
- package/dist/commands/auto.js.map +1 -0
- package/dist/commands/categories.d.ts +8 -0
- package/dist/commands/categories.d.ts.map +1 -0
- package/dist/commands/categories.js +133 -0
- package/dist/commands/categories.js.map +1 -0
- package/dist/commands/clean.d.ts +3 -0
- package/dist/commands/clean.d.ts.map +1 -0
- package/dist/commands/clean.js +149 -0
- package/dist/commands/clean.js.map +1 -0
- package/dist/commands/config.d.ts +14 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +460 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/configDoctor.d.ts +26 -0
- package/dist/commands/configDoctor.d.ts.map +1 -0
- package/dist/commands/configDoctor.js +60 -0
- package/dist/commands/configDoctor.js.map +1 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +141 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/emojis.d.ts +2 -0
- package/dist/commands/emojis.d.ts.map +1 -0
- package/dist/commands/emojis.js +28 -0
- package/dist/commands/emojis.js.map +1 -0
- package/dist/commands/interactive.d.ts +3 -0
- package/dist/commands/interactive.d.ts.map +1 -0
- package/dist/commands/interactive.js +284 -0
- package/dist/commands/interactive.js.map +1 -0
- package/dist/commands/interactiveEnhanced.d.ts +4 -0
- package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
- package/dist/commands/interactiveEnhanced.js +460 -0
- package/dist/commands/interactiveEnhanced.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +68 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/sizes.d.ts +2 -0
- package/dist/commands/sizes.d.ts.map +1 -0
- package/dist/commands/sizes.js +87 -0
- package/dist/commands/sizes.js.map +1 -0
- package/dist/commands/ub.d.ts +10 -0
- package/dist/commands/ub.d.ts.map +1 -0
- package/dist/commands/ub.js +170 -0
- package/dist/commands/ub.js.map +1 -0
- package/dist/config/configSchema.d.ts +93 -0
- package/dist/config/configSchema.d.ts.map +1 -0
- package/dist/config/configSchema.js +75 -0
- package/dist/config/configSchema.js.map +1 -0
- package/dist/config/index.d.ts +35 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +255 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loadConfig.d.ts +7 -0
- package/dist/config/loadConfig.d.ts.map +1 -0
- package/dist/config/loadConfig.js +95 -0
- package/dist/config/loadConfig.js.map +1 -0
- package/dist/config/migrateConfig.d.ts +56 -0
- package/dist/config/migrateConfig.d.ts.map +1 -0
- package/dist/config/migrateConfig.js +102 -0
- package/dist/config/migrateConfig.js.map +1 -0
- package/dist/plugins/discovery.d.ts +6 -0
- package/dist/plugins/discovery.d.ts.map +1 -0
- package/dist/plugins/discovery.js +64 -0
- package/dist/plugins/discovery.js.map +1 -0
- package/dist/profiles/index.d.ts +61 -0
- package/dist/profiles/index.d.ts.map +1 -0
- package/dist/profiles/index.js +406 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/types/index.d.ts +176 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/cache.d.ts +58 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +101 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/cli.d.ts +45 -0
- package/dist/utils/cli.d.ts.map +1 -0
- package/dist/utils/cli.js +412 -0
- package/dist/utils/cli.js.map +1 -0
- package/dist/utils/fs.d.ts +32 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +250 -0
- package/dist/utils/fs.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,263 @@
|
|
|
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
|
+
exports.WebpackCleaner = void 0;
|
|
37
|
+
const fs_1 = require("fs");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const fs_2 = require("../utils/fs");
|
|
41
|
+
const cli_1 = require("../utils/cli");
|
|
42
|
+
class WebpackCleaner {
|
|
43
|
+
constructor() {
|
|
44
|
+
this.name = "webpack";
|
|
45
|
+
this.type = "build-tool";
|
|
46
|
+
this.description = "Webpack build caches and temporary files";
|
|
47
|
+
}
|
|
48
|
+
async findWebpackCaches() {
|
|
49
|
+
const caches = [];
|
|
50
|
+
const homeDir = os.homedir();
|
|
51
|
+
// Common project directories to search
|
|
52
|
+
const searchDirs = [
|
|
53
|
+
path.join(homeDir, "Projects"),
|
|
54
|
+
path.join(homeDir, "Development"),
|
|
55
|
+
path.join(homeDir, "dev"),
|
|
56
|
+
path.join(homeDir, "workspace"),
|
|
57
|
+
path.join(homeDir, "Documents"),
|
|
58
|
+
process.cwd(), // Current directory
|
|
59
|
+
];
|
|
60
|
+
// Also check for global webpack caches
|
|
61
|
+
const globalCachePaths = [
|
|
62
|
+
path.join(homeDir, ".webpack"),
|
|
63
|
+
path.join(homeDir, ".cache", "webpack"),
|
|
64
|
+
path.join(homeDir, "node_modules", ".cache", "webpack"),
|
|
65
|
+
];
|
|
66
|
+
for (const globalPath of globalCachePaths) {
|
|
67
|
+
if (await (0, fs_2.pathExists)(globalPath)) {
|
|
68
|
+
caches.push(globalPath);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Search for project-specific webpack caches
|
|
72
|
+
for (const searchDir of searchDirs) {
|
|
73
|
+
if (await (0, fs_2.pathExists)(searchDir)) {
|
|
74
|
+
try {
|
|
75
|
+
const projectCaches = await this.findWebpackCachesRecursively(searchDir, 3);
|
|
76
|
+
caches.push(...projectCaches);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
(0, cli_1.printVerbose)(`Error searching ${searchDir}: ${error}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return [...new Set(caches)]; // Remove duplicates
|
|
84
|
+
}
|
|
85
|
+
async findWebpackCachesRecursively(dir, maxDepth) {
|
|
86
|
+
if (maxDepth <= 0)
|
|
87
|
+
return [];
|
|
88
|
+
const webpackCaches = [];
|
|
89
|
+
try {
|
|
90
|
+
const entries = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
if (entry.isDirectory() &&
|
|
93
|
+
!entry.name.startsWith(".") &&
|
|
94
|
+
entry.name !== "node_modules") {
|
|
95
|
+
const fullPath = path.join(dir, entry.name);
|
|
96
|
+
// Check for webpack cache directories
|
|
97
|
+
const cacheLocations = [
|
|
98
|
+
path.join(fullPath, "node_modules", ".cache", "webpack"),
|
|
99
|
+
path.join(fullPath, ".webpack-cache"),
|
|
100
|
+
path.join(fullPath, "webpack-cache"),
|
|
101
|
+
path.join(fullPath, ".cache", "webpack"),
|
|
102
|
+
];
|
|
103
|
+
for (const cacheLocation of cacheLocations) {
|
|
104
|
+
if (await (0, fs_2.pathExists)(cacheLocation)) {
|
|
105
|
+
webpackCaches.push(cacheLocation);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Recursively search subdirectories
|
|
109
|
+
const subCaches = await this.findWebpackCachesRecursively(fullPath, maxDepth - 1);
|
|
110
|
+
webpackCaches.push(...subCaches);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Ignore permission errors or other issues
|
|
116
|
+
}
|
|
117
|
+
return webpackCaches;
|
|
118
|
+
}
|
|
119
|
+
async hasWebpackProjects() {
|
|
120
|
+
const homeDir = os.homedir();
|
|
121
|
+
// Check current directory first
|
|
122
|
+
const currentDirPackageJson = path.join(process.cwd(), "package.json");
|
|
123
|
+
if (await this.isWebpackProject(currentDirPackageJson)) {
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
// Search common project directories
|
|
127
|
+
const searchDirs = [
|
|
128
|
+
path.join(homeDir, "Projects"),
|
|
129
|
+
path.join(homeDir, "Development"),
|
|
130
|
+
path.join(homeDir, "dev"),
|
|
131
|
+
path.join(homeDir, "workspace"),
|
|
132
|
+
];
|
|
133
|
+
for (const searchDir of searchDirs) {
|
|
134
|
+
if (await (0, fs_2.pathExists)(searchDir)) {
|
|
135
|
+
try {
|
|
136
|
+
const hasWebpack = await this.searchForWebpackProjects(searchDir, 2);
|
|
137
|
+
if (hasWebpack)
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// Continue searching
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
async searchForWebpackProjects(dir, maxDepth) {
|
|
148
|
+
if (maxDepth <= 0)
|
|
149
|
+
return false;
|
|
150
|
+
try {
|
|
151
|
+
const entries = await fs_1.promises.readdir(dir, { withFileTypes: true });
|
|
152
|
+
for (const entry of entries) {
|
|
153
|
+
if (entry.isDirectory() && !entry.name.startsWith(".")) {
|
|
154
|
+
const fullPath = path.join(dir, entry.name);
|
|
155
|
+
const packageJsonPath = path.join(fullPath, "package.json");
|
|
156
|
+
if (await this.isWebpackProject(packageJsonPath)) {
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
// Recursively search
|
|
160
|
+
if (await this.searchForWebpackProjects(fullPath, maxDepth - 1)) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
// Ignore errors
|
|
168
|
+
}
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
async isWebpackProject(packageJsonPath) {
|
|
172
|
+
try {
|
|
173
|
+
if (!(await (0, fs_2.pathExists)(packageJsonPath)))
|
|
174
|
+
return false;
|
|
175
|
+
const content = await fs_1.promises.readFile(packageJsonPath, "utf-8");
|
|
176
|
+
const packageJson = JSON.parse(content);
|
|
177
|
+
// Check for webpack in dependencies or devDependencies
|
|
178
|
+
const deps = {
|
|
179
|
+
...packageJson.dependencies,
|
|
180
|
+
...packageJson.devDependencies,
|
|
181
|
+
};
|
|
182
|
+
return "webpack" in deps || "webpack-cli" in deps;
|
|
183
|
+
}
|
|
184
|
+
catch {
|
|
185
|
+
return false;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
async isAvailable() {
|
|
189
|
+
// Check if webpack caches exist or if there are webpack projects
|
|
190
|
+
const caches = await this.findWebpackCaches();
|
|
191
|
+
const hasProjects = await this.hasWebpackProjects();
|
|
192
|
+
return caches.length > 0 || hasProjects;
|
|
193
|
+
}
|
|
194
|
+
async getCacheInfo() {
|
|
195
|
+
const cachePaths = await this.findWebpackCaches();
|
|
196
|
+
let totalSize = 0;
|
|
197
|
+
const validPaths = [];
|
|
198
|
+
for (const cachePath of cachePaths) {
|
|
199
|
+
try {
|
|
200
|
+
const size = await (0, fs_2.getDirectorySize)(cachePath);
|
|
201
|
+
totalSize += size;
|
|
202
|
+
validPaths.push(cachePath);
|
|
203
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.folder} ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
(0, cli_1.printVerbose)(`Error calculating size for ${cachePath}: ${error}`);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
name: this.name,
|
|
211
|
+
type: this.type,
|
|
212
|
+
description: this.description,
|
|
213
|
+
paths: validPaths,
|
|
214
|
+
isInstalled: await this.isAvailable(),
|
|
215
|
+
size: totalSize,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
async clear(dryRun = false, _criteria, cacheInfo) {
|
|
219
|
+
const info = cacheInfo || (await this.getCacheInfo());
|
|
220
|
+
if (!info.isInstalled) {
|
|
221
|
+
return {
|
|
222
|
+
name: this.name,
|
|
223
|
+
success: false,
|
|
224
|
+
error: "No webpack caches found",
|
|
225
|
+
clearedPaths: [],
|
|
226
|
+
sizeBefore: 0,
|
|
227
|
+
sizeAfter: 0,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
const sizeBefore = info.size || 0;
|
|
231
|
+
const clearedPaths = [];
|
|
232
|
+
let errors = [];
|
|
233
|
+
for (const cachePath of info.paths) {
|
|
234
|
+
try {
|
|
235
|
+
if (dryRun) {
|
|
236
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Would clear: ${cachePath}`);
|
|
237
|
+
clearedPaths.push(cachePath);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
(0, cli_1.printVerbose)(`${cli_1.symbols.soap} Clearing: ${cachePath}`);
|
|
241
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
242
|
+
clearedPaths.push(cachePath);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
catch (error) {
|
|
246
|
+
const errorMsg = `Failed to clear ${cachePath}: ${error}`;
|
|
247
|
+
errors.push(errorMsg);
|
|
248
|
+
(0, cli_1.printVerbose)(errorMsg);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
name: this.name,
|
|
253
|
+
success: errors.length === 0,
|
|
254
|
+
sizeBefore,
|
|
255
|
+
sizeAfter: 0, // Set to 0 as we don't want to rescan
|
|
256
|
+
error: errors.length > 0 ? errors.join("; ") : undefined,
|
|
257
|
+
clearedPaths,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
exports.WebpackCleaner = WebpackCleaner;
|
|
262
|
+
exports.default = new WebpackCleaner();
|
|
263
|
+
//# sourceMappingURL=webpack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../src/cleaners/webpack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CacheInfo, ClearResult, CleanerModule, CacheCategory, CacheSelectionCriteria } from "../types";
|
|
2
|
+
export declare class WindsurfCleaner implements CleanerModule {
|
|
3
|
+
name: string;
|
|
4
|
+
type: "ide";
|
|
5
|
+
description: string;
|
|
6
|
+
private getCachePaths;
|
|
7
|
+
isAvailable(): Promise<boolean>;
|
|
8
|
+
getCacheInfo(): Promise<CacheInfo>;
|
|
9
|
+
getCacheCategories(): Promise<CacheCategory[]>;
|
|
10
|
+
clear(dryRun?: boolean, _criteria?: CacheSelectionCriteria, _cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
|
|
11
|
+
clearByCategory(categoryIds: string[], dryRun?: boolean, _cacheInfo?: CacheInfo, protectedPaths?: string[]): Promise<ClearResult>;
|
|
12
|
+
}
|
|
13
|
+
declare const _default: WindsurfCleaner;
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=windsurf.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"windsurf.d.ts","sourceRoot":"","sources":["../../src/cleaners/windsurf.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,WAAW,EACX,aAAa,EACb,aAAa,EACb,sBAAsB,EACvB,MAAM,UAAU,CAAC;AASlB,qBAAa,eAAgB,YAAW,aAAa;IACnD,IAAI,SAAc;IAClB,IAAI,EAAG,KAAK,CAAU;IACtB,WAAW,SAC+E;IAE1F,OAAO,CAAC,aAAa;IA+Mf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IA6B/B,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC;IA0BlC,kBAAkB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAuC9C,KAAK,CACT,MAAM,UAAQ,EACd,SAAS,CAAC,EAAE,sBAAsB,EAClC,UAAU,CAAC,EAAE,SAAS,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,WAAW,CAAC;IAmDjB,eAAe,CACnB,WAAW,EAAE,MAAM,EAAE,EACrB,MAAM,UAAQ,EACd,UAAU,CAAC,EAAE,SAAS,EACtB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,WAAW,CAAC;CA2CxB;;AAED,wBAAqC"}
|
|
@@ -0,0 +1,366 @@
|
|
|
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.WindsurfCleaner = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
const fs_2 = require("../utils/fs");
|
|
11
|
+
const cli_1 = require("../utils/cli");
|
|
12
|
+
class WindsurfCleaner {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.name = "windsurf";
|
|
15
|
+
this.type = "ide";
|
|
16
|
+
this.description = "Windsurf IDE (Codeium) extensions cache, workspace storage, logs, and temporary files";
|
|
17
|
+
}
|
|
18
|
+
getCachePaths() {
|
|
19
|
+
const homeDir = os_1.default.homedir();
|
|
20
|
+
const platform = process.platform;
|
|
21
|
+
const paths = [];
|
|
22
|
+
if (platform === "darwin") {
|
|
23
|
+
// macOS Windsurf paths
|
|
24
|
+
const windsurfDir = path_1.default.join(homeDir, ".windsurf");
|
|
25
|
+
const windsurfCacheDir = path_1.default.join(homeDir, "Library", "Caches", "com.exafunction.windsurf");
|
|
26
|
+
const windsurfAppSupport = path_1.default.join(homeDir, "Library", "Application Support", "Windsurf");
|
|
27
|
+
paths.push(
|
|
28
|
+
// Cache directories (safe to clear)
|
|
29
|
+
{
|
|
30
|
+
path: windsurfCacheDir,
|
|
31
|
+
description: "Windsurf application cache",
|
|
32
|
+
category: "cache",
|
|
33
|
+
priority: "low",
|
|
34
|
+
safeToDelete: true,
|
|
35
|
+
}, {
|
|
36
|
+
path: path_1.default.join(homeDir, "Library", "Caches", "com.exafunction.windsurf.ShipIt"),
|
|
37
|
+
description: "Windsurf update cache",
|
|
38
|
+
category: "updates",
|
|
39
|
+
priority: "low",
|
|
40
|
+
safeToDelete: true,
|
|
41
|
+
},
|
|
42
|
+
// Logs (safe to clear)
|
|
43
|
+
{
|
|
44
|
+
path: path_1.default.join(windsurfAppSupport, "logs"),
|
|
45
|
+
description: "Windsurf application logs",
|
|
46
|
+
category: "logs",
|
|
47
|
+
priority: "low",
|
|
48
|
+
safeToDelete: true,
|
|
49
|
+
},
|
|
50
|
+
// Extension caches
|
|
51
|
+
{
|
|
52
|
+
path: path_1.default.join(windsurfDir, "extensions", ".obsolete"),
|
|
53
|
+
description: "Obsolete extension files",
|
|
54
|
+
category: "extensions",
|
|
55
|
+
priority: "low",
|
|
56
|
+
safeToDelete: true,
|
|
57
|
+
}, {
|
|
58
|
+
path: path_1.default.join(windsurfAppSupport, "CachedExtensions"),
|
|
59
|
+
description: "Cached extension metadata",
|
|
60
|
+
category: "extensions",
|
|
61
|
+
priority: "normal",
|
|
62
|
+
safeToDelete: true,
|
|
63
|
+
}, {
|
|
64
|
+
path: path_1.default.join(windsurfAppSupport, "CachedExtensionVSIXs"),
|
|
65
|
+
description: "Cached extension VSIX files",
|
|
66
|
+
category: "extensions",
|
|
67
|
+
priority: "normal",
|
|
68
|
+
safeToDelete: true,
|
|
69
|
+
},
|
|
70
|
+
// Workspace storage (generally safe but may lose some state)
|
|
71
|
+
{
|
|
72
|
+
path: path_1.default.join(windsurfAppSupport, "User", "workspaceStorage"),
|
|
73
|
+
description: "Workspace-specific cache and state",
|
|
74
|
+
category: "workspaces",
|
|
75
|
+
priority: "normal",
|
|
76
|
+
safeToDelete: true,
|
|
77
|
+
}, {
|
|
78
|
+
path: path_1.default.join(windsurfAppSupport, "User", "History"),
|
|
79
|
+
description: "File history and timeline cache",
|
|
80
|
+
category: "history",
|
|
81
|
+
priority: "normal",
|
|
82
|
+
safeToDelete: true,
|
|
83
|
+
},
|
|
84
|
+
// Crash dumps
|
|
85
|
+
{
|
|
86
|
+
path: path_1.default.join(windsurfAppSupport, "CrashDumps"),
|
|
87
|
+
description: "Application crash dumps",
|
|
88
|
+
category: "diagnostics",
|
|
89
|
+
priority: "low",
|
|
90
|
+
safeToDelete: true,
|
|
91
|
+
},
|
|
92
|
+
// Extension global storage (be careful - may contain important data)
|
|
93
|
+
{
|
|
94
|
+
path: path_1.default.join(windsurfAppSupport, "User", "globalStorage"),
|
|
95
|
+
description: "Extension global storage (some safe to clear)",
|
|
96
|
+
category: "storage",
|
|
97
|
+
priority: "important",
|
|
98
|
+
safeToDelete: false,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else if (platform === "win32") {
|
|
102
|
+
// Windows Windsurf paths
|
|
103
|
+
const appData = process.env.APPDATA || path_1.default.join(homeDir, "AppData", "Roaming");
|
|
104
|
+
const localAppData = process.env.LOCALAPPDATA || path_1.default.join(homeDir, "AppData", "Local");
|
|
105
|
+
const windsurfDir = path_1.default.join(homeDir, ".windsurf");
|
|
106
|
+
paths.push({
|
|
107
|
+
path: path_1.default.join(localAppData, "Windsurf", "Cache"),
|
|
108
|
+
description: "Windsurf application cache",
|
|
109
|
+
category: "cache",
|
|
110
|
+
priority: "low",
|
|
111
|
+
safeToDelete: true,
|
|
112
|
+
}, {
|
|
113
|
+
path: path_1.default.join(appData, "Windsurf", "logs"),
|
|
114
|
+
description: "Windsurf application logs",
|
|
115
|
+
category: "logs",
|
|
116
|
+
priority: "low",
|
|
117
|
+
safeToDelete: true,
|
|
118
|
+
}, {
|
|
119
|
+
path: path_1.default.join(windsurfDir, "extensions", ".obsolete"),
|
|
120
|
+
description: "Obsolete extension files",
|
|
121
|
+
category: "extensions",
|
|
122
|
+
priority: "low",
|
|
123
|
+
safeToDelete: true,
|
|
124
|
+
}, {
|
|
125
|
+
path: path_1.default.join(appData, "Windsurf", "CachedExtensions"),
|
|
126
|
+
description: "Cached extension metadata",
|
|
127
|
+
category: "extensions",
|
|
128
|
+
priority: "normal",
|
|
129
|
+
safeToDelete: true,
|
|
130
|
+
}, {
|
|
131
|
+
path: path_1.default.join(appData, "Windsurf", "User", "workspaceStorage"),
|
|
132
|
+
description: "Workspace-specific cache and state",
|
|
133
|
+
category: "workspaces",
|
|
134
|
+
priority: "normal",
|
|
135
|
+
safeToDelete: true,
|
|
136
|
+
}, {
|
|
137
|
+
path: path_1.default.join(appData, "Windsurf", "CrashDumps"),
|
|
138
|
+
description: "Application crash dumps",
|
|
139
|
+
category: "diagnostics",
|
|
140
|
+
priority: "low",
|
|
141
|
+
safeToDelete: true,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
// Linux Windsurf paths
|
|
146
|
+
const configDir = process.env.XDG_CONFIG_HOME || path_1.default.join(homeDir, ".config");
|
|
147
|
+
const cacheDir = process.env.XDG_CACHE_HOME || path_1.default.join(homeDir, ".cache");
|
|
148
|
+
const windsurfDir = path_1.default.join(homeDir, ".windsurf");
|
|
149
|
+
paths.push({
|
|
150
|
+
path: path_1.default.join(cacheDir, "windsurf"),
|
|
151
|
+
description: "Windsurf application cache",
|
|
152
|
+
category: "cache",
|
|
153
|
+
priority: "low",
|
|
154
|
+
safeToDelete: true,
|
|
155
|
+
}, {
|
|
156
|
+
path: path_1.default.join(configDir, "Windsurf", "logs"),
|
|
157
|
+
description: "Windsurf application logs",
|
|
158
|
+
category: "logs",
|
|
159
|
+
priority: "low",
|
|
160
|
+
safeToDelete: true,
|
|
161
|
+
}, {
|
|
162
|
+
path: path_1.default.join(windsurfDir, "extensions", ".obsolete"),
|
|
163
|
+
description: "Obsolete extension files",
|
|
164
|
+
category: "extensions",
|
|
165
|
+
priority: "low",
|
|
166
|
+
safeToDelete: true,
|
|
167
|
+
}, {
|
|
168
|
+
path: path_1.default.join(configDir, "Windsurf", "CachedExtensions"),
|
|
169
|
+
description: "Cached extension metadata",
|
|
170
|
+
category: "extensions",
|
|
171
|
+
priority: "normal",
|
|
172
|
+
safeToDelete: true,
|
|
173
|
+
}, {
|
|
174
|
+
path: path_1.default.join(configDir, "Windsurf", "User", "workspaceStorage"),
|
|
175
|
+
description: "Workspace-specific cache and state",
|
|
176
|
+
category: "workspaces",
|
|
177
|
+
priority: "normal",
|
|
178
|
+
safeToDelete: true,
|
|
179
|
+
}, {
|
|
180
|
+
path: path_1.default.join(configDir, "Windsurf", "CrashDumps"),
|
|
181
|
+
description: "Application crash dumps",
|
|
182
|
+
category: "diagnostics",
|
|
183
|
+
priority: "low",
|
|
184
|
+
safeToDelete: true,
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return paths;
|
|
188
|
+
}
|
|
189
|
+
async isAvailable() {
|
|
190
|
+
const homeDir = os_1.default.homedir();
|
|
191
|
+
const platform = process.platform;
|
|
192
|
+
// Check for .windsurf directory (extensions)
|
|
193
|
+
const windsurfDir = path_1.default.join(homeDir, ".windsurf");
|
|
194
|
+
if (await (0, fs_2.pathExists)(windsurfDir)) {
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
// Check for cache directories
|
|
198
|
+
const cachePaths = this.getCachePaths();
|
|
199
|
+
for (const { path: cachePath } of cachePaths) {
|
|
200
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Check for application
|
|
205
|
+
if (platform === "darwin") {
|
|
206
|
+
const appPath = "/Applications/Windsurf.app";
|
|
207
|
+
if (await (0, fs_2.pathExists)(appPath)) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return false;
|
|
212
|
+
}
|
|
213
|
+
async getCacheInfo() {
|
|
214
|
+
const cachePaths = this.getCachePaths();
|
|
215
|
+
const existingPaths = [];
|
|
216
|
+
let totalSize = 0;
|
|
217
|
+
for (const { path: cachePath, safeToDelete } of cachePaths) {
|
|
218
|
+
if (!safeToDelete)
|
|
219
|
+
continue; // Only count safe-to-delete paths
|
|
220
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
221
|
+
existingPaths.push(cachePath);
|
|
222
|
+
const size = await (0, fs_2.getEstimatedDirectorySize)(cachePath);
|
|
223
|
+
totalSize += size;
|
|
224
|
+
(0, cli_1.printVerbose)(` 🔍 📁 ${cachePath}: ${(size / (1024 * 1024)).toFixed(1)} MB`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
name: this.name,
|
|
229
|
+
type: this.type,
|
|
230
|
+
description: this.description,
|
|
231
|
+
paths: existingPaths,
|
|
232
|
+
isInstalled: await this.isAvailable(),
|
|
233
|
+
size: totalSize,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
async getCacheCategories() {
|
|
237
|
+
const cachePaths = this.getCachePaths();
|
|
238
|
+
const categoryMap = new Map();
|
|
239
|
+
for (const { path: cachePath, description, category, priority, safeToDelete } of cachePaths) {
|
|
240
|
+
if (!safeToDelete)
|
|
241
|
+
continue;
|
|
242
|
+
if (!(await (0, fs_2.pathExists)(cachePath)))
|
|
243
|
+
continue;
|
|
244
|
+
const size = await (0, fs_2.getDirectorySize)(cachePath);
|
|
245
|
+
let stats;
|
|
246
|
+
try {
|
|
247
|
+
stats = await fs_1.promises.stat(cachePath);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
stats = null;
|
|
251
|
+
}
|
|
252
|
+
const categoryId = `windsurf-${category}`;
|
|
253
|
+
const existing = categoryMap.get(categoryId);
|
|
254
|
+
if (existing) {
|
|
255
|
+
existing.paths.push(cachePath);
|
|
256
|
+
existing.size = (existing.size || 0) + size;
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
categoryMap.set(categoryId, {
|
|
260
|
+
id: categoryId,
|
|
261
|
+
name: `Windsurf ${category}`,
|
|
262
|
+
description,
|
|
263
|
+
paths: [cachePath],
|
|
264
|
+
size,
|
|
265
|
+
lastModified: stats?.mtime,
|
|
266
|
+
priority,
|
|
267
|
+
useCase: "development",
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return Array.from(categoryMap.values());
|
|
272
|
+
}
|
|
273
|
+
async clear(dryRun = false, _criteria, _cacheInfo, protectedPaths) {
|
|
274
|
+
const cachePaths = this.getCachePaths();
|
|
275
|
+
const clearedPaths = [];
|
|
276
|
+
let sizeBefore = 0;
|
|
277
|
+
let sizeAfter = 0;
|
|
278
|
+
for (const { path: cachePath, description, safeToDelete } of cachePaths) {
|
|
279
|
+
if (!safeToDelete)
|
|
280
|
+
continue; // Only clear safe paths by default
|
|
281
|
+
if (!(await (0, fs_2.pathExists)(cachePath)))
|
|
282
|
+
continue;
|
|
283
|
+
// Check if path is protected
|
|
284
|
+
if (protectedPaths?.some((p) => cachePath.startsWith(p))) {
|
|
285
|
+
(0, cli_1.printVerbose)(` Skipping protected path: ${cachePath}`);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
const pathSize = await (0, fs_2.getDirectorySize)(cachePath);
|
|
289
|
+
sizeBefore += pathSize;
|
|
290
|
+
if (dryRun) {
|
|
291
|
+
(0, cli_1.printVerbose)(` [DRY RUN] Would clear: ${description} (${(pathSize / (1024 * 1024)).toFixed(1)} MB)`);
|
|
292
|
+
clearedPaths.push(cachePath);
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
try {
|
|
296
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
297
|
+
clearedPaths.push(cachePath);
|
|
298
|
+
(0, cli_1.printVerbose)(` ✓ Cleared: ${description}`);
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
(0, cli_1.printVerbose)(` ✗ Failed to clear ${description}: ${error}`);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
if (!dryRun) {
|
|
306
|
+
for (const { path: cachePath, safeToDelete } of cachePaths) {
|
|
307
|
+
if (!safeToDelete)
|
|
308
|
+
continue;
|
|
309
|
+
if (await (0, fs_2.pathExists)(cachePath)) {
|
|
310
|
+
sizeAfter += await (0, fs_2.getDirectorySize)(cachePath);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
name: this.name,
|
|
316
|
+
success: true,
|
|
317
|
+
sizeBefore,
|
|
318
|
+
sizeAfter: dryRun ? sizeBefore : sizeAfter,
|
|
319
|
+
clearedPaths,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
async clearByCategory(categoryIds, dryRun = false, _cacheInfo, protectedPaths) {
|
|
323
|
+
const categories = await this.getCacheCategories();
|
|
324
|
+
const targetCategories = categories.filter((c) => categoryIds.includes(c.id));
|
|
325
|
+
const clearedPaths = [];
|
|
326
|
+
let sizeBefore = 0;
|
|
327
|
+
let sizeAfter = 0;
|
|
328
|
+
for (const category of targetCategories) {
|
|
329
|
+
for (const cachePath of category.paths) {
|
|
330
|
+
if (!(await (0, fs_2.pathExists)(cachePath)))
|
|
331
|
+
continue;
|
|
332
|
+
if (protectedPaths?.some((p) => cachePath.startsWith(p))) {
|
|
333
|
+
(0, cli_1.printVerbose)(` Skipping protected path: ${cachePath}`);
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
const pathSize = await (0, fs_2.getDirectorySize)(cachePath);
|
|
337
|
+
sizeBefore += pathSize;
|
|
338
|
+
if (dryRun) {
|
|
339
|
+
(0, cli_1.printVerbose)(` [DRY RUN] Would clear: ${category.name} (${(pathSize / (1024 * 1024)).toFixed(1)} MB)`);
|
|
340
|
+
clearedPaths.push(cachePath);
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
try {
|
|
344
|
+
await (0, fs_2.safeRmrf)(cachePath);
|
|
345
|
+
clearedPaths.push(cachePath);
|
|
346
|
+
(0, cli_1.printVerbose)(` ✓ Cleared: ${category.name}`);
|
|
347
|
+
}
|
|
348
|
+
catch (error) {
|
|
349
|
+
(0, cli_1.printVerbose)(` ✗ Failed to clear ${category.name}: ${error}`);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
return {
|
|
355
|
+
name: this.name,
|
|
356
|
+
success: true,
|
|
357
|
+
sizeBefore,
|
|
358
|
+
sizeAfter: dryRun ? sizeBefore : sizeAfter,
|
|
359
|
+
clearedPaths,
|
|
360
|
+
clearedCategories: categoryIds,
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
exports.WindsurfCleaner = WindsurfCleaner;
|
|
365
|
+
exports.default = new WindsurfCleaner();
|
|
366
|
+
//# sourceMappingURL=windsurf.js.map
|