node-janitor 1.0.1 โ†’ 1.2.0

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/README.md CHANGED
@@ -17,6 +17,11 @@
17
17
  - ๐Ÿ“Š **Reports** - Detailed analytics
18
18
  - โšก **Fast Mode** - Native OS commands for speed
19
19
  - ๐Ÿ”„ **CI/CD Ready** - Silent mode with JSON output
20
+ - โš™๏ธ **Config File** - Persistent settings with `.janitorrc`
21
+ - ๐Ÿ”€ **Git-aware** - Skip repos with uncommitted changes
22
+ - ๐ŸŒ **Multi-language** - 8 languages supported
23
+ - ๐Ÿ‘€ **Watch Mode** - Continuous monitoring
24
+ - ๐Ÿ“… **Scheduled Cleanup** - Cron-style automation
20
25
 
21
26
  ## ๐Ÿ“ฆ Installation
22
27
 
@@ -47,6 +52,41 @@ node-janitor --older-than 30d
47
52
  node-janitor --interactive
48
53
  ```
49
54
 
55
+ ## ๐Ÿ–ฅ๏ธ Interactive TUI Mode (NEW!)
56
+
57
+ Launch a full-screen, keyboard-navigable interface similar to npkill:
58
+
59
+ ```bash
60
+ # Start TUI mode
61
+ node-janitor --live
62
+
63
+ # Or use the tui subcommand
64
+ node-janitor tui --path ~/projects
65
+ ```
66
+
67
+ **Features:**
68
+ - โŒจ๏ธ **Keyboard Navigation** - Use arrow keys or j/k to navigate
69
+ - โ˜‘๏ธ **Multi-select** - Press SPACE to select/deselect folders
70
+ - ๐Ÿ”„ **Sort toggle** - Press S to switch between size/age sorting
71
+ - ๐ŸŽจ **Color-coded** - Green (new), Yellow (medium), Red (old)
72
+ - ๐Ÿ—‘๏ธ **Quick delete** - Press D to delete selected folders
73
+ - ๐Ÿ“Š **Real-time stats** - See total size and selection count
74
+
75
+ ```
76
+ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
77
+ โ”‚ ๐Ÿงน NODE JANITOR - Interactive Mode โ”‚
78
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
79
+ โ”‚ ๐Ÿ“Š Found: 15 folders | Total: 2.5 GB | Selected: 3 (523 MB) โ”‚
80
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
81
+ โ”‚ > โ–  ~/projects/old-app/node_modules 523 MB 180 days โ”‚
82
+ โ”‚ โ–ก ~/projects/test-project/node_modules 312 MB 95 days โ”‚
83
+ โ”‚ โ–  ~/projects/archived/node_modules 245 MB 45 days โ”‚
84
+ โ”‚ โ–ก ~/projects/client-work/node_modules 198 MB 30 days โ”‚
85
+ โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
86
+ โ”‚ [โ†‘/โ†“] Navigate [SPACE] Select [A] All [S] Sort [D] Delete โ”‚
87
+ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
88
+ ```
89
+
50
90
  ## ๐Ÿ“– Usage
51
91
 
52
92
  ### Basic Commands
@@ -151,6 +191,79 @@ node-janitor --json
151
191
  ```bash
152
192
  # Exclude specific folders
153
193
  node-janitor --exclude "important-project,client-work"
