diff --git a/goldens/circular-deps/packages.json b/goldens/circular-deps/packages.json index 96a53f7a1040..20d959198b49 100644 --- a/goldens/circular-deps/packages.json +++ b/goldens/circular-deps/packages.json @@ -31,10 +31,6 @@ "packages/angular/build/src/tools/esbuild/utils.ts", "packages/angular/build/src/utils/server-rendering/manifest.ts" ], - [ - "packages/angular/cli/src/analytics/analytics-collector.ts", - "packages/angular/cli/src/command-builder/command-module.ts" - ], [ "packages/angular/cli/src/analytics/analytics.ts", "packages/angular/cli/src/command-builder/command-module.ts" diff --git a/packages/angular/cli/src/analytics/analytics-collector.ts b/packages/angular/cli/src/analytics/analytics-collector.ts index 052bc5cbe74c..7520b16916ae 100644 --- a/packages/angular/cli/src/analytics/analytics-collector.ts +++ b/packages/angular/cli/src/analytics/analytics-collector.ts @@ -6,12 +6,12 @@ * found in the LICENSE file at https://angular.dev/license */ +import { logging } from '@angular-devkit/core'; import { randomUUID } from 'node:crypto'; import * as https from 'node:https'; import * as os from 'node:os'; import * as querystring from 'node:querystring'; import * as semver from 'semver'; -import type { CommandContext } from '../command-builder/command-module'; import { ngDebug } from '../utilities/environment-options'; import { assertIsError } from '../utilities/error'; import { VERSION } from '../utilities/version'; @@ -32,8 +32,9 @@ export class AnalyticsCollector { private readonly userParameters: Record; constructor( - private context: CommandContext, + private logger: logging.Logger, userId: string, + packageManagerInfo: { name: string; version: string | undefined }, ) { const requestParameters: Partial> = { [RequestParameter.ProtocolVersion]: 2, @@ -63,7 +64,7 @@ export class AnalyticsCollector { this.requestParameterStringified = querystring.stringify(requestParameters); const parsedVersion = semver.parse(process.version); - const packageManagerVersion = context.packageManager.version; + const packageManagerVersion = packageManagerInfo.version; this.userParameters = { // While architecture is being collect by GA as UserAgentArchitecture. @@ -75,7 +76,7 @@ export class AnalyticsCollector { ? `${parsedVersion.major}.${parsedVersion.minor}.${parsedVersion.patch}` : 'other', [UserCustomDimension.NodeMajorVersion]: parsedVersion?.major, - [UserCustomDimension.PackageManager]: context.packageManager.name, + [UserCustomDimension.PackageManager]: packageManagerInfo.name, [UserCustomDimension.PackageManagerVersion]: packageManagerVersion, [UserCustomDimension.PackageManagerMajorVersion]: packageManagerVersion ? +packageManagerVersion.split('.', 1)[0] @@ -152,7 +153,7 @@ export class AnalyticsCollector { async flush(): Promise { const pendingTrackingEvents = this.trackingEventsQueue; - this.context.logger.debug(`Analytics flush size. ${pendingTrackingEvents?.length}.`); + this.logger.debug(`Analytics flush size. ${pendingTrackingEvents?.length}.`); if (!pendingTrackingEvents?.length) { return; @@ -167,7 +168,7 @@ export class AnalyticsCollector { } catch (error) { // Failure to report analytics shouldn't crash the CLI. assertIsError(error); - this.context.logger.debug(`Send analytics error. ${error.message}.`); + this.logger.debug(`Send analytics error. ${error.message}.`); } } diff --git a/packages/angular/cli/src/command-builder/command-module.ts b/packages/angular/cli/src/command-builder/command-module.ts index d036656cf2dd..b4dadea709a4 100644 --- a/packages/angular/cli/src/command-builder/command-module.ts +++ b/packages/angular/cli/src/command-builder/command-module.ts @@ -60,8 +60,10 @@ export interface CommandContext { export type OtherOptions = Record; -export interface CommandModuleImplementation - extends Omit, 'builder' | 'handler'> { +export interface CommandModuleImplementation extends Omit< + YargsCommandModule<{}, T>, + 'builder' | 'handler' +> { /** Scope in which the command can be executed in. */ scope: CommandScope; @@ -187,7 +189,12 @@ export abstract class CommandModule implements CommandModuleI ['version', 'update', 'analytics'].includes(this.commandName), ); - return userId ? new AnalyticsCollector(this.context, userId) : undefined; + return userId + ? new AnalyticsCollector(this.context.logger, userId, { + name: this.context.packageManager.name, + version: this.context.packageManager.version, + }) + : undefined; } /**