depfixer 1.0.0 → 1.1.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 (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 +156 -39
  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 +55 -22
  46. package/dist/services/cache-manager.d.ts.map +1 -1
  47. package/dist/services/cache-manager.js +99 -29
  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 +85 -0
  62. package/dist/services/session-manager.d.ts.map +1 -0
  63. package/dist/services/session-manager.js +203 -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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/utils/print.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "depfixer",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "CLI tool for analyzing and fixing JavaScript/TypeScript dependency conflicts",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -12,7 +12,13 @@
12
12
  "dev": "tsx src/index.ts",
13
13
  "start": "node dist/index.js",
14
14
  "clean": "rimraf dist",
15
- "prepublishOnly": "npm run build"
15
+ "prepublishOnly": "npm run build",
16
+ "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js",
17
+ "test:unit": "node --experimental-vm-modules node_modules/jest/bin/jest.js test/unit",
18
+ "test:integration": "node --experimental-vm-modules node_modules/jest/bin/jest.js test/integration",
19
+ "test:e2e": "node --experimental-vm-modules node_modules/jest/bin/jest.js test/e2e",
20
+ "test:coverage": "node --experimental-vm-modules node_modules/jest/bin/jest.js --coverage",
21
+ "test:watch": "node --experimental-vm-modules node_modules/jest/bin/jest.js --watch"
16
22
  },
17
23
  "keywords": [
18
24
  "dependencies",
@@ -31,7 +37,9 @@
31
37
  "node": ">=18.0.0"
32
38
  },
33
39
  "dependencies": {
40
+ "@depfixer/shared": "file:../shared",
34
41
  "axios": "^1.7.4",
42
+ "boxen": "^8.0.1",
35
43
  "chalk": "^5.3.0",
36
44
  "cli-table3": "^0.6.5",
37
45
  "commander": "^12.1.0",
@@ -39,8 +47,11 @@
39
47
  "ora": "^8.1.0"
40
48
  },
41
49
  "devDependencies": {
50
+ "@types/jest": "^29.5.12",
42
51
  "@types/node": "^20.10.0",
52
+ "jest": "^29.7.0",
43
53
  "rimraf": "^5.0.5",
54
+ "ts-jest": "^29.1.2",
44
55
  "tsx": "^4.7.0",
45
56
  "typescript": "^5.3.3"
46
57
  },
