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.
- package/dist/commands/audit.d.ts +19 -0
- package/dist/commands/audit.d.ts.map +1 -0
- package/dist/commands/audit.js +170 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/fix.d.ts +10 -3
- package/dist/commands/fix.d.ts.map +1 -1
- package/dist/commands/fix.js +407 -41
- package/dist/commands/fix.js.map +1 -1
- package/dist/commands/graph.d.ts +1 -1
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/graph.js +17 -12
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +120 -19
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +6 -0
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/migrate.d.ts +22 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +874 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/smart.d.ts +23 -0
- package/dist/commands/smart.d.ts.map +1 -0
- package/dist/commands/smart.js +1024 -0
- package/dist/commands/smart.js.map +1 -0
- package/dist/commands/whoami.d.ts +14 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +65 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/index.js +156 -39
- package/dist/index.js.map +1 -1
- package/dist/services/analytics.d.ts +108 -0
- package/dist/services/analytics.d.ts.map +1 -0
- package/dist/services/analytics.js +305 -0
- package/dist/services/analytics.js.map +1 -0
- package/dist/services/api-client.d.ts +159 -0
- package/dist/services/api-client.d.ts.map +1 -1
- package/dist/services/api-client.js +192 -10
- package/dist/services/api-client.js.map +1 -1
- package/dist/services/auth-manager.d.ts +14 -0
- package/dist/services/auth-manager.d.ts.map +1 -1
- package/dist/services/auth-manager.js +30 -0
- package/dist/services/auth-manager.js.map +1 -1
- package/dist/services/cache-manager.d.ts +55 -22
- package/dist/services/cache-manager.d.ts.map +1 -1
- package/dist/services/cache-manager.js +99 -29
- package/dist/services/cache-manager.js.map +1 -1
- package/dist/services/device-id.d.ts +20 -0
- package/dist/services/device-id.d.ts.map +1 -0
- package/dist/services/device-id.js +70 -0
- package/dist/services/device-id.js.map +1 -0
- package/dist/services/package-json.d.ts +44 -5
- package/dist/services/package-json.d.ts.map +1 -1
- package/dist/services/package-json.js +273 -20
- package/dist/services/package-json.js.map +1 -1
- package/dist/services/payment-flow.d.ts +108 -0
- package/dist/services/payment-flow.d.ts.map +1 -0
- package/dist/services/payment-flow.js +476 -0
- package/dist/services/payment-flow.js.map +1 -0
- package/dist/services/session-manager.d.ts +85 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +203 -0
- package/dist/services/session-manager.js.map +1 -0
- package/dist/utils/design-system.d.ts +90 -0
- package/dist/utils/design-system.d.ts.map +1 -0
- package/dist/utils/design-system.js +338 -0
- package/dist/utils/design-system.js.map +1 -0
- package/dist/utils/output.d.ts +48 -1
- package/dist/utils/output.d.ts.map +1 -1
- package/dist/utils/output.js +180 -17
- package/dist/utils/output.js.map +1 -1
- package/dist/utils/print.d.ts +116 -0
- package/dist/utils/print.d.ts.map +1 -0
- package/dist/utils/print.js +190 -0
- package/dist/utils/print.js.map +1 -0
- package/package.json +13 -2
- package/dist/commands/analyze.d.ts +0 -18
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -404
- package/dist/commands/analyze.js.map +0 -1
- package/dist/services/gitignore.d.ts +0 -19
- package/dist/services/gitignore.d.ts.map +0 -1
- package/dist/services/gitignore.js +0 -64
- 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.
|
|
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"}
|
package/dist/commands/analyze.js
DELETED
|
@@ -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"}
|