packagepurge 1.0.0 → 2.0.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.
Files changed (40) hide show
  1. package/.agent/workflows/build.md +58 -0
  2. package/.github/workflows/release.yml +176 -0
  3. package/README.md +215 -49
  4. package/dist/cli/index.d.ts +1 -0
  5. package/dist/cli/index.js +122 -132
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/core/bindings.d.ts +11 -0
  8. package/dist/core/bindings.d.ts.map +1 -1
  9. package/dist/core/bindings.js +40 -94
  10. package/dist/core/bindings.js.map +1 -1
  11. package/dist/utils/core-utils.d.ts +31 -0
  12. package/dist/utils/core-utils.d.ts.map +1 -0
  13. package/dist/utils/core-utils.js +121 -0
  14. package/dist/utils/core-utils.js.map +1 -0
  15. package/dist/utils/formatter.d.ts +63 -0
  16. package/dist/utils/formatter.d.ts.map +1 -0
  17. package/dist/utils/formatter.js +295 -0
  18. package/dist/utils/formatter.js.map +1 -0
  19. package/package.json +3 -3
  20. package/core/src/arc_lfu.rs +0 -91
  21. package/core/src/cache.rs +0 -205
  22. package/core/src/lockfiles.rs +0 -112
  23. package/core/src/main.rs +0 -125
  24. package/core/src/ml.rs +0 -188
  25. package/core/src/optimization.rs +0 -314
  26. package/core/src/safety.rs +0 -103
  27. package/core/src/scanner.rs +0 -136
  28. package/core/src/symlink.rs +0 -223
  29. package/core/src/types.rs +0 -87
  30. package/core/src/usage_tracker.rs +0 -107
  31. package/src/cli/index.ts +0 -212
  32. package/src/core/bindings.ts +0 -157
  33. package/src/managers/base-manager.ts +0 -117
  34. package/src/managers/index.ts +0 -32
  35. package/src/managers/npm-manager.ts +0 -96
  36. package/src/managers/pnpm-manager.ts +0 -107
  37. package/src/managers/yarn-manager.ts +0 -112
  38. package/src/types/index.ts +0 -97
  39. package/src/utils/logger.ts +0 -50
  40. package/tsconfig.json +0 -22
package/dist/cli/index.js CHANGED
@@ -1,122 +1,57 @@
1
+ #!/usr/bin/env node
1
2
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
3
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
4
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
5
  };
38
6
  Object.defineProperty(exports, "__esModule", { value: true });
39
7
  const commander_1 = require("commander");
40
- const child_process_1 = require("child_process");
41
- const path = __importStar(require("path"));
42
- const fs = __importStar(require("fs"));
8
+ const chalk_1 = __importDefault(require("chalk"));
43
9
  const logger_1 = require("../utils/logger");
