From 1797cfe31b99024818b4bb2fa98012a91bc53c4a Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Tue, 9 Jun 2026 21:17:59 -0400 Subject: [PATCH 1/3] refactor(@angular/cli): transition update command to use PackageManager abstraction Transition the update command's version resolver to utilize the registry methods from the PackageManager abstraction instead of directly querying the registry via pacote. This introduces a cached RegistryClient wrapper that retrieves package metadata and manifests on-demand. Update resolution helper functions are updated to be asynchronous to support the lazy-loading of registry documents. --- package.json | 3 - packages/angular/cli/BUILD.bazel | 6 - packages/angular/cli/package.json | 3 - .../angular/cli/src/commands/update/cli.ts | 9 +- .../src/commands/update/update-resolver.ts | 335 ++--- .../commands/update/update-resolver_spec.ts | 280 ++++- .../src/package-managers/package-metadata.ts | 2 +- .../cli/src/utilities/package-metadata.ts | 247 ---- pnpm-lock.yaml | 1117 ++++------------- 9 files changed, 670 insertions(+), 1332 deletions(-) delete mode 100644 packages/angular/cli/src/utilities/package-metadata.ts diff --git a/package.json b/package.json index f1f5ced9ff5b..36b31bc575d8 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "@types/browser-sync": "^2.27.0", "@types/express": "~5.0.1", "@types/http-proxy": "^1.17.4", - "@types/ini": "^4.0.0", "@types/jasmine": "~6.0.0", "@types/jasmine-reporters": "^2", "@types/karma": "^6.3.0", @@ -87,14 +86,12 @@ "@types/lodash": "^4.17.0", "@types/node": "^22.12.0", "@types/npm-package-arg": "^6.1.0", - "@types/pacote": "^11.1.3", "@types/picomatch": "^4.0.0", "@types/progress": "^2.0.3", "@types/semver": "^7.3.12", "@types/watchpack": "^2.4.4", "@types/yargs": "^17.0.20", "@types/yargs-parser": "^21.0.0", - "@types/yarnpkg__lockfile": "^1.1.5", "@typescript-eslint/eslint-plugin": "8.61.0", "@typescript-eslint/parser": "8.61.0", "ajv": "8.20.0", diff --git a/packages/angular/cli/BUILD.bazel b/packages/angular/cli/BUILD.bazel index b73ed5fba5fe..613785018402 100644 --- a/packages/angular/cli/BUILD.bazel +++ b/packages/angular/cli/BUILD.bazel @@ -61,24 +61,18 @@ ts_project( ":node_modules/@inquirer/prompts", ":node_modules/@listr2/prompt-adapter-inquirer", ":node_modules/@modelcontextprotocol/sdk", - ":node_modules/@yarnpkg/lockfile", ":node_modules/algoliasearch", - ":node_modules/ini", ":node_modules/jsonc-parser", ":node_modules/listr2", ":node_modules/npm-package-arg", - ":node_modules/pacote", ":node_modules/parse5-html-rewriting-stream", ":node_modules/yargs", ":node_modules/zod", "//:node_modules/@angular/core", - "//:node_modules/@types/ini", "//:node_modules/@types/node", "//:node_modules/@types/npm-package-arg", - "//:node_modules/@types/pacote", "//:node_modules/@types/semver", "//:node_modules/@types/yargs", - "//:node_modules/@types/yarnpkg__lockfile", "//:node_modules/semver", "//:node_modules/typescript", ], diff --git a/packages/angular/cli/package.json b/packages/angular/cli/package.json index 9a22e424e4b5..680fc2a730c5 100644 --- a/packages/angular/cli/package.json +++ b/packages/angular/cli/package.json @@ -19,13 +19,10 @@ "@listr2/prompt-adapter-inquirer": "4.2.4", "@modelcontextprotocol/sdk": "1.29.0", "@schematics/angular": "workspace:0.0.0-PLACEHOLDER", - "@yarnpkg/lockfile": "1.1.0", "algoliasearch": "5.54.0", - "ini": "7.0.0", "jsonc-parser": "3.3.1", "listr2": "10.2.1", "npm-package-arg": "14.0.0", - "pacote": "21.5.1", "parse5-html-rewriting-stream": "8.0.1", "semver": "7.8.4", "yargs": "18.0.0", diff --git a/packages/angular/cli/src/commands/update/cli.ts b/packages/angular/cli/src/commands/update/cli.ts index 447782da0616..e10ff4b940b8 100644 --- a/packages/angular/cli/src/commands/update/cli.ts +++ b/packages/angular/cli/src/commands/update/cli.ts @@ -254,10 +254,16 @@ export default class UpdateCommandModule extends CommandModule string); +export class RegistryClient { + private metadataCache = new Map>(); + private manifestCache = new Map>(); + + constructor( + private packageManager: PackageManager, + private logger: logging.LoggerApi, + ) {} + + async getMetadata(packageName: string): Promise { + let promise = this.metadataCache.get(packageName); + if (!promise) { + promise = this.packageManager.getRegistryMetadata(packageName).catch((e) => { + this.metadataCache.delete(packageName); + throw e; + }); + this.metadataCache.set(packageName, promise); + } + + return promise; + } + + async getManifest(packageName: string, version: string): Promise { + const key = `${packageName}@${version}`; + let promise = this.manifestCache.get(key); + if (!promise) { + promise = this.packageManager.getRegistryManifest(packageName, version).catch((e) => { + this.manifestCache.delete(key); + throw e; + }); + this.manifestCache.set(key, promise); + } + + return promise; + } +} + +export async function getSatisfyingVersion( + registryClient: RegistryClient, + packageName: string, + versions: string[], + range: string, + next?: boolean, +): Promise { + const options = { includePrerelease: next || undefined }; + const candidates = versions.filter((v) => semver.satisfies(v, range, options)); + const sorted = semver.rsort(candidates); + + for (const version of sorted) { + const manifest = await registryClient.getManifest(packageName, version); + if (manifest && !manifest.deprecated) { + return version; + } + } + + // Fallback to deprecated versions if no non-deprecated version satisfies + for (const version of sorted) { + const manifest = await registryClient.getManifest(packageName, version); + if (manifest) { + return version; + } + } + + return null; +} + export function angularMajorCompatGuarantee(range: string) { let newRange = semver.validRange(range); if (!newRange) { @@ -54,7 +116,7 @@ export interface PackageVersionInfo { export interface PackageInfo { name: string; - npmPackageJson: NpmRepositoryPackageJson; + npmPackageJson: PackageMetadata; installed: PackageVersionInfo; target?: PackageVersionInfo; packageJsonRange: string; @@ -84,6 +146,7 @@ export interface UpdatePlan { packagesToUpdate: Map; // name -> target version range migrationsToRun: { package: string; collection: string; from: string; to: string }[]; packageInfoMap: Map; + registryClient: RegistryClient; } function _updatePeerVersion(infoMap: Map, name: string, range: string) { @@ -215,7 +278,7 @@ function _getUpdateMetadata( packageJson: PackageManifest, logger: logging.LoggerApi, ): UpdateMetadata { - const metadata = packageJson['ng-update']; + const metadata = packageJson['ng-update'] as Record | undefined; const result: UpdateMetadata = { packageGroup: {}, @@ -337,13 +400,11 @@ function _buildLocalPackageInfo( } const installedVersion = localPkgJson.version; - const npmPackageJson: NpmRepositoryPackageJson = { + const npmPackageJson: PackageMetadata = { name, - versions: { - [installedVersion]: localPkgJson, - }, + versions: [installedVersion], 'dist-tags': {}, - } as unknown as NpmRepositoryPackageJson; + }; const logger = new logging.NullLogger(); @@ -359,13 +420,14 @@ function _buildLocalPackageInfo( }; } -function _buildPackageInfo( +async function _buildPackageInfo( packages: Map, allDependencies: ReadonlyMap, - npmPackageJson: NpmRepositoryPackageJson, + npmPackageJson: PackageMetadata, workspaceRoot: string, + registryClient: RegistryClient, logger: logging.LoggerApi, -): PackageInfo { +): Promise { const name = npmPackageJson.name; const packageJsonRange = allDependencies.get(name); if (!packageJsonRange) { @@ -375,24 +437,13 @@ function _buildPackageInfo( const localPkgJson = getInstalledPackageJson(name, workspaceRoot); let installedVersion = localPkgJson?.version; - const packageVersionsNonDeprecated: string[] = []; - const packageVersionsDeprecated: string[] = []; - - for (const [version, { deprecated }] of Object.entries(npmPackageJson.versions ?? {})) { - if (deprecated) { - packageVersionsDeprecated.push(version); - } else { - packageVersionsNonDeprecated.push(version); - } - } - - const findSatisfyingVersion = (targetVersion: VersionRange): VersionRange | undefined => - ((semver.maxSatisfying(packageVersionsNonDeprecated, targetVersion) ?? - semver.maxSatisfying(packageVersionsDeprecated, targetVersion)) as VersionRange | null) ?? - undefined; - if (!installedVersion) { - installedVersion = findSatisfyingVersion(packageJsonRange); + installedVersion = (await getSatisfyingVersion( + registryClient, + name, + npmPackageJson.versions, + packageJsonRange, + )) as VersionRange | undefined; } if (!installedVersion) { @@ -401,8 +452,8 @@ function _buildPackageInfo( ); } - const versions = npmPackageJson.versions ?? {}; - const installedPackageJson = versions[installedVersion] || localPkgJson; + const installedPackageJson = + localPkgJson || (await registryClient.getManifest(name, installedVersion)); if (!installedPackageJson) { throw new Error( `An unexpected error happened; package ${name} has no version ${installedVersion}.`, @@ -417,7 +468,12 @@ function _buildPackageInfo( } else if (targetVersion == 'next') { targetVersion = distTags['latest'] as VersionRange; } else { - targetVersion = findSatisfyingVersion(targetVersion); + targetVersion = (await getSatisfyingVersion( + registryClient, + name, + npmPackageJson.versions, + targetVersion, + )) as VersionRange | undefined; } } @@ -426,13 +482,17 @@ function _buildPackageInfo( targetVersion = undefined; } - const target: PackageVersionInfo | undefined = targetVersion - ? { + let target: PackageVersionInfo | undefined; + if (targetVersion) { + const targetPackageJson = await registryClient.getManifest(name, targetVersion); + if (targetPackageJson) { + target = { version: targetVersion, - packageJson: versions[targetVersion], - updateMetadata: _getUpdateMetadata(versions[targetVersion], logger), - } - : undefined; + packageJson: targetPackageJson, + updateMetadata: _getUpdateMetadata(targetPackageJson, logger), + }; + } + } return { name, @@ -487,11 +547,12 @@ function _buildPackageList( return packages; } -function resolvePackageVersion( - metadata: NpmRepositoryPackageJson, +async function resolvePackageVersion( + registryClient: RegistryClient, + metadata: PackageMetadata, range: string, next = false, -): string | null { +): Promise { const distTags = metadata['dist-tags'] ?? {}; if (distTags[range]) { return distTags[range]; @@ -500,32 +561,16 @@ function resolvePackageVersion( return distTags['latest'] ?? null; } - const packageVersionsNonDeprecated: string[] = []; - const packageVersionsDeprecated: string[] = []; - for (const [v, { deprecated }] of Object.entries(metadata.versions ?? {})) { - if (deprecated) { - packageVersionsDeprecated.push(v); - } else { - packageVersionsNonDeprecated.push(v); - } - } - - return ( - semver.maxSatisfying(packageVersionsNonDeprecated, range, { - includePrerelease: next || undefined, - }) ?? - semver.maxSatisfying(packageVersionsDeprecated, range, { - includePrerelease: next || undefined, - }) - ); + return getSatisfyingVersion(registryClient, metadata.name, metadata.versions, range, next); } -function _addPackageGroup( +async function _addPackageGroup( packages: Map, allDependencies: ReadonlyMap, - metadata: NpmRepositoryPackageJson, + metadata: PackageMetadata, + registryClient: RegistryClient, logger: logging.LoggerApi, -): void { +): Promise { const maybePackage = packages.get(metadata.name); if (!maybePackage) { return; @@ -538,27 +583,20 @@ function _addPackageGroup( } else if (version === 'next') { version = distTags['latest'] as VersionRange; } else { - const packageVersionsNonDeprecated: string[] = []; - const packageVersionsDeprecated: string[] = []; - const versions = metadata.versions ?? {}; - for (const [v, { deprecated }] of Object.entries(versions)) { - if (deprecated) { - packageVersionsDeprecated.push(v); - } else { - packageVersionsNonDeprecated.push(v); - } - } version = - ((semver.maxSatisfying(packageVersionsNonDeprecated, version) ?? - semver.maxSatisfying(packageVersionsDeprecated, version)) as VersionRange | null) ?? - version; + ((await getSatisfyingVersion( + registryClient, + metadata.name, + metadata.versions, + version, + )) as VersionRange | null) ?? version; } - const versions = metadata.versions ?? {}; - if (!versions[version]) { + const packageJson = await registryClient.getManifest(metadata.name, version); + if (!packageJson) { return; } - const ngUpdateMetadata = versions[version]['ng-update']; + const ngUpdateMetadata = packageJson['ng-update']; if (!ngUpdateMetadata) { return; } @@ -607,9 +645,9 @@ function _addPackageGroup( async function _addPeerDependencies( packages: Map, allDependencies: ReadonlyMap, - npmPackageJson: NpmRepositoryPackageJson, + npmPackageJson: PackageMetadata, workspaceRoot: string, - fetchMetadata: (name: string) => Promise, + registryClient: RegistryClient, logger: logging.LoggerApi, ): Promise { const maybePackage = packages.get(npmPackageJson.name); @@ -619,8 +657,7 @@ async function _addPeerDependencies( const distTags = npmPackageJson['dist-tags'] ?? {}; const version = distTags[maybePackage] || maybePackage; - const versions = npmPackageJson.versions ?? {}; - const packageJson = versions[version]; + const packageJson = await registryClient.getManifest(npmPackageJson.name, version); if (!packageJson) { return; } @@ -638,20 +675,14 @@ async function _addPeerDependencies( } else { const packageJsonRange = allDependencies.get(peer); if (packageJsonRange) { - const peerMetadata = await fetchMetadata(peer); + const peerMetadata = await registryClient.getMetadata(peer); if (peerMetadata) { - const packageVersionsNonDeprecated: string[] = []; - const packageVersionsDeprecated: string[] = []; - for (const [v, { deprecated }] of Object.entries(peerMetadata.versions ?? {})) { - if (deprecated) { - packageVersionsDeprecated.push(v); - } else { - packageVersionsNonDeprecated.push(v); - } - } - const resolvedInstalledVersion = - semver.maxSatisfying(packageVersionsNonDeprecated, packageJsonRange) ?? - semver.maxSatisfying(packageVersionsDeprecated, packageJsonRange); + const resolvedInstalledVersion = await getSatisfyingVersion( + registryClient, + peer, + peerMetadata.versions, + packageJsonRange, + ); if (resolvedInstalledVersion && semver.satisfies(resolvedInstalledVersion, range)) { continue; @@ -684,6 +715,7 @@ function isPkgFromRegistry(name: string, specifier: string): boolean { export async function resolveUserUpdatePlan( options: UpdateResolverOptions, + packageManager: PackageManager, logger: logging.LoggerApi, ): Promise { const workspaceRoot = options.workspaceRoot ?? process.cwd(); @@ -733,25 +765,12 @@ export async function resolveUserUpdatePlan( const usingYarn = options.packageManager === 'yarn'; const packages = _buildPackageList(options, npmDeps, logger); - const npmPackageJsonMap = new Map(); + const registryClient = new RegistryClient(packageManager, logger); const getOrFetchPackageMetadata = async ( packageName: string, - ): Promise => { - let metadata = npmPackageJsonMap.get(packageName); - if (!metadata) { - const raw = await getNpmPackageJson(packageName, logger, { - registry: options.registry, - usingYarn, - verbose: options.verbose, - }); - if (raw.name) { - metadata = raw as NpmRepositoryPackageJson; - npmPackageJsonMap.set(packageName, metadata); - } - } - - return metadata ?? null; + ): Promise => { + return registryClient.getMetadata(packageName); }; if (packages.size === 0) { @@ -772,11 +791,16 @@ export async function resolveUserUpdatePlan( const metadata = await getOrFetchPackageMetadata(name); const spec = packages.get(name); if (metadata && spec) { - const resolvedVersion = resolvePackageVersion(metadata, spec, !!options.next); + const resolvedVersion = await resolvePackageVersion( + registryClient, + metadata, + spec, + !!options.next, + ); if (resolvedVersion) { packages.set(name, resolvedVersion as VersionRange); } - _addPackageGroup(packages, npmDeps, metadata, logger); + await _addPackageGroup(packages, npmDeps, metadata, registryClient, logger); } } } while (packages.size > lastGroupSize); @@ -785,7 +809,12 @@ export async function resolveUserUpdatePlan( const metadata = await getOrFetchPackageMetadata(name); const spec = packages.get(name); if (metadata && spec) { - const resolvedVersion = resolvePackageVersion(metadata, spec, !!options.next); + const resolvedVersion = await resolvePackageVersion( + registryClient, + metadata, + spec, + !!options.next, + ); if (resolvedVersion) { packages.set(name, resolvedVersion as VersionRange); } @@ -794,7 +823,7 @@ export async function resolveUserUpdatePlan( npmDeps, metadata, workspaceRoot, - getOrFetchPackageMetadata, + registryClient, logger, ); } @@ -802,25 +831,31 @@ export async function resolveUserUpdatePlan( } while (packages.size > lastPackagesSize); } - const packageInfoMap = new Map(); - for (const depName of npmDeps.keys()) { - const isUpdating = packages.has(depName); - const localPkgJson = getInstalledPackageJson(depName, workspaceRoot); - - if (isUpdating || !localPkgJson) { - const metadata = await getOrFetchPackageMetadata(depName); - if (metadata) { - packageInfoMap.set( - depName, - _buildPackageInfo(packages, npmDeps, metadata, workspaceRoot, logger), - ); - } else { - packageInfoMap.set(depName, _buildLocalPackageInfo(depName, npmDeps, workspaceRoot)); + const packageInfoEntries = await Promise.all( + Array.from(npmDeps.keys(), async (depName) => { + const isUpdating = packages.has(depName); + const localPkgJson = getInstalledPackageJson(depName, workspaceRoot); + + if (isUpdating || !localPkgJson) { + const metadata = await getOrFetchPackageMetadata(depName); + if (metadata) { + const info = await _buildPackageInfo( + packages, + npmDeps, + metadata, + workspaceRoot, + registryClient, + logger, + ); + + return [depName, info] as const; + } } - } else { - packageInfoMap.set(depName, _buildLocalPackageInfo(depName, npmDeps, workspaceRoot)); - } - } + + return [depName, _buildLocalPackageInfo(depName, npmDeps, workspaceRoot)] as const; + }), + ); + const packageInfoMap = new Map(packageInfoEntries); const packagesToUpdate = new Map(); const migrationsToRun: { package: string; collection: string; from: string; to: string }[] = []; @@ -852,22 +887,23 @@ export async function resolveUserUpdatePlan( packagesToUpdate, migrationsToRun, packageInfoMap, + registryClient, }; } -export function printUpdateUsageMessage( +export async function printUpdateUsageMessage( infoMap: Map, + registryClient: RegistryClient, logger: logging.LoggerApi, next = false, -) { +): Promise { const packageGroups = new Map(); - const packagesToUpdate = [...infoMap.entries()] - .map(([name, info]) => { + const mappedPackages = await Promise.all( + Array.from(infoMap.entries(), async ([name, info]) => { const distTags = info.npmPackageJson['dist-tags'] ?? {}; let tag = next ? (distTags['next'] ? 'next' : 'latest') : 'latest'; let version = distTags[tag] ?? info.installed.version; - const versions = info.npmPackageJson.versions ?? {}; - let target = versions[version]; + const versions = info.npmPackageJson.versions ?? []; const versionDiff = semver.diff(info.installed.version, version); if ( @@ -883,18 +919,19 @@ export function printUpdateUsageMessage( installedMajorVersion < toInstallMajorVersion - 1 ) { const nextMajorVersion = `${installedMajorVersion + 1}.`; - const nextMajorVersions = Object.keys(versions) + const nextMajorVersions = versions .filter((v) => v.startsWith(nextMajorVersion)) .sort((a, b) => (a > b ? -1 : 1)); if (nextMajorVersions.length) { version = nextMajorVersions[0]; - target = versions[version]; tag = ''; } } } + const target = info.target?.packageJson || (await registryClient.getManifest(name, version)); + return { name, info, @@ -902,21 +939,25 @@ export function printUpdateUsageMessage( tag, target, }; - }) + }), + ); + + const packagesToUpdate = mappedPackages .filter( ({ info, version, target }) => target?.['ng-update'] && semver.compare(info.installed.version, version) < 0, ) .map(({ name, info, version, tag, target }) => { // Look for packageGroup. - const ngUpdate = target['ng-update']; + const ngUpdate = target?.['ng-update'] as Record | undefined; const packageGroup = ngUpdate?.['packageGroup']; if (packageGroup) { const packageGroupNames = Array.isArray(packageGroup) ? packageGroup : Object.keys(packageGroup); const packageGroupName = - ngUpdate?.['packageGroupName'] || packageGroupNames.find((n) => infoMap.has(n)); + (ngUpdate?.['packageGroupName'] as string | undefined) || + packageGroupNames.find((n) => infoMap.has(n)); if (packageGroupName) { if (packageGroups.has(name)) { diff --git a/packages/angular/cli/src/commands/update/update-resolver_spec.ts b/packages/angular/cli/src/commands/update/update-resolver_spec.ts index 6953b9817906..ae410765bd4b 100644 --- a/packages/angular/cli/src/commands/update/update-resolver_spec.ts +++ b/packages/angular/cli/src/commands/update/update-resolver_spec.ts @@ -7,11 +7,14 @@ */ import { logging } from '@angular-devkit/core'; -import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; +import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from 'node:fs'; import { tmpdir } from 'node:os'; import * as path from 'node:path'; import * as semver from 'semver'; +import type { PackageManager, PackageManifest } from '../../package-managers'; import { + RegistryClient, + UpdateResolverOptions, angularMajorCompatGuarantee, applyUpdatePlan, resolveUserUpdatePlan, @@ -47,6 +50,127 @@ describe('UpdateResolver', () => { rmSync(tempRoot, { recursive: true, force: true }); }); + const MOCK_REGISTRY: Record< + string, + { + metadata: { name: string; 'dist-tags': Record; versions: string[] }; + manifests: Record; + } + > = { + '@angular-devkit-tests/update-base': { + metadata: { + name: '@angular-devkit-tests/update-base', + 'dist-tags': { latest: '1.1.0' }, + versions: ['1.0.0', '1.1.0'], + }, + manifests: { + '1.0.0': { name: '@angular-devkit-tests/update-base', version: '1.0.0' }, + '1.1.0': { name: '@angular-devkit-tests/update-base', version: '1.1.0' }, + }, + }, + '@angular-devkit-tests/update-peer-dependencies-angular-5': { + metadata: { + name: '@angular-devkit-tests/update-peer-dependencies-angular-5', + 'dist-tags': { latest: '1.0.0' }, + versions: ['1.0.0'], + }, + manifests: { + '1.0.0': { + name: '@angular-devkit-tests/update-peer-dependencies-angular-5', + version: '1.0.0', + peerDependencies: { + '@angular/core': '^5.0.0', + }, + }, + }, + }, + '@angular-devkit-tests/update-package-group-1': { + metadata: { + name: '@angular-devkit-tests/update-package-group-1', + 'dist-tags': { latest: '1.2.0' }, + versions: ['1.0.0', '1.2.0'], + }, + manifests: { + '1.0.0': { name: '@angular-devkit-tests/update-package-group-1', version: '1.0.0' }, + '1.2.0': { + name: '@angular-devkit-tests/update-package-group-1', + version: '1.2.0', + 'ng-update': { + packageGroup: { + '@angular-devkit-tests/update-package-group-1': '', + '@angular-devkit-tests/update-package-group-2': '^2', + }, + }, + }, + }, + }, + '@angular-devkit-tests/update-package-group-2': { + metadata: { + name: '@angular-devkit-tests/update-package-group-2', + 'dist-tags': { latest: '2.0.0' }, + versions: ['1.0.0', '2.0.0'], + }, + manifests: { + '1.0.0': { name: '@angular-devkit-tests/update-package-group-2', version: '1.0.0' }, + '2.0.0': { + name: '@angular-devkit-tests/update-package-group-2', + version: '2.0.0', + 'ng-update': { + packageGroup: { + '@angular-devkit-tests/update-package-group-1': '^1', + '@angular-devkit-tests/update-package-group-2': '', + }, + }, + }, + }, + }, + '@angular/core': { + metadata: { + name: '@angular/core', + 'dist-tags': { latest: '6.0.0' }, + versions: ['5.1.0', '6.0.0'], + }, + manifests: { + '5.1.0': { name: '@angular/core', version: '5.1.0' }, + '6.0.0': { name: '@angular/core', version: '6.0.0' }, + }, + }, + 'rxjs': { + metadata: { + name: 'rxjs', + 'dist-tags': { latest: '5.5.0' }, + versions: ['5.5.0'], + }, + manifests: { + '5.5.0': { name: 'rxjs', version: '5.5.0' }, + }, + }, + 'zone.js': { + metadata: { + name: 'zone.js', + 'dist-tags': { latest: '0.8.26' }, + versions: ['0.8.26'], + }, + manifests: { + '0.8.26': { name: 'zone.js', version: '0.8.26' }, + }, + }, + }; + + async function resolvePlan(options: UpdateResolverOptions) { + const mockPackageManager = { + name: 'npm', + async getRegistryMetadata(packageName: string) { + return MOCK_REGISTRY[packageName]?.metadata ?? null; + }, + async getRegistryManifest(packageName: string, version: string) { + return MOCK_REGISTRY[packageName]?.manifests[version] ?? null; + }, + } as unknown as PackageManager; + + return resolveUserUpdatePlan(options, mockPackageManager, logger); + } + function createMockWorkspace( packageJson: Record, nodeModules: { [name: string]: { version: string; manifest?: Record } } = {}, @@ -70,13 +194,10 @@ describe('UpdateResolver', () => { }, }); - const plan = await resolveUserUpdatePlan( - { - packages: [], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: [], + workspaceRoot: tempRoot, + }); expect(plan.packagesToUpdate.size).toBe(0); }); @@ -95,13 +216,10 @@ describe('UpdateResolver', () => { }, ); - const plan = await resolveUserUpdatePlan( - { - packages: ['@angular-devkit-tests/update-base'], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: ['@angular-devkit-tests/update-base'], + workspaceRoot: tempRoot, + }); expect(plan.packagesToUpdate.get('@angular-devkit-tests/update-base')).toBe('1.1.0'); }); @@ -125,13 +243,10 @@ describe('UpdateResolver', () => { }, ); - const plan = await resolveUserUpdatePlan( - { - packages: ['@angular/core@^6.0.0'], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: ['@angular/core@^6.0.0'], + workspaceRoot: tempRoot, + }); expect(plan.packagesToUpdate.get('@angular/core')?.[0]).toBe('6'); }); @@ -151,13 +266,10 @@ describe('UpdateResolver', () => { }, ); - const plan = await resolveUserUpdatePlan( - { - packages: ['@angular-devkit-tests/update-package-group-1'], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: ['@angular-devkit-tests/update-package-group-1'], + workspaceRoot: tempRoot, + }); expect(plan.packagesToUpdate.get('@angular-devkit-tests/update-package-group-1')).toBe('1.2.0'); expect(plan.packagesToUpdate.get('@angular-devkit-tests/update-package-group-2')).toBe('2.0.0'); @@ -182,13 +294,10 @@ describe('UpdateResolver', () => { JSON.stringify({ name: '@angular-devkit-tests/update-base', version: '1.0.0' }, null, 2), ); - const plan = await resolveUserUpdatePlan( - { - packages: ['@angular-devkit-tests/update-base'], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: ['@angular-devkit-tests/update-base'], + workspaceRoot: tempRoot, + }); await applyUpdatePlan(tempRoot, plan, logger); @@ -214,13 +323,10 @@ describe('UpdateResolver', () => { JSON.stringify({ name: '@angular-devkit-tests/update-base', version: '1.0.0' }, null, 2), ); - const plan = await resolveUserUpdatePlan( - { - packages: ['@angular-devkit-tests/update-base'], - workspaceRoot: tempRoot, - }, - logger, - ); + const plan = await resolvePlan({ + packages: ['@angular-devkit-tests/update-base'], + workspaceRoot: tempRoot, + }); await applyUpdatePlan(tempRoot, plan, logger); @@ -228,3 +334,91 @@ describe('UpdateResolver', () => { expect(result.endsWith('}')).toBeTrue(); }); }); + +describe('RegistryClient', () => { + const logger = new logging.NullLogger(); + + it('should cache metadata requests', async () => { + let callCount = 0; + const mockPackageManager = { + async getRegistryMetadata() { + callCount++; + + return { name: 'test-pkg', 'dist-tags': {}, versions: [] }; + }, + } as unknown as PackageManager; + + const client = new RegistryClient(mockPackageManager, logger); + const m1 = await client.getMetadata('test-pkg'); + const m2 = await client.getMetadata('test-pkg'); + + expect(callCount).toBe(1); + expect(m1).toEqual(m2); + }); + + it('should evict metadata requests from cache upon failure', async () => { + let callCount = 0; + const mockPackageManager = { + async getRegistryMetadata() { + callCount++; + if (callCount === 1) { + throw new Error('Transient error'); + } + + return { name: 'test-pkg', 'dist-tags': {}, versions: [] }; + }, + } as unknown as PackageManager; + + const client = new RegistryClient(mockPackageManager, logger); + + await expectAsync(client.getMetadata('test-pkg')).toBeRejectedWithError('Transient error'); + const m2 = await client.getMetadata('test-pkg'); + + expect(callCount).toBe(2); + expect(m2).not.toBeNull(); + expect(m2?.name).toBe('test-pkg'); + }); + + it('should cache manifest requests', async () => { + let callCount = 0; + const mockPackageManager = { + async getRegistryManifest() { + callCount++; + + return { name: 'test-pkg', version: '1.0.0' }; + }, + } as unknown as PackageManager; + + const client = new RegistryClient(mockPackageManager, logger); + const m1 = await client.getManifest('test-pkg', '1.0.0'); + const m2 = await client.getManifest('test-pkg', '1.0.0'); + + expect(callCount).toBe(1); + expect(m1).toEqual(m2); + }); + + it('should evict manifest requests from cache upon failure', async () => { + let callCount = 0; + const mockPackageManager = { + async getRegistryManifest() { + callCount++; + if (callCount === 1) { + throw new Error('Transient error'); + } + + return { name: 'test-pkg', version: '1.0.0' }; + }, + } as unknown as PackageManager; + + const client = new RegistryClient(mockPackageManager, logger); + + await expectAsync(client.getManifest('test-pkg', '1.0.0')).toBeRejectedWithError( + 'Transient error', + ); + const m2 = await client.getManifest('test-pkg', '1.0.0'); + + expect(callCount).toBe(2); + expect(m2).not.toBeNull(); + expect(m2?.version).toBe('1.0.0'); + }); +}); diff --git a/packages/angular/cli/src/package-managers/package-metadata.ts b/packages/angular/cli/src/package-managers/package-metadata.ts index 45c38ca2602b..b1e97e426eab 100644 --- a/packages/angular/cli/src/package-managers/package-metadata.ts +++ b/packages/angular/cli/src/package-managers/package-metadata.ts @@ -47,7 +47,7 @@ export interface NgUpdate { /** * A list of package names that should be updated together. */ - packageGroup?: string[]; + packageGroup?: string[] | Record; } /** diff --git a/packages/angular/cli/src/utilities/package-metadata.ts b/packages/angular/cli/src/utilities/package-metadata.ts deleted file mode 100644 index 05a739e898ae..000000000000 --- a/packages/angular/cli/src/utilities/package-metadata.ts +++ /dev/null @@ -1,247 +0,0 @@ -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.dev/license - */ - -import { logging } from '@angular-devkit/core'; -import * as lockfile from '@yarnpkg/lockfile'; -import * as ini from 'ini'; -import { existsSync, readFileSync } from 'node:fs'; -import { homedir } from 'node:os'; -import * as path from 'node:path'; -import type { Manifest, Packument } from 'pacote'; - -export interface PackageMetadata extends Packument, NgPackageManifestProperties { - tags: Record; - versions: Record; -} - -export interface NpmRepositoryPackageJson extends PackageMetadata { - requestedName?: string; -} - -export type NgAddSaveDependency = 'dependencies' | 'devDependencies' | boolean; - -export interface PackageIdentifier { - type: 'git' | 'tag' | 'version' | 'range' | 'file' | 'directory' | 'remote'; - name: string; - scope: string | null; - registry: boolean; - raw: string; - fetchSpec: string; - rawSpec: string; -} - -export interface NgPackageManifestProperties { - 'ng-add'?: { - save?: NgAddSaveDependency; - }; - 'ng-update'?: { - migrations?: string; - packageGroup?: string[] | Record; - packageGroupName?: string; - requirements?: string[] | Record; - }; -} - -export interface PackageManifest extends Manifest, NgPackageManifestProperties { - deprecated?: boolean; - peerDependenciesMeta?: Record; -} - -type PackageManagerOptions = Record; - -let npmrc: PackageManagerOptions; -const npmPackageJsonCache = new Map>>(); - -function ensureNpmrc(logger: logging.LoggerApi, usingYarn: boolean, verbose: boolean): void { - if (!npmrc) { - try { - npmrc = readOptions(logger, false, verbose); - } catch {} - - if (usingYarn) { - try { - npmrc = { ...npmrc, ...readOptions(logger, true, verbose) }; - } catch {} - } - } -} - -function readOptions( - logger: logging.LoggerApi, - yarn = false, - showPotentials = false, -): PackageManagerOptions { - const cwd = process.cwd(); - const baseFilename = yarn ? 'yarnrc' : 'npmrc'; - const dotFilename = '.' + baseFilename; - - let globalPrefix: string; - if (process.env.PREFIX) { - globalPrefix = process.env.PREFIX; - } else { - globalPrefix = path.dirname(process.execPath); - if (process.platform !== 'win32') { - globalPrefix = path.dirname(globalPrefix); - } - } - - const defaultConfigLocations = [ - (!yarn && process.env.NPM_CONFIG_GLOBALCONFIG) || path.join(globalPrefix, 'etc', baseFilename), - (!yarn && process.env.NPM_CONFIG_USERCONFIG) || path.join(homedir(), dotFilename), - ]; - - const projectConfigLocations: string[] = [path.join(cwd, dotFilename)]; - if (yarn) { - const root = path.parse(cwd).root; - for (let curDir = path.dirname(cwd); curDir && curDir !== root; curDir = path.dirname(curDir)) { - projectConfigLocations.unshift(path.join(curDir, dotFilename)); - } - } - - if (showPotentials) { - logger.info(`Locating potential ${baseFilename} files:`); - } - - let rcOptions: PackageManagerOptions = {}; - for (const location of [...defaultConfigLocations, ...projectConfigLocations]) { - if (existsSync(location)) { - if (showPotentials) { - logger.info(`Trying '${location}'...found.`); - } - - const data = readFileSync(location, 'utf8'); - // Normalize RC options that are needed by 'npm-registry-fetch'. - // See: https://github.com/npm/npm-registry-fetch/blob/ebddbe78a5f67118c1f7af2e02c8a22bcaf9e850/index.js#L99-L126 - const rcConfig: PackageManagerOptions = yarn ? lockfile.parse(data) : ini.parse(data); - - rcOptions = normalizeOptions(rcConfig, location, rcOptions); - } - } - - const envVariablesOptions: PackageManagerOptions = {}; - for (const [key, value] of Object.entries(process.env)) { - if (!value) { - continue; - } - - let normalizedName = key.toLowerCase(); - if (normalizedName.startsWith('npm_config_')) { - normalizedName = normalizedName.substring(11); - } else if (yarn && normalizedName.startsWith('yarn_')) { - normalizedName = normalizedName.substring(5); - } else { - continue; - } - - if ( - normalizedName === 'registry' && - rcOptions['registry'] && - value === 'https://registry.yarnpkg.com' && - process.env['npm_config_user_agent']?.includes('yarn') - ) { - // When running `ng update` using yarn (`yarn ng update`), yarn will set the `npm_config_registry` env variable to `https://registry.yarnpkg.com` - // even when an RC file is present with a different repository. - // This causes the registry specified in the RC to always be overridden with the below logic. - continue; - } - - normalizedName = normalizedName.replace(/(?!^)_/g, '-'); // don't replace _ at the start of the key.s - envVariablesOptions[normalizedName] = value; - } - - return normalizeOptions(envVariablesOptions, undefined, rcOptions); -} - -function normalizeOptions( - rawOptions: PackageManagerOptions, - location = process.cwd(), - existingNormalizedOptions: PackageManagerOptions = {}, -): PackageManagerOptions { - const options = { ...existingNormalizedOptions }; - - for (const [key, value] of Object.entries(rawOptions)) { - let substitutedValue = value; - - // Substitute any environment variable references. - if (typeof value === 'string') { - substitutedValue = value.replace(/\$\{([^}]+)\}/, (_, name) => process.env[name] || ''); - } - - switch (key) { - case 'noproxy': - case 'no-proxy': - options['noProxy'] = substitutedValue; - break; - case 'maxsockets': - options['maxSockets'] = substitutedValue; - break; - case 'https-proxy': - case 'proxy': - options['proxy'] = substitutedValue; - break; - case 'strict-ssl': - options['strictSSL'] = substitutedValue; - break; - case 'local-address': - options['localAddress'] = substitutedValue; - break; - case 'cafile': - if (typeof substitutedValue === 'string') { - const cafile = path.resolve(path.dirname(location), substitutedValue); - try { - options['ca'] = readFileSync(cafile, 'utf8').replace(/\r?\n/g, '\n'); - } catch {} - } - break; - case 'before': - options['before'] = - typeof substitutedValue === 'string' ? new Date(substitutedValue) : substitutedValue; - break; - default: - options[key] = substitutedValue; - break; - } - } - - return options; -} - -export async function getNpmPackageJson( - packageName: string, - logger: logging.LoggerApi, - options: { - registry?: string; - usingYarn?: boolean; - verbose?: boolean; - } = {}, -): Promise> { - const cachedResponse = npmPackageJsonCache.get(packageName); - if (cachedResponse) { - return cachedResponse; - } - - const { usingYarn = false, verbose = false, registry } = options; - ensureNpmrc(logger, usingYarn, verbose); - const { packument } = await import('pacote'); - const response = packument(packageName, { - fullMetadata: true, - ...npmrc, - ...(registry ? { registry } : {}), - }).then((response) => { - // While pacote type declares that versions cannot be undefined this is not the case. - if (!response.versions) { - response.versions = {}; - } - - return response; - }); - - npmPackageJsonCache.set(packageName, response); - - return response; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 063dfb959e7c..f308063f470a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -66,7 +66,7 @@ importers: version: 22.1.0-next.0(@angular/core@22.1.0-next.0(@angular/compiler@22.1.0-next.0)(rxjs@7.8.2)(zone.js@0.16.2))(rxjs@7.8.2) '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@10.2.2) '@bazel/bazelisk': specifier: 1.28.1 version: 1.28.1 @@ -78,13 +78,13 @@ importers: version: 0.28.0 '@eslint/compat': specifier: 2.1.0 - version: 2.1.0(eslint@10.5.0(jiti@2.7.0)) + version: 2.1.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint/eslintrc': specifier: 3.3.5 - version: 3.3.5 + version: 3.3.5(supports-color@10.2.2) '@eslint/js': specifier: 10.0.1 - version: 10.0.1(eslint@10.5.0(jiti@2.7.0)) + version: 10.0.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@rollup/plugin-alias': specifier: ^6.0.0 version: 6.0.0(rollup@4.62.0) @@ -102,10 +102,10 @@ importers: version: 4.62.0 '@stylistic/eslint-plugin': specifier: ^5.0.0 - version: 5.10.0(eslint@10.5.0(jiti@2.7.0)) + version: 5.10.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@tony.ganchev/eslint-plugin-header': specifier: ~3.4.0 - version: 3.4.4(eslint@10.5.0(jiti@2.7.0)) + version: 3.4.4(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@types/babel__core': specifier: 7.20.5 version: 7.20.5 @@ -121,9 +121,6 @@ importers: '@types/http-proxy': specifier: ^1.17.4 version: 1.17.17 - '@types/ini': - specifier: ^4.0.0 - version: 4.1.1 '@types/jasmine': specifier: ~6.0.0 version: 6.0.0 @@ -148,9 +145,6 @@ importers: '@types/npm-package-arg': specifier: ^6.1.0 version: 6.1.4 - '@types/pacote': - specifier: ^11.1.3 - version: 11.1.8 '@types/picomatch': specifier: ^4.0.0 version: 4.0.3 @@ -169,15 +163,12 @@ importers: '@types/yargs-parser': specifier: ^21.0.0 version: 21.0.3 - '@types/yarnpkg__lockfile': - specifier: ^1.1.5 - version: 1.1.9 '@typescript-eslint/eslint-plugin': specifier: 8.61.0 - version: 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + version: 8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/parser': specifier: 8.61.0 - version: 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + version: 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) ajv: specifier: 8.20.0 version: 8.20.0 @@ -192,16 +183,16 @@ importers: version: 0.28.1 eslint: specifier: 10.5.0 - version: 10.5.0(jiti@2.7.0) + version: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-config-prettier: specifier: 10.1.8 - version: 10.1.8(eslint@10.5.0(jiti@2.7.0)) + version: 10.1.8(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) eslint-plugin-import: specifier: 2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)) + version: 2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) express: specifier: 5.2.1 - version: 5.2.1 + version: 5.2.1(supports-color@10.2.2) fast-glob: specifier: 3.3.3 version: 3.3.3 @@ -213,7 +204,7 @@ importers: version: 1.18.1 http-proxy-middleware: specifier: 4.1.1 - version: 4.1.1 + version: 4.1.1(supports-color@10.2.2) husky: specifier: 9.1.7 version: 9.1.7 @@ -231,19 +222,19 @@ importers: version: 7.0.0 karma: specifier: ~6.4.0 - version: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + version: 6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) karma-chrome-launcher: specifier: ~3.2.0 version: 3.2.0 karma-coverage: specifier: ~2.2.0 - version: 2.2.1 + version: 2.2.1(supports-color@10.2.2) karma-jasmine: specifier: ~5.1.0 - version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + version: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)) karma-jasmine-html-reporter: specifier: ~2.2.0 - version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + version: 2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)) karma-source-map-support: specifier: 1.4.0 version: 1.4.0 @@ -291,10 +282,10 @@ importers: version: 1.10.0 verdaccio: specifier: 6.7.2 - version: 6.7.2(encoding@0.1.13) + version: 6.7.2(encoding@0.1.13)(supports-color@10.2.2) verdaccio-auth-memory: specifier: ^13.0.0 - version: 13.0.2 + version: 13.0.2(supports-color@10.2.2) zone.js: specifier: ^0.16.0 version: 0.16.2 @@ -318,7 +309,7 @@ importers: version: 4.1.9(vitest@4.1.9) browser-sync: specifier: 3.0.4 - version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + version: 3.0.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) istanbul-lib-instrument: specifier: 6.0.3 version: 6.0.3 @@ -345,7 +336,7 @@ importers: version: link:../../angular_devkit/architect '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': specifier: 7.29.7 version: 7.29.7 @@ -369,7 +360,7 @@ importers: version: 0.28.1 https-proxy-agent: specifier: 9.1.0 - version: 9.1.0 + version: 9.1.0(supports-color@10.2.2) jsonc-parser: specifier: 3.3.1 version: 3.3.1 @@ -471,15 +462,9 @@ importers: '@schematics/angular': specifier: workspace:0.0.0-PLACEHOLDER version: link:../../schematics/angular - '@yarnpkg/lockfile': - specifier: 1.1.0 - version: 1.1.0 algoliasearch: specifier: 5.54.0 version: 5.54.0 - ini: - specifier: 7.0.0 - version: 7.0.0 jsonc-parser: specifier: 3.3.1 version: 3.3.1 @@ -489,9 +474,6 @@ importers: npm-package-arg: specifier: 14.0.0 version: 14.0.0 - pacote: - specifier: 21.5.1 - version: 21.5.1 parse5-html-rewriting-stream: specifier: 8.0.1 version: 8.0.1 @@ -579,7 +561,7 @@ importers: version: link:../../angular/build '@babel/core': specifier: 7.29.7 - version: 7.29.7 + version: 7.29.7(supports-color@10.2.2) '@babel/generator': specifier: 7.29.7 version: 7.29.7 @@ -597,7 +579,7 @@ importers: version: 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-runtime': specifier: 7.29.7 - version: 7.29.7(@babel/core@7.29.7) + version: 7.29.7(@babel/core@7.29.7)(supports-color@10.2.2) '@babel/preset-env': specifier: 7.29.7 version: 7.29.7(@babel/core@7.29.7) @@ -633,7 +615,7 @@ importers: version: 0.28.1 http-proxy-middleware: specifier: 4.1.1 - version: 4.1.1 + version: 4.1.1(supports-color@10.2.2) istanbul-lib-instrument: specifier: 6.0.3 version: 6.0.3 @@ -714,7 +696,7 @@ importers: version: 8.0.3(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) webpack-dev-server: specifier: 5.2.5 - version: 5.2.5(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) + version: 5.2.5(bufferutil@4.1.0)(supports-color@10.2.2)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) webpack-merge: specifier: 6.0.1 version: 6.0.1 @@ -727,7 +709,7 @@ importers: version: link:../../angular/ssr browser-sync: specifier: 3.0.4 - version: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + version: 3.0.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) ng-packagr: specifier: 22.1.0-next.2 version: 22.1.0-next.2(@angular/compiler-cli@22.1.0-next.0(@angular/compiler@22.1.0-next.0)(typescript@6.0.3))(tslib@2.8.1)(typescript@6.0.3) @@ -2409,10 +2391,6 @@ packages: '@firebase/webchannel-wrapper@1.0.6': resolution: {integrity: sha512-Vr/Mqu79dMwGRAyGbJ4uN4+BtXB3/mRTdzetD1daWNeG8QaWuzhhbG77GltO5c0yYmYls8i250iX73624GJd7Q==} - '@gar/promise-retry@1.0.3': - resolution: {integrity: sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA==} - engines: {node: ^20.17.0 || >=22.9.0} - '@glideapps/ts-necessities@2.2.3': resolution: {integrity: sha512-gXi0awOZLHk3TbW55GZLCPP6O+y/b5X1pBXKBVckFONSwF1z1E5ND2BGJsghQFah+pW7pkkyFb2VhUQI2qhL5w==} @@ -2638,10 +2616,6 @@ packages: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': - resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} - engines: {node: '>=18.0.0'} - '@istanbuljs/schema@0.1.6': resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} engines: {node: '>=8'} @@ -3015,43 +2989,6 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@npmcli/agent@4.0.2': - resolution: {integrity: sha512-EUEuWAxnL07Sp5/iC/1X6Xj+XThUvnbei9zfRWZdEXa7lss9RTHMhAHBeg+MZ5To9s/gGaSI+UwZTPdYMvKSeg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/fs@5.0.0': - resolution: {integrity: sha512-7OsC1gNORBEawOa5+j2pXN9vsicaIOH5cPXxoR6fJOmH6/EXpJB2CajXOu1fPRFun2m1lktEFX11+P89hqO/og==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/git@7.0.2': - resolution: {integrity: sha512-oeolHDjExNAJAnlYP2qzNjMX/Xi9bmu78C9dIGr4xjobrSKbuMYCph8lTzn4vnW3NjIqVmw/f8BCfouqyJXlRg==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/installed-package-contents@4.0.0': - resolution: {integrity: sha512-yNyAdkBxB72gtZ4GrwXCM0ZUedo9nIbOMKfGjt6Cu6DXf0p8y1PViZAKDC8q8kv/fufx0WTjRBdSlyrvnP7hmA==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - - '@npmcli/node-gyp@5.0.0': - resolution: {integrity: sha512-uuG5HZFXLfyFKqg8QypsmgLQW7smiRjVc45bqD/ofZZcR/uxEjgQU8qDPv0s9TEeMUiAAU/GC5bR6++UdTirIQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/package-json@7.0.5': - resolution: {integrity: sha512-iVuTlG3ORq2iaVa1IWUxAO/jIp77tUKBhoMjuzYW2kL4MLN1bi/ofqkZ7D7OOwh8coAx1/S2ge0rMdGv8sLSOQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/promise-spawn@9.0.1': - resolution: {integrity: sha512-OLUaoqBuyxeTqUvjA3FZFiXUfYC1alp3Sa99gW3EUDz3tZ3CbXDdcZ7qWKBzicrJleIgucoWamWH1saAmH/l2Q==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/redact@4.0.0': - resolution: {integrity: sha512-gOBg5YHMfZy+TfHArfVogwgfBeQnKbbGo3pSUyK/gSI0AVu+pEiDVcKlQb0D8Mg1LNRZILZ6XG8I5dJ4KuAd9Q==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@npmcli/run-script@10.0.4': - resolution: {integrity: sha512-mGUWr1uMnf0le2TwfOZY4SFxZGXGfm4Jtay/nwAa2FLNAKXUoUwaGwBMNH36UHPtinWfTSJ3nqFQr0091CxVGg==} - engines: {node: ^20.17.0 || >=22.9.0} - '@octokit/auth-app@8.2.0': resolution: {integrity: sha512-vVjdtQQwomrZ4V46B9LaCsxsySxGoHsyw6IYBov/TqJVROrlYdyNgw5q6tQbB7KZt53v1l1W53RiqTvpzL907g==} engines: {node: '>= 20'} @@ -3796,30 +3733,6 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@sigstore/bundle@4.0.0': - resolution: {integrity: sha512-NwCl5Y0V6Di0NexvkTqdoVfmjTaQwoLM236r89KEojGmq/jMls8S+zb7yOwAPdXvbwfKDlP+lmXgAL4vKSQT+A==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/core@3.2.1': - resolution: {integrity: sha512-qRsxPnCrbC/puegGxKuynfnxgLiHqWStrSjxkoB4YKqq3Z3s4cyZyj42ZdWFAEblNP65C+rBH8EuREHIXoi83g==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/protobuf-specs@0.5.1': - resolution: {integrity: sha512-/ScWUhhoFasJsSRGTVBwId1loQjjnjAfE4djL6ZhrXRpNCmPTnUKF5Jokd58ILseOMjzET3UrMOtJPS9sYeI0g==} - engines: {node: ^18.17.0 || >=20.5.0} - - '@sigstore/sign@4.1.1': - resolution: {integrity: sha512-Hf4xglukg0XXQ2RiD5vSoLjdPe8OBUPA8XeVjUObheuDcWdYWrnH/BNmxZCzkAy68MzmNCxXLeurJvs6hcP2OQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/tuf@4.0.2': - resolution: {integrity: sha512-TCAzTy0xzdP79EnxSjq9KQ3eaR7+FmudLC6eRKknVKZbV7ZNlGLClAAQb/HMNJ5n2OBNk2GT1tEmU0xuPr+SLQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - '@sigstore/verify@3.1.1': - resolution: {integrity: sha512-qv7+G3J2cc6wwFj3yKvXOamzqhMwSk1ogPGmhpS8iXllcPrJaIIBA+4HbttlHVu1pqWTdmaCH/WE7UOC51kdoA==} - engines: {node: ^20.17.0 || >=22.9.0} - '@simple-libs/child-process-utils@1.0.2': resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} engines: {node: '>=18'} @@ -3853,14 +3766,6 @@ packages: peerDependencies: eslint: '>=7.7.0' - '@tufjs/canonical-json@2.0.0': - resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} - engines: {node: ^16.14.0 || >=18.0.0} - - '@tufjs/models@4.1.0': - resolution: {integrity: sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww==} - engines: {node: ^20.17.0 || >=22.9.0} - '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} @@ -3945,9 +3850,6 @@ packages: '@types/http-proxy@1.17.17': resolution: {integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==} - '@types/ini@4.1.1': - resolution: {integrity: sha512-MIyNUZipBTbyUNnhvuXJTY7B6qNI78meck9Jbv3wk0OgNwRyOOVEKDutAkOs1snB/tx0FafyR6/SN4Ps0hZPeg==} - '@types/jasmine-reporters@2.5.3': resolution: {integrity: sha512-8aojAUdgdiD9VQbllBJb/9gny3lOjz9T5gyMcbYlKe6npwGVsarbr8v2JYSFJSZSuFYXcPVzFG2lLX3ib0j/DA==} @@ -3978,9 +3880,6 @@ packages: '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} - '@types/node-fetch@2.6.13': - resolution: {integrity: sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==} - '@types/node@22.19.20': resolution: {integrity: sha512-6tELRwSDYWW9EdZhbeZmYGZ1/7Djkt+Ah3/ScEYT9cDord7UJzasR/4D3VONg9tQI5CDp+/CZC1AXj2pCFOvpw==} @@ -3990,15 +3889,6 @@ packages: '@types/npm-package-arg@6.1.4': resolution: {integrity: sha512-vDgdbMy2QXHnAruzlv68pUtXCjmqUk3WrBAsRboRovsOmxbfn/WiYCjmecyKjGztnMps5dWp4Uq2prp+Ilo17Q==} - '@types/npm-registry-fetch@8.0.9': - resolution: {integrity: sha512-7NxvodR5Yrop3pb6+n8jhJNyzwOX0+6F+iagNEoi9u1CGxruYAwZD8pvGc9prIkL0+FdX5Xp0p80J9QPrGUp/g==} - - '@types/npmlog@7.0.0': - resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} - - '@types/pacote@11.1.8': - resolution: {integrity: sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q==} - '@types/parse-glob@3.0.32': resolution: {integrity: sha512-n4xmml2WKR12XeQprN8L/sfiVPa8FHS3k+fxp4kSr/PA2GsGUgFND+bvISJxM0y5QdvzNEGjEVU3eIrcKks/pA==} @@ -4050,9 +3940,6 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} - '@types/ssri@7.1.5': - resolution: {integrity: sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==} - '@types/stack-trace@0.0.33': resolution: {integrity: sha512-O7in6531Bbvlb2KEsJ0dq0CHZvc3iWSR5ZYMtvGgnHA56VgriAN/AU2LorfmcvAl2xc9N5fbCTRyMRRl8nd74g==} @@ -4321,10 +4208,6 @@ packages: resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} hasBin: true - abbrev@4.0.0: - resolution: {integrity: sha512-a1wflyaL0tHtJSmLSOVybYhy22vRih4eduhhrkcjgrWGnRfrZtovJ2FRjxuTtkkj47O/baf0R86QU5OuYpz8fA==} - engines: {node: ^20.17.0 || >=22.9.0} - abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} engines: {node: '>=6.5'} @@ -4749,10 +4632,6 @@ packages: resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} engines: {node: '>=6.0.0'} - cacache@20.0.4: - resolution: {integrity: sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA==} - engines: {node: ^20.17.0 || >=22.9.0} - cacheable-lookup@6.1.0: resolution: {integrity: sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==} engines: {node: '>=10.6.0'} @@ -4809,10 +4688,6 @@ packages: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} - chownr@3.0.0: - resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} - engines: {node: '>=18'} - chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -5531,9 +5406,6 @@ packages: resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} engines: {node: '>=12.0.0'} - exponential-backoff@3.1.3: - resolution: {integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==} - express-rate-limit@5.5.1: resolution: {integrity: sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==} @@ -5718,10 +5590,6 @@ packages: resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} engines: {node: '>=6 <7 || >=8'} - fs-minipass@3.0.3: - resolution: {integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} @@ -5943,10 +5811,6 @@ packages: resolution: {integrity: sha512-DeOnSPAvOndYKfw075gt8yZzQ7S2hNztw34zBTfhIzLhmBTswIBg5/y+pqu/VD5cYWm5goAFTusDmUEmKZ0PEQ==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - hosted-git-info@9.0.3: - resolution: {integrity: sha512-Hc+ghLoSt6QaYZUv0WBiIvmMDZuZZ7oaDvdH8MbfOO4lOsxdXLEvuC6ePoGs9H1X9oCLyq6+NVN0MKqD+ydxyg==} - engines: {node: ^20.17.0 || >=22.9.0} - hpack.js@2.1.6: resolution: {integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==} @@ -6060,10 +5924,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore-walk@8.0.0: - resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} - engines: {node: ^20.17.0 || >=22.9.0} - ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -6099,14 +5959,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ini@6.0.0: - resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - ini@7.0.0: - resolution: {integrity: sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w==} - engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - injection-js@2.6.1: resolution: {integrity: sha512-dbR5bdhi7TWDoCye9cByZqeg/gAfamm8Vu3G1KZOTYkOif8WkuM8CD0oeDPtZYMzT5YH76JAFB7bkmyY9OJi2A==} @@ -6453,10 +6305,6 @@ packages: json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - json-parse-even-better-errors@5.0.0: - resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} - engines: {node: ^20.17.0 || >=22.9.0} - json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -6715,10 +6563,6 @@ packages: resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} engines: {node: '>=18'} - make-fetch-happen@15.0.6: - resolution: {integrity: sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw==} - engines: {node: ^20.17.0 || >=22.9.0} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -6835,38 +6679,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - minipass-collect@2.0.1: - resolution: {integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==} - engines: {node: '>=16 || 14 >=14.17'} - - minipass-fetch@5.0.2: - resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - minipass-flush@1.0.7: - resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} - engines: {node: '>= 8'} - - minipass-pipeline@1.2.4: - resolution: {integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==} - engines: {node: '>=8'} - - minipass-sized@2.0.0: - resolution: {integrity: sha512-zSsHhto5BcUVM2m1LurnXY6M//cGhVaegT71OfOXoprxT6o780GZd792ea6FfrQkuU4usHZIUczAQMRUE2plzA==} - engines: {node: '>=8'} - - minipass@3.3.6: - resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} - engines: {node: '>=8'} - minipass@7.1.3: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - minizlib@3.1.0: - resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} - engines: {node: '>= 18'} - mitt@1.2.0: resolution: {integrity: sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==} @@ -7008,20 +6824,10 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-gyp@12.4.0: - resolution: {integrity: sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - node-releases@2.0.47: resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==} engines: {node: '>=18'} - nopt@9.0.0: - resolution: {integrity: sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} @@ -7030,38 +6836,10 @@ packages: resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} - npm-bundled@5.0.0: - resolution: {integrity: sha512-JLSpbzh6UUXIEoqPsYBvVNVmyrjVZ1fzEFbqxKkTJQkWBO3xFzFT+KDnSKQWwOQNbuWRwt5LSD6HOTLGIWzfrw==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-install-checks@8.0.0: - resolution: {integrity: sha512-ScAUdMpyzkbpxoNekQ3tNRdFI8SJ86wgKZSQZdUxT+bj0wVFpsEMWnkXP0twVe1gJyNF5apBWDJhhIbgrIViRA==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-normalize-package-bin@5.0.0: - resolution: {integrity: sha512-CJi3OS4JLsNMmr2u07OJlhcrPxCeOeP/4xq67aWNai6TNWWbTrlNDgl8NcFKVlcBKp18GPj+EzbNIgrBfZhsag==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-package-arg@13.0.2: - resolution: {integrity: sha512-IciCE3SY3uE84Ld8WZU23gAPPV9rIYod4F+rc+vJ7h7cwAJt9Vk6TVsK60ry7Uj3SRS3bqRRIGuTp9YVlk6WNA==} - engines: {node: ^20.17.0 || >=22.9.0} - npm-package-arg@14.0.0: resolution: {integrity: sha512-69XQh3k+dtGa1p+7RaR57IuG3rCko96xr/nUfN4yDYBXbTYICiWcOpsFKLN2GtGE9cyIljE+f1exnaYt9MvM+Q==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} - npm-packlist@10.0.4: - resolution: {integrity: sha512-uMW73iajD8hiH4ZBxEV3HC+eTnppIqwakjOYuvgddnalIw2lJguKviK1pcUJDlIWm1wSJkchpDZDSVVsZEYRng==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-pick-manifest@11.0.3: - resolution: {integrity: sha512-buzyCfeoGY/PxKqmBqn1IUJrZnUi1VVJTdSSRPGI60tJdUhUoSQFhs0zycJokDdOznQentgrpf8LayEHyyYlqQ==} - engines: {node: ^20.17.0 || >=22.9.0} - - npm-registry-fetch@19.1.1: - resolution: {integrity: sha512-TakBap6OM1w0H73VZVDf44iFXsOS3h+L4wVMXmbWOQroZgFhMch0juN6XSzBNlD965yIKvWg2dfu7NSiaYLxtw==} - engines: {node: ^20.17.0 || >=22.9.0} - nth-check@2.1.1: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} @@ -7177,10 +6955,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-map@7.0.4: - resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} - engines: {node: '>=18'} - p-queue@6.6.2: resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} engines: {node: '>=8'} @@ -7200,11 +6974,6 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pacote@21.5.1: - resolution: {integrity: sha512-KvcJ9iy3crysCsgqc4+PknH/w6jkrp8JN36mpZBPwNaDRwTfMZD37YzRazNstiZUOhuF5pno9f78n9mEJBavwg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - pako@0.2.9: resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==} @@ -7415,10 +7184,6 @@ packages: engines: {node: '>=14'} hasBin: true - proc-log@6.1.0: - resolution: {integrity: sha512-iG+GYldRf2BQ0UDUAd6JQ/RwzaQy6mXmsk/IzlYyal4A4SNFw54MeH4/tLkF4I5WoWG9SQwuqWzS99jaFQHBuQ==} - engines: {node: ^20.17.0 || >=22.9.0} - proc-log@7.0.0: resolution: {integrity: sha512-FYgfaA69XZ93zaXLoMNQ+ViDXGGBgR8aLh03txzcFhV+9xOXx7+8DLCULrKKpR9+GsH9ZfHm82aSUPpozX0Ztg==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -7894,10 +7659,6 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sigstore@4.1.1: - resolution: {integrity: sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w==} - engines: {node: ^20.17.0 || >=22.9.0} - slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -7910,10 +7671,6 @@ packages: resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} engines: {node: '>=20'} - smart-buffer@4.2.0: - resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} - engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} - socket.io-adapter@2.5.7: resolution: {integrity: sha512-e0LyK91f3cUxTmv95/KzoLg47+zF+s/sbxRGDNsyG4dmIP8ZSX8ax6byOxfJXeNNtS/8AZlfD+uP7gBeR7DLlg==} @@ -7932,14 +7689,6 @@ packages: sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} - socks-proxy-agent@8.0.5: - resolution: {integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==} - engines: {node: '>= 14'} - - socks@2.8.9: - resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} - engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} - sonic-boom@3.8.1: resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} @@ -7973,9 +7722,6 @@ packages: spdx-expression-parse@3.0.1: resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} - spdx-expression-parse@4.0.0: - resolution: {integrity: sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==} - spdx-expression-validate@2.0.0: resolution: {integrity: sha512-b3wydZLM+Tc6CFvaRDBOF9d76oGIHNCLYFeHbftFXUWjnfZWganmDmvtM5sm1cRwJc/VDBMLyGGrsLFd1vOxbg==} @@ -8008,10 +7754,6 @@ packages: resolution: {integrity: sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} - ssri@13.0.1: - resolution: {integrity: sha512-QUiRf1+u9wPTL/76GTYlKttDEBWV1ga9ZXW8BG6kfdeyyM8LGPix9gROyg9V2+P0xNyF3X2Go526xKFdMZrHSQ==} - engines: {node: ^20.17.0 || >=22.9.0} - stack-trace@0.0.10: resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} @@ -8147,10 +7889,6 @@ packages: tar-stream@3.2.0: resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} - tar@7.5.16: - resolution: {integrity: sha512-56adEpPMouktRlBLXiaYFFzZ/3+JXa8P9n7WbR+ibIjtviN55mEaOkiysCnPnWm+7kkui1Dn8J9l+g6zV8731w==} - engines: {node: '>=18'} - teeny-request@10.1.3: resolution: {integrity: sha512-5yDliI1uWkYPo7W+Zvrxg6YmoWuj5iC5EydewqrRTvc68nyMTZhlPPlLg6cptUGfbQAb+N9XDPDPzF6N081lug==} engines: {node: '>=18'} @@ -8326,10 +8064,6 @@ packages: resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} engines: {node: '>= 6.0.0'} - tuf-js@4.1.0: - resolution: {integrity: sha512-50QV99kCKH5P/Vs4E2Gzp7BopNV+KzTXqWeaxrfu5IQJBOULRsTIS9seSsOVT8ZnGXzCyx55nYWAi4qJzpZKEQ==} - engines: {node: ^20.17.0 || >=22.9.0} - tunnel-agent@0.6.0: resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} @@ -8493,10 +8227,6 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true - validate-npm-package-name@7.0.2: - resolution: {integrity: sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==} - engines: {node: ^20.17.0 || >=22.9.0} - validate-npm-package-name@8.0.0: resolution: {integrity: sha512-SCv6OOV6Xj2/3cXy3dGmADluJTNcL3o7hZAglNPTe+WYuEuvxgJzxPrSDLZhF+CwyQOubqgecjMmTJGMVLWjYQ==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -8752,11 +8482,6 @@ packages: engines: {node: '>= 8'} hasBin: true - which@6.0.1: - resolution: {integrity: sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==} - engines: {node: ^20.17.0 || >=22.9.0} - hasBin: true - which@7.0.0: resolution: {integrity: sha512-RancgH2dmbLdHl6LRhEqvklWMgl/Hdnun0Y90KhBOLkMefg8Qa7/Zel8Sm+8HEcP6DEjzsWzpkuBQEZok58isA==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -8854,13 +8579,6 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yallist@4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - yallist@5.0.0: - resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} - engines: {node: '>=18'} - yaml@2.9.0: resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} engines: {node: '>= 14.6'} @@ -9042,7 +8760,7 @@ snapshots: '@angular/compiler-cli@22.1.0-next.0(@angular/compiler@22.1.0-next.0)(typescript@6.0.3)': dependencies: '@angular/compiler': 22.1.0-next.0 - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 convert-source-map: 1.9.0 @@ -9081,7 +8799,7 @@ snapshots: dependencies: '@angular/compiler': 22.1.0-next.0 '@angular/compiler-cli': 22.1.0-next.0(@angular/compiler@22.1.0-next.0)(typescript@6.0.3) - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@types/babel__core': 7.20.5 tinyglobby: 0.2.17 yargs: 18.0.0 @@ -9218,7 +8936,7 @@ snapshots: '@babel/compat-data@7.29.7': {} - '@babel/core@7.29.7': + '@babel/core@7.29.7(supports-color@10.2.2)': dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 @@ -9260,7 +8978,7 @@ snapshots: '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 @@ -9273,14 +8991,14 @@ snapshots: '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 regexpu-core: 6.4.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)': + '@babel/helper-define-polyfill-provider@0.6.8(@babel/core@7.29.7)(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 debug: 4.4.3(supports-color@10.2.2) @@ -9307,7 +9025,7 @@ snapshots: '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 '@babel/traverse': 7.29.7 @@ -9322,7 +9040,7 @@ snapshots: '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-wrap-function': 7.29.7 '@babel/traverse': 7.29.7 @@ -9331,7 +9049,7 @@ snapshots: '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-member-expression-to-functions': 7.29.7 '@babel/helper-optimise-call-expression': 7.29.7 '@babel/traverse': 7.29.7 @@ -9374,7 +9092,7 @@ snapshots: '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: @@ -9382,17 +9100,17 @@ snapshots: '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-bugfix-safari-rest-destructuring-rhs-array@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -9400,7 +9118,7 @@ snapshots: '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@7.29.7) @@ -9409,7 +9127,7 @@ snapshots: '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: @@ -9417,32 +9135,32 @@ snapshots: '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-async-generator-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) '@babel/traverse': 7.29.7 @@ -9451,7 +9169,7 @@ snapshots: '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@7.29.7) @@ -9460,17 +9178,17 @@ snapshots: '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-class-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9478,7 +9196,7 @@ snapshots: '@babel/plugin-transform-class-static-block@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9486,7 +9204,7 @@ snapshots: '@babel/plugin-transform-classes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-globals': 7.29.7 @@ -9498,13 +9216,13 @@ snapshots: '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/template': 7.29.7 '@babel/plugin-transform-destructuring@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 transitivePeerDependencies: @@ -9512,29 +9230,29 @@ snapshots: '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-dynamic-import@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-explicit-resource-management@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: @@ -9542,17 +9260,17 @@ snapshots: '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-export-namespace-from@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-for-of@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -9560,7 +9278,7 @@ snapshots: '@babel/plugin-transform-function-name@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/traverse': 7.29.7 @@ -9569,27 +9287,27 @@ snapshots: '@babel/plugin-transform-json-strings@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-logical-assignment-operators@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9597,7 +9315,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9605,7 +9323,7 @@ snapshots: '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-identifier': 7.29.7 @@ -9615,7 +9333,7 @@ snapshots: '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9623,28 +9341,28 @@ snapshots: '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-new-target@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-nullish-coalescing-operator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-numeric-separator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-object-rest-spread@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@7.29.7) @@ -9655,7 +9373,7 @@ snapshots: '@babel/plugin-transform-object-super@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) transitivePeerDependencies: @@ -9663,12 +9381,12 @@ snapshots: '@babel/plugin-transform-optional-catch-binding@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -9676,12 +9394,12 @@ snapshots: '@babel/plugin-transform-parameters@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-private-methods@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 transitivePeerDependencies: @@ -9689,7 +9407,7 @@ snapshots: '@babel/plugin-transform-private-property-in-object@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-annotate-as-pure': 7.29.7 '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 @@ -9698,31 +9416,31 @@ snapshots: '@babel/plugin-transform-property-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regenerator@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-regexp-modifiers@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)': + '@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7)(supports-color@10.2.2)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-module-imports': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7)(supports-color@10.2.2) babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.29.7) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) semver: 6.3.1 @@ -9731,12 +9449,12 @@ snapshots: '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-spread@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 transitivePeerDependencies: @@ -9744,46 +9462,46 @@ snapshots: '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-template-literals@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-property-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/plugin-transform-unicode-sets-regex@7.29.7(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@7.29.7) '@babel/helper-plugin-utils': 7.29.7 '@babel/preset-env@7.29.7(@babel/core@7.29.7)': dependencies: '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-compilation-targets': 7.29.7 '@babel/helper-plugin-utils': 7.29.7 '@babel/helper-validator-option': 7.29.7 @@ -9849,7 +9567,7 @@ snapshots: '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@7.29.7) '@babel/plugin-transform-unicode-sets-regex': 7.29.7(@babel/core@7.29.7) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.29.7) - babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7) + babel-plugin-polyfill-corejs2: 0.4.17(@babel/core@7.29.7)(supports-color@10.2.2) babel-plugin-polyfill-corejs3: 0.14.2(@babel/core@7.29.7) babel-plugin-polyfill-regenerator: 0.6.8(@babel/core@7.29.7) core-js-compat: 3.49.0 @@ -9859,7 +9577,7 @@ snapshots: '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.29.7)': dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/helper-plugin-utils': 7.29.7 '@babel/types': 7.29.7 esutils: 2.0.3 @@ -10209,20 +9927,20 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/compat@2.1.0(eslint@10.5.0(jiti@2.7.0))': + '@eslint/compat@2.1.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: '@eslint/core': 1.2.1 optionalDependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) - '@eslint/config-array@0.23.5': + '@eslint/config-array@0.23.5(supports-color@10.2.2)': dependencies: '@eslint/object-schema': 3.0.5 debug: 4.4.3(supports-color@10.2.2) @@ -10238,7 +9956,7 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/eslintrc@3.3.5': + '@eslint/eslintrc@3.3.5(supports-color@10.2.2)': dependencies: ajv: 6.15.0 debug: 4.4.3(supports-color@10.2.2) @@ -10252,9 +9970,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@10.0.1(eslint@10.5.0(jiti@2.7.0))': + '@eslint/js@10.0.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))': optionalDependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) '@eslint/object-schema@3.0.5': {} @@ -10585,8 +10303,6 @@ snapshots: '@firebase/webchannel-wrapper@1.0.6': {} - '@gar/promise-retry@1.0.3': {} - '@glideapps/ts-necessities@2.2.3': {} '@google-cloud/common@6.0.1(supports-color@10.2.2)': @@ -10836,10 +10552,6 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': - dependencies: - minipass: 7.1.3 - '@istanbuljs/schema@0.1.6': {} '@jasminejs/reporters@1.0.0': {} @@ -11038,8 +10750,8 @@ snapshots: cross-spawn: 7.0.6 eventsource: 3.0.7 eventsource-parser: 3.1.0 - express: 5.2.1 - express-rate-limit: 8.5.2(express@5.2.1) + express: 5.2.1(supports-color@10.2.2) + express-rate-limit: 8.5.2(express@5.2.1(supports-color@10.2.2)) hono: 4.12.23 jose: 6.2.3 json-schema-typed: 8.0.2 @@ -11170,62 +10882,6 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@npmcli/agent@4.0.2': - dependencies: - agent-base: 7.1.4 - http-proxy-agent: 7.0.2(supports-color@10.2.2) - https-proxy-agent: 7.0.6(supports-color@10.2.2) - lru-cache: 11.5.1 - socks-proxy-agent: 8.0.5 - transitivePeerDependencies: - - supports-color - - '@npmcli/fs@5.0.0': - dependencies: - semver: 7.8.4 - - '@npmcli/git@7.0.2': - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/promise-spawn': 9.0.1 - ini: 6.0.0 - lru-cache: 11.5.1 - npm-pick-manifest: 11.0.3 - proc-log: 6.1.0 - semver: 7.8.4 - which: 6.0.1 - - '@npmcli/installed-package-contents@4.0.0': - dependencies: - npm-bundled: 5.0.0 - npm-normalize-package-bin: 5.0.0 - - '@npmcli/node-gyp@5.0.0': {} - - '@npmcli/package-json@7.0.5': - dependencies: - '@npmcli/git': 7.0.2 - glob: 13.0.6 - hosted-git-info: 9.0.3 - json-parse-even-better-errors: 5.0.0 - proc-log: 6.1.0 - semver: 7.8.4 - spdx-expression-parse: 4.0.0 - - '@npmcli/promise-spawn@9.0.1': - dependencies: - which: 6.0.1 - - '@npmcli/redact@4.0.0': {} - - '@npmcli/run-script@10.0.4': - dependencies: - '@npmcli/node-gyp': 5.0.0 - '@npmcli/package-json': 7.0.5 - '@npmcli/promise-spawn': 9.0.1 - node-gyp: 12.4.0 - proc-log: 6.1.0 - '@octokit/auth-app@8.2.0': dependencies: '@octokit/auth-oauth-app': 9.0.3 @@ -11845,38 +11501,6 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@sigstore/bundle@4.0.0': - dependencies: - '@sigstore/protobuf-specs': 0.5.1 - - '@sigstore/core@3.2.1': {} - - '@sigstore/protobuf-specs@0.5.1': {} - - '@sigstore/sign@4.1.1': - dependencies: - '@gar/promise-retry': 1.0.3 - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - make-fetch-happen: 15.0.6 - proc-log: 6.1.0 - transitivePeerDependencies: - - supports-color - - '@sigstore/tuf@4.0.2': - dependencies: - '@sigstore/protobuf-specs': 0.5.1 - tuf-js: 4.1.0 - transitivePeerDependencies: - - supports-color - - '@sigstore/verify@3.1.1': - dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - '@simple-libs/child-process-utils@1.0.2': dependencies: '@simple-libs/stream-utils': 1.2.0 @@ -11889,11 +11513,11 @@ snapshots: '@standard-schema/spec@1.1.0': {} - '@stylistic/eslint-plugin@5.10.0(eslint@10.5.0(jiti@2.7.0))': + '@stylistic/eslint-plugin@5.10.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@typescript-eslint/types': 8.60.1 - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -11903,16 +11527,9 @@ snapshots: dependencies: defer-to-connect: 2.0.1 - '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0(jiti@2.7.0))': - dependencies: - eslint: 10.5.0(jiti@2.7.0) - - '@tufjs/canonical-json@2.0.0': {} - - '@tufjs/models@4.1.0': + '@tony.ganchev/eslint-plugin-header@3.4.4(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))': dependencies: - '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.5 + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) '@tybys/wasm-util@0.10.2': dependencies: @@ -12033,8 +11650,6 @@ snapshots: dependencies: '@types/node': 22.19.20 - '@types/ini@4.1.1': {} - '@types/jasmine-reporters@2.5.3': dependencies: '@types/jasmine': 6.0.0 @@ -12081,11 +11696,6 @@ snapshots: '@types/mime@1.3.5': {} - '@types/node-fetch@2.6.13': - dependencies: - '@types/node': 22.19.20 - form-data: 4.0.5 - '@types/node@22.19.20': dependencies: undici-types: 6.21.0 @@ -12096,25 +11706,6 @@ snapshots: '@types/npm-package-arg@6.1.4': {} - '@types/npm-registry-fetch@8.0.9': - dependencies: - '@types/node': 22.19.20 - '@types/node-fetch': 2.6.13 - '@types/npm-package-arg': 6.1.4 - '@types/npmlog': 7.0.0 - '@types/ssri': 7.1.5 - - '@types/npmlog@7.0.0': - dependencies: - '@types/node': 22.19.20 - - '@types/pacote@11.1.8': - dependencies: - '@types/node': 22.19.20 - '@types/npm-registry-fetch': 8.0.9 - '@types/npmlog': 7.0.0 - '@types/ssri': 7.1.5 - '@types/parse-glob@3.0.32': {} '@types/picomatch@4.0.3': {} @@ -12172,10 +11763,6 @@ snapshots: dependencies: '@types/node': 22.19.20 - '@types/ssri@7.1.5': - dependencies: - '@types/node': 22.19.20 - '@types/stack-trace@0.0.33': {} '@types/tar-stream@3.1.4': @@ -12201,15 +11788,15 @@ snapshots: '@types/yarnpkg__lockfile@1.1.9': {} - '@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.61.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/scope-manager': 8.61.0 - '@typescript-eslint/type-utils': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/type-utils': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.61.0 - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -12217,19 +11804,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@typescript-eslint/scope-manager': 8.61.0 '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.61.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/visitor-keys': 8.61.0 debug: 4.4.3(supports-color@10.2.2) - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.61.0(typescript@6.0.3)': + '@typescript-eslint/project-service@8.61.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.61.0(typescript@6.0.3) '@typescript-eslint/types': 8.61.0 @@ -12247,13 +11834,13 @@ snapshots: dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)': dependencies: '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - '@typescript-eslint/utils': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.61.0(supports-color@10.2.2)(typescript@6.0.3) + '@typescript-eslint/utils': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3) debug: 4.4.3(supports-color@10.2.2) - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -12263,9 +11850,9 @@ snapshots: '@typescript-eslint/types@8.61.0': {} - '@typescript-eslint/typescript-estree@8.61.0(typescript@6.0.3)': + '@typescript-eslint/typescript-estree@8.61.0(supports-color@10.2.2)(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.61.0(typescript@6.0.3) + '@typescript-eslint/project-service': 8.61.0(supports-color@10.2.2)(typescript@6.0.3) '@typescript-eslint/tsconfig-utils': 8.61.0(typescript@6.0.3) '@typescript-eslint/types': 8.61.0 '@typescript-eslint/visitor-keys': 8.61.0 @@ -12278,13 +11865,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@typescript-eslint/scope-manager': 8.61.0 '@typescript-eslint/types': 8.61.0 - '@typescript-eslint/typescript-estree': 8.61.0(typescript@6.0.3) - eslint: 10.5.0(jiti@2.7.0) + '@typescript-eslint/typescript-estree': 8.61.0(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -12294,7 +11881,7 @@ snapshots: '@typescript-eslint/types': 8.61.0 eslint-visitor-keys: 5.0.1 - '@verdaccio/auth@8.0.2': + '@verdaccio/auth@8.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/config': 8.1.1 '@verdaccio/core': 8.1.1 @@ -12328,7 +11915,7 @@ snapshots: dependencies: lockfile: 1.0.4 - '@verdaccio/hooks@8.0.2': + '@verdaccio/hooks@8.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/core': 8.1.1 '@verdaccio/logger': 8.0.2 @@ -12346,7 +11933,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/local-storage-legacy@11.3.3': + '@verdaccio/local-storage-legacy@11.3.3(supports-color@10.2.2)': dependencies: '@verdaccio/core': 8.1.1 '@verdaccio/file-locking': 13.0.1 @@ -12385,11 +11972,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/middleware@8.0.2': + '@verdaccio/middleware@8.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/config': 8.1.1 '@verdaccio/core': 8.1.1 - '@verdaccio/url': 13.0.2 + '@verdaccio/url': 13.0.2(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) express: 4.22.1 express-rate-limit: 5.5.1 @@ -12398,7 +11985,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/package-filter@13.0.2': + '@verdaccio/package-filter@13.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/core': 8.1.1 debug: 4.4.3(supports-color@10.2.2) @@ -12406,7 +11993,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@verdaccio/search-indexer@8.0.2': + '@verdaccio/search-indexer@8.0.2(supports-color@10.2.2)': dependencies: debug: 4.4.3(supports-color@10.2.2) fuse.js: 7.3.0 @@ -12424,10 +12011,10 @@ snapshots: '@verdaccio/streams@10.2.5': {} - '@verdaccio/tarball@13.0.2': + '@verdaccio/tarball@13.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/core': 8.1.1 - '@verdaccio/url': 13.0.2 + '@verdaccio/url': 13.0.2(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) gunzip-maybe: 1.4.2 tar-stream: 3.1.7 @@ -12436,13 +12023,13 @@ snapshots: - react-native-b4a - supports-color - '@verdaccio/ui-theme@9.0.0-next-9.14': + '@verdaccio/ui-theme@9.0.0-next-9.14(supports-color@10.2.2)': dependencies: debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - '@verdaccio/url@13.0.2': + '@verdaccio/url@13.0.2(supports-color@10.2.2)': dependencies: '@verdaccio/core': 8.1.1 debug: 4.4.3(supports-color@10.2.2) @@ -12604,8 +12191,6 @@ snapshots: jsonparse: 1.3.1 through: 2.3.8 - abbrev@4.0.0: {} - abort-controller@3.0.0: dependencies: event-target-shim: 5.0.1 @@ -12635,7 +12220,7 @@ snapshots: loader-utils: 2.0.4 regex-parser: 2.3.1 - agent-base@6.0.2: + agent-base@6.0.2(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: @@ -12838,40 +12423,40 @@ snapshots: babel-loader@10.1.1(@babel/core@7.29.7)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) find-up: 5.0.0 optionalDependencies: webpack: 5.107.2(esbuild@0.28.1)(postcss@8.5.15) - babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7): + babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.7)(supports-color@10.2.2): dependencies: '@babel/compat-data': 7.29.7 - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@10.2.2) semver: 6.3.1 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@10.2.2) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-corejs3@0.14.2(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@10.2.2) core-js-compat: 3.49.0 transitivePeerDependencies: - supports-color babel-plugin-polyfill-regenerator@0.6.8(@babel/core@7.29.7): dependencies: - '@babel/core': 7.29.7 - '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7) + '@babel/core': 7.29.7(supports-color@10.2.2) + '@babel/helper-define-polyfill-provider': 0.6.8(@babel/core@7.29.7)(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -12968,7 +12553,7 @@ snapshots: transitivePeerDependencies: - supports-color - body-parser@2.2.2: + body-parser@2.2.2(supports-color@10.2.2): dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -13014,24 +12599,24 @@ snapshots: fresh: 0.5.2 mitt: 1.2.0 - browser-sync-ui@3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): + browser-sync-ui@3.0.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: async-each-series: 0.1.1 chalk: 4.1.2 connect-history-api-fallback: 1.6.0 immutable: 3.8.3 server-destroy: 1.0.1 - socket.io-client: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + socket.io-client: 4.8.3(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) stream-throttle: 0.1.3 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - browser-sync@3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): + browser-sync@3.0.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: browser-sync-client: 3.0.4 - browser-sync-ui: 3.0.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + browser-sync-ui: 3.0.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) bs-recipes: 1.3.4 chalk: 4.1.2 chokidar: 3.6.0 @@ -13055,7 +12640,7 @@ snapshots: serve-index: 1.9.2 serve-static: 1.16.3 server-destroy: 1.0.1 - socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + socket.io: 4.8.3(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) ua-parser-js: 1.0.41 yargs: 17.7.2 transitivePeerDependencies: @@ -13099,19 +12684,6 @@ snapshots: bytestreamjs@2.0.1: {} - cacache@20.0.4: - dependencies: - '@npmcli/fs': 5.0.0 - fs-minipass: 3.0.3 - glob: 13.0.6 - lru-cache: 11.5.1 - minipass: 7.1.3 - minipass-collect: 2.0.1 - minipass-flush: 1.0.7 - minipass-pipeline: 1.2.4 - p-map: 7.0.4 - ssri: 13.0.1 - cacheable-lookup@6.1.0: {} cacheable-request@7.0.2: @@ -13182,8 +12754,6 @@ snapshots: dependencies: readdirp: 5.0.0 - chownr@3.0.0: {} - chrome-trace-event@1.0.4: {} chromium-bidi@16.0.1(devtools-protocol@0.0.1624250): @@ -13626,7 +13196,7 @@ snapshots: dependencies: once: 1.4.0 - engine.io-client@6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6): + engine.io-client@6.6.5(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@10.2.2) @@ -13640,7 +13210,7 @@ snapshots: engine.io-parser@5.2.3: {} - engine.io@6.6.8(bufferutil@4.1.0)(utf-8-validate@6.0.6): + engine.io@6.6.8(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: '@types/cors': 2.8.19 '@types/node': 22.19.20 @@ -13869,9 +13439,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)): + eslint-config-prettier@10.1.8(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-import-resolver-node@0.3.10: dependencies: @@ -13881,17 +13451,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)): + eslint-module-utils@2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.5.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-import-resolver-node: 0.3.10 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -13900,9 +13470,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 10.5.0(jiti@2.7.0) + eslint: 10.5.0(jiti@2.7.0)(supports-color@10.2.2) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)) + eslint-module-utils: 2.13.0(@typescript-eslint/parser@8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(eslint-import-resolver-node@0.3.10)(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) hasown: 2.0.4 is-core-module: 2.16.2 is-glob: 4.0.3 @@ -13914,7 +13484,7 @@ snapshots: string.prototype.trimend: 1.0.10 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.61.0(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -13938,11 +13508,11 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.5.0(jiti@2.7.0): + eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.5.0(jiti@2.7.0)(supports-color@10.2.2)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5 + '@eslint/config-array': 0.23.5(supports-color@10.2.2) '@eslint/config-helpers': 0.6.0 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.2 @@ -14033,13 +13603,11 @@ snapshots: expect-type@1.3.0: {} - exponential-backoff@3.1.3: {} - express-rate-limit@5.5.1: {} - express-rate-limit@8.5.2(express@5.2.1): + express-rate-limit@8.5.2(express@5.2.1(supports-color@10.2.2)): dependencies: - express: 5.2.1 + express: 5.2.1(supports-color@10.2.2) ip-address: 10.2.0 express@4.22.1: @@ -14114,10 +13682,10 @@ snapshots: transitivePeerDependencies: - supports-color - express@5.2.1: + express@5.2.1(supports-color@10.2.2): dependencies: accepts: 2.0.0 - body-parser: 2.2.2 + body-parser: 2.2.2(supports-color@10.2.2) content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 @@ -14127,7 +13695,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 2.1.1 + finalhandler: 2.1.1(supports-color@10.2.2) fresh: 2.0.0 http-errors: 2.0.1 merge-descriptors: 2.0.0 @@ -14138,8 +13706,8 @@ snapshots: proxy-addr: 2.0.7 qs: 6.15.2 range-parser: 1.2.1 - router: 2.2.0 - send: 1.2.1 + router: 2.2.0(supports-color@10.2.2) + send: 1.2.1(supports-color@10.2.2) serve-static: 2.2.1 statuses: 2.0.2 type-is: 2.1.0 @@ -14240,7 +13808,7 @@ snapshots: transitivePeerDependencies: - supports-color - finalhandler@2.1.1: + finalhandler@2.1.1(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 @@ -14359,10 +13927,6 @@ snapshots: jsonfile: 4.0.0 universalify: 0.1.2 - fs-minipass@3.0.3: - dependencies: - minipass: 7.1.3 - fs.realpath@1.0.0: {} fsevents@2.3.3: @@ -14643,10 +14207,6 @@ snapshots: dependencies: lru-cache: 11.5.1 - hosted-git-info@9.0.3: - dependencies: - lru-cache: 11.5.1 - hpack.js@2.1.6: dependencies: inherits: 2.0.4 @@ -14712,7 +14272,7 @@ snapshots: transitivePeerDependencies: - debug - http-proxy-middleware@4.1.1: + http-proxy-middleware@4.1.1(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) httpxy: 0.5.3 @@ -14743,9 +14303,9 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 - https-proxy-agent@5.0.1: + https-proxy-agent@5.0.1(supports-color@10.2.2): dependencies: - agent-base: 6.0.2 + agent-base: 6.0.2(supports-color@10.2.2) debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -14757,7 +14317,7 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@9.1.0: + https-proxy-agent@9.1.0(supports-color@10.2.2): dependencies: agent-base: 9.0.0 debug: 4.4.3(supports-color@10.2.2) @@ -14792,10 +14352,6 @@ snapshots: ieee754@1.2.1: {} - ignore-walk@8.0.0: - dependencies: - minimatch: 10.2.5 - ignore@5.3.2: {} ignore@7.0.5: {} @@ -14821,10 +14377,6 @@ snapshots: inherits@2.0.4: {} - ini@6.0.0: {} - - ini@7.0.0: {} - injection-js@2.6.1: dependencies: tslib: 2.8.1 @@ -15039,7 +14591,7 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/parser': 7.29.7 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 @@ -15049,7 +14601,7 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.29.7 + '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/parser': 7.29.7 '@istanbuljs/schema': 0.1.6 istanbul-lib-coverage: 3.2.2 @@ -15063,7 +14615,7 @@ snapshots: make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: + istanbul-lib-source-maps@4.0.1(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) istanbul-lib-coverage: 3.2.2 @@ -15163,8 +14715,6 @@ snapshots: json-parse-even-better-errors@2.3.1: {} - json-parse-even-better-errors@5.0.0: {} - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -15232,33 +14782,33 @@ snapshots: dependencies: which: 1.3.1 - karma-coverage@2.2.1: + karma-coverage@2.2.1(supports-color@10.2.2): dependencies: istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 + istanbul-lib-source-maps: 4.0.1(supports-color@10.2.2) istanbul-reports: 3.2.0 minimatch: 3.1.5 transitivePeerDependencies: - supports-color - karma-jasmine-html-reporter@2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)): + karma-jasmine-html-reporter@2.2.0(jasmine-core@6.3.0)(karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)))(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)): dependencies: jasmine-core: 6.3.0 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) - karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + karma-jasmine: 5.1.0(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)) - karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6)): + karma-jasmine@5.1.0(karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6)): dependencies: jasmine-core: 4.6.1 - karma: 6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6) + karma: 6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) karma-source-map-support@1.4.0: dependencies: source-map-support: 0.5.21 - karma@6.4.4(bufferutil@4.1.0)(utf-8-validate@6.0.6): + karma@6.4.4(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: '@colors/colors': 1.5.0 body-parser: 1.20.5 @@ -15279,7 +14829,7 @@ snapshots: qjobs: 1.2.0 range-parser: 1.2.1 rimraf: 3.0.2 - socket.io: 4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) + socket.io: 4.8.3(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) source-map: 0.6.1 tmp: 0.2.7 ua-parser-js: 0.7.41 @@ -15487,23 +15037,6 @@ snapshots: make-dir@5.1.0: optional: true - make-fetch-happen@15.0.6: - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/agent': 4.0.2 - '@npmcli/redact': 4.0.0 - cacache: 20.0.4 - http-cache-semantics: 4.2.0 - minipass: 7.1.3 - minipass-fetch: 5.0.2 - minipass-flush: 1.0.7 - minipass-pipeline: 1.2.4 - negotiator: 1.0.0 - proc-log: 6.1.0 - ssri: 13.0.1 - transitivePeerDependencies: - - supports-color - math-intrinsics@1.1.0: {} mdn-data@2.27.1: {} @@ -15596,40 +15129,8 @@ snapshots: minimist@1.2.8: {} - minipass-collect@2.0.1: - dependencies: - minipass: 7.1.3 - - minipass-fetch@5.0.2: - dependencies: - minipass: 7.1.3 - minipass-sized: 2.0.0 - minizlib: 3.1.0 - optionalDependencies: - iconv-lite: 0.7.2 - - minipass-flush@1.0.7: - dependencies: - minipass: 3.3.6 - - minipass-pipeline@1.2.4: - dependencies: - minipass: 3.3.6 - - minipass-sized@2.0.0: - dependencies: - minipass: 7.1.3 - - minipass@3.3.6: - dependencies: - yallist: 4.0.0 - minipass@7.1.3: {} - minizlib@3.1.0: - dependencies: - minipass: 7.1.3 - mitt@1.2.0: {} mitt@3.0.1: {} @@ -15772,46 +15273,12 @@ snapshots: node-gyp-build@4.8.4: {} - node-gyp@12.4.0: - dependencies: - env-paths: 2.2.1 - exponential-backoff: 3.1.3 - graceful-fs: 4.2.11 - nopt: 9.0.0 - proc-log: 6.1.0 - semver: 7.8.4 - tar: 7.5.16 - tinyglobby: 0.2.17 - undici: 6.26.0 - which: 6.0.1 - node-releases@2.0.47: {} - nopt@9.0.0: - dependencies: - abbrev: 4.0.0 - normalize-path@3.0.0: {} normalize-url@6.1.0: {} - npm-bundled@5.0.0: - dependencies: - npm-normalize-package-bin: 5.0.0 - - npm-install-checks@8.0.0: - dependencies: - semver: 7.8.4 - - npm-normalize-package-bin@5.0.0: {} - - npm-package-arg@13.0.2: - dependencies: - hosted-git-info: 9.0.3 - proc-log: 6.1.0 - semver: 7.8.4 - validate-npm-package-name: 7.0.2 - npm-package-arg@14.0.0: dependencies: hosted-git-info: 10.1.1 @@ -15819,31 +15286,6 @@ snapshots: semver: 7.8.4 validate-npm-package-name: 8.0.0 - npm-packlist@10.0.4: - dependencies: - ignore-walk: 8.0.0 - proc-log: 6.1.0 - - npm-pick-manifest@11.0.3: - dependencies: - npm-install-checks: 8.0.0 - npm-normalize-package-bin: 5.0.0 - npm-package-arg: 13.0.2 - semver: 7.8.4 - - npm-registry-fetch@19.1.1: - dependencies: - '@npmcli/redact': 4.0.0 - jsonparse: 1.3.1 - make-fetch-happen: 15.0.6 - minipass: 7.1.3 - minipass-fetch: 5.0.2 - minizlib: 3.1.0 - npm-package-arg: 13.0.2 - proc-log: 6.1.0 - transitivePeerDependencies: - - supports-color - nth-check@2.1.1: dependencies: boolbase: 1.0.0 @@ -15979,8 +15421,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-map@7.0.4: {} - p-queue@6.6.2: dependencies: eventemitter3: 4.0.7 @@ -16003,28 +15443,6 @@ snapshots: package-json-from-dist@1.0.1: {} - pacote@21.5.1: - dependencies: - '@gar/promise-retry': 1.0.3 - '@npmcli/git': 7.0.2 - '@npmcli/installed-package-contents': 4.0.0 - '@npmcli/package-json': 7.0.5 - '@npmcli/promise-spawn': 9.0.1 - '@npmcli/run-script': 10.0.4 - cacache: 20.0.4 - fs-minipass: 3.0.3 - minipass: 7.1.3 - npm-package-arg: 13.0.2 - npm-packlist: 10.0.4 - npm-pick-manifest: 11.0.3 - npm-registry-fetch: 19.1.1 - proc-log: 6.1.0 - sigstore: 4.1.1 - ssri: 13.0.1 - tar: 7.5.16 - transitivePeerDependencies: - - supports-color - pako@0.2.9: {} pako@1.0.11: {} @@ -16219,8 +15637,6 @@ snapshots: prettier@3.8.3: {} - proc-log@6.1.0: {} - proc-log@7.0.0: {} process-nextick-args@2.0.1: {} @@ -16640,7 +16056,7 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.62.0 fsevents: 2.3.3 - router@2.2.0: + router@2.2.0(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) depd: 2.0.0 @@ -16764,7 +16180,7 @@ snapshots: transitivePeerDependencies: - supports-color - send@1.2.1: + send@1.2.1(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) encodeurl: 2.0.0 @@ -16808,7 +16224,7 @@ snapshots: encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 1.2.1 + send: 1.2.1(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -16884,17 +16300,6 @@ snapshots: signal-exit@4.1.0: {} - sigstore@4.1.1: - dependencies: - '@sigstore/bundle': 4.0.0 - '@sigstore/core': 3.2.1 - '@sigstore/protobuf-specs': 0.5.1 - '@sigstore/sign': 4.1.1 - '@sigstore/tuf': 4.0.2 - '@sigstore/verify': 3.1.1 - transitivePeerDependencies: - - supports-color - slash@3.0.0: {} slice-ansi@7.1.2: @@ -16907,9 +16312,7 @@ snapshots: ansi-styles: 6.2.3 is-fullwidth-code-point: 5.1.0 - smart-buffer@4.2.0: {} - - socket.io-adapter@2.5.7(bufferutil@4.1.0)(utf-8-validate@6.0.6): + socket.io-adapter@2.5.7(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: debug: 4.4.3(supports-color@10.2.2) ws: 8.20.1(bufferutil@4.1.0)(utf-8-validate@6.0.6) @@ -16918,33 +16321,33 @@ snapshots: - supports-color - utf-8-validate - socket.io-client@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): + socket.io-client@4.8.3(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@10.2.2) - engine.io-client: 6.6.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) - socket.io-parser: 4.2.6 + engine.io-client: 6.6.5(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + socket.io-parser: 4.2.6(supports-color@10.2.2) transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - socket.io-parser@4.2.6: + socket.io-parser@4.2.6(supports-color@10.2.2): dependencies: '@socket.io/component-emitter': 3.1.2 debug: 4.4.3(supports-color@10.2.2) transitivePeerDependencies: - supports-color - socket.io@4.8.3(bufferutil@4.1.0)(utf-8-validate@6.0.6): + socket.io@4.8.3(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6): dependencies: accepts: 1.3.8 base64id: 2.0.0 cors: 2.8.6 debug: 4.4.3(supports-color@10.2.2) - engine.io: 6.6.8(bufferutil@4.1.0)(utf-8-validate@6.0.6) - socket.io-adapter: 2.5.7(bufferutil@4.1.0)(utf-8-validate@6.0.6) - socket.io-parser: 4.2.6 + engine.io: 6.6.8(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + socket.io-adapter: 2.5.7(bufferutil@4.1.0)(supports-color@10.2.2)(utf-8-validate@6.0.6) + socket.io-parser: 4.2.6(supports-color@10.2.2) transitivePeerDependencies: - bufferutil - supports-color @@ -16956,19 +16359,6 @@ snapshots: uuid: 8.3.2 websocket-driver: 0.7.5 - socks-proxy-agent@8.0.5: - dependencies: - agent-base: 7.1.4 - debug: 4.4.3(supports-color@10.2.2) - socks: 2.8.9 - transitivePeerDependencies: - - supports-color - - socks@2.8.9: - dependencies: - ip-address: 10.2.0 - smart-buffer: 4.2.0 - sonic-boom@3.8.1: dependencies: atomic-sleep: 1.0.0 @@ -17001,18 +16391,13 @@ snapshots: spdx-exceptions: 2.5.0 spdx-license-ids: 3.0.23 - spdx-expression-parse@4.0.0: - dependencies: - spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.23 - spdx-expression-validate@2.0.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids@3.0.23: {} - spdy-transport@3.0.0: + spdy-transport@3.0.0(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) detect-node: 2.1.0 @@ -17023,13 +16408,13 @@ snapshots: transitivePeerDependencies: - supports-color - spdy@4.0.2: + spdy@4.0.2(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 - spdy-transport: 3.0.0 + spdy-transport: 3.0.0(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -17060,10 +16445,6 @@ snapshots: dependencies: minipass: 7.1.3 - ssri@13.0.1: - dependencies: - minipass: 7.1.3 - stack-trace@0.0.10: {} stackback@0.0.2: {} @@ -17222,14 +16603,6 @@ snapshots: - bare-buffer - react-native-b4a - tar@7.5.16: - dependencies: - '@isaacs/fs-minipass': 4.0.1 - chownr: 3.0.0 - minipass: 7.1.3 - minizlib: 3.1.0 - yallist: 5.0.0 - teeny-request@10.1.3(supports-color@10.2.2): dependencies: http-proxy-agent: 7.0.2(supports-color@10.2.2) @@ -17383,14 +16756,6 @@ snapshots: dependencies: tslib: 1.14.1 - tuf-js@4.1.0: - dependencies: - '@tufjs/models': 4.1.0 - debug: 4.4.3(supports-color@10.2.2) - make-fetch-happen: 15.0.6 - transitivePeerDependencies: - - supports-color - tunnel-agent@0.6.0: dependencies: safe-buffer: 5.2.1 @@ -17544,26 +16909,24 @@ snapshots: uuid@8.3.2: {} - validate-npm-package-name@7.0.2: {} - validate-npm-package-name@8.0.0: {} validator@13.15.26: {} vary@1.1.2: {} - verdaccio-audit@13.0.2(encoding@0.1.13): + verdaccio-audit@13.0.2(encoding@0.1.13)(supports-color@10.2.2): dependencies: '@verdaccio/config': 8.1.1 '@verdaccio/core': 8.1.1 express: 4.22.1 - https-proxy-agent: 5.0.1 + https-proxy-agent: 5.0.1(supports-color@10.2.2) node-fetch: 2.6.7(encoding@0.1.13) transitivePeerDependencies: - encoding - supports-color - verdaccio-auth-memory@13.0.2: + verdaccio-auth-memory@13.0.2(supports-color@10.2.2): dependencies: '@verdaccio/core': 8.1.1 debug: 4.4.3(supports-color@10.2.2) @@ -17582,24 +16945,24 @@ snapshots: transitivePeerDependencies: - supports-color - verdaccio@6.7.2(encoding@0.1.13): + verdaccio@6.7.2(encoding@0.1.13)(supports-color@10.2.2): dependencies: '@cypress/request': 3.0.10 - '@verdaccio/auth': 8.0.2 + '@verdaccio/auth': 8.0.2(supports-color@10.2.2) '@verdaccio/config': 8.1.1 '@verdaccio/core': 8.1.1 - '@verdaccio/hooks': 8.0.2 + '@verdaccio/hooks': 8.0.2(supports-color@10.2.2) '@verdaccio/loaders': 8.0.2 - '@verdaccio/local-storage-legacy': 11.3.3 + '@verdaccio/local-storage-legacy': 11.3.3(supports-color@10.2.2) '@verdaccio/logger': 8.0.2 - '@verdaccio/middleware': 8.0.2 - '@verdaccio/package-filter': 13.0.2 - '@verdaccio/search-indexer': 8.0.2 + '@verdaccio/middleware': 8.0.2(supports-color@10.2.2) + '@verdaccio/package-filter': 13.0.2(supports-color@10.2.2) + '@verdaccio/search-indexer': 8.0.2(supports-color@10.2.2) '@verdaccio/signature': 8.0.2 '@verdaccio/streams': 10.2.5 - '@verdaccio/tarball': 13.0.2 - '@verdaccio/ui-theme': 9.0.0-next-9.14 - '@verdaccio/url': 13.0.2 + '@verdaccio/tarball': 13.0.2(supports-color@10.2.2) + '@verdaccio/ui-theme': 9.0.0-next-9.14(supports-color@10.2.2) + '@verdaccio/url': 13.0.2(supports-color@10.2.2) '@verdaccio/utils': 8.1.2 JSONStream: 1.3.5 async: 3.2.6 @@ -17613,7 +16976,7 @@ snapshots: lru-cache: 7.18.3 mime: 3.0.0 semver: 7.8.0 - verdaccio-audit: 13.0.2(encoding@0.1.13) + verdaccio-audit: 13.0.2(encoding@0.1.13)(supports-color@10.2.2) verdaccio-htpasswd: 13.0.2 transitivePeerDependencies: - bare-abort-controller @@ -17755,7 +17118,7 @@ snapshots: transitivePeerDependencies: - tslib - webpack-dev-server@5.2.5(bufferutil@4.1.0)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): + webpack-dev-server@5.2.5(bufferutil@4.1.0)(supports-color@10.2.2)(tslib@2.8.1)(utf-8-validate@6.0.6)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 @@ -17782,7 +17145,7 @@ snapshots: selfsigned: 5.5.0 serve-index: 1.9.2 sockjs: 0.3.24 - spdy: 4.0.2 + spdy: 4.0.2(supports-color@10.2.2) webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)(postcss@8.5.15)) ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: @@ -17821,7 +17184,7 @@ snapshots: selfsigned: 5.5.0 serve-index: 1.9.2 sockjs: 0.3.24 - spdy: 4.0.2 + spdy: 4.0.2(supports-color@10.2.2) webpack-dev-middleware: 7.4.5(tslib@2.8.1)(webpack@5.107.2(esbuild@0.28.1)) ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) optionalDependencies: @@ -17996,10 +17359,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@6.0.1: - dependencies: - isexe: 4.0.0 - which@7.0.0: dependencies: isexe: 4.0.0 @@ -18074,10 +17433,6 @@ snapshots: yallist@3.1.1: {} - yallist@4.0.0: {} - - yallist@5.0.0: {} - yaml@2.9.0: {} yargs-parser@20.2.9: {} From 973760c25ba22197c781f72a4d76e5eae152a80e Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:11:52 -0400 Subject: [PATCH 2/3] test(@angular/cli): configure always-auth for Yarn Classic v1 registry authentication Configure always-auth in the written .npmrc and .yarnrc test profiles within createNpmConfigForAuthentication. By default, Yarn Classic (v1) does not send the Authorization header on GET requests (such as retrieving manifest metadata via yarn info) unless always-auth is enabled. When ng update uses the PackageManager abstraction under Yarn Classic v1, this ensures the necessary authorization headers are sent to secure registry endpoints. --- tests/e2e/tests/update/update-secure-registry.ts | 2 +- tests/e2e/utils/registry.ts | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tests/e2e/tests/update/update-secure-registry.ts b/tests/e2e/tests/update/update-secure-registry.ts index 3c0a9d468e44..47a9db657cd8 100644 --- a/tests/e2e/tests/update/update-secure-registry.ts +++ b/tests/e2e/tests/update/update-secure-registry.ts @@ -34,6 +34,6 @@ export default async function () { await createNpmConfigForAuthentication(true, true); const error = await expectToFail(() => exec('yarn', 'ng', 'update', ...extraArgs)); - assert.match(error.message, /not allowed to access package/); + assert.match(error.message, /not allowed to access package|status code 403/); } } diff --git a/tests/e2e/utils/registry.ts b/tests/e2e/utils/registry.ts index d8d75b566fb9..552ce4c20358 100644 --- a/tests/e2e/utils/registry.ts +++ b/tests/e2e/utils/registry.ts @@ -75,10 +75,13 @@ export async function createNpmConfigForAuthentication( scopedAuthentication ? ` ${registry}/:_auth="${token}" +${registry}/:always-auth=true +always-auth=true registry=http:${registry} ` : ` _auth="${token}" +always-auth=true registry=http:${registry} `, ); @@ -88,10 +91,13 @@ registry=http:${registry} scopedAuthentication ? ` ${registry}/:_auth "${token}" +${registry}/:always-auth true +always-auth true registry http:${registry} ` : ` _auth "${token}" +always-auth true registry http:${registry} `, ); From c5d973dc63a64d225ca66adccf9d84d6cc2d3cd7 Mon Sep 17 00:00:00 2001 From: Charles Lyding <19598772+clydin@users.noreply.github.com> Date: Mon, 15 Jun 2026 09:39:33 -0400 Subject: [PATCH 3/3] fix(@angular/cli): prevent Yarn registry environment variable override When running scripts via Yarn Classic (such as yarn ng update), Yarn automatically injects npm_config_registry=https://registry.yarnpkg.com into the child process environment. When the PackageManager abstraction spawns child CLI subprocesses (such as yarn info), those child processes inherit the injected registry environment variable. Because environment variables take highest precedence, this previously caused spawned subprocesses to ignore local .yarnrc files and query the public CDN mirror. Strip npm_config_registry and NPM_CONFIG_REGISTRY from the child process environment when running under Yarn so that spawned subprocesses correctly respect local repository registry settings. --- .../angular/cli/src/package-managers/host.ts | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/packages/angular/cli/src/package-managers/host.ts b/packages/angular/cli/src/package-managers/host.ts index cee68015f677..90f426f9ab71 100644 --- a/packages/angular/cli/src/package-managers/host.ts +++ b/packages/angular/cli/src/package-managers/host.ts @@ -129,18 +129,33 @@ export const NodeJS_HOST: Host = { const isWin32 = platform() === 'win32'; return new Promise((resolve, reject) => { + const env: Record = { + ...process.env, + ...options.env, + // NPM updater notifier will prevents the child process from closing until it timeout after 3 minutes. + NO_UPDATE_NOTIFIER: '1', + NPM_CONFIG_UPDATE_NOTIFIER: 'false', + }; + + // When running via Yarn Classic (`yarn run