chore(deps): update dependency @angular/core to v21.2.19 [security] (main) - #4421
chore(deps): update dependency @angular/core to v21.2.19 [security] (main)#4421renovate[bot] wants to merge 1 commit into
Conversation
|
View your CI Pipeline Execution ↗ for commit 7d5f77f
💡 Verify your cache is correct by running tasks in a sandbox. Read docs ↗ ☁️ Nx Cloud last updated this comment at |
List of reported errors
|
Codecov Report✅ All modified and coverable lines are covered by tests. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Nx Cloud is proposing a fix for your failed CI:
We narrowed the logger parameter type in LocalizationExtractor from logging.LoggerApi (imported from @angular-devkit/core) to a local LocalizationLogger interface declaring only the five logging methods the class actually calls. This eliminates the dependency on the Logger class whose protected _subject property made @angular-devkit/core@21.2.18 and @21.2.19 structurally incompatible under TypeScript's class nominal rules. Both versions of LoggerApi satisfy the new structural interface, resolving the build failures in localization:build-builders and transloco:build-builders.
Tip
✅ We verified this fix by re-running localization:build-builders.
Suggested Fix changes
diff --git a/packages/@o3r/localization/builders/helpers/localization-generator.ts b/packages/@o3r/localization/builders/helpers/localization-generator.ts
index 1af544543..858c1544a 100644
--- a/packages/@o3r/localization/builders/helpers/localization-generator.ts
+++ b/packages/@o3r/localization/builders/helpers/localization-generator.ts
@@ -1,8 +1,5 @@
import * as fs from 'node:fs';
import * as path from 'node:path';
-import {
- logging,
-} from '@angular-devkit/core';
import {
getLibraryCmsMetadata,
getLocalizationFileFromAngularElement,
@@ -68,6 +65,15 @@ export interface LibraryMetadataMap {
[libraryMetadataFile: string]: LocalizationMetadata;
}
+/** Minimal logger interface used by the localization extractor */
+interface LocalizationLogger {
+ debug(message: string): void;
+ info(message: string): void;
+ warn(message: string): void;
+ error(message: string): void;
+ fatal(message: string): void;
+}
+
/**
* Localization extractor
*/
@@ -75,9 +81,9 @@ export class LocalizationExtractor {
/** TsConfig of the file to base on */
private readonly tsconfigPath: string;
- private readonly logger: logging.LoggerApi;
+ private readonly logger: LocalizationLogger;
- constructor(tsconfigPath: string, logger: logging.LoggerApi, private readonly options?: Partial<LocalizationExtractorBuilderSchema>) {
+ constructor(tsconfigPath: string, logger: LocalizationLogger, private readonly options?: Partial<LocalizationExtractorBuilderSchema>) {
this.tsconfigPath = tsconfigPath;
this.logger = logger;
}
diff --git a/packages/@o3r/transloco/builders/helpers/localization-generator.ts b/packages/@o3r/transloco/builders/helpers/localization-generator.ts
index cc52e78bc..d81a481a2 100644
--- a/packages/@o3r/transloco/builders/helpers/localization-generator.ts
+++ b/packages/@o3r/transloco/builders/helpers/localization-generator.ts
@@ -1,8 +1,5 @@
import * as fs from 'node:fs';
import * as path from 'node:path';
-import {
- logging,
-} from '@angular-devkit/core';
import {
getLibraryCmsMetadata,
getLocalizationFileFromAngularElement,
@@ -71,6 +68,15 @@ export interface LibraryMetadataMap {
[libraryMetadataFile: string]: LocalizationMetadata;
}
+/** Minimal logger interface used by the localization extractor */
+interface LocalizationLogger {
+ debug(message: string): void;
+ info(message: string): void;
+ warn(message: string): void;
+ error(message: string): void;
+ fatal(message: string): void;
+}
+
/**
* Localization extractor
*/
@@ -78,9 +84,9 @@ export class LocalizationExtractor {
/** TsConfig of the file to base on */
private readonly tsconfigPath: string;
- private readonly logger: logging.LoggerApi;
+ private readonly logger: LocalizationLogger;
- constructor(tsconfigPath: string, logger: logging.LoggerApi, private readonly options?: Partial<LocalizationExtractorBuilderSchema>) {
+ constructor(tsconfigPath: string, logger: LocalizationLogger, private readonly options?: Partial<LocalizationExtractorBuilderSchema>) {
this.tsconfigPath = tsconfigPath;
this.logger = logger;
}
Or Apply changes locally with:
npx nx-cloud apply-locally WLvw-aGDD
Apply fix locally with your editor ↗ View interactive diff ↗
🎓 Learn more about Self-Healing CI on nx.dev
This PR contains the following updates:
21.2.18→21.2.19Angular i18n: Cross-Site Scripting (XSS) via event-handler attributes
CVE-2026-69151 / GHSA-jj27-h5hq-8x99
More information
Details
A Cross-Site Scripting (XSS) vulnerability has been identified in the Angular compiler's internationalization (i18n) pipeline. Although Angular disallows binding to event-handler attributes such as
onclickandonerrorthrough standard attribute validation (validateAttribute()/validateProperty()), the i18n metadata collection path allowed these same attribute names to be marked for translation usingi18n-on*attributes (e.g.,i18n-onerror).When exploited, a lower-trust translation file could replace a benign static handler such as
onerror="void 0"with arbitrary executable JavaScript in the localized build.The following example illustrates a vulnerable pattern:
Impact
When exploited, this vulnerability allows arbitrary JavaScript execution within the context of the vulnerable application's domain if an attacker can control or influence the translation files used during localization. This can lead to:
Patched Versions
Workarounds
Ensure that static event-handler attributes (e.g.,
onerror,onclick) are never marked for internationalization (i18n-on*) in application templates, and ensure translation files are sourced from trusted origins.Severity
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:H/VI:H/VA:N/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
angular/angular (@angular/core)
v21.2.19Compare Source
compiler
http
platform-server
Configuration
📅 Schedule: (in timezone Europe/Paris)
🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.