44
- const yaml_1 = __importDefault(require("yaml"));
45
- function isWindows() {
46
- return process.platform === 'win32';
47
- }
48
- function fileExists(p) {
49
- try {
50
- return fs.existsSync(p);
51
- }
52
- catch {
53
- return false;
54
- }
55
- }
56
- function resolveFromPATH(name) {
57
- const exts = isWindows() ? ['.exe', '.cmd', ''] : [''];
58
- const parts = (process.env.PATH || '').split(path.delimiter);
59
- for (const dir of parts) {
60
- for (const ext of exts) {
61
- const candidate = path.join(dir, name + ext);
62
- if (fileExists(candidate))
63
- return candidate;
64
- }
65
- }
66
- return null;
67
- }
68
- function coreBinary() {
69
- // 1) Env override
70
- const envPath = process.env.PACKAGEPURGE_CORE;
71
- if (envPath && fileExists(envPath))
72
- return envPath;
73
- // 2) Local release/debug
74
- const exe = isWindows() ? 'packagepurge_core.exe' : 'packagepurge-core';
75
- const rel = path.join(process.cwd(), 'core', 'target', 'release', exe);
76
- if (fileExists(rel))
77
- return rel;
78
- const dbg = path.join(process.cwd(), 'core', 'target', 'debug', exe);
79
- if (fileExists(dbg))
80
- return dbg;
81
- // 3) PATH
82
- const fromPath = resolveFromPATH(isWindows() ? 'packagepurge_core' : 'packagepurge-core');
83
- if (fromPath)
84
- return fromPath;
85
- throw new Error('packagepurge-core binary not found. Build with "npm run build:core" or set PACKAGEPURGE_CORE.');
86
- }
87
- function runCore(args) {
88
- return new Promise((resolve, reject) => {
89
- const bin = coreBinary();
90
- const child = (0, child_process_1.spawn)(bin, args, { stdio: ['ignore', 'pipe', 'pipe'], env: process.env });
91
- let out = '';
92
- let err = '';
93
- child.stdout.on('data', (d) => out += d.toString());
94
- child.stderr.on('data', (d) => err += d.toString());
95
- child.on('error', reject);
96
- child.on('close', (code) => resolve({ stdout: out, stderr: err, code: code ?? 1 }));
97
- });
98
- }
99
- async function output(data, format) {
100
- if (format === 'yaml') {
101
- try {
102
- const obj = JSON.parse(data);
103
- console.log(yaml_1.default.stringify(obj));
104
- return;
105
- }
106
- catch {
107
- // Fallback to raw
10
+ const core_utils_1 = require("../utils/core-utils");
11
+ const formatter_1 = require("../utils/formatter");
12
+ // Simple spinner for progress indication
13
+ class Spinner {
14
+ constructor(text) {
15
+ this.frames = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
16
+ this.current = 0;
17
+ this.interval = null;
18
+ this.text = text;
19
+ }
20
+ start() {
21
+ process.stderr.write('\x1B[?25l'); // Hide cursor
22
+ this.interval = setInterval(() => {
23
+ process.stderr.write(`\r${chalk_1.default.cyan(this.frames[this.current])} ${this.text}`);
24
+ this.current = (this.current + 1) % this.frames.length;
25
+ }, 80);
26
+ }
27
+ update(text) {
28
+ this.text = text;
29
+ }
30
+ succeed(text) {
31
+ this.stop();
32
+ console.error(`\r${chalk_1.default.green('✓')} ${text || this.text}`);
33
+ }
34
+ fail(text) {
35
+ this.stop();
36
+ console.error(`\r${chalk_1.default.red('✗')} ${text || this.text}`);
37
+ }
38
+ stop() {
39
+ if (this.interval) {
40
+ clearInterval(this.interval);
41
+ this.interval = null;
108
42
  }
43
+ process.stderr.write('\x1B[?25h'); // Show cursor
44
+ process.stderr.write('\r\x1B[K'); // Clear line
109
45
  }
110
- console.log(data);
111
46
  }
112
47
  const program = new commander_1.Command();
113
48
  program
114
- .name('packagepurge')
49
+ .name('purge')
115
50
  .description('Intelligent package manager cache cleanup service with project-aware optimization')
116
- .version('1.0.0')
51
+ .version('1.0.1')
117
52
  .option('-q, --quiet', 'Minimal output', false)
118
53
  .option('-v, --verbose', 'Verbose logging', false)
119
- .option('-f, --format <format>', 'Output format: json|yaml', 'json');
54
+ .option('-f, --format <format>', 'Output format: table|json|yaml', 'table');
120
55
  program.hook('preAction', (_, actionCommand) => {
121
56
  const opts = actionCommand.optsWithGlobals();
122
57
  if (opts.verbose)
@@ -128,14 +63,19 @@ program
128
63
  .option('-p, --paths <paths...>', 'Paths to scan', [])
129
64
  .action(async (opts, cmd) => {
130
65
  const g = cmd.parent?.opts?.() || {};
66
+ const format = (g.format || 'table');
67
+ const spinner = !g.quiet && format === 'table' ? new Spinner('Scanning for packages...') : null;
68
+ spinner?.start();
131
69
  const args = ['scan', ...(opts.paths?.length ? ['--paths', ...opts.paths] : [])];
132
- const res = await runCore(args);
70
+ const res = await (0, core_utils_1.runCore)(args);
133
71
  if (res.code !== 0) {
72
+ spinner?.fail('Scan failed');
134
73
  if (!g.quiet)
135
74
  logger_1.logger.error(res.stderr || 'Scan failed');
136
75
  process.exit(res.code);
137
76
  }
138
- await output(res.stdout, (g.format || 'json'));
77
+ spinner?.succeed('Scan complete');
78
+ (0, formatter_1.output)(res.stdout, format, 'scan');
139
79
  });
140
80
  program
141
81
  .command('analyze')
@@ -144,15 +84,20 @@ program
144
84
  .option('-d, --preserve-days <days>', 'Preserve days for recency', '90')
145
85
  .action(async (opts, cmd) => {
146
86
  const g = cmd.parent?.opts?.() || {};
147
- const preserve = String(opts.preserveDays ?? opts['preserve-days'] ?? opts.d ?? 90);
87
+ const format = (g.format || 'table');
88
+ const spinner = !g.quiet && format === 'table' ? new Spinner('Analyzing packages...') : null;
89
+ spinner?.start();
90
+ const preserve = String(opts.preserveDays ?? 90);
148
91
  const args = ['dry-run', '--preserve-days', preserve, ...(opts.paths?.length ? ['--paths', ...opts.paths] : [])];
149
- const res = await runCore(args);
92
+ const res = await (0, core_utils_1.runCore)(args);
150
93
  if (res.code !== 0) {
94
+ spinner?.fail('Analysis failed');
151
95
  if (!g.quiet)
152
96
  logger_1.logger.error(res.stderr || 'Analyze failed');
153
97
  process.exit(res.code);
154
98
  }
155
- await output(res.stdout, (g.format || 'json'));
99
+ spinner?.succeed('Analysis complete');
100
+ (0, formatter_1.output)(res.stdout, format, 'analyze');
156
101
  });
157
102
  program
158
103
  .command('clean')
@@ -160,18 +105,26 @@ program
160
105
  .option('-t, --targets <targets...>', 'Paths to quarantine (from analyze)')
161
106
  .action(async (opts, cmd) => {
162
107
  const g = cmd.parent?.opts?.() || {};
108
+ const format = (g.format || 'table');
163
109
  if (!opts.targets || !opts.targets.length) {
164
- if (!g.quiet)
165
- logger_1.logger.warn('No targets provided. Run analyze first to produce a plan.');
110
+ if (!g.quiet) {
111
+ console.log(chalk_1.default.yellow('No targets provided.'));
112
+ console.log(chalk_1.default.gray(' Run `packagepurge analyze` first to produce a cleanup plan.'));
113
+ console.log(chalk_1.default.gray(' Then use: packagepurge clean --targets <path1> <path2> ...'));
114
+ }
166
115
  process.exit(2);
167
116
  }
168
- const res = await runCore(['quarantine', ...opts.targets]);
117
+ const spinner = !g.quiet && format === 'table' ? new Spinner(`Quarantining ${opts.targets.length} packages...`) : null;
118
+ spinner?.start();
119
+ const res = await (0, core_utils_1.runCore)(['quarantine', ...opts.targets]);
169
120
  if (res.code !== 0) {
121
+ spinner?.fail('Quarantine failed');
170
122
  if (!g.quiet)
171
123
  logger_1.logger.error(res.stderr || 'Clean failed');
172
124
  process.exit(res.code);
173
125
  }
174
- await output(res.stdout, (g.format || 'json'));
126
+ spinner?.succeed('Quarantine complete');
127
+ (0, formatter_1.output)(res.stdout, format, 'quarantine');
175
128
  });
176
129
  program
177
130
  .command('rollback')
@@ -180,15 +133,31 @@ program
180
133
  .option('--latest', 'Rollback the most recent quarantine', false)
181
134
  .action(async (opts, cmd) => {
182
135
  const g = cmd.parent?.opts?.() || {};
136
+ const format = (g.format || 'table');
137
+ if (!opts.id && !opts.latest) {
138
+ if (!g.quiet) {
139
+ console.log(chalk_1.default.yellow('⚠ No rollback target specified.'));
140
+ console.log(chalk_1.default.gray(' Use: packagepurge rollback --latest'));
141
+ console.log(chalk_1.default.gray(' Or: packagepurge rollback --id <quarantine-id>'));
142
+ }
143
+ process.exit(2);
144
+ }
145
+ const spinner = !g.quiet && format === 'table' ? new Spinner('Rolling back...') : null;
146
+ spinner?.start();
183
147
  const args = ['rollback'];
184
- const finalArgs = opts.id ? args.concat(['--id', opts.id]) : (opts.latest ? args.concat(['--latest']) : args);
185
- const res = await runCore(finalArgs);
148
+ if (opts.id)
149
+ args.push('--id', opts.id);
150
+ if (opts.latest)
151
+ args.push('--latest');
152
+ const res = await (0, core_utils_1.runCore)(args);
186
153
  if (res.code !== 0) {
154
+ spinner?.fail('Rollback failed');
187
155
  if (!g.quiet)
188
156
  logger_1.logger.error(res.stderr || 'Rollback failed');
189
157
  process.exit(res.code);
190
158
  }
191
- await output(res.stdout, (g.format || 'json'));
159
+ spinner?.succeed('Rollback complete');
160
+ (0, formatter_1.output)(res.stdout, format, 'rollback');
192
161
  });
193
162
  program
194
163
  .command('optimize')
@@ -201,31 +170,39 @@ program
201
170
  .option('--lru-max-size-bytes <bytes>', 'Maximum size of LRU cache in bytes', '10000000000')
202
171
  .action(async (opts, cmd) => {
203
172
  const g = cmd.parent?.opts?.() || {};
204
- const preserve = String(opts.preserveDays ?? opts['preserve-days'] ?? opts.d ?? 90);
205
- const lruPackages = String(opts.lruMaxPackages ?? opts['lru-max-packages'] ?? 1000);
206
- const lruSize = String(opts.lruMaxSizeBytes ?? opts['lru-max-size-bytes'] ?? 10000000000);
173
+ const format = (g.format || 'table');
174
+ const features = [];
175
+ if (opts.enableSymlinking)
176
+ features.push('symlinking');
177
+ if (opts.enableMl)
178
+ features.push('ML');
179
+ const featureStr = features.length ? ` (${features.join(', ')})` : '';
180
+ const spinner = !g.quiet && format === 'table' ? new Spinner(`Optimizing packages${featureStr}...`) : null;
181
+ spinner?.start();
182
+ const preserve = String(opts.preserveDays ?? 90);
183
+ const lruPackages = String(opts.lruMaxPackages ?? 1000);
184
+ const lruSize = String(opts.lruMaxSizeBytes ?? 10000000000);
207
185
  const args = [
208
186
  'optimize',
209
187
  '--preserve-days', preserve,
210
188
  '--lru-max-packages', lruPackages,
211
189
  '--lru-max-size-bytes', lruSize,
212
190
  ];
213
- if (opts.enableSymlinking || opts['enable-symlinking']) {
191
+ if (opts.enableSymlinking)
214
192
  args.push('--enable-symlinking');
215
- }
216
- if (opts.enableMl || opts['enable-ml']) {
193
+ if (opts.enableMl)
217
194
  args.push('--enable-ml');
218
- }
219
- if (opts.paths?.length) {
195
+ if (opts.paths?.length)
220
196
  args.push('--paths', ...opts.paths);
221
- }
222
- const res = await runCore(args);
197
+ const res = await (0, core_utils_1.runCore)(args);
223
198
  if (res.code !== 0) {
199
+ spinner?.fail('Optimization failed');
224
200
  if (!g.quiet)
225
201
  logger_1.logger.error(res.stderr || 'Optimize failed');
226
202
  process.exit(res.code);
227
203
  }
228
- await output(res.stdout, (g.format || 'json'));
204
+ spinner?.succeed('Optimization complete');
205
+ (0, formatter_1.output)(res.stdout, format, 'optimize');
229
206
  });
230
207
  program
231
208
  .command('symlink')
@@ -233,17 +210,30 @@ program
233
210
  .option('-p, --paths <paths...>', 'Paths to process', [])
234
211
  .action(async (opts, cmd) => {
235
212
  const g = cmd.parent?.opts?.() || {};
213
+ const format = (g.format || 'table');
214
+ // Check for Windows symlink capability
215
+ if (process.platform === 'win32') {
216
+ console.log(chalk_1.default.yellow('⚠ Note: Symlinking on Windows requires Administrator privileges or Developer Mode.'));
217
+ }
218
+ const spinner = !g.quiet && format === 'table' ? new Spinner('Creating symlinks...') : null;
219
+ spinner?.start();
236
220
  const args = ['symlink'];
237
- if (opts.paths?.length) {
221
+ if (opts.paths?.length)
238
222
  args.push('--paths', ...opts.paths);
239
- }
240
- const res = await runCore(args);
223
+ const res = await (0, core_utils_1.runCore)(args);
241
224
  if (res.code !== 0) {
242
- if (!g.quiet)
225
+ spinner?.fail('Symlinking failed');
226
+ if (!g.quiet) {
243
227
  logger_1.logger.error(res.stderr || 'Symlink failed');
228
+ if (process.platform === 'win32' && res.stderr?.includes('symlink')) {
229
+ console.log(chalk_1.default.yellow('\n💡 Tip: Enable Developer Mode in Windows Settings > For Developers'));
230
+ console.log(chalk_1.default.gray(' Or run this command as Administrator'));
231
+ }
232
+ }
244
233
  process.exit(res.code);
245
234
  }
246
- await output(res.stdout, (g.format || 'json'));
235
+ spinner?.succeed('Symlinking complete');
236
+ (0, formatter_1.output)(res.stdout, format, 'symlink');
247
237
  });
248
238
  program.parse(process.argv);
249
239
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -30,4 +30,15 @@ export declare function scan(paths?: string[]): Promise<any>;
30
30
  * Analyze (dry run) cleanup plan
31
31
  */
32
32
  export declare function analyze(paths?: string[], preserveDays?: number): Promise<any>;
33
+ /**
34
+ * Quarantine packages (move to quarantine directory)
35
+ */
36
+ export declare function quarantine(targets: string[]): Promise<any>;
37
+ /**
38
+ * Rollback a quarantine operation
39
+ */
40
+ export declare function rollback(options?: {
41
+ id?: string;
42
+ latest?: boolean;
43
+ }): Promise<any>;
33
44
  //# sourceMappingURL=bindings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/core/bindings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAmDzD,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4BrF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAa5F;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAY7D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,GAAE,MAAM,EAAO,EAAE,YAAY,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAY3F"}
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../src/core/bindings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC/B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4BrF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC,CAa5F;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAY7D;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,KAAK,GAAE,MAAM,EAAO,EAAE,YAAY,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAY3F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAWhE;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAgB5F"}
@@ -3,101 +3,14 @@
3
3
  * TypeScript bindings for Rust core functionality
4
4
  * Provides type-safe interfaces to the Rust binary
5
5
  */
6
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
- if (k2 === undefined) k2 = k;
8
- var desc = Object.getOwnPropertyDescriptor(m, k);
9
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
- desc = { enumerable: true, get: function() { return m[k]; } };
11
- }
12
- Object.defineProperty(o, k2, desc);
13
- }) : (function(o, m, k, k2) {
14
- if (k2 === undefined) k2 = k;
15
- o[k2] = m[k];
16
- }));
17
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
- Object.defineProperty(o, "default", { enumerable: true, value: v });
19
- }) : function(o, v) {
20
- o["default"] = v;
21
- });
22
- var __importStar = (this && this.__importStar) || (function () {
23
- var ownKeys = function(o) {
24
- ownKeys = Object.getOwnPropertyNames || function (o) {
25
- var ar = [];
26
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
- return ar;
28
- };
29
- return ownKeys(o);
30
- };
31
- return function (mod) {
32
- if (mod && mod.__esModule) return mod;
33
- var result = {};
34
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
- __setModuleDefault(result, mod);
36
- return result;
37
- };
38
- })();
39
6
  Object.defineProperty(exports, "__esModule", { value: true });
