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.
- 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 +165 -40
- 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 +62 -22
- package/dist/services/cache-manager.d.ts.map +1 -1
- package/dist/services/cache-manager.js +116 -30
- 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 +92 -0
- package/dist/services/session-manager.d.ts.map +1 -0
- package/dist/services/session-manager.js +218 -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
package/dist/commands/login.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
1
|
import open from 'open';
|
|
3
2
|
import { ApiClient } from '../services/api-client.js';
|
|
4
3
|
import { AuthManager } from '../services/auth-manager.js';
|
|
5
|
-
import {
|
|
4
|
+
import { analytics } from '../services/analytics.js';
|
|
5
|
+
import { createSpinner, printError, printInfo, } from '../utils/output.js';
|
|
6
|
+
import { colors, printCliHeader, printUserDetails } from '../utils/design-system.js';
|
|
6
7
|
/**
|
|
7
8
|
* Login command
|
|
8
9
|
*
|
|
@@ -15,12 +16,16 @@ import { createSpinner, printSuccess, printError, printInfo, } from '../utils/ou
|
|
|
15
16
|
export async function loginCommand() {
|
|
16
17
|
const apiClient = new ApiClient();
|
|
17
18
|
const authManager = new AuthManager();
|
|
19
|
+
// Track: login_started
|
|
20
|
+
analytics.loginStarted({ command: 'login' });
|
|
18
21
|
// Check if already logged in
|
|
19
22
|
if (await authManager.isAuthenticated()) {
|
|
20
23
|
printInfo('You are already logged in.');
|
|
21
|
-
console.log(`Run ${
|
|
24
|
+
console.log(`Run ${colors.brand('npx depfixer logout')} to sign out.`);
|
|
22
25
|
return;
|
|
23
26
|
}
|
|
27
|
+
// Show CLI header
|
|
28
|
+
printCliHeader();
|
|
24
29
|
try {
|
|
25
30
|
// Step 1: Generate device code
|
|
26
31
|
const spinner = createSpinner('Generating login code...').start();
|
|
@@ -32,22 +37,31 @@ export async function loginCommand() {
|
|
|
32
37
|
spinner.succeed('Login code generated');
|
|
33
38
|
const { deviceCode, userCode, verificationUrl, expiresIn, pollInterval } = response.data;
|
|
34
39
|
// Step 2: Show user code and open browser
|
|
40
|
+
// Append code to URL for auto-fill
|
|
41
|
+
const verificationUrlWithCode = `${verificationUrl}?code=${userCode}`;
|
|
35
42
|
console.log();
|
|
36
|
-
console.log(
|
|
43
|
+
console.log(colors.whiteBold('🔐 LOGIN'));
|
|
44
|
+
console.log(colors.gray('─'.repeat(40)));
|
|
37
45
|
console.log();
|
|
38
|
-
console.log(
|
|
46
|
+
console.log(colors.whiteBold('Your Code: ') + colors.brandBold(userCode));
|
|
39
47
|
console.log();
|
|
40
|
-
console.log('
|
|
41
|
-
console.log(
|
|
48
|
+
console.log(colors.dim('Go to: ') + colors.brand(verificationUrlWithCode));
|
|
49
|
+
console.log(colors.dim('Code will be auto-filled. Just click Authorize.'));
|
|
42
50
|
console.log();
|
|
43
|
-
//
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
// Track: device_code_shown
|
|
52
|
+
analytics.deviceCodeShown({ expiresIn });
|
|
53
|
+
// Ask before opening browser
|
|
54
|
+
const shouldOpen = await promptYesNo('Open browser now?');
|
|
55
|
+
if (shouldOpen) {
|
|
56
|
+
try {
|
|
57
|
+
await open(verificationUrlWithCode);
|
|
58
|
+
console.log(colors.dim('Browser opened.'));
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
console.log(colors.warning('Could not open browser. Please visit the URL manually.'));
|
|
62
|
+
}
|
|
50
63
|
}
|
|
64
|
+
console.log();
|
|
51
65
|
// Step 3: Poll for approval
|
|
52
66
|
console.log();
|
|
53
67
|
const pollSpinner = createSpinner('Waiting for approval...').start();
|
|
@@ -66,19 +80,48 @@ export async function loginCommand() {
|
|
|
66
80
|
// Save tokens
|
|
67
81
|
const { accessToken, refreshToken, expiresIn: tokenExpiresIn } = pollResponse.data;
|
|
68
82
|
await authManager.saveTokens(accessToken, refreshToken, tokenExpiresIn);
|
|
83
|
+
// Track: login_success
|
|
84
|
+
analytics.loginSuccess();
|
|
85
|
+
// Link anonymous analyses from this device to the logged-in user (silent - no error shown)
|
|
86
|
+
try {
|
|
87
|
+
await apiClient.linkDeviceToUser();
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Ignore errors - linking is not critical
|
|
91
|
+
}
|
|
92
|
+
// Fetch and show user details
|
|
93
|
+
try {
|
|
94
|
+
const balanceResponse = await apiClient.getBalance();
|
|
95
|
+
if (balanceResponse.success && balanceResponse.data) {
|
|
96
|
+
printUserDetails({
|
|
97
|
+
name: balanceResponse.data.name,
|
|
98
|
+
email: balanceResponse.data.email,
|
|
99
|
+
credits: balanceResponse.data.credits,
|
|
100
|
+
hasActivePass: balanceResponse.data.hasActivePass,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Fallback if balance fetch fails
|
|
106
|
+
console.log();
|
|
107
|
+
console.log(colors.successBold('✓ Logged in successfully'));
|
|
108
|
+
}
|
|
69
109
|
console.log();
|
|
70
|
-
|
|
71
|
-
console.log();
|
|
72
|
-
console.log('
|
|
73
|
-
console.log(` ${
|
|
74
|
-
console.log(` ${chalk.cyan('npx depfixer analyze --migrate 19')} Migration analysis`);
|
|
110
|
+
console.log(colors.whiteBold('Try these commands:'));
|
|
111
|
+
console.log(` ${colors.brand('npx depfixer')} Smart analysis with fix`);
|
|
112
|
+
console.log(` ${colors.brand('npx depfixer migrate 19')} Migration to Angular 19`);
|
|
113
|
+
console.log(` ${colors.brand('npx depfixer whoami')} View account details`);
|
|
75
114
|
return;
|
|
76
115
|
}
|
|
77
116
|
if (status === 'expired') {
|
|
117
|
+
// Track: login_failed
|
|
118
|
+
analytics.loginFailed({ reason: 'expired' });
|
|
78
119
|
pollSpinner.fail('Login code expired');
|
|
79
120
|
throw new Error('Login code expired. Please try again.');
|
|
80
121
|
}
|
|
81
122
|
if (status === 'denied') {
|
|
123
|
+
// Track: login_failed
|
|
124
|
+
analytics.loginFailed({ reason: 'denied' });
|
|
82
125
|
pollSpinner.fail('Login denied');
|
|
83
126
|
throw new Error('Login was denied. Please try again.');
|
|
84
127
|
}
|
|
@@ -92,10 +135,16 @@ export async function loginCommand() {
|
|
|
92
135
|
}
|
|
93
136
|
}
|
|
94
137
|
// Timeout
|
|
138
|
+
// Track: login_failed
|
|
139
|
+
analytics.loginFailed({ reason: 'timeout' });
|
|
95
140
|
pollSpinner.fail('Login timed out');
|
|
96
141
|
throw new Error('Login timed out. Please try again.');
|
|
97
142
|
}
|
|
98
143
|
catch (error) {
|
|
144
|
+
// Track: login_cancelled (if not already tracked as failed)
|
|
145
|
+
if (!error.message.includes('expired') && !error.message.includes('denied') && !error.message.includes('timed out')) {
|
|
146
|
+
analytics.loginCancelled({ reason: error.message });
|
|
147
|
+
}
|
|
99
148
|
printError(error.message);
|
|
100
149
|
process.exit(1);
|
|
101
150
|
}
|
|
@@ -106,4 +155,56 @@ export async function loginCommand() {
|
|
|
106
155
|
function sleep(ms) {
|
|
107
156
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
108
157
|
}
|
|
158
|
+
/**
|
|
159
|
+
* Simple Enter/Esc prompt (Enter = Yes, Esc = No)
|
|
160
|
+
*/
|
|
161
|
+
async function promptYesNo(question) {
|
|
162
|
+
return new Promise((resolve) => {
|
|
163
|
+
process.stdout.write(`${question} ${colors.dim('(Enter/Esc)')} `);
|
|
164
|
+
if (process.stdin.isTTY) {
|
|
165
|
+
process.stdin.setRawMode(true);
|
|
166
|
+
}
|
|
167
|
+
process.stdin.resume();
|
|
168
|
+
const onKeyPress = (key) => {
|
|
169
|
+
const char = key.toString();
|
|
170
|
+
// Enter key
|
|
171
|
+
if (char === '\r' || char === '\n') {
|
|
172
|
+
cleanup();
|
|
173
|
+
console.log(colors.success('Yes'));
|
|
174
|
+
resolve(true);
|
|
175
|
+
}
|
|
176
|
+
// Escape key
|
|
177
|
+
else if (char === '\x1b') {
|
|
178
|
+
cleanup();
|
|
179
|
+
console.log(colors.danger('No'));
|
|
180
|
+
resolve(false);
|
|
181
|
+
}
|
|
182
|
+
// 'y' or 'Y'
|
|
183
|
+
else if (char.toLowerCase() === 'y') {
|
|
184
|
+
cleanup();
|
|
185
|
+
console.log(colors.success('Yes'));
|
|
186
|
+
resolve(true);
|
|
187
|
+
}
|
|
188
|
+
// 'n' or 'N'
|
|
189
|
+
else if (char.toLowerCase() === 'n') {
|
|
190
|
+
cleanup();
|
|
191
|
+
console.log(colors.danger('No'));
|
|
192
|
+
resolve(false);
|
|
193
|
+
}
|
|
194
|
+
// Ctrl+C
|
|
195
|
+
else if (char === '\x03') {
|
|
196
|
+
cleanup();
|
|
197
|
+
process.exit(0);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const cleanup = () => {
|
|
201
|
+
process.stdin.removeListener('data', onKeyPress);
|
|
202
|
+
if (process.stdin.isTTY) {
|
|
203
|
+
process.stdin.setRawMode(false);
|
|
204
|
+
}
|
|
205
|
+
process.stdin.pause();
|
|
206
|
+
};
|
|
207
|
+
process.stdin.on('data', onKeyPress);
|
|
208
|
+
});
|
|
209
|
+
}
|
|
109
210
|
//# sourceMappingURL=login.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAqBnD"}
|
package/dist/commands/logout.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import { AuthManager } from '../services/auth-manager.js';
|
|
3
|
+
import { analytics } from '../services/analytics.js';
|
|
3
4
|
import { printSuccess, printInfo } from '../utils/output.js';
|
|
5
|
+
import { printCliHeader } from '../utils/design-system.js';
|
|
4
6
|
/**
|
|
5
7
|
* Logout command
|
|
6
8
|
*
|
|
@@ -8,6 +10,8 @@ import { printSuccess, printInfo } from '../utils/output.js';
|
|
|
8
10
|
*/
|
|
9
11
|
export async function logoutCommand() {
|
|
10
12
|
const authManager = new AuthManager();
|
|
13
|
+
// Print CLI header
|
|
14
|
+
printCliHeader();
|
|
11
15
|
// Check if logged in
|
|
12
16
|
if (!await authManager.isAuthenticated()) {
|
|
13
17
|
printInfo('You are not logged in.');
|
|
@@ -15,6 +19,8 @@ export async function logoutCommand() {
|
|
|
15
19
|
}
|
|
16
20
|
// Clear credentials
|
|
17
21
|
await authManager.clearCredentials();
|
|
22
|
+
// Track: logout_executed
|
|
23
|
+
analytics.logoutExecuted();
|
|
18
24
|
printSuccess('Successfully logged out.');
|
|
19
25
|
console.log();
|
|
20
26
|
console.log(`Run ${chalk.cyan('npx depfixer login')} to sign in again.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../src/commands/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEtC,mBAAmB;IACnB,cAAc,EAAE,CAAC;IAEjB,qBAAqB;IACrB,IAAI,CAAC,MAAM,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;QACzC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACpC,OAAO;IACT,CAAC;IAED,oBAAoB;IACpB,MAAM,WAAW,CAAC,gBAAgB,EAAE,CAAC;IAErC,yBAAyB;IACzB,SAAS,CAAC,cAAc,EAAE,CAAC;IAE3B,YAAY,CAAC,0BAA0B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface MigrateOptions {
|
|
2
|
+
path?: string;
|
|
3
|
+
yes?: boolean;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Migrate command
|
|
7
|
+
*
|
|
8
|
+
* Interactive migration with version selection:
|
|
9
|
+
* 1. Detect framework and current version
|
|
10
|
+
* 2. Fetch available versions from server
|
|
11
|
+
* 3. Show version selector (minor patches vs major upgrades)
|
|
12
|
+
* 4. User selects target version
|
|
13
|
+
* 5. Show migration plan with cost
|
|
14
|
+
* 6. Confirm and execute
|
|
15
|
+
*
|
|
16
|
+
* Usage:
|
|
17
|
+
* npx depfixer migrate
|
|
18
|
+
* npx depfixer migrate --yes
|
|
19
|
+
*/
|
|
20
|
+
export declare function migrateCommand(options: MigrateOptions): Promise<void>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AA6BA,UAAU,cAAc;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAUD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6kB3E"}
|