pcu 0.2.6

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 (156) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +478 -0
  3. package/bin/pcu.js +15 -0
  4. package/dist/application/services/CatalogUpdateService.d.ts +190 -0
  5. package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
  6. package/dist/application/services/CatalogUpdateService.js +521 -0
  7. package/dist/application/services/CatalogUpdateService.js.map +1 -0
  8. package/dist/application/services/WorkspaceService.d.ts +139 -0
  9. package/dist/application/services/WorkspaceService.d.ts.map +1 -0
  10. package/dist/application/services/WorkspaceService.js +340 -0
  11. package/dist/application/services/WorkspaceService.js.map +1 -0
  12. package/dist/cli/commands/CheckCommand.d.ts +41 -0
  13. package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
  14. package/dist/cli/commands/CheckCommand.js +168 -0
  15. package/dist/cli/commands/CheckCommand.js.map +1 -0
  16. package/dist/cli/commands/UpdateCommand.d.ts +69 -0
  17. package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
  18. package/dist/cli/commands/UpdateCommand.js +361 -0
  19. package/dist/cli/commands/UpdateCommand.js.map +1 -0
  20. package/dist/cli/formatters/OutputFormatter.d.ts +99 -0
  21. package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
  22. package/dist/cli/formatters/OutputFormatter.js +551 -0
  23. package/dist/cli/formatters/OutputFormatter.js.map +1 -0
  24. package/dist/cli/index.d.ts +12 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +271 -0
  27. package/dist/cli/index.js.map +1 -0
  28. package/dist/cli/options/GlobalOptions.d.ts +117 -0
  29. package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
  30. package/dist/cli/options/GlobalOptions.js +278 -0
  31. package/dist/cli/options/GlobalOptions.js.map +1 -0
  32. package/dist/cli/options/index.d.ts +5 -0
  33. package/dist/cli/options/index.d.ts.map +1 -0
  34. package/dist/cli/options/index.js +5 -0
  35. package/dist/cli/options/index.js.map +1 -0
  36. package/dist/cli/validators/CommandValidator.d.ts +60 -0
  37. package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
  38. package/dist/cli/validators/CommandValidator.js +319 -0
  39. package/dist/cli/validators/CommandValidator.js.map +1 -0
  40. package/dist/cli/validators/index.d.ts +5 -0
  41. package/dist/cli/validators/index.d.ts.map +1 -0
  42. package/dist/cli/validators/index.js +5 -0
  43. package/dist/cli/validators/index.js.map +1 -0
  44. package/dist/common/config/Config.d.ts +142 -0
  45. package/dist/common/config/Config.d.ts.map +1 -0
  46. package/dist/common/config/Config.js +355 -0
  47. package/dist/common/config/Config.js.map +1 -0
  48. package/dist/common/config/index.d.ts +6 -0
  49. package/dist/common/config/index.d.ts.map +1 -0
  50. package/dist/common/config/index.js +6 -0
  51. package/dist/common/config/index.js.map +1 -0
  52. package/dist/common/logger/Logger.d.ts +110 -0
  53. package/dist/common/logger/Logger.d.ts.map +1 -0
  54. package/dist/common/logger/Logger.js +289 -0
  55. package/dist/common/logger/Logger.js.map +1 -0
  56. package/dist/common/logger/index.d.ts +6 -0
  57. package/dist/common/logger/index.d.ts.map +1 -0
  58. package/dist/common/logger/index.js +6 -0
  59. package/dist/common/logger/index.js.map +1 -0
  60. package/dist/common/types/cli.d.ts +265 -0
  61. package/dist/common/types/cli.d.ts.map +1 -0
  62. package/dist/common/types/cli.js +5 -0
  63. package/dist/common/types/cli.js.map +1 -0
  64. package/dist/common/types/core.d.ts +270 -0
  65. package/dist/common/types/core.d.ts.map +1 -0
  66. package/dist/common/types/core.js +32 -0
  67. package/dist/common/types/core.js.map +1 -0
  68. package/dist/common/types/index.d.ts +8 -0
  69. package/dist/common/types/index.d.ts.map +1 -0
  70. package/dist/common/types/index.js +8 -0
  71. package/dist/common/types/index.js.map +1 -0
  72. package/dist/common/utils/async.d.ts +74 -0
  73. package/dist/common/utils/async.d.ts.map +1 -0
  74. package/dist/common/utils/async.js +228 -0
  75. package/dist/common/utils/async.js.map +1 -0
  76. package/dist/common/utils/format.d.ts +32 -0
  77. package/dist/common/utils/format.d.ts.map +1 -0
  78. package/dist/common/utils/format.js +121 -0
  79. package/dist/common/utils/format.js.map +1 -0
  80. package/dist/common/utils/git.d.ts +44 -0
  81. package/dist/common/utils/git.d.ts.map +1 -0
  82. package/dist/common/utils/git.js +147 -0
  83. package/dist/common/utils/git.js.map +1 -0
  84. package/dist/common/utils/index.d.ts +11 -0
  85. package/dist/common/utils/index.d.ts.map +1 -0
  86. package/dist/common/utils/index.js +11 -0
  87. package/dist/common/utils/index.js.map +1 -0
  88. package/dist/common/utils/string.d.ts +56 -0
  89. package/dist/common/utils/string.d.ts.map +1 -0
  90. package/dist/common/utils/string.js +134 -0
  91. package/dist/common/utils/string.js.map +1 -0
  92. package/dist/common/utils/validation.d.ts +88 -0
  93. package/dist/common/utils/validation.d.ts.map +1 -0
  94. package/dist/common/utils/validation.js +281 -0
  95. package/dist/common/utils/validation.js.map +1 -0
  96. package/dist/domain/entities/Catalog.d.ts +117 -0
  97. package/dist/domain/entities/Catalog.d.ts.map +1 -0
  98. package/dist/domain/entities/Catalog.js +240 -0
  99. package/dist/domain/entities/Catalog.js.map +1 -0
  100. package/dist/domain/entities/Package.d.ts +143 -0
  101. package/dist/domain/entities/Package.d.ts.map +1 -0
  102. package/dist/domain/entities/Package.js +272 -0
  103. package/dist/domain/entities/Package.js.map +1 -0
  104. package/dist/domain/entities/Workspace.d.ts +95 -0
  105. package/dist/domain/entities/Workspace.d.ts.map +1 -0
  106. package/dist/domain/entities/Workspace.js +173 -0
  107. package/dist/domain/entities/Workspace.js.map +1 -0
  108. package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
  109. package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
  110. package/dist/domain/repositories/WorkspaceRepository.js +8 -0
  111. package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
  112. package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
  113. package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
  114. package/dist/domain/value-objects/CatalogCollection.js +230 -0
  115. package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
  116. package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
  117. package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
  118. package/dist/domain/value-objects/PackageCollection.js +263 -0
  119. package/dist/domain/value-objects/PackageCollection.js.map +1 -0
  120. package/dist/domain/value-objects/Version.d.ts +141 -0
  121. package/dist/domain/value-objects/Version.d.ts.map +1 -0
  122. package/dist/domain/value-objects/Version.js +268 -0
  123. package/dist/domain/value-objects/Version.js.map +1 -0
  124. package/dist/domain/value-objects/WorkspaceConfig.d.ts +144 -0
  125. package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
  126. package/dist/domain/value-objects/WorkspaceConfig.js +357 -0
  127. package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
  128. package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
  129. package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
  130. package/dist/domain/value-objects/WorkspaceId.js +104 -0
  131. package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
  132. package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
  133. package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
  134. package/dist/domain/value-objects/WorkspacePath.js +128 -0
  135. package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
  136. package/dist/infrastructure/cache/Cache.d.ts +161 -0
  137. package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
  138. package/dist/infrastructure/cache/Cache.js +398 -0
  139. package/dist/infrastructure/cache/Cache.js.map +1 -0
  140. package/dist/infrastructure/cache/index.d.ts +6 -0
  141. package/dist/infrastructure/cache/index.d.ts.map +1 -0
  142. package/dist/infrastructure/cache/index.js +6 -0
  143. package/dist/infrastructure/cache/index.js.map +1 -0
  144. package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
  145. package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
  146. package/dist/infrastructure/external-services/NpmRegistryService.js +305 -0
  147. package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
  148. package/dist/infrastructure/file-system/FileSystemService.d.ts +120 -0
  149. package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
  150. package/dist/infrastructure/file-system/FileSystemService.js +663 -0
  151. package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
  152. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
  153. package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
  154. package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
  155. package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
  156. package/package.json +127 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogUpdateService.d.ts","sourceRoot":"","sources":["../../../src/application/services/CatalogUpdateService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,521 @@
