Update Angular framework packages to 20.3.27 (#1661)

* Update Angular framework packages to 20.3.27

Batches the three Dependabot PRs open against master for the Angular framework
(@angular/core #1658, @angular/compiler #1657, @angular/common #1655) into one
update on the release branch. The framework packages are pinned to exact
versions and their peer ranges require them to move together, so all nine
20.3.26 packages go to 20.3.27: animations, common, compiler, compiler-cli,
core, forms, platform-browser, platform-browser-dynamic and router.

Patch-level upstream fixes only, no advisories. The update stays inside Angular
20 - @angular/build and @angular/cli (20.3.32) and @angular/cdk/@angular/material
(20.2.14) are already at the top of their v20 lines - so it does not pull in the
Angular 21 migration tracked by #1650.

Rebuilt frontend/ for the new framework code. backend/ is unchanged, as no
server/ source moved.

* Fill in PR number in release note (#1661)
This commit is contained in:
Suheb 2026-08-03 15:54:11 -07:00 committed by saubyk
parent 68ced220df
commit fc39c856cf
No known key found for this signature in database
GPG key ID: 00C9E2BC2E45666F
5 changed files with 81 additions and 64 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

106
package-lock.json generated
View file

@ -42,20 +42,20 @@
"@angular-eslint/eslint-plugin-template": "20.7.0",
"@angular-eslint/schematics": "20.7.0",
"@angular-eslint/template-parser": "20.7.0",
"@angular/animations": "20.3.26",
"@angular/animations": "20.3.27",
"@angular/build": "20.3.32",
"@angular/cdk": "20.2.14",
"@angular/cli": "20.3.32",
"@angular/common": "20.3.26",
"@angular/compiler": "20.3.26",
"@angular/compiler-cli": "20.3.26",
"@angular/core": "20.3.26",
"@angular/common": "20.3.27",
"@angular/compiler": "20.3.27",
"@angular/compiler-cli": "20.3.27",
"@angular/core": "20.3.27",
"@angular/flex-layout": "15.0.0-beta.42",
"@angular/forms": "20.3.26",
"@angular/forms": "20.3.27",
"@angular/material": "20.2.14",
"@angular/platform-browser": "20.3.26",
"@angular/platform-browser-dynamic": "20.3.26",
"@angular/router": "20.3.26",
"@angular/platform-browser": "20.3.27",
"@angular/platform-browser-dynamic": "20.3.27",
"@angular/router": "20.3.27",
"@eslint/eslintrc": "3.3.3",
"@fortawesome/angular-fontawesome": "4.0.0",
"@fortawesome/fontawesome-svg-core": "7.1.0",
@ -641,9 +641,9 @@
}
},
"node_modules/@angular/animations": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.26.tgz",
"integrity": "sha512-hfNrX19v8xs/usNkELSqc6q5IwBfS2GGW8sQ4OMpxAmLZDJwaLUxkj48t8VYhUFezsIfzR+sDEi6ZQBOaMIYug==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-20.3.27.tgz",
"integrity": "sha512-BgGTloDiD3qIFVSxZq8xO6CiyhKn00WbhQQiklZF8WI2hXd3Hmc1OUAAHqSMh2c9uL7X1ZYkg9lSzjiasK2vKg==",
"deprecated": "@angular/animations is deprecated. Use `animate.enter` and `animate.leave` instead. For more information see: https://v22.angular.dev/guide/animations.",
"dev": true,
"license": "MIT",
@ -654,7 +654,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/core": "20.3.26"
"@angular/core": "20.3.27"
}
},
"node_modules/@angular/build": {
@ -818,9 +818,9 @@
}
},
"node_modules/@angular/common": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.26.tgz",
"integrity": "sha512-35+aHaCmldFZ2qFiH83+cHcDXwUqSEuUR5DVApcd+Ku8PfIIGo8uMiD5++Qq7QIUTbZCD2glAiE9jLroGrf1Cw==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.27.tgz",
"integrity": "sha512-4ectYP60XatB9zZ40WlfmaTzjmEhaz8SSqLsbZI4VZ8gDb5qNmxWtwwt8UxS3NmDHEgqdNL8UPO4E94+yKCICg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -830,14 +830,14 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/core": "20.3.26",
"@angular/core": "20.3.27",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
"node_modules/@angular/compiler": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.26.tgz",
"integrity": "sha512-H4DVTBCiyM4dGytFi2C8sMGflxXzPnoQ6Ajfs4hJ/Dekg6ypfvW5Ze7BDh4TaMQvaX2joM5LhBYW5jTxBx66hA==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.27.tgz",
"integrity": "sha512-in3THZ678GAYuOR9RZV18+zZz0KGhlGikyUEfLeALLjGf9ZaR3n+t19BmYx6G2VkF/Xqadne1omQ2vbl6PRASA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -848,9 +848,9 @@
}
},
"node_modules/@angular/compiler-cli": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.26.tgz",
"integrity": "sha512-3rHtC87ecldvaiFHwQEZ6Wx3QaZ/Q7b0Gb7XORDOjn/M+5CYZ4rQsvbxE5TUjwreg07oQ4Y2h8ADESXTJEUYOQ==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.27.tgz",
"integrity": "sha512-R0j9mFfUdGmmw867V/TfMSOBkLZT6ASxyY5tc1NDNmxQioZDVIDP9pqBOayzhJ0xiuDc9JellQXUTZ+vm+b/Zg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -871,7 +871,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/compiler": "20.3.26",
"@angular/compiler": "20.3.27",
"typescript": ">=5.8 <6.0"
},
"peerDependenciesMeta": {
@ -881,9 +881,9 @@
}
},
"node_modules/@angular/core": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.26.tgz",
"integrity": "sha512-v+YtZ9eQVDb6v3V1TbUUBHU63FEp8Hqqqb3UhM4MLAOm0chyyh9jah7FiHr3HbCKrV1f4long1coftFK/KThog==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.27.tgz",
"integrity": "sha512-8EfYIUST5CKldOF4MAYWTFFRB7EtwqUoQBZdar6US39/EEzWm/wm/iRNkH2jmKe4YuPa2GoeHS1WQ8VRuOk7Dg==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -893,7 +893,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/compiler": "20.3.26",
"@angular/compiler": "20.3.27",
"rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.15.0"
},
@ -925,9 +925,9 @@
}
},
"node_modules/@angular/forms": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.26.tgz",
"integrity": "sha512-ia0YaPVjlG2oBFKCfaAgqQ0jGRrhGTAcrbZG3tVeFDpi7LQ6WdP3Syw2H+0D3GPyzpl/5UqU10Fum5Wr1br4QQ==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.27.tgz",
"integrity": "sha512-cNG26wi3tr3m8At6puxJpAMVk9mBhEqREA4Jk/klalMwWuYEf8ApTEAw0a5NUfMxDkL3dcJJwDRf8rK6ma6TYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -937,9 +937,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/common": "20.3.26",
"@angular/core": "20.3.26",
"@angular/platform-browser": "20.3.26",
"@angular/common": "20.3.27",
"@angular/core": "20.3.27",
"@angular/platform-browser": "20.3.27",
"rxjs": "^6.5.3 || ^7.4.0"
}
},
@ -962,9 +962,9 @@
}
},
"node_modules/@angular/platform-browser": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.26.tgz",
"integrity": "sha512-In4wUiLUUT9LqyV9Rjz78k/dsnKAwec4AtDmwZoX8/ZmeJOSH7g5X1gTM+hxTxmifmZkrapQjXR299IcfIkzrw==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.27.tgz",
"integrity": "sha512-IV2zQ4zk6liyw5NE48bQqSk3nOAZ1rmDAQi7W4Kw0N8cs9MYVgK3zulo0zx5UqSv1kuNDAGb0HPR5tUGVOf9kw==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -974,9 +974,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/animations": "20.3.26",
"@angular/common": "20.3.26",
"@angular/core": "20.3.26"
"@angular/animations": "20.3.27",
"@angular/common": "20.3.27",
"@angular/core": "20.3.27"
},
"peerDependenciesMeta": {
"@angular/animations": {
@ -985,9 +985,9 @@
}
},
"node_modules/@angular/platform-browser-dynamic": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.26.tgz",
"integrity": "sha512-/9eq0GGmtMoBV5UvcjvhnV4ZDcgZr15h+dzoxkZodUncb2z7fxybSyha7wWD9aTeabZ/q/KYVUSnoYqVyBhbVQ==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-20.3.27.tgz",
"integrity": "sha512-4UUs8vOswgBOWCRoeZrswguarBLrM3j6WGb927Y3GXdN37fVJQYjyKHivNeQwZvwsGgl5Nl6mvpBpZv47n/OrQ==",
"deprecated": "@angular/platform-browser-dynamic is deprecated. Use `@angular/platform-browser` instead.",
"dev": true,
"license": "MIT",
@ -998,16 +998,16 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/common": "20.3.26",
"@angular/compiler": "20.3.26",
"@angular/core": "20.3.26",
"@angular/platform-browser": "20.3.26"
"@angular/common": "20.3.27",
"@angular/compiler": "20.3.27",
"@angular/core": "20.3.27",
"@angular/platform-browser": "20.3.27"
}
},
"node_modules/@angular/router": {
"version": "20.3.26",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.26.tgz",
"integrity": "sha512-q0k0b5uuQx93Trk4qEMYe8LoPOozheRBIjze51q+LUTlLXWik4W0ughXLiTJL346KRudR/vB5ksfZP8b6WlQyA==",
"version": "20.3.27",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.27.tgz",
"integrity": "sha512-F3hfJQ0GAuD6LdeB7A6fMfaErc4HXCtCQGh3C/8VrbVEbGfIgSveNjQXzGYPNklnOLhj1BmWf5w0WniUAEjLBA==",
"dev": true,
"license": "MIT",
"dependencies": {
@ -1017,9 +1017,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0"
},
"peerDependencies": {
"@angular/common": "20.3.26",
"@angular/core": "20.3.26",
"@angular/platform-browser": "20.3.26",
"@angular/common": "20.3.27",
"@angular/core": "20.3.27",
"@angular/platform-browser": "20.3.27",
"rxjs": "^6.5.3 || ^7.4.0"
}
},

