squeaky-clean 0.1.7 → 0.1.10

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 (217) hide show
  1. package/package.json +25 -23
  2. package/dist/cleaners/BaseCleaner.d.ts +0 -57
  3. package/dist/cleaners/BaseCleaner.d.ts.map +0 -1
  4. package/dist/cleaners/BaseCleaner.js +0 -299
  5. package/dist/cleaners/BaseCleaner.js.map +0 -1
  6. package/dist/cleaners/CleanerRegistry.d.ts +0 -65
  7. package/dist/cleaners/CleanerRegistry.d.ts.map +0 -1
  8. package/dist/cleaners/CleanerRegistry.js +0 -112
  9. package/dist/cleaners/CleanerRegistry.js.map +0 -1
  10. package/dist/cleaners/androidstudio.d.ts +0 -16
  11. package/dist/cleaners/androidstudio.d.ts.map +0 -1
  12. package/dist/cleaners/androidstudio.js +0 -375
  13. package/dist/cleaners/androidstudio.js.map +0 -1
  14. package/dist/cleaners/brew.d.ts +0 -4
  15. package/dist/cleaners/brew.d.ts.map +0 -1
  16. package/dist/cleaners/brew.js +0 -197
  17. package/dist/cleaners/brew.js.map +0 -1
  18. package/dist/cleaners/brewEnhanced.d.ts +0 -18
  19. package/dist/cleaners/brewEnhanced.d.ts.map +0 -1
  20. package/dist/cleaners/brewEnhanced.js +0 -255
  21. package/dist/cleaners/brewEnhanced.js.map +0 -1
  22. package/dist/cleaners/bun.d.ts +0 -14
  23. package/dist/cleaners/bun.d.ts.map +0 -1
  24. package/dist/cleaners/bun.js +0 -207
  25. package/dist/cleaners/bun.js.map +0 -1
  26. package/dist/cleaners/cargo.d.ts +0 -15
  27. package/dist/cleaners/cargo.d.ts.map +0 -1
  28. package/dist/cleaners/cargo.js +0 -193
  29. package/dist/cleaners/cargo.js.map +0 -1
  30. package/dist/cleaners/chrome.d.ts +0 -14
  31. package/dist/cleaners/chrome.d.ts.map +0 -1
  32. package/dist/cleaners/chrome.js +0 -250
  33. package/dist/cleaners/chrome.js.map +0 -1
  34. package/dist/cleaners/cocoapods.d.ts +0 -16
  35. package/dist/cleaners/cocoapods.d.ts.map +0 -1
  36. package/dist/cleaners/cocoapods.js +0 -180
  37. package/dist/cleaners/cocoapods.js.map +0 -1
  38. package/dist/cleaners/docker.d.ts +0 -35
  39. package/dist/cleaners/docker.d.ts.map +0 -1
  40. package/dist/cleaners/docker.js +0 -285
  41. package/dist/cleaners/docker.js.map +0 -1
  42. package/dist/cleaners/firefox.d.ts +0 -15
  43. package/dist/cleaners/firefox.d.ts.map +0 -1
  44. package/dist/cleaners/firefox.js +0 -281
  45. package/dist/cleaners/firefox.js.map +0 -1
  46. package/dist/cleaners/flutter.d.ts +0 -18
  47. package/dist/cleaners/flutter.d.ts.map +0 -1
  48. package/dist/cleaners/flutter.js +0 -354
  49. package/dist/cleaners/flutter.js.map +0 -1
  50. package/dist/cleaners/goBuild.d.ts +0 -18
  51. package/dist/cleaners/goBuild.d.ts.map +0 -1
  52. package/dist/cleaners/goBuild.js +0 -196
  53. package/dist/cleaners/goBuild.js.map +0 -1
  54. package/dist/cleaners/gradle.d.ts +0 -14
  55. package/dist/cleaners/gradle.d.ts.map +0 -1
  56. package/dist/cleaners/gradle.js +0 -336
  57. package/dist/cleaners/gradle.js.map +0 -1
  58. package/dist/cleaners/index.d.ts +0 -51
  59. package/dist/cleaners/index.d.ts.map +0 -1
  60. package/dist/cleaners/index.js +0 -247
  61. package/dist/cleaners/index.js.map +0 -1
  62. package/dist/cleaners/jetbrains.d.ts +0 -18
  63. package/dist/cleaners/jetbrains.d.ts.map +0 -1
  64. package/dist/cleaners/jetbrains.js +0 -441
  65. package/dist/cleaners/jetbrains.js.map +0 -1
  66. package/dist/cleaners/maven.d.ts +0 -15
  67. package/dist/cleaners/maven.d.ts.map +0 -1
  68. package/dist/cleaners/maven.js +0 -182
  69. package/dist/cleaners/maven.js.map +0 -1
  70. package/dist/cleaners/nix.d.ts +0 -4
  71. package/dist/cleaners/nix.d.ts.map +0 -1
  72. package/dist/cleaners/nix.js +0 -227
  73. package/dist/cleaners/nix.js.map +0 -1
  74. package/dist/cleaners/nodeGyp.d.ts +0 -14
  75. package/dist/cleaners/nodeGyp.d.ts.map +0 -1
  76. package/dist/cleaners/nodeGyp.js +0 -157
  77. package/dist/cleaners/nodeGyp.js.map +0 -1
  78. package/dist/cleaners/npm.d.ts +0 -14
  79. package/dist/cleaners/npm.d.ts.map +0 -1
  80. package/dist/cleaners/npm.js +0 -198
  81. package/dist/cleaners/npm.js.map +0 -1
  82. package/dist/cleaners/npmEnhanced.d.ts +0 -19
  83. package/dist/cleaners/npmEnhanced.d.ts.map +0 -1
  84. package/dist/cleaners/npmEnhanced.js +0 -336
  85. package/dist/cleaners/npmEnhanced.js.map +0 -1
  86. package/dist/cleaners/nuget.d.ts +0 -16
  87. package/dist/cleaners/nuget.d.ts.map +0 -1
  88. package/dist/cleaners/nuget.js +0 -197
  89. package/dist/cleaners/nuget.js.map +0 -1
  90. package/dist/cleaners/nx.d.ts +0 -18
  91. package/dist/cleaners/nx.d.ts.map +0 -1
  92. package/dist/cleaners/nx.js +0 -308
  93. package/dist/cleaners/nx.js.map +0 -1
  94. package/dist/cleaners/pip.d.ts +0 -19
  95. package/dist/cleaners/pip.d.ts.map +0 -1
  96. package/dist/cleaners/pip.js +0 -334
  97. package/dist/cleaners/pip.js.map +0 -1
  98. package/dist/cleaners/pipenv.d.ts +0 -16
  99. package/dist/cleaners/pipenv.d.ts.map +0 -1
  100. package/dist/cleaners/pipenv.js +0 -184
  101. package/dist/cleaners/pipenv.js.map +0 -1
  102. package/dist/cleaners/pnpm.d.ts +0 -14
  103. package/dist/cleaners/pnpm.d.ts.map +0 -1
  104. package/dist/cleaners/pnpm.js +0 -209
  105. package/dist/cleaners/pnpm.js.map +0 -1
  106. package/dist/cleaners/poetry.d.ts +0 -16
  107. package/dist/cleaners/poetry.d.ts.map +0 -1
  108. package/dist/cleaners/poetry.js +0 -184
  109. package/dist/cleaners/poetry.js.map +0 -1
  110. package/dist/cleaners/swiftpm.d.ts +0 -16
  111. package/dist/cleaners/swiftpm.d.ts.map +0 -1
  112. package/dist/cleaners/swiftpm.js +0 -179
  113. package/dist/cleaners/swiftpm.js.map +0 -1
  114. package/dist/cleaners/turbo.d.ts +0 -18
  115. package/dist/cleaners/turbo.d.ts.map +0 -1
  116. package/dist/cleaners/turbo.js +0 -325
  117. package/dist/cleaners/turbo.js.map +0 -1
  118. package/dist/cleaners/vite.d.ts +0 -17
  119. package/dist/cleaners/vite.d.ts.map +0 -1
  120. package/dist/cleaners/vite.js +0 -274
  121. package/dist/cleaners/vite.js.map +0 -1
  122. package/dist/cleaners/vscode.d.ts +0 -14
  123. package/dist/cleaners/vscode.d.ts.map +0 -1
  124. package/dist/cleaners/vscode.js +0 -354
  125. package/dist/cleaners/vscode.js.map +0 -1
  126. package/dist/cleaners/webpack.d.ts +0 -17
  127. package/dist/cleaners/webpack.d.ts.map +0 -1
  128. package/dist/cleaners/webpack.js +0 -263
  129. package/dist/cleaners/webpack.js.map +0 -1
  130. package/dist/cleaners/xcode.d.ts +0 -14
  131. package/dist/cleaners/xcode.d.ts.map +0 -1
  132. package/dist/cleaners/xcode.js +0 -348
  133. package/dist/cleaners/xcode.js.map +0 -1
  134. package/dist/cleaners/yarn.d.ts +0 -16
  135. package/dist/cleaners/yarn.d.ts.map +0 -1
  136. package/dist/cleaners/yarn.js +0 -266
  137. package/dist/cleaners/yarn.js.map +0 -1
  138. package/dist/cli.d.ts +0 -3
  139. package/dist/cli.d.ts.map +0 -1
  140. package/dist/cli.js +0 -346
  141. package/dist/cli.js.map +0 -1
  142. package/dist/commands/auto.d.ts +0 -8
  143. package/dist/commands/auto.d.ts.map +0 -1
  144. package/dist/commands/auto.js +0 -224
  145. package/dist/commands/auto.js.map +0 -1
  146. package/dist/commands/categories.d.ts +0 -8
  147. package/dist/commands/categories.d.ts.map +0 -1
  148. package/dist/commands/categories.js +0 -133
  149. package/dist/commands/categories.js.map +0 -1
  150. package/dist/commands/clean.d.ts +0 -3
  151. package/dist/commands/clean.d.ts.map +0 -1
  152. package/dist/commands/clean.js +0 -149
  153. package/dist/commands/clean.js.map +0 -1
  154. package/dist/commands/config.d.ts +0 -14
  155. package/dist/commands/config.d.ts.map +0 -1
  156. package/dist/commands/config.js +0 -445
  157. package/dist/commands/config.js.map +0 -1
  158. package/dist/commands/configDoctor.d.ts +0 -26
  159. package/dist/commands/configDoctor.d.ts.map +0 -1
  160. package/dist/commands/configDoctor.js +0 -60
  161. package/dist/commands/configDoctor.js.map +0 -1
  162. package/dist/commands/doctor.d.ts +0 -2
  163. package/dist/commands/doctor.d.ts.map +0 -1
  164. package/dist/commands/doctor.js +0 -141
  165. package/dist/commands/doctor.js.map +0 -1
  166. package/dist/commands/emojis.d.ts +0 -2
  167. package/dist/commands/emojis.d.ts.map +0 -1
  168. package/dist/commands/emojis.js +0 -28
  169. package/dist/commands/emojis.js.map +0 -1
  170. package/dist/commands/interactive.d.ts +0 -3
  171. package/dist/commands/interactive.d.ts.map +0 -1
  172. package/dist/commands/interactive.js +0 -284
  173. package/dist/commands/interactive.js.map +0 -1
  174. package/dist/commands/interactiveEnhanced.d.ts +0 -4
  175. package/dist/commands/interactiveEnhanced.d.ts.map +0 -1
  176. package/dist/commands/interactiveEnhanced.js +0 -460
  177. package/dist/commands/interactiveEnhanced.js.map +0 -1
  178. package/dist/commands/list.d.ts +0 -2
  179. package/dist/commands/list.d.ts.map +0 -1
  180. package/dist/commands/list.js +0 -68
  181. package/dist/commands/list.js.map +0 -1
  182. package/dist/commands/sizes.d.ts +0 -2
  183. package/dist/commands/sizes.d.ts.map +0 -1
  184. package/dist/commands/sizes.js +0 -87
  185. package/dist/commands/sizes.js.map +0 -1
  186. package/dist/config/index.d.ts +0 -31
  187. package/dist/config/index.d.ts.map +0 -1
  188. package/dist/config/index.js +0 -241
  189. package/dist/config/index.js.map +0 -1
  190. package/dist/config/loadConfig.d.ts +0 -7
  191. package/dist/config/loadConfig.d.ts.map +0 -1
  192. package/dist/config/loadConfig.js +0 -103
  193. package/dist/config/loadConfig.js.map +0 -1
  194. package/dist/config/migrateConfig.d.ts +0 -56
  195. package/dist/config/migrateConfig.d.ts.map +0 -1
  196. package/dist/config/migrateConfig.js +0 -102
  197. package/dist/config/migrateConfig.js.map +0 -1
  198. package/dist/plugins/discovery.d.ts +0 -6
  199. package/dist/plugins/discovery.d.ts.map +0 -1
  200. package/dist/plugins/discovery.js +0 -64
  201. package/dist/plugins/discovery.js.map +0 -1
  202. package/dist/profiles/index.d.ts +0 -61
  203. package/dist/profiles/index.d.ts.map +0 -1
  204. package/dist/profiles/index.js +0 -361
  205. package/dist/profiles/index.js.map +0 -1
  206. package/dist/types/index.d.ts +0 -161
  207. package/dist/types/index.d.ts.map +0 -1
  208. package/dist/types/index.js +0 -3
  209. package/dist/types/index.js.map +0 -1
  210. package/dist/utils/cli.d.ts +0 -44
  211. package/dist/utils/cli.d.ts.map +0 -1
  212. package/dist/utils/cli.js +0 -410
  213. package/dist/utils/cli.js.map +0 -1
  214. package/dist/utils/fs.d.ts +0 -15
  215. package/dist/utils/fs.d.ts.map +0 -1
  216. package/dist/utils/fs.js +0 -218
  217. package/dist/utils/fs.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"AAIA,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnE;AAYD,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,oBAAoB,GAAE,OAAe,GACpC,OAAO,CAAC,MAAM,CAAC,CAcjB;AA2DD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAuCjB;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BhE;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAWjD;AAED,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAOtB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAOtD;AAGD,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;AAGD,wBAAsB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/D"}
