depfixer 1.0.0 → 1.1.1

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 (85) hide show
  1. package/dist/commands/audit.d.ts +19 -0
  2. package/dist/commands/audit.d.ts.map +1 -0
  3. package/dist/commands/audit.js +170 -0
  4. package/dist/commands/audit.js.map +1 -0
  5. package/dist/commands/fix.d.ts +10 -3
  6. package/dist/commands/fix.d.ts.map +1 -1
  7. package/dist/commands/fix.js +407 -41
  8. package/dist/commands/fix.js.map +1 -1
  9. package/dist/commands/graph.d.ts +1 -1
  10. package/dist/commands/graph.d.ts.map +1 -1
  11. package/dist/commands/graph.js +17 -12
  12. package/dist/commands/graph.js.map +1 -1
  13. package/dist/commands/login.d.ts.map +1 -1
  14. package/dist/commands/login.js +120 -19
  15. package/dist/commands/login.js.map +1 -1
  16. package/dist/commands/logout.d.ts.map +1 -1
  17. package/dist/commands/logout.js +6 -0
  18. package/dist/commands/logout.js.map +1 -1
  19. package/dist/commands/migrate.d.ts +22 -0
  20. package/dist/commands/migrate.d.ts.map +1 -0
  21. package/dist/commands/migrate.js +874 -0
  22. package/dist/commands/migrate.js.map +1 -0
  23. package/dist/commands/smart.d.ts +23 -0
  24. package/dist/commands/smart.d.ts.map +1 -0
  25. package/dist/commands/smart.js +1024 -0
  26. package/dist/commands/smart.js.map +1 -0
  27. package/dist/commands/whoami.d.ts +14 -0
  28. package/dist/commands/whoami.d.ts.map +1 -0
  29. package/dist/commands/whoami.js +65 -0
  30. package/dist/commands/whoami.js.map +1 -0
  31. package/dist/index.js +165 -40
  32. package/dist/index.js.map +1 -1
  33. package/dist/services/analytics.d.ts +108 -0
  34. package/dist/services/analytics.d.ts.map +1 -0
  35. package/dist/services/analytics.js +305 -0
  36. package/dist/services/analytics.js.map +1 -0
  37. package/dist/services/api-client.d.ts +159 -0
  38. package/dist/services/api-client.d.ts.map +1 -1
  39. package/dist/services/api-client.js +192 -10
  40. package/dist/services/api-client.js.map +1 -1
  41. package/dist/services/auth-manager.d.ts +14 -0
  42. package/dist/services/auth-manager.d.ts.map +1 -1
  43. package/dist/services/auth-manager.js +30 -0
  44. package/dist/services/auth-manager.js.map +1 -1
  45. package/dist/services/cache-manager.d.ts +62 -22
  46. package/dist/services/cache-manager.d.ts.map +1 -1
  47. package/dist/services/cache-manager.js +116 -30
  48. package/dist/services/cache-manager.js.map +1 -1
  49. package/dist/services/device-id.d.ts +20 -0
  50. package/dist/services/device-id.d.ts.map +1 -0
  51. package/dist/services/device-id.js +70 -0
  52. package/dist/services/device-id.js.map +1 -0
  53. package/dist/services/package-json.d.ts +44 -5
  54. package/dist/services/package-json.d.ts.map +1 -1
  55. package/dist/services/package-json.js +273 -20
  56. package/dist/services/package-json.js.map +1 -1
  57. package/dist/services/payment-flow.d.ts +108 -0
  58. package/dist/services/payment-flow.d.ts.map +1 -0
  59. package/dist/services/payment-flow.js +476 -0
  60. package/dist/services/payment-flow.js.map +1 -0
  61. package/dist/services/session-manager.d.ts +92 -0
  62. package/dist/services/session-manager.d.ts.map +1 -0
  63. package/dist/services/session-manager.js +218 -0
  64. package/dist/services/session-manager.js.map +1 -0
  65. package/dist/utils/design-system.d.ts +90 -0
  66. package/dist/utils/design-system.d.ts.map +1 -0
  67. package/dist/utils/design-system.js +338 -0
  68. package/dist/utils/design-system.js.map +1 -0
  69. package/dist/utils/output.d.ts +48 -1
  70. package/dist/utils/output.d.ts.map +1 -1
  71. package/dist/utils/output.js +180 -17
  72. package/dist/utils/output.js.map +1 -1
  73. package/dist/utils/print.d.ts +116 -0
  74. package/dist/utils/print.d.ts.map +1 -0
  75. package/dist/utils/print.js +190 -0
  76. package/dist/utils/print.js.map +1 -0
  77. package/package.json +13 -2
  78. package/dist/commands/analyze.d.ts +0 -18
  79. package/dist/commands/analyze.d.ts.map +0 -1
  80. package/dist/commands/analyze.js +0 -404
  81. package/dist/commands/analyze.js.map +0 -1
  82. package/dist/services/gitignore.d.ts +0 -19
  83. package/dist/services/gitignore.d.ts.map +0 -1
  84. package/dist/services/gitignore.js +0 -64
  85. package/dist/services/gitignore.js.map +0 -1