View file

@ -55,20 +55,20 @@
"@angular-eslint/eslint-plugin-template": "20.7.0",
"@angular-eslint/schematics": "20.7.0",
"@angular-eslint/template-parser": "20.7.0",
"@angular/animations": "20.3.26",
"@angular/animations": "20.3.27",
"@angular/build": "20.3.32",
"@angular/cdk": "20.2.14",
"@angular/cli": "20.3.32",
"@angular/common": "20.3.26",
"@angular/compiler": "20.3.26",
"@angular/compiler-cli": "20.3.26",
"@angular/core": "20.3.26",
"@angular/common": "20.3.27",
"@angular/compiler": "20.3.27",
"@angular/compiler-cli": "20.3.27",
"@angular/core": "20.3.27",
"@angular/flex-layout": "15.0.0-beta.42",
"@angular/forms": "20.3.26",
"@angular/forms": "20.3.27",
"@angular/material": "20.2.14",
"@angular/platform-browser": "20.3.26",
"@angular/platform-browser-dynamic": "20.3.26",
"@angular/router": "20.3.26",
"@angular/platform-browser": "20.3.27",
"@angular/platform-browser-dynamic": "20.3.27",
"@angular/router": "20.3.27",
"@eslint/eslintrc": "3.3.3",
"@fortawesome/angular-fontawesome": "4.0.0",
"@fortawesome/fontawesome-svg-core": "7.1.0",