@@ -1,18 +0,0 @@
1
- interface AnalyzeOptions {
2
- full?: boolean;
3
- migrate?: string;
4
- json?: boolean;
5
- ci?: boolean;
6
- path?: string;
7
- }
8
- /**
9
- * Analyze command
10
- *
11
- * Modes:
12
- * - default (audit): FREE, shows issues but hides recommendations
13
- * - --full: PAID, shows full analysis with recommendations
14
- * - --migrate <version>: PAID, shows migration plan
15
- */
16
- export declare function analyzeCommand(options: AnalyzeOptions): Promise<void>;
17
- export {};
18
- //# sourceMappingURL=analyze.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"AAsBA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAiC3E"}
@@ -1,404 +0,0 @@
1
- import chalk from 'chalk';
2
- import { ApiClient } from '../services/api-client.js';
3
- import { PackageJsonService } from '../services/package-json.js';
4
- import { CacheManager } from '../services/cache-manager.js';
5
- import { GitignoreService } from '../services/gitignore.js';
6
- import { createSpinner, printHeader, printHealthScore, printSeveritySummary, createAuditTable, createFullTable, createMigrationTable, printUpgradeBox, printCacheInfo, printError, printInfo, printPrefetchProgress, clearLine, } from '../utils/output.js';
7
- /**
8
- * Analyze command
9
- *
10
- * Modes:
11
- * - default (audit): FREE, shows issues but hides recommendations
12
- * - --full: PAID, shows full analysis with recommendations
13
- * - --migrate <version>: PAID, shows migration plan
14
- */
15
- export async function analyzeCommand(options) {
16
- const projectDir = options.path || process.cwd();
17
- try {
18
- const packageJsonService = new PackageJsonService();
19
- const apiClient = new ApiClient();
20
- // Read and sanitize package.json
21
- const spinner = createSpinner('Reading package.json...').start();
22
- const { content, parsed } = await packageJsonService.read(projectDir);
23
- const sanitized = packageJsonService.sanitize(parsed);
24
- spinner.succeed('Package.json loaded');
25
- // Detect framework from package.json (client-side hint)
26
- const framework = detectFramework(sanitized);
27
- // Determine analysis mode
28
- if (options.migrate) {
29
- await runMigrateAnalysis(apiClient, sanitized, content, options.migrate, framework, options, projectDir);
30
- }
31
- else if (options.full) {
32
- await runFullAnalysis(apiClient, sanitized, content, framework, options, projectDir);
33
- }
34
- else {
35
- await runAuditAnalysis(apiClient, sanitized, framework, options);
36
- }
37
- }
38
- catch (error) {
39
- if (options.json) {
40
- console.log(JSON.stringify({ error: error.message }, null, 2));
41
- }
42
- else {
43
- printError(error.message);
44
- }
45
- process.exit(options.ci ? 2 : 1);
46
- }
47
- }
48
- /**
49
- * Run audit analysis (FREE)
50
- * Now includes prefetch polling for complete package data
51
- */
52
- async function runAuditAnalysis(apiClient, sanitized, framework, options) {
53
- const spinner = createSpinner('Analyzing dependencies...').start();
54
- try {
55
- const response = await apiClient.analyzeAudit(sanitized, framework);
56
- if (!response.success || !response.data) {
57
- spinner.fail('Analysis failed');
58
- throw new Error(response.error || 'Unknown error');
59
- }
60
- let data = response.data;
61
- const { analysisId, prefetchId, hasPendingPackages } = data;
62
- const debug = process.env.DEPFIXER_DEBUG === 'true';
63
- if (debug) {
64
- console.log('[DEBUG] hasPendingPackages:', hasPendingPackages);
65
- console.log('[DEBUG] prefetchId:', prefetchId);
66
- console.log('[DEBUG] analysisId:', analysisId);
67
- }
68
- // If there are pending packages, poll until prefetch + re-analysis completes
69
- if (hasPendingPackages && prefetchId && analysisId) {
70
- spinner.text = 'Fetching package data...';
71
- spinner.stop();
72
- console.log(chalk.dim(' Some packages need to be fetched. Please wait...'));
73
- // Poll prefetch status with progress bar
74
- let isComplete = false;
75
- let pollCount = 0;
76
- const maxPolls = 120; // 2 minutes max (1 second intervals)
77
- while (!isComplete && pollCount < maxPolls) {
78
- try {
79
- const status = await apiClient.pollPrefetchStatus(prefetchId);
80
- printPrefetchProgress(status.fetchedCount, status.totalPackages, status.percentage);
81
- // Check if prefetch AND re-analysis are complete
82
- if (status.isComplete && status.reanalysisStatus === 'completed') {
83
- isComplete = true;
84
- clearLine();
85
- console.log(chalk.green(' ✓ Package data fetched successfully'));
86
- }
87
- else {
88
- // Wait 1 second before next poll
89
- await new Promise(resolve => setTimeout(resolve, 1000));
90
- pollCount++;
91
- }
92
- }
93
- catch (pollError) {
94
- // If polling fails, continue with partial results
95
- clearLine();
96
- console.log(chalk.yellow(' ⚠ Could not complete package fetch, using partial results'));
97
- break;
98
- }
99
- }
100
- if (pollCount >= maxPolls) {
101
- clearLine();
102
- console.log(chalk.yellow(' ⚠ Package fetch timed out, using partial results'));
103
- }
104
- // Fetch updated analysis results if prefetch completed
105
- if (isComplete) {
106
- const updatedResponse = await apiClient.getAnalysisById(analysisId);
107
- if (updatedResponse.success && updatedResponse.data) {
108
- const updated = updatedResponse.data;
109
- // Map the response structure
110
- const analysisResult = updated.analysisResult || {};
111
- data = {
112
- healthScore: updated.healthScore || analysisResult.healthScore,
113
- totalPackages: updated.totalPackages || analysisResult.totalPackages,
114
- summary: analysisResult.summary || calculateSummary(analysisResult.conflicts || []),
115
- conflicts: analysisResult.conflicts || [],
116
- framework: analysisResult.frameworkContext?.detected
117
- ? { name: analysisResult.frameworkContext.detected.name, version: analysisResult.frameworkContext.detected.version }
118
- : data.framework,
119
- };
120
- }
121
- }
122
- spinner.start();
123
- }
124
- spinner.succeed('Analysis complete');
125
- // JSON output mode
126
- if (options.json) {
127
- console.log(JSON.stringify({
128
- mode: 'audit',
129
- healthScore: data.healthScore,
130
- totalPackages: data.totalPackages,
131
- summary: data.summary,
132
- conflicts: data.conflicts,
133
- framework: data.framework,
134
- }, null, 2));
135
- // CI exit code
136
- if (options.ci && (data.summary.critical > 0 || data.summary.high > 0)) {
137
- process.exit(1);
138
- }
139
- return;
140
- }
141
- // Pretty output
142
- printHeader(`Analysis Results - ${sanitized.name || 'unnamed'}`);
143
- printHealthScore(data.healthScore);
144
- console.log(`${chalk.bold('Packages analyzed:')} ${data.totalPackages}`);
145
- console.log();
146
- printSeveritySummary(data.summary);
147
- if (data.conflicts && data.conflicts.length > 0) {
148
- console.log();
149
- console.log(chalk.bold('Issues Found:'));
150
- console.log(createAuditTable(data.conflicts));
151
- }
152
- // Show upgrade CTA
153
- const issueCount = data.summary.critical + data.summary.high + data.summary.medium + data.summary.low;
154
- if (issueCount > 0) {
155
- printUpgradeBox(issueCount);
156
- }
157
- // CI exit code
158
- if (options.ci && (data.summary.critical > 0 || data.summary.high > 0)) {
159
- process.exit(1);
160
- }
161
- }
162
- catch (error) {
163
- spinner.fail('Analysis failed');
164
- throw error;
165
- }
166
- }
167
- /**
168
- * Run full analysis (PAID)
169
- */
170
- async function runFullAnalysis(apiClient, sanitized, packageJsonContent, framework, options, projectDir) {
171
- const spinner = createSpinner('Analyzing dependencies (full mode)...').start();
172
- try {
173
- const response = await apiClient.analyzeFull(sanitized, framework);
174
- if (!response.success || !response.data) {
175
- spinner.fail('Analysis failed');
176
- throw new Error(response.error || 'Unknown error');
177
- }
178
- let data = response.data;
179
- const { analysisId, prefetchId, hasPendingPackages, creditsUsed, creditsRemaining } = data;
180
- const debug = process.env.DEPFIXER_DEBUG === 'true';
181
- if (debug) {
182
- console.log('[DEBUG] hasPendingPackages:', hasPendingPackages);
183
- console.log('[DEBUG] prefetchId:', prefetchId);
184
- console.log('[DEBUG] analysisId:', analysisId);
185
- }
186
- // If there are pending packages, poll until prefetch + re-analysis completes
187
- if (hasPendingPackages && prefetchId && analysisId) {
188
- spinner.text = 'Fetching package data...';
189
- spinner.stop();
190
- console.log(chalk.dim(' Some packages need to be fetched. Please wait...'));
191
- // Poll prefetch status with progress bar
192
- let isComplete = false;
193
- let pollCount = 0;
194
- const maxPolls = 120; // 2 minutes max (1 second intervals)
195
- while (!isComplete && pollCount < maxPolls) {
196
- try {
197
- const status = await apiClient.pollPrefetchStatus(prefetchId);
198
- printPrefetchProgress(status.fetchedCount, status.totalPackages, status.percentage);
199
- // Check if prefetch AND re-analysis are complete
200
- if (status.isComplete && status.reanalysisStatus === 'completed') {
201
- isComplete = true;
202
- clearLine();
203
- console.log(chalk.green(' ✓ Package data fetched successfully'));
204
- }
205
- else {
206
- // Wait 1 second before next poll
207
- await new Promise(resolve => setTimeout(resolve, 1000));
208
- pollCount++;
209
- }
210
- }
211
- catch (pollError) {
212
- // If polling fails, continue with partial results
213
- clearLine();
214
- console.log(chalk.yellow(' ⚠ Could not complete package fetch, using partial results'));
215
- break;
216
- }
217
- }
218
- if (pollCount >= maxPolls) {
219
- clearLine();
220
- console.log(chalk.yellow(' ⚠ Package fetch timed out, using partial results'));
221
- }
222
- // Fetch updated analysis results if prefetch completed
223
- if (isComplete) {
224
- const updatedResponse = await apiClient.getAnalysisById(analysisId);
225
- if (updatedResponse.success && updatedResponse.data) {
226
- const updated = updatedResponse.data;
227
- // Map the response structure: analysisResult contains conflicts, summary, etc.
228
- const analysisResult = updated.analysisResult || {};
229
- data = {
230
- healthScore: updated.healthScore || analysisResult.healthScore,
231
- totalPackages: updated.totalPackages || analysisResult.totalPackages,
232
- summary: analysisResult.summary || calculateSummary(analysisResult.conflicts || []),
233
- conflicts: analysisResult.conflicts || [],
234
- solution: analysisResult.solution || buildSolutionFromConflicts(analysisResult.conflicts || []),
235
- framework: analysisResult.frameworkContext?.detected
236
- ? { name: analysisResult.frameworkContext.detected.name, version: analysisResult.frameworkContext.detected.version }
237
- : data.framework,
238
- creditsUsed,
239
- creditsRemaining,
240
- };
241
- }
242
- }
243
- spinner.start();
244
- }
245
- spinner.succeed('Analysis complete');
246
- // Save to cache for fix command
247
- const cacheManager = new CacheManager(projectDir);
248
- await cacheManager.saveCache(packageJsonContent, data.framework?.name, data.healthScore, data.solution);
249
- // Add .depfixer/* to .gitignore
250
- const gitignoreService = new GitignoreService(projectDir);
251
- const addedToGitignore = await gitignoreService.addToGitignore();
252
- // JSON output mode
253
- if (options.json) {
254
- console.log(JSON.stringify({
255
- mode: 'full',
256
- healthScore: data.healthScore,
257
- totalPackages: data.totalPackages,
258
- summary: data.summary,
259
- conflicts: data.conflicts,
260
- solution: data.solution,
261
- framework: data.framework,
262
- creditsUsed: data.creditsUsed,
263
- creditsRemaining: data.creditsRemaining,
264
- cached: true,
265
- cacheFile: cacheManager.getCacheFilePath(),
266
- }, null, 2));
267
- if (options.ci && (data.summary.critical > 0 || data.summary.high > 0)) {
268
- process.exit(1);
269
- }
270
- return;
271
- }
272
- // Pretty output
273
- printHeader(`Full Analysis - ${sanitized.name || 'unnamed'}`);
274
- printHealthScore(data.healthScore);
275
- console.log(`${chalk.bold('Packages analyzed:')} ${data.totalPackages}`);
276
- console.log(`${chalk.bold('Credits used:')} ${data.creditsUsed} (${data.creditsRemaining} remaining)`);
277
- console.log();
278
- printSeveritySummary(data.summary);
279
- if (data.conflicts && data.conflicts.length > 0) {
280
- console.log();
281
- console.log(chalk.bold('Issues Found:'));
282
- console.log(createFullTable(data.conflicts));
283
- }
284
- // Show cache info
285
- printCacheInfo(cacheManager.getCacheFilePath());
286
- if (addedToGitignore) {
287
- printInfo('Added .depfixer/* to .gitignore');
288
- }
289
- // CI exit code
290
- if (options.ci && (data.summary.critical > 0 || data.summary.high > 0)) {
291
- process.exit(1);
292
- }
293
- }
294
- catch (error) {
295
- spinner.fail('Analysis failed');
296
- throw error;
297
- }
298
- }
299
- /**
300
- * Run migration analysis (PAID)
301
- */
302
- async function runMigrateAnalysis(apiClient, sanitized, packageJsonContent, targetVersion, framework, options, projectDir) {
303
- const spinner = createSpinner(`Analyzing migration to version ${targetVersion}...`).start();
304
- try {
305
- const response = await apiClient.analyzeMigrate(sanitized, targetVersion, framework);
306
- if (!response.success || !response.data) {
307
- spinner.fail('Migration analysis failed');
308
- throw new Error(response.error || 'Unknown error');
309
- }
310
- spinner.succeed('Migration analysis complete');
311
- const data = response.data;
312
- // Save to cache for fix command
313
- const cacheManager = new CacheManager(projectDir);
314
- await cacheManager.saveCache(packageJsonContent, data.framework?.name, data.healthScore?.after || data.healthScore, data.solution);
315
- // Add .depfixer/* to .gitignore
316
- const gitignoreService = new GitignoreService(projectDir);
317
- await gitignoreService.addToGitignore();
318
- // JSON output mode
319
- if (options.json) {
320
- console.log(JSON.stringify({
321
- mode: 'migrate',
322
- framework: data.framework,
323
- healthScore: data.healthScore,
324
- corePackages: data.corePackages,
325
- breakingChanges: data.breakingChanges,
326
- solution: data.solution,
327
- creditsUsed: data.creditsUsed,
328
- creditsRemaining: data.creditsRemaining,
329
- cached: true,
330
- }, null, 2));
331
- if (options.ci && data.breakingChanges > 0) {
332
- process.exit(1);
333
- }
334
- return;
335
- }
336
- // Pretty output
337
- printHeader(`Migration Plan: ${data.framework.name} ${data.framework.currentVersion} → ${data.framework.targetVersion}`);
338
- console.log();
339
- console.log(chalk.bold('Health Score Projection:'));
340
- console.log(` Before: ${chalk.yellow(data.healthScore.before)}/100`);
341
- console.log(` After: ${chalk.green(data.healthScore.after)}/100`);
342
- console.log();
343
- console.log(`${chalk.bold('Breaking changes:')} ${data.breakingChanges}`);
344
- console.log(`${chalk.bold('Credits used:')} ${data.creditsUsed} (${data.creditsRemaining} remaining)`);
345
- if (data.corePackages && data.corePackages.length > 0) {
346
- console.log();
347
- console.log(chalk.bold('Core Package Updates:'));
348
- console.log(createMigrationTable(data.corePackages));
349
- }
350
- printCacheInfo(cacheManager.getCacheFilePath());
351
- // CI exit code
352
- if (options.ci && data.breakingChanges > 0) {
353
- process.exit(1);
354
- }
355
- }
356
- catch (error) {
357
- spinner.fail('Migration analysis failed');
358
- throw error;
359
- }
360
- }
361
- /**
362
- * Simple client-side framework detection for API hint
363
- */
364
- function detectFramework(pkg) {
365
- const deps = { ...pkg.dependencies, ...pkg.devDependencies };
366
- if (deps['@angular/core'])
367
- return 'angular';
368
- if (deps['react'])
369
- return 'react';
370
- if (deps['vue'])
371
- return 'vue';
372
- if (deps['svelte'])
373
- return 'svelte';
374
- if (deps['next'])
375
- return 'react'; // Next.js is React-based
376
- if (deps['nuxt'])
377
- return 'vue'; // Nuxt is Vue-based
378
- return undefined;
379
- }
380
- /**
381
- * Calculate severity summary from conflicts array
382
- */
383
- function calculateSummary(conflicts) {
384
- return {
385
- critical: conflicts.filter(c => c.severity === 'critical').length,
386
- high: conflicts.filter(c => c.severity === 'high').length,
387
- medium: conflicts.filter(c => c.severity === 'medium').length,
388
- low: conflicts.filter(c => c.severity === 'low').length,
389
- };
390
- }
391
- /**
392
- * Build solution object from conflicts (for fix command)
393
- */
394
- function buildSolutionFromConflicts(conflicts) {
395
- const dependencies = {};
396
- const devDependencies = {};
397
- for (const conflict of conflicts) {
398
- if (conflict.recommendedVersion && conflict.recommendedVersion !== 'pending') {
399
- dependencies[conflict.package] = conflict.recommendedVersion;
400
- }
401
- }
402
- return { dependencies, devDependencies };
403
- }
404
- //# sourceMappingURL=analyze.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/commands/analyze.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Gitignore Service
3
- * Handles adding .depfixer/* to .gitignore
4
- */
5
- export declare class GitignoreService {
6
- private gitignorePath;
7
- private pattern;
8
- constructor(projectDir?: string);
9
- /**
10
- * Check if .depfixer/* is already in .gitignore
11
- */
12
- isIgnored(): Promise<boolean>;
13
- /**
14
- * Add .depfixer/* to .gitignore if not already present
15
- * Returns true if it was added, false if already present
16
- */
17
- addToGitignore(): Promise<boolean>;
18
- }
19
- //# sourceMappingURL=gitignore.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitignore.d.ts","sourceRoot":"","sources":["../../src/services/gitignore.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,UAAU,GAAE,MAAsB;IAI9C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAenC;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CA+BzC"}
@@ -1,64 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- /**
4
- * Gitignore Service
5
- * Handles adding .depfixer/* to .gitignore
6
- */
7
- export class GitignoreService {
8
- gitignorePath;
9
- pattern = '.depfixer/*';
10
- constructor(projectDir = process.cwd()) {
11
- this.gitignorePath = path.join(projectDir, '.gitignore');
12
- }
13
- /**
14
- * Check if .depfixer/* is already in .gitignore
15
- */
16
- async isIgnored() {
17
- try {
18
- const content = await fs.readFile(this.gitignorePath, 'utf-8');
19
- const lines = content.split('\n').map(line => line.trim());
20
- return lines.some(line => line === this.pattern ||
21
- line === '.depfixer/' ||
22
- line === '.depfixer');
23
- }
24
- catch (error) {
25
- // File doesn't exist
26
- return false;
27
- }
28
- }
29
- /**
30
- * Add .depfixer/* to .gitignore if not already present
31
- * Returns true if it was added, false if already present
32
- */
33
- async addToGitignore() {
34
- const alreadyIgnored = await this.isIgnored();
35
- if (alreadyIgnored) {
36
- return false;
37
- }
38
- try {
39
- // Read existing content
40
- let content = '';
41
- try {
42
- content = await fs.readFile(this.gitignorePath, 'utf-8');
43
- // Ensure file ends with newline
44
- if (!content.endsWith('\n')) {
45
- content += '\n';
46
- }
47
- }
48
- catch (error) {
49
- // File doesn't exist, will create it
50
- }
51
- // Add our pattern with a comment
52
- const addition = `\n# DepFixer cache\n${this.pattern}\n`;
53
- content += addition;
54
- // Write back
55
- await fs.writeFile(this.gitignorePath, content, 'utf-8');
56
- return true;
57
- }
58
- catch (error) {
59
- // Non-fatal - silently continue
60
- return false;
61
- }
62
- }
63
- }
64
- //# sourceMappingURL=gitignore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gitignore.js","sourceRoot":"","sources":["../../src/services/gitignore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;GAGG;AACH,MAAM,OAAO,gBAAgB;IACnB,aAAa,CAAS;IACtB,OAAO,GAAG,aAAa,CAAC;IAEhC,YAAY,aAAqB,OAAO,CAAC,GAAG,EAAE;QAC5C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;YAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvB,IAAI,KAAK,IAAI,CAAC,OAAO;gBACrB,IAAI,KAAK,YAAY;gBACrB,IAAI,KAAK,WAAW,CACrB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAC9C,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,wBAAwB;YACxB,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;gBACzD,gCAAgC;gBAChC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,OAAO,IAAI,IAAI,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,qCAAqC;YACvC,CAAC;YAED,iCAAiC;YACjC,MAAM,QAAQ,GAAG,uBAAuB,IAAI,CAAC,OAAO,IAAI,CAAC;YACzD,OAAO,IAAI,QAAQ,CAAC;YAEpB,aAAa;YACb,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACzD,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gCAAgC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}