40
7
  exports.optimize = optimize;
41
8
  exports.executeSymlinking = executeSymlinking;
42
9
  exports.scan = scan;
43
10
  exports.analyze = analyze;
44
- const child_process_1 = require("child_process");
45
- const path = __importStar(require("path"));
46
- const fs = __importStar(require("fs"));
47
- function isWindows() {
48
- return process.platform === 'win32';
49
- }
50
- function fileExists(p) {
51
- try {
52
- return fs.existsSync(p);
53
- }
54
- catch {
55
- return false;
56
- }
57
- }
58
- function resolveFromPATH(name) {
59
- const exts = isWindows() ? ['.exe', '.cmd', ''] : [''];
60
- const parts = (process.env.PATH || '').split(path.delimiter);
61
- for (const dir of parts) {
62
- for (const ext of exts) {
63
- const candidate = path.join(dir, name + ext);
64
- if (fileExists(candidate))
65
- return candidate;
66
- }
67
- }
68
- return null;
69
- }
70
- function coreBinary() {
71
- // 1) Env override
72
- const envPath = process.env.PACKAGEPURGE_CORE;
73
- if (envPath && fileExists(envPath))
74
- return envPath;
75
- // 2) Local release/debug
76
- const exe = isWindows() ? 'packagepurge_core.exe' : 'packagepurge-core';
77
- const rel = path.join(process.cwd(), 'core', 'target', 'release', exe);
78
- if (fileExists(rel))
79
- return rel;
80
- const dbg = path.join(process.cwd(), 'core', 'target', 'debug', exe);
81
- if (fileExists(dbg))
82
- return dbg;
83
- // 3) PATH
84
- const fromPath = resolveFromPATH(isWindows() ? 'packagepurge_core' : 'packagepurge-core');
85
- if (fromPath)
86
- return fromPath;
87
- throw new Error('packagepurge-core binary not found. Build with "npm run build:core" or set PACKAGEPURGE_CORE.');
88
- }
89
- function runCore(args) {
90
- return new Promise((resolve, reject) => {
91
- const bin = coreBinary();
92
- const child = (0, child_process_1.spawn)(bin, args, { stdio: ['ignore', 'pipe', 'pipe'], env: process.env });
93
- let out = '';
94
- let err = '';
95
- child.stdout.on('data', (d) => out += d.toString());
96
- child.stderr.on('data', (d) => err += d.toString());
97
- child.on('error', reject);
98
- child.on('close', (code) => resolve({ stdout: out, stderr: err, code: code ?? 1 }));
99
- });
100
- }
11
+ exports.quarantine = quarantine;
12
+ exports.rollback = rollback;
13
+ const core_utils_1 = require("../utils/core-utils");
101
14
  /**
102
15
  * Optimize packages with ML/LRU prediction and symlinking
103
16
  */