1
+ /**
2
+ * Catalog Update Service
3
+ *
4
+ * Core application service that handles catalog dependency updates.
5
+ * Orchestrates domain objects and infrastructure services to provide
6
+ * high-level use cases for checking and updating catalog dependencies.
7
+ */
8
+ import { WorkspacePath } from '../../domain/value-objects/WorkspacePath.js';
9
+ import { Version } from '../../domain/value-objects/Version.js';
10
+ export class CatalogUpdateService {
11
+ workspaceRepository;
12
+ registryService;
13
+ constructor(workspaceRepository, registryService) {
14
+ this.workspaceRepository = workspaceRepository;
15
+ this.registryService = registryService;
16
+ }
17
+ /**
18
+ * Check for outdated catalog dependencies
19
+ */
20
+ async checkOutdatedDependencies(options = {}) {
21
+ const workspacePath = WorkspacePath.fromString(options.workspacePath || process.cwd());
22
+ // Load workspace
23
+ const workspace = await this.workspaceRepository.findByPath(workspacePath);
24
+ if (!workspace) {
25
+ throw new Error(`No pnpm workspace found at ${workspacePath.toString()}`);
26
+ }
27
+ const catalogs = workspace.getCatalogs();
28
+ const catalogInfos = [];
29
+ let totalOutdated = 0;
30
+ // Filter catalogs if specific catalog requested
31
+ const catalogsToCheck = options.catalogName
32
+ ? [catalogs.get(options.catalogName)].filter(Boolean)
33
+ : catalogs.getAll();
34
+ if (catalogsToCheck.length === 0) {
35
+ throw new Error(options.catalogName
36
+ ? `Catalog "${options.catalogName}" not found`
37
+ : 'No catalogs found in workspace');
38
+ }
39
+ // Check each catalog for outdated dependencies
40
+ for (const catalog of catalogsToCheck) {
41
+ const outdatedDependencies = [];
42
+ if (!catalog) {
43
+ throw new Error(`Catalog "${catalogsToCheck[0]?.getName() || 'unknown'}" not found`);
44
+ }
45
+ const dependencies = catalog.getDependencies();
46
+ for (const [packageName, currentRange] of dependencies) {
47
+ // Apply include/exclude filters
48
+ if (!this.shouldCheckPackage(packageName, options.include, options.exclude)) {
49
+ continue;
50
+ }
51
+ try {
52
+ const outdatedInfo = await this.checkPackageUpdate(packageName, currentRange, options.target || 'latest', options.includePrerelease || false);
53
+ if (outdatedInfo) {
54
+ // Get affected packages
55
+ const affectedPackages = workspace
56
+ .getPackagesUsingCatalogDependency(catalog.getName(), packageName)
57
+ .getPackageNames();
58
+ outdatedDependencies.push({
59
+ ...outdatedInfo,
60
+ affectedPackages,
61
+ });
62
+ }
63
+ }
64
+ catch (error) {
65
+ console.warn(`Failed to check ${packageName}:`, error);
66
+ }
67
+ }
68
+ const catalogInfo = {
69
+ catalogName: catalog.getName(),
70
+ outdatedDependencies,
71
+ totalPackages: dependencies.size,
72
+ outdatedCount: outdatedDependencies.length,
73
+ };
74
+ catalogInfos.push(catalogInfo);
75
+ totalOutdated += outdatedDependencies.length;
76
+ }
77
+ return {
78
+ workspace: {
79
+ path: workspacePath.toString(),
80
+ name: workspacePath.getDirectoryName(),
81
+ },
82
+ catalogs: catalogInfos,
83
+ totalOutdated,
84
+ hasUpdates: totalOutdated > 0,
85
+ };
86
+ }
87
+ /**
88
+ * Plan catalog dependency updates
89
+ */
90
+ async planUpdates(options) {
91
+ const outdatedReport = await this.checkOutdatedDependencies(options);
92
+ const updates = [];
93
+ const conflicts = [];
94
+ // Convert outdated dependencies to planned updates
95
+ for (const catalogInfo of outdatedReport.catalogs) {
96
+ for (const outdated of catalogInfo.outdatedDependencies) {
97
+ const update = {
98
+ catalogName: catalogInfo.catalogName,
99
+ packageName: outdated.packageName,
100
+ currentVersion: outdated.currentVersion,
101
+ newVersion: outdated.latestVersion,
102
+ updateType: outdated.updateType,
103
+ reason: this.getUpdateReason(outdated),
104
+ affectedPackages: outdated.affectedPackages,
105
+ };
106
+ updates.push(update);
107
+ }
108
+ }
109
+ // Detect conflicts (same package in multiple catalogs with different versions)
110
+ const packageCatalogMap = new Map();
111
+ for (const update of updates) {
112
+ if (!packageCatalogMap.has(update.packageName)) {
113
+ packageCatalogMap.set(update.packageName, []);
114
+ }
115
+ packageCatalogMap.get(update.packageName).push(update);
116
+ }
117
+ for (const [packageName, packageUpdates] of packageCatalogMap) {
118
+ if (packageUpdates.length > 1) {
119
+ const uniqueVersions = new Set(packageUpdates.map((u) => u.newVersion));
120
+ if (uniqueVersions.size > 1) {
121
+ const conflict = {
122
+ packageName,
123
+ catalogs: packageUpdates.map((u) => ({
124
+ catalogName: u.catalogName,
125
+ currentVersion: u.currentVersion,
126
+ proposedVersion: u.newVersion,
127
+ })),
128
+ recommendation: `Consider using the same version across all catalogs`,
129
+ };
130
+ conflicts.push(conflict);
131
+ }
132
+ }
133
+ }
134
+ return {
135
+ workspace: outdatedReport.workspace,
136
+ updates,
137
+ conflicts,
138
+ totalUpdates: updates.length,
139
+ hasConflicts: conflicts.length > 0,
140
+ };
141
+ }
142
+ /**
143
+ * Execute catalog dependency updates
144
+ */
145
+ async executeUpdates(plan, options) {
146
+ const workspacePath = WorkspacePath.fromString(plan.workspace.path);
147
+ // Load workspace
148
+ const workspace = await this.workspaceRepository.findByPath(workspacePath);
149
+ if (!workspace) {
150
+ throw new Error(`Workspace not found at ${workspacePath.toString()}`);
151
+ }
152
+ const updatedDependencies = [];
153
+ const skippedDependencies = [];
154
+ const errors = [];
155
+ // Execute updates
156
+ for (const update of plan.updates) {
157
+ try {
158
+ // Skip if conflicts exist and force is not enabled
159
+ if (plan.hasConflicts && !options.force) {
160
+ const hasConflict = plan.conflicts.some((c) => c.packageName === update.packageName);
161
+ if (hasConflict) {
162
+ skippedDependencies.push({
163
+ catalogName: update.catalogName,
164
+ packageName: update.packageName,
165
+ currentVersion: update.currentVersion,
166
+ reason: 'Version conflict - use --force to override',
167
+ });
168
+ continue;
169
+ }
170
+ }
171
+ // Perform the update
172
+ workspace.updateCatalogDependency(update.catalogName, update.packageName, update.newVersion);
173
+ updatedDependencies.push({
174
+ catalogName: update.catalogName,
175
+ packageName: update.packageName,
176
+ fromVersion: update.currentVersion,
177
+ toVersion: update.newVersion,
178
+ updateType: update.updateType,
179
+ });
180
+ }
181
+ catch (error) {
182
+ errors.push({
183
+ catalogName: update.catalogName,
184
+ packageName: update.packageName,
185
+ error: String(error),
186
+ fatal: false,
187
+ });
188
+ }
189
+ }
190
+ // Save workspace if not in dry-run mode
191
+ if (!options.dryRun && updatedDependencies.length > 0) {
192
+ try {
193
+ await this.workspaceRepository.save(workspace);
194
+ }
195
+ catch (error) {
196
+ errors.push({
197
+ catalogName: '',
198
+ packageName: '',
199
+ error: `Failed to save workspace: ${error}`,
200
+ fatal: true,
201
+ });
202
+ }
203
+ }
204
+ return {
205
+ success: errors.filter((e) => e.fatal).length === 0,
206
+ workspace: plan.workspace,
207
+ updatedDependencies,
208
+ skippedDependencies,
209
+ errors,
210
+ totalUpdated: updatedDependencies.length,
211
+ totalSkipped: skippedDependencies.length,
212
+ totalErrors: errors.length,
213
+ };
214
+ }
215
+ /**
216
+ * Analyze the impact of updating a specific dependency
217
+ */
218
+ async analyzeImpact(catalogName, packageName, newVersion, workspacePath) {
219
+ const wsPath = WorkspacePath.fromString(workspacePath || process.cwd());
220
+ // Load workspace
221
+ const workspace = await this.workspaceRepository.findByPath(wsPath);
222
+ if (!workspace) {
223
+ throw new Error(`No pnpm workspace found at ${wsPath.toString()}`);
224
+ }
225
+ const catalog = workspace.getCatalogs().get(catalogName);
226
+ if (!catalog) {
227
+ throw new Error(`Catalog "${catalogName}" not found`);
228
+ }
229
+ const currentRange = catalog.getDependencyVersion(packageName);
230
+ if (!currentRange) {
231
+ throw new Error(`Package "${packageName}" not found in catalog "${catalogName}"`);
232
+ }
233
+ const currentVersion = currentRange.toString();
234
+ const proposedVersion = Version.fromString(newVersion);
235
+ const currentVersionObj = currentRange.getMinVersion();
236
+ if (!currentVersionObj) {
237
+ throw new Error(`Cannot determine current version for ${packageName}`);
238
+ }
239
+ const updateType = currentVersionObj.getDifferenceType(proposedVersion);
240
+ // Get affected packages
241
+ const affectedPackagesCollection = workspace.getPackagesUsingCatalogDependency(catalogName, packageName);
242
+ const packageImpacts = [];
243
+ for (const pkg of affectedPackagesCollection.getAll()) {
244
+ const catalogRefs = pkg
245
+ .getCatalogReferences()
246
+ .filter((ref) => ref.getCatalogName() === catalogName && ref.getPackageName() === packageName);
247
+ for (const ref of catalogRefs) {
248
+ const isBreakingChange = updateType === 'major';
249
+ const compatibilityRisk = this.assessCompatibilityRisk(updateType);
250
+ packageImpacts.push({
251
+ packageName: pkg.getName(),
252
+ packagePath: pkg.getPath().toString(),
253
+ dependencyType: ref.getDependencyType(),
254
+ isBreakingChange,
255
+ compatibilityRisk,
256
+ });
257
+ }
258
+ }
259
+ // Check security impact
260
+ const securityImpact = await this.analyzeSecurityImpact(packageName, currentVersion, newVersion);
261
+ // Assess overall risk
262
+ const riskLevel = this.assessOverallRisk(updateType, packageImpacts, securityImpact);
263
+ // Generate recommendations
264
+ const recommendations = this.generateRecommendations(updateType, securityImpact, packageImpacts);
265
+ return {
266
+ packageName,
267
+ catalogName,
268
+ currentVersion,
269
+ proposedVersion: newVersion,
270
+ updateType: updateType,
271
+ affectedPackages: packageImpacts,
272
+ riskLevel,
273
+ securityImpact,
274
+ recommendations,
275
+ };
276
+ }
277
+ /**
278
+ * Check if a specific package should be updated based on filters
279
+ */
280
+ shouldCheckPackage(packageName, include, exclude) {
281
+ // Check exclude patterns first
282
+ if (exclude && exclude.length > 0) {
283
+ for (const pattern of exclude) {
284
+ if (this.matchesPattern(packageName, pattern)) {
285
+ return false;
286
+ }
287
+ }
288
+ }
289
+ // Check include patterns
290
+ if (include && include.length > 0) {
291
+ for (const pattern of include) {
292
+ if (this.matchesPattern(packageName, pattern)) {
293
+ return true;
294
+ }
295
+ }
296
+ return false; // If include patterns exist, package must match one
297
+ }
298
+ return true; // Include by default if no patterns
299
+ }
300
+ /**
301
+ * Check if package matches a pattern (simple glob-like matching)
302
+ */
303
+ matchesPattern(packageName, pattern) {
304
+ // Convert glob pattern to regex
305
+ const regexPattern = pattern.replace(/\*/g, '.*').replace(/\?/g, '.');
306
+ const regex = new RegExp(`^${regexPattern}$`, 'i');
307
+ return regex.test(packageName);
308
+ }
309
+ /**
310
+ * Check if a package needs updating
311
+ */
312
+ async checkPackageUpdate(packageName, currentRange, target, includePrerelease) {
313
+ try {
314
+ const packageInfo = await this.registryService.getPackageInfo(packageName);
315
+ let targetVersion;
316
+ switch (target) {
317
+ case 'latest':
318
+ targetVersion = Version.fromString(packageInfo.latestVersion);
319
+ break;
320
+ case 'greatest':
321
+ targetVersion = await this.registryService.getGreatestVersion(packageName);
322
+ break;
323
+ case 'newest':
324
+ const newestVersions = await this.registryService.getNewestVersions(packageName, 1);
325
+ if (!newestVersions[0]) {
326
+ throw new Error(`No versions found for ${packageName}`);
327
+ }
328
+ targetVersion = newestVersions[0];
329
+ break;
330
+ case 'minor':
331
+ case 'patch':
332
+ targetVersion = await this.getConstrainedVersion(packageName, currentRange, target);
333
+ break;
334
+ default:
335
+ targetVersion = Version.fromString(packageInfo.latestVersion);
336
+ }
337
+ // Skip prereleases unless explicitly requested
338
+ if (!includePrerelease && targetVersion.isPrerelease()) {
339
+ return null;
340
+ }
341
+ const currentVersion = currentRange.getMinVersion();
342
+ if (!currentVersion) {
343
+ return null;
344
+ }
345
+ // Check if update is needed
346
+ if (!targetVersion.isNewerThan(currentVersion)) {
347
+ return null;
348
+ }
349
+ const updateType = currentVersion.getDifferenceType(targetVersion);
350
+ // Check for security vulnerabilities
351
+ const securityReport = await this.registryService.checkSecurityVulnerabilities(packageName, currentVersion.toString());
352
+ return {
353
+ packageName,
354
+ currentVersion: currentVersion.toString(),
355
+ latestVersion: targetVersion.toString(),
356
+ wantedVersion: targetVersion.toString(),
357
+ updateType: updateType,
358
+ isSecurityUpdate: securityReport.hasVulnerabilities,
359
+ affectedPackages: [], // Will be filled by caller
360
+ };
361
+ }
362
+ catch (error) {
363
+ console.warn(`Failed to check updates for ${packageName}:`, error);
364
+ return null;
365
+ }
366
+ }
367
+ /**
368
+ * Get version constrained by update type
369
+ */
370
+ async getConstrainedVersion(packageName, currentRange, constraint) {
371
+ const currentVersion = currentRange.getMinVersion();
372
+ if (!currentVersion) {
373
+ throw new Error(`Cannot determine current version for ${packageName}`);
374
+ }
375
+ const packageInfo = await this.registryService.getPackageInfo(packageName);
376
+ // Filter versions based on constraint
377
+ const compatibleVersions = packageInfo.versions.filter((v) => {
378
+ try {
379
+ const version = Version.fromString(v);
380
+ const diff = currentVersion.getDifferenceType(version);
381
+ if (constraint === 'patch') {
382
+ return diff === 'patch' || diff === 'same';
383
+ }
384
+ else if (constraint === 'minor') {
385
+ return diff === 'minor' || diff === 'patch' || diff === 'same';
386
+ }
387
+ return false;
388
+ }
389
+ catch {
390
+ return false;
391
+ }
392
+ });
393
+ if (compatibleVersions.length === 0) {
394
+ return currentVersion;
395
+ }
396
+ // Return the highest compatible version
397
+ if (!compatibleVersions[0]) {
398
+ throw new Error(`No compatible versions found for ${packageName}`);
399
+ }
400
+ return Version.fromString(compatibleVersions[0]);
401
+ }
402
+ /**
403
+ * Generate update reason description
404
+ */
405
+ getUpdateReason(outdated) {
406
+ if (outdated.isSecurityUpdate) {
407
+ return 'Security update available';
408
+ }
409
+ switch (outdated.updateType) {
410
+ case 'major':
411
+ return 'Major version update available';
412
+ case 'minor':
413
+ return 'Minor version update available';
414
+ case 'patch':
415
+ return 'Patch version update available';
416
+ default:
417
+ return 'Update available';
418
+ }
419
+ }
420
+ /**
421
+ * Analyze security impact of version change
422
+ */
423
+ async analyzeSecurityImpact(packageName, currentVersion, newVersion) {
424
+ try {
425
+ const [currentSecurity, newSecurity] = await Promise.all([
426
+ this.registryService.checkSecurityVulnerabilities(packageName, currentVersion),
427
+ this.registryService.checkSecurityVulnerabilities(packageName, newVersion),
428
+ ]);
429
+ const fixedVulnerabilities = currentSecurity.vulnerabilities.length - newSecurity.vulnerabilities.length;
430
+ const newVulnerabilities = Math.max(0, newSecurity.vulnerabilities.length - currentSecurity.vulnerabilities.length);
431
+ let severityChange = 'same';
432
+ if (fixedVulnerabilities > 0) {
433
+ severityChange = 'better';
434
+ }
435
+ else if (newVulnerabilities > 0) {
436
+ severityChange = 'worse';
437
+ }
438
+ return {
439
+ hasVulnerabilities: currentSecurity.hasVulnerabilities || newSecurity.hasVulnerabilities,
440
+ fixedVulnerabilities: Math.max(0, fixedVulnerabilities),
441
+ newVulnerabilities,
442
+ severityChange,
443
+ };
444
+ }
445
+ catch {
446
+ return {
447
+ hasVulnerabilities: false,
448
+ fixedVulnerabilities: 0,
449
+ newVulnerabilities: 0,
450
+ severityChange: 'same',
451
+ };
452
+ }
453
+ }
454
+ /**
455
+ * Assess compatibility risk for update type
456
+ */
457
+ assessCompatibilityRisk(updateType) {
458
+ switch (updateType) {
459
+ case 'patch':
460
+ return 'low';
461
+ case 'minor':
462
+ return 'medium';
463
+ case 'major':
464
+ return 'high';
465
+ default:
466
+ return 'medium';
467
+ }
468
+ }
469
+ /**
470
+ * Assess overall risk level
471
+ */
472
+ assessOverallRisk(updateType, packageImpacts, securityImpact) {
473
+ // Security fixes reduce risk
474
+ if (securityImpact.fixedVulnerabilities > 0) {
475
+ return updateType === 'major' ? 'medium' : 'low';
476
+ }
477
+ // New vulnerabilities increase risk
478
+ if (securityImpact.newVulnerabilities > 0) {
479
+ return 'high';
480
+ }
481
+ // Base risk on update type and number of affected packages
482
+ const affectedPackageCount = packageImpacts.length;
483
+ if (updateType === 'major') {
484
+ return affectedPackageCount > 5 ? 'high' : 'medium';
485
+ }
486
+ else if (updateType === 'minor') {
487
+ return affectedPackageCount > 10 ? 'medium' : 'low';
488
+ }
489
+ else {
490
+ return 'low';
491
+ }
492
+ }
493
+ /**
494
+ * Generate recommendations based on analysis
495
+ */
496
+ generateRecommendations(updateType, securityImpact, packageImpacts) {
497
+ const recommendations = [];
498
+ if (securityImpact.fixedVulnerabilities > 0) {
499
+ recommendations.push('๐Ÿ”’ Security update recommended - fixes known vulnerabilities');
500
+ }
501
+ if (securityImpact.newVulnerabilities > 0) {
502
+ recommendations.push('โš ๏ธ New vulnerabilities detected - review carefully before updating');
503
+ }
504
+ if (updateType === 'major') {
505
+ recommendations.push('๐Ÿ“– Review changelog for breaking changes before updating');
506
+ recommendations.push('๐Ÿงช Test thoroughly in development environment');
507
+ }
508
+ const breakingChangePackages = packageImpacts.filter((p) => p.isBreakingChange);
509
+ if (breakingChangePackages.length > 0) {
510
+ recommendations.push(`๐Ÿ”ง ${breakingChangePackages.length} package(s) may need code changes`);
511
+ }
512
+ if (packageImpacts.length > 5) {
513
+ recommendations.push('๐Ÿ“ฆ Many packages affected - consider updating in batches');
514
+ }
515
+ if (recommendations.length === 0) {
516
+ recommendations.push('โœ… Low risk update - safe to proceed');
517
+ }
518
+ return recommendations;
519
+ }
520
+ }
521
+ //# sourceMappingURL=CatalogUpdateService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CatalogUpdateService.js","sourceRoot":"","sources":["../../../src/application/services/CatalogUpdateService.ts"],"names":[],"mappings":"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"}