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,15 +1,30 @@
1
1
  import axios from 'axios';
2
2
  import { AuthManager } from './auth-manager.js';
3
+ import { getDeviceId } from './device-id.js';
4
+ /**
5
+ * Custom error class for network-related errors
6
+ */
7
+ export class NetworkError extends Error {
8
+ constructor(message) {
9
+ super(message);
10
+ this.name = 'NetworkError';
11
+ }
12
+ }
3
13
  /**
4
14
  * API Client for communicating with DepFixer server
5
15
  */
6
16
  export class ApiClient {
7
17
  client;
8
18
  authManager;
19
+ debug;
20
+ webUrl;
9
21
  constructor() {
10
22
  const baseURL = process.env.DEPFIXER_API_URL || 'https://api.depfixer.com/api/v1';
11
- const debug = process.env.DEPFIXER_DEBUG === 'true';
12
- if (debug)
23
+ this.webUrl = process.env.DEPFIXER_WEB_URL || 'https://app.depfixer.com';
24
+ // Debug only when explicitly enabled AND in dev env (localhost) - defaults to false
25
+ const isDevEnv = baseURL.includes('localhost') || baseURL.includes('127.0.0.1');
26
+ this.debug = process.env.DEPFIXER_DEBUG === 'true' && isDevEnv;
27
+ if (this.debug)
13
28
  console.log('[DEBUG] API baseURL:', baseURL);
14
29
  this.client = axios.create({
15
30
  baseURL,
@@ -26,17 +41,17 @@ export class ApiClient {
26
41
  if (token) {
27
42
  config.headers.Authorization = `Bearer ${token}`;
28
43
  }
29
- if (debug)
44
+ if (this.debug)
30
45
  console.log('[DEBUG] Request:', config.method?.toUpperCase(), config.url);
31
46
  return config;
32
47
  });
33
48
  // Add response error handler
34
49
  this.client.interceptors.response.use((response) => {
35
- if (debug)
50
+ if (this.debug)
36
51
  console.log('[DEBUG] Response:', response.status, JSON.stringify(response.data).slice(0, 200));
37
52
  return response;
38
53
  }, (error) => {
39
- if (debug) {
54
+ if (this.debug) {
40
55
  console.log('[DEBUG] Error:', error.response?.status, error.message);
41
56
  console.log('[DEBUG] Error data:', JSON.stringify(error.response?.data));
42
57
  }
@@ -45,29 +60,60 @@ export class ApiClient {
45
60
  }
46
61
  /**
47
62
  * Audit analysis (FREE - no auth required)
63
+ * Includes deviceId for anonymous user tracking
48
64
  */
49
65
  async analyzeAudit(packageJson, framework) {
50
- const debug = process.env.DEPFIXER_DEBUG === 'true';
51
- if (debug) {
66
+ const deviceId = getDeviceId();
67
+ if (this.debug) {
52
68
  console.log('[DEBUG] analyzeAudit called');
53
69
  console.log('[DEBUG] packageJson keys:', Object.keys(packageJson));
54
70
  console.log('[DEBUG] framework:', framework);
71
+ console.log('[DEBUG] deviceId:', deviceId);
55
72
  }
56
73
  try {
57
74
  const response = await this.client.post('/cli/analyze/audit', {
58
75
  packageJson,
59
76
  framework,
77
+ deviceId,
60
78
  });
61
79
  return response.data;
62
80
  }
63
81
  catch (err) {
64
- if (debug) {
82
+ if (this.debug) {
65
83
  console.log('[DEBUG] analyzeAudit error:', err.message);
66
84
  console.log('[DEBUG] full error:', JSON.stringify(err.response?.data || err, null, 2));
67
85
  }
68
86
  throw err;
69
87
  }
70
88
  }
89
+ /**
90
+ * CI analysis (requires API key or JWT auth)
91
+ * Used by GitHub Actions and other CI/CD pipelines
92
+ */
93
+ async analyzeForCi(packageJson, framework) {
94
+ // Check for auth (API key or JWT)
95
+ const authHeader = await this.authManager.getAuthHeader();
96
+ if (!authHeader) {
97
+ throw new Error('Authentication required for CI mode. Set DEPFIXER_TOKEN environment variable.');
98
+ }
99
+ try {
100
+ const response = await this.client.post('/cli/analyze/ci', {
101
+ packageJson,
102
+ framework,
103
+ }, {
104
+ headers: {
105
+ Authorization: authHeader,
106
+ },
107
+ });
108
+ return response.data;
109
+ }
110
+ catch (error) {
111
+ if (this.isNetworkError(error)) {
112
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
113
+ }
114
+ throw error;
115
+ }
116
+ }
71
117
  /**
72
118
  * Full analysis (PAID - auth required)
73
119
  */
@@ -125,6 +171,117 @@ export class ApiClient {
125
171
  const response = await this.client.get(`/analyze/analysis/${analysisId}`);
126
172
  return response.data;
127
173
  }
174
+ /**
175
+ * Get solution for an analysis (used by fix command)
176
+ * Fetches the solution from server to apply fixes
177
+ */
178
+ async getSolution(analysisId) {
179
+ if (!await this.authManager.isAuthenticated()) {
180
+ throw new Error('Authentication required. Run `npx depfixer login` first.');
181
+ }
182
+ try {
183
+ const response = await this.client.get(`/cli/analysis/${analysisId}/solution`);
184
+ return response.data;
185
+ }
186
+ catch (error) {
187
+ // Check if it's a network error
188
+ if (this.isNetworkError(error)) {
189
+ throw new NetworkError('Network error: Unable to connect to DepFixer server. Please check your internet connection.');
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ /**
195
+ * Get user credit balance
196
+ */
197
+ async getBalance() {
198
+ if (!await this.authManager.isAuthenticated()) {
199
+ throw new Error('Authentication required. Run `npx depfixer login` first.');
200
+ }
201
+ try {
202
+ const response = await this.client.get('/cli/balance');
203
+ return response.data;
204
+ }
205
+ catch (error) {
206
+ if (this.isNetworkError(error)) {
207
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
208
+ }
209
+ throw error;
210
+ }
211
+ }
212
+ /**
213
+ * Execute fix: deduct credits and get solution
214
+ * This is the payment endpoint that deducts credits
215
+ * Returns solution and full analysis data for CLI display
216
+ */
217
+ async executeFix(analysisId) {
218
+ if (!await this.authManager.isAuthenticated()) {
219
+ throw new Error('Authentication required. Run `npx depfixer login` first.');
220
+ }
221
+ try {
222
+ const response = await this.client.post('/cli/execute-fix', { analysisId });
223
+ return response.data;
224
+ }
225
+ catch (error) {
226
+ if (this.isNetworkError(error)) {
227
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
228
+ }
229
+ throw error;
230
+ }
231
+ }
232
+ /**
233
+ * Get analysis payment status
234
+ */
235
+ async getAnalysisStatus(analysisId) {
236
+ if (!await this.authManager.isAuthenticated()) {
237
+ throw new Error('Authentication required. Run `npx depfixer login` first.');
238
+ }
239
+ try {
240
+ const response = await this.client.get(`/cli/analysis/${analysisId}/status`);
241
+ return response.data;
242
+ }
243
+ catch (error) {
244
+ if (this.isNetworkError(error)) {
245
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
246
+ }
247
+ throw error;
248
+ }
249
+ }
250
+ /**
251
+ * Get available framework versions for migration
252
+ * Uses selector format for CLI version picker
253
+ */
254
+ async getFrameworkVersions(framework, currentVersion) {
255
+ try {
256
+ // Don't use majorOnly to get all available versions
257
+ let url = `/analyze/framework-versions/${framework}?format=selector`;
258
+ if (currentVersion !== undefined) {
259
+ url += `&currentVersion=${currentVersion}`;
260
+ }
261
+ const response = await this.client.get(url);
262
+ return response.data;
263
+ }
264
+ catch (error) {
265
+ if (this.isNetworkError(error)) {
266
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
267
+ }
268
+ throw error;
269
+ }
270
+ }
271
+ /**
272
+ * Check if error is a network error
273
+ */
274
+ isNetworkError(error) {
275
+ if (!error)
276
+ return false;
277
+ const code = error.code;
278
+ return code === 'ECONNREFUSED' ||
279
+ code === 'ENOTFOUND' ||
280
+ code === 'ETIMEDOUT' ||
281
+ code === 'ENETUNREACH' ||
282
+ code === 'ECONNRESET' ||
283
+ code === 'ERR_NETWORK';
284
+ }
128
285
  /**
129
286
  * Handle API errors
130
287
  */
@@ -138,10 +295,11 @@ export class ApiClient {
138
295
  }
139
296
  if (status === 403) {
140
297
  if (data?.error === 'INSUFFICIENT_CREDITS') {
141
- throw new Error('Insufficient credits. Purchase more at https://app.depfixer.com/pricing');
298
+ throw new Error(`Insufficient credits. Purchase more at ${this.webUrl}/dashboard/credits/pricing`);
142
299
  }
143
300
  if (data?.error === 'RATE_LIMIT_EXCEEDED') {
144
- throw new Error(`Rate limit exceeded. Try again in ${Math.ceil(data.retryAfter / 60)} minutes.`);
301
+ // Use the server's message directly as it already includes the time
302
+ throw new Error(data?.message || 'Rate limit exceeded. Please try again later.');
145
303
  }
146
304
  throw new Error(data?.message || 'Access forbidden');
147
305
  }
@@ -158,5 +316,29 @@ export class ApiClient {
158
316
  }
159
317
  throw new Error(error.message || 'Unknown error occurred');
160
318
  }
319
+ /**
320
+ * Link device analyses to user after login
321
+ * This links all anonymous analyses from this device to the logged-in user
322
+ */
323
+ async linkDeviceToUser() {
324
+ if (!await this.authManager.isAuthenticated()) {
325
+ throw new Error('Authentication required.');
326
+ }
327
+ try {
328
+ const deviceId = getDeviceId();
329
+ const response = await this.client.post('/cli/link-device', { deviceId });
330
+ return response.data;
331
+ }
332
+ catch (error) {
333
+ if (this.isNetworkError(error)) {
334
+ throw new NetworkError('Network error: Unable to connect to DepFixer server.');
335
+ }
336
+ // Don't throw on link-device errors - it's not critical
337
+ if (this.debug) {
338
+ console.log('[DEBUG] linkDeviceToUser error:', error.message);
339
+ }
340
+ return { success: false, error: error.message };
341
+ }
342
+ }
161
343
  }
162
344
  //# sourceMappingURL=api-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/services/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,SAAS;IACZ,MAAM,CAAgB;IACtB,WAAW,CAAc;IACzB,KAAK,CAAU;IACf,MAAM,CAAS;IAEvB;QACE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,iCAAiC,CAAC;QAClF,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,0BAA0B,CAAC;QACzE,oFAAoF;QACpF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,KAAK,MAAM,IAAI,QAAQ,CAAC;QAE/D,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO;YACP,OAAO,EAAE,KAAK;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,oBAAoB;aACnC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;QAErC,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACpD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC;YACtD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,aAAa,GAAG,UAAU,KAAK,EAAE,CAAC;YACnD,CAAC;YACD,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1F,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE;YACX,IAAI,IAAI,CAAC,KAAK;gBAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;YAC/G,OAAO,QAAQ,CAAC;QAClB,CAAC,EACD,CAAC,KAAiB,EAAE,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;YAC3E,CAAC;YACD,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,WAAgB,EAAE,SAAkB;QAMrD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC5D,WAAW;gBACX,SAAS;gBACT,QAAQ;aACT,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxD,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACzF,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAAC,WAAgB,EAAE,SAAkB;QAcrD,kCAAkC;QAClC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACnG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBACzD,WAAW;gBACX,SAAS;aACV,EAAE;gBACD,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU;iBAC1B;aACF,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,WAAgB,EAAE,SAAkB;QAKpD,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3D,WAAW;YACX,SAAS;SACV,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,WAAgB,EAAE,aAAqB,EAAE,SAAkB;QAK9E,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE;YAC9D,WAAW;YACX,aAAa;YACb,SAAS;SACV,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QAWpB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,UAAkB;QAWrC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,UAAkB;QAQzC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,UAAU,EAAE,CAAC,CAAC;QACjF,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,eAAe,CAAC,UAAkB;QAKtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,qBAAqB,UAAU,EAAE,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,UAAkB;QAYlC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,UAAU,WAAW,CAAC,CAAC;YAC/E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,gCAAgC;YAChC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,6FAA6F,CAAC,CAAC;YACxH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QAUd,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU,CAAC,UAAkB;QAsBjC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;YAC5E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB,CAAC,UAAkB;QASxC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,UAAU,SAAS,CAAC,CAAC;YAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,cAAuB;QAsBnE,IAAI,CAAC;YACH,oDAAoD;YACpD,IAAI,GAAG,GAAG,+BAA+B,SAAS,kBAAkB,CAAC;YACrE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;gBACjC,GAAG,IAAI,mBAAmB,cAAc,EAAE,CAAC;YAC7C,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5C,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,KAAU;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACxB,OAAO,IAAI,KAAK,cAAc;YACvB,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,WAAW;YACpB,IAAI,KAAK,aAAa;YACtB,IAAI,KAAK,YAAY;YACrB,IAAI,KAAK,aAAa,CAAC;IAChC,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAiB;QACnC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAW,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YAErC,8BAA8B;YAC9B,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,IAAI,IAAI,EAAE,KAAK,KAAK,sBAAsB,EAAE,CAAC;oBAC3C,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,MAAM,4BAA4B,CAAC,CAAC;gBACrG,CAAC;gBACD,IAAI,IAAI,EAAE,KAAK,KAAK,qBAAqB,EAAE,CAAC;oBAC1C,oEAAoE;oBACpE,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,8CAA8C,CAAC,CAAC;gBACnF,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,kBAAkB,CAAC,CAAC;YACvD,CAAC;YAED,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,IAAI,cAAc,MAAM,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,wBAAwB,CAAC,CAAC;IAC7D,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,gBAAgB;QAOpB,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC;QACvB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,YAAY,CAAC,sDAAsD,CAAC,CAAC;YACjF,CAAC;YACD,wDAAwD;YACxD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF"}
@@ -22,6 +22,20 @@ export declare class AuthManager {
22
22
  * Clear stored credentials (logout)
23
23
  */
24
24
  clearCredentials(): Promise<void>;
25
+ /**
26
+ * Get API key from environment (for CI mode)
27
+ * Checks DEPFIXER_TOKEN environment variable
28
+ */
29
+ getApiKey(): string | null;
30
+ /**
31
+ * Get auth header - prefers API key (CI), falls back to JWT (interactive)
32
+ * Returns null if neither is available
33
+ */
34
+ getAuthHeader(): Promise<string | null>;
35
+ /**
36
+ * Check if running in CI mode (has DEPFIXER_TOKEN env var)
37
+ */
38
+ isApiKeyMode(): boolean;
25
39
  /**
26
40
  * Read credentials from file
27
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../../src/services/auth-manager.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,eAAe,CAAS;;IAOhC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB9C;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7F;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC;;OAEG;YACW,eAAe;CAQ9B"}
1
+ {"version":3,"file":"auth-manager.d.ts","sourceRoot":"","sources":["../../src/services/auth-manager.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,eAAe,CAAS;;IAOhC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAKzC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAkB9C;;OAEG;IACG,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB7F;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvC;;;OAGG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgB7C;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;YACW,eAAe;CAQ9B"}
@@ -66,6 +66,36 @@ export class AuthManager {
66
66
  // File might not exist, that's fine
67
67
  }
68
68
  }
69
+ /**
70
+ * Get API key from environment (for CI mode)
71
+ * Checks DEPFIXER_TOKEN environment variable
72
+ */
73
+ getApiKey() {
74
+ return process.env.DEPFIXER_TOKEN || null;
75
+ }
76
+ /**
77
+ * Get auth header - prefers API key (CI), falls back to JWT (interactive)
78
+ * Returns null if neither is available
79
+ */
80
+ async getAuthHeader() {
81
+ // 1. Check for API key in env (CI mode)
82
+ const apiKey = this.getApiKey();
83
+ if (apiKey) {
84
+ return `Bearer ${apiKey}`;
85
+ }
86
+ // 2. Fall back to JWT token (interactive mode)
87
+ const token = await this.getAccessToken();
88
+ if (token) {
89
+ return `Bearer ${token}`;
90
+ }
91
+ return null;
92
+ }
93
+ /**
94
+ * Check if running in CI mode (has DEPFIXER_TOKEN env var)
95
+ */
96
+ isApiKeyMode() {
97
+ return !!process.env.DEPFIXER_TOKEN;
98
+ }
69
99
  /**
70
100
  * Read credentials from file
71
101
  */
@@ -1 +1 @@
1
- {"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../src/services/auth-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAQzB;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACd,eAAe,CAAS;IAEhC;QACE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YAE9B,mDAAmD;YACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;gBAClD,yCAAyC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,WAAW,CAAC,WAAW,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,YAAoB,EAAE,SAAiB;QAC3E,MAAM,WAAW,GAAgB;YAC/B,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;SACzC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,qDAAqD;QACrD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EACpC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,wBAAwB;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"auth-manager.js","sourceRoot":"","sources":["../../src/services/auth-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAQzB;;;;GAIG;AACH,MAAM,OAAO,WAAW;IACd,eAAe,CAAS;IAEhC;QACE,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;YACjD,IAAI,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YAE9B,mDAAmD;YACnD,MAAM,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,SAAS,GAAG,QAAQ,EAAE,CAAC;gBAClD,yCAAyC;gBACzC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,WAAW,CAAC,WAAW,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,WAAmB,EAAE,YAAoB,EAAE,SAAiB;QAC3E,MAAM,WAAW,GAAgB;YAC/B,WAAW;YACX,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI;SACzC,CAAC;QAEF,0BAA0B;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,qDAAqD;QACrD,MAAM,EAAE,CAAC,SAAS,CAChB,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EACpC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,wBAAwB;SACzC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,gBAAgB;QACpB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa;QACjB,wCAAwC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,UAAU,MAAM,EAAE,CAAC;QAC5B,CAAC;QAED,+CAA+C;QAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,UAAU,KAAK,EAAE,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAgB,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,50 +1,90 @@
1
- interface CacheData {
1
+ interface AnalysisEntry {
2
+ analysisId: string;
3
+ projectName: string;
4
+ packageJsonHash: string;
2
5
  timestamp: number;
3
- originalFileHash: string;
4
- framework?: string;
5
- healthScore: number;
6
- solution: {
7
- dependencies: Record<string, string>;
8
- devDependencies: Record<string, string>;
9
- };
6
+ mode: 'full' | 'migrate';
7
+ targetVersion?: string;
8
+ projectPath?: string;
9
+ }
10
+ interface AnalysisHistory {
11
+ entries: AnalysisEntry[];
10
12
  }
11
13
  /**
12
14
  * Cache Manager
13
- * Handles local caching of analysis results for the fix command
15
+ * Handles local caching of analysis history for the fix command
14
16
  *
15
- * Cache is stored in .depfixer/last-run.json in the project directory
16
- * Hash verification ensures fixes are only applied to unchanged package.json
17
+ * Cache is stored in ~/.depfixer/projects/{projectHash}/analysis-history.json
18
+ * Stores history of all analyses - solution is fetched from server when fixing
19
+ * Centralized storage (no .depfixer in project directory)
17
20
  */
18
21
  export declare class CacheManager {
19
22
  private cacheDir;
20
23
  private cacheFile;
24
+ private maxEntries;
25
+ private projectDir;
21
26
  constructor(projectDir?: string);
22
27
  /**
23
- * Save analysis result to cache
28
+ * Generate a short hash from project path for unique folder name
29
+ */
30
+ private getProjectHash;
31
+ /**
32
+ * Add analysis to history
33
+ * Stores analysisId, projectName, and hash - no solution content
34
+ */
35
+ saveAnalysis(packageJsonContent: string, analysisId: string, projectName: string, mode: 'full' | 'migrate', targetVersion?: string): Promise<void>;
36
+ /**
37
+ * Load analysis history
38
+ */
39
+ loadHistory(): Promise<AnalysisHistory>;
40
+ /**
41
+ * Get the latest analysis entry
42
+ * Returns null if no history exists
43
+ */
44
+ getLatestAnalysis(): Promise<AnalysisEntry | null>;
45
+ /**
46
+ * Get analysis by ID
47
+ * Returns null if not found
24
48
  */
25
- saveCache(packageJsonContent: string, framework: string | undefined, healthScore: number, solution: {
26
- dependencies: Record<string, string>;
27
- devDependencies: Record<string, string>;
28
- }): Promise<void>;
49
+ getAnalysisById(analysisId: string): Promise<AnalysisEntry | null>;
29
50
  /**
30
- * Load cached analysis result
31
- * Returns null if no cache exists
51
+ * Get all analyses (for listing)
32
52
  */
33
- loadCache(): Promise<CacheData | null>;
53
+ getAllAnalyses(): Promise<AnalysisEntry[]>;
34
54
  /**
35
55
  * Verify that package.json hasn't changed since analysis
36
56
  */
37
- verifyHash(packageJsonContent: string): Promise<boolean>;
57
+ verifyHash(packageJsonContent: string, analysisId?: string): Promise<boolean>;
38
58
  /**
39
59
  * Get cache file path (for display purposes)
40
60
  */
41
61
  getCacheFilePath(): string;
42
62
  /**
43
- * Check if cache exists
63
+ * Check if any analysis history exists
64
+ */
65
+ hasHistory(): Promise<boolean>;
66
+ /**
67
+ * Clear all history
68
+ */
69
+ clearHistory(): Promise<void>;
70
+ /**
71
+ * @deprecated Use saveAnalysis instead
72
+ */
73
+ saveCache(packageJsonContent: string, analysisId: string): Promise<void>;
74
+ /**
75
+ * @deprecated Use getLatestAnalysis instead
76
+ */
77
+ loadCache(): Promise<{
78
+ analysisId: string;
79
+ originalFileHash: string;
80
+ timestamp: number;
81
+ } | null>;
82
+ /**
83
+ * @deprecated Use hasHistory instead
44
84
  */
45
85
  cacheExists(): Promise<boolean>;
46
86
  /**
47
- * Clear cache
87
+ * @deprecated Use clearHistory instead
48
88
  */
49
89
  clearCache(): Promise<void>;
50
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/services/cache-manager.ts"],"names":[],"mappings":"AAIA,UAAU,SAAS;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC,CAAC;CACH;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;gBAEd,UAAU,GAAE,MAAsB;IAK9C;;OAEG;IACG,SAAS,CACb,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACzC,GACA,OAAO,CAAC,IAAI,CAAC;IAoBhB;;;OAGG;IACG,SAAS,IAAI,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAS5C;;OAEG;IACG,UAAU,CAAC,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ9D;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
1
+ {"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../src/services/cache-manager.ts"],"names":[],"mappings":"AAMA,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,GAAE,MAAsB;IAQ9C;;OAEG;IACH,OAAO,CAAC,cAAc;IAMtB;;;OAGG;IACG,YAAY,CAChB,kBAAkB,EAAE,MAAM,EAC1B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IAgChB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,eAAe,CAAC;IAS7C;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKxD;;;OAGG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAKxE;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKhD;;OAEG;IACG,UAAU,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWnF;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAKpC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAUnC;;OAEG;IACG,SAAS,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9E;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAUtG;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAGlC"}