194
+
195
+ # Include only matching patterns (whitelist)
196
+ node-janitor --include "work-*,client-*"
197
+ ```
198
+
199
+ ### Git-aware Cleanup
200
+
201
+ ```bash
202
+ # Skip repos with uncommitted changes
203
+ node-janitor --skip-dirty-git
204
+
205
+ # Only process folders inside git repos
206
+ node-janitor --git-only
207
+ ```
208
+
209
+ ### Config File
210
+
211
+ Create `.janitorrc` in your home directory or project:
212
+
213
+ ```json
214
+ {
215
+ "exclude": ["important-project"],
216
+ "defaultOlderThan": "30d",
217
+ "defaultPath": "~/projects",
218
+ "lang": "vi"
219
+ }
220
+ ```
221
+
222
+ Use custom config:
223
+ ```bash
224
+ node-janitor --config ~/.my-janitor-config.json
225
+ ```
226
+
227
+ ### Multi-language Support
228
+
229
+ ```bash
230
+ # Vietnamese
231
+ node-janitor --lang vi
232
+
233
+ # Chinese
234
+ node-janitor --lang zh
235
+
236
+ # Japanese
237
+ node-janitor --lang ja
238
+
239
+ # Available: en, vi, zh, ja, ko, es, fr, de
240
+ ```
241
+
242
+ ### Watch Mode
243
+
244
+ Continuously monitor and clean:
245
+
246
+ ```bash
247
+ # Watch with 60s interval
248
+ node-janitor watch --interval 60 --older-than 30d
249
+
250
+ # Auto-clean when found
251
+ node-janitor watch --auto-clean --older-than 60d
252
+ ```
253
+
254
+ ### Scheduled Cleanup
255
+
256
+ Cron-style scheduling:
257
+
258
+ ```bash
259
+ # Daily cleanup at midnight
260
+ node-janitor schedule --daily --older-than 30d
261
+
262
+ # Weekly on Sunday
263
+ node-janitor schedule --weekly
264
+
265
+ # Custom cron expression
266
+ node-janitor schedule --cron "0 0 * * *" --older-than 60d
154
267
  ```
155
268
 
156
269
  ## ๐Ÿ“‹ All Options
@@ -176,6 +289,11 @@ node-janitor --exclude "important-project,client-work"
176
289
  | `--silent` | Silent mode (CI/CD) |
177
290
  | `--json` | JSON output |
178
291
  | `--exclude <patterns>` | Exclude patterns (comma-separated) |
292
+ | `--include <patterns>` | Include only matching patterns |
293
+ | `-c, --config <path>` | Config file path |
294
+ | `--skip-dirty-git` | Skip repos with uncommitted changes |
295
+ | `--git-only` | Only process git repos |
296
+ | `--lang <code>` | Language (en, vi, zh, ja, ko, es, fr, de) |
179
297
 
180
298
  ## ๐ŸŽฏ Examples
181
299
 
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiCpC,wBAAgB,aAAa,IAAI,OAAO,CA4CvC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsCpC,wBAAgB,aAAa,IAAI,OAAO,CA4FvC"}
package/dist/cli.js CHANGED
@@ -1,15 +1,20 @@
1
1
  import { Command } from 'commander';
2
2
  import chalk from 'chalk';
3
- import { scanNodeModules, calculateTotals, filterByAge } from './core/scanner.js';
3
+ import { scanNodeModules, calculateTotals, filterByAge, filterByGitStatus } from './core/scanner.js';
4
4
  import { cleanNodeModules } from './core/cleaner.js';
5
5
  import { deepClean } from './core/deep-cleaner.js';
6
+ import { startWatch } from './commands/watch.js';
7
+ import { startSchedule, cronPresets } from './commands/schedule.js';
8
+ import { startLiveView } from './tui/live-view.js';
9
+ import { loadConfig, mergeOptions } from './core/config.js';
6
10
  import { createSpinner } from './ui/spinner.js';
7
11
  import { createFoldersTable, createSummaryTable, createBreakdownTable } from './ui/table.js';
8
12
  import { createProgressBar, updateProgress, stopProgress } from './ui/progress.js';
9
13
  import { promptPath, promptAge, promptConfirm, promptViewList, promptDelete, promptAction, promptSelectFolders, } from './ui/prompts.js';
10
14
  import logger from './utils/logger.js';
11
15
  import { formatBytes, parseDuration } from './utils/formatter.js';
12
- const VERSION = '1.0.1';
16
+ import { setLanguage } from './utils/i18n.js';
17
+ const VERSION = '1.2.0';
13
18
  // ASCII Art Banner
14
19
  const BANNER = chalk.cyan(`
15
20
  โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
