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,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":"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"}
|
|
@@ -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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"}
|