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.
- package/LICENSE +21 -0
- package/README.md +478 -0
- package/bin/pcu.js +15 -0
- package/dist/application/services/CatalogUpdateService.d.ts +190 -0
- package/dist/application/services/CatalogUpdateService.d.ts.map +1 -0
- package/dist/application/services/CatalogUpdateService.js +521 -0
- package/dist/application/services/CatalogUpdateService.js.map +1 -0
- package/dist/application/services/WorkspaceService.d.ts +139 -0
- package/dist/application/services/WorkspaceService.d.ts.map +1 -0
- package/dist/application/services/WorkspaceService.js +340 -0
- package/dist/application/services/WorkspaceService.js.map +1 -0
- package/dist/cli/commands/CheckCommand.d.ts +41 -0
- package/dist/cli/commands/CheckCommand.d.ts.map +1 -0
- package/dist/cli/commands/CheckCommand.js +168 -0
- package/dist/cli/commands/CheckCommand.js.map +1 -0
- package/dist/cli/commands/UpdateCommand.d.ts +69 -0
- package/dist/cli/commands/UpdateCommand.d.ts.map +1 -0
- package/dist/cli/commands/UpdateCommand.js +361 -0
- package/dist/cli/commands/UpdateCommand.js.map +1 -0
- package/dist/cli/formatters/OutputFormatter.d.ts +99 -0
- package/dist/cli/formatters/OutputFormatter.d.ts.map +1 -0
- package/dist/cli/formatters/OutputFormatter.js +551 -0
- package/dist/cli/formatters/OutputFormatter.js.map +1 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +271 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/options/GlobalOptions.d.ts +117 -0
- package/dist/cli/options/GlobalOptions.d.ts.map +1 -0
- package/dist/cli/options/GlobalOptions.js +278 -0
- package/dist/cli/options/GlobalOptions.js.map +1 -0
- package/dist/cli/options/index.d.ts +5 -0
- package/dist/cli/options/index.d.ts.map +1 -0
- package/dist/cli/options/index.js +5 -0
- package/dist/cli/options/index.js.map +1 -0
- package/dist/cli/validators/CommandValidator.d.ts +60 -0
- package/dist/cli/validators/CommandValidator.d.ts.map +1 -0
- package/dist/cli/validators/CommandValidator.js +319 -0
- package/dist/cli/validators/CommandValidator.js.map +1 -0
- package/dist/cli/validators/index.d.ts +5 -0
- package/dist/cli/validators/index.d.ts.map +1 -0
- package/dist/cli/validators/index.js +5 -0
- package/dist/cli/validators/index.js.map +1 -0
- package/dist/common/config/Config.d.ts +142 -0
- package/dist/common/config/Config.d.ts.map +1 -0
- package/dist/common/config/Config.js +355 -0
- package/dist/common/config/Config.js.map +1 -0
- package/dist/common/config/index.d.ts +6 -0
- package/dist/common/config/index.d.ts.map +1 -0
- package/dist/common/config/index.js +6 -0
- package/dist/common/config/index.js.map +1 -0
- package/dist/common/logger/Logger.d.ts +110 -0
- package/dist/common/logger/Logger.d.ts.map +1 -0
- package/dist/common/logger/Logger.js +289 -0
- package/dist/common/logger/Logger.js.map +1 -0
- package/dist/common/logger/index.d.ts +6 -0
- package/dist/common/logger/index.d.ts.map +1 -0
- package/dist/common/logger/index.js +6 -0
- package/dist/common/logger/index.js.map +1 -0
- package/dist/common/types/cli.d.ts +265 -0
- package/dist/common/types/cli.d.ts.map +1 -0
- package/dist/common/types/cli.js +5 -0
- package/dist/common/types/cli.js.map +1 -0
- package/dist/common/types/core.d.ts +270 -0
- package/dist/common/types/core.d.ts.map +1 -0
- package/dist/common/types/core.js +32 -0
- package/dist/common/types/core.js.map +1 -0
- package/dist/common/types/index.d.ts +8 -0
- package/dist/common/types/index.d.ts.map +1 -0
- package/dist/common/types/index.js +8 -0
- package/dist/common/types/index.js.map +1 -0
- package/dist/common/utils/async.d.ts +74 -0
- package/dist/common/utils/async.d.ts.map +1 -0
- package/dist/common/utils/async.js +228 -0
- package/dist/common/utils/async.js.map +1 -0
- package/dist/common/utils/format.d.ts +32 -0
- package/dist/common/utils/format.d.ts.map +1 -0
- package/dist/common/utils/format.js +121 -0
- package/dist/common/utils/format.js.map +1 -0
- package/dist/common/utils/git.d.ts +44 -0
- package/dist/common/utils/git.d.ts.map +1 -0
- package/dist/common/utils/git.js +147 -0
- package/dist/common/utils/git.js.map +1 -0
- package/dist/common/utils/index.d.ts +11 -0
- package/dist/common/utils/index.d.ts.map +1 -0
- package/dist/common/utils/index.js +11 -0
- package/dist/common/utils/index.js.map +1 -0
- package/dist/common/utils/string.d.ts +56 -0
- package/dist/common/utils/string.d.ts.map +1 -0
- package/dist/common/utils/string.js +134 -0
- package/dist/common/utils/string.js.map +1 -0
- package/dist/common/utils/validation.d.ts +88 -0
- package/dist/common/utils/validation.d.ts.map +1 -0
- package/dist/common/utils/validation.js +281 -0
- package/dist/common/utils/validation.js.map +1 -0
- package/dist/domain/entities/Catalog.d.ts +117 -0
- package/dist/domain/entities/Catalog.d.ts.map +1 -0
- package/dist/domain/entities/Catalog.js +240 -0
- package/dist/domain/entities/Catalog.js.map +1 -0
- package/dist/domain/entities/Package.d.ts +143 -0
- package/dist/domain/entities/Package.d.ts.map +1 -0
- package/dist/domain/entities/Package.js +272 -0
- package/dist/domain/entities/Package.js.map +1 -0
- package/dist/domain/entities/Workspace.d.ts +95 -0
- package/dist/domain/entities/Workspace.d.ts.map +1 -0
- package/dist/domain/entities/Workspace.js +173 -0
- package/dist/domain/entities/Workspace.js.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts +41 -0
- package/dist/domain/repositories/WorkspaceRepository.d.ts.map +1 -0
- package/dist/domain/repositories/WorkspaceRepository.js +8 -0
- package/dist/domain/repositories/WorkspaceRepository.js.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts +106 -0
- package/dist/domain/value-objects/CatalogCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/CatalogCollection.js +230 -0
- package/dist/domain/value-objects/CatalogCollection.js.map +1 -0
- package/dist/domain/value-objects/PackageCollection.d.ts +122 -0
- package/dist/domain/value-objects/PackageCollection.d.ts.map +1 -0
- package/dist/domain/value-objects/PackageCollection.js +263 -0
- package/dist/domain/value-objects/PackageCollection.js.map +1 -0
- package/dist/domain/value-objects/Version.d.ts +141 -0
- package/dist/domain/value-objects/Version.d.ts.map +1 -0
- package/dist/domain/value-objects/Version.js +268 -0
- package/dist/domain/value-objects/Version.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts +144 -0
- package/dist/domain/value-objects/WorkspaceConfig.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceConfig.js +357 -0
- package/dist/domain/value-objects/WorkspaceConfig.js.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts +51 -0
- package/dist/domain/value-objects/WorkspaceId.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspaceId.js +104 -0
- package/dist/domain/value-objects/WorkspaceId.js.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts +75 -0
- package/dist/domain/value-objects/WorkspacePath.d.ts.map +1 -0
- package/dist/domain/value-objects/WorkspacePath.js +128 -0
- package/dist/domain/value-objects/WorkspacePath.js.map +1 -0
- package/dist/infrastructure/cache/Cache.d.ts +161 -0
- package/dist/infrastructure/cache/Cache.d.ts.map +1 -0
- package/dist/infrastructure/cache/Cache.js +398 -0
- package/dist/infrastructure/cache/Cache.js.map +1 -0
- package/dist/infrastructure/cache/index.d.ts +6 -0
- package/dist/infrastructure/cache/index.d.ts.map +1 -0
- package/dist/infrastructure/cache/index.js +6 -0
- package/dist/infrastructure/cache/index.js.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts +106 -0
- package/dist/infrastructure/external-services/NpmRegistryService.d.ts.map +1 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js +305 -0
- package/dist/infrastructure/external-services/NpmRegistryService.js.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts +120 -0
- package/dist/infrastructure/file-system/FileSystemService.d.ts.map +1 -0
- package/dist/infrastructure/file-system/FileSystemService.js +663 -0
- package/dist/infrastructure/file-system/FileSystemService.js.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts +57 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.d.ts.map +1 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js +179 -0
- package/dist/infrastructure/repositories/FileWorkspaceRepository.js.map +1 -0
- package/package.json +127 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CatalogUpdateService.d.ts","sourceRoot":"","sources":["../../../src/application/services/CatalogUpdateService.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kDAAkD,CAAC;AAGvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,8DAA8D,CAAC;AAElG,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAClC,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAChC;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,sBAAsB,EAAE,CAAC;IAC/C,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;IACH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;IACzC,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;IACzC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACxC,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,sBAAsB,CAAC;IACjG,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;CAC7C;AAED,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhF,qBAAa,oBAAoB;IAE7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe;gBADf,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,kBAAkB;IAGtD;;OAEG;IACG,yBAAyB,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,cAAc,CAAC;IAsFpF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IA4D9D;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAgFrF;;OAEG;IACG,aAAa,CACjB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,CAAC;IAuF1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuB1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAQtB;;OAEG;YACW,kBAAkB;IAuEhC;;OAEG;YACW,qBAAqB;IAyCnC;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;YACW,qBAAqB;IAyCnC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAa/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA2BzB;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAmChC"}
|
|
@@ -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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"}
|