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.
Files changed (249) hide show
  1. package/dist/cleaners/BaseCleaner.d.ts +57 -0
  2. package/dist/cleaners/BaseCleaner.d.ts.map +1 -0
  3. package/dist/cleaners/BaseCleaner.js +299 -0
  4. package/dist/cleaners/BaseCleaner.js.map +1 -0
  5. package/dist/cleaners/CleanerRegistry.d.ts +65 -0
  6. package/dist/cleaners/CleanerRegistry.d.ts.map +1 -0
  7. package/dist/cleaners/CleanerRegistry.js +112 -0
  8. package/dist/cleaners/CleanerRegistry.js.map +1 -0
  9. package/dist/cleaners/androidstudio.d.ts +16 -0
  10. package/dist/cleaners/androidstudio.d.ts.map +1 -0
  11. package/dist/cleaners/androidstudio.js +375 -0
  12. package/dist/cleaners/androidstudio.js.map +1 -0
  13. package/dist/cleaners/brew.d.ts +4 -0
  14. package/dist/cleaners/brew.d.ts.map +1 -0
  15. package/dist/cleaners/brew.js +197 -0
  16. package/dist/cleaners/brew.js.map +1 -0
  17. package/dist/cleaners/brewEnhanced.d.ts +18 -0
  18. package/dist/cleaners/brewEnhanced.d.ts.map +1 -0
  19. package/dist/cleaners/brewEnhanced.js +255 -0
  20. package/dist/cleaners/brewEnhanced.js.map +1 -0
  21. package/dist/cleaners/bun.d.ts +14 -0
  22. package/dist/cleaners/bun.d.ts.map +1 -0
  23. package/dist/cleaners/bun.js +207 -0
  24. package/dist/cleaners/bun.js.map +1 -0
  25. package/dist/cleaners/cargo.d.ts +15 -0
  26. package/dist/cleaners/cargo.d.ts.map +1 -0
  27. package/dist/cleaners/cargo.js +193 -0
  28. package/dist/cleaners/cargo.js.map +1 -0
  29. package/dist/cleaners/chrome.d.ts +14 -0
  30. package/dist/cleaners/chrome.d.ts.map +1 -0
  31. package/dist/cleaners/chrome.js +250 -0
  32. package/dist/cleaners/chrome.js.map +1 -0
  33. package/dist/cleaners/cocoapods.d.ts +16 -0
  34. package/dist/cleaners/cocoapods.d.ts.map +1 -0
  35. package/dist/cleaners/cocoapods.js +180 -0
  36. package/dist/cleaners/cocoapods.js.map +1 -0
  37. package/dist/cleaners/cursor.d.ts +15 -0
  38. package/dist/cleaners/cursor.d.ts.map +1 -0
  39. package/dist/cleaners/cursor.js +377 -0
  40. package/dist/cleaners/cursor.js.map +1 -0
  41. package/dist/cleaners/docker.d.ts +35 -0
  42. package/dist/cleaners/docker.d.ts.map +1 -0
  43. package/dist/cleaners/docker.js +288 -0
  44. package/dist/cleaners/docker.js.map +1 -0
  45. package/dist/cleaners/firefox.d.ts +15 -0
  46. package/dist/cleaners/firefox.d.ts.map +1 -0
  47. package/dist/cleaners/firefox.js +281 -0
  48. package/dist/cleaners/firefox.js.map +1 -0
  49. package/dist/cleaners/flutter.d.ts +18 -0
  50. package/dist/cleaners/flutter.d.ts.map +1 -0
  51. package/dist/cleaners/flutter.js +354 -0
  52. package/dist/cleaners/flutter.js.map +1 -0
  53. package/dist/cleaners/goBuild.d.ts +18 -0
  54. package/dist/cleaners/goBuild.d.ts.map +1 -0
  55. package/dist/cleaners/goBuild.js +196 -0
  56. package/dist/cleaners/goBuild.js.map +1 -0
  57. package/dist/cleaners/gradle.d.ts +14 -0
  58. package/dist/cleaners/gradle.d.ts.map +1 -0
  59. package/dist/cleaners/gradle.js +336 -0
  60. package/dist/cleaners/gradle.js.map +1 -0
  61. package/dist/cleaners/index.d.ts +51 -0
  62. package/dist/cleaners/index.d.ts.map +1 -0
  63. package/dist/cleaners/index.js +267 -0
  64. package/dist/cleaners/index.js.map +1 -0
  65. package/dist/cleaners/jetbrains.d.ts +18 -0
  66. package/dist/cleaners/jetbrains.d.ts.map +1 -0
  67. package/dist/cleaners/jetbrains.js +441 -0
  68. package/dist/cleaners/jetbrains.js.map +1 -0
  69. package/dist/cleaners/maven.d.ts +15 -0
  70. package/dist/cleaners/maven.d.ts.map +1 -0
  71. package/dist/cleaners/maven.js +182 -0
  72. package/dist/cleaners/maven.js.map +1 -0
  73. package/dist/cleaners/nix.d.ts +4 -0
  74. package/dist/cleaners/nix.d.ts.map +1 -0
  75. package/dist/cleaners/nix.js +227 -0
  76. package/dist/cleaners/nix.js.map +1 -0
  77. package/dist/cleaners/nodeGyp.d.ts +14 -0
  78. package/dist/cleaners/nodeGyp.d.ts.map +1 -0
  79. package/dist/cleaners/nodeGyp.js +157 -0
  80. package/dist/cleaners/nodeGyp.js.map +1 -0
  81. package/dist/cleaners/npm.d.ts +14 -0
  82. package/dist/cleaners/npm.d.ts.map +1 -0
  83. package/dist/cleaners/npm.js +203 -0
  84. package/dist/cleaners/npm.js.map +1 -0
  85. package/dist/cleaners/npmEnhanced.d.ts +19 -0
  86. package/dist/cleaners/npmEnhanced.d.ts.map +1 -0
  87. package/dist/cleaners/npmEnhanced.js +336 -0
  88. package/dist/cleaners/npmEnhanced.js.map +1 -0
  89. package/dist/cleaners/nuget.d.ts +16 -0
  90. package/dist/cleaners/nuget.d.ts.map +1 -0
  91. package/dist/cleaners/nuget.js +197 -0
  92. package/dist/cleaners/nuget.js.map +1 -0
  93. package/dist/cleaners/nx.d.ts +18 -0
  94. package/dist/cleaners/nx.d.ts.map +1 -0
  95. package/dist/cleaners/nx.js +308 -0
  96. package/dist/cleaners/nx.js.map +1 -0
  97. package/dist/cleaners/pip.d.ts +19 -0
  98. package/dist/cleaners/pip.d.ts.map +1 -0
  99. package/dist/cleaners/pip.js +334 -0
  100. package/dist/cleaners/pip.js.map +1 -0
  101. package/dist/cleaners/pipenv.d.ts +16 -0
  102. package/dist/cleaners/pipenv.d.ts.map +1 -0
  103. package/dist/cleaners/pipenv.js +184 -0
  104. package/dist/cleaners/pipenv.js.map +1 -0
  105. package/dist/cleaners/playwright.d.ts +15 -0
  106. package/dist/cleaners/playwright.d.ts.map +1 -0
  107. package/dist/cleaners/playwright.js +221 -0
  108. package/dist/cleaners/playwright.js.map +1 -0
  109. package/dist/cleaners/pnpm.d.ts +14 -0
  110. package/dist/cleaners/pnpm.d.ts.map +1 -0
  111. package/dist/cleaners/pnpm.js +214 -0
  112. package/dist/cleaners/pnpm.js.map +1 -0
  113. package/dist/cleaners/poetry.d.ts +16 -0
  114. package/dist/cleaners/poetry.d.ts.map +1 -0
  115. package/dist/cleaners/poetry.js +184 -0
  116. package/dist/cleaners/poetry.js.map +1 -0
  117. package/dist/cleaners/swiftpm.d.ts +16 -0
  118. package/dist/cleaners/swiftpm.d.ts.map +1 -0
  119. package/dist/cleaners/swiftpm.js +179 -0
  120. package/dist/cleaners/swiftpm.js.map +1 -0
  121. package/dist/cleaners/turbo.d.ts +18 -0
  122. package/dist/cleaners/turbo.d.ts.map +1 -0
  123. package/dist/cleaners/turbo.js +325 -0
  124. package/dist/cleaners/turbo.js.map +1 -0
  125. package/dist/cleaners/universalBinary.d.ts +20 -0
  126. package/dist/cleaners/universalBinary.d.ts.map +1 -0
  127. package/dist/cleaners/universalBinary.js +318 -0
  128. package/dist/cleaners/universalBinary.js.map +1 -0
  129. package/dist/cleaners/vite.d.ts +17 -0
  130. package/dist/cleaners/vite.d.ts.map +1 -0
  131. package/dist/cleaners/vite.js +274 -0
  132. package/dist/cleaners/vite.js.map +1 -0
  133. package/dist/cleaners/vscode.d.ts +15 -0
  134. package/dist/cleaners/vscode.d.ts.map +1 -0
  135. package/dist/cleaners/vscode.js +411 -0
  136. package/dist/cleaners/vscode.js.map +1 -0
  137. package/dist/cleaners/webpack.d.ts +17 -0
  138. package/dist/cleaners/webpack.d.ts.map +1 -0
  139. package/dist/cleaners/webpack.js +263 -0
  140. package/dist/cleaners/webpack.js.map +1 -0
  141. package/dist/cleaners/windsurf.d.ts +15 -0
  142. package/dist/cleaners/windsurf.d.ts.map +1 -0
  143. package/dist/cleaners/windsurf.js +366 -0
  144. package/dist/cleaners/windsurf.js.map +1 -0
  145. package/dist/cleaners/xcode.d.ts +14 -0
  146. package/dist/cleaners/xcode.d.ts.map +1 -0
  147. package/dist/cleaners/xcode.js +348 -0
  148. package/dist/cleaners/xcode.js.map +1 -0
  149. package/dist/cleaners/yarn.d.ts +16 -0
  150. package/dist/cleaners/yarn.d.ts.map +1 -0
  151. package/dist/cleaners/yarn.js +271 -0
  152. package/dist/cleaners/yarn.js.map +1 -0
  153. package/dist/cleaners/zed.d.ts +15 -0
  154. package/dist/cleaners/zed.d.ts.map +1 -0
  155. package/dist/cleaners/zed.js +383 -0
  156. package/dist/cleaners/zed.js.map +1 -0
  157. package/dist/cli.d.ts +3 -0
  158. package/dist/cli.d.ts.map +1 -0
  159. package/dist/cli.js +367 -0
  160. package/dist/cli.js.map +1 -0
  161. package/dist/commands/auto.d.ts +8 -0
  162. package/dist/commands/auto.d.ts.map +1 -0
  163. package/dist/commands/auto.js +251 -0
  164. package/dist/commands/auto.js.map +1 -0
  165. package/dist/commands/categories.d.ts +8 -0
  166. package/dist/commands/categories.d.ts.map +1 -0
  167. package/dist/commands/categories.js +133 -0
  168. package/dist/commands/categories.js.map +1 -0
  169. package/dist/commands/clean.d.ts +3 -0
  170. package/dist/commands/clean.d.ts.map +1 -0
  171. package/dist/commands/clean.js +149 -0
  172. package/dist/commands/clean.js.map +1 -0
  173. package/dist/commands/config.d.ts +14 -0
  174. package/dist/commands/config.d.ts.map +1 -0
  175. package/dist/commands/config.js +460 -0
  176. package/dist/commands/config.js.map +1 -0
  177. package/dist/commands/configDoctor.d.ts +26 -0
  178. package/dist/commands/configDoctor.d.ts.map +1 -0
  179. package/dist/commands/configDoctor.js +60 -0
  180. package/dist/commands/configDoctor.js.map +1 -0
  181. package/dist/commands/doctor.d.ts +2 -0
  182. package/dist/commands/doctor.d.ts.map +1 -0
  183. package/dist/commands/doctor.js +141 -0
  184. package/dist/commands/doctor.js.map +1 -0
  185. package/dist/commands/emojis.d.ts +2 -0
  186. package/dist/commands/emojis.d.ts.map +1 -0
  187. package/dist/commands/emojis.js +28 -0
  188. package/dist/commands/emojis.js.map +1 -0
  189. package/dist/commands/interactive.d.ts +3 -0
  190. package/dist/commands/interactive.d.ts.map +1 -0
  191. package/dist/commands/interactive.js +284 -0
  192. package/dist/commands/interactive.js.map +1 -0
  193. package/dist/commands/interactiveEnhanced.d.ts +4 -0
  194. package/dist/commands/interactiveEnhanced.d.ts.map +1 -0
  195. package/dist/commands/interactiveEnhanced.js +460 -0
  196. package/dist/commands/interactiveEnhanced.js.map +1 -0
  197. package/dist/commands/list.d.ts +2 -0
  198. package/dist/commands/list.d.ts.map +1 -0
  199. package/dist/commands/list.js +68 -0
  200. package/dist/commands/list.js.map +1 -0
  201. package/dist/commands/sizes.d.ts +2 -0
  202. package/dist/commands/sizes.d.ts.map +1 -0
  203. package/dist/commands/sizes.js +87 -0
  204. package/dist/commands/sizes.js.map +1 -0
  205. package/dist/commands/ub.d.ts +10 -0
  206. package/dist/commands/ub.d.ts.map +1 -0
  207. package/dist/commands/ub.js +170 -0
  208. package/dist/commands/ub.js.map +1 -0
  209. package/dist/config/configSchema.d.ts +93 -0
  210. package/dist/config/configSchema.d.ts.map +1 -0
  211. package/dist/config/configSchema.js +75 -0
  212. package/dist/config/configSchema.js.map +1 -0
  213. package/dist/config/index.d.ts +35 -0
  214. package/dist/config/index.d.ts.map +1 -0
  215. package/dist/config/index.js +255 -0
  216. package/dist/config/index.js.map +1 -0
  217. package/dist/config/loadConfig.d.ts +7 -0
  218. package/dist/config/loadConfig.d.ts.map +1 -0
  219. package/dist/config/loadConfig.js +95 -0
  220. package/dist/config/loadConfig.js.map +1 -0
  221. package/dist/config/migrateConfig.d.ts +56 -0
  222. package/dist/config/migrateConfig.d.ts.map +1 -0
  223. package/dist/config/migrateConfig.js +102 -0
  224. package/dist/config/migrateConfig.js.map +1 -0
  225. package/dist/plugins/discovery.d.ts +6 -0
  226. package/dist/plugins/discovery.d.ts.map +1 -0
  227. package/dist/plugins/discovery.js +64 -0
  228. package/dist/plugins/discovery.js.map +1 -0
  229. package/dist/profiles/index.d.ts +61 -0
  230. package/dist/profiles/index.d.ts.map +1 -0
  231. package/dist/profiles/index.js +406 -0
  232. package/dist/profiles/index.js.map +1 -0
  233. package/dist/types/index.d.ts +176 -0
  234. package/dist/types/index.d.ts.map +1 -0
  235. package/dist/types/index.js +3 -0
  236. package/dist/types/index.js.map +1 -0
  237. package/dist/utils/cache.d.ts +58 -0
  238. package/dist/utils/cache.d.ts.map +1 -0
  239. package/dist/utils/cache.js +101 -0
  240. package/dist/utils/cache.js.map +1 -0
  241. package/dist/utils/cli.d.ts +45 -0
  242. package/dist/utils/cli.d.ts.map +1 -0
  243. package/dist/utils/cli.js +412 -0
  244. package/dist/utils/cli.js.map +1 -0
  245. package/dist/utils/fs.d.ts +32 -0
  246. package/dist/utils/fs.d.ts.map +1 -0
  247. package/dist/utils/fs.js +250 -0
  248. package/dist/utils/fs.js.map +1 -0
  249. package/package.json +4 -4
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Central cache manager for performance optimization
3
+ * Provides TTL-based caching with invalidation hooks
4
+ */
5
+ export declare class CacheManager {
6
+ private static instance;
7
+ private availabilityCache;
8
+ private sizeCache;
9
+ private constructor();
10
+ static getInstance(): CacheManager;
11
+ /**
12
+ * Get cached availability with TTL (default: 5 minutes)
13
+ */
14
+ getCachedAvailability(tool: string, checkFn: () => Promise<boolean>, ttl?: number): Promise<boolean>;
15
+ /**
16
+ * Get cached directory size with TTL (default: 2 minutes)
17
+ */
18
+ getCachedSize(path: string, sizeFn: () => Promise<number>, ttl?: number): Promise<number>;
19
+ /**
20
+ * Invalidate size cache for path (call after clear operations)
21
+ */
22
+ invalidateSize(path: string): void;
23
+ /**
24
+ * Invalidate all size caches matching a prefix
25
+ */
26
+ invalidateSizePrefix(prefix: string): void;
27
+ /**
28
+ * Clear all caches (use with --refresh flag)
29
+ */
30
+ clearAll(): void;
31
+ /**
32
+ * Get cache statistics for debugging
33
+ */
34
+ getStats(): {
35
+ availabilityCacheSize: number;
36
+ sizeCacheSize: number;
37
+ };
38
+ }
39
+ export declare const cacheManager: CacheManager;
40
+ /**
41
+ * Check tool availability with caching (5-minute TTL by default)
42
+ * Use this in cleaner isAvailable() methods to avoid repeated command executions
43
+ *
44
+ * @param toolName - Unique identifier for the tool (e.g., 'npm', 'docker')
45
+ * @param checkFn - Async function that returns true if tool is available
46
+ * @param ttl - Time-to-live in milliseconds (default: 5 minutes)
47
+ * @returns Promise<boolean> - Whether the tool is available
48
+ *
49
+ * @example
50
+ * async isAvailable(): Promise<boolean> {
51
+ * return checkToolAvailability('npm', async () => {
52
+ * await execa('npm', ['--version']);
53
+ * return true;
54
+ * });
55
+ * }
56
+ */
57
+ export declare function checkToolAvailability(toolName: string, checkFn: () => Promise<boolean>, ttl?: number): Promise<boolean>;
58
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAe;IAEtC,OAAO,CAAC,iBAAiB,CAA0C;IACnE,OAAO,CAAC,SAAS,CAAyC;IAE1D,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,YAAY;IAOlC;;OAEG;IACG,qBAAqB,CACzB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,GAAG,GAAE,MAAe,GACnB,OAAO,CAAC,OAAO,CAAC;IAYnB;;OAEG;IACG,aAAa,CACjB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC7B,GAAG,GAAE,MAAe,GACnB,OAAO,CAAC,MAAM,CAAC;IAYlB;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIlC;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAU1C;;OAEG;IACH,QAAQ,IAAI,IAAI;IAKhB;;OAEG;IACH,QAAQ,IAAI;QACV,qBAAqB,EAAE,MAAM,CAAC;QAC9B,aAAa,EAAE,MAAM,CAAC;KACvB;CAMF;AAED,eAAO,MAAM,YAAY,cAA6B,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAC/B,GAAG,GAAE,MAAe,GACnB,OAAO,CAAC,OAAO,CAAC,CAElB"}
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ /**
3
+ * Central cache manager for performance optimization
4
+ * Provides TTL-based caching with invalidation hooks
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.cacheManager = exports.CacheManager = void 0;
8
+ exports.checkToolAvailability = checkToolAvailability;
9
+ class CacheManager {
10
+ constructor() {
11
+ this.availabilityCache = new Map();
12
+ this.sizeCache = new Map();
13
+ }
14
+ static getInstance() {
15
+ if (!CacheManager.instance) {
16
+ CacheManager.instance = new CacheManager();
17
+ }
18
+ return CacheManager.instance;
19
+ }
20
+ /**
21
+ * Get cached availability with TTL (default: 5 minutes)
22
+ */
23
+ async getCachedAvailability(tool, checkFn, ttl = 300000) {
24
+ const cached = this.availabilityCache.get(tool);
25
+ if (cached && Date.now() - cached.timestamp < ttl) {
26
+ return cached.value;
27
+ }
28
+ const value = await checkFn();
29
+ this.availabilityCache.set(tool, { value, timestamp: Date.now() });
30
+ return value;
31
+ }
32
+ /**
33
+ * Get cached directory size with TTL (default: 2 minutes)
34
+ */
35
+ async getCachedSize(path, sizeFn, ttl = 120000) {
36
+ const cached = this.sizeCache.get(path);
37
+ if (cached && Date.now() - cached.timestamp < ttl) {
38
+ return cached.value;
39
+ }
40
+ const value = await sizeFn();
41
+ this.sizeCache.set(path, { value, timestamp: Date.now() });
42
+ return value;
43
+ }
44
+ /**
45
+ * Invalidate size cache for path (call after clear operations)
46
+ */
47
+ invalidateSize(path) {
48
+ this.sizeCache.delete(path);
49
+ }
50
+ /**
51
+ * Invalidate all size caches matching a prefix
52
+ */
53
+ invalidateSizePrefix(prefix) {
54
+ const keysToDelete = [];
55
+ for (const key of this.sizeCache.keys()) {
56
+ if (key.startsWith(prefix)) {
57
+ keysToDelete.push(key);
58
+ }
59
+ }
60
+ keysToDelete.forEach(key => this.sizeCache.delete(key));
61
+ }
62
+ /**
63
+ * Clear all caches (use with --refresh flag)
64
+ */
65
+ clearAll() {
66
+ this.availabilityCache.clear();
67
+ this.sizeCache.clear();
68
+ }
69
+ /**
70
+ * Get cache statistics for debugging
71
+ */
72
+ getStats() {
73
+ return {
74
+ availabilityCacheSize: this.availabilityCache.size,
75
+ sizeCacheSize: this.sizeCache.size,
76
+ };
77
+ }
78
+ }
79
+ exports.CacheManager = CacheManager;
80
+ exports.cacheManager = CacheManager.getInstance();
81
+ /**
82
+ * Check tool availability with caching (5-minute TTL by default)
83
+ * Use this in cleaner isAvailable() methods to avoid repeated command executions
84
+ *
85
+ * @param toolName - Unique identifier for the tool (e.g., 'npm', 'docker')
86
+ * @param checkFn - Async function that returns true if tool is available
87
+ * @param ttl - Time-to-live in milliseconds (default: 5 minutes)
88
+ * @returns Promise<boolean> - Whether the tool is available
89
+ *
90
+ * @example
91
+ * async isAvailable(): Promise<boolean> {
92
+ * return checkToolAvailability('npm', async () => {
93
+ * await execa('npm', ['--version']);
94
+ * return true;
95
+ * });
96
+ * }
97
+ */
98
+ async function checkToolAvailability(toolName, checkFn, ttl = 300000) {
99
+ return exports.cacheManager.getCachedAvailability(toolName, checkFn, ttl);
100
+ }
101
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAyHH,sDAMC;AAxHD,MAAa,YAAY;IAMvB;QAHQ,sBAAiB,GAAG,IAAI,GAAG,EAA+B,CAAC;QAC3D,cAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEnC,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC3B,YAAY,CAAC,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QAC7C,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,qBAAqB,CACzB,IAAY,EACZ,OAA+B,EAC/B,MAAc,MAAM;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,MAA6B,EAC7B,MAAc,MAAM;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAExC,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc;QACjC,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ;QAIN,OAAO;YACL,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI;YAClD,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;SACnC,CAAC;IACJ,CAAC;CACF;AA7FD,oCA6FC;AAEY,QAAA,YAAY,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACI,KAAK,UAAU,qBAAqB,CACzC,QAAgB,EAChB,OAA+B,EAC/B,MAAc,MAAM;IAEpB,OAAO,oBAAY,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,45 @@
1
+ export declare const colors: {
2
+ primary: import("picocolors/types").Formatter;
3
+ success: import("picocolors/types").Formatter;
4
+ warning: import("picocolors/types").Formatter;
5
+ error: import("picocolors/types").Formatter;
6
+ info: import("picocolors/types").Formatter;
7
+ muted: import("picocolors/types").Formatter;
8
+ bold: import("picocolors/types").Formatter;
9
+ dim: import("picocolors/types").Formatter;
10
+ };
11
+ export declare function colorize(text: string, color: keyof typeof colors): string;
12
+ export declare function formatSize(bytes: number): string;
13
+ export declare function formatSizeWithColor(bytes: number): string;
14
+ export declare function printHeader(text: string): void;
15
+ export declare function printSuccess(text: string): void;
16
+ export declare function printError(text: string): void;
17
+ export declare function printWarning(text: string): void;
18
+ export declare function printInfo(text: string): void;
19
+ export declare function printVerbose(text: string): void;
20
+ export declare function printTable(headers: string[], rows: string[][]): void;
21
+ export declare function createProgressMessage(current: number, total: number, item: string): string;
22
+ export declare const symbols: {
23
+ readonly success: "✅";
24
+ readonly error: "❌";
25
+ readonly warning: "⚠️";
26
+ readonly info: "ℹ️";
27
+ readonly arrow: "→";
28
+ readonly bullet: "•";
29
+ readonly check: "✓";
30
+ readonly cross: "✗";
31
+ readonly hourglass: "⏳";
32
+ readonly rocket: "🚀";
33
+ readonly soap: "🧼";
34
+ readonly bubbles: "🫧";
35
+ readonly sparkles: "✨";
36
+ readonly gear: "⚙️";
37
+ readonly folder: "📁";
38
+ readonly file: "📄";
39
+ readonly trash: "🗑️";
40
+ readonly binary: "💾";
41
+ readonly apple: "🍎";
42
+ };
43
+ export declare function printCleanComplete(message: string): void;
44
+ export declare function showBootPristine(force?: boolean, funModeAllowed?: boolean): Promise<void>;
45
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;CASlB,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAczD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAM9C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK/C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK7C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK/C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAK5C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAM/C;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAwBpE;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GACX,MAAM,CAMR;AAED,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;CAoBV,CAAC;AAGX,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIxD;AAqBD,wBAAsB,gBAAgB,CAAC,KAAK,UAAQ,EAAE,cAAc,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiU1F"}
@@ -0,0 +1,412 @@
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.symbols = exports.colors = void 0;
7
+ exports.colorize = colorize;
8
+ exports.formatSize = formatSize;
9
+ exports.formatSizeWithColor = formatSizeWithColor;
10
+ exports.printHeader = printHeader;
11
+ exports.printSuccess = printSuccess;
12
+ exports.printError = printError;
13
+ exports.printWarning = printWarning;
14
+ exports.printInfo = printInfo;
15
+ exports.printVerbose = printVerbose;
16
+ exports.printTable = printTable;
17
+ exports.createProgressMessage = createProgressMessage;
18
+ exports.printCleanComplete = printCleanComplete;
19
+ exports.showBootPristine = showBootPristine;
20
+ const picocolors_1 = __importDefault(require("picocolors"));
21
+ const config_1 = require("../config");
22
+ exports.colors = {
23
+ primary: picocolors_1.default.cyan,
24
+ success: picocolors_1.default.green,
25
+ warning: picocolors_1.default.yellow,
26
+ error: picocolors_1.default.red,
27
+ info: picocolors_1.default.blue,
28
+ muted: picocolors_1.default.gray,
29
+ bold: picocolors_1.default.bold,
30
+ dim: picocolors_1.default.dim,
31
+ };
32
+ function colorize(text, color) {
33
+ return config_1.config.shouldUseColors() ? exports.colors[color](text) : text;
34
+ }
35
+ function formatSize(bytes) {
36
+ const sizes = ["B", "KB", "MB", "GB", "TB"];
37
+ if (bytes === 0)
38
+ return "0 B";
39
+ const i = Math.floor(Math.log(bytes) / Math.log(1024));
40
+ const size = (bytes / Math.pow(1024, i)).toFixed(i > 0 ? 1 : 0);
41
+ return `${size} ${sizes[i]}`;
42
+ }
43
+ function formatSizeWithColor(bytes) {
44
+ const formatted = formatSize(bytes);
45
+ if (bytes === 0) {
46
+ return colorize(formatted, "muted");
47
+ }
48
+ else if (bytes < 50 * 1024 * 1024) {
49
+ // < 50MB
50
+ return colorize(formatted, "success");
51
+ }
52
+ else if (bytes < 1024 * 1024 * 1024) {
53
+ // < 1GB
54
+ return colorize(formatted, "warning");
55
+ }
56
+ else {
57
+ return colorize(formatted, "error");
58
+ }
59
+ }
60
+ function printHeader(text) {
61
+ const mode = config_1.config.getEmojiMode();
62
+ const prefix = mode === "on" ? "🧼 " : "";
63
+ console.log();
64
+ console.log(colorize(`${prefix}${text}`, "bold"));
65
+ console.log(colorize("─".repeat(text.length + prefix.length + 1), "dim"));
66
+ }
67
+ function printSuccess(text) {
68
+ const mode = config_1.config.getEmojiMode();
69
+ const prefix = mode === "on" || mode === "minimal" ? colorize("✅", "success") + " " : "";
70
+ console.log(prefix + text);
71
+ }
72
+ function printError(text) {
73
+ const mode = config_1.config.getEmojiMode();
74
+ const prefix = mode === "on" || mode === "minimal" ? colorize("❌", "error") + " " : "";
75
+ console.log(prefix + text);
76
+ }
77
+ function printWarning(text) {
78
+ const mode = config_1.config.getEmojiMode();
79
+ const prefix = mode === "on" || mode === "minimal" ? colorize("⚠️ ", "warning") : "";
80
+ console.log(prefix + text);
81
+ }
82
+ function printInfo(text) {
83
+ const mode = config_1.config.getEmojiMode();
84
+ const prefix = mode === "on" || mode === "minimal" ? colorize("ℹ️ ", "info") : "";
85
+ console.log(prefix + text);
86
+ }
87
+ function printVerbose(text) {
88
+ if (config_1.config.isVerbose()) {
89
+ const mode = config_1.config.getEmojiMode();
90
+ const prefix = mode === "on" ? " 🔍 " : " ";
91
+ console.log(colorize(prefix + text, "dim"));
92
+ }
93
+ }
94
+ function printTable(headers, rows) {
95
+ const colWidths = headers.map((header, i) => Math.max(header.length, ...rows.map((row) => row[i]?.length || 0)));
96
+ // Header
97
+ const headerRow = headers
98
+ .map((header, i) => colorize(header.padEnd(colWidths[i]), "bold"))
99
+ .join(" ");
100
+ console.log(headerRow);
101
+ // Separator
102
+ const separator = colWidths
103
+ .map((width) => colorize("─".repeat(width), "dim"))
104
+ .join(" ");
105
+ console.log(separator);
106
+ // Rows
107
+ rows.forEach((row) => {
108
+ const formattedRow = row
109
+ .map((cell, i) => cell.padEnd(colWidths[i]))
110
+ .join(" ");
111
+ console.log(formattedRow);
112
+ });
113
+ }
114
+ function createProgressMessage(current, total, item) {
115
+ const progress = `[${current}/${total}]`;
116
+ const progressColored = colorize(progress, "dim");
117
+ const itemColored = colorize(item, "primary");
118
+ return `${progressColored} ${itemColored}`;
119
+ }
120
+ exports.symbols = {
121
+ success: "✅",
122
+ error: "❌",
123
+ warning: "⚠️",
124
+ info: "ℹ️",
125
+ arrow: "→",
126
+ bullet: "•",
127
+ check: "✓",
128
+ cross: "✗",
129
+ hourglass: "⏳",
130
+ rocket: "🚀",
131
+ soap: "🧼",
132
+ bubbles: "🫧",
133
+ sparkles: "✨",
134
+ gear: "⚙️",
135
+ folder: "📁",
136
+ file: "📄",
137
+ trash: "🗑️",
138
+ binary: "💾",
139
+ apple: "🍎",
140
+ };
141
+ // Special message for completion
142
+ function printCleanComplete(message) {
143
+ const mode = config_1.config.getEmojiMode();
144
+ const prefix = mode === "on" ? "✨ " : "";
145
+ console.log(colorize(`${prefix}${message}`, "success"));
146
+ }
147
+ // Animation configuration constants
148
+ const BOOT_ANIMATION = {
149
+ TRIGGER_CHANCE: 0.05,
150
+ DELAYS: {
151
+ INITIAL: 2000,
152
+ TITLE: 2500,
153
+ DRAMATIC_PAUSE: 5000,
154
+ JOKE: 2000,
155
+ RICK_ROLL: 2105,
156
+ FINAL: 3000,
157
+ },
158
+ TIMING: {
159
+ BASE: 5000,
160
+ RANDOM_MAX: 7000,
161
+ STEP_RATIOS: [0.2, 0.3, 0.5],
162
+ },
163
+ };
164
+ // first-time boot-up pristine
165
+ async function showBootPristine(force = false, funModeAllowed = true) {
166
+ // Skip if fun mode is not allowed
167
+ if (!funModeAllowed)
168
+ return;
169
+ // maybe trigger
170
+ if (!force && Math.random() > BOOT_ANIMATION.TRIGGER_CHANCE)
171
+ return;
172
+ console.log();
173
+ await new Promise((start) => setTimeout(start, BOOT_ANIMATION.DELAYS.INITIAL));
174
+ console.log(colorize("PRISTINE SYSTEM CLEAN ACTIVATED", "primary"));
175
+ await new Promise((start) => setTimeout(start, BOOT_ANIMATION.DELAYS.TITLE));
176
+ console.log(colorize("Initializing factory OS reset and reinstall...", "success"));
177
+ // progress indicator
178
+ const steps = [
179
+ "Backing up critical system files",
180
+ "Preparing clean installation",
181
+ "Removing all user data",
182
+ ];
183
+ // varying delay for each step
184
+ const totalTime = BOOT_ANIMATION.TIMING.BASE +
185
+ Math.random() * BOOT_ANIMATION.TIMING.RANDOM_MAX;
186
+ const stepDelays = BOOT_ANIMATION.TIMING.STEP_RATIOS.map((ratio) => totalTime * ratio);
187
+ const stepColors = ["warning", "error", "warning"];
188
+ for (let i = 0; i < steps.length; i++) {
189
+ await new Promise((resolve) => setTimeout(resolve, stepDelays[i]));
190
+ // This absurd calculation always returns: 0 for i=0, 1 for i=1, 1 for i=2
191
+ // Keeping it for the lols but commenting what it actually does
192
+ const φ = (1 + Math.sqrt(5)) / 2; // golden ratio, why not
193
+ const e = Math.E;
194
+ const ε = Number.EPSILON;
195
+ console.log(colorize(` ${exports.symbols.hourglass} ${steps[i]}...`, stepColors[~~(Math.tanh(Math.asinh((((i & 1) ^ (i >> 1)) +
196
+ Math.log(Math.exp(0)) +
197
+ Math.sqrt(Math.pow(Math.sin(i * Math.PI), 2) +
198
+ Math.pow(Math.cos(i * Math.PI), 2)) -
199
+ 1) *
200
+ (φ / φ) *
201
+ Math.cbrt(Math.pow(e, Math.log(1))) *
202
+ Array.from({ length: i + 1 }, (_, k) => k === i ? 1 : 0).reduce((a, b) => a + b, 0))) *
203
+ Math.cosh(Math.atanh(0.5)) *
204
+ 2) %
205
+ (stepColors.length + ε - ε)]));
206
+ }
207
+ const hahaDelay = BOOT_ANIMATION.DELAYS.JOKE;
208
+ const haha = [
209
+ "\n",
210
+ "lol",
211
+ "\n",
212
+ "\n🤡🤡🤡🤡🤡🤡🤡\n🤡 🤡\n🤡 🤡 🤡 🤡\n🤡 🤡\n🤡 🤡 🤡\n🤡 🤡 🤡 🤡\n🤡 🤡🤡🤡 🤡\n🤡 🤡\n🤡🤡🤡🤡🤡🤡🤡",
213
+ ];
214
+ const hahaColors = ["error", "dim"];
215
+ // dramatic pause
216
+ await new Promise((getEm) => setTimeout(getEm, BOOT_ANIMATION.DELAYS.DRAMATIC_PAUSE));
217
+ console.log();
218
+ for (let i = 0; i < haha.length; i++) {
219
+ await new Promise((end) => setTimeout(end, hahaDelay));
220
+ console.log(colorize(`${haha[i]}`, hahaColors[i % hahaColors.length]));
221
+ console.log();
222
+ }
223
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
224
+ async function showDancingRick() {
225
+ const rickDance = [
226
+ `
227
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
228
+ (づ。◕‿‿◕。)づ
229
+ || ||
230
+ /\\ /\\
231
+ `,
232
+ `
233
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
234
+ \\(◕‿‿◕\\)
235
+ || ||
236
+ /\\ /\\
237
+ `,
238
+ `
239
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
240
+ /(◕‿‿◕)/
241
+ || ||
242
+ /\\ /\\
243
+ `,
244
+ `
245
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
246
+ \\(◕‿‿◕)/
247
+ \\ /
248
+ \\\\//
249
+ /\\
250
+ `,
251
+ `
252
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
253
+ \(◕‿‿◕)\
254
+ \\ \\
255
+ \\ \\
256
+ /\\ /\\
257
+ `,
258
+ `
259
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
260
+ /(◕‿‿◕)/
261
+ / /
262
+ / /
263
+ /\\ /\\
264
+ `,
265
+ `
266
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
267
+ ~(˘▾˘~)
268
+ || ||
269
+ _/\\ /\\_
270
+ `,
271
+ `
272
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
273
+ (~˘▾˘)~
274
+ || ||
275
+ _/\\_/\\_
276
+ `,
277
+ `
278
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
279
+ ┌(◕‿◕)┘
280
+ ||
281
+ / \\
282
+ / \\
283
+ `,
284
+ `
285
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
286
+ └(◕‿◕)┐
287
+ ||
288
+ / \\
289
+ / \\
290
+ `,
291
+ `
292
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
293
+ ♪┏(◕‿◕)┛♪
294
+ | |
295
+ / \\
296
+ `,
297
+ `
298
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
299
+ ♪┗(◕‿◕)┓♪
300
+ | |
301
+ / \\
302
+ `,
303
+ `
304
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
305
+ (◕‿◕)
306
+ --|--
307
+ / \\
308
+ / \\ *spin*
309
+ `,
310
+ `
311
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
312
+ (◕‿◕)
313
+ ><
314
+ /||\\
315
+ / || \\ *JUMP*
316
+ `,
317
+ `
318
+ ♪ ♫ ♪ ♫ ♪ ♫ ♪ ♫
319
+ ٩(◕‿◕)۶
320
+ ||
321
+ /||\\
322
+ / || \\ *HANDS UP*
323
+ `,
324
+ `
325
+ ♫ ♪ ♫ ♪ ♫ ♪ ♫ ♪
326
+ (◕‿◕)
327
+ --+--+--
328
+ / \\
329
+ *T-POSE*
330
+ `,
331
+ ];
332
+ const colors = [
333
+ "success",
334
+ "warning",
335
+ "error",
336
+ "info",
337
+ "primary",
338
+ "bold",
339
+ ];
340
+ const lyrics = [
341
+ "🎵 Never gonna give you up 🎵",
342
+ "🎵 Never gonna let you down 🎵",
343
+ "🎵 Never gonna run around 🎵",
344
+ "🎵 And desert you 🎵",
345
+ "🎵 Never gonna make you cry 🎵",
346
+ "🎵 Never gonna say goodbye 🎵",
347
+ "🎵 Never gonna tell a lie 🎵",
348
+ "🎵 And hurt you 🎵",
349
+ ];
350
+ // move it move it
351
+ for (let loop = 0; loop < 1; loop++) {
352
+ for (let lyricIndex = 0; lyricIndex < lyrics.length; lyricIndex++) {
353
+ console.clear();
354
+ console.log(colorize(lyrics[lyricIndex], colors[lyricIndex % colors.length]));
355
+ // Do 2 dance moves for this lyric
356
+ for (let danceCount = 0; danceCount < 2; danceCount++) {
357
+ const danceIndex = (lyricIndex * 2 + danceCount) % rickDance.length;
358
+ console.log(colorize(rickDance[danceIndex], colors[(danceIndex + 1) % colors.length]));
359
+ await new Promise((r) => setTimeout(r, 1130));
360
+ // Clear and reshow lyric for second move
361
+ if (danceCount === 0) {
362
+ console.clear();
363
+ console.log(colorize(lyrics[lyricIndex], colors[lyricIndex % colors.length]));
364
+ }
365
+ }
366
+ }
367
+ }
368
+ // gotcha
369
+ console.clear();
370
+ console.log(colorize(`
371
+ ✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨
372
+ \\(◕‿◕)/
373
+ ♪ YOU'VE BEEN ♪
374
+ ♫ RICK ROLLED! ♫
375
+ ✨ ✨ ✨ ✨ ✨ ✨ ✨ ✨
376
+ `, "success"));
377
+ }
378
+ // system fix prompt
379
+ console.log(colorize("\n⚠️ SYSTEM ALERT: Critical rollback required!", "error"));
380
+ console.log(colorize("Please visit: https://bit.ly/v3ry53cur14y for rickovery patch", "warning"));
381
+ console.log(colorize("\nWould you like to open this rickovery URL? (y/n)", "info"));
382
+ // uncomment for demo:
383
+ // const userResponse = 'y';
384
+ const readline = require("readline");
385
+ const rl = readline.createInterface({
386
+ input: process.stdin,
387
+ output: process.stdout,
388
+ });
389
+ const userResponse = await new Promise((resolve) => {
390
+ rl.question("", (answer) => {
391
+ rl.close();
392
+ resolve(answer.toLowerCase());
393
+ });
394
+ });
395
+ if (userResponse === "y") {
396
+ console.log(colorize("\nOpening URL...", "dim"));
397
+ await new Promise((r) => setTimeout(r, BOOT_ANIMATION.DELAYS.RICK_ROLL));
398
+ console.log(colorize("jk", "error"));
399
+ const player = require("play-sound")();
400
+ player.play("epic.mp3", (_err) => { });
401
+ await showDancingRick();
402
+ }
403
+ else {
404
+ console.log(colorize("\nyour loss 🧌", "warning"));
405
+ }
406
+ console.log();
407
+ await new Promise((resolve) => setTimeout(resolve, BOOT_ANIMATION.DELAYS.FINAL));
408
+ console.log(colorize("Now... ", "dim"));
409
+ console.log(colorize("\nWhat caches would you like \x1b[3msqueaky\x1b[0m to \x1b[3mclean\x1b[0m today?", "primary"));
410
+ console.log();
411
+ }
412
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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"}