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,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 { createSpinner, printSuccess, printError, printInfo, } from '../utils/output.js';
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 ${chalk.cyan('npx depfixer logout')} to sign out.`);
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(chalk.bold('Your login code:'));
43
+ console.log(colors.whiteBold('🔐 LOGIN'));
44
+ console.log(colors.gray('─'.repeat(40)));
37
45
  console.log();
38
- console.log(` ${chalk.cyan.bold.underline(userCode)}`);
46
+ console.log(colors.whiteBold('Your Code: ') + colors.brandBold(userCode));
39
47
  console.log();
40
- console.log('Enter this code at:');
41
- console.log(` ${chalk.blue(verificationUrl)}`);
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
- // Open browser
44
- printInfo('Opening browser...');
45
- try {
46
- await open(verificationUrl);
47
- }
48
- catch {
49
- console.log(chalk.dim('(Could not open browser automatically)'));
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
- printSuccess('You are now logged in!');
71
- console.log();
72
- console.log('Try these commands:');
73
- console.log(` ${chalk.cyan('npx depfixer analyze --full')} Full analysis with recommendations`);
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":"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"}
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":"AAIA;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAenD"}
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"}
@@ -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;AAE7D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEtC,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,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"}
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"}