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,255 @@
|
|
|
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.ConfigManager = exports.config = exports.defaultConfig = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
const os_1 = __importDefault(require("os"));
|
|
10
|
+
exports.defaultConfig = {
|
|
11
|
+
enabledCaches: {
|
|
12
|
+
packageManagers: true,
|
|
13
|
+
buildTools: true,
|
|
14
|
+
browsers: false, // More conservative default
|
|
15
|
+
ides: false, // More conservative default
|
|
16
|
+
system: false, // More conservative default
|
|
17
|
+
},
|
|
18
|
+
tools: {
|
|
19
|
+
// Package managers
|
|
20
|
+
npm: true,
|
|
21
|
+
yarn: true,
|
|
22
|
+
pnpm: true,
|
|
23
|
+
bun: true,
|
|
24
|
+
pip: true,
|
|
25
|
+
cargo: true, // Rust cargo caches can be 5-50GB
|
|
26
|
+
poetry: true, // Python Poetry caches
|
|
27
|
+
pipenv: true, // Python Pipenv caches
|
|
28
|
+
cocoapods: true, // CocoaPods caches (macOS)
|
|
29
|
+
swiftpm: true, // Swift Package Manager caches (macOS)
|
|
30
|
+
nuget: true, // .NET NuGet caches can be 6-100GB
|
|
31
|
+
brew: true, // Homebrew caches (macOS)
|
|
32
|
+
nix: true, // Nix package manager caches
|
|
33
|
+
// Build tools
|
|
34
|
+
webpack: true,
|
|
35
|
+
vite: true,
|
|
36
|
+
nx: true,
|
|
37
|
+
turbo: true,
|
|
38
|
+
flutter: true,
|
|
39
|
+
"node-gyp": true, // Node native addon build caches
|
|
40
|
+
"go-build": true, // Go build caches
|
|
41
|
+
maven: true,
|
|
42
|
+
playwright: true, // Playwright browser binaries can be 1-2GB
|
|
43
|
+
// Browsers
|
|
44
|
+
chrome: false, // More conservative - browser caches can affect user experience
|
|
45
|
+
firefox: false,
|
|
46
|
+
// IDEs
|
|
47
|
+
vscode: true,
|
|
48
|
+
xcode: true, // Xcode can accumulate huge caches
|
|
49
|
+
androidstudio: true,
|
|
50
|
+
jetbrains: false, // More conservative for JetBrains IDEs
|
|
51
|
+
windsurf: true, // Windsurf IDE (Codeium) caches
|
|
52
|
+
cursor: true, // Cursor AI IDE caches
|
|
53
|
+
zed: true, // Zed editor caches
|
|
54
|
+
// System tools
|
|
55
|
+
docker: false, // More conservative - Docker cleanup affects containers
|
|
56
|
+
gradle: true,
|
|
57
|
+
"universal-binary": false, // More conservative - modifies application binaries
|
|
58
|
+
},
|
|
59
|
+
safety: {
|
|
60
|
+
requireConfirmation: true,
|
|
61
|
+
dryRunDefault: false,
|
|
62
|
+
backupBeforeClearing: false,
|
|
63
|
+
excludeSystemCritical: true,
|
|
64
|
+
},
|
|
65
|
+
customPaths: [],
|
|
66
|
+
protectedPaths: [], // New property
|
|
67
|
+
output: {
|
|
68
|
+
verbose: false,
|
|
69
|
+
showSizes: true,
|
|
70
|
+
useColors: true,
|
|
71
|
+
emojis: "on",
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
// Simple file-based config store (replaces 'conf' package)
|
|
75
|
+
function getConfigDir() {
|
|
76
|
+
const platform = process.platform;
|
|
77
|
+
const homeDir = os_1.default.homedir();
|
|
78
|
+
if (platform === "win32") {
|
|
79
|
+
return path_1.default.join(process.env.APPDATA || path_1.default.join(homeDir, "AppData", "Roaming"), "squeaky-clean");
|
|
80
|
+
}
|
|
81
|
+
else if (platform === "darwin") {
|
|
82
|
+
return path_1.default.join(homeDir, "Library", "Preferences", "squeaky-clean");
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
// Linux/Unix - follow XDG spec
|
|
86
|
+
return path_1.default.join(process.env.XDG_CONFIG_HOME || path_1.default.join(homeDir, ".config"), "squeaky-clean");
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function ensureConfigDir(configDir) {
|
|
90
|
+
if (!fs_1.default.existsSync(configDir)) {
|
|
91
|
+
fs_1.default.mkdirSync(configDir, { recursive: true });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
class ConfigManager {
|
|
95
|
+
constructor() {
|
|
96
|
+
this.customConfig = null;
|
|
97
|
+
this.customConfigPath = null;
|
|
98
|
+
const configDir = getConfigDir();
|
|
99
|
+
this.configPath = path_1.default.join(configDir, "config.json");
|
|
100
|
+
this.store = this.loadStore();
|
|
101
|
+
}
|
|
102
|
+
loadStore() {
|
|
103
|
+
try {
|
|
104
|
+
if (fs_1.default.existsSync(this.configPath)) {
|
|
105
|
+
const raw = fs_1.default.readFileSync(this.configPath, "utf-8");
|
|
106
|
+
const parsed = JSON.parse(raw);
|
|
107
|
+
return this.deepMerge(exports.defaultConfig, parsed);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// Corrupted config - use defaults
|
|
112
|
+
}
|
|
113
|
+
return { ...exports.defaultConfig };
|
|
114
|
+
}
|
|
115
|
+
saveStore() {
|
|
116
|
+
try {
|
|
117
|
+
ensureConfigDir(path_1.default.dirname(this.configPath));
|
|
118
|
+
fs_1.default.writeFileSync(this.configPath, JSON.stringify(this.store, null, 2));
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Ignore write errors (e.g., in tests or sandboxed environments)
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
|
+
deepMerge(base, override) {
|
|
126
|
+
if (!override || typeof override !== "object")
|
|
127
|
+
return base;
|
|
128
|
+
if (Array.isArray(override))
|
|
129
|
+
return override;
|
|
130
|
+
const result = { ...base };
|
|
131
|
+
for (const key of Object.keys(override)) {
|
|
132
|
+
const val = override[key];
|
|
133
|
+
if (val !== undefined && val !== null && typeof val === "object" && !Array.isArray(val)) {
|
|
134
|
+
result[key] = this.deepMerge(base[key] || {}, val);
|
|
135
|
+
}
|
|
136
|
+
else if (val !== undefined) {
|
|
137
|
+
result[key] = val;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
loadCustomConfig(configPath) {
|
|
143
|
+
try {
|
|
144
|
+
const resolvedPath = path_1.default.resolve(configPath);
|
|
145
|
+
if (!fs_1.default.existsSync(resolvedPath)) {
|
|
146
|
+
throw new Error(`Config file not found: ${resolvedPath}`);
|
|
147
|
+
}
|
|
148
|
+
const configContent = fs_1.default.readFileSync(resolvedPath, "utf-8");
|
|
149
|
+
this.customConfig = JSON.parse(configContent);
|
|
150
|
+
this.customConfigPath = resolvedPath;
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
throw new Error(`Failed to load config from ${configPath}: ${error}`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
get() {
|
|
157
|
+
// If custom config is loaded, return it instead of the default
|
|
158
|
+
if (this.customConfig) {
|
|
159
|
+
return this.customConfig;
|
|
160
|
+
}
|
|
161
|
+
return this.store;
|
|
162
|
+
}
|
|
163
|
+
set(config) {
|
|
164
|
+
if (this.customConfig) {
|
|
165
|
+
// Update custom config in memory (but don't save to file)
|
|
166
|
+
this.customConfig = { ...this.customConfig, ...config };
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
this.store = this.deepMerge(this.store, config);
|
|
170
|
+
this.saveStore();
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
reset() {
|
|
174
|
+
if (this.customConfig) {
|
|
175
|
+
this.customConfig = null;
|
|
176
|
+
this.customConfigPath = null;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
this.store = { ...exports.defaultConfig };
|
|
180
|
+
try {
|
|
181
|
+
if (fs_1.default.existsSync(this.configPath)) {
|
|
182
|
+
fs_1.default.unlinkSync(this.configPath);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
// Ignore errors during reset
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
getConfigPath() {
|
|
191
|
+
if (this.customConfigPath) {
|
|
192
|
+
return this.customConfigPath;
|
|
193
|
+
}
|
|
194
|
+
return this.configPath;
|
|
195
|
+
}
|
|
196
|
+
// Specific getters for convenience
|
|
197
|
+
isToolEnabled(tool) {
|
|
198
|
+
const config = this.get();
|
|
199
|
+
return config.tools?.[tool] ?? exports.defaultConfig.tools[tool];
|
|
200
|
+
}
|
|
201
|
+
isCacheTypeEnabled(type) {
|
|
202
|
+
const config = this.get();
|
|
203
|
+
return config.enabledCaches?.[type] ?? exports.defaultConfig.enabledCaches[type];
|
|
204
|
+
}
|
|
205
|
+
shouldRequireConfirmation() {
|
|
206
|
+
const config = this.get();
|
|
207
|
+
return (config.safety?.requireConfirmation ??
|
|
208
|
+
exports.defaultConfig.safety.requireConfirmation);
|
|
209
|
+
}
|
|
210
|
+
shouldUseDryRunDefault() {
|
|
211
|
+
const config = this.get();
|
|
212
|
+
return config.safety?.dryRunDefault ?? exports.defaultConfig.safety.dryRunDefault;
|
|
213
|
+
}
|
|
214
|
+
shouldShowSizes() {
|
|
215
|
+
const config = this.get();
|
|
216
|
+
return config.output?.showSizes ?? exports.defaultConfig.output.showSizes;
|
|
217
|
+
}
|
|
218
|
+
shouldUseColors() {
|
|
219
|
+
const config = this.get();
|
|
220
|
+
return config.output?.useColors ?? exports.defaultConfig.output.useColors;
|
|
221
|
+
}
|
|
222
|
+
isVerbose() {
|
|
223
|
+
const config = this.get();
|
|
224
|
+
return config.output?.verbose ?? exports.defaultConfig.output.verbose;
|
|
225
|
+
}
|
|
226
|
+
getEmojiMode() {
|
|
227
|
+
const config = this.get();
|
|
228
|
+
const output = config.output;
|
|
229
|
+
return output?.emojis ?? exports.defaultConfig.output.emojis;
|
|
230
|
+
}
|
|
231
|
+
getCustomPaths() {
|
|
232
|
+
const config = this.get();
|
|
233
|
+
return config.customPaths ?? exports.defaultConfig.customPaths;
|
|
234
|
+
}
|
|
235
|
+
getProtectedPaths() {
|
|
236
|
+
const config = this.get();
|
|
237
|
+
return config.protectedPaths ?? [];
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Check if fun mode is enabled via environment variable.
|
|
241
|
+
* SQUEAKY_FUN_MODE=1 enables, SQUEAKY_FUN_MODE=0 disables.
|
|
242
|
+
*/
|
|
243
|
+
isFunModeEnabled() {
|
|
244
|
+
const envValue = process.env.SQUEAKY_FUN_MODE;
|
|
245
|
+
if (envValue === "0")
|
|
246
|
+
return false;
|
|
247
|
+
if (envValue === "1")
|
|
248
|
+
return true;
|
|
249
|
+
// Default to true if not explicitly set
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
exports.ConfigManager = ConfigManager;
|
|
254
|
+
exports.config = new ConfigManager();
|
|
255
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type SqueakyConfig = Record<string, any>;
|
|
2
|
+
export declare function loadJson(filePath: string): Promise<any>;
|
|
3
|
+
export declare function expandEnv(str: string): string;
|
|
4
|
+
export declare function deepMerge<T>(base: T, next: Partial<T>): T;
|
|
5
|
+
export declare function resolveExtendsChain(entries: string | string[] | undefined, fromPath: string): Promise<any[]>;
|
|
6
|
+
export declare function loadAndValidateConfig(configPath: string): Promise<SqueakyConfig>;
|
|
7
|
+
//# sourceMappingURL=loadConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadConfig.d.ts","sourceRoot":"","sources":["../../src/config/loadConfig.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEhD,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAG7D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAUzD;AAmBD,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACtC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,GAAG,EAAE,CAAC,CAWhB;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/config/loadConfig.ts
|
|
3
|
+
// uses zod for schema validation
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.loadJson = loadJson;
|
|
9
|
+
exports.expandEnv = expandEnv;
|
|
10
|
+
exports.deepMerge = deepMerge;
|
|
11
|
+
exports.resolveExtendsChain = resolveExtendsChain;
|
|
12
|
+
exports.loadAndValidateConfig = loadAndValidateConfig;
|
|
13
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
14
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
const configSchema_1 = require("./configSchema");
|
|
16
|
+
async function loadJson(filePath) {
|
|
17
|
+
const raw = await node_fs_1.default.promises.readFile(filePath, "utf8");
|
|
18
|
+
return JSON.parse(raw);
|
|
19
|
+
}
|
|
20
|
+
function expandEnv(str) {
|
|
21
|
+
// Supports ${VAR} and tilde
|
|
22
|
+
const tilde = str.startsWith("~")
|
|
23
|
+
? str.replace(/^~(?=\/|$)/, process.env.HOME || "~")
|
|
24
|
+
: str;
|
|
25
|
+
return tilde.replace(/\$\{([^}]+)\}/g, (_, key) => process.env[key] ?? "");
|
|
26
|
+
}
|
|
27
|
+
function deepMerge(base, next) {
|
|
28
|
+
if (Array.isArray(base) && Array.isArray(next))
|
|
29
|
+
return next;
|
|
30
|
+
if (typeof base === "object" && base && typeof next === "object" && next) {
|
|
31
|
+
const out = { ...base };
|
|
32
|
+
for (const [k, v] of Object.entries(next)) {
|
|
33
|
+
out[k] = k in out ? deepMerge(out[k], v) : v;
|
|
34
|
+
}
|
|
35
|
+
return out;
|
|
36
|
+
}
|
|
37
|
+
return next ?? base;
|
|
38
|
+
}
|
|
39
|
+
async function resolveMaybePackage(idOrPath, cwd) {
|
|
40
|
+
if (idOrPath.startsWith(".") ||
|
|
41
|
+
idOrPath.startsWith("/") ||
|
|
42
|
+
idOrPath.startsWith("~")) {
|
|
43
|
+
const expanded = expandEnv(idOrPath);
|
|
44
|
+
return node_path_1.default.isAbsolute(expanded) ? expanded : node_path_1.default.join(cwd, expanded);
|
|
45
|
+
}
|
|
46
|
+
// Try resolve from node_modules
|
|
47
|
+
const pkgPath = require.resolve(idOrPath, { paths: [cwd] });
|
|
48
|
+
return pkgPath;
|
|
49
|
+
}
|
|
50
|
+
async function resolveExtendsChain(entries, fromPath) {
|
|
51
|
+
if (!entries)
|
|
52
|
+
return [];
|
|
53
|
+
const cwd = node_path_1.default.dirname(fromPath);
|
|
54
|
+
const arr = Array.isArray(entries) ? entries : [entries];
|
|
55
|
+
const resolved = [];
|
|
56
|
+
for (const entry of arr) {
|
|
57
|
+
const target = await resolveMaybePackage(entry, cwd);
|
|
58
|
+
const json = await loadJson(target);
|
|
59
|
+
resolved.push({ json, source: target });
|
|
60
|
+
}
|
|
61
|
+
return resolved;
|
|
62
|
+
}
|
|
63
|
+
async function loadAndValidateConfig(configPath) {
|
|
64
|
+
const root = await loadJson(configPath);
|
|
65
|
+
// Expand env in string leafs
|
|
66
|
+
function expandLeaves(obj) {
|
|
67
|
+
if (typeof obj === "string")
|
|
68
|
+
return expandEnv(obj);
|
|
69
|
+
if (Array.isArray(obj))
|
|
70
|
+
return obj.map(expandLeaves);
|
|
71
|
+
if (obj && typeof obj === "object") {
|
|
72
|
+
const out = {};
|
|
73
|
+
for (const [k, v] of Object.entries(obj))
|
|
74
|
+
out[k] = expandLeaves(v);
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
return obj;
|
|
78
|
+
}
|
|
79
|
+
// Resolve extends -> merge left-to-right, then merge root last
|
|
80
|
+
const chain = await resolveExtendsChain(root.extends, configPath);
|
|
81
|
+
let merged = {};
|
|
82
|
+
for (const link of chain)
|
|
83
|
+
merged = deepMerge(merged, expandLeaves(link.json));
|
|
84
|
+
merged = deepMerge(merged, expandLeaves(root));
|
|
85
|
+
// Validate with zod
|
|
86
|
+
const validation = (0, configSchema_1.validateMixedConfig)(merged);
|
|
87
|
+
if (!validation.success) {
|
|
88
|
+
const errors = (validation.errors || []).join("\n");
|
|
89
|
+
const err = new Error(`Invalid config: \n${errors}`);
|
|
90
|
+
err.errors = validation.errors;
|
|
91
|
+
throw err;
|
|
92
|
+
}
|
|
93
|
+
return merged;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=loadConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loadConfig.js","sourceRoot":"","sources":["../../src/config/loadConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export type LegacyConfig = {
|
|
2
|
+
tools?: Record<string, any>;
|
|
3
|
+
auto?: {
|
|
4
|
+
enabled?: boolean;
|
|
5
|
+
schedule?: "daily" | "weekly" | "monthly";
|
|
6
|
+
dayOfWeek?: string | number;
|
|
7
|
+
time?: string;
|
|
8
|
+
sizeThreshold?: string;
|
|
9
|
+
args?: string[];
|
|
10
|
+
};
|
|
11
|
+
output?: {
|
|
12
|
+
verbose?: boolean;
|
|
13
|
+
useColors?: boolean;
|
|
14
|
+
};
|
|
15
|
+
extends?: string | string[];
|
|
16
|
+
[k: string]: any;
|
|
17
|
+
};
|
|
18
|
+
export type NewConfig = {
|
|
19
|
+
cleaners?: Record<string, any>;
|
|
20
|
+
scheduler?: {
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
frequency?: "daily" | "weekly" | "monthly";
|
|
23
|
+
dayOfWeek?: string | number;
|
|
24
|
+
time?: string;
|
|
25
|
+
args?: string[];
|
|
26
|
+
};
|
|
27
|
+
defaults?: {
|
|
28
|
+
dryRun?: boolean;
|
|
29
|
+
followSymlinks?: boolean;
|
|
30
|
+
restrictToHome?: boolean;
|
|
31
|
+
trash?: boolean;
|
|
32
|
+
concurrency?: number;
|
|
33
|
+
recentDays?: number;
|
|
34
|
+
sizeScan?: {
|
|
35
|
+
enableCache?: boolean;
|
|
36
|
+
cachePath?: string;
|
|
37
|
+
maxParallelFs?: number;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
plugins?: {
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
scopes?: string[];
|
|
43
|
+
prefixes?: string[];
|
|
44
|
+
};
|
|
45
|
+
profiles?: Record<string, {
|
|
46
|
+
description?: string;
|
|
47
|
+
include?: string[];
|
|
48
|
+
exclude?: string[];
|
|
49
|
+
}>;
|
|
50
|
+
extends?: string | string[];
|
|
51
|
+
[k: string]: any;
|
|
52
|
+
};
|
|
53
|
+
export declare function isLegacyShape(json: any): boolean;
|
|
54
|
+
export declare function legacyToNew(json: LegacyConfig): NewConfig;
|
|
55
|
+
export declare function writeBackupAndSave(targetPath: string, newJson: object): string;
|
|
56
|
+
//# sourceMappingURL=migrateConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateConfig.d.ts","sourceRoot":"","sources":["../../src/config/migrateConfig.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC1C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACpD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE;QACV,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE;YACT,WAAW,CAAC,EAAE,OAAO,CAAC;YACtB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,aAAa,CAAC,EAAE,MAAM,CAAC;SACxB,CAAC;KACH,CAAC;IACF,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,CACf,MAAM,EACN;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CACjE,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB,CAAC;AAEF,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAEhD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,YAAY,GAAG,SAAS,CA4EzD;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,MAAM,CAeR"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/config/migrateConfig.ts
|
|
3
|
+
// Drop-in for: migrate/doctor
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.isLegacyShape = isLegacyShape;
|
|
9
|
+
exports.legacyToNew = legacyToNew;
|
|
10
|
+
exports.writeBackupAndSave = writeBackupAndSave;
|
|
11
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
12
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
13
|
+
function isLegacyShape(json) {
|
|
14
|
+
return !!(json && (json.tools || json.auto || json.output));
|
|
15
|
+
}
|
|
16
|
+
function legacyToNew(json) {
|
|
17
|
+
const out = {};
|
|
18
|
+
// Check if there are already new-style keys, give them precedence
|
|
19
|
+
const hasCleaners = json.cleaners && typeof json.cleaners === "object";
|
|
20
|
+
const hasScheduler = json.scheduler && typeof json.scheduler === "object";
|
|
21
|
+
const hasDefaults = json.defaults && typeof json.defaults === "object";
|
|
22
|
+
// 1) tools -> cleaners (only if cleaners doesn't already exist)
|
|
23
|
+
if (json.tools && typeof json.tools === "object" && !hasCleaners) {
|
|
24
|
+
out.cleaners = { ...json.tools };
|
|
25
|
+
}
|
|
26
|
+
else if (hasCleaners) {
|
|
27
|
+
out.cleaners = json.cleaners;
|
|
28
|
+
}
|
|
29
|
+
// 2) auto -> scheduler (only if scheduler doesn't already exist)
|
|
30
|
+
if (json.auto && typeof json.auto === "object" && !hasScheduler) {
|
|
31
|
+
out.scheduler = {
|
|
32
|
+
enabled: json.auto.enabled,
|
|
33
|
+
frequency: json.auto.schedule,
|
|
34
|
+
dayOfWeek: json.auto.dayOfWeek,
|
|
35
|
+
time: json.auto.time,
|
|
36
|
+
args: json.auto.args,
|
|
37
|
+
};
|
|
38
|
+
// If old configs used sizeThreshold, keep it as a hint flag on args
|
|
39
|
+
if (json.auto.sizeThreshold && out.scheduler) {
|
|
40
|
+
out.scheduler.args = [
|
|
41
|
+
...(out.scheduler.args ?? []),
|
|
42
|
+
"--size-threshold",
|
|
43
|
+
String(json.auto.sizeThreshold),
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else if (hasScheduler) {
|
|
48
|
+
out.scheduler = json.scheduler;
|
|
49
|
+
}
|
|
50
|
+
// 3) output -> defaults (only if defaults doesn't already exist)
|
|
51
|
+
if (json.output && typeof json.output === "object" && !hasDefaults) {
|
|
52
|
+
out.defaults = {
|
|
53
|
+
// dryRun remains user-controlled; don't infer from verbose/useColors
|
|
54
|
+
// Carry nothing by default—these were UI prefs. If you prefer, you can stash them:
|
|
55
|
+
// keep legacy UI hints
|
|
56
|
+
_legacyOutput: json.output,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
else if (hasDefaults) {
|
|
60
|
+
out.defaults = json.defaults;
|
|
61
|
+
}
|
|
62
|
+
// 4) passthrough: extends/plugins/profiles if already present
|
|
63
|
+
if (json.extends)
|
|
64
|
+
out.extends = json.extends;
|
|
65
|
+
if (json.plugins)
|
|
66
|
+
out.plugins = json.plugins;
|
|
67
|
+
if (json.profiles)
|
|
68
|
+
out.profiles = json.profiles;
|
|
69
|
+
// 5) bring forward unknown top-level keys as-is (non-invasive)
|
|
70
|
+
for (const [k, v] of Object.entries(json)) {
|
|
71
|
+
if ([
|
|
72
|
+
"tools",
|
|
73
|
+
"auto",
|
|
74
|
+
"output",
|
|
75
|
+
"extends",
|
|
76
|
+
"plugins",
|
|
77
|
+
"profiles",
|
|
78
|
+
"cleaners",
|
|
79
|
+
"scheduler",
|
|
80
|
+
"defaults",
|
|
81
|
+
].includes(k))
|
|
82
|
+
continue;
|
|
83
|
+
if (!(k in out))
|
|
84
|
+
out[k] = v;
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
function writeBackupAndSave(targetPath, newJson) {
|
|
89
|
+
const dir = node_path_1.default.dirname(targetPath);
|
|
90
|
+
const base = node_path_1.default.basename(targetPath);
|
|
91
|
+
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
92
|
+
const backup = node_path_1.default.join(dir, `${base}.backup.${stamp}.json`);
|
|
93
|
+
const pretty = (o) => JSON.stringify(o, null, 2);
|
|
94
|
+
// Backup original if exists
|
|
95
|
+
if (node_fs_1.default.existsSync(targetPath)) {
|
|
96
|
+
const src = node_fs_1.default.readFileSync(targetPath, "utf8");
|
|
97
|
+
node_fs_1.default.writeFileSync(backup, src, "utf8");
|
|
98
|
+
}
|
|
99
|
+
node_fs_1.default.writeFileSync(targetPath, pretty(newJson) + "\n", "utf8");
|
|
100
|
+
return backup;
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=migrateConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrateConfig.js","sourceRoot":"","sources":["../../src/config/migrateConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/plugins/discovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAuBD,wBAAgB,eAAe,CAC7B,QAAQ,GAAE,MAAM,EAAyB,EACzC,MAAM,GAAE,MAAM,EAAO,GACpB,UAAU,EAAE,CA8Bd"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// src/plugins/discovery.ts
|
|
3
|
+
// finds squeaky packages (+ optional scoped prefixes) installed in current project or globally
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.discoverPlugins = discoverPlugins;
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
function listNodeModulesRoots() {
|
|
12
|
+
const roots = new Set();
|
|
13
|
+
const cwd = process.cwd();
|
|
14
|
+
// Walk up looking for node_modules
|
|
15
|
+
let dir = cwd;
|
|
16
|
+
for (;;) {
|
|
17
|
+
const nm = node_path_1.default.join(dir, "node_modules");
|
|
18
|
+
if (node_fs_1.default.existsSync(nm))
|
|
19
|
+
roots.add(nm);
|
|
20
|
+
const parent = node_path_1.default.dirname(dir);
|
|
21
|
+
if (parent === dir)
|
|
22
|
+
break;
|
|
23
|
+
dir = parent;
|
|
24
|
+
}
|
|
25
|
+
// Add global npm prefix if present
|
|
26
|
+
if (process.env.npm_config_prefix) {
|
|
27
|
+
roots.add(node_path_1.default.join(process.env.npm_config_prefix, "lib", "node_modules"));
|
|
28
|
+
}
|
|
29
|
+
return Array.from(roots);
|
|
30
|
+
}
|
|
31
|
+
function discoverPlugins(prefixes = ["squeaky-cleaner-"], scopes = []) {
|
|
32
|
+
const roots = listNodeModulesRoots();
|
|
33
|
+
const found = [];
|
|
34
|
+
for (const root of roots) {
|
|
35
|
+
if (!node_fs_1.default.existsSync(root))
|
|
36
|
+
continue;
|
|
37
|
+
for (const entry of node_fs_1.default.readdirSync(root)) {
|
|
38
|
+
// scoped packages
|
|
39
|
+
if (entry.startsWith("@")) {
|
|
40
|
+
if (scopes.length && !scopes.includes(entry))
|
|
41
|
+
continue;
|
|
42
|
+
const scopeDir = node_path_1.default.join(root, entry);
|
|
43
|
+
if (!node_fs_1.default.existsSync(scopeDir))
|
|
44
|
+
continue;
|
|
45
|
+
for (const pkg of node_fs_1.default.readdirSync(scopeDir)) {
|
|
46
|
+
if (prefixes.some((p) => pkg.startsWith(p))) {
|
|
47
|
+
const pkgPath = node_path_1.default.join(scopeDir, pkg);
|
|
48
|
+
found.push({ name: `${entry}/${pkg}`, path: pkgPath });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
if (prefixes.some((p) => entry.startsWith(p))) {
|
|
54
|
+
const pkgPath = node_path_1.default.join(root, entry);
|
|
55
|
+
found.push({ name: entry, path: pkgPath });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// De-dup by name
|
|
61
|
+
const map = new Map(found.map((p) => [p.name, p]));
|
|
62
|
+
return Array.from(map.values());
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/plugins/discovery.ts"],"names":[],"mappings":"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"}
|