@@ -121,7 +34,7 @@ async function optimize(options = {}) {
121
34
  if (options.paths && options.paths.length > 0) {
122
35
  args.push('--paths', ...options.paths);
123
36
  }
124
- const res = await runCore(args);
37
+ const res = await (0, core_utils_1.runCore)(args);
125
38
  if (res.code !== 0) {
126
39
  throw new Error(`Optimize failed: ${res.stderr || 'Unknown error'}`);
127
40
  }
@@ -135,7 +48,7 @@ async function executeSymlinking(options = {}) {
135
48
  if (options.paths && options.paths.length > 0) {
136
49
  args.push('--paths', ...options.paths);
137
50
  }
138
- const res = await runCore(args);
51
+ const res = await (0, core_utils_1.runCore)(args);
139
52
  if (res.code !== 0) {
140
53
  throw new Error(`Symlink failed: ${res.stderr || 'Unknown error'}`);
141
54
  }
@@ -149,7 +62,7 @@ async function scan(paths = []) {
149
62
  if (paths.length > 0) {
150
63
  args.push('--paths', ...paths);
151
64
  }
152
- const res = await runCore(args);
65
+ const res = await (0, core_utils_1.runCore)(args);
153
66
  if (res.code !== 0) {
154
67
  throw new Error(`Scan failed: ${res.stderr || 'Unknown error'}`);
155
68
  }
@@ -163,10 +76,43 @@ async function analyze(paths = [], preserveDays = 90) {
163
76
  if (paths.length > 0) {
164
77
  args.push('--paths', ...paths);
165
78
  }
166
- const res = await runCore(args);
79
+ const res = await (0, core_utils_1.runCore)(args);
167
80
  if (res.code !== 0) {
168
81
  throw new Error(`Analyze failed: ${res.stderr || 'Unknown error'}`);
169
82
  }
170
83
  return JSON.parse(res.stdout);
171
84
  }
85
+ /**
86
+ * Quarantine packages (move to quarantine directory)
87
+ */
88
+ async function quarantine(targets) {
89
+ if (!targets.length) {
90
+ throw new Error('No targets provided for quarantine');
91
+ }
92
+ const res = await (0, core_utils_1.runCore)(['quarantine', ...targets]);
93
+ if (res.code !== 0) {
94
+ throw new Error(`Quarantine failed: ${res.stderr || 'Unknown error'}`);
95
+ }
96
+ return JSON.parse(res.stdout);
97
+ }
98
+ /**
99
+ * Rollback a quarantine operation
100
+ */
101
+ async function rollback(options = {}) {
102
+ const args = ['rollback'];
103
+ if (options.id) {
104
+ args.push('--id', options.id);
105
+ }
106
+ else if (options.latest) {
107
+ args.push('--latest');
108
+ }
109
+ else {
110
+ throw new Error('Either id or latest must be specified for rollback');
111
+ }
112
+ const res = await (0, core_utils_1.runCore)(args);
113
+ if (res.code !== 0) {
114
+ throw new Error(`Rollback failed: ${res.stderr || 'Unknown error'}`);
115
+ }
116
+ return JSON.parse(res.stdout);
117
+ }
172
118
  //# sourceMappingURL=bindings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/core/bindings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../../src/core/bindings.ts"],"names":[],"mappings":"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"}