package/dist/utils/fs.js DELETED
@@ -1,218 +0,0 @@
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.pathExists = pathExists;
7
- exports.getDirectorySize = getDirectorySize;
8
- exports.getEstimatedDirectorySize = getEstimatedDirectorySize;
9
- exports.safeRmrf = safeRmrf;
10
- exports.createDirectoryIfNotExists = createDirectoryIfNotExists;
11
- exports.isWritable = isWritable;
12
- exports.getDiskSpace = getDiskSpace;
13
- exports.getFileModificationTime = getFileModificationTime;
14
- exports.sanitizePath = sanitizePath;
15
- exports.getCacheSize = getCacheSize;
16
- exports.clearPaths = clearPaths;
17
- const fs_1 = require("fs");
18
- const path_1 = __importDefault(require("path"));
19
- const rimraf_1 = require("rimraf");
20
- async function pathExists(filePath) {
21
- try {
22
- await fs_1.promises.access(filePath);
23
- return true;
24
- }
25
- catch {
26
- return false;
27
- }
28
- }
29
- // Timeout wrapper for directory size calculation
30
- const withTimeout = (promise, timeoutMs) => {
31
- return Promise.race([
32
- promise,
33
- new Promise((_, reject) => setTimeout(() => reject(new Error("Timeout")), timeoutMs)),
34
- ]);
35
- };
36
- async function getDirectorySize(dirPath, skipLargeDirectories = false) {
37
- // Wrap the actual calculation with an 8-second timeout to prevent hangs
38
- try {
39
- return await withTimeout(calculateDirectorySize(dirPath, skipLargeDirectories), 8000);
40
- }
41
- catch (error) {
42
- if (error instanceof Error && error.message === "Timeout") {
43
- // Use estimated size for directories that take too long
44
- return getEstimatedDirectorySize(dirPath);
45
- }
46
- return 0;
47
- }
48
- }
49
- async function calculateDirectorySize(dirPath, skipLargeDirectories = false) {
50
- try {
51
- const stats = await fs_1.promises.stat(dirPath);
52
- if (!stats.isDirectory()) {
53
- return stats.size;
54
- }
55
- // For very large cache directories, return estimated size instead of calculating exact size
56
- if (skipLargeDirectories) {
57
- return getEstimatedDirectorySize(dirPath);
58
- }
59
- let totalSize = 0;
60
- const stack = [dirPath];
61
- let processedCount = 0;
62
- const maxItems = 10000; // Limit total items processed to prevent memory issues
63
- while (stack.length > 0 && processedCount < maxItems) {
64
- const currentDir = stack.pop();
65
- try {
66
- const items = await fs_1.promises.readdir(currentDir);
67
- for (const item of items) {
68
- if (processedCount >= maxItems)
69
- break;
70
- const itemPath = path_1.default.join(currentDir, item);
71
- try {
72
- const itemStats = await fs_1.promises.stat(itemPath);
73
- if (itemStats.isDirectory()) {
74
- stack.push(itemPath);
75
- }
76
- else {
77
- totalSize += itemStats.size;
78
- }
79
- processedCount++;
80
- }
81
- catch {
82
- // Skip items we can't access (permissions, etc.)
83
- }
84
- }
85
- }
86
- catch {
87
- // Skip directories we can't access
88
- }
89
- }
90
- return totalSize;
91
- }
92
- catch {
93
- return 0;
94
- }
95
- }
96
- // Fast estimation for large directories to avoid memory issues
97
- async function getEstimatedDirectorySize(dirPath) {
98
- try {
99
- const stats = await fs_1.promises.stat(dirPath);
100
- if (!stats.isDirectory()) {
101
- return stats.size;
102
- }
103
- // Sample a few items to estimate average size
104
- const items = await fs_1.promises.readdir(dirPath);
105
- const sampleSize = Math.min(100, items.length);
106
- if (sampleSize === 0)
107
- return 0;
108
- let sampleTotalSize = 0;
109
- let sampleFileCount = 0;
110
- for (let i = 0; i < sampleSize; i++) {
111
- const itemPath = path_1.default.join(dirPath, items[i]);
112
- try {
113
- const itemStats = await fs_1.promises.stat(itemPath);
114
- if (!itemStats.isDirectory()) {
115
- sampleTotalSize += itemStats.size;
116
- sampleFileCount++;
117
- }
118
- }
119
- catch {
120
- // Skip items we can't access
121
- }
122
- }
123
- if (sampleFileCount === 0)
124
- return 0;
125
- const averageFileSize = sampleTotalSize / sampleFileCount;
126
- const totalFiles = items.length;
127
- return Math.round(averageFileSize * totalFiles);
128
- }
129
- catch {
130
- return 0;
131
- }
132
- }
133
- async function safeRmrf(targetPath) {
134
- try {
135
- if (!(await pathExists(targetPath))) {
136
- return;
137
- }
138
- // Safety checks
139
- const normalizedPath = path_1.default.resolve(targetPath);
140
- const isInHomeOrTemp = normalizedPath.includes(path_1.default.join(require("os").homedir())) ||
141
- normalizedPath.includes(require("os").tmpdir()) ||
142
- normalizedPath.includes("node_modules") ||
143
- normalizedPath.includes("cache") ||
144
- normalizedPath.includes("temp");
145
- if (!isInHomeOrTemp) {
146
- throw new Error(`Refusing to delete path outside safe directories: ${normalizedPath}`);
147
- }
148
- // Use rimraf for cross-platform reliable deletion
149
- await (0, rimraf_1.rimraf)(normalizedPath, {
150
- maxRetries: 3,
151
- retryDelay: 100,
152
- });
153
- }
154
- catch (error) {
155
- throw new Error(`Failed to delete ${targetPath}: ${error instanceof Error ? error.message : error}`);
156
- }
157
- }
158
- async function createDirectoryIfNotExists(dirPath) {
159
- try {
160
- await fs_1.promises.mkdir(dirPath, { recursive: true });
161
- }
162
- catch (error) {
163
- if (error.code !== "EEXIST") {
164
- throw error;
165
- }
166
- }
167
- }
168
- async function isWritable(dirPath) {
169
- try {
170
- await fs_1.promises.access(dirPath, fs_1.promises.constants.W_OK);
171
- return true;
172
- }
173
- catch {
174
- return false;
175
- }
176
- }
177
- async function getDiskSpace(dirPath) {
178
- try {
179
- const stats = await fs_1.promises.statfs(dirPath);
180
- return {
181
- free: stats.bavail * stats.bsize,
182
- total: stats.blocks * stats.bsize,
183
- };
184
- }
185
- catch {
186
- // statfs not available on all platforms
187
- return null;
188
- }
189
- }
190
- async function getFileModificationTime(filePath) {
191
- try {
192
- const stats = await fs_1.promises.stat(filePath);
193
- return stats.mtime;
194
- }
195
- catch {
196
- return null;
197
- }
198
- }
199
- function sanitizePath(inputPath) {
200
- if (!inputPath)
201
- return ".";
202
- // Normalize path separators to forward slashes and remove invalid characters
203
- return path_1.default
204
- .normalize(inputPath)
205
- .replace(/\\/g, "/")
206
- .replace(/[<>:"|?*]/g, "");
207
- }
208
- // Alias for cache size calculation
209
- async function getCacheSize(dirPath) {
210
- return getDirectorySize(dirPath, false);
211
- }
212
- // Clear multiple paths
213
- async function clearPaths(paths) {
214
- for (const p of paths) {
215
- await safeRmrf(p);
216
- }
217
- }
218
- //# sourceMappingURL=fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/utils/fs.ts"],"names":[],"mappings":"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"}