View file

@ -50,3 +50,20 @@ this release should add its entry under the appropriate section below.
need Angular 21, i.e. `@angular/core` ^21 and TypeScript ≥5.9 — a framework migration, not a
bump; #1650 is left for that work), the `@angular-eslint` line, and the karma/jasmine stack.
None of it ships in the released bundle.
- **Angular framework patch update to 20.3.27**
([#1661](https://github.com/Ride-The-Lightning/RTL/pull/1661)).
Dependabot opened one PR per package against `master` for `@angular/core` (#1658),
`@angular/compiler` (#1657) and `@angular/common` (#1655). The framework packages are
pinned to exact versions and their peer ranges require them to move as a set, so the three
were applied as a single batch on the release branch, taking all nine 20.3.26 packages
(`animations`, `common`, `compiler`, `compiler-cli`, `core`, `forms`, `platform-browser`,
`platform-browser-dynamic`, `router`) to 20.3.27. Upstream fixes only, no advisories:
the compiler now disallows `i18n` event attributes and limits its possible-event-handler
check to property names longer than two characters, `HttpClient` distinguishes repeated
transfer-cache params, and `platform-server` picks up a newer `domino`.
This stays inside Angular 20 — the build toolchain (`@angular/build`, `@angular/cli`
20.3.32) and `@angular/cdk`/`@angular/material` (20.2.14) are already at the top of their
v20 lines, so nothing in this batch pulls in the Angular 21 migration still tracked by
#1650. `frontend/` was rebuilt for the new framework code.