From d7b902b5651f1055d7a3d5bbe8e52a3070fbe8ec Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:27:08 -0500 Subject: [PATCH 1/2] refactor(@angular/cli): unify package manifest type usage in update schematic Replaces the local JsonSchemaForNpmPackageJsonFiles interface in the update schematic with the shared PackageManifest from utilities/package-metadata. --- .../cli/src/commands/update/schematic/index.ts | 17 ++++++----------- .../cli/src/utilities/package-metadata.ts | 1 + 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/packages/angular/cli/src/commands/update/schematic/index.ts b/packages/angular/cli/src/commands/update/schematic/index.ts index 86bfe92deca1..73fd3e342a5a 100644 --- a/packages/angular/cli/src/commands/update/schematic/index.ts +++ b/packages/angular/cli/src/commands/update/schematic/index.ts @@ -9,19 +9,14 @@ import { logging } from '@angular-devkit/core'; import { Rule, SchematicContext, SchematicsException, Tree } from '@angular-devkit/schematics'; import * as npa from 'npm-package-arg'; -import type { Manifest } from 'pacote'; import * as semver from 'semver'; import { - NgPackageManifestProperties, NpmRepositoryPackageJson, + PackageManifest, getNpmPackageJson, } from '../../../utilities/package-metadata'; import { Schema as UpdateSchema } from './schema'; -interface JsonSchemaForNpmPackageJsonFiles extends Manifest, NgPackageManifestProperties { - peerDependenciesMeta?: Record; -} - type VersionRange = string & { __VERSION_RANGE: void }; type PeerVersionTransform = string | ((range: string) => string); @@ -64,7 +59,7 @@ const knownPeerCompatibleList: { [name: string]: PeerVersionTransform } = { interface PackageVersionInfo { version: VersionRange; - packageJson: JsonSchemaForNpmPackageJsonFiles; + packageJson: PackageManifest; updateMetadata: UpdateMetadata; } @@ -268,7 +263,7 @@ function _performUpdate( throw new SchematicsException('Could not find a package.json. Are you in a Node project?'); } - const packageJson = tree.readJson('/package.json') as JsonSchemaForNpmPackageJsonFiles; + const packageJson = tree.readJson('/package.json') as PackageManifest; const updateDependency = (deps: Record, name: string, newVersion: string) => { const oldVersion = deps[name]; @@ -347,7 +342,7 @@ function _performUpdate( } function _getUpdateMetadata( - packageJson: JsonSchemaForNpmPackageJsonFiles, + packageJson: PackageManifest, logger: logging.LoggerApi, ): UpdateMetadata { const metadata = packageJson['ng-update']; @@ -548,7 +543,7 @@ function _buildPackageInfo( let installedVersion: string | undefined | null; if (pkgJsonExists) { - const { version } = tree.readJson(pkgJsonPath) as JsonSchemaForNpmPackageJsonFiles; + const { version } = tree.readJson(pkgJsonPath) as PackageManifest; installedVersion = version; } @@ -774,7 +769,7 @@ function _addPeerDependencies( function _getAllDependencies(tree: Tree): Array { const { dependencies, devDependencies, peerDependencies } = tree.readJson( '/package.json', - ) as JsonSchemaForNpmPackageJsonFiles; + ) as PackageManifest; return [ ...(Object.entries(peerDependencies || {}) as Array<[string, VersionRange]>), diff --git a/packages/angular/cli/src/utilities/package-metadata.ts b/packages/angular/cli/src/utilities/package-metadata.ts index 7aa0cb71c8ce..58369ad07ec9 100644 --- a/packages/angular/cli/src/utilities/package-metadata.ts +++ b/packages/angular/cli/src/utilities/package-metadata.ts @@ -49,6 +49,7 @@ export interface NgPackageManifestProperties { export interface PackageManifest extends Manifest, NgPackageManifestProperties { deprecated?: boolean; + peerDependenciesMeta?: Record; } interface PackageManagerOptions extends Record { From 8926ef4c90a59f30221e95d1a6cffb4c1408765f Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Thu, 22 Jan 2026 16:29:56 -0500 Subject: [PATCH 2/2] refactor(@angular/cli): add peerDependenciesMeta to package manifest interface Adds the peerDependenciesMeta property to the PackageManifest interface in the package managers utility to better represent package metadata. --- packages/angular/cli/src/package-managers/package-metadata.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/angular/cli/src/package-managers/package-metadata.ts b/packages/angular/cli/src/package-managers/package-metadata.ts index 6f88ea8a0e8f..45c38ca2602b 100644 --- a/packages/angular/cli/src/package-managers/package-metadata.ts +++ b/packages/angular/cli/src/package-managers/package-metadata.ts @@ -89,6 +89,9 @@ export interface PackageManifest { /** A mapping of peer dependencies. */ peerDependencies?: Record; + /** A mapping of peer dependency metadata */ + peerDependenciesMeta?: Record; + /** A mapping of development dependencies. */ devDependencies?: Record;