@@ -1,82 +1,448 @@
1
1
  import chalk from 'chalk';
2
2
  import { PackageJsonService } from '../services/package-json.js';
3
3
  import { CacheManager } from '../services/cache-manager.js';
4
- import { createSpinner, printHeader, printSuccess, printError, printWarning, } from '../utils/output.js';
4
+ import { SessionManager } from '../services/session-manager.js';
5
+ import { PaymentFlowService } from '../services/payment-flow.js';
6
+ import { ApiClient, NetworkError } from '../services/api-client.js';
7
+ import { analytics } from '../services/analytics.js';
8
+ import { createSpinner, printHeader, printSuccess, printError, printWarning, printInfo, runStepSequence, } from '../utils/output.js';
9
+ import { printCliHeader } from '../utils/design-system.js';
5
10
  /**
6
11
  * Fix command
7
12
  *
8
- * Applies cached fixes from a previous --full analysis
9
- * Creates package.json.fixed (does not modify original)
13
+ * Applies fixes from a previous analysis:
14
+ * - NEW FLOW: Uses session.json with payment flow
15
+ * - LEGACY FLOW: Uses analysis-history.json (backward compat)
10
16
  *
11
- * This command is FREE - uses locally cached solution
17
+ * Steps:
18
+ * 1. Load session (new) or cache (legacy)
19
+ * 2. Verify package.json hash
20
+ * 3. Check payment status
21
+ * 4. Run payment flow if needed
22
+ * 5. Fetch solution and apply
12
23
  */
