# GitLab !53: Bump the angular group with 10 updates Original: `nessar/vac-optimizer`; GitLab MergeRequest ID 109. Target: [#131](https://gitea.nessar.fr/nessar/vac-optimizer/pulls/131). Author: admin-backup (GitLab user 3). Created: 2025-11-24T19:16:56.000Z. Last source update: 2025-11-30T02:19:12.000Z. Source state: closed; discussion locked: False. This linked record preserves source attribution, timestamps, discussion grouping, review positions and historical diffs. Current Gitea activity is separate from the original source dates. Old CI jobs and their reports are omitted by owner decision. ## Discussions and activity ### Discussion eccf3eabcbe13b520b6afbbc60e2291cdc875f93 #### Source note 502 — admin-backup (GitLab user 3) — 2025-11-30T02:19:09Z ````text Looks like these dependencies are no longer updatable, so this is no longer needed. ```` ## State event records - {"close_after_error_tracking_resolve": false, "close_auto_resolve_prometheus_alert": false, "created_at": "2025-11-30T02:19:11+00:00", "epic_id": null, "id": 241, "imported_from": 4, "issue_id": null, "merge_request_id": 109, "namespace_id": 38, "source_commit": null, "source_merge_request_id": null, "state": 2, "user_id": 3} ## Historical diff versions ### Diff version 109 — 2026-05-03T16:00:00.674757Z Base `3272622abfbe608161aa51332e21b1cb23e3af93`; start `3272622abfbe608161aa51332e21b1cb23e3af93`; head `0b55701c64d53060ed3a871dfd9e6c33f9b50e5d`. Files: 2; stored commits: 1. #### `package-lock.json` → `None` Modes 100644 → 100644; new=False, deleted=False, renamed=False, binary=False, too_large=False. ````diff @@ -8,16 +8,16 @@ "name": "vac-optimizer", "version": "1.5.0", "dependencies": { - "@angular/cdk": "^20.2.12", - "@angular/common": "^20.3.10", - "@angular/compiler": "^20.3.10", - "@angular/core": "^20.3.10", - "@angular/forms": "^20.3.10", - "@angular/material": "^20.2.12", - "@angular/platform-browser": "^20.3.10", - "@angular/platform-server": "^20.3.10", - "@angular/router": "^20.3.10", - "@angular/ssr": "^20.3.10", + "@angular/cdk": "^21.0.0", + "@angular/common": "^21.0.0", + "@angular/compiler": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/forms": "^21.0.0", + "@angular/material": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0", + "@angular/ssr": "^21.0.0", "date-holidays": "^3.26.2", "dayjs": "^1.11.19", "express": "^5.1.0", @@ -443,17 +443,17 @@ } }, "node_modules/@angular/cdk": { - "version": "20.2.13", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.13.tgz", - "integrity": "sha512-h1jTkCmJ/rEQQMkxgKFMCBOrMfjZEnppgdekNmSTerwdVp4vdosTDTzFH/kwiOGFeRClffmvqQ2XLG8mQOKOtA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-21.0.0.tgz", + "integrity": "sha512-wCr5D3mEC+p69IMDC7vf8bWx18mfUNNRdsiK3XD0m1PqfeNfnCJb+Bnkks37MC/SU01uCNrAokRaTbWL6pk1Wg==", "license": "MIT", "dependencies": { "parse5": "^8.0.0", "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^20.0.0 || ^21.0.0", - "@angular/core": "^20.0.0 || ^21.0.0", + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -493,9 +493,9 @@ } }, "node_modules/@angular/common": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.12.tgz", - "integrity": "sha512-rFcDfe67ffrb435C6t2lc27WGbizeOcgce30tUhH0iezwEvU+kHHWezXXX6Ylx3TFgqGkhcxL0fliuFYrpM1Vw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-21.0.0.tgz", + "integrity": "sha512-uFvQDYU5X5nEnI9C4Bkdxcu4aIzNesGLJzmFlnwChVxB4BxIRF0uHL0oRhdkInGTIzPDJPH4nF6B/22c5gDVqA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -504,14 +504,14 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/core": "20.3.12", + "@angular/core": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.12.tgz", - "integrity": "sha512-bGESKz97nWiEQ/sydTq/Lzv3zlLvDb8t0msLG5Xti7Ch1EdLddXS8d2D/zFsjiGbAUKVsT6RgPCLHYoi4ocbhA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-21.0.0.tgz", + "integrity": "sha512-6jCH3UYga5iokj5F40SR4dlwo9ZRMkT8YzHCTijwZuDX9zvugp9jPof092RvIeNsTvCMVfGWuM9yZ1DRUsU/yg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -554,9 +554,9 @@ } }, "node_modules/@angular/core": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.12.tgz", - "integrity": "sha512-K7vibMr55a7+EsuDhkg4Pk+ELuMm12olllwqL/CiQUcHXZ9Zgc4KYGTUuxWB69qJCG90gdSZS7tm5Dx0wDcyjg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-21.0.0.tgz", + "integrity": "sha512-bqi8fT4csyITeX8vdN5FJDBWx5wuWzdCg4mKSjHd+onVzZLyZ8bcnuAKz4mklgvjvwuXoRYukmclUurLwfq3Rg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -565,7 +565,7 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/compiler": "20.3.12", + "@angular/compiler": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0", "zone.js": "~0.15.0" }, @@ -579,9 +579,9 @@ } }, "node_modules/@angular/forms": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.12.tgz", - "integrity": "sha512-O0Jy8ScaN3qVipDfR4s0SIxGrz/+MbCdmR05ZYVWf1W5P3dvETKt9WNjX9fYYV47GdgSveyFjuCR2NvWlv94zA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-21.0.0.tgz", + "integrity": "sha512-kcudwbZs/ddKqaELz4eEW9kOGCsX61qsf9jkQsGTARBEOUcU2K+rM6mX5sTf9azHvQ9wlX4N36h0eYzBA4Y4Qg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -590,33 +590,34 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.12", - "@angular/core": "20.3.12", - "@angular/platform-browser": "20.3.12", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", + "@standard-schema/spec": "^1.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "20.2.13", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.13.tgz", - "integrity": "sha512-9pjp2mULOxojYzOO7qdqt/gSVLrpYBwsIM3K0fxp+mNEcJgNjIxvmRKx46LY9+v0yrPY9puoQvP/T2C+o1+xsw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-21.0.0.tgz", + "integrity": "sha512-s3+fhN7F5T1TAltZXYXOgY1wuVbICCrBJpV2TN8nJXDT0wroTYAljgBmsr6ZjDwYJewwP0OPvcj2NlOGDpa6oA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/cdk": "20.2.13", - "@angular/common": "^20.0.0 || ^21.0.0", - "@angular/core": "^20.0.0 || ^21.0.0", - "@angular/forms": "^20.0.0 || ^21.0.0", - "@angular/platform-browser": "^20.0.0 || ^21.0.0", + "@angular/cdk": "21.0.0", + "@angular/common": "^21.0.0 || ^22.0.0", + "@angular/core": "^21.0.0 || ^22.0.0", + "@angular/forms": "^21.0.0 || ^22.0.0", + "@angular/platform-browser": "^21.0.0 || ^22.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.12.tgz", - "integrity": "sha512-14KQsXZyaQhbRwFz1W58CtbXQc9L+mfuHBgwQjQo99422Yk0ye5WVMb6DHH7dH671qFVqL0XL7zdOPBebaAnJQ==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-21.0.0.tgz", + "integrity": "sha512-KQrANla4RBLhcGkwlndqsKzBwVFOWQr1640CfBVjj2oz4M3dW5hyMtXivBACvuwyUhYU/qJbqlDMBXl/OUSudQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -625,9 +626,9 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/animations": "20.3.12", - "@angular/common": "20.3.12", - "@angular/core": "20.3.12" + "@angular/animations": "21.0.0", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0" }, "peerDependenciesMeta": { "@angular/animations": { @@ -656,9 +657,9 @@ } }, "node_modules/@angular/platform-server": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-20.3.12.tgz", - "integrity": "sha512-vmkaWZ0VqBLT5kVwC5QrkrKuTlVuIygJBIfOD6ATNJl4wf6GXdApAvT/BFZKBF+8iGmqxMCWLf7EH4rP7U5Jrw==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-21.0.0.tgz", + "integrity": "sha512-5IcmoftT2hLAbLfSoqGoCg0B1FLSk08xDoUdIyEUo1SmxNJMEEgU6WxhkPf6R7aoOlLAwYBoqGGP1Us1Z7rO7g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0", @@ -668,17 +669,17 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.12", - "@angular/compiler": "20.3.12", - "@angular/core": "20.3.12", - "@angular/platform-browser": "20.3.12", + "@angular/common": "21.0.0", + "@angular/compiler": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/router": { - "version": "20.3.12", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.12.tgz", - "integrity": "sha512-hUipb9JI/Euy3bdlhzkcWlw3cTyssPTVTDwSvyGxWO4i+UKATQYmxh8EDOrDYzFp6Aexiy0Hff/H8umdsn6ZdA==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-21.0.0.tgz", + "integrity": "sha512-ARx1R2CmTgAezlMkUpV40V4T/IbXhL7dm4SuMVKbuEOsCKZC0TLOSSTsGYY7HKem45JHlJaByv819cJnabFgBg==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -687,25 +688,25 @@ "node": "^20.19.0 || ^22.12.0 || >=24.0.0" }, "peerDependencies": { - "@angular/common": "20.3.12", - "@angular/core": "20.3.12", - "@angular/platform-browser": "20.3.12", + "@angular/common": "21.0.0", + "@angular/core": "21.0.0", + "@angular/platform-browser": "21.0.0", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/ssr": { - "version": "20.3.10", - "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-20.3.10.tgz", - "integrity": "sha512-Zg2pAFw24itwIWBwZ2Avbu+UvP9ALnLZrZq/ABJP5dM6xrc0EYcWt72519+eDUEvzqz7ySYx1Qhn2AMsNv3dkg==", + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@angular/ssr/-/ssr-21.0.0.tgz", + "integrity": "sha512-lzMzMdsAGy5OB7JsOfKK+SZQdxeOAWDg8sC/XcTUzY/BJu31Lz9kO2nuKmqcgr/aPOrD7Sc0F31u/NxGjeCdTw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { - "@angular/common": "^20.0.0", - "@angular/core": "^20.0.0", - "@angular/platform-server": "^20.0.0", - "@angular/router": "^20.0.0" + "@angular/common": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0" }, "peerDependenciesMeta": { "@angular/platform-server": { @@ -4802,6 +4803,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", + "license": "MIT", + "peer": true + }, "node_modules/@tufjs/canonical-json": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", ```` #### `package.json` → `None` Modes 100644 → 100644; new=False, deleted=False, renamed=False, binary=False, too_large=False. ````diff @@ -27,16 +27,16 @@ }, "private": true, "dependencies": { - "@angular/cdk": "^20.2.12", - "@angular/common": "^20.3.10", - "@angular/compiler": "^20.3.10", - "@angular/core": "^20.3.10", - "@angular/forms": "^20.3.10", - "@angular/material": "^20.2.12", - "@angular/platform-browser": "^20.3.10", - "@angular/platform-server": "^20.3.10", - "@angular/router": "^20.3.10", - "@angular/ssr": "^20.3.10", + "@angular/cdk": "^21.0.0", + "@angular/common": "^21.0.0", + "@angular/compiler": "^21.0.0", + "@angular/core": "^21.0.0", + "@angular/forms": "^21.0.0", + "@angular/material": "^21.0.0", + "@angular/platform-browser": "^21.0.0", + "@angular/platform-server": "^21.0.0", + "@angular/router": "^21.0.0", + "@angular/ssr": "^21.0.0", "date-holidays": "^3.26.2", "dayjs": "^1.11.19", "express": "^5.1.0", ````