@@ -45,6 +50,11 @@ export function createProgram() {
45
50
  .option('--json', 'Output as JSON')
46
51
  .option('--exclude <patterns>', 'Exclude patterns (comma-separated)')
47
52
  .option('--include <patterns>', 'Include only matching patterns (comma-separated)')
53
+ .option('-c, --config <path>', 'Path to config file')
54
+ .option('--skip-dirty-git', 'Skip folders with uncommitted git changes')
55
+ .option('--git-only', 'Only process folders inside git repositories')
56
+ .option('--lang <language>', 'Language for output (en, vi, zh, ja, ko, es, fr, de)')
57
+ .option('-l, --live', 'Interactive TUI mode with keyboard navigation')
48
58
  .action(async (options) => {
49
59
  await mainAction(options);
50
60
  });
@@ -59,23 +69,78 @@ export function createProgram() {
59
69
  .action(async (options) => {
60
70
  await reportAction(options);
61
71
  });
72
+ // Watch sub-command
73
+ program
74
+ .command('watch')
75
+ .description('๐Ÿ”„ Watch mode - continuously monitor and clean')
76
+ .option('-p, --path <path>', 'Directory to watch', process.cwd())
77
+ .option('-d, --depth <number>', 'Maximum depth to scan', parseInt)
78
+ .option('--older-than <duration>', 'Only clean folders older than (e.g., 30d)')
79
+ .option('--interval <seconds>', 'Scan interval in seconds', parseInt)
80
+ .option('--auto-clean', 'Automatically clean found folders')
81
+ .option('--dry-run', 'Preview only, do not delete')
82
+ .action(async (options) => {
83
+ await watchAction(options);
84
+ });
85
+ // Schedule sub-command
86
+ program
87
+ .command('schedule')
88
+ .description('๐Ÿ“… Scheduled cleanup with cron expressions')
89
+ .option('-p, --path <path>', 'Directory to clean', process.cwd())
90
+ .option('-d, --depth <number>', 'Maximum depth to scan', parseInt)
91
+ .option('--cron <expression>', 'Cron expression (e.g., "0 0 * * *" for daily)')
92
+ .option('--daily', 'Run daily at midnight')
93
+ .option('--weekly', 'Run weekly on Sunday')
94
+ .option('--monthly', 'Run monthly on 1st')
95
+ .option('--older-than <duration>', 'Only clean folders older than (e.g., 30d)')
96
+ .option('--dry-run', 'Preview only, do not delete')
97
+ .action(async (options) => {
98
+ await scheduleAction(options);
99
+ });
100
+ // TUI sub-command
101
+ program
102
+ .command('tui')
103
+ .description('๐Ÿ–ฅ๏ธ Interactive TUI mode with keyboard navigation')
104
+ .option('-p, --path <path>', 'Directory to scan', process.cwd())
105
+ .option('-d, --depth <number>', 'Maximum depth to scan', parseInt)
106
+ .action(async (options) => {
107
+ await startLiveView({
108
+ path: options.path || process.cwd(),
109
+ depth: options.depth,
110
+ });
111
+ });
62
112
  return program;
63
113
  }
64
114
  /**
65
115
  * Main action handler
66
116
  */
67
117
  async function mainAction(options) {
118
+ // Load config file
119
+ const config = await loadConfig(options.config);
120
+ const mergedOptions = mergeOptions(options, config);
121
+ // Set language
122
+ if (mergedOptions.lang) {
123
+ setLanguage(mergedOptions.lang);
124
+ }
68
125
  // Configure logger
69
126
  logger.configure({
70
- verbose: options.verbose,
71
- debug: options.debug,
72
- silent: options.silent,
127
+ verbose: mergedOptions.verbose,
128
+ debug: mergedOptions.debug,
129
+ silent: mergedOptions.silent,
73
130
  });
74
131
  // Interactive mode
75
132
  if (options.interactive) {
76
133
  await interactiveMode();
77
134
  return;
78
135
  }
136
+ // Live TUI mode
137
+ if (options.live) {
138
+ await startLiveView({
139
+ path: options.path || process.cwd(),
140
+ depth: options.depth,
141
+ });
142
+ return;
143
+ }
79
144
  // Show banner (unless silent/json)
80
145
  if (!options.silent && !options.json) {
81
146
  console.log(BANNER);
@@ -112,10 +177,14 @@ async function mainAction(options) {
112
177
  }
113
178
  // Apply age filter for display
114
179
  let displayFolders = folders;
115
- if (options.olderThan) {
116
- const days = parseDuration(options.olderThan);
180
+ if (mergedOptions.olderThan) {
181
+ const days = parseDuration(mergedOptions.olderThan);
117
182
  displayFolders = filterByAge(folders, days);
118
183
  }
184
+ // Apply git filters
185
+ if (mergedOptions.skipDirtyGit || mergedOptions.gitOnly) {
186
+ displayFolders = filterByGitStatus(displayFolders, mergedOptions.skipDirtyGit, mergedOptions.gitOnly);
187
+ }
119
188
  // JSON output
120
189
  if (options.json) {
121
190
  const totals = calculateTotals(displayFolders);
@@ -339,4 +408,47 @@ async function reportAction(options) {
339
408
  console.log(chalk.yellow(` โ†’ Run ${chalk.cyan('node-janitor --deep-clean')} to save ~40% more space`));
340
409
  }
341
410
  }
411
+ /**
412
+ * Watch action handler
413
+ */
414
+ async function watchAction(options) {
415
+ const intervalSeconds = options.interval || 60;
416
+ await startWatch({
417
+ path: options.path || process.cwd(),
418
+ depth: options.depth,
419
+ olderThan: options.olderThan,
420
+ dryRun: options.dryRun,
421
+ interval: intervalSeconds * 1000,
422
+ onClean: options.autoClean,
423
+ });
424
+ }
425
+ /**
426
+ * Schedule action handler
427
+ */
428
+ async function scheduleAction(options) {
429
+ // Determine cron expression from presets or custom
430
+ let cronExpression = options.cron;
431
+ if (!cronExpression) {
432
+ if (options.daily) {
433
+ cronExpression = cronPresets.daily;
434
+ }
435
+ else if (options.weekly) {
436
+ cronExpression = cronPresets.weekly;
437
+ }
438
+ else if (options.monthly) {
439
+ cronExpression = cronPresets.monthly;
440
+ }
441
+ else {
442
+ // Default to daily
443
+ cronExpression = cronPresets.daily;
444
+ }
445
+ }
446
+ startSchedule({
447
+ path: options.path || process.cwd(),
448
+ depth: options.depth,
449
+ cron: cronExpression,
450
+ olderThan: options.olderThan,
451
+ dryRun: options.dryRun,
452
+ });
453
+ }
342
454
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC7F,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACH,UAAU,EACV,SAAS,EACT,aAAa,EACb,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,mBAAmB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,MAAM,MAAM,mBAAmB,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,mBAAmB;AACnB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;;CAOzB,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa;IACzB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACF,IAAI,CAAC,cAAc,CAAC;SACpB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,yBAAyB,EAAE,qDAAqD,CAAC;SACxF,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;SAChF,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;SAC7E,MAAM,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;SAC7E,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;SAC3D,MAAM,CAAC,cAAc,EAAE,4CAA4C,CAAC;SACpE,MAAM,CAAC,QAAQ,EAAE,4CAA4C,CAAC;SAC9D,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,EAAE,QAAQ,CAAC;SACvE,MAAM,CAAC,UAAU,EAAE,+BAA+B,CAAC;SACnD,MAAM,CAAC,cAAc,EAAE,gCAAgC,CAAC;SACxD,MAAM,CAAC,SAAS,EAAE,oCAAoC,CAAC;SACvD,MAAM,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;SAC/C,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC;SACzC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC;SAC/B,MAAM,CAAC,UAAU,EAAE,yBAAyB,CAAC;SAC7C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,sBAAsB,EAAE,oCAAoC,CAAC;SACpE,MAAM,CAAC,sBAAsB,EAAE,kDAAkD,CAAC;SAClF,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;SACpD,MAAM,CAAC,kBAAkB,EAAE,2CAA2C,CAAC;SACvE,MAAM,CAAC,YAAY,EAAE,8CAA8C,CAAC;SACpE,MAAM,CAAC,mBAAmB,EAAE,sDAAsD,CAAC;SACnF,MAAM,CAAC,YAAY,EAAE,+CAA+C,CAAC;SACrE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEP,qBAAqB;IACrB,OAAO;SACF,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,+BAA+B,CAAC;SAC5C,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,YAAY,EAAE,yBAAyB,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEP,oBAAoB;IACpB,OAAO;SACF,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;SAC9E,MAAM,CAAC,sBAAsB,EAAE,0BAA0B,EAAE,QAAQ,CAAC;SACpE,MAAM,CAAC,cAAc,EAAE,mCAAmC,CAAC;SAC3D,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEP,uBAAuB;IACvB,OAAO;SACF,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,4CAA4C,CAAC;SACzD,MAAM,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAChE,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,qBAAqB,EAAE,+CAA+C,CAAC;SAC9E,MAAM,CAAC,SAAS,EAAE,uBAAuB,CAAC;SAC1C,MAAM,CAAC,UAAU,EAAE,sBAAsB,CAAC;SAC1C,MAAM,CAAC,WAAW,EAAE,oBAAoB,CAAC;SACzC,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;SAC9E,MAAM,CAAC,WAAW,EAAE,6BAA6B,CAAC;SAClD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEP,kBAAkB;IAClB,OAAO;SACF,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;SAC/D,MAAM,CAAC,sBAAsB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;SACjE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,aAAa,CAAC;YAChB,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE;YAC/C,KAAK,EAAE,OAAO,CAAC,KAA2B;SAC7C,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEP,OAAO,OAAO,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,UAAU,CAAC,OAAgD;IACtE,mBAAmB;IACnB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,MAA4B,CAAC,CAAC;IACtE,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAEpD,eAAe;IACf,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;QACrB,WAAW,CAAC,aAAa,CAAC,IAAc,CAAC,CAAC;IAC9C,CAAC;IAED,mBAAmB;IACnB,MAAM,CAAC,SAAS,CAAC;QACb,OAAO,EAAE,aAAa,CAAC,OAAkB;QACzC,KAAK,EAAE,aAAa,CAAC,KAAgB;QACrC,MAAM,EAAE,aAAa,CAAC,MAAiB;KAC1C,CAAC,CAAC;IAEH,mBAAmB;IACnB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACtB,MAAM,eAAe,EAAE,CAAC;QACxB,OAAO;IACX,CAAC;IAED,gBAAgB;IAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,aAAa,CAAC;YAChB,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE;YAC/C,KAAK,EAAE,OAAO,CAAC,KAA2B;SAC7C,CAAC,CAAC;QACH,OAAO;IACX,CAAC;IAED,mCAAmC;IACnC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;IACP,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3D,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO;QACnC,CAAC,CAAE,OAAO,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO;QACnC,CAAC,CAAE,OAAO,CAAC,OAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,QAAQ,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,IAAI,OAA0B,CAAC;IAC/B,IAAI,CAAC;QACD,OAAO,GAAG,MAAM,eAAe,CAAC;YAC5B,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO,CAAC,KAA2B;YAC1C,KAAK,EAAE,OAAO,CAAC,KAAgB;YAC/B,eAAe;YACf,eAAe;SAClB,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACX,CAAC;IAED,+BAA+B;IAC/B,IAAI,cAAc,GAAG,OAAO,CAAC;IAC7B,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,SAAmB,CAAC,CAAC;QAC9D,cAAc,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,oBAAoB;IACpB,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QACtD,cAAc,GAAG,iBAAiB,CAC9B,cAAc,EACd,aAAa,CAAC,YAAuB,EACrC,aAAa,CAAC,OAAkB,CACnC,CAAC;IACN,CAAC;IAED,cAAc;IACd,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,OAAO,EAAE,cAAc;YACvB,GAAG,MAAM;SACZ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACX,CAAC;IAED,eAAe;IACf,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,cAAc,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,UAAU,cAAc,CAAC,MAAM,GAAG,EAAE,eAAe,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,UAAU;IACV,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,OAAO;IACX,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO;IACX,CAAC;IAED,4DAA4D;IAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,aAAa,CACjC,eAAe,cAAc,CAAC,MAAM,aAAa,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CACrF,CAAC;QACF,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1B,OAAO;QACX,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,OAAO,IAAI,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAC9B,MAAM;QACV,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE,CAAC;YAEpC,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,QAAQ,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,IAAI,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC;YAEhE,IAAI,SAAS,EAAE,CAAC;gBACZ,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;gBACtC,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACrC,MAAM,CAAC,IAAI,CAAC,qBAAqB,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;YAC/D,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;gBAC1C,SAAS;YACb,CAAC;YAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;YAEpH,IAAI,MAAM,cAAc,EAAE,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACrB,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;gBAC3D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,MAAM,cAAc,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;oBACxD,IAAI,MAAM,YAAY,CAAC,eAAe,CAAC,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvE,MAAM,YAAY,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC1D,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YAEjD,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,QAAQ,KAAK,CAAC,CAAC;YAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;YAEhB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC;YAEhE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,SAAS;YACb,CAAC;YAED,IAAI,MAAM,aAAa,CAAC,uCAAuC,CAAC,EAAE,CAAC;gBAC/D,MAAM,gBAAgB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,CAAC;QACL,CAAC;QAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACjD,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CACvB,OAA0B,EAC1B,OAAgC;IAEhC,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACjC,OAAO,EACP;QACI,IAAI,EAAE,OAAO,CAAC,IAAe;QAC7B,QAAQ,EAAE,OAAO,CAAC,QAAkB;QACpC,MAAM,EAAE,OAAO,CAAC,MAAiB;KACpC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC,CACJ,CAAC;IAEF,YAAY,CAAC,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,YAAY,UAAU,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAE1D,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,mBAAmB,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC3B,OAA0B,EAC1B,OAAgC;IAEhC,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAClE,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,cAAc,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAEtE,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE;YACxC,MAAM,EAAE,OAAO,CAAC,MAAiB;YACjC,OAAO,EAAE,OAAO,CAAC,OAAkB;SACtC,CAAC,CAAC;QAEH,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC;QAChC,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,GAAG,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,OAAO,CAAC,aAAa,OAAO,CAAC,MAAM,UAAU,CAAC,CAAC;IACtD,MAAM,CAAC,OAAO,CAAC,WAAW,UAAU,QAAQ,CAAC,CAAC;IAC9C,MAAM,CAAC,OAAO,CAAC,SAAS,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,YAAY,CAAC,OAAgC;IACxD,MAAM,QAAQ,GAAI,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAE3D,MAAM,OAAO,GAAG,aAAa,CAAC,eAAe,QAAQ,KAAK,CAAC,CAAC;IAC5D,OAAO,CAAC,KAAK,EAAE,CAAC;IAEhB,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,uBAAuB,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACX,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAExC,sBAAsB;IACtB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAEjD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,GAAG,MAAM;YACT,SAAS,EAAE;gBACP,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;gBAC9E,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;gBAC9E,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;aACxE;YACD,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SAC5E,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACb,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,UAAU;IACV,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;QAC7B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;QAC9E,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;QAC9E,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE;KACxE,CAAC,CAAC,CAAC;IACJ,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,iBAAiB;IACjB,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,gBAAgB;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEnC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,+BAA+B,CAAC,YAAY,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IACxH,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ;QACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAC5G,CAAC;AACL,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,WAAW,CAAC,OAAgC;IACvD,MAAM,eAAe,GAAI,OAAO,CAAC,QAAmB,IAAI,EAAE,CAAC;IAE3D,MAAM,UAAU,CAAC;QACb,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE;QAC/C,KAAK,EAAE,OAAO,CAAC,KAA2B;QAC1C,SAAS,EAAE,OAAO,CAAC,SAA+B;QAClD,MAAM,EAAE,OAAO,CAAC,MAAiB;QACjC,QAAQ,EAAE,eAAe,GAAG,IAAI;QAChC,OAAO,EAAE,OAAO,CAAC,SAAoB;KACxC,CAAC,CAAC;AACP,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAgC;IAC1D,mDAAmD;IACnD,IAAI,cAAc,GAAG,OAAO,CAAC,IAAc,CAAC;IAC5C,IAAI,CAAC,cAAc,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChB,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;QACvC,CAAC;aAAM,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACxB,cAAc,GAAG,WAAW,CAAC,MAAM,CAAC;QACxC,CAAC;aAAM,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACzB,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;QACzC,CAAC;aAAM,CAAC;YACJ,mBAAmB;YACnB,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;QACvC,CAAC;IACL,CAAC;IAED,aAAa,CAAC;QACV,IAAI,EAAG,OAAO,CAAC,IAAe,IAAI,OAAO,CAAC,GAAG,EAAE;QAC/C,KAAK,EAAE,OAAO,CAAC,KAA2B;QAC1C,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,OAAO,CAAC,SAA+B;QAClD,MAAM,EAAE,OAAO,CAAC,MAAiB;KACpC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,60 @@
1
+ export interface ScheduleOptions {
2
+ path: string;
3
+ cron: string;
4
+ olderThan?: string;
5
+ dryRun?: boolean;
6
+ depth?: number;
7
+ }
8
+ export interface ScheduleStats {
9
+ lastRun: Date | null;
10
+ totalRuns: number;
11
+ totalCleaned: number;
12
+ totalFreed: number;
13
+ }
14
+ /**
15
+ * Create initial stats object
16
+ */
17
+ export declare function createInitialStats(): ScheduleStats;
18
+ /**
19
+ * Parse olderThan option to days
20
+ */
21
+ export declare function parseOlderThanDays(olderThan?: string): number | undefined;
22
+ /**
23
+ * Start a scheduled cleanup job
24
+ */
25
+ export declare function startSchedule(options: ScheduleOptions): void;
26
+ /**
27
+ * Run the scheduled cleanup task (exported for testing)
28
+ */
29
+ export declare function runScheduledCleanup(options: ScheduleOptions, olderThanDays: number | undefined, stats: ScheduleStats): Promise<{
30
+ cleaned: number;
31
+ freed: number;
32
+ errors: number;
33
+ }>;
34
+ /**
35
+ * Run cleanup once (for manual/immediate trigger)
36
+ */
37
+ export declare function runOnce(options: Omit<ScheduleOptions, 'cron'>): Promise<void>;
38
+ export declare const cronPresets: {
39
+ daily: string;
40
+ weekly: string;
41
+ monthly: string;
42
+ hourly: string;
43
+ every6hours: string;
44
+ };
45
+ declare const _default: {
46
+ startSchedule: typeof startSchedule;
47
+ runOnce: typeof runOnce;
48
+ runScheduledCleanup: typeof runScheduledCleanup;
49
+ createInitialStats: typeof createInitialStats;
50
+ parseOlderThanDays: typeof parseOlderThanDays;
51
+ cronPresets: {
52
+ daily: string;
53
+ weekly: string;
54
+ monthly: string;
55
+ hourly: string;
56
+ every6hours: string;
57
+ };
58
+ };
59
+ export default _default;
60
+ //# sourceMappingURL=schedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAOlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEzE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA0C5D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,eAAe,EACxB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAyD7D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAInF;AAGD,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;;;;;;;;;;;;;;;AAEF,wBAOE"}
@@ -0,0 +1,139 @@
1
+ import { CronJob } from 'cron';
2
+ import chalk from 'chalk';
3
+ import { scanNodeModules, calculateTotals, filterByAge } from '../core/scanner.js';
4
+ import { cleanNodeModules } from '../core/cleaner.js';
5
+ import { formatBytes, parseDuration } from '../utils/formatter.js';
6
+ import logger from '../utils/logger.js';
7
+ /**
8
+ * Create initial stats object
9
+ */
10
+ export function createInitialStats() {
11
+ return {
12
+ lastRun: null,
13
+ totalRuns: 0,
14
+ totalCleaned: 0,
15
+ totalFreed: 0,
16
+ };
17
+ }
18
+ /**
19
+ * Parse olderThan option to days
20
+ */
21
+ export function parseOlderThanDays(olderThan) {
22
+ return olderThan ? parseDuration(olderThan) : undefined;
23
+ }
24
+ /**
25
+ * Start a scheduled cleanup job
26
+ */
27
+ export function startSchedule(options) {
28
+ const stats = createInitialStats();
29
+ const olderThanDays = parseOlderThanDays(options.olderThan);
30
+ console.log(chalk.cyan('๐Ÿ“… Scheduled Cleanup Started'));
31
+ console.log(chalk.gray(`Path: ${options.path}`));
32
+ console.log(chalk.gray(`Schedule: ${options.cron}`));
33
+ if (olderThanDays) {
34
+ console.log(chalk.gray(`Age filter: >${olderThanDays} days`));
35
+ }
36
+ if (options.dryRun) {
37
+ console.log(chalk.yellow('โš ๏ธ Dry run mode enabled'));
38
+ }
39
+ console.log(chalk.gray('Press Ctrl+C to stop\n'));
40
+ // Create cron job
41
+ const job = new CronJob(options.cron, async () => {
42
+ await runScheduledCleanup(options, olderThanDays, stats);
43
+ }, null, // onComplete
44
+ true, // start now
45
+ undefined, // timezone
46
+ null, // context
47
+ false // runOnInit
48
+ );
49
+ // Show next run time
50
+ const nextRun = job.nextDate();
51
+ console.log(chalk.gray(`Next run: ${nextRun.toLocaleString()}`));
52
+ // Handle graceful shutdown
53
+ process.on('SIGINT', () => {
54
+ job.stop();
55
+ console.log();
56
+ logger.success('Scheduled cleanup stopped');
57
+ console.log(chalk.gray(`Total runs: ${stats.totalRuns}`));
58
+ console.log(chalk.gray(`Total cleaned: ${stats.totalCleaned} folders`));
59
+ console.log(chalk.gray(`Total freed: ${formatBytes(stats.totalFreed)}`));
60
+ process.exit(0);
61
+ });
62
+ }
63
+ /**
64
+ * Run the scheduled cleanup task (exported for testing)
65
+ */
66
+ export async function runScheduledCleanup(options, olderThanDays, stats) {
67
+ const timestamp = new Date().toLocaleString();
68
+ console.log(chalk.cyan(`\n[${timestamp}] Running scheduled cleanup...`));
69
+ try {
70
+ let folders = await scanNodeModules({
71
+ path: options.path,
72
+ depth: options.depth,
73
+ quick: false,
74
+ });
75
+ // Apply age filter
76
+ if (olderThanDays !== undefined) {
77
+ folders = filterByAge(folders, olderThanDays);
78
+ }
79
+ stats.lastRun = new Date();
80
+ stats.totalRuns++;
81
+ if (folders.length === 0) {
82
+ console.log(chalk.green('โœ“ No folders to clean'));
83
+ return { cleaned: 0, freed: 0, errors: 0 };
84
+ }
85
+ const totals = calculateTotals(folders);
86
+ console.log(chalk.yellow(`Found ${folders.length} folders (${formatBytes(totals.totalSize)})`));
87
+ if (options.dryRun) {
88
+ console.log(chalk.gray('Dry run - no files deleted'));
89
+ folders.slice(0, 5).forEach(f => {
90
+ console.log(chalk.gray(` โ†’ ${f.projectPath} (${f.ageDays}d)`));
91
+ });
92
+ return { cleaned: 0, freed: 0, errors: 0 };
93
+ }
94
+ // Perform cleanup
95
+ const result = await cleanNodeModules(folders, { fast: true });
96
+ stats.totalCleaned += result.deletedCount;
97
+ stats.totalFreed += result.freedBytes;
98
+ console.log(chalk.green(`โœ“ Cleaned ${result.deletedCount} folders`));
99
+ console.log(chalk.green(`โœ“ Freed ${formatBytes(result.freedBytes)}`));
100
+ if (result.errors.length > 0) {
101
+ console.log(chalk.red(`โœ— ${result.errors.length} errors`));
102
+ }
103
+ return {
104
+ cleaned: result.deletedCount,
105
+ freed: result.freedBytes,
106
+ errors: result.errors.length,
107
+ };
108
+ }
109
+ catch (error) {
110
+ console.log(chalk.red('โœ— Cleanup failed'));
111
+ logger.debug(error instanceof Error ? error.message : String(error));
112
+ return { cleaned: 0, freed: 0, errors: 1 };
113
+ }
114
+ }
115
+ /**
116
+ * Run cleanup once (for manual/immediate trigger)
117
+ */
118
+ export async function runOnce(options) {
119
+ const stats = createInitialStats();
120
+ const olderThanDays = parseOlderThanDays(options.olderThan);
121
+ await runScheduledCleanup({ ...options, cron: '' }, olderThanDays, stats);
122
+ }
123
+ // Common cron presets
124
+ export const cronPresets = {
125
+ daily: '0 0 * * *', // Every day at midnight
126
+ weekly: '0 0 * * 0', // Every Sunday at midnight
127
+ monthly: '0 0 1 * *', // First day of month at midnight
128
+ hourly: '0 * * * *', // Every hour
129
+ every6hours: '0 */6 * * *', // Every 6 hours
130
+ };
131
+ export default {
132
+ startSchedule,
133
+ runOnce,
134
+ runScheduledCleanup,
135
+ createInitialStats,
136
+ parseOlderThanDays,
137
+ cronPresets,
138
+ };
139
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"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"}