13
24
  export async function fixCommand(options) {
14
25
  const projectDir = options.path || process.cwd();
26
+ // Print CLI header
27
+ printCliHeader();
28
+ // Track: fix_started
29
+ analytics.fixStarted({ command: 'fix' });
15
30
  try {
31
+ const sessionManager = new SessionManager(projectDir);
16
32
  const cacheManager = new CacheManager(projectDir);
17
33
  const packageJsonService = new PackageJsonService();
18
- // Check if cache exists
19
- const cacheExists = await cacheManager.cacheExists();
20
- if (!cacheExists) {
34
+ const apiClient = new ApiClient();
35
+ // Try to migrate from old cache format if needed
36
+ await sessionManager.migrateFromOldCache();
37
+ // Check for session (new flow) or cache (legacy)
38
+ const hasSession = await sessionManager.hasSession();
39
+ const hasLegacyCache = await cacheManager.cacheExists();
40
+ if (!hasSession && !hasLegacyCache) {
41
+ // Track: fix_cache_missing
42
+ analytics.fixCacheMissing({ reason: 'no_session_or_cache' });
21
43
  printError('No cached analysis found.');
22
44
  console.log();
23
45
  console.log('Run one of these commands first:');
24
- console.log(` ${chalk.cyan('npx depfixer analyze --full')}`);
25
- console.log(` ${chalk.cyan('npx depfixer analyze --migrate <version>')}`);
46
+ console.log(` ${chalk.cyan('npx depfixer')}`);
47
+ console.log(` ${chalk.cyan('npx depfixer migrate <version>')}`);
26
48
  process.exit(1);
27
49
  }
28
50
  // Read current package.json
29
51
  const spinner = createSpinner('Reading package.json...').start();
30
52
  const { content, parsed } = await packageJsonService.read(projectDir);
31
53
  spinner.succeed('Package.json loaded');
32
- // Verify hash matches
33
- const hashSpinner = createSpinner('Verifying package.json unchanged...').start();
34
- const hashValid = await cacheManager.verifyHash(content);
35
- if (!hashValid) {
36
- hashSpinner.fail('Hash mismatch');
54
+ // Track: fix_cache_found
55
+ analytics.fixCacheFound({ isSession: hasSession, isLegacy: hasLegacyCache });
56
+ // Use new session flow if available
57
+ if (hasSession) {
58
+ await handleNewSessionFlow(sessionManager, packageJsonService, apiClient, content, parsed, projectDir, options);
59
+ }
60
+ else {
61
+ // Fallback to legacy flow
62
+ await handleLegacyFlow(cacheManager, packageJsonService, apiClient, content, parsed, projectDir);
63
+ }
64
+ }
65
+ catch (error) {
66
+ // Track: session_ended (error)
67
+ await analytics.sessionEnded({
68
+ outcome: 'error',
69
+ error: error.message,
70
+ });
71
+ if (error instanceof NetworkError || error.name === 'NetworkError') {
37
72
  console.log();
38
- printWarning('package.json has changed since your last analysis.');
39
- console.log('The cached fix may be unsafe to apply.');
73
+ printError('Network Error');
74
+ console.log(chalk.yellow('Unable to connect to DepFixer server.'));
40
75
  console.log();
41
- console.log(`Run ${chalk.cyan('npx depfixer analyze --full')} to get updated recommendations.`);
76
+ console.log('Please check your internet connection and try again.');
42
77
  process.exit(1);
43
78
  }
79
+ printError(error.message);
80
+ process.exit(1);
81
+ }
82
+ }
83
+ /**
84
+ * Handle new session-based flow with payment
85
+ */
86
+ async function handleNewSessionFlow(sessionManager, packageJsonService, apiClient, packageJsonContent, parsed, projectDir, options) {
87
+ const session = await sessionManager.loadSession();
88
+ if (!session) {
89
+ printError('Failed to load session');
90
+ process.exit(1);
91
+ }
92
+ // Show session info
93
+ const timeAgo = sessionManager.getTimeSinceAnalysis(session);
94
+ console.log(chalk.dim(`Found analysis from ${timeAgo}`));
95
+ if (session.intent === 'MIGRATE' && session.args?.target) {
96
+ console.log(chalk.dim(`Migration target: v${session.args.target}`));
97
+ }
98
+ console.log();
99
+ // Verify hash
100
+ const hashSpinner = createSpinner('Verifying package.json...').start();
101
+ const hashValid = await sessionManager.verifyHash(packageJsonContent);
102
+ if (!hashValid) {
103
+ hashSpinner.fail('Hash mismatch');
104
+ console.log();
105
+ printWarning('package.json has changed since analysis.');
106
+ const shouldContinue = options.yes || await promptYesNo('Apply anyway?');
107
+ if (!shouldContinue) {
108
+ console.log();
109
+ printInfo('Run `npx depfixer` to re-analyze with current package.json.');
110
+ process.exit(0);
111
+ }
112
+ console.log();
113
+ }
114
+ else {
44
115
  hashSpinner.succeed('Package.json verified');
45
- // Load cache
46
- const cache = await cacheManager.loadCache();
47
- if (!cache) {
48
- printError('Failed to load cache');
49
- process.exit(1);
116
+ }
117
+ // Check payment status
118
+ if (session.status === 'UNPAID') {
119
+ console.log();
120
+ console.log(chalk.yellow(`💰 Cost: ${session.cost} credit${session.cost > 1 ? 's' : ''} (${session.tierName})`));
121
+ console.log();
122
+ const shouldPay = options.yes || await promptYesNo(`Pay ${session.cost} credit${session.cost > 1 ? 's' : ''} and apply fix?`);
123
+ if (!shouldPay) {
124
+ console.log();
125
+ printInfo('Run `npx depfixer fix` when ready.');
126
+ process.exit(0);
50
127
  }
51
- // Calculate changes
52
- const changes = packageJsonService.getChanges(parsed, cache.solution);
53
- if (changes.length === 0) {
54
- printSuccess('No changes to apply - package.json is already up to date!');
55
- return;
128
+ // Payment flow
129
+ const paymentFlow = new PaymentFlowService();
130
+ const paymentResult = await paymentFlow.ensureReadyToPay(session.cost);
131
+ if (!paymentResult.ready) {
132
+ console.log();
133
+ printInfo('Run `npx depfixer fix` when ready.');
134
+ process.exit(0);
56
135
  }
57
- // Show what will be changed
58
- printHeader(`Applying ${changes.length} fixes`);
136
+ // Execute fix: deduct credits and get solution
137
+ showFixExplanation();
138
+ console.log();
139
+ console.log(chalk.bold('🔧 Applying fixes...'));
59
140
  console.log();
60
- for (const change of changes) {
61
- console.log(` ${change.package}: ${chalk.red(change.from)} → ${chalk.green(change.to)}`);
141
+ const fixResult = await paymentFlow.deductCredits(session.analysisId, paymentResult.hasActivePass);
142
+ if (!fixResult.success || !fixResult.solution) {
143
+ printError('Failed to apply fixes');
144
+ throw new Error(fixResult.error || 'Unknown error');
145
+ }
146
+ // Apply solution
147
+ const solution = fixResult.solution;
148
+ const changes = packageJsonService.getChanges(parsed, solution);
149
+ const removals = solution.removals || [];
150
+ if (changes.length === 0 && removals.length === 0) {
151
+ printSuccess('No changes needed - package.json is already up to date!');
152
+ await sessionManager.updateStatus('PAID');
153
+ return;
62
154
  }
155
+ // Fix steps
156
+ const fixSteps = [
157
+ 'Reading package.json...',
158
+ 'Calculating safe versions...',
159
+ 'Updating dependencies...',
160
+ 'Updating devDependencies...',
161
+ 'Validating changes...',
162
+ 'Writing package.json...',
163
+ ];
164
+ let applyResult;
165
+ await runStepSequence(fixSteps, async () => {
166
+ applyResult = await packageJsonService.applySurgicalFixes(projectDir, changes, removals, solution.engines);
167
+ }, { successMessage: 'Fix complete', minStepDuration: 100 });
168
+ const { backupPath, applied, removed, enginesUpdated } = applyResult;
169
+ // Update session
170
+ await sessionManager.updateStatus('PAID');
171
+ // Track: fix_applied
172
+ analytics.fixApplied({
173
+ updatedCount: applied,
174
+ removedCount: removed,
175
+ enginesUpdated,
176
+ });
177
+ // Track: session_ended (successful fix)
178
+ await analytics.sessionEnded({
179
+ outcome: 'fix_applied',
180
+ });
181
+ showSuccessMessage(changes, removals, backupPath, enginesUpdated);
182
+ }
183
+ else {
184
+ // Already paid - just fetch and apply solution
185
+ const solutionSpinner = createSpinner('Fetching solution...').start();
186
+ try {
187
+ const response = await apiClient.getSolution(session.analysisId);
188
+ if (!response.success || !response.data?.solution) {
189
+ solutionSpinner.fail('Failed to fetch solution');
190
+ printError('Could not retrieve solution. The analysis may have expired.');
191
+ console.log();
192
+ console.log(`Run ${chalk.cyan('npx depfixer')} to create a new analysis.`);
193
+ process.exit(1);
194
+ }
195
+ const solution = response.data.solution;
196
+ if (!solution.removals)
197
+ solution.removals = [];
198
+ solutionSpinner.succeed('Solution fetched');
199
+ // Apply solution
200
+ const changes = packageJsonService.getChanges(parsed, solution);
201
+ const removals = solution.removals || [];
202
+ if (changes.length === 0 && removals.length === 0) {
203
+ printSuccess('No changes needed - package.json is already up to date!');
204
+ return;
205
+ }
206
+ showChangesPreview(changes, removals);
207
+ showFixExplanation();
208
+ console.log();
209
+ console.log(chalk.bold('🔧 Applying fixes...'));
210
+ console.log();
211
+ // Fix steps
212
+ const fixSteps = [
213
+ 'Reading package.json...',
214
+ 'Calculating safe versions...',
215
+ 'Updating dependencies...',
216
+ 'Updating devDependencies...',
217
+ 'Validating changes...',
218
+ 'Writing package.json...',
219
+ ];
220
+ let applyResult;
221
+ await runStepSequence(fixSteps, async () => {
222
+ applyResult = await packageJsonService.applySurgicalFixes(projectDir, changes, removals, solution.engines);
223
+ }, { successMessage: 'Fix complete', minStepDuration: 100 });
224
+ const { backupPath, applied, removed, enginesUpdated } = applyResult;
225
+ // Track: fix_applied
226
+ analytics.fixApplied({
227
+ updatedCount: applied,
228
+ removedCount: removed,
229
+ enginesUpdated,
230
+ });
231
+ // Track: session_ended (successful fix)
232
+ await analytics.sessionEnded({
233
+ outcome: 'fix_applied',
234
+ });
235
+ showSuccessMessage(changes, removals, backupPath, enginesUpdated);
236
+ }
237
+ catch (error) {
238
+ if (error instanceof NetworkError || error.name === 'NetworkError') {
239
+ throw error;
240
+ }
241
+ printError(error.message);
242
+ process.exit(1);
243
+ }
244
+ }
245
+ }
246
+ /**
247
+ * Handle legacy cache-based flow (backward compatibility)
248
+ */
249
+ async function handleLegacyFlow(cacheManager, packageJsonService, apiClient, packageJsonContent, parsed, projectDir) {
250
+ const cache = await cacheManager.loadCache();
251
+ if (!cache) {
252
+ printError('Failed to load cache');
253
+ process.exit(1);
254
+ }
255
+ console.log(chalk.dim('Using legacy cache format...'));
256
+ console.log();
257
+ // Verify hash
258
+ const hashSpinner = createSpinner('Verifying package.json unchanged...').start();
259
+ const hashValid = await cacheManager.verifyHash(packageJsonContent);
260
+ if (!hashValid) {
261
+ hashSpinner.fail('Hash mismatch');
63
262
  console.log();
64
- // Apply fixes
65
- const applySpinner = createSpinner('Creating package.json.fixed...').start();
66
- const fixedPath = await packageJsonService.applyFixes(projectDir, cache.solution);
67
- applySpinner.succeed('Fixes applied');
68
- // Success message
263
+ printWarning('package.json has changed since your last analysis.');
264
+ console.log('The cached fix may be unsafe to apply.');
69
265
  console.log();
70
- printSuccess(`Created: ${chalk.cyan(fixedPath)}`);
266
+ console.log(`Run ${chalk.cyan('npx depfixer')} to get updated recommendations.`);
267
+ process.exit(1);
268
+ }
269
+ hashSpinner.succeed('Package.json verified');
270
+ // Fetch solution from server
271
+ const solutionSpinner = createSpinner('Fetching solution from server...').start();
272
+ try {
273
+ const response = await apiClient.getSolution(cache.analysisId);
274
+ if (!response.success || !response.data?.solution) {
275
+ solutionSpinner.fail('Failed to fetch solution');
276
+ printError('Could not retrieve solution from server. The analysis may have expired.');
277
+ console.log();
278
+ console.log(`Run ${chalk.cyan('npx depfixer')} to create a new analysis.`);
279
+ process.exit(1);
280
+ }
281
+ const solution = response.data.solution;
282
+ if (!solution.removals)
283
+ solution.removals = [];
284
+ solutionSpinner.succeed('Solution fetched');
285
+ // Calculate and show changes
286
+ const changes = packageJsonService.getChanges(parsed, solution);
287
+ const removals = solution.removals || [];
288
+ if (changes.length === 0 && removals.length === 0) {
289
+ printSuccess('No changes to apply - package.json is already up to date!');
290
+ return;
291
+ }
292
+ showChangesPreview(changes, removals);
293
+ showFixExplanation();
294
+ console.log();
295
+ console.log(chalk.bold('🔧 Applying fixes...'));
71
296
  console.log();
72
- console.log('To apply changes:');
73
- console.log(` 1. Review ${chalk.cyan('package.json.fixed')}`);
74
- console.log(` 2. ${chalk.cyan('mv package.json.fixed package.json')} (or copy)`);
75
- console.log(` 3. ${chalk.cyan('npm install')}`);
297
+ // Fix steps
298
+ const fixSteps = [
299
+ 'Reading package.json...',
300
+ 'Calculating safe versions...',
301
+ 'Updating dependencies...',
302
+ 'Updating devDependencies...',
303
+ 'Validating changes...',
304
+ 'Writing package.json...',
305
+ ];
306
+ let applyResult;
307
+ await runStepSequence(fixSteps, async () => {
308
+ applyResult = await packageJsonService.applySurgicalFixes(projectDir, changes, removals, solution.engines);
309
+ }, { successMessage: 'Fix complete', minStepDuration: 100 });
310
+ const { backupPath, applied, removed, enginesUpdated } = applyResult;
311
+ // Track: fix_applied
312
+ analytics.fixApplied({
313
+ updatedCount: applied,
314
+ removedCount: removed,
315
+ enginesUpdated,
316
+ isLegacy: true,
317
+ });
318
+ // Track: session_ended (successful fix)
319
+ await analytics.sessionEnded({
320
+ outcome: 'fix_applied',
321
+ isLegacy: true,
322
+ });
323
+ showSuccessMessage(changes, removals, backupPath, enginesUpdated);
76
324
  }
77
325
  catch (error) {
326
+ solutionSpinner.fail('Failed to fetch solution');
327
+ if (error instanceof NetworkError || error.name === 'NetworkError') {
328
+ throw error;
329
+ }
78
330
  printError(error.message);
79
331
  process.exit(1);
80
332
  }
81
333
  }
334
+ /**
335
+ * Show explanation of what will be changed
336
+ */
337
+ function showFixExplanation() {
338
+ console.log();
339
+ console.log(chalk.dim('────────────────────────────────────────'));
340
+ console.log(chalk.dim(' 📝 Only ') + chalk.white('package.json') + chalk.dim(' will be modified'));
341
+ console.log(chalk.dim(' 💾 A backup (') + chalk.white('package.json.bak') + chalk.dim(') will be created'));
342
+ console.log(chalk.dim('────────────────────────────────────────'));
343
+ }
344
+ /**
345
+ * Show preview of changes
346
+ */
347
+ function showChangesPreview(changes, removals) {
348
+ const totalOperations = changes.length + removals.length;
349
+ printHeader(`Applying ${totalOperations} fixes`);
350
+ console.log();
351
+ const depChanges = changes.filter(c => c.type === 'dependency');
352
+ const devDepChanges = changes.filter(c => c.type === 'devDependency');
353
+ if (depChanges.length > 0) {
354
+ console.log(chalk.bold(' dependencies:'));
355
+ for (const change of depChanges) {
356
+ console.log(` ${change.package}: ${chalk.red(change.from)} → ${chalk.green(change.to)}`);
357
+ }
358
+ }
359
+ if (devDepChanges.length > 0) {
360
+ if (depChanges.length > 0)
361
+ console.log();
362
+ console.log(chalk.bold(' devDependencies:'));
363
+ for (const change of devDepChanges) {
364
+ console.log(` ${change.package}: ${chalk.red(change.from)} → ${chalk.green(change.to)}`);
365
+ }
366
+ }
367
+ if (removals.length > 0) {
368
+ if (depChanges.length > 0 || devDepChanges.length > 0)
369
+ console.log();
370
+ console.log(chalk.bold(' Packages to remove (deprecated):'));
371
+ for (const removal of removals) {
372
+ const typeLabel = removal.type === 'devDependency' ? 'dev' : 'dep';
373
+ console.log(` ${chalk.red('✗')} ${removal.package} ${chalk.dim(`(${typeLabel})`)} - ${chalk.yellow(removal.reason)}`);
374
+ }
375
+ }
376
+ console.log();
377
+ }
378
+ /**
379
+ * Show success message
380
+ */
381
+ function showSuccessMessage(changes, removals, backupPath, enginesUpdated) {
382
+ console.log();
383
+ printSuccess('Fixes applied successfully!');
384
+ console.log();
385
+ console.log(` ${chalk.green('✓')} ${changes.length} package${changes.length === 1 ? '' : 's'} updated`);
386
+ if (removals.length > 0) {
387
+ console.log(` ${chalk.green('✓')} ${removals.length} package${removals.length === 1 ? '' : 's'} removed`);
388
+ }
389
+ if (enginesUpdated && enginesUpdated > 0) {
390
+ console.log(` ${chalk.green('✓')} ${enginesUpdated} engine${enginesUpdated === 1 ? '' : 's'} updated (Node.js/npm)`);
391
+ }
392
+ console.log();
393
+ printInfo(`Backup created: ${chalk.cyan(backupPath)}`);
394
+ console.log();
395
+ console.log('Next steps:');
396
+ console.log(` 1. Review changes in ${chalk.cyan('package.json')}`);
397
+ console.log(` 2. Run ${chalk.cyan('npm install')} to update node_modules`);
398
+ console.log();
399
+ console.log(`To restore the original: ${chalk.cyan('mv package.json.bak package.json')}`);
400
+ }
401
+ /**
402
+ * Simple Enter/Esc prompt (Enter = Yes, Esc = No)
403
+ */
404
+ async function promptYesNo(question) {
405
+ return new Promise((resolve) => {
406
+ process.stdout.write(`${question} ${chalk.dim('(Enter/Esc)')} `);
407
+ if (process.stdin.isTTY) {
408
+ process.stdin.setRawMode(true);
409
+ }
410
+ process.stdin.resume();
411
+ const onKeyPress = (key) => {
412
+ const char = key.toString();
413
+ if (char === '\r' || char === '\n') {
414
+ cleanup();
415
+ console.log(chalk.green('Yes'));
416
+ resolve(true);
417
+ }
418
+ else if (char === '\x1b') {
419
+ cleanup();
420
+ console.log(chalk.red('No'));
421
+ resolve(false);
422
+ }
423
+ else if (char.toLowerCase() === 'y') {
424
+ cleanup();
425
+ console.log(chalk.green('Yes'));
426
+ resolve(true);
427
+ }
428
+ else if (char.toLowerCase() === 'n') {
429
+ cleanup();
430
+ console.log(chalk.red('No'));
431
+ resolve(false);
432
+ }
433
+ else if (char === '\x03') {
434
+ cleanup();
435
+ process.exit(0);
436
+ }
437
+ };
438
+ const cleanup = () => {
439
+ process.stdin.removeListener('data', onKeyPress);
440
+ if (process.stdin.isTTY) {
441
+ process.stdin.setRawMode(false);
442
+ }
443
+ process.stdin.pause();
444
+ };
445
+ process.stdin.on('data', onKeyPress);
446
+ });
447
+ }
82
448
  //# sourceMappingURL=fix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fix.js","sourceRoot":"","sources":["../../src/commands/fix.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ interface GraphOptions {
5
5
  * Graph command
6
6
  *
7
7
  * Opens web visualization in browser
8
- * Requires prior --full analysis (uses cached analysis ID)
8
+ * Requires prior analysis (uses cached session)
9
9
  */
10
10
  export declare function graphCommand(options: GraphOptions): Promise<void>;
11
11
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAUA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDvE"}
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAWA,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAuDvE"}
@@ -1,18 +1,21 @@
1
1
  import chalk from 'chalk';
2
2
  import open from 'open';
3
- import { CacheManager } from '../services/cache-manager.js';
3
+ import { SessionManager } from '../services/session-manager.js';
4
4
  import { AuthManager } from '../services/auth-manager.js';
5
+ import { analytics } from '../services/analytics.js';
5
6
  import { printError, printInfo, printSuccess, } from '../utils/output.js';
6
7
  /**
7
8
  * Graph command
8
9
  *
9
10
  * Opens web visualization in browser
10
- * Requires prior --full analysis (uses cached analysis ID)
11
+ * Requires prior analysis (uses cached session)
11
12
  */
12
13
  export async function graphCommand(options) {
13
14
  const projectDir = options.path || process.cwd();
14
- const cacheManager = new CacheManager(projectDir);
15
+ const sessionManager = new SessionManager(projectDir);
15
16
  const authManager = new AuthManager();
17
+ // Track: graph_started
18
+ analytics.graphStarted({ command: 'graph' });
16
19
  try {
17
20
  // Check if logged in
18
21
  if (!await authManager.isAuthenticated()) {
@@ -20,19 +23,19 @@ export async function graphCommand(options) {
20
23
  console.log(`Run ${chalk.cyan('npx depfixer login')} first.`);
21
24
  process.exit(1);
22
25
  }
23
- // Check if cache exists
24
- const cacheExists = await cacheManager.cacheExists();
25
- if (!cacheExists) {
26
+ // Check if session exists
27
+ const hasSession = await sessionManager.hasSession();
28
+ if (!hasSession) {
26
29
  printError('No cached analysis found.');
27
30
  console.log();
28
- console.log('Run a full analysis first:');
29
- console.log(` ${chalk.cyan('npx depfixer analyze --full')}`);
31
+ console.log('Run an analysis first:');
32
+ console.log(` ${chalk.cyan('npx depfixer')}`);
30
33
  process.exit(1);
31
34
  }
32
- // Load cache to get analysis info
33
- const cache = await cacheManager.loadCache();
34
- if (!cache) {
35
- printError('Failed to load cache');
35
+ // Load session to get analysis info
36
+ const session = await sessionManager.loadSession();
37
+ if (!session) {
38
+ printError('Failed to load session');
36
39
  process.exit(1);
37
40
  }
38
41
  // Build graph URL
@@ -43,6 +46,8 @@ export async function graphCommand(options) {
43
46
  console.log();
44
47
  try {
45
48
  await open(graphUrl);
49
+ // Track: graph_opened
50
+ analytics.graphOpened({ url: graphUrl });
46
51
  printSuccess('Browser opened!');
47
52
  }
48
53
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EACL,UAAU,EACV,SAAS,EACT,YAAY,GACb,MAAM,oBAAoB,CAAC;AAM5B;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAqB;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEtC,IAAI,CAAC;QACH,qBAAqB;QACrB,IAAI,CAAC,MAAM,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YACzC,UAAU,CAAC,0BAA0B,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,wBAAwB;QACxB,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,UAAU,CAAC,2BAA2B,CAAC,CAAC;YACxC,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kCAAkC;QAClC,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,UAAU,CAAC,sBAAsB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,kBAAkB;QAClB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;QAC3E,MAAM,QAAQ,GAAG,GAAG,OAAO,YAAY,CAAC;QAExC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvD,CAAC;IAEH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/commands/graph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAWA;;;;;;;;GAQG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAwGlD"